Sunteți pe pagina 1din 16

CHAPTER 1

SOFTWARE REQUIREMENTS

ACRONYMS does not imply, however, that a software engineer


could not perform the function.
Confidentiality, Integrity, and A risk inherent in the proposed breakdown is
CIA
Availability that a waterfall-like process may be inferred. To
DAG Directed Acyclic Graph guard against this, topic 2, Requirements Process,
FSM Functional Size Measurement is designed to provide a high-level overview of the
International Council on Systems requirements process by setting out the resources
INCOSE and constraints under which the process operates
Engineering
and which act to configure it.
UML Unified Modeling Language An alternate decomposition could use a prod-
SysML Systems Modeling Language uct-based structure (system requirements, soft-
ware requirements, prototypes, use cases, and
so on). The process-based breakdown reflects
INTRODUCTION the fact that the requirements process, if it is to
be successful, must be considered as a process
The Software Requirements knowledge area (KA) involving complex, tightly coupled activities
is concerned with the elicitation, analysis, speci- (both sequential and concurrent), rather than as a
fication, and validation of software requirements discrete, one-off activity performed at the outset
as well as the management of requirements dur- of a software development project.
ing the whole life cycle of the software product. The Software Requirements KA is related
It is widely acknowledged amongst researchers closely to the Software Design, Software Testing,
and industry practitioners that software projects Software Maintenance, Software Configuration
are critically vulnerable when the requirements- Management, Software Engineering Manage-
related activities are poorly performed. ment, Software Engineering Process, Software
Software requirements express the needs and Engineering Models and Methods, and Software
constraints placed on a software product that Quality KAs.
contribute to the solution of some real-world
problem. BREAKDOWN OF TOPICS FOR
The term “requirements engineering” is widely SOFTWARE REQUIREMENTS
used in the field to denote the systematic handling
of requirements. For reasons of consistency, the The breakdown of topics for the Software
term “engineering” will not be used in this KA Requirements KA is shown in Figure 1.1.
other than for software engineering per se.
For the same reason, “requirements engineer,” 1. Software Requirements Fundamentals
a term which appears in some of the literature, [1*, c4, c4s1, c10s1, c10s4] [2*, c1, c6, c12]
will not be used either. Instead, the term “software
engineer” or, in some specific cases, “require- 1.1. Definition of a Software Requirement
ments specialist” will be used, the latter where
the role in question is usually performed by an At its most basic, a software requirement is a
individual other than a software engineer. This property that must be exhibited by something in

1-1
1-2 SWEBOK® Guide V3.0

Figure 1.1. Breakdown of Topics for the Software Requirements KA

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

2.1. Process Models marketing people are often needed to estab-


lish what the market needs and to act as
The objective of this topic is to provide an under- proxy customers.
standing that the requirements process • Regulators: Many application domains, such
as banking and public transport, are regu-
• is not a discrete front-end activity of the soft- lated. Software in these domains must com-
ware life cycle, but rather a process initiated ply with the requirements of the regulatory
at the beginning of a project that continues to authorities.
be refined throughout the life cycle; • Software engineers: These individuals have
• identifies software requirements as configu- a legitimate interest in profiting from devel-
ration items and manages them using the oping the software by, for example, reusing
same software configuration management components in or from other products. If,
practices as other products of the software in this scenario, a customer of a particu-
life cycle processes; lar product has specific requirements that
• needs to be adapted to the organization and compromise the potential for component
project context. reuse, the software engineers must carefully
weigh their own stake against those of the
In particular, the topic is concerned with how customer. Specific requirements, particu-
the activities of elicitation, analysis, specifica- larly constraints, may have major impact on
tion, and validation are configured for different project cost or delivery because they either
types of projects and constraints. The topic also fit well or poorly with the skill set of the
includes activities that provide input into the engineers. Important tradeoffs among such
requirements process, such as marketing and fea- requirements should be identified.
sibility studies.
It will not be possible to perfectly satisfy the
2.2. Process Actors requirements of every stakeholder, and it is the
software engineer’s job to negotiate tradeoffs that
This topic introduces the roles of the people who are both acceptable to the principal stakeholders
participate in the requirements process. This pro- and within budgetary, technical, regulatory, and
cess is fundamentally interdisciplinary, and the other constraints. A prerequisite for this is that all
requirements specialist needs to mediate between the stakeholders be identified, the nature of their
the domain of the stakeholder and that of soft- “stake” analyzed, and their requirements elicited.
ware engineering. There are often many people
involved besides the requirements specialist, each 2.3. Process Support and Management
of whom has a stake in the software. The stake-
holders will vary across projects, but will always This section introduces the project management
include users/operators and customers (who need resources required and consumed by the require-
not be the same). ments process. It establishes the context for the
Typical examples of software stakeholders first topic (Initiation and Scope Definition) of the
include (but are not restricted to) the following: Software Engineering Management KA. Its prin-
cipal purpose is to make the link between the pro-
• Users: This group comprises those who will cess activities identified in 2.1 and the issues of
operate the software. It is often a heteroge- cost, human resources, training, and tools.
neous group involving people with different
roles and requirements. 2.4. Process Quality and Improvement
• Customers: This group comprises those who
have commissioned the software or who rep- This topic is concerned with the assessment of
resent the software’s target market. the quality and improvement of the requirements
• Market analysts: A mass-market product process. Its purpose is to emphasize the key role
will not have a commissioning customer, so the requirements process plays in terms of the
Software Requirements 1-5

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

may result in a richer and more consistent 4. Requirements Analysis


set of requirements than might otherwise [1*, c4s1, c4s5, c10s4, c12s5]
be achievable. However, meetings need to [2*, c7, c11, c12, c17]
be handled carefully (hence the need for a
facilitator) to prevent a situation in which This topic is concerned with the process of ana-
the critical abilities of the team are eroded lyzing requirements to
by group loyalty, or in which requirements
reflecting the concerns of a few outspoken • detect and resolve conflicts between
(and perhaps senior) people that are favored requirements;
to the detriment of others. • discover the bounds of the software and how
• Observation. The importance of software it must interact with its organizational and
context within the organizational environ- operational environment;
ment has led to the adaptation of observa- • elaborate system requirements to derive soft-
tional techniques such as ethnography for ware requirements.
requirements elicitation. Software engineers
learn about user tasks by immersing them- The traditional view of requirements analysis
selves in the environment and observing how has been that it be reduced to conceptual model-
users perform their tasks by interacting with ing using one of a number of analysis methods,
each other and with software tools and other such as the structured analysis method. While
resources. These techniques are relatively conceptual modeling is important, we include the
expensive but also instructive because they classification of requirements to help inform trad-
illustrate that many user tasks and business eoffs between requirements (requirements clas-
processes are too subtle and complex for sification) and the process of establishing these
their actors to describe easily. tradeoffs (requirements negotiation).
• User stories. This technique is commonly Care must be taken to describe requirements
used in adaptive methods (see Agile Meth- precisely enough to enable the requirements to
ods in the Software Engineering Models be validated, their implementation to be verified,
and Methods KA) and refers to short, high- and their costs to be estimated.
level descriptions of required functionality
expressed in customer terms. A typical user 4.1. Requirements Classification
story has the form: “As  a  <role>,  I  want 
<goal/desire>  so  that  <benefit>.” A user Requirements can be classified on a number of
story is intended to contain just enough infor- dimensions. Examples include the following:
mation so that the developers can produce a
reasonable estimate of the effort to imple- • Whether the requirement is functional or
ment it. The aim is to avoid some of the waste nonfunctional (see section 1.3, Functional
that often happens in projects where detailed and Nonfunctional Requirements).
requirements are gathered early but become • Whether the requirement is derived from one
invalid before the work begins. Before a user or more high-level requirements or an emer-
story is implemented, an appropriate accep- gent property (see section 1.4, Emergent
tance procedure must be written by the cus- Properties), or is being imposed directly on
tomer to determine whether the goals of the the software by a stakeholder or some other
user story have been fulfilled. source.
• Other techniques. A range of other techniques • Whether the requirement is on the product
for supporting the elicitation of requirements or the process (see section 1.2, Product and
information exist and range from analyzing Process Requirements). Requirements on the
competitors’ products to applying data min- process can constrain the choice of contrac-
ing techniques to using sources of domain tor, the software engineering process to be
knowledge or customer request databases. adopted, or the standards to be adhered to.
1-8 SWEBOK® Guide V3.0

• The requirement priority. The higher the pri- 4.2. Conceptual Modeling 


ority, the more essential the requirement is
for meeting the overall goals of the software. The development of models of a real-world
Often classified on a fixed-point scale such problem is key to software requirements analy-
as mandatory, highly desirable, desirable, sis. Their purpose is to aid in understanding the
or optional, the priority often has to be bal- situation in which the problem occurs, as well as
anced against the cost of development and depicting a solution. Hence, conceptual models
implementation. comprise models of entities from the problem
• The scope of the requirement. Scope refers domain, configured to reflect their real-world
to the extent to which a requirement affects relationships and dependencies. This topic is
the software and software components. closely related to the Software Engineering Mod-
Some requirements, particularly certain els and Methods KA.
nonfunctional ones, have a global scope in Several kinds of models can be developed.
that their satisfaction cannot be allocated to These include use case diagrams, data flow mod-
a discrete component. Hence, a requirement els, state models, goal-based models, user inter-
with global scope may strongly affect the actions, object models, data models, and many
software architecture and the design of many others. Many of these modeling notations are part
components, whereas one with a narrow of the  Unified  Modeling  Language  (UML).  Use
scope may offer a number of design choices case diagrams, for example, are routinely used
and have little impact on the satisfaction of to depict scenarios where the boundary separates
other requirements. the actors (users or systems in the external envi-
• Volatility/stability. Some requirements will ronment) from the internal behavior where each
change during the life cycle of the soft- use case depicts a functionality of the system.
ware—and even during the development The factors that influence the choice of model-
process itself. It is useful if some estimate ing notation include these:
of the likelihood that a requirement will
change can be made. For example, in a bank- • The nature of the problem. Some types of
ing application, requirements for functions software demand that certain aspects be ana-
to calculate and credit interest to customers’ lyzed particularly rigorously. For example,
accounts are likely to be more stable than a state and parametric models, which are part
requirement to support a particular kind of of SysML [4], are likely to be more impor-
tax-free account. The former reflects a fun- tant for real-time software than for informa-
damental feature of the banking domain (that tion systems, while it would usually be the
accounts can earn interest), while the latter opposite for object and activity models.
may be rendered obsolete by a change to • The expertise of the software engineer. It is
government legislation. Flagging potentially often more productive to adopt a modeling
volatile requirements can help the software notation or method with which the software
engineer establish a design that is more toler- engineer has experience.
ant of change. • The process requirements of the customer
(see section 1.2, Product and Process
Other classifications may be appropriate, Requirements). Customers may impose their
depending upon the organization’s normal prac- favored notation or method or prohibit any
tice and the application itself. with which they are unfamiliar. This factor
There is a strong overlap between requirements can conflict with the previous factor.
classification and requirements attributes (see
section 7.3, Requirements Attributes). Note that, in almost all cases, it is useful to start
by building a model of the software context. The
software context provides a connection between
the intended software and its external environment.
Software Requirements 1-9

This is crucial to understanding the software’s con- 4.4. Requirements Negotiation


text in its operational environment and to identify-
ing its interfaces with the environment. Another term commonly used for this subtopic
This subtopic does not seek to “teach” a particu- is “conflict resolution.” This concerns resolv-
lar modeling style or notation but rather provides ing problems with requirements where conflicts
guidance on the purpose and intent of modeling. occur between two stakeholders requiring mutu-
ally incompatible features, between requirements
4.3. Architectural Design and Requirements  and resources, or between functional and non-
Allocation functional requirements, for example. In most
cases, it is unwise for the software engineer to
At some point, the solution architecture must make a unilateral decision, so it becomes neces-
be derived. Architectural design is the point at sary to consult with the stakeholder(s) to reach a
which the requirements process overlaps with consensus on an appropriate tradeoff. It is often
software or systems design and illustrates how important, for contractual reasons, that such deci-
impossible it is to cleanly decouple the two tasks. sions be traceable back to the customer. We have
This topic is closely related to Software Structure classified this as a software requirements analy-
and Architecture in the Software Design KA. In sis topic because problems emerge as the result
many cases, the software engineer acts as soft- of analysis. However, a strong case can also be
ware architect because the process of analyzing made for considering it a requirements validation
and elaborating the requirements demands that topic (see topic 6, Requirements Validation).
the architecture/design components that will be Requirements prioritization is necessary, not
responsible for satisfying the requirements be only as a means to filter important requirements,
identified. This is requirements allocation–the but also in order to resolve conflicts and plan for
assignment to architecture components respon- staged deliveries, which means making complex
sible for satisfying the requirements. decisions that require detailed domain knowledge
Allocation is important to permit detailed anal- and good estimation skills. However, it is often
ysis of requirements. Hence, for example, once a difficult to get real information that can act as
set of requirements has been allocated to a com- a basis for such decisions. In addition, require-
ponent, the individual requirements can be further ments often depend on each other, and priori-
analyzed to discover further requirements on how ties are relative. In practice, software engineers
the component needs to interact with other com- perform requirements prioritization frequently
ponents in order to satisfy the allocated require- without knowing about all the requirements.
ments. In large projects, allocation stimulates a Requirements prioritization may follow a cost-
new round of analysis for each subsystem. As an value approach that involves an analysis from
example, requirements for a particular braking the stakeholders defining in a scale the benefits
performance for a car (braking distance, safety in or the aggregated value that the implementa-
poor driving conditions, smoothness of applica- tion of the requirement brings them, versus the
tion, pedal pressure required, and so on) may be penalties of not having implemented a particular
allocated to the braking hardware (mechanical requirement. It also involves an analysis from
and hydraulic assemblies) and an antilock braking the software engineers estimating in a scale the
system (ABS). Only when a requirement for an cost of implementing each requirement, relative
antilock braking system has been identified, and to other requirements. Another requirements pri-
the requirements allocated to it, can the capabili- oritization approach called the analytic hierarchy
ties of the ABS, the braking hardware, and emer- process involves comparing all unique pairs of
gent properties (such as car weight) be used to requirements to determine which of the two is of
identify the detailed ABS software requirements. higher priority, and to what extent.
Architectural design is closely identified with
conceptual modeling (see section 4.2, Conceptual
Modeling).
1-10 SWEBOK® Guide V3.0

4.5. Formal Analysis a document that can be systematically reviewed,


evaluated, and approved. For complex systems,
Formal analysis concerns not only topic 4, but particularly those involving substantial nonsoft-
also sections 5.3 and 6.3. This topic is also related ware components, as many as three different
to Formal Methods in the Software Engineering types of documents are produced: system defini-
Models and Methods Knowledge Area. tion, system requirements, and software require-
Formal analysis has made an impact on some ments. For simple software products, only the
application domains, particularly those of high- third of these is required. All three documents are
integrity systems. The formal expression of described here, with the understanding that they
requirements requires a language with formally may be combined as appropriate. A description of
defined semantics. The use of a formal analysis systems engineering can be found in the Related
for requirements expression has two benefits. Disciplines of Software Engineering chapter of
First, it enables requirements expressed in the this Guide.
language to be specified precisely and unambigu-
ously, thus (in principle) avoiding the potential 5.1. System Definition Document
for misinterpretation. Secondly, requirements can
be reasoned over, permitting desired properties This document (sometimes known as the user
of the specified software to be proven. Formal requirements document or concept of operations
reasoning requires tool support to be practicable document) records the system requirements. It
for anything other than trivial systems, and tools defines the high-level system requirements from
generally fall into two types: theorem provers or the domain perspective. Its readership includes
model checkers. In neither case can proof be fully representatives of the system users/customers
automated, and the level of competence in formal (marketing may play these roles for market-
reasoning needed in order to use the tools restricts driven software), so its content must be couched
the wider application of formal analysis. in terms of the domain. The document lists the
Most formal analysis is focused on relatively system requirements along with background
late stages of requirements analysis. It is gener- information about the overall objectives for the
ally counterproductive to apply formalization system, its target environment, and a statement of
until the business goals and user requirements the constraints, assumptions, and nonfunctional
have come into sharp focus through means such requirements. It may include conceptual models
as those described elsewhere in section 4. How- designed to illustrate the system context, usage
ever, once the requirements have stabilized and scenarios, and the principal domain entities, as
have been elaborated to specify concrete proper- well as workflows.
ties of the software, it may be beneficial to for-
malize at least the critical requirements. This per- 5.2. System Requirements Specification
mits static validation that the software specified
by the requirements does indeed have the proper- Developers of systems with substantial software
ties (for example, absence of deadlock) that the and nonsoftware components—a modern air-
customer, users, and software engineer expect it liner, for example—often separate the descrip-
to have. tion of system requirements from the description
of software requirements. In this view, system
5. Requirements Specification requirements are specified, the software require-
[1*, c4s2, c4s3, c12s2–5] [2*, c10] ments are derived from the system requirements,
and then the requirements for the software com-
For most engineering professions, the term “spec- ponents are specified. Strictly speaking, system
ification” refers to the assignment of numerical requirements specification is a systems engineer-
values or limits to a product’s design goals. In ing activity and falls outside the scope of this
software engineering, “software requirements Guide.
specification” typically refers to the production of
Software Requirements 1-11

5.3. Software Requirements Specification 6. Requirements Validation


[1*, c4s6] [2*, c13, c15]
Software requirements specification establishes
the basis for agreement between customers and The requirements documents may be subject to val-
contractors or suppliers (in market-driven proj- idation and verification procedures. The require-
ects, these roles may be played by the marketing ments may be validated to ensure that the software
and development divisions) on what the software engineer has understood the requirements; it is
product is to do as well as what it is not expected also important to verify that a requirements docu-
to do. ment conforms to company standards and that it
Software requirements specification permits is understandable, consistent, and complete. In
a rigorous assessment of requirements before cases where documented company standards or
design can begin and reduces later redesign. It terminology are inconsistent with widely accepted
should also provide a realistic basis for estimat- standards, a mapping between the two should be
ing product costs, risks, and schedules. agreed on and appended to the document.
Organizations can also use a software require- Formal notations offer the important advantage
ments specification document as the basis for of permitting the last two properties to be proven
developing effective verification and validation (in a restricted sense, at least). Different stake-
plans. holders, including representatives of the customer
Software requirements specification provides and developer, should review the document(s).
an informed basis for transferring a software prod- Requirements documents are subject to the same
uct to new users or software platforms. Finally, it configuration management practices as the other
can provide a basis for software enhancement. deliverables of the software life cycle processes.
Software requirements are often written in When practical, the individual requirements are
natural language, but, in software requirements also subject to configuration management, gener-
specification, this may be supplemented by for- ally using a requirements management tool (see
mal or semiformal descriptions. Selection of topic 8, Software Requirements Tools).
appropriate notations permits particular require- It is normal to explicitly schedule one or more
ments and aspects of the software architecture to points in the requirements process where the
be described more precisely and concisely than requirements are validated. The aim is to pick up
natural language. The general rule is that nota- any problems before resources are committed to
tions should be used that allow the requirements addressing the requirements. Requirements vali-
to be described as precisely as possible. This is dation is concerned with the process of examin-
particularly crucial for safety-critical, regulatory, ing the requirements document to ensure that it
and certain other types of dependable software. defines the right software (that is, the software
However, the choice of notation is often con- that the users expect).
strained by the training, skills, and preferences of
the document’s authors and readers. 6.1. Requirements Reviews
A number of quality indicators have been
developed that can be used to relate the quality Perhaps the most common means of validation
of software requirements specification to other is by inspection or reviews of the requirements
project variables such as cost, acceptance, per- document(s). A group of reviewers is assigned
formance, schedule, and reproducibility. Quality a brief to look for errors, mistaken assumptions,
indicators for individual software requirements lack of clarity, and deviation from standard prac-
specification statements include imperatives, tice. The composition of the group that conducts
directives, weak phrases, options, and continu- the review is important (at least one represen-
ances. Indicators for the entire software require- tative of the customer should be included for a
ments specification document include size, read- customer-driven project, for example), and it may
ability, specification, depth, and text structure. help to provide guidance on what to look for in
the form of checklists.
1-12 SWEBOK® Guide V3.0

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

dimensions of the requirement (see section 4.1, 7.5. Measuring Requirements


Requirements Classification) and the verification
method or relevant acceptance test plan section. As a practical matter, it is typically useful to have
It may also include additional information, such some concept of the “volume” of the require-
as a summary rationale for each requirement, the ments for a particular software product. This
source of each requirement, and a change history. number is useful in evaluating the “size” of a
The most important requirements attribute, how- change in requirements, in estimating the cost of
ever, is an identifier that allows the requirements a development or maintenance task, or simply for
to be uniquely and unambiguously identified. use as the denominator in other measurements.
Functional size measurement (FSM) is a tech-
7.4. Requirements Tracing nique for evaluating the size of a body of func-
tional requirements.
Requirements tracing is concerned with recover- Additional information on size measurement
ing the source of requirements and predicting the and standards will be found in the Software Engi-
effects of requirements. Tracing is fundamental neering Process KA.
to performing impact analysis when requirements
change. A requirement should be traceable back- 8. Software Requirements Tools
ward to the requirements and stakeholders that
motivated it (from a software requirement back Tools for dealing with software requirements fall
to the system requirement(s) that it helps satisfy, broadly into two categories: tools for modeling
for example). Conversely, a requirement should and tools for managing requirements.
be traceable forward into the requirements and Requirements management tools typically sup-
design entities that satisfy it (for example, from port a range of activities—including documenta-
a system requirement into the software require- tion, tracing, and change management—and have
ments that have been elaborated from it, and on had a significant impact on practice. Indeed, trac-
into the code modules that implement it, or the ing and change management are really only prac-
test cases related to that code and even a given ticable if supported by a tool. Since requirements
section on the user manual which describes the management is fundamental to good require-
actual functionality) and into the test case that ments practice, many organizations have invested
verifies it. in requirements management tools, although
The requirements tracing for a typical proj- many more manage their requirements in more
ect will form a complex directed acyclic graph ad hoc and generally less satisfactory ways (e.g.,
(DAG) (see Graphs in the Computing Founda- using spreadsheets).
tions KA) of requirements. Maintaining an up-to-
date graph or traceability matrix is an activity that
must be considered during the whole life cycle
of a product. If the traceability information is not
updated as changes in the requirements continue
to happen, the traceability information becomes
unreliable for impact analysis.
Software Requirements 1-15

MATRIX OF TOPICS VS. REFERENCE MATERIAL

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

S-ar putea să vă placă și