Project 1: Software Requirements Specification
Draft Version Due by: Friday, September 13, 2024 at 11:59 p.m.
Final Version Due by: Friday, September 20, 2024 at 11:59 p.m.
Introduction
The purpose of this project is for you to create a software requirements specification that you will use to guide the development of the semester-long software development experience at the heart of this course.
You should be detailed and thoughtful, but the final submission at the end of the semester will not necessarily receive a lower grade if there are many areas in which you do not meet or do not conform to your requirements. This class is intended to be a learning experience, and there is a long journey between requirements and final submission. Especially when describing functional requirements, you're encouraged to give a set of core requirements as well as stretch requirements that you may hope to reach if there is time.
The requirements document must be written in natural language, specifically English, and the document should reflect the expectation that you will use Java as your development platform. The requirements document may be submitted as a Word, PDF, or LaTeX file.
Sections
The requirements document should follow the guidelines below, including the following sections. For additional guidance, please see the Examples section or speak with me.
- Introduction
The introduction should cover several areas:- Purpose of this document
- Intended audience
Note that this document should be understandable to a general audience with some knowledge of computer science. It should not be written with only me or only the Otterbein University community as its audience. - Scope of the project
- Definitions, abbreviations, and specialized terminology
- References, if any
- Overall Description
This description should include, at a minimum:- Product functions
- User characteristics and needs
- Dependencies on other systems or software
- Interfaces
The following interfaces should be described, if they form part of the software system:- User interfaces
- Hardware interfaces
- Software interfaces
- Communications interfaces
- Functional Requirements
Functional requirements are the important actions that the software system performs. Each requirement should have a number, a name, and a description. For a real product, a contract might require that all these requirements are met. This list is the most important part of this specification, but the requirements themselves will vary a lot depending on your project. Look at the examples provided below. - Non-functional Requirements
Non-functional requirements cover overall attributes of the system and might include:- Performance requirements
- Safety requirements
- Security requirements
- Software quality requirements
- Amazing Lunch Indicator SRS
- Airline Database Sample SRS
- Marvel Electronics and Home Entertainment SRS
- BMC blog post on Software Requirements Specifications Basics
- Perforce article on How to Write a Software Requirements Specification
Feel free to include additional appendices if you think they will be helpful.
Examples
If you've never written a software requirements specification before, it can be a daunting task. Here are a couple of useful examples of requirements specifications:
The following two links have outlines and guidelines for software requirements specifications without examples:
Submission
Commit your Word, PDF, or LaTeX files to the private GitHub repository for your group. You should commit your requirements documents by copying them into a folder called docs
in your IntelliJ project. Name the requirements specification Requirements.docx or similar. Create separate tagged releases with the names Draft Specifications and Final Specifications for the draft and final versions, respectively. Doing so marks the state of your repository at those points.
The draft version of the documents must be submitted by Friday, September 13, 2024 at 11:59 p.m. I will grade and give feedback on these documents over the weekend and return them to you by Monday.
The final version of the documents must be submitted by Friday, September 20, 2024 at 11:59 p.m. The final version will be graded based on the same standards as the draft document, with an extra grading category for how effectively feedback on the draft has been incorporated.
All work must be done within assigned teams. You may discuss general concepts with your classmates, but it's never acceptable for you to look at another team's code. Please refer to the course policies if you have any questions about academic integrity. If you have trouble with the assignment, I am always available for assistance.
Grading
Your grade will be determined by the following categories:
Category | Draft Weight | Final Weight |
---|---|---|
Introduction | 10% | 8% |
Overall Description | 10% | 8% |
Interfaces | 10% | 8% |
Functional Requirements | 40% | 32% |
Non-functional Requirements | 20% | 16% |
Spelling, grammar, style, and formatting | 10% | 8% |
Incorporation of feedback from draft document | 20% |