Introduction to Software Requirements
Reference book: Software Requirements 3 (2013) by Karl Wiegers and Joy Beatty.
The goal of software requirements development is to accumulate a set of requirements that are good enough to allow the software project team to proceed with the design and construction of the software at an acceptable level of risk.
Good software requirements practises are also required to minimise the risk of rework, prevent the creation of an unacceptable product and blown schedules.
Various studies have suggested that errors introduced during requirements activities account for 40% to 50% of all defects found in a software product (Davis, Alan M. 2005 - Just Enough Requirements Management: Where Software Development Meets Marketing. New York: Dorset House Publishing).
Inadequate user input and shortcomings in specifying and managing customer requirements are major contributors to unsuccessful projects. Despite this evidence, many organisations still practice ineffective requirements methods.
Types of Requirements
Business requirement: A high-level business objective of a department or organisation for which the software product is being built.
Business rule: A policy, guideline, standard or regulation that defines or constraints some aspect of the way the business operates.
Constraint: A restriction that is imposed on the choices available to the developer for the design and construction of the product.
External interface requirement: The description of a connection between the software system, a user, another software system or hardware device.
Feature: One or more logically related system capabilities that provide value to a user. The details are described by a set of functional requirements.
Functional requirement: A description of a behaviour that the system will exhibit under specific conditions.
Non-functional requirement: The description of a property or characteristic that a system must exhibit, or a constraint that it must respect. Such common requirements include aspects on software usability, performance and security.
System requirement: A top-level system requirement of a product and its subsystems, that describes the functions which the system as a whole should satisfy for stakeholder needs and requirements.
User requirement: A goal, task, or desirable attribute that specific classes of users must be able to perform with the system.
Documents and Requirements
The ovals in the diagram above shows the different types of requirement information, while the rectangles indicate the documents under which these requirements are typically stored. The dotted arrows indicate the origin or influence of a requirement or document on each other.