Documente Academic
Documente Profesional
Documente Cultură
After visiting MSF’s food bank, we realized that they are often short on donations. With
more donations, they would be able to help a larger number of people or provide more
support to the ones they already interact with. Furthermore, the employees mentioned that
monetary donations are often preferred as they are able to select what to purchase with
each donation, as well as other reasons. We also learned that the food bank receives many
useless donations, specifically at certain times of the year. For example, they receive a lot of
chocolate around valentine’s day, which they are unable to use because of health concerns.
This issue appears to be caused by people’s lack of knowledge of what items are useful for
the food bank. Our goal was to spread more knowledge and encourage people to provide
monetary donations.
We created our project to allow people to see items needed by the food bank and be able to
interact with those items to see how their donations might be used. Users are able to add
items from MSF’s wishlist to their own shopping cart, seeing the cost, priority and quantity
goal for each item. Users are able to modify the quantity for different added items and view
the total cost of these items for the food bank. We believe that this application would
encourage people to donate, as they would be able to visualize the benefits of their
donation. Additionally, people would be able to know the items needed by the food bank in
real time, rather than viewing a constant list of generally useful items. This is meant to keep
users informed on the needs of the food bank so that they may contribute more with their
donations.
When considering this project, we aimed to learn how to apply good software engineering
practices, such as creating a modular design and responding to user feedback. We expected
that working with MSF would give us a fairly realistic experience of working with a
customer. Working with the MSF website, we hoped to learn how to contribute to an
already existing system. We also knew that this project would be complex enough that we
● Licensing:
Open source licensing is important for source code and projects to allow them to be
used and distributed by companies. Open source code allows other companies to
take over projects and expand on them with their own ideas. The GPL license is
similar to other open source licenses however the GPL license prohibits companies
from locking down and protecting changes they make to current open source
projects. This allows projects to be advanced by other companies, while still
remaining open source and available to everyone.
Stage III:
Description:
There are many times that the available foods at MSF’s food bank do not align
with needs of people or maybe be unusable because of the amount of donated item,
such as Valentine’s chocolates. The purpose of MSF V-Drive is to provide a sort of
virtual food drive for the food bank to request food on the website, and donors can
go on and donate the specified food. A pantry will submit a list of requested items, it
will be checked what items the food bank has, and then any excess needed items will
be told to donors. We feel it is important that donors know what items are in need
and what the food bank actually needs or want. This will simplify the process of
donating by making it easy for users to login on the site and easily donate food
through a webpage. Donors will be able to see what items are in need and fulfill
inventory requests.
Priority List:
1) Our main priority is to allow the food bank to post needed items, and the
donor to fulfill donations online.
2) The next priority is to have food pantries able to make lists of requested
items and send them to the food bank for review.
3) Next we wish to allow donors to share their donation to social media for
more exposure.
Issues to be addressed:
❖ Social
➢ Demand is high, and more donors are always needed
■ By creating a virtual food drive, it will be easier than ever for
donors to contribute to MSF. People will not even have to leave
their homes to donate. By making donations a simple and easy
process, more people will be inclined to donate to the food
bank.
❖ Economic
➢ Sometimes too many unneeded items are donated, or needed items
are not donated (Demand is vague)
■ With our application, MSF will have the ability to display
needed food items on the virtual food drive page. This will give
donors a better idea of what is needed by the food bank, and
will help prevent unnecessary donations (i.e. too many
chocolates around valentines day).
❖ Real-World
➢ Storage is often occupied by unnecessary items
■ By giving donors a better idea of what is needed by the food
bank, space can be better optimized. If MSF has a decent
amount of a food item, they can discourage more donations of
that item by requesting different food items on the virtual food
drive.
Functional Requirements:
The system should allow general users to...
❖ view needed items
❖ create a donation including selected items and their quantities
❖ confirm a future donation
❖ enter contact information
The system should allow the food bank to…
❖ log in
❖ add or remove needed items
❖ view the confirmed donations
❖ view what the list of needed items would be after the donations are received
The system should allow the food pantries to…
❖ log in
❖ send needed items to food bank
❖ view the confirmed donations
Internally, the system should…
❖ store needed items
❖ store confirmed donations
Non-functional Requirements:
The system should…
❖ have a simple and eye-pleasing user interface
❖ manage users and logins securely
❖ be fast and responsive
❖ Be robust to different cyber attacks
Description of Feedback
In our email to Brian from MSF we included our project description, priority
list, and requirements list, and asked Brian if he had any suggestions for our
proposal. We also asked him a few specific questions, such as:
❖ Does our specified priority order match MSF’s vision for the application?
❖ When donors use the V-drive, should they be giving monetary donations or
food item donations (or both)?
❖ Should donors be required to log in to make a donation?
Brian informed us that our project description, as well as the priority and
requirements lists, coincide with MSF’s need, and also mentioned that the priority
order we have come up with matches what they are looking for. Brian went on to
suggest that we request monetary donations for the virtual food drive, as each dollar
donated can translate to 10 meals with the food bank’s partnerships. In regards to
our third question, Brian suggested that we gather some user information (name,
address, email, and phone number specifically) when a donation occurs. That way,
MSF will be able to send donors thank you letters, as well as their newsletter. In
addition, Brian also gave us the food bank’s current wish list, so we have an idea of
what foods are most needed by MSF. Brian provided us with a lot of useful
information, and we are hoping to incorporate all of his suggestions into our existing
design.
Legal Issues
The only legal issue to deal with is the fact that people are donating food
which could possibly cause harm to recipients. The Federal Bill Emerson Good
Samaritan Food Donation Act is a law that passed in 1996 which protects good
samaritans who donate food to non-profit organizations for people in need. In full
this law protects individuals who donate food to nonprofits and protects them from
civil and criminal liability if the item turns out to be bad, but was donated with good
intent. This law standardized this liability across the US and also set a “floor of
gross-negligence” for those who donate food with ill-faith in mind. This law should
protect our donors and MSF.
https://www.feedingamerica.org/about-us/partners/become-a-product-partner/food-partners
Precondition: System fully configured and actor is logged into their specific
account.
Trigger: The actor needs new items so they develop a list of needed foods.
Scenario:
1. Actor goes to MSF V-Drive website.
2. Actor logs in.
3. Actor clicks option to create a new list of items.
4. Actor selects all items that they need and quantities from dropdown lists or
pictures.
5. Actor clicks option to submit the request.
6. Actor is asked for verification of submittal.
7. Submission is final.
Exceptions:
1. Incorrect username or password. Validate.
2. Invalid quantities of items. Validate.
Precondition: System fully configured, actor is logged into their specific account,
and an item list has been made.
Trigger: The actor wants to view a list of requested items so they visit the list.
Scenario:
1. Actor goes to MSF V-Drive website.
2. Actor logs in.
3. Actor clicks option to view lists of requested items.
4. Actor selects the certain list of items they want to view.
Goal in Context: Fulfill requests for items from a certain item list.
Precondition: Actor has completed the “View Desired List of Needed Items” use
case and is viewing a valid list.
Trigger: The actor wants to donate a requested item from an item list.
Scenario:
1. Actor has completed “View Desired List of Needed Items” and hasn’t left
list.
2. Actor clicks option to fulfill requested items.
3. Actor selects all items they want to donate.
4. Actor’s information is verified and donation method is selected.
5. Actor is asked for verification of donation submittal.
6. Submission is final.
Exceptions:
1. Invalid quantities of item donation. Validate.
2. Actor does not supply enough info. Validate.
Precondition: Actor has completed “Fulfill Requests” use case and hasn’t left the
page.
Trigger: The actor wants to share their donation to their friends on Facebook.
Scenario:
1. Actor has completed “Fulfill Requests” use case and hasn’t left page.
2. Actor clicks the share to Facebook button.
3. Facebook post is made in the background.
4. Actor is brought to Facebook and can view, edit, and submit the post.
The security features that will be required is that all login credentials (including
passwords) will need to be stored securely. This is to prevent account hacking and
to keep confidential information like passwords secured and hashed. Furthermore,
all users will need to be logged in to ensure that people are truthly filling out
requests (to ensure some level of accountability). Finally, it will need to be ensure
that people aren’t injecting dangerous snippets of code (like SQL injections). There
are many possible threats that websites are prone to, and every precaution must be
made by following good, secure Ruby on Rails coding practice as given in this
tutorial (https://guides.rubyonrails.org/security.html).
Preliminary security requirements include not storing any confidential or large data
during the sessions and correctly ending the session when necessary. Furthermore,
keep all session information stored in an encrypted hash. Countermeasures against
cross-site request forgery must be met. Furthermore, prevent the use of file
uploads. Finally, prevent SQL injections with whitelisting.
The database containing needed food items and passwords will need to be
backed-up properly using a DBMS like Postgresql. Using Postgresql properly, we
can ensure that our data stays robust to certain failures. Furthermore, we will keep
our code backed up on GitHub.
Elaboration: Design
Stage IV:
Admin cancels list edit ‘Cancel’ button is Admin is brought Admin is brought
pressed back to wishlist back to wishlist
page page
Admin requests to add ‘Custom Item’ button Page updates with Admin is brought to
new item to list is pressed Name and Price add new item page
fields, as well as
‘Add’ button
Admin adds new food Name, Priority, and Page updates with Admin is brought to
item to list Price fields are new food item wishlist page with
populated, ‘Add’ added to wishlist updates applied
button is pressed
Price input when Textfield input for Error message Corresponding
adding food item is price does not match displayed error message is
invalid ‘X.XX’ format displayed, admin is
asked to change
offending fields
Admin removes item Garbage can icon next Selected item is Admin is asked to
from wishlist to corresponding food removed from validate the request
item is pressed wishlist and added for deletion, then
to ‘Past Items’ list item is removed
from wishlist
Admin saves changes ‘Save’ button is List is saved and Changes are saved
to list pressed admin is brought on submit of
back to home page new/edited item
User adds item from Check box next to Check box is Item is added to
wishlist to shopping corresponding food populated and shopping cart and
cart item is pressed donation cart is total price is
updated, total cost is updated
updated
User up or down signs next Quantity field next Quantity and price
increases/decreases to corresponding food to corresponding are updated
quantity of item in item are pressed food item in
donation cart donation cart is
updated, total price
is updated
MSF recommended we give the donor a tax We were not able to implement this yet,
refund report after donating. but it is an ‘Future Work’ issue added on
GitHub.
Bug was discovered during testing that This bug was fixed
made items not add to the shopping cart if
the V-Drive page was accessed twice
without reloading
Transition: Maintenance
All source code is properly documented, and report is properly labeled and organized.
Transition: Product Hand Over
Include a listing of functionality that was not completed or can be added in a future version
of the application. All documents should be uploaded to GitHub wikis.
Admin cancels list edit ‘Cancel’ button is Admin is brought Admin is brought
pressed back to wishlist back to wishlist
page page
Admin requests to add ‘Custom Item’ button Page updates with Admin is brought to
new item to list is pressed Name and Price add new item page
fields, as well as
‘Add’ button
Admin adds new food Name, Priority, and Page updates with Admin is brought to
item to list Price fields are new food item wishlist page with
populated, ‘Add’ added to wishlist updates applied
button is pressed
Admin removes item Garbage can icon next Selected item is Admin is asked to
from wishlist to corresponding food removed from validate the request
item is pressed wishlist and added for deletion, then
to ‘Past Items’ list item is removed
from wishlist
Admin saves changes ‘Save’ button is List is saved and Changes are saved
to list pressed admin is brought on submit of
back to home page new/edited item
User adds item from Check box next to Check box is Item is added to
wishlist to shopping corresponding food populated and shopping cart and
cart item is pressed donation cart is total price is
updated, total cost is updated
updated
User up or down signs next Quantity field next Quantity and price
increases/decreases to corresponding food to corresponding are updated
quantity of item in item are pressed food item in
donation cart donation cart is
updated, total price
is updated
User removes item Item checkbox is Item is removed Item is removed,
from donation cart clicked to uncheck it from donation cart, price is updated
check box for
corresponding item
is updated, total
price is updated
If bundle install doesn’t work, the issue is probably related to postgresql compatibility.
Perform these steps.
Then run:
>> rake db:create
>> rake db:migrate
>> rake db:seed
Username: admin@email.com
Password: password
Then go to
csc415-s19-team07.hpc.tcnj.edu:3000/internal/wishlist/index
The rest is intuitive, just play around.
List of functionality that was not completed/can be added in future version of the
application:
● Allow for tax receipts to be received by people who actually make the donation
● Allow for price in shopping cart to be sent right to donation module
● Allow donors to share their donations on social media