SRS Template Project
SRS Template Project
SRS Template Project
E-Shopping
(Team Member)
Ankit Shingala
Atul Sawant
Mayank Shah)
Table of Contents
1. Introduction 4
1.1 Purpose 4
1.2 Scope 4
1.3 Definitions, Acronyms, and Abbreviations. 4
1.4 References 4
1.5 Overview 5
3. Specific Requirements 9
3.1 External Interfaces 10
3.2 Functions 11
3.3 Performance Requirements 11
3.4 Logical Database Requirements 12
3.5 Design Constraints 12
3.5.1 Standards Compliance 13
3.6 Software System Attributes 13
3.6.1 Reliability 13
3.6.2 Availability 13
3.6.3 Security 13
3.6.4 Maintainability 14
3.6.5 Portability 14
3.7 Organizing the Specific Requirements 15
3.7.1 System Mode 15
3.7.2 User Class 15
3.7.3 Objects 15
3.7.4 Feature 16
f
3.7.5 Stimulus 16
3. 7.6 Response 16
3.7.7 Functional Hierarchy 16
3.8 Additional Comments 16
Change Management Process 17
Document Approvals 17
Supporting Information 17
f
1. Introduction
The purpose of the application is to deliver an easy-to-use online shopping purpose. It should be
available for even the most novice of computer users and run on small Spec computers. The
application itself is a complete piece of software with few dependencies on other aspects of the
environment. The application is a new website which will be given a release number of 1.0 subject to
further updating. Future release numbers will follow the common number convention.
1.1 Purpose
The purpose of the application is to deliver an easy-to-use online shopping with security constraints.
1.2 Scope
The application should be able to run on any system regardless of the operating system or hardware
within reason. It can be accessed using a simple internet connection on a home users desktop
computer or laptop. The application is designed for all types of users regardless of their age or
experience to perform various transactions. It must function effectively and maintain an efficient
level of service.
1.4 References
In this subsection:
(1) Provide a complete list of all documents referenced elsewhere in the SRS
(2) Identify each document by title, report number (if applicable), date, and
publishing organization
(3) Specify the sources from which the references can be obtained.
This information can be provided by reference to an appendix or to another document .If
your application uses specific protocols or RFC’s, then reference them here so designers
know where to find them.
f
1.5 Overview
In this subsection:
(1) Describe what the rest of the SRS contains
(2) Explain how the SRS is organized
Don’t rehash the table of contents here. Point people to the parts of the document they are
most concerned with. Customers/potential users care about section 2, developers care about
section 3.
2. The Overall Description
Describe the general factors that affect the product and its requirements. This section does
not state specific requirements. Instead, it provides a background for those requirements,
which are defined in section 3, and makes them easier to understand. In a sense, this section
tells the requirements in plain English for the consumption of the customer. Section3 will
contain a specification written for the developers.
The following subsections describe how the software operates inside various constraints.
2.1.2 Interfaces
Specify:
(1) The logical characteristics of each interface between the software product and its users.
(2) All the aspects of optimizing the interface with the person who must use the system This is
a description of how the system will interact with its users. Is there a GUI, a command line
or some other type of interface? Are there special interface requirements? If you are
designing for the general student population for instance, what is the impact of ADA
(American with Disabilities Act) on your interface?
software here that you think would be good to use. This is only for customer-specified
systems that you have to interact with. Choosing SQL Server 7 as a DB without a customer
requirement is a Design choice, not a requirement. This is a subtle but important point to
writing good requirements and not over-constraining the design.
2.1.7 Operations
Specify the normal and special operations required by the user such as:
(1) The various modes of operations in the user organization
(2) Periods of interactive operations and periods of unattended operations
(3) Data processing support functions
(4) Backup and recovery operations
(Note: This is sometimes specified as part of the User Interfaces section.) If you
separate this from the UI stuff earlier, then cover business process type stuff that would
impact the design. For instance, if the company brings all their systems down at midnight for
data backup that might impact the design. These are all the work tasks that impact the design
of an application, but which might not be located in software.
(2) Specify the site or mission-related features that should be modified to adapt the software
to a particular installation
If any modifications to the customer’s work area would be required by your system, then
document that here. For instance, “A 100Kw backup generator and 10000 BTU air
conditioning system must be installed at the user site prior to software installation”. This
could also be software-specific like, “New data tables created for this system must be
installed on the company’s existing DB server and populated prior to system activation.”
Any equipment the customer would need to buy or any software setup that needs to be done
so that your system will install and operate correctly should be documented here.
2.4 Constraints
Provide a general description of any other items that will limit the developer's options.
These can include:
f
(1) Regulatory policies
(2) Hardware limitations (for example, signal timing requirements)
(3) Interface to other applications
(4) Parallel operation
(5) Audit functions
(6) Control functions
(7) Higher-order language requirements
(8) Signal handshake protocols (for example, XON-XOFF, ACK-NACK)
(9) Reliability requirements
(10) Criticality of the application
(11) Safety and security considerations
This section captures non-functional requirements in the customers language. A more formal
presentation of these will occur in section 3.
3. Specific Requirements
This section contains all the software requirements at a level of detail sufficient to enable
designers to design a system to satisfy those requirements, and testers to test that the system
satisfies those requirements. Throughout this section, every stated requirement should be
externally perceivable by users, operators, or other external systems. These requirements
should include at a minimum a description of every input (stimulus) into the system, every
output (response) from the system and all functions performed by the system in response to
an input or in support of an output. The following principles apply:
f
(1) Specific requirements should be stated with all the characteristics of a good SRS
correct
unambiguous
complete
consistent
ranked for importance and/or stability
verifiable
modifiable
traceable
(2) Specific requirements should be cross-referenced to earlier documents that relate
(3) All requirements should be uniquely identifiable (usually via numbering like 3.1.2.3)
(4) Careful attention should be given to organizing the requirements to maximize readability
(Several alternative organizations are given at end of document)
Before examining specific ways of organizing the requirements it is helpful to understand the
various items that comprise requirements as described in the following subclasses.
This section reiterates section 2, but is for developers not the customer. The customer buys in
with section 2, the designers use section 3 to design and build the actual application.
Remember this is not design. Do not require specific software packages, etc unless the
customer specifically requires them. Avoid over-constraining your design. Use proper
terminology: The system shall… A required, must have feature The system should… A
desired feature, but may be deferred til later The system may… An optional, nice-to-have
feature that may never make it to
implementation. Each requirement should be uniquely identified for traceability. Usually,
they are numbered 3.1, 3.1.1, 3.1.2.1 etc. Each requirement should also be testable. Avoid
imprecise statements like, “The system shall be easy to use” Well no kidding, what does that
mean? Avoid “motherhood and apple pie” type statements, “The system shall be developed
using good software engineering practice” Avoid examples, This is a specification, a
designer should be able to read this spec and build the system without bothering the
customer again. Don’t say things like, “The system shall accept configuration information
such as name and address.” The designer doesn’t know if that is the only two data elements
or if there are 200. List every piece of information that is required so the designers can build
the right UI and data tables.
3.2 Functions
Functional requirements define the fundamental actions that must take place in the
software in accepting and processing the inputs and in processing and generating the
outputs. These are generally listed as “shall” statements starting with "The system shall…
These include:
Validity checks on the inputs
Exact sequence of operations
Responses to abnormal situation, including
Overflow
Communication facilities
Error handling and recovery
Effect of parameters
Relationship of outputs to inputs, including
Input/Output sequences
Formulas for input to output conversion
It may be appropriate to partition the functional requirements into sub-functions or
subprocesses. This does not imply that the software design will also be partitioned that way.
(Note: Numerical limits applied to one specific function are normally specified as part
of the processing subparagraph description of that function.)
3.6.1 Reliability
Specify the factors required to establish the required reliability of the software system at time
of delivery. If you have MTBF requirements, express them here. This doesn’t refer to just
having a program that does not crash. This has a specific engineering meaning.
3.6.2 Availability
Specify the factors required to guarantee a defined availability level for the entire system
such as checkpoint, recovery, and restart. This is somewhat related to reliability. Some
systems run only infrequently on-demand (like MS Word). Some systems have to run 24/7
(like an e-commerce web site). The required availability will greatly impact the design. What
are the requirements for system recovery from a failure? “The system shall allow users to
restart the application after failure with the loss of at most 12 characters of input”.
3.6.3 Security
f
Specify the factors that would protect the software from accidental or malicious access, use,
modification, destruction, or disclosure. Specific requirements in this area could include the
need to:
Utilize certain cryptographic techniques
Keep specific log or history data sets
Assign certain functions to different modules
Restrict communications between some areas of the program
Check data integrity for critical variables
3.6.4 Maintainability
Specify attributes of software that relate to the ease of maintenance of the software itself
There may be some requirement for certain modularity, interfaces, complexity, etc.
Requirements should not be placed here just because they are thought to be good design
practices. If someone else will maintain the system
3.6.5 Portability
Specify attributes of software that relate to the ease of porting the software to other host
machines and/or operating systems. This may include:
Percentage of components with host-dependent code
Percentage of code that is host dependent
Use of a proven portable language
Use of a particular compiler or language subset
Use of a particular operating system
Once the relevant characteristics are selected, a subsection should be written for each,
explaining the rationale for including this characteristic and how it will be tested and
measured. A chart like this might be used to identify the key characteristics (rating them
High or Medium), then identifying which are preferred when trading off design or
implementation decisions (with the ID of the preferred one indicated in the chart to the
right). The chart below is optional (it can be confusing) and is for demonstrating trade-off
analysis between different non-functional requirements. H/M/L is the relative priority of that
non-functional requirement.
ID Characteristic H/M/L 1 2 3 4 5 6 7 8 9 10 11 12
1. Correctness
2. Efficiency
3. Flexibility
4. Integrity/Security
5. Interoperability
6. Maintainability
7. Portability
8. Reliability
9. Reusability
10. Testability
11. Usability
12. Availability
Definitions of the quality characteristics not defined in the paragraphs above follow.
• Correctness - extent to which program satisfies specifications, fulfills user’s mission
objectives
• Efficiency - amount of computing resources and code required to perform function
• Flexibility - effort needed to modify operational program
• Interoperability - effort needed to couple one system with another
• Reliability - extent to which program performs with required precision
• Reusability - extent to which it can be reused in another application
• Testability - effort needed to test to ensure performs as intended
• Usability - effort required to learn, operate, prepare input, and interpret output
THE FOLLOWING (3.7) is not really a section, it is talking about how to organize
requirements you write in section 3.2. At the end of this template there are a bunch of
alternative organizations for section 3.2. Choose the ONE best for the system you are writing
the requirements for.
3.7.3 Objects
Objects are real-world entities that have a counterpart within the system. Associated
with each object is a set of attributes and functions. These functions are also called
f
services, methods, or processes. Note that sets of objects may share attributes and
services. These are grouped together as classes.
3.7.4 Feature
A feature is an externally desired service by the system that may require a sequence of inputs
to effect the desired result. Each feature is generally described in as sequence of stimulus-
response pairs.
3.7.5 Stimulus
Some systems can be best organized by describing their functions in terms of stimuli.
3. 7.6 Response
Some systems can be best organized by describing their functions in support of the
generation of a response.
Document Approvals
Identify the approvers of the SRS document. Approver name, signature, and date should be
used.
Supporting Information
The supporting information makes the SRS easier to use. It includes:
Table of Contents
Index
Appendices
The Appendices are not always considered part of the actual requirements specification and
are not always necessary. They may include:
(a) Sample I/O formats, descriptions of cost analysis studies, results of user
surveys
(b) Supporting or background information that can help the readers of the SRS
(c) A description of the problems to be solved by the software
(d) Special packaging instructions for the code and the media to meet security, export, initial
loading, or other requirements When Appendices are included, the SRS should explicitly
state whether or not the Appendices are to be considered part of the requirements. Tables on
the following pages provide alternate ways to structure section 3 on the specific requirements.
You should pick the best one of these to organize section 3 requirements.
f
3.2.3.p Construct p
3.2.3.p.1 Record type
3.2.3.p.2 Constituent fields
3.2.4 Data dictionary
3.2.4.1 Data element 1
3.2.4.1.1 Name
3.2.4.1.2 Representation
3.2.4.1.3 Units/Format
3.2.4.1.4 Precision/Accuracy
3.2.4.1.5 Range
3.2.4.2 Data element 2
3.2.4.2.1 Name
3.2.4.2.2 Representation
3.2.4.2.3 Units/Format
3.2.4.2.4 Precision/Accuracy
3.2.4.2.5 Range
…..
3.2.4.q Data element q
3.2.4.q.1 Name
3.2.4.q.2 Representation
3.2.4.q.3 Units/Format
3.2.4.q.4 Precision/Accuracy
3.2.4.q.5 Range
3.3 Performance Requirements
3.4 Design Constraints
3.5 Software system attributes
3.6 Other requirements
f