Initial, unstructured list of requirements

Sponsor -> Associate payments + history
Sponsored children's families, including sponsored children -> associate sponsor
Sponsored children -> Associate presents
List of presents -> Presents with reference price; when associating, make a copy
List of payments; track separately and associate with presents later
Membership fees and sponsorship fees (differ) are also presents

Non-functional and surrounding requirements

  • The application should make as few constraints as possible: no validation, free text input boxes on every form.
  • Initially, the software must support about 4-5 users working concurrently.
  • At least one user wants to connect from home; however, using a terminal client/remote desktop connection is acceptable.
  • There are currently no requirements regarding authorization or authentication.
  • There is no real server, only one of the laptops that is always on, but also used as a client machine.
  • Open question: Does the user interface use German language, date formats, and number formats?

Undefined use cases

  • Printing?
  • Data export?
  • View/edit sponsor (with list of sponsorships, list of presents, membership details)?
  • View sponsor's sponsorship (with history)?
  • List sponsored children?
  • View/edit sponsored child?
  • View/edit known person?
  • List memberships?
  • List sponsorships?
  • View/edit membership?
  • Convert a known person into a sponsored child?
  • Delete or edit a calculated receivable from a sponsor's list of receivables?
  • Change or delete a present?
  • List of balances (especially negative ones)?

List of use cases extracted from the unstructured requirements

Sponsors
Sponsors are people who can take sponsorships, memberships, and give presents.
  • Enter sponsor: As a user, I want to add a new sponsor to the system so that users can assign him/her a sponsorship, membership, or gift.
    • First name
    • Last name
    • Bank account
    • Address
    • E-Mail
    • Telephone
    • It would be efficient to allow immediate entering of sponsorship, membership, or making a gift together with (or directly after) entering a sponsor.
    • When I add a sponsor, the system should help me to avoid creating duplicates by showing other sponsors with identical or similar name, identical bank account, e-mail, or telephone.

Sponsorships
A sponsorship is the association of a sponsor and a sponsored child. It has an associated fee that the sponsor agrees to pay on a regular base. The system calculates recurring receivables from sponsorship fees.
  • Enter sponsorship: As a user, I want to enter a sponsorship for a sponsored child and sponsor so that the system can calculate periodical receivables for the sponsor and so that users can later see the sponsorship in the software.
    • Fee
    • Kind (type) (Note: Fee and kind (type) are two different, but related data items. Allow two sponsorships with the same kind (type) to have different fees, and two with the same fee to have different kind (type).)
    • Sponsored child
    • Sponsor
    • The sponsorship fee is a receivable tracked by the system.
    • Open question: Do we need to track when the receivable is going to be due? Should we create some recurrence pattern (monthly, yearly, etc.)?
  • Check sponsorships: As a user, I want to go over the list of sponsorships to check whether the sponsorship is (now or soon) going to require changes (e.g., because the sponsored child is growing older or coming out of school).
    • Fee
    • Kind (type)
    • Sponsored child and its data, including related people
    • Sponsor and his/her balance
    • This should be presented as a list of sponsorships to me, where I can mark each sponsorship as "follow up" for the "Inform sponsor" use case below.
    • Since this might be a lengthy process, a good idea would be to allow this use case to be performed in multiple stages; i.e., when I'm forced to stop going over the list, I want to start again at the same point of time later on.
    • Open quesions: Are there any indicators by which the software can show hints whether I'll probably want to follow up? How should the software sort the list of sponsorships? Is free sorting on some field required?
  • Inform sponsor about possible changes of sponsorship: As a user, I want to inform a sponsor about the current status of a sponsorships so that he/she can decide to take actions.
    • I'll typically perform this use case via e-mail or telephone, but the software could help me by ways of displaying a list of sponsorships marked as "follow up".
    • After I've informed the sponsor, I want to clear the follow up flag.
    • Open question: Would it make sense to have the software automatically open up a new e-mail with recipient and subject filled in for me?
  • Change sponsorship: As a user, I want to be able to change the fee and/or kind (type) of a sponsorship so that the system displays the changed data from now on and so that the system uses the changed fee for all payment calculations from now on.
    • Fee
    • Kind (type)
    • The system must track the history of this sponsorship so that I can inspect it later on.
    • Receivables calculated up to this point of time need to use the previous fee and kind (type).
  • End sponsorship: As a user, I want to be able to end a sponsorship so that the system no longer displays it in the list of sponsorships and so that the system no longer uses it for any receivable calculations.
    • Open question: Receivables valid up to this point of time need to remain to be included into the balance calculation?
    • Open question: Should I inform the sponsor that his/her sponsorship has ended?

Payments
A payment is a sum received from a sponsor. The system tracks payments in order to compare it to the receivables for the respective sponsor.
  • Track payment: As a user I want to enter a payment received by a sponsor so that the system can use it to calculate the sponsor's balance.
    • Sponsor
    • Amount
    • Designated use
    • Date
    • I usually do this when I browse the list of received payments in my e-banking system. I therefore need to be able to input multiple payments for different sponsors fast and efficiently.
    • For now, import of data directly from the e-banking system is not required.
  • Show balance for a sponsor: As a user, I want to be able to select a specific sponsor and see his/her balance so that I can decide whether the sponsor pays all his depts.
    • Receivables (sponsorship fees, membeship fees, gift prices) with due date
    • Tracked payments with payment date and designated use
    • When a sponsor's balance is too much below zero, I might want to end or adapt the sponsor's sponsorships, so the system should allow me to go to the "end sponsorship" and "change sponsorship" use cases from here.
    • When a sponsor's balance is too much above zero (i.e., the sponsor paid something without any need to do so), I might want to add a one-time monetary present so that the surplus is removed, so the system should allow me to go to the "give a present" use case from here.
    • Open question: When I see in the balance view that I've made a mistake, might I want to remove/add/correct a single receivable, remove/add/correct a payment, remove or correct a present made before?

Memberships
A membership associates a member of the sponsorship agency with a fee that the member agrees to pay on a regular base. The system calculates recurring receivables from membership fees.
  • Enter membership: As a user, i want to make a sponsor a member of the agency by assigning him a fee so that the system calculates periodical receivables from it.
    • Sponsor
    • Membership fee
    • Open question: Recurrence? (See also "enter sponsorship" use case.)
    • Open question: A membership is very similar as a sponsorship, just without a child; is it a separate concept?

Sponsored children
A sponsored child is a person that receives money or presents from a sponsor via the sponsorship agency. It can be associated with other sponsored children or different people for informational reasons.
  • Enter sponsored child: As a user, I want to enter a sponsored child so that it can later be assigned to sponsorships and so that it can later be given presents.
    • First name
    • Last name
    • Date of birth
    • When I enter a sponsored child, I often want to associate related people as well, so I should be able to go to the "Associate person" and "Enter person and associate" use cases from here.
    • Open question: Address?
  • Associate person: As a user, I want to be able to associate a person or sponsored child already known by the software with a child so that the system can display this information later on.
    • Person or other sponsored child
    • Sponsored child
    • Relationship (father, mother, brother, sister, and any other I can conceive)
    • If the peson is also a sponsored child, the system should allow me to add this relationship in both directions.
  • Enter person and associate: As a user, I want to be able to enter a new person and associate it with a sponsored child so that the system can display this information later on.
    • First name
    • Last name
    • Person's date of birth
    • Sponsored child
    • Relationship (father, mother, brother, sister, and any other I can conceive)
    • Open question: Address?
    • Open question: Should I be able to add a person without associating it with a sponsored child?

Presents
A present is an item or sum of money that the sponsorship agency gives to a sponsored child on behalf of a sponsor.
  • Give a present: As a user, I want to enter that a sponsor gives a present to a sponsored child so that the system tracks the present and calculates a receivable from it.
    • Name of present
    • Price
    • Sponsor
    • Sponsored child
    • I want to be able to create the present from a reference present, but I need to be able to replace every piece of data given by the reference present.
    • When I enter a new present, I might want to make this a reference present as well, so the system should allow me to invoke the "Enter reference present" use case together with this one.
  • Enter reference present: As a user, I want to enter a reference present so that users can later on use it when givig a present.
    • Name of present
    • Price

Personae
  • Gabi:
    • Knows everything
    • Enters initial data

Last edited Nov 13, 2011 at 11:01 AM by FabianSchmied, version 17

Comments

No comments yet.