Requirements Specification
   HOME

TheInfoList



OR:

A software requirements specification (SRS) is a description of a
software system A software system is a system of intercommunicating software component, components based on software forming part of a computer system (a combination of Computer hardware, hardware and software). It "consists of a number of separate Computer progr ...
to be developed. It is modeled after the business requirements specification (CONOPS). The software requirements specification lays out functional and
non-functional requirements In systems engineering and requirements engineering, a non-functional requirement (NFR) is a requirement that specifies criteria that can be used to judge the operation of a system, rather than specific behaviours. They are contrasted with funct ...
, and it may include a set of
use case In both software and systems engineering, a use case is a structured description of a system’s behavior as it responds to requests from external actors, aiming to achieve a specific goal. It is used to define and validate functional requireme ...
s that describe user interactions that the software must provide to the user for perfect interaction. Software requirements specifications establish the basis for an agreement between customers and contractors or suppliers on how the software product should function (in a market-driven project, these roles may be played by the marketing and development divisions). Software requirements specification is a rigorous assessment of requirements before the more specific system design stages, and its goal is to reduce later redesign. It should also provide a realistic basis for estimating product costs, risks, and schedules. Used appropriately, software requirements specifications can help prevent software project failure. The software requirements specification document lists sufficient and necessary requirements for the project development. To derive the requirements, the developer needs to have a clear and thorough understanding of the products under development. This is achieved through detailed and continuous communications with the project team and customer throughout the software development process. The SRS may be one of a contract's
deliverable A deliverable is a tangible or intangible good or service produced as a result of a project that is intended to be delivered to a customer (either internal or external). A deliverable could be a report, a document, a software product, a server upgr ...
data item descriptions A United States data item description (DID) is a completed document defining the data deliverables required of a United States Department of Defense contractor. A DID specifically defines the data content, format, and intended use of the data with ...
or have other forms of organizationally-mandated content. Typically a SRS is written by a
technical writer A technical writer is a professional communicator whose task is to convey complex information in simple terms to an audience of the general public or a very select group of readers. Technical writers research and create information through a vari ...
, a
systems architect The systems architect is an information and communications technology professional. Systems architects define the architecture of a computerized system (i.e., a system composed of software and hardware) in order to fulfill certain requirements ...
, or a
software programmer A programmer, computer programmer or coder is an author of computer source code someone with skill in computer programming. The professional titles ''software developer'' and ''software engineer'' are used for jobs that require a progr ...
.


History

Software requirement specifications are already used in software development processes as early as 1975. The purpose and content of software requirement specifications was formalised in 1983 by the
IEEE The Institute of Electrical and Electronics Engineers (IEEE) is an American 501(c)(3) organization, 501(c)(3) public charity professional organization for electrical engineering, electronics engineering, and other related disciplines. The IEEE ...
. The standard was published in 1984 as IEEE-830-1984 and approved by
ANSI The American National Standards Institute (ANSI ) is a private nonprofit organization that oversees the development of voluntary consensus standards for products, services, processes, systems, and personnel in the United States. The organiz ...
. It was revised in 1993 and 1998, before being superseded by an international standard. This standard aimed at providing criteria for a good SRS, and recommendations about its content. It recognised the benefits of prototyping for the requirement engineering. It propose an example of structure and several variants. The
ISO The International Organization for Standardization (ISO ; ; ) is an independent, non-governmental, international standard development organization composed of representatives from the national standards organizations of member countries. Me ...
/IEC/IEEE 29148 standard "Systems and software engineering —Life cycle processes — Requirements engineering" superseded IEEE 830 in 2011. The current revision is from 2018. This standard is broader as it covers also requirement quality criteria, requirement management processes, and business requirement specification (BRS), as well as stakeholder requirement specification (StRS). It proposes a slightly changed example structure.


Structure

An example organization of an SRS is as follows: #Purpose ##
Definition A definition is a statement of the meaning of a term (a word, phrase, or other set of symbols). Definitions can be classified into two large categories: intensional definitions (which try to give the sense of a term), and extensional definitio ...
s ##Background ##System overview ##
Reference A reference is a relationship between objects in which one object designates, or acts as a means by which to connect to or link to, another object. The first object in this relation is said to ''refer to'' the second object. It is called a ''nam ...
s # Overall description ## Product perspective ### System Interfaces ###
User interface In the industrial design field of human–computer interaction, a user interface (UI) is the space where interactions between humans and machines occur. The goal of this interaction is to allow effective operation and control of the machine fro ...
s ###
Hardware interfaces Components of an electrical circuit are electrically connected if an electric current can run between them through an electrical conductor. An electrical connector is an electromechanical device used to create an electrical connection between ...
### Software interfaces ###Communication Interfaces ### Memory constraints ##Design constraints ### Operations ###Site adaptation requirements ##Product functions ##User characteristics ##Constraints, assumptions and dependencies #Specific requirements ##External interface requirements ## Performance requirements ##Logical database requirement ## Software system attributes ###
Reliability Reliability, reliable, or unreliable may refer to: Science, technology, and mathematics Computing * Data reliability (disambiguation), a property of some disk arrays in computer storage * Reliability (computer networking), a category used to des ...
###
Availability In reliability engineering, the term availability has the following meanings: * The degree to which a system, subsystem or equipment is in a specified operable and committable state at the start of a mission, when the mission is called for at ...
###
Security Security is protection from, or resilience against, potential harm (or other unwanted coercion). Beneficiaries (technically referents) of security may be persons and social groups, objects and institutions, ecosystems, or any other entity or ...
###
Maintainability Maintainability is the ease of maintaining or providing maintenance for a functioning product or service. Depending on the field, it can have slightly different meanings. Usage in different fields Engineering In engineering, maintainability ...
###Portability ##
Functional requirements In software engineering and systems engineering, a functional requirement defines a function of a system or its component, where a function is described as a summary (or specification or statement) of behavior between inputs and outputs. Functiona ...
###
Functional partitioning Functional may refer to: * Movements in architecture: ** Functionalism (architecture) ** Form follows function * Functional group, combination of atoms within molecules * Medical conditions without currently visible organic basis: ** Functional s ...
###
Functional description Functional may refer to: * Movements in architecture: ** Functionalism (architecture) ** Form follows function * Functional group, combination of atoms within molecules * Medical conditions without currently visible organic basis: ** Functional s ...
###
Control description Control may refer to: Basic meanings Economics and business * Control (management), an element of management * Control, an element of management accounting * Comptroller (or controller), a senior financial officer in an organization * Controlling ...
##
Environment characteristics Environment most often refers to: __NOTOC__ * Natural environment, referring respectively to all living and non-living things occurring naturally and the physical and biological factors along with their chemical interactions that affect an organism ...
### Hardware ###
Peripherals A peripheral device, or simply peripheral, is an auxiliary hardware device that a computer uses to transfer information externally. A peripheral is a hardware component that is accessible to and controlled by a computer but is not a core compo ...
###
Users Ancient Egyptian roles * User (ancient Egyptian official), an ancient Egyptian nomarch (governor) of the Eighth Dynasty * Useramen, an ancient Egyptian vizier also called "User" Other uses * User (computing), a person (or software) using an ...
##Other It would be recommended to address also verification approaches planned to qualify the software against the requirements, for example with a specific section with a structure that mirrors the section on specific requirements.


Requirement quality

Requirements should strictly be about what is needed, independently of the system design, and not how the software should do it. Individual requirements shall hence be necessary, appropriate, and unambiguous. A set of requirements shall moreover be complete, consistent, feasible, and comprehensible. Following the idea of
code smell In computer programming, a code smell is any characteristic in the source code of a program that possibly indicates a deeper problem. Determining what is and is not a code smell is subjective, and varies by language, developer, and development met ...
s, the notion of ''requirements smell'' has been proposed to describe issues in requirements specification where the requirement is not necessarily wrong but could be problematic. Examples of requirements smells are ''subjective language'', ''ambiguous adverbs and adjectives'', ''superlatives'' and ''negative statements''. Comparative phrases, non-verifiable terms or terms implying totality should also be avoided.


See also

*
System requirements specification A System Requirements Specification (SysRS) (abbreviated ''SysRS'' to be distinct from a software requirements specification (SRS)) is a structured collection of information that embodies the requirements of a system. A business analyst (BA), some ...
*
Concept of operations A concept of operations (abbreviated CONOPS, CONOPs, or ConOps) is a document describing the characteristics of a proposed system from the viewpoint of an individual who will use that system. Examples include business requirements specification ...
*
Requirements engineering Requirements engineering (RE) is the process of defining, documenting, and maintaining requirements in the engineering design process. It is a common role in systems engineering and software engineering. The first use of the term ''requiremen ...
*
Software Engineering Body of Knowledge The Software Engineering Body of Knowledge (SWEBOK ( )) refers to the collective knowledge, skills, techniques, methodologies, best practices, and experiences accumulated within the field of software engineering over time. A baseline for this body ...
(SWEBOK) *
Design specification A design specification (or product design specification) is a document which details exactly what criteria a product or a process should comply with. If the product or its design are being created on behalf of a customer, the specification should ...
*
Specification (technical standard) A specification often refers to a set of documented requirements to be satisfied by a material, design, product, or service. A specification is often a type of technical standard. There are different types of technical or engineering specificati ...
*
Formal specification In computer science, formal specifications are mathematically based techniques whose purpose is to help with the implementation of systems and software. They are used to describe a system, to analyze its behavior, and to aid in its design by verify ...
*
Abstract type In programming languages, an abstract type (also known as existential types) is a type in a nominative type system that cannot be instantiated directly; by contrast, a concrete type be instantiated directly. Instantiation of an abstract ty ...


References


External links

* * * * ("This standard replaces IEEE 830-1998, IEEE 1233-1998, IEEE 1362-1998

) * * * *
How to Write a Software Requirement Specification to Save Costs?
{{DEFAULTSORT:Software Requirements Software requirements Software documentation IEEE standards