Documente Academic
Documente Profesional
Documente Cultură
SOFTWARE REQUIREMENTS
1-1
1-2 SWEBOK® Guide V3.0
order to solve some problem in the real world. It requirements can be verified within available
may aim to automate part of a task for someone resource constraints.
to support the business processes of an organiza- Requirements have other attributes in addi-
tion, to correct shortcomings of existing software, tion to behavioral properties. Common examples
or to control a device—to name just a few of the include a priority rating to enable tradeoffs in
many problems for which software solutions are the face of finite resources and a status value to
possible. The ways in which users, business pro- enable project progress to be monitored. Typi-
cesses, and devices function are typically complex. cally, software requirements are uniquely identi-
By extension, therefore, the requirements on par- fied so that they can be subjected to software con-
ticular software are typically a complex combina- figuration management over the entire life cycle
tion from various people at different levels of an of the feature and of the software.
organization, and who are in one way or another
involved or connected with this feature from the 1.2. Product and Process Requirements
environment in which the software will operate.
An essential property of all software require- A product requirement is a need or constraint on
ments is that they be verifiable as an individual the software to be developed (for example, “The
feature as a functional requirement or at the software shall verify that a student meets all pre-
system level as a nonfunctional requirement. It requisites before he or she registers for a course”).
may be difficult or costly to verify certain soft- A process requirement is essentially a con-
ware requirements. For example, verification straint on the development of the software (for
of the throughput requirement on a call center example, “The software shall be developed using
may necessitate the development of simulation a RUP process”).
software. Software requirements, software test- Some software requirements generate implicit
ing, and quality personnel must ensure that the process requirements. The choice of verification
Software Requirements 1-3
technique is one example. Another might be the depend for their interpretation on subjective
use of particularly rigorous analysis techniques judgment (“the software shall be reliable”; “the
(such as formal specification methods) to reduce software shall be user-friendly”). This is par-
faults that can lead to inadequate reliability. Pro- ticularly important for nonfunctional require-
cess requirements may also be imposed directly ments. Two examples of quantified requirements
by the development organization, their customer, are the following: a call center’s software must
or a third party such as a safety regulator. increase the center’s throughput by 20%; and a
system shall have a probability of generating a
1.3. Functional and Nonfunctional Requirements fatal error during any hour of operation of less
than 1 * 10−8. The throughput requirement is at a
Functional requirements describe the functions very high level and will need to be used to derive
that the software is to execute; for example, for- a number of detailed requirements. The reliabil-
matting some text or modulating a signal. They ity requirement will tightly constrain the system
are sometimes known as capabilities or features. architecture.
A functional requirement can also be described
as one for which a finite set of test steps can be 1.6. System Requirements and Software
written to validate its behavior. Requirements
Nonfunctional requirements are the ones that
act to constrain the solution. Nonfunctional In this topic, “system” means
requirements are sometimes known as constraints
or quality requirements. They can be further clas- an interacting combination of elements
sified according to whether they are performance to accomplish a defined objective. These
requirements, maintainability requirements, include hardware, software, firmware,
safety requirements, reliability requirements, people, information, techniques, facilities,
security requirements, interoperability require- services, and other support elements,
ments or one of many other types of software
requirements (see Models and Quality Character- as defined by the International Council on Soft-
istics in the Software Quality KA). ware and Systems Engineering (INCOSE) [3].
System requirements are the requirements for
1.4. Emergent Properties the system as a whole. In a system containing
software components, software requirements are
Some requirements represent emergent proper- derived from system requirements.
ties of software—that is, requirements that can- This KA defines “user requirements” in a
not be addressed by a single component but that restricted way, as the requirements of the sys-
depend on how all the software components tem’s customers or end users. System require-
interoperate. The throughput requirement for a ments, by contrast, encompass user requirements,
call center would, for example, depend on how requirements of other stakeholders (such as regu-
the telephone system, information system, and latory authorities), and requirements without an
the operators all interacted under actual operat- identifiable human source.
ing conditions. Emergent properties are crucially
dependent on the system architecture. 2. Requirements Process
[1*, c4s4] [2*, c1–4, c6, c22, c23]
1.5. Quantifiable Requirements
This section introduces the software requirements
Software requirements should be stated as clearly process, orienting the remaining five topics and
and as unambiguously as possible, and, where showing how the requirements process dovetails
appropriate, quantitatively. It is important to with the overall software engineering process.
avoid vague and unverifiable requirements that
1-4 SWEBOK® Guide V3.0
cost and timeliness of a software product and of to ensure the customer’s most important business
the customer’s satisfaction with it. It will help to needs are satisfied first. This minimizes the risk
orient the requirements process with quality stan- of requirements specialists spending time elicit-
dards and process improvement models for soft- ing requirements that are of low importance, or
ware and systems. Process quality and improve- those that turn out to be no longer relevant when
ment is closely related to both the Software the software is delivered. On the other hand, the
Quality KA and Software Engineering Process description must be scalable and extensible to
KA, comprising accept further requirements not expressed in the
first formal lists and compatible with the previous
• requirements process coverage by process ones as contemplated in recursive methods.
improvement standards and models;
• requirements process measures and 3.1. Requirements Sources
benchmarking;
• improvement planning and implementation; Requirements have many sources in typical soft-
• security/CIA improvement/planning and ware, and it is essential that all potential sources
implementation. be identified and evaluated. This topic is designed
to promote awareness of the various sources of
3. Requirements Elicitation software requirements and of the frameworks for
[1*, c4s5] [2*, c5, c6, c9] managing them. The main points covered are as
follows:
Requirements elicitation is concerned with the
origins of software requirements and how the • Goals. The term “goal” (sometimes called
software engineer can collect them. It is the first “business concern” or “critical success fac-
stage in building an understanding of the problem tor”) refers to the overall, high-level objec-
the software is required to solve. It is fundamen- tives of the software. Goals provide the moti-
tally a human activity and is where the stakehold- vation for the software but are often vaguely
ers are identified and relationships established formulated. Software engineers need to pay
between the development team and the customer. particular attention to assessing the value
It is variously termed “requirements capture,” (relative to priority) and cost of goals. A fea-
“requirements discovery,” and “requirements sibility study is a relatively low-cost way of
acquisition.” doing this.
One of the fundamental principles of a good • Domain knowledge. The software engineer
requirements elicitation process is that of effec- needs to acquire or have available knowl-
tive communication between the various stake- edge about the application domain. Domain
holders. This communication continues through knowledge provides the background against
the entire Software Development Life Cycle which all elicited requirements knowledge
(SDLC) process with different stakeholders at must be set in order to understand it. It’s
different points in time. Before development a good practice to emulate an ontological
begins, requirements specialists may form the approach in the knowledge domain. Rela-
conduit for this communication. They must medi- tions between relevant concepts within the
ate between the domain of the software users (and application domain should be identified.
other stakeholders) and the technical world of the • Stakeholders (see section 2.2, Process
software engineer. A set of internally consistent Actors). Much software has proved unsat-
models at different levels of abstraction facilitate isfactory because it has stressed the require-
communications between software users/stake- ments of one group of stakeholders at the
holders and software engineers. expense of others. Hence, the delivered
A critical element of requirements elicitation is software is difficult to use, or subverts the
informing the project scope. This involves provid- cultural or political structures of the cus-
ing a description of the software being specified tomer organization. The software engineer
and its purpose and prioritizing the deliverables needs to identify, represent, and manage
1-6 SWEBOK® Guide V3.0
the “viewpoints” of many different types of has yet to be obtained from end users. The impor-
stakeholders. tance of planning, verification, and validation in
• Business rules. These are statements that requirements elicitation cannot be overstated. A
define or constrain some aspect of the struc- number of techniques exist for requirements elici-
ture or the behavior of the business itself. “A tation; the principal ones are these:
student cannot register in next semester’s
courses if there remain some unpaid tuition • Interviews. Interviewing stakeholders is a
fees” would be an example of a business rule “traditional” means of eliciting requirements.
that would be a requirement source for a uni- It is important to understand the advantages
versity’s course-registration software. and limitations of interviews and how they
• The operational environment. Requirements should be conducted.
will be derived from the environment in • Scenarios. Scenarios provide a valuable
which the software will be executed. These means for providing context to the elicita-
may be, for example, timing constraints tion of user requirements. They allow the
in real-time software or performance con- software engineer to provide a framework
straints in a business environment. These for questions about user tasks by permitting
must be sought out actively because they can “what if” and “how is this done” questions
greatly affect software feasibility and cost as to be asked. The most common type of sce-
well as restrict design choices. nario is the use case description. There is a
• The organizational environment. Software link here to topic 4.2 (Conceptual Modeling)
is often required to support a business pro- because scenario notations such as use case
cess, the selection of which may be condi- diagrams are common in modeling software.
tioned by the structure, culture, and internal • Prototypes. This technique is a valuable tool
politics of the organization. The software for clarifying ambiguous requirements. They
engineer needs to be sensitive to these since, can act in a similar way to scenarios by pro-
in general, new software should not force viding users with a context within which they
unplanned change on the business process. can better understand what information they
need to provide. There is a wide range of
3.2. Elicitation Techniques prototyping techniques—from paper mock-
ups of screen designs to beta-test versions of
Once the requirements sources have been iden- software products—and a strong overlap of
tified, the software engineer can start eliciting their separate uses for requirements elicita-
requirements information from them. Note that tion and for requirements validation (see
requirements are seldom elicited ready-made. section 6.2, Prototyping). Low fidelity proto-
Rather, the software engineer elicits information types are often preferred to avoid stakeholder
from which he or she formulates requirements. “anchoring” on minor, incidental character-
This topic concentrates on techniques for getting istics of a higher quality prototype that can
human stakeholders to articulate requirements- limit design flexibility in unintended ways.
relevant information. It is a very difficult task and • Facilitated meetings. The purpose of these
the software engineer needs to be sensitized to the meetings is to try to achieve a summative
fact that (for example) users may have difficulty effect, whereby a group of people can bring
describing their tasks, may leave important infor- more insight into their software require-
mation unstated, or may be unwilling or unable to ments than by working individually. They
cooperate. It is particularly important to understand can brainstorm and refine ideas that may be
that elicitation is not a passive activity and that, difficult to bring to the surface using inter-
even if cooperative and articulate stakeholders are views. Another advantage is that conflicting
available, the software engineer has to work hard requirements surface early on in a way that
to elicit the right information. Many business or lets the stakeholders recognize where these
technical requirements are tacit or in feedback that occur. When it works well, this technique
Software Requirements 1-7
Reviews may be constituted on completion of domain, exchange data. If formal analysis nota-
the system definition document, the system spec- tions are used, it is possible to use formal reason-
ification document, the software requirements ing to prove specification properties. This topic is
specification document, the baseline specifica- closely related to the Software Engineering Mod-
tion for a new release, or at any other step in the els and Methods KA.
process.
6.4. Acceptance Tests
6.2. Prototyping
An essential property of a software requirement
Prototyping is commonly a means for validating is that it should be possible to validate that the
the software engineer’s interpretation of the soft- finished product satisfies it. Requirements that
ware requirements, as well as for eliciting new cannot be validated are really just “wishes.” An
requirements. As with elicitation, there is a range important task is therefore planning how to ver-
of prototyping techniques and a number of points ify each requirement. In most cases, designing
in the process where prototype validation may acceptance tests does this for how end-users typi-
be appropriate. The advantage of prototypes is cally conduct business using the system.
that they can make it easier to interpret the soft- Identifying and designing acceptance tests
ware engineer’s assumptions and, where needed, may be difficult for nonfunctional requirements
give useful feedback on why they are wrong. For (see section 1.3, Functional and Nonfunctional
example, the dynamic behavior of a user inter- Requirements). To be validated, they must first
face can be better understood through an ani- be analyzed and decomposed to the point where
mated prototype than through textual description they can be expressed quantitatively.
or graphical models. The volatility of a require- Additional information can be found in Accep-
ment that is defined after prototyping has been tance/Qualification/Conformance Testing in the
done is extremely low because there is agreement Software Testing KA.
between the stakeholder and the software engi-
neer—therefore, for safety-critical and crucial 7. Practical Considerations
features prototyping would really help. There are [1*, c4s1, c4s4, c4s6, c4s7]
also disadvantages, however. These include the [2*, c3, c12, c14, c16, c18–21]
danger of users’ attention being distracted from
the core underlying functionality by cosmetic The first level of topic decomposition pre-
issues or quality problems with the prototype. For sented in this KA may seem to describe a linear
this reason, some advocate prototypes that avoid sequence of activities. This is a simplified view
software, such as flip-chart-based mockups. Pro- of the process.
totypes may be costly to develop. However, if The requirements process spans the whole
they avoid the wastage of resources caused by software life cycle. Change management and the
trying to satisfy erroneous requirements, their maintenance of the requirements in a state that
cost can be more easily justified. Early proto- accurately mirrors the software to be built, or that
types may contain aspects of the final solution. has been built, are key to the success of the soft-
Prototypes may be evolutionary as opposed to ware engineering process.
throwaway. Not every organization has a culture of docu-
menting and managing requirements. It is com-
6.3. Model Validation mon in dynamic start-up companies, driven by a
strong “product vision” and limited resources, to
It is typically necessary to validate the quality of view requirements documentation as unnecessary
the models developed during analysis. For exam- overhead. Most often, however, as these compa-
ple, in object models, it is useful to perform a nies expand, as their customer base grows, and
static analysis to verify that communication paths as their product starts to evolve, they discover
exist between objects that, in the stakeholders’ that they need to recover the requirements that
Software Requirements 1-13
motivated product features in order to assess the proceeds. This often leads to the revision of
impact of proposed changes. Hence, requirements requirements late in the life cycle. Perhaps the
documentation and change management are key most crucial point in understanding software
to the success of any requirements process. requirements is that a significant proportion of
the requirements will change. This is sometimes
7.1. Iterative Nature of the Requirements due to errors in the analysis, but it is frequently an
Process inevitable consequence of change in the “environ-
ment”—for example, the customer’s operating
There is general pressure in the software indus- or business environment, regulatory processes
try for ever shorter development cycles, and this imposed by the authorities, or the market into
is particularly pronounced in highly competitive, which software must sell. Whatever the cause, it is
market-driven sectors. Moreover, most projects important to recognize the inevitability of change
are constrained in some way by their environment, and take steps to mitigate its effects. Change has
and many are upgrades to, or revisions of, exist- to be managed by ensuring that proposed changes
ing software where the architecture is a given. In go through a defined review and approval pro-
practice, therefore, it is almost always impractical cess and by applying careful requirements trac-
to implement the requirements process as a linear, ing, impact analysis, and software configuration
deterministic process in which software require- management (see the Software Configuration
ments are elicited from the stakeholders, base- Management KA). Hence, the requirements pro-
lined, allocated, and handed over to the software cess is not merely a front-end task in software
development team. It is certainly a myth that the development, but spans the whole software life
requirements for large software projects are ever cycle. In a typical project, the software require-
perfectly understood or perfectly specified. ments activities evolve over time from elicitation
Instead, requirements typically iterate towards to change management. A combination of top-
a level of quality and detail that is sufficient to down analysis and design methods and bottom-
permit design and procurement decisions to be up implementation and refactoring methods that
made. In some projects, this may result in the meet in the middle could provide the best of both
requirements being baselined before all their worlds. However, this is difficult to achieve in
properties are fully understood. This risks expen- practice, as it depends heavily upon the maturity
sive rework if problems emerge late in the soft- and expertise of the software engineers.
ware engineering process. However, software
engineers are necessarily constrained by project 7.2. Change Management
management plans and must therefore take steps
to ensure that the “quality” of the requirements is Change management is central to the management
as high as possible given the available resources. of requirements. This topic describes the role of
They should, for example, make explicit any change management, the procedures that need to
assumptions that underpin the requirements as be in place, and the analysis that should be applied
well as any known problems. to proposed changes. It has strong links to the Soft-
For software products that are developed iter- ware Configuration Management KA.
atively, a project team may baseline only those
requirements needed for the current iteration. The 7.3. Requirements Attributes
requirements specialist can continue to develop
requirements for future iterations, while develop- Requirements should consist not only of a speci-
ers proceed with design and construction of the fication of what is required, but also of ancillary
current iteration. This approach provides custom- information, which helps manage and interpret
ers with business value quickly, while minimiz- the requirements. Requirements attributes must
ing the cost of rework. be defined, recorded, and updated as the soft-
In almost all cases, requirements understanding ware under development or maintenance evolves.
continues to evolve as design and development This should include the various classification
1-14 SWEBOK® Guide V3.0
Sommerville 2011
Wiegers 2003
[2*]
[1*]
1. Software Requirements Fundamentals
1.1. Definition of a Software Requirement c4 c1
1.2. Product and Process Requirements c4s1 c1, c6
1.3. Functional and Nonfunctional Requirements c4s1 c12
1.4. Emergent Properties c10s1
1.5. Quantifiable Requirements c1
1.6. System Requirements and Software Requirements c10s4 c1
2. Requirements Process
2.1. Process Models c4s4 c3
2.2. Process Actors c1, c2, c4, c6
2.3. Process Support and Management c3
2.4. Process Quality and Improvement c22, c23
3. Requirements Elicitation
3.1. Requirements Sources c4s5 c5, c6,c9
3.2. Elicitation Techniques c4s5 c6
4. Requirements Analysis
4.1. Requirements Classification c4s1 c12
4.2. Conceptual Modeling c4s5 c11
4.3. Architectural Design and Requirements Allocation c10s4 c17
4.4. Requirements Negotiation c4s5 c7
4.5. Formal Analysis c12s5
5. Requirements Specification
5.1. System Definition Document c4s2 c10
c4s2, c12s2,
5.2. System Requirements Specification c12s3, c12s4, c10
c12s5
5.3. Software Requirements Specification c4s3 c10
6. Requirements Validation
6.1. Requirements Reviews c4s6 c15
6.2. Prototyping c4s6 c13
6.3. Model Validation c4s6 c15
6.4. Acceptance Tests c4s6 c15
1-16 SWEBOK® Guide V3.0
Sommerville 2011
Wiegers 2003
[2*]
[1*]
7. Practical Considerations
7.1. Iterative Nature of the Requirements Process c4s4 c3, c16
7.2. Change Management c4s7 c18, c19
7.3. Requirements Attributes c4s1 c12, c14
7.4. Requirements Tracing c20
7.5. Measuring Requirements c4s6 c18
8. Software Requirements Tools c21