CS375: Software Engineering - Requirements Report (100 Points)

Assignment Goals

The goals of this assignment are:
  1. To prepare a software requirements document for a software project

Background Reading and References

Please refer to the following readings and examples offering templates to help get you started:

The Assignment

Stakeholder-based Design

Before you decide upon your software requirements, it is necessary to obtain input from your stakeholder groups. Prepare a list of questions to ask them that will help you obtain information about their needs.

Keep in mind that their answers will be non-technical, and so your questions should be non-technical in nature. Do not delve into the technical aspects of your project with your stakeholder group. Rather, it will be your job to translate their feedback into technical functional requirements.

Include your stakeholder questions, responses, and your reflections upon their input (for example, how you translated their feedback into requirements) as a section of your report.

Functional Requirements

To create the software requirements document, begin by establishing a list of numbered functional requirements for your software system.

For each requirement, design a use case or user story. A use case provides a flowchart of user actions that culminates in the completion of the software requirement. A user story is similar but takes the following form:

As a <type of user>, I need to <action I need to perform> because <reason this action is necessary>

In either case, requirements may depend upon each other. For example, it may not be possible to open a project until the user has logged into the system and obtained a user token. Therefore, the login requirement would be a dependency of the project listing requirement. Because your requirements are numbered, you can cross-reference them in this way.

Non-Functional Requirements

Finally, identify those non-functional requirements (for example, hardware deployment requirements, network bandwidth, computational power, and so on) for your project.

Gantt Chart

Include a Gantt chart for your project that schedules each of your sprints. Each sprint should culminate in a prototype or proof-of-concept toward your final project. The Gantt chart should identify dependencies between tasks within each sprint.

Website

Include your requirements report on the project website.

Submission

In your submission, please include answers to any questions asked on the assignment page in your README file. If you wrote code as part of this assignment, please describe your design, approach, and implementation in your README file as well. Finally, include answers to the following questions:
  • Describe what you did, how you did it, what challenges you encountered, and how you solved them.
  • Please answer any questions found throughout the narrative of this assignment.
  • If collaboration with a buddy was permitted, did you work with a buddy on this assignment? If so, who? If not, do you certify that this submission represents your own original work?
  • Please identify any and all portions of your submission that were not originally written by you (for example, code originally written by your buddy, or anything taken or adapted from a non-classroom resource). It is always OK to use your textbook and instructor notes; however, you are certifying that any portions not designated as coming from an outside person or source are your own original work.
  • Approximately how many hours it took you to finish this assignment (I will not judge you for this at all...I am simply using it to gauge if the assignments are too easy or hard)?
  • Your overall impression of the assignment. Did you love it, hate it, or were you neutral? One word answers are fine, but if you have any suggestions for the future let me know.
  • Using the grading specifications on this page, discuss briefly the grade you would give yourself and why. Discuss each item in the grading specification.
  • Any other concerns that you have. For instance, if you have a bug that you were unable to solve but you made progress, write that here. The more you articulate the problem the more partial credit you will receive (it is fine to leave this blank).

Assignment Rubric

Description Pre-Emerging (< 50%) Beginning (50%) Progressing (85%) Proficient (100%)
Functional Requirements (45%) Cross-referenced functional requirements are not provided for this project One or more functional requirements is missing or unclear, and/or not adequately cross-referenced A mostly comprehensive description of each functional requirement is given with a use case or user story and that is cross-referenced A comprehensive description of each functional requirement is given with a use case or user story and that is cross-referenced is provided
Stakeholder Feedback and Analysis (30%) No stakeholder feedback is present Evidence of stakeholder interviews is provided Stakeholder feedback is included, including questions and answers to each group Stakeholder feedback is included, including questions and answers to each group, as well as a thoughtful digest translating those inputs into functional requirements
Gantt Chart and Project Schedule (15%) The Gantt chart is missing or incorrect The Gantt chart is incomplete The Gantt Chart assigns tasks to group members The Gantt Chart identifies project dependencies and assigns tasks to group members
Non-Functional Requirements (10%) Non-functional requirements are missing from the report Non-functional requirements are not appropriate to the project, but are provided Non-functional requirements are too strict or too minimal for the project scope Reasonable non-Functional requirements are offered for the project

Please refer to the Style Guide for code quality examples and guidelines.