DONATE:Requirements and Analysis Document (RAD)

= Introduction =

Client Profile
BBBS - Big Brothers Big Sisters of Greater Manchester is a non-profit organization that provides a service to youth in the community by matching children with a responsible adult who becomes a friend, mentor, and positive role model in the child's life. YWCA - Young Women's Christian Association is a non-profit organization that provides social services to girls and women in the community. Through crisis services, youth programs, and community service programs, YWCA supports the needs of women, children, and families in the Manchester area.

Problem Description
Nonprofit organizations depend on donations to carry out their missions. Donations are made by individuals or organizations, and could be monetary, tangible items, or donation of time. Fund-raising events are the main source for collecting donations. There are also occasions when donors make donations of their own accord, or an organization secures funding from grants. Keeping track of donations, donors, and fund-raising events can be a laborious task without an information tracking system in place. BBBS of Greater Manchester and YWCA of Manchester are two local non-profits whose operations would be significantly improved by an information system that manages this type of data and produces necessary reports.

System Objectives
The DONATE system will meet the performance and design criteria of the client. These include usability, reliability, maximum response and throughput time, supportability, modifiability, and security. All components of the DONATE system, from development, implementation, and system maintenance are provided at no cost to the organizations. The system is designed using the Model-View-Controller architecture and uses HTML for the graphical user interface, MySQL to maintain a relational database, and PHP coding for application control. The application is installed via the free and open source XAMPP package, which includes the Apache web server, MySQL database, and the PHP interpreter. = Current System = Donors, donations, and events for BBBS and YWCA are currently tracked manually with the use of Excel spreadsheets and/or an existing problematic Access database.

= Proposed System =

Functional Requirements
DONATE supports one type of user, the DONATE Assistant, who interacts with the system to fulfill all the system features.


 * Manage donors by tracking and identifying donors as individuals or organizations and maintaining donor data.


 * Manage donations by tracking and differentiating between monetary and item donations; linking donations to their donors and tracking the circumstances under which a donation is made: fund-raising event, grant, or personal donation.
 * Manage fund-raising events by tracking date, location, etc. and linking donations to events.


 * Manage reports that aggregate information on donations, donors, and events based on various criteria.

Non-Functional Requirements
DONATE needs high usability as the system is going to be used by general computer users who have no background in the underlying technologies of the system. As such, the system needs to be easy to use and understand. The DONATE Assistant should be able to use the system with ease. DONATE must have a graphical user interface and a user manual written in natural language that describes all the required interactions between the DONATE Assistant and the system. The objective of DONATE is to make tasks easier for the non-profits; learning to use DONATE must be easy, and preparing data input and interpreting data output must be easy as well.
 * Usability

The DONATE User Interface must support the tasks of the DONATE Assistant by having—and displaying—high utility. DONATE must use a graphic interface to display information to the screen, with a simple set of tools and intuitive interface with tasks and information organized in an easy-to-read manner. The graphic interface provides the DONATE Assistant the ability to initiate all DONATE functions by initiating individual use cases.
 * Interface

The DONATE system has to be free. This goal has to be met. The argument could be made that the cost is the most important aspect of the system. It is not a goal, but an overarching theme. All components of the DONATE system, from development, implementation and system maintenance, must be at no cost to the organization.
 * Operation and Development Costs

DONATE must be licensed as open source (see GNU GPL and Creative Commons licenses).
 * Legal


 * Operation and

Target Environment
DONATE will be implemented by the UNHM CIS program. The DONATE Assistant must be able to access the DONATE server application by logging onto their Windows XP computers and launching the DONATE client application which runs on an Apache web server. A Windows XP computer runs the DONATE server application and a MySQL database management system stores the DONATE database. The DONATE Interface Subsystem runs on a Windows XP client machine. The DONATE Control Subsystem is realized through PHP coding and Javascript functions which manage the logic between the GUI and the DONATE Database.

Use Cases and Use Case Diagram


(odd-numbered steps are done the actor, even-numbered steps are done by the system)
 * Name: Manage Donors
 * Description: This use case allows the Assistant to manage donor information.
 * Participating Actors: The DONATE Assistant
 * Goals: To search, view, add, update or delete Donors in the DONATE system.
 * Entry conditions:
 * 1) The Assistant is logged into the DONATE system.
 * 2) The Assistant is presented with the Donate Site screen.
 * Exit conditions:
 * 1) The Assistant has performed add, delete, view, or update donors.
 * Steps:
 * 1) Assistant enters the donor first name and last name or the organization name and selects "Search".
 * 2) The system either displays a message "Donor Exists" with a list of matching donors, or a message "No Matching Donors" with a form to add a new donor.
 * 3) If the Assistant selects “Search” and donor matches are found, s/he views information for an existing donor (use case View Donors). If the Assistant selects “Add”, s/he adds a new donor to the system (use case Add Donors). If the Assistant selects “Delete”, s/he deletes an existing donor from the system (use case Delete Donors). If the Assistant selects “Update”, s/he edits information for an existing donor (use case Update Donors).
 * 4) The system executes the selected function.
 * 5) The Assistant exits the system.
 * 6) The system terminates the session.


 * Use Case - Manage Donors (Step 1)

(odd-numbered steps are done the actor, even-numbered steps are done by the system)
 * Name: View Donors
 * Description: The Assistant may view information for a donor that already exists in the DONATE database.
 * Participating Actors: The DONATE Assistant
 * Goals: To view donor information.
 * Entry conditions:
 * 1) The Assistant is presented with the Donate Site screen.
 * Exit conditions:
 * 1) The Assistant has viewed the donor information.
 * Steps:
 * 1) The Assistant enters donor name or organization s/he wishes to view and selects "Search".
 * 2) The system displays found donor matches or a message if no match is found.
 * 3) The Assistant views the list of matching donors and "Selects" the donor s/he was searching for.
 * 4) The system displays the information for the selected donor.
 * 5) The Assistant views donor information, then selects the "Home" button to search/view another donor, or s/he exits the system.
 * 6) The system terminates the session.


 * Use Case - View Donors (Step 3)

(odd-numbered steps are done the actor, even-numbered steps are done by the system)
 * Name: Add Donors
 * Description: This use case allows the Assistant to enter new donor information into the DONATE system.
 * Participating Actors: The DONATE Assistant
 * Goals: To add a new Donor to the DONATE system.
 * Entry conditions:
 * 1) The Assistant is presented with the Donate Site screen.
 * Exit conditions:
 * 1) The Assistant added a new donor if no existing donor was found with the name information that was submitted.
 * Steps:
 * 1) The Assistant enters donor’s name information and selects "Search".
 * 2) If no donor match is found based on name, the system presents an Add Donor form. Otherwise the system displays the message “Donor Exists: Select From List Below”.
 * 3) The Assistant adds donor information and submits the form.
 * 4) The system executes the add function and displays confirmation message.
 * 5) The Assistant exits the system.
 * 6) The system terminates the session.


 * Use Case - Add Donors (Step 3)

(odd-numbered steps are done the actor, even-numbered steps are done by the system)
 * Name: Update Donors
 * Description: This use case allows the Assistant to modify donor information in the DONATE system.
 * Participating Actors: The DONATE Assistant
 * Goals: To update Donor information for an existing donor in the DONATE system.
 * Entry conditions:
 * 1) The Assistant is presented with the Donate Site screen.
 * Exit conditions:
 * 1) The Assistant has updated an existing donor that was found based on submitted name information.
 * Steps:
 * 1) The Assistant enters donor’s name information and selects "Search".
 * 2) If donor match is found based on name, the system lists matching donors with their related information and a "Select" button at the end of each list entry. Otherwise, the system displays the message “No Matching Donors: Add New Donor Below”.
 * 3) The Assistant selects from the list the match that s/he wants to update.
 * 4) The system populates selected donor match information in the form.
 * 5) The Assistant updates the form as needed and submits the form.
 * 6) The system executes the update function and displays confirmation message.
 * 7) The Assistant exits the system.
 * 8) The system terminates the session.


 * Use Case - Update Donors (Step 5)

(odd-numbered steps are done the actor, even-numbered steps are done by the system)
 * Name: Delete Donors
 * Description: This use case allows the Assistant to delete existing donor information from the DONATE system.
 * Participating Actors: The DONATE Assistant
 * Goals: To delete a donor from the DONATE system.
 * Entry conditions:
 * 1) The Assistant is presented with the Donate Site screen.
 * Exit conditions:
 * 1) The Assistant has deleted an existing donor.
 * Steps:
 * 1) The Assistant enters donor’s name information and selects "Search".
 * 2) If a donor match is found based on name, the system lists matching donors with their related information and a "Select" button at the end of each list entry. Otherwise the system displays the message “No Matching Donors: Add New Donor Below”.
 * 3) The Assistant selects from the list the match that s/he wants to delete.
 * 4) The system populates the form with the selected donor match information.
 * 5) The Assistant selects "Delete".
 * 6) The system executes the delete function and displays a confirmation message.
 * 7) The Assistant exits the system.
 * 8) The system terminates the session.


 * Use Case - Delete Donors (Step 5)

(odd-numbered steps are done the actor, even-numbered steps are done by the system)
 * Name: Manage Events
 * Description: This use case allows the Assistant to manage event information.
 * Participating Actors: The DONATE Assistant
 * Goals: To search, view, add, update or delete Events in the DONATE system.
 * Entry conditions:
 * 1) The Assistant is logged into the DONATE system.
 * 2) The Assistant is presented with the Donate Site screen.
 * Exit conditions:
 * 1) The Assistant has performed add, delete, view, or update events.
 * Steps:
 * 1) Assistant enters the event name and the event date and selects "Search".
 * 2) The system either displays a message "Event Exists" with a list of matching events, or a message "No Matching Events" with a form to add a new event.
 * 3) If the Assistant selects “Search” and event matches are found, s/he views information for an existing event (use case View Events). If the Assistant selects “Add”, s/he adds a new event to the system (use case Add Events). If the Assistant selects “Delete”, s/he deletes an existing event from the system (use case Delete Events). If the Assistant selects “Update”, s/he edits information for an existing event (use case Update Events).
 * 4) The system executes the selected function.
 * 5) The Assistant exits the system.
 * 6) The system terminates the session.


 * Use Case - Manage Events (Step 1)

(odd-numbered steps are done the actor, even-numbered steps are done by the system)
 * Name: View Events
 * Description: The Assistant may view information for an event that already exists in the DONATE database.
 * Participating Actors: The DONATE Assistant
 * Goals: To view event information.
 * Entry conditions:
 * 1) The Assistant is presented with the Donate Site screen.
 * Exit conditions:
 * 1) The Assistant has viewed the event information.
 * Steps:
 * 1) The Assistant enters the event name and event date s/he wishes to view and selects "Search".
 * 2) The system displays found event matches or a message if no match is found.
 * 3) The Assistant views the list of matching events and "Selects" the event s/he was searching for.
 * 4) The system displays the information for the selected event.
 * 5) The Assistant views event information, then selects the "Home" button to search/view another event, or s/he exits the system.
 * 6) The system terminates the session.


 * Use Case - View Events (Step 3)

(odd-numbered steps are done the actor, even-numbered steps are done by the system)
 * Name: Add Events
 * Description: This use case allows the DONATE Assistant to enter event information into the DONATE system.
 * Participating Actors: The DONATE Assistant
 * Goals: To add an event to the DONATE system.
 * Entry conditions:
 * 1) The Assistant is presented with the Donate Site screen.
 * Exit conditions:
 * 1) The Assistant has added a new event if no existing event was found with the name and date information that was submitted.
 * Steps:
 * 1) The Assistant enters the event name and date and selects "Search".
 * 2) If no event match is found based on the name and date, the system presents and Add Event form. Otherwise, the system displays the message "Event Exists: Select From List Below".
 * 3) The Assistant adds the event information and submits the form.
 * 4) The system executes the save and displays a confirmation message.
 * 5) The Assistant exits the system.
 * 6) The system terminates the session.


 * Use Case - Add Events (Step 3)

(odd-numbered steps are done the actor, even-numbered steps are done by the system)
 * Name: Update Events
 * Description: This use case allows the Assistant to update Event information in the DONATE system.
 * Participating Actors: The DONATE Assistant
 * Goals: To update Event information in the DONATE system.
 * Entry conditions:
 * 1) The Assistant is presented with the Donate Site screen.
 * Exit conditions:
 * 1) The Assistant has updated an existing event that was found based on submitted event name and date information.
 * Steps:
 * 1) The Assistant enters the event name and date and selects "Search".
 * 2) If event match is found based on the event name and date, the system lists matching events with their related information and a "Select" button at the end of each list entry. Otherwise, the system displays the message "No Matching Events: Add New Event Below".
 * 3) The Assistant selects from the list the match that s/he wants to update.
 * 4) The system populates selected event match information in the form.
 * 5) The Assistant updates the form as needed and submits the form.
 * 6) The system executes the update function and displays a confirmation message.
 * 7) The Assistant exits the system.
 * 8) The system terminates the session.


 * Use Case - Update Events (Step 5)

(odd-numbered steps are done the actor, even-numbered steps are done by the system)
 * Name: Delete Events
 * Description: This use case allows the Assistant to delete Event information from the DONATE system.
 * Participating Actors: The DONATE Assistant
 * Goals: To delete an Event from the DONATE system.
 * Entry conditions:
 * 1) The Assistant is presented with the Donate Site screen.
 * Exit conditions:
 * 1) The Assistant has deleted an existing donor that was found based on submitted event name and date information.
 * Steps:
 * 1) The Assistant enters the event name and date and selects "Search".
 * 2) If event match is found based on the event name and date, the system lists matching events with their related information and a "Select" button at the end of each list entry. Otherwise, the system displays the message "No Matching Events: Add New Event Below".
 * 3) The Assistant selects from the list the match that s/he wants to delete.
 * 4) The system populates selected event match information in the form.
 * 5) The Assistant selects "Delete".
 * 6) The system executes the delete function and displays a confirmation message.
 * 7) The Assistant exits the system.
 * 8) The system terminates the session.


 * Use Case - Delete Events (Step 5)

(odd-numbered steps are done the actor, even-numbered steps are done by the system)
 * Name: Add Donations
 * Description: This use case allows the Assistant to enter donation information into the DONATE system.
 * Participating Actors: The DONATE Assistant
 * Goals: To add a donation to the DONATE system.
 * Entry conditions:
 * 1) The Assistant has selected "Add Donation" on one of the Donate Site Screens.
 * 2) The Assistant is presented with the Add Donation screen.
 * Exit conditions:
 * 1) The Assistant has submitted the form.
 * Steps:
 * 1) Assistant completes the form by entering donation information. Once the form is completed, the Assistant submits the form.
 * 2) DONATE system receives the form and stores the information in the database.
 * 3) The Assistant exits the system.
 * 4) The system terminates the session.


 * Use Case - Add Donation (Step 1)

(odd-numbered steps are done the actor, even-numbered steps are done by the system)
 * Name: Update Donations
 * Description: This use case allows the Assistant to modify donation information in the DONATE system.
 * Participating Actors: The DONATE Assistant
 * Goals: To update Donation information in the DONATE system.
 * Entry conditions:
 * 1) The Assistant is presented with a list of Donations.
 * Exit conditions:
 * 1) The Assistant has submitted the form.
 * Steps:
 * 1) Assistant completes the form by updating donation information. Once the form is completed, the Assistant submits the form
 * 2) DONATE system receives the form and stores the modified information in the database.

(odd-numbered steps are done the actor, even-numbered steps are done by the system)
 * Name: Delete Donations
 * Description: This use case allows the Assistant to delete donation information from the DONATE system.
 * Participating Actors: The DONATE Assistant
 * Goals: To delete a Donation from the DONATE system.
 * Entry conditions:
 * 1) The Assistant is presented with a list of Donations.
 * Exit conditions:
 * 1) The donation has been deleted from the system.
 * Steps:
 * 1) The Assistant performs a search for the donation to be deleted.
 * 2) The system displays the donation information.
 * 3) The Assistant verifies that the correct donation was located and chooses the delete donation function.
 * 4) The DONATE system receives the deletion and removes the donation from the database.

(odd-numbered steps are done the actor, even-numbered steps are done by the system)
 * Name: Generate Reports
 * Description: This use case allows the Assistant to generate a report from the DONATE system.
 * Participating Actors: The DONATE Assistant
 * Goals: To generate a report from the DONATE system.
 * Entry conditions:
 * 1) The Assistant is logged into the DONATE system.
 * 2) The Assistant is presented with the Donate Site screen.
 * Exit conditions:
 * 1) The report has been generated and made available to the Assistant.
 * Steps:
 * 1) The Assistant chooses a report from the menu.
 * 2) The system generates the report.
 * 3) The Assistant views/prints the report and terminates the session or chooses another report.

(odd-numbered steps are done the actor, even-numbered steps are done by the system)
 * Name: View Reports
 * Description: This use case allows the Assistant to view a report in the DONATE system.
 * Participating Actors: The DONATE Assistant
 * Goals: To view a report in the DONATE system.
 * Entry conditions:
 * 1) The Assistant is presented with the Donate Site screen.
 * Exit conditions:
 * 1) The report has been generated and made available to the Assistant for viewing.
 * Steps:
 * 1) The Assistant chooses a report from the menu.
 * 2) The system generates the report.
 * 3) The Assistant views the report and terminates the session or chooses another report.

(odd-numbered steps are done the actor, even-numbered steps are done by the system)
 * Name: Print Reports
 * Description: This use case allows the Assistant to print a report from the DONATE system.
 * Participating Actors: The DONATE Assistant
 * Goals: To print a report from the DONATE system.
 * Entry conditions:
 * 1) The Assistant is logged into the DONATE system.
 * Exit conditions:
 * 1) The report has been generated and made available to the Assistant for printing.
 * Steps:
 * 1) The Assistant chooses a report from the menu.
 * 2) The system generates the report.
 * 3) The Assistant prints the report and terminates the session or chooses another report.

Application Domain Classes and Class Diagram
An individual or organization that has made a donation.
 * Donor

An individual person that has made a donation.
 * Individual

An Organization or business that has made a donation. The monetary amount of a received donation.
 * Organization
 * Donation

An event that was or will be held to gather donations. Descriptive information about the Type of event.
 * Event
 * EventType




 * Donate Class Diagram

User Interface Mock-ups
Here is a possible GUI mockup idea. The placements and page size and width of areas is what I was trying to decide. all the content and colors can be changed obviously to be more professional. This has been updated with the correct fields for what will be needed. This is showing the main page which allows them to enter either a user by first name/last name or they can enter an organization. Once they have entered one, if it exists in the system it will show in the table below and allow you to hit select which will bring you to an edit page. If the donor or the organization doesn't exist it will bring you to the bottom of the page where you can enter the new info for a donor and add them to the database, this will then automatically enter the first/last Name in the table above and allow you to select them. 


 * Reporting

Currently reporting has the ability to search for events within a specific date range, view all donors for specific events, and view events within a specific date range and sorted highest to lowest donation amount.


 * Help System

Every page on the mockup site has a duplicate page that explains how each of the buttons and fields work. Once you are in the help system you have to click Exit Help to get out of the system. Otherwise any page you click will still be in the system.



= Glossary =


 * Assistant : The user who interacts with the DONATE system.


 * DONATE : The name of the system used to handle donors, donations, and events.


 * Donor : Person who has given a donation.


 * Individual : A person, not a business, that is making a donation.


 * Organization: A business that is making a donation.


 * Use Case : A set of interactions necessary to accomplish a certain task on DONATE.