How do you write a Software Requirements Specifications document?
Software Requirements Specification (SRS)
1 Purpose of This Document
Insert the purpose of this document, and its intended audience.
2 Scope of Document
Insert description of the scope of this Software Requirement Specification.
21 Scope Constraints
Insert constraints, such as schedules, costs, interactions, overview, or any other information relevant to the construction of the development requirements.
3 Overview
Insert an overview or brief description of the product, software, or other desired end result.
4 Business Context
Insert an overview of the business or organization desiring the development of this project. Include the business or organization's mission statement and its organizational goals and objectives.
General Description
1 Product Functions
Insert a description of the functionality of the product.
2 Similar System Information
Insert a description of the relationship between this product and any other product or product(s); whether the product shall be a stand-alone product or whether the product shall be used as a component or to support another program or programs. This section is intended to discuss the relationships between the above-mentioned items.
3 User Characteristics
Insert a description of the characteristics of the typical user or user community that this product serves or will serve. Include features that the user or user community currently uses or expects. Include current relevant features and describe the expected experience level and familiarity with similar software systems, applications, or other programs and program use.
4 User Problem Statement
Insert user problem statement that describes the essential problem(s) currently being faced by the intended user community.
5 User Objectives
Insert the objectives and requirements for the product from the user's perspective. The user objectives section may also include a "wish" list of features or functionality that the user(s) want, and how that relates to the business context.
6 General Constraints
Insert the general constraints placed upon the developers, including hardware requirements, schedule requirements, industry protocols or standards to be met or any other constraint placed upon the development of the product.
Functional Requirements
This section describes the functional requirements ranked in order of importance. Here you will describe what the product must accomplish; what other component requirements must accomplish; the requirements for Interface, Scalability, Performance, Compatibility, or other components of the product; and how the product fulfills these requirements.
Each functional requirement should be specified in a format similar to the following:
Functional Requirement #1 Name
1 Description
A complete description of the functional requirement.
2 Criticality
A description of how critical this functional requirement is to the overall product.
3 Technical Issues
A description of issues related to the design, development, or integration of this functional requirement.
4 Cost Summary and Schedules
A description of the costs and timelines associated with this functional requirement.
5 Risks
A description of the risks and possible circumstances under which this functional requirement may not be able to be met. Include provisions the developers must take in order to overcome this risk.
6 Dependencies with other requirements
A description of the various interactions between this requirement and other functional requirements. Here you will insert statements concerning the impact of these dependencies and the impact on the ranking of requirements.
Functional Requirement #2 Name
Repeat the section above for more requirements.
Interface Requirements
This section describes both how the product will interface with other software products (or dependencies) or with end users for input and output.
1 User Interfaces
Describes how this the end user interfaces with the product.
1 Graphical User Interface (GUI)
Describes the graphical user interface or whether another system is required to provide the GUI. Include mock-ups or screenshots of the user interface features. Describe all navigation systems, hierarchy of menus, sub-menus, buttons, and all other relevant GUI features of the product.
2 Command Line Interface (CLI)
Describes the command-line interface, if present. For each command, a description of all arguments and example values and invocations should be provided.
3 Application Programming Interface (API)
Describes the application programming interface, if present. For each public interface function, the name, arguments, return values, examples of invocation, and interactions with other functions should be provided.
4 Debugging and Diagnostics
Describes the process required for the product to return troubleshooting, debugging, or other diagnostic data and feedback.
2 Hardware Interfaces
A description of all interfaces to hardware or hardware devices.
3 Communications Interfaces
A description of all communication and network interfaces.
4 Software Interfaces
A description of all software interfaces.
Performance Requirements
Insert specific performance requirements
Design Constraints
Insert specific design constraints, including compliance with specific standards and constraints on design due to hardware limitations.
Other Non-Functional Attributes
A description of other non-functional attributes required by the product.
1 Security
Insert the attributes description here.
2 Binary Compatibility
Insert the attributes description here.
3 Reliability
Insert the attributes description here.
4 Maintainability
Insert the attributes description here.
5 Portability
Insert the attributes description here.
6 Extensibility
Insert the attributes description here.
7 Reusability
Insert the attributes description here.
8 Application Compatibility
Insert the attributes description here.
9 Resource Utilization
Insert the attributes description here.
10 Serviceability
Insert the attributes description here. Preliminary Object-Oriented Domain Analysis. A description or list of the fundamental objects required to be modeled within the product in order to satisfy its requirements.
The goal is to create a structural view on the requirements and how they may be satisfied. This section deals primarily with higher-level programming and functional requirements AND may be safely omitted for projects not concerned with Object-Oriented Domain Analysis (OODA). This section should not be removed from your SRS Document.
Instead, you should include an entry such as: "No Object-Oriented Domain Analysis Requirement.
1 Inheritance Relationships
A description of primary inheritance hierarchy. Include diagrams, graphs, or other UML examples to further illustrate such relationships.
2 Class descriptions
A description of each class identified during the OODA. Include a more detailed description of each class.
The description of each class should be organized as follows:
1 Insert the Class name identifier
1 Abstract or Concrete:
Indicates whether this class is abstract (designed only as a parent from which subclasses may be derived) or concrete (suitable to be instantiated).
2 List of Superclasses:
Lists the class from which another class ("subclass") inherits.
3 List of Subclasses:
Lists the class that is derived from a base class by inheritance. The new class contains all the features of the base class, but may have new features added or existing features redefined.
4 Purpose:
Lists the purpose of the class.
5 Collaborations:
Lists the names of each class that this class must interact with and how it must interact in order to accomplish its purpose.
6 Attributes:
Lists each attribute associated with each instance of this class, and indicates examples of possible values or a range of values.
7 Operations:
Lists each operation able to be invoked upon instances of this class.
8 Constraints:
Lists the constraints and restrictions upon the behavior of instances of this class.
Operational Scenarios
A description of the various scenarios that an end user may experience when using the product under certain conditions or situations. Scenarios are not considered to be functional requirements, rather they are used to help set parameters and expectations for the use of the product under these conditions or situations.
Preliminary Schedule
A description of the project schedule and timeline for completion. The project plan should include all major tasks, who is responsible for the completion of such tasks, what the interdependencies of each task are, and what the start and completion of each task will be. You should also include vendor information and requirements of such that affect the schedule(s) and timeline.
Preliminary Budget
A description of the cost summary and an attachment of the initial line-item and itemized budget for the project.
Appendices
A description of all other supporting information for understanding these requirements.
All SRS documents require the following two appendices:
1 Definitions, Acronyms, Abbreviations
A description of the definitions of important terms, abbreviations, and acronyms. May also include a Glossary.
2 References
A listing of all citations to all documents and meetings referenced or used in the preparation of this requirements document.
Customer Initials Developers Initials