You are on page 1of 382

INTRODUCTION

including artificial intelligence (AI), machine


ACRONYMS learning (ML) and the Internet of Things
(IoT), have been incorporated into the
KA Knowledge Area
foundation KAs.
SWEBOK Software Engineering Body of
Knowledge
To reflect areas that are becoming
Publication of the 2014 version of the Guide particularly important in modern software
to the Software Engineering Body of engineering, the following KAs have been
Knowledge (SWEBOK Guide V3) was a added: the Software Architecture KA,
major milestone in establishing software Software Security KA and Software
engineering as a recognized engineering Engineering Operations KA.
discipline. The goal of developing this update
This Guide, written under the auspices of the
(Version 4) to the SWEBOK Guide is to
Professional and Educational Activities
improve the Guide’s currency, readability,
Board of the IEEE Computer Society,
consistency and usability. The content of the
represents a next step in the evolution of the
Guide consists of 18 knowledge areas (KAs)
software engineering profession.
followed by several appendixes. A KA is an
identified area of software engineering WHAT IS SOFTWARE ENGINEERING?
defined by its knowledge requirements and
described in terms of its component IEEE Std. 610.12-1990 Glossary of Software
processes, practices, inputs, outputs, tools Engineering Terminology and
and techniques. Three appendixes provide, ISO/IEC/IEEE Systems and Software
respectively, the specifications for the KA Engineering Vocabulary (SEVOCAB)
descriptions, an annotated set of relevant defines software engineering as “the
standards for each KA, and a list of application of a systematic, disciplined,
references cited in the Guide. quantifiable approach to the development,
operation, and maintenance of software; that
All KAs have been updated to reflect changes is, the application of engineering to
in software engineering since the publication software.”1Historically, software engineering
of the Guide V3, including modern has been defined in various ways, such as
development practices, new techniques, and “the practical application of scientific
the advancement of standards. One knowledge to the design and construction of
significant change is that Agile and DevOps computer programs and the associated
have been incorporated into almost all KAs documentation required to develop, operate,
because these models have been widely and maintain them” [1] and “the
accepted since the previous publication of the technological and managerial discipline
Guide. Agile models typically involve concerned with systematic production and
frequent demonstrations of working software maintenance of software products that are
to a customer in short, iterative cycles. Agile developed and modified on time and within
practices exist across KAs. Furthermore, cost estimates” [2]. Although these
emerging platforms and technologies, definitions differ in detail, they have an

1
http://pascal.computer.org/sev_display/index.action.

Introduction 0–1 ©
IEEE – SWEBOK Guide V3
essential commonality in that they both deal to extend human knowledge. Effective
with software development and maintenance. requirements elicitation techniques, design
Furthermore, the application of scientific principles like cohesion and coupling,
knowledge (mentioned in the first definition) appropriate branch-merge strategies,
can be described as a technological discipline conducting a proper peer review, and
(a phrase used in the second definition). As assessing the cost of quality are a few
“scientific” implies a systematic and examples of critical software engineering
quantifiable approach, the initial definition practices that are of little or no concern to
also expresses an idea common in past computer science. In engineering, science
definitions of the discipline. and practice are applied to generate potential
solutions to the real-world problem, and
Software engineering occupies a position
engineering economics is used to identify the
between the mathematical and physical
most cost-effective one. In the same way that
disciplines of computer science and
it would not make sense to send a chemist to
technology on the one hand and the work of
applying those findings to solve the problems solve a chemical engineering problem, it does
not make sense to send a computer scientist
of particular application domains on the other
to solve a software engineering problem.
[2]. Science is about discovering new things.
On the other hand, engineering is about In addition to computer science, software
applying that knowledge to solve real-world engineering is related to several other
problems cost-effectively. As such, the disciplines and professional areas, such as
engineering discipline of a given scientific project management, quality management,
field requires skills and knowledge about industrial engineering, dependability
relevant “practice.” Further, as engineering engineering, and safety and security
concerns cost-effective solutions to real- engineering.
world problems, all engineering disciplines
involve engineering economics, which is the WHAT ARE THE OBJECTIVES OF THE
analysis of theoretically possible solutions to SWEBOK GUIDE?
identify the most cost-effective one. In The Guide should not be confused with the
essence, this Guide distills the relevant theory body of knowledge itself, which exists in the
of computer science into the two foundation published literature. The Guide’s purpose is
KAs, while the remaining KAs catalog the to describe the generally accepted portion of
practice and engineering economics of the body of knowledge, organize that portion,
software engineering. and provide topical access to it.
Software engineering techniques can be
viewed as specializations of techniques of The SWEBOK Guide was established with
more general disciplines, such as project the following five objectives:
management, systems engineering and 1. To promote a consistent view of
quality management [2]. Furthermore, a software engineering worldwide
software project must implement 2. To specify the scope and clarify the
requirements imposed by cross-cutting place of software engineering with
disciplines such as dependability and safety. respect to other disciplines, such as
Software engineering and computer science computer science, project
are related but distinct in the same way management, computer engineering
chemical engineering and chemistry are and mathematics
related but distinct. Scientific disciplines, 3. To characterize the contents of the
such as computer science and chemistry, aim software engineering discipline

Introduction 0–2 ©
IEEE – SWEBOK Guide V3
4. To provide topical access to the 13. Software Security
Software Engineering Body of 14. Software Engineering Economics
Knowledge 15. Software Engineering Professional
5. To provide a foundation for Practice
curriculum development and for 16. Computing Foundations
individual certification and licensing 17. Mathematical Foundations
materials
The first objective, to promote a consistent 18. Engineering Foundations
worldwide view of software engineering, was
supported by a development process that In specifying the scope of the discipline, it is
engaged about NNNN reviewers from also important to identify disciplines that
NNNN countries. More information intersect with software engineering. To this
regarding the development process can be end, the SWEBOK V4 Guide continues to
found at www.swebok.org. Professional and recognize seven related disciplines, listed in
learned societies and public agencies Table I.2. Software engineers should, of
involved in software engineering were course, be knowledgeable about these
contacted, made aware of this project to disciplines (and KA descriptions in this
update the SWEBOK Guide, and invited to Guide might refer to them). However,
participate in the review process. Associate characterizing the knowledge of related
editors were recruited from North America, disciplines is not an objective of the
the Pacific Rim Europe, and Asia. SWEBOK Guide.
Presentations on the project were made at
various international venues. Table I.2. Related disciplines
The second objective, to specify the scope of 1. Computer engineering
software engineering, underlies the 2. Computer science
fundamental organization of the Guide. 3. General management
Material that falls within this discipline is 4. Mathematics
organized into the 17 KAs listed in Table I.1.
5. Project management
Each KA is treated as a chapter in this Guide.
6. Quality management
7. Systems engineering
Table I.1. The 17 SWEBOK KAs
1. Software Requirements The relevant elements of computer science
2. Software Architecture and mathematics are presented in the
3. Software Design Computing Foundations KA and
4. Software Construction Mathematical and Engineering Foundations
5. Software Testing KAs of the Guide (Chapters 16 and 17).
6. Software Engineering Operations
HIERARCHICAL ORGANIZATION
7. Software Maintenance
8. Software Configuration Management The organization of the KA chapters supports
the third project objective — to characterize
9. Software Engineering Management
the contents of software engineering. The
10. Software Engineering Models and detailed specifications provided by the
Methods project’s editorial team to the associate
11. Software Engineering Process editors regarding the contents of the KA
12. Software Quality descriptions can be found in Appendix A.

Introduction 0–3 ©
IEEE – SWEBOK Guide V3
The Guide uses a hierarchical organizational from the Consolidated Reference List as well
structure to decompose each KA into a set of as a matrix connecting the reference
topics with recognizable labels. Each KA materials to the topics covered.
provides a two- or three-level breakdown, Please note that the Guide does not attempt to
which provides a reasonable way to find be comprehensive in its citations. Much
topics of interest. The Guide treats the suitable and excellent material is not
selected topics in a way that is compatible referenced. However, the material included
with major schools of thought and separates in the Consolidated Reference List provides
the topics into subtopics that are generally further information about the topics
found in industry and in software engineering described.
literature and standards. The breakdowns are
not designed for particular application DEPTH OF TREATMENT
domains, business uses, management
philosophies, development methods and so To achieve the Guide’s fifth objective — to
forth. Each topic description is meant only to provide a foundation for curriculum
give the reader a general understanding of the development, certification and licensing —
topic and to enable the reader to find the criterion of generally accepted
reference material. The body of knowledge is knowledge has been applied. This is distinct
found in the reference materials, not in the from advanced and research knowledge (on
Guide. the grounds of maturity) and from specialized
knowledge (on the grounds of generality of
Software plays a core role in various application).
application and technological domains, such
as automotive, legal, health care, and finance. The equivalent term generally recognized
Differences in application domains and comes from the Project Management
business models (e.g., custom applications, Institute:2
and open source applications) and system “Generally recognized means the knowledge
types (e.g., enterprise and cloud systems, and practices described are applicable to
embedded and IoT systems, and AI/ML- most projects most of the time, and there is
based systems) may influence what practices consensus about their value and usefulness.”
are adopted. Major special techniques and
practices specific to certain system types are However, the terms generally accepted and
also discussed in some KAs, especially the generally recognized do not imply that the
Software Requirements KA, the Software designated knowledge should be uniformly
Testing KA, the Software Quality KA, the applied to all software engineering endeavors
Software Security KA and the Computing — each project’s needs determine what
Foundations KA. knowledge to apply, and how. However,
competent, capable software engineers
REFERENCE MATERIAL AND MATRIX should be equipped with this knowledge for
potential application. Therefore, generally
To provide topical access to the knowledge accepted knowledge should be included in
— the fourth project objective — the Guide the study material for the software
identifies authoritative reference material for engineering licensing examination that
each KA. In addition, Appendix C provides a graduates take after gaining four years of
Consolidated Reference List for the entire work experience. Although this criterion is
Guide. Each KA includes relevant references

2 Project Management Institute, 2013, www.pmi.org.


A Guide to the Project Management Body of Knowledge, 5th ed.,

Introduction 0–4 ©
IEEE – SWEBOK Guide V3
specific to the US style of education and does Appendix C contains the consolidated list of
not necessarily apply to other countries, we recommended references cited in the KAs.
deem it useful. (These references are marked with an asterisk
(*) in the text.)
STRUCTURE OF THE KA DESCRIPTIONS
Each chapter provides a description of one of REFERENCES
the KAs. These descriptions are structured as [1] Barry W. Boehm, “Software
follows. Engineering,” IEEE Transactions on
The introduction briefly defines the KA and Computers, Vol. C-25, No. 12, 1976.
presents an overview of its scope and its [2] James W. Moore, “Software Engineering
relationship with other KAs. Standards: A User’s Road Map,” IEEE
Computer Society, 1998.
The breakdown of topics in each KA
constitutes the core of the KA description,
showing the decomposition of the KA into
subareas, topics and subtopics. For each topic
or sub-topic, a short description is given,
along with one or more references.
These reference materials were selected as
the best available presentation of knowledge
related to the topic. A matrix links the topics
to the reference materials.
The last part of each KA description is the list
of recommended references and suggested
further reading. Relevant standards for each
KA are presented in Appendix B of the
Guide.

APPENDIX A. KA DESCRIPTION
SPECIFICATIONS
Appendix A describes the specifications
provided by the editorial team to the associate
editors for the content, recommended
references, format and style of the KA
descriptions.

APPENDIX B. ALLOCATION OF STANDARDS


TO KAS

Appendix B presents an annotated list of the


relevant standards, mostly from the IEEE and
the ISO, for each of the SWEBOK Guide’s
KAs.

APPENDIX C. CONSOLIDATED REFERENCE


LIST

Introduction 0–5 ©
IEEE – SWEBOK Guide V3
CHAPTER 1

SOFTWARE REQUIREMENTS

ACRONYMS If a team does a poor job of determining the


ATDD Acceptance Test Driven requirements, the project, the product or both are
Development likely to suffer from added costs, delays,
cancellations and defects. One reason is that each
BDD Behavior Driven Development software product requirement generally leads to
Confidentiality, Integrity, and many design decisions. Each design decision
CIA generally leads to many code-level decisions.
Availability
Each decision can involve several test decisions,
FSM Functional Size Measurement as well. In other words, determining the
requirements correctly is high-stakes work. If not
International Council on Systems
INCOSE detected and repaired early, missing,
Engineering
misinterpreted and incorrect requirements can
JAD Joint Application Development induce exponentially cascading rework to correct
them.
JRP Joint Requirements Planning
Real-world software projects tend to suffer
RUP Rational Unified Process from two primary requirements-related
problems:
SME Subject Matter Expert
1. incompleteness: stakeholder requirements
SysML Systems Modeling Language exist that are not revealed and communicated
to the software engineers;
TDD Test Driven Development 2. ambiguity: requirements are communicated
UML Unified Modeling Language in a way that is open to multiple
interpretations, with only one possible
interpretation being correct.
INTRODUCTION
Beyond the obvious short-term role
Software requirements should be viewed from requirements play in initial software
two perspectives. The first is as an expression of construction, they also play a less recognized but
the needs and constraints on a software product still important role in long-term maintenance.
or project that contribute to the solution of a real- Upon receiving software without any supporting
world problem. The second is that of the documentation, a software engineer has several
activities necessary to develop and maintain the means to determine what that code does, such as
requirements for a software product and for the execute it, step through it with a debugger, hand-
project that constructs it. Both perspectives are execute it, statically analyze it, and so on. The
presented in this knowledge area (KA). challenge is determining what that code is
intended to do. What is generally referred to as a
14-2 SWEBOK® Guide V4.0

bug — but is better called a defect — is simply architecture, design and construction work
an observable difference between what the occurs in subsequent phases. Under some
software is intended to do and what it does. The iterative life cycles, initial, high-level
role of requirements documentation throughout requirements work is done during an Inception
the service life of the software is to capture and phase, and further detailing is done during one or
communicate intent for software engineers who more Elaboration phases. In an Agile life cycle,
maintain the code but might not have been its requirements work is done incrementally, just in
original authors. time, as each additional element of functionality
The Software Requirements KA concerns is constructed.
developing software requirements and managing The whats and hows of software requirements
those requirements over the software’s service work on a project should be determined by the
life. This KA provides an understanding that nature of the software constructed, not by the life
software requirements: cycle under which it is constructed. Insofar as
● are not necessarily a discrete front-end requirements documentation captures and
activity of the software development life communicates the software’s intent, downstream
cycle but rather a process initiated at a maintainers should not be able to discern the life
project’s beginning that often continues to be cycle used in earlier development from the form
refined throughout the software’s entire of those requirements alone.
service life; This KA is also related, but somewhat less so,
● need to be tailored to the organization and to the Software Configuration Management,
project context. Software Engineering Management and
Software Quality KAs. Software CM approaches
The term requirements engineering is often can be applied to trace and manage requirements;
used to denote the systematic handling of software quality looks at how well formed the
requirements. For consistency, the term requirements are, and engineering management
engineering will not be used in this KA other can use the status of requirements to evaluate the
than for software engineering per se. completion of the project.
The Software Requirements KA is most
closely related to the Software Architecture, BREAKDOWN OF TOPICS FOR
Software Design, Software Construction, SOFTWARE REQUIREMENTS
Software Testing, and Software Maintenance
KAs, as well as to the models topic in the The topic breakdown for the Software
Software Engineering Models and Methods KA, Requirements KA is shown in Figure 1.1.
in that there can be high value in specifying
requirements in model form. 1. Software Requirements
This KA is also related to the Software Life Fundamentals
Cycles topic in the Software Engineering Process
KA, in that this KA’s focus is on what and how 1.1. Definition of a Software Requirement [1*,
requirements work can and should be done, c1pp5-6] [2*, c4p102]
whereas the project’s life cycle determines when Formally, a software requirement has been
that work is done. For example, in a waterfall life defined as [28]:
cycle, all requirements work is essentially done ● a condition or capability needed by a user to
in a discrete Requirements phase and is expected solve a problem or achieve an objective;
to be substantially complete before any
Software Requirements 1-3

Software
Requirements

Software Requirements Software


Requirements Requirements Requirements Requirements Practical
Requirements Elicitation Analysis Specification Validation Management Considerations Requirements
Fundamentals Activities Tools

Definition of a Requirements Basic Unstructured Requirements Requirements Iterative Nature Requirements


Software Sources Requirements Natural Reviews Scrubbing of the Management
Requirement Common Analysis Language Simulation and Requirements Requirements Tools
Categories of Requirements Economics of Requirements Execution Change Process Requirements
Software Elicitation Quality of Service Specification Requirements Modeling
Control
Techniques Prototyping Prioritization
Requirements Constraints Structured Scope Tools
Software Product Formal Natural Matching Requirements Functional
Requirements and Analysis Language Tracing Test Case
Software Project Requirements Generation
Addressing Specification Requirements
Requirements Conflict in Stability and Tools
Functional Requirements Acceptance Volatility
Requirements Criteria-based
Requirements Measuring
Nonfunctional Specification Requirements
Requirements
Model-Based Requirements
Technology Requirements Process Quality
Constraints Specification and Improvement
Quality of Service Additional
Constraints Attributes of
Why Categorize Requirements
Requirements
Incremental and
This Way? Comprehensive
System Requirements Requirements
and Specification
Software Requirements
Derived
Requirements
Software Requirements
Activities

Figure 1.1. Breakdown of Topics for the Software Requirements KA


● a condition or capability that must be met or are involved or connected with some aspect of the
possessed by a system or system component to environment in which the software will operate.
satisfy a contract, standard, specification or
other formally imposed document; Clients, customers and users usually impose
● a documented representation or capability as in requirements. However, other third parties, like
(1) or (2) above. regulatory authorities and, in some cases, the
software organization or the project itself, might
also impose requirements. (See also [5, c1] [6, c1]
This formal definition is extended in this KA to [9, c4].)
include expressions of a software project’s needs
and constraints. 1.2. Categories of Software Requirements [1*,
c1pp7-12] [2*, s4.1]
At its most basic, a software requirement is a Figure 1.2 shows the categories of software
property that must be exhibited to solve a real-world requirements defined in this KA and the
problem. It might aim to automate all or part of a relationships among those categories. (See also [5,
task supporting an organization’s business policies c1] [6, c1] [9, c4].) Each category is further
and processes, correct existing software’s described below.
shortcomings, or control a device — just a few of
the many problems for which software solutions are 1.3. Software Product Requirements and Software
possible. Project Requirements [1*, c1pp14-15]
Software product requirements specify the
Business policies and processes, as well as device software’s expected form, fit or function. Software
functions, are often very complex. By extension, project requirements — also called process
software requirements are often a complex requirements or, sometimes business
combination of requirements from various requirements— constrain the project that constructs
stakeholders at different organizational levels who the software. Project requirements often constrain
cost, schedule and/or staffing but can also constrain
other aspects of a software project, such as testing
SWEBOK® Guide V4.0

environments, data migration, user training, and ‘listen,’ ‘syn sent,’ ‘established,’ ‘closing,’ . . . ,” and
maintenance. Software project requirements can be “if the time-to-live of a Segment reaches zero, that
captured in a project charter or other high-level Segment shall be deleted.” (See [5, c1] [6, c10] [9,
project initiation document. They are most relevant c4].)
to how the project is managed (see the Software
Engineering Management KA) or what life cycle 1.5. Nonfunctional Requirements [1*, c1pp10-11]
process should be used (see the Software [2*, s4.1.2]
Engineering Process KA). This KA does not discuss Nonfunctional requirements in some way constrain
software project requirements further. the technologies to be used in the implementation:
What computing platform(s)? What database
engine(s)? How accurate do results need to be? How
quickly must results be presented? How many
records of a certain type need to be stored? Some
nonfunctional requirements might relate to the
operation of the software. (See the Operation and
Maintenance KA.) (See also [5, c1] [6, c11] [9, c4].)

The nonfunctional requirements can be further


divided into technology constraints and quality of
service constraints.

1.6. Technology Constraints

These requirements mandate — or prohibit — use of


Figure 1.2. Categories of Software Requirements specific, named automation technologies or defined
infrastructures. Examples are requirements to use
1.4. Functional Requirements [1*, c1p9] [2*, specific computing platforms (e.g., Windows™,
s4.1.1] MacOS™, Android OS™, iOS™), programming
Functional requirements specify observable languages (e.g., Java, C++, C#, Python),
behaviors that the software is to provide — policies compatibility with specific web browsers (e.g.,
to be enforced and processes to be carried out. Chrome™, Safari™, Edge™), given database
Example policies in banking software might be “an engines (e.g., Oracle™, SQL Server™, MySQL™),
account shall always have at least one customer as and general technologies (e.g., Reduced Instruction
its owner,” and “the balance of an account shall Set Computer (RISC), Relational Database. A
never be negative.” Example processes could requirement prohibiting use of pointers would be
specify the meanings of depositing money into an another example. (See also [9, c4].)
account, withdrawing money from an account and
transferring money from one account to another. 1.7. Quality of Service Constraints

Even highly technical (nonbusiness-oriented)


software, such as software that implements the These requirements do not constrain the use of
Transmission Control Protocol/Internet Protocol specific, named technologies. Instead, these specify
(TCP/IP) network communications protocol, has acceptable performance levels an automated
policies and processes: “a Port shall be able to exist solution must exhibit. Examples are response time,
with zero, one, or many associated Connections, but throughput, accuracy, reliability and scalability.
a Connection shall exist on exactly one associated ISO/IEC 25010: “System and software engineering
Port,” “acceptable states of a Connection shall be – Systems and software Quality Requirements and
Software Requirements 1-5

Evaluation (SQuaRE) – System and software quality reviewer can focus on just the subset of
models” [27] contains a large list of the kinds of requirements relevant to them.
service qualities that can be relevant for software.
(See also [9, c4].) Security is also a particularly
important topic where requirements tend to be The Perfect Technology Filter originally described
overlooked. (See the Security KA for details on the in [18, c1-4] but also explained in [8] and [9, c4]
kinds of specific security requirements that should helps separate functional from nonfunctional
be considered.) (See also [2*, c13].) requirements. Simply put, functional requirements
are those that would still need to be stated even if a
1.8. Why Categorize Requirements This Way? computer with infinite speed, unlimited memory,
zero cost, no failures, etc., existed on which to
construct the software. All other software product
Categorizing requirements this way is useful for the requirements are constraints on automation
following reasons: technologies and are therefore nonfunctional.

● requirements in one category tend to come from Large systems often span more than one subject
different sources than other categories; matter area, or domain. As explained in [9, c6],
● elicitation techniques often vary by source; recursive design shows how nonfunctional
● analysis techniques vary by category; requirements in a parent domain can become, or can
● specification techniques vary by category; induce, functional requirements in a child domain.
● validation authorities vary by category; For example, a nonfunctional requirement about
● the different categories affect the resulting user security in a parent banking domain can
software in different ways. become or can induce functional requirements in a
child security domain. Similarly, cross-cutting
nonfunctional requirements about auditing and
In addition, organizing the requirements in these transaction management in a parent banking domain
categories is beneficial in the following ways: can become or induce functional requirements in a
child auditing domain and a child transaction
● complexity can be better managed because domain. Decomposing large systems into a set of
different areas can be addressed separately; related domains significantly reduces complexity.
software engineers can deal with policy and
process complexities without worrying about 1.9. System Requirements and Software
automation technology issues at the same time Requirements
(and vice versa). One large problem becomes two
smaller ones. This is classic divide and conquer
complexity management; The International Council on Systems Engineering
● distinct areas of expertise can be isolated; (INCOSE) defines a system as “an interacting
stakeholders, not software engineers, are the combination of elements to accomplish a defined
experts in the policies and processes to be objective. These include hardware, software,
automated. Software engineers, not stakeholders, firmware, people, information, techniques,
are the technology experts. When a business facilities, services, and other support elements” [24].
expert is given interspersed functional and
nonfunctional requirements for review or In some cases, it is either useful or mandatory to
validation, they might give up because they don’t distinguish system requirements from software
understand — or even care about — the requirements. System requirements apply to larger
technology issues. The relevant requirements systems — for example, an autonomous vehicle.
Software requirements apply only to an element of
SWEBOK® Guide V4.0

software in that larger system. Some software topics, with requirements management presented as
requirements may be derived from system a single topic. (See also [5, c1] [6, 2].)
requirements. (See also [5, c1].) In other cases, the
software is itself the system of interest, and
hardware and support system are regarded as the
platform or infrastructure, so that the system
requirements are mostly software requirements.

1.10. Derived Requirements

In practice, requirements can be context-sensitive


and can depend on perspective. An external
stakeholder can impose a scope requirement, and
this would be a requirement for the entire project —
even if that project involves hundreds of software Figure 1.3. Software Requirements Activities
engineers. An architect’s decision to use a pipes-
and-filters architecture style would not be a 2. Requirements Elicitation [1*, c6-7] [2*,
requirement from the perspective of the overall s4.3]
project stakeholders, but a design decision. But that
same decision, when seen from the perspective of a The goal of requirements elicitation is to surface
sub-team responsible for constructing a particular candidate requirements. It is also called
filter, would be considered a requirement. requirements capture, requirements discovery or
requirements acquisition. As stated earlier, one
The aerospace industry has long used the term problem in requirements work on real-world
derived requirement to mean a requirement that was software projects is incompleteness. This can be the
not made by a stakeholder external to the overall result of inadequate elicitation. Although there is no
project but that was imposed inside the larger guarantee that a set of requirements is complete,
development team. The architect’s pipes-and-filters well-executed elicitation helps minimize
decision fits this definition. That choice would be incompleteness. (See also [5, c2-3] [6, c3-7].)
seen as a design decision from the point of view of
external stakeholders, but as a requirement for the 2.1. Requirements Sources [1*, c6] [2*, s4.3]
sub-teams responsible for developing each filter. Requirements come — can be elicited — from many
(See also [9, c4].) different sources. All potential requirements sources
should be identified and evaluated. A stakeholder
1.11. Software Requirements Activities [1*, c1pp15- can be defined as any person, group or organization
18] [2*, s4.2] that:
Figure 1.3 shows the requirements development and
management activities. ● is actively involved in the project;
● is affected by the project’s outcome;
Requirements development, as a whole, can be ● can influence the project’s outcome.
thought of as “reaching an agreement on what
software is to be constructed.” In contrast,
requirements management can be considered Typical stakeholders for software projects include
“maintaining that agreement over time.” Each but are not limited to the following:
activity is presented in this KA. Requirements
development activities are presented as separate ● clients — those who pay for the software to be
constructed (e.g., organizational management);
Software Requirements 1-7

● customers — those who decide whether a 2.2. Common Requirements Elicitation Techniques
software product will be put into service; [1*, c7] [2*, s4.3]
● users — those who interact directly or indirectly A wide variety of techniques can be used to elicit
with the software; users can often be further requirements from stakeholders. Some techniques
broken down into distinct user classes that vary work better with certain stakeholder classes than
in frequency of use, tasks performed, skill and others. Common stakeholder elicitation techniques
knowledge level, privilege level, and so on; include the following:
● subject matter experts (SMEs);
● operations staff; ● interviews;
● first-level product support staff; ● meetings, possibly including brainstorming;
● relevant professional bodies; ● Joint Application Development (JAD) [13],
● regulatory agencies; Joint Requirements Planning (JRP) [14] and
● special interest groups; other facilitated workshops;
● people who can be negatively affected if the ● protocol analysis;
project is successful; ● focus groups
● developers. ● questionnaires and market surveys
● exploratory prototyping, including low-fidelity
and high-fidelity user interface prototyping [1*,
Stakeholder classes are groups of stakeholders that c15];
have similar perspectives and needs. Working on a ● user story mapping.
software project in terms of stakeholder classes
rather than with individual stakeholders can produce
important, additional insight. Elicitation can be difficult, and the software engineer
needs to know that (for example) users might have
Many projects benefit from performing a difficulty describing their tasks, leave important
stakeholder analysis to identify as many important information unstated or be unwilling or unable to
stakeholder classes as possible. This reduces the cooperate. Elicitation is not a passive activity. Even
possibility that the requirements are biased toward if cooperative and articulate stakeholders are
better-represented stakeholders and away from less available, the software engineer must work hard to
well-represented stakeholders. The stakeholder elicit the right information. Many product
analysis can also inform negotiation and conflict requirements are tacit or can be found only in
resolution when requirements from one stakeholder information that has yet to be collected.
class conflict with requirements from another. (See
also [5, c3] [6, c3].) Requirements can also be elicited from sources other
than stakeholders. Such sources and techniques
Requirements are not limited to only coming from include the following:
people. Other, non-person requirements sources can
include: ● previous versions of the system;
● defect tracking database for previous versions of
● documentation such as requirements for the system;
previous versions, mission statements, concept ● systems that interface with the system under
of operations; development;
● other systems; ● competitive benchmarking;
● larger business context including organizational ● literature search;
policies and processes; ● Quality Function Deployment (QFD)’s House
● computing environment. of Quality [15];
SWEBOK® Guide V4.0

● observation, where the software engineer ● be binding, meaning that clients are willing to
studies the work and the environment where the pay for it and unwilling not to have it;
work is being done; ● represent true, actual stakeholder needs;
● apprenticing, where the software engineer ● use stakeholder vocabulary;
learns by doing the work; ● be acceptable to all stakeholders.
● usage scenario descriptions;
● decomposition (e.g., capabilities into epics into
features into stories); The overall collection of requirements should be:
● task analysis [16];
● design thinking (empathize, define, ideate, ● complete, — The requirements adequately
prototype, test) [17]; address boundary conditions, exception
● ISO/IEC 25010: “System and software conditions and security needs;
engineering – Systems and software Quality ● internally consistent — No requirement
Requirements and Evaluation (SQuaRE) – conflicts with any other;
System and software quality models” [27]; ● externally consistent — No requirement
● security requirements, as discussed in the conflicts with any source material;
Security KA; ● feasible — A viable, cost-effective solution can
● applicable standards and regulations. be created within cost, schedule, staffing, and
other constraints.
(See also [5, c3] [6, c4-7].)

In some cases, an elicited statement represents a


solution to be implemented rather than the true
3. Requirements Analysis [1*, c8-9] problem to be solved. This risks implementing a
suboptimal solution. The 5-whys technique (e.g.,
Requirements are unlikely to be elicited in their final [3*, c4]) involves repeatedly asking, “Why is this
form. Further investigation is usually needed to the requirement?” to converge on the true problem.
reveal the full, true requirements suggested by the Repetition stops when the answer is, “If that isn’t
originally elicited information. Requirements done, then the stakeholder’s problem has not been
analysis helps software developers understand the solved.” Often, the true problem is reached in two or
meaning and implications of candidate three cycles, but the technique is called 5-whys to
requirements, both individually and in the context of incentivize engineers to push it as far as possible.
the overall set of requirements.
3.2. Economics of Quality of Service Constraints
3.1. Basic Requirements Analysis [1*, c8-9] [3*]
The following list of desirable properties of Quality of service constraints can be particularly
requirements can guide basic requirements analysis. challenging. This is generally because engineers do
The software engineer seeks to establish any of these not consider them from an economic perspective [9,
properties that do not hold yet. Each requirement c4]. Figure 1.4 illustrates the economic perspective
should: of a typical quality of service constraint, such as
capacity, throughput and reliability, where value
● be unambiguous (interpretable in only one increases with performance level. This curve is
way); mirrored vertically for quality of service constraints
● be testable (quantified), meaning that whose value decreases as performance level
compliance or noncompliance can be clearly increases (response time and mean time to repair
demonstrated; would be examples).
Software Requirements 1-9

requirement point can significantly increase value in


some cases.

The cost to achieve a given performance level is


usually a step function. First, for a given investment
level, there is some maximum achievable
performance level. Then, additional investment is
needed, and that further investment enables
performance up to a new, more favorable maximum.
Figure 1.5 illustrates the most cost-effective
performance level — the performance level with the
maximum positive difference between the value at
that performance level and the cost to achieve it.
Figure 1.4. Value as a Function of Level of
Performance

Over the relevant range of performance levels, the


stakeholders have a corresponding value if the
system performs at that level. The value curve has
two important points:

1. Perfection point — This is the most favorable


level of performance, beyond which there is no
additional benefit. Even if the system can
perform better than the perfection point, the
customer cannot use that capacity. For example, Figure 1.5. Most Cost-Effective Level of Performance
a social media system that supports more
members than the world population would have
this excess capacity.
2. Fail point — This is the least favorable level of (See the Software Engineering Economics KA or
performance, beyond which there is no further [3*] for more information on performing economic
reduction in benefit. For example, the social analyses such as this.)
media system might need to support at least a
minimum market share to be viable as a The software engineer should pay particular
platform. attention to positive and negative relationships
between quality of service constraints (e.g., Figure
14-2 in [1*, c14]). Some quality of service
A quantified requirement point, even if stated constraints are mutually supporting; improving
explicitly, is usually arbitrary. It is often based on one’s performance level will automatically improve
what a client feels justified requesting, given what the other’s performance level. For example, the
they are paying for the software. Even if the software more modifiable code is, the more reliable it tends
engineers cannot construct a system that fully to be, as both modifiability and reliability are, to a
achieves the stated requirement point, the software degree, a consequence of how clean the code is. On
typically still has value; it just has less value than the the other hand, the higher the code’s speed, the less
client expected. Further, the ability to exceed the modifiable it might be, because high speed is often
0 SWEBOK® Guide V4.0

achieved through optimizations that make the code schedule, staffing and other project-level
more complex. constraints. There are many useful sources for
information on negotiation and conflict resolution
3.3. Formal Analysis [2*, s12.3.2-12.3.3] [25].
Formal analysis has shown benefits in some
application domains, particularly high-integrity Another approach is to apply product family
systems (e.g., [5, c6]). The formal expression of development (e.g., [20]). This involves separating
requirements depends on the use of a specification requirements into two categories. The first category
language with formally defined semantics. contains the invariant requirements. These are
Formality has two benefits. First, formal requirements that all stakeholders agree on. The
requirements are precise and concise, which (in second category contains the variant requirements,
principle) will reduce the possibility for where conflict exists. The software engineer can
misinterpretation. Second, formal requirements can focus on understanding the range of variations
be reasoned over, permitting desired properties of needed to satisfy all stakeholders. The software can
the specified software to be proved. This permits be designed using design to invariants to
static validation that the software specified by the accommodate the invariant requirements and design
requirements does have the properties (e.g., absence for change to incorporate customization points to
of deadlock) that the customer, users and software configure an instance of the system to best fit
engineer expect it to have. relevant stakeholders. In a simple example, some
users of a weather application require temperatures
This topic is related to Formal Methods in the displayed in degrees Celsius while others require
Software Engineering Models and Methods KA. degrees Fahrenheit.

3.4. Addressing Conflict in Requirements 4. Requirements Specification [1*, c10-14,


c20-26] [2*, s4.4, c5]

When a project has more — and more diverse — Requirements specification concerns recording the
stakeholders, conflicts among the requirements are requirements so they can be both remembered and
more likely. One particularly important aspect of communicated. Requirements specification might
requirements analysis is identifying and managing be the most contentious topic in this KA. Debate
such conflicts (e.g., [6, c17]). Once conflicting centers on questions such as:
requirements have been identified, the engineer may
consider two different approaches to managing that ● should requirements be written down at all?
conflict (and possibly other approaches as well) and ● if requirements are written down, what form
determine the most appropriate course of action. should they take?
● if requirements are written down, should they
One approach is to negotiate a resolution among the also be maintained over time?
conflicting stakeholders. In most cases, it is unwise
for the software engineer to make a unilateral
decision, so it becomes necessary to consult with the There are no standard answers to these questions;
stakeholders to reach a consensus resolution. It is the answer to each can depend on factors such as the
often also important, for contractual reasons, that following:
such decisions be traceable back to the customer. A
specific example is project scope management — ● the software engineer’s familiarity with the
namely, balancing what’s desired in the stated business domain;
software product requirements with what can be ● precedent for this kind of software;
accomplished given the project requirements of cost,
Software Requirements 1-11

● degree of risk (e.g., probability, severity) of recover the requirements that motivated product
incorrect requirements; features in order to assess the impact of proposed
● staff turnover anticipated during the software’s changes. Hence, requirements documentation and
service life of the software; change management become important to long-term
● geographic distribution of the development success. A project’s approach to requirements in
team members; general, and to requirements specification in
● stakeholder involvement over the course of the particular, may evolve over the service life of that
project; software.
● whether the use of a packaged solution or open
source library is anticipated; The most basic recommendation for requirements
● whether any design or construction will be documentation is to base decisions on an audience
outsourced; analysis. Who are the different consumers who will
● the degree of requirements-based testing need information from a requirements specification?
expected; What information will they need? How can that
● effort needed to use a candidate specification information be packaged and presented so that each
technique; consumer can get the information they need with the
● accuracy needed from the requirements-based least effort?
estimates;
There is a degree of overlap and dependency
● extent of requirements tracing necessary, if any;
between requirements analysis and specification.
● contractual impositions of requirements
Use of certain requirements specification techniques
specification content and format.
— particularly model-based requirements
specifications — permit and encourage
requirements analysis that can go beyond what has
As stated in this KA’s introduction, the whats and
already been presented.
hows of software requirements work on a project
should be determined by the nature of the software
Documented software requirements should be
constructed, not by the life cycle under which it is
subject to the same configuration management
constructed. Downstream maintainers should not be
practices as the other deliverables of the software
able to discern the life cycle used in earlier
life cycle processes. (See the Configuration
development from the form of those requirements
Management KA for a detailed discussion.) In
alone. The chosen life cycle’s effect should be
addition, when practical, the individual
limited to the completeness of the requirements at
requirements are also subject to configuration
any point in the project. Under a waterfall life cycle,
management, which is generally supported by a
the requirements are expected to be completely
requirements management tool. (See Topic 8,
specified at the end of the Requirements phase.
Software Requirements Tools.)
Under an Agile life cycle, the requirements are
expected to change, grow, or be eliminated There are several general categories of requirements
continuously and not be complete until the project’s specification techniques, each of which is discussed
end. below. The requirements specification for a given
project may also use various techniques.
Some organizations have a culture of documenting
ISO/IEC/IEEE 29148 [26], as well as [1*, c10-14],
requirements; some do not. Dynamic startup
[5, c4], [6, c16], and many others offer templates for
projects are often driven by a strong product vision
requirements documentation.
and limited resources; their teams might view
requirements documentation as unnecessary 4.1. Unstructured Natural Language Requirements
overhead. But as these products evolve and mature, Specification [1*, c11] [2*, s4.4.1]
software engineers often recognize that they need to
2 SWEBOK® Guide V4.0

Natural language requirements specifications


express requirements in common, ordinary
language. Natural language requirements
specifications can be unstructured or structured.

A typical unstructured natural language


requirements specification is a collection of
statements in natural language, such as, “The system Figure 1.6. Example of Structured Natural Language
shall . . . .” For example, business rules are Specification for a Single Use Case
statements that define or constrain some aspect of
the structure or the behavior of the business to be The user story format, “As a <user> I want
automated. “A student cannot register in next <capability> so that <benefit>” as well as decision
semester’s courses if there remain any unpaid tuition tables are other examples. (See also [5, c4] [6, c12,
fees” is an example of a business rule that serves as c16] [7, c2-5].)
a requirement for a university’s course-registration
software. Some projects can publish a user manual 4.3. Acceptance Criteria-Based Requirements
as a satisfactory requirements specification, Specification
although there are limits to how effective this can be.
(See also [5, c4] [26].)
This general approach includes two specific
4.2. Structured Natural Language Requirements variants: Acceptance Test Driven Development
Specification [1*, c8] [2*, s4.4.2] (ATDD) and Behavior Driven Development (BDD).
Structured natural language requirements
specifications impose constraints on how the ATDD [2*, s3.2.3, s8.2] is a part of the larger Test
requirements are expressed; the goal is to increase Driven Development (TDD) approach. (See the
precision and conciseness. Software Testing KA.). The main idea of TDD is
that test cases precede construction. Therefore, no
The simplest example might be the actor-action new production code is written and no existing code
format. The actor is the entity responsible for is modified unless at least one test case fails, either
carrying out the action, and action is what needs to at the unit test level or at the acceptance test level.
happen. A triggering event might precede the actor, The ATDD process has three steps:
and the action might be followed by an optional
condition or qualification. The statement “When an 1. A unit of functionality (e.g., a user story) is
order is shipped, the system shall create an Invoice selected for implementation.
unless the Order Terms are ‘Prepaid’” uses actor-
action format. The triggering event is “When an 2. One or more software engineers, one or
order is shipped.” The actor is “the system.” The more business domain experts, and
action is “create an Invoice.” The possibly one or more QA/test professionals
condition/qualification is “except the Order Terms meet — before any production design or
are ‘Prepaid’.” construction work is done — to agree on a
set of test cases that must pass to show that
Another example is a use case specification the unit of functionality has been correctly
template, as shown in Figure 1.6. (See [11] for implemented.
guidelines on writing good use case specifications.)
3. At least one of those acceptance test cases
must fail on the existing software. The
existence of at least one failing test case
gives the software engineer(s) permission
Software Requirements 1-13

to create or modify production code to pass teller machine contains enough money in its cash
all of the agreed-upon test cases. This step box, when the Account Holder requests $100, then
might require several iterations. The code the ATM should dispense $100 and the account
may also be refactored during this step. balance should be $400, and the customer’s bank
card should be returned.”
When all acceptance test cases have passed, and
presumably all unit and integration test cases as Another scenario could be that “the account has an
well, then the unit of functionality is deemed to have insufficient balance” and could be detailed as
been completely and correctly implemented. The “Given the account balance is $50, and the
ATDD process returns to step 1, where a new unit of customer’s bank card is valid, and the automated
functionality is selected, and the cycle repeats. teller machine contains enough money in its cash
box, when the Account Holder requests $100, then
ATDD might seem to be a testing technique rather the ATM should not dispense any money, and the
than a requirements specification technique. On the ATM should say there is an insufficient balance, the
other hand, a test case has the general form of balance should remain at $50, and the customer’s
“When given input that looks like X, we expect the bank card should be returned.”
software to produce results that look like Y.” The
key is the underlined phrase, “we expect the The goal of BDD is to have a comprehensive set of
software to produce.” If we simply modify that scenarios for each unit of functionality. In the
phrase to say, “the software shall produce,” as in withdrawing cash situation, additional scenarios for
“When given input that looks like X, the software “The Bank Customer’s bank card has been disabled”
shall produce results that look like Y,” what first and “The ATM does not contain enough money in
looked like a test case now looks like a requirement. its cash box” would be necessary.
Technically, one acceptance test case can
encompass more than one single requirement, but The acceptance test cases are obvious from the BDD
the general idea holds that the ATDD test cases are scenarios.
essentially precise, unambiguous statements of
requirements. Acceptance criteria-based requirements
specification directly addresses the requirements
The BDD approach [19] is slightly more structured, ambiguity problem. Natural languages are
and business domain experts typically prefer it over inherently ambiguous, but test case language is not.
ATDD because it is less technical in appearance. In In acceptance-based criteria requirements
BDD, the unit of functionality is described as a user specification, the requirements are written using test
story, in a form such as this: “As a <role>, I want case language, which is very precise. On the other
<goal/desire> so that <benefit>.” This leads to the hand, this does not inherently solve the
identification and specification of a set of incompleteness problem. However, combining
“scenarios” in this form: “Given <some context> ATDD or BDD with appropriate functional test
[and <possibly more context>], when <stimulus> coverage criteria, such as Domain Testing,
then <outcome> [and <possibly more outcomes>].” Boundary Value Analysis and Pairwise Testing (see
the Software Testing KA), can reduce the likelihood
If the story is “As a bank customer, I want to of requirements incompleteness. (See also [9, c1,
withdraw cash from the Automated Teller Machine c12].)
(ATM) so that I can get money without going to the
bank,” one scenario could be that “the account has a 4.4. Model-Based Requirements Specification [1*,
sufficient balance.” This scenario could be detailed c12] [2*, c5] [4*]
as “Given the account balance is $500, and the Another approach to avoiding the inherent
customer’s bank card is valid, and the automated ambiguity of natural languages is to use modeling
languages such as selected elements of the Unified
4 SWEBOK® Guide V4.0

Modeling Language™ (UML) or Systems Modeling help avoid critical reasoning errors. The term
Language™ (SysML). Much like the blueprints correctness by construction has been used for
used in building construction, these modeling development in this context. (See the Formal
languages can be used in a computing technology- Methods section in the Software Engineering
free manner to precisely and concisely specify Models and Methods KA.)
functional requirements [9, c1-2]. This topic is
closely related to the Software Engineering Models
and Methods KA. Requirements models fall into Generally, the more formal a requirements model is,
two general categories: the less ambiguous it is, so software engineers are
less likely to misinterpret the requirements. More
1. Structural models for specifying policies to be formal requirements models can also be:
enforced: These are logical class models as
described in, for example, [9, c8]. They are also ● more concise and compact;
called conceptual data models, logical data ● easier to translate into code, possibly
models and entity-relationship diagrams. mechanically;
2. Behavioral models for specifying processes to ● used as a basis for deriving acceptance test
be carried out: These models include use case cases.
modeling as described in [9, c7], interaction
diagrams as described in [9, c9] and state One important message in [4*] is that while formal
modeling as described in [9, c10]. Other modeling languages are stronger than semiformal
examples are UML activity diagrams and data- and Agile modeling, formal notations can burden
flow modeling, as described in [1*, c12-13], both the model creator and human readers. Wing’s
[8], [10] and [18]. compromise is to use formally defined
underpinnings (e.g., in Z) for surface syntaxes that
are easier to read and write (e.g., UML statecharts).
Model-based requirements specifications vary in the
degree of model formality. Consider the following: 4.5. Additional Attributes of Requirements [1*,
c27pp462-463]
● Agile modeling (see, for example, [10]) is the Over and above the basic requirements statements
least formal. Agile models can be little more already described, documenting additional attributes
than rough sketches whose goal is to for some or all requirements can be useful. This
communicate important information rather than supplemental detail can help software engineers
demonstrate proper use of modeling notations. better interpret and manage the requirements [6,
In this type of modeling, the effect of the c16]. Possible additional attributes include the
communication is considered more important following:
than the form of the communication.
● Semiformal modeling, for example [9, c6-12], ● tag to support requirements tracing;
provides a definition of the modeling language ● description (additional details about the
semantics ([9, Appendix L]), but that definition requirement);
has not been formally proved to be complete and ● rationale (why the requirement is important);
consistent. ● source (role or name of the stakeholder who
● Formal modeling, for example, Z, the Vienna imposed this requirement);
Development Method (VDM), Specification ● use case or relevant triggering event;
and Description Language (SDL) and [5, c6] ● type (classification or category of the
have very precisely defined semantics that allow requirement — e.g., functional, quality of
specifications to be mechanically analyzed for service);
the presence or absence of specific properties to ● dependencies;
Software Requirements 1-15

● conflicts; 5. Requirements Validation [1*, c17] [2*,


● acceptance criteria; s4.5]
● priority (see Requirements Prioritization later in
this KA); Requirements validation concerns gaining
● stability (see Requirements Stability and confidence that the requirements represent the
Volatility later in this KA); stakeholders’ true needs as they are currently
● whether the requirement is common or a variant understood (and possibly documented). Key
for product family development (e.g., [20]); questions include the following:
● supporting materials;
● the requirement’s change history. ● do these represent all requirements relevant at
this time?
Gilb’s Planguage (short for Planning Language) [7] ● are any stated requirements not representative of
recommends attributes such as scale, meter, stakeholder needs?
minimum, target, outstanding, past, trend and record. ● are these requirements appropriately stated?
● are the requirements understandable, consistent
4.6. Incremental and Comprehensive Requirements and complete?
Specification ● does the requirements documentation conform
to relevant standards?

Projects that explicitly document requirements take Three methods for requirements validation tend to
one of two approaches. One can be called be used: requirements reviews, simulation and
incremental specification. In this approach, a execution, and prototyping. (See also [5, c5] [6, c17]
version of the requirements specification contains [9, c12].)
only the differences — additions, modifications and
deletions — from the previous version. An 5.1. Requirements Reviews [1*, c17pp332-342] [2*,
advantage of this approach is that it can produce a c4p130]
smaller volume of written specifications. The most common way to validate is by reviewing
or inspecting a requirements document. One or more
The other approach can be called comprehensive reviewers are asked to look for errors, omissions,
specification. In this approach, each version’s invalid assumptions, lack of clarity and deviation
requirements specification contains all from accepted practice. Review from multiple
requirements, not just changes from the previous perspectives is preferred:
version. An advantage of this approach is that a
reader can understand all requirements in a single ● clients, customers and users check that their
document instead of having to keep track of wants and needs are completely and accurately
cumulative additions, modifications and deletions represented;
across a series of specifications. ● other software engineers with expertise in
requirements specification check that the
Some organizations combine these two approaches, document is clear and conforms to applicable
producing intermediate releases (e.g., x.1, x.2 and standards;
x.3) that are specified incrementally and major ● software engineers who will do architecture,
releases (e.g., 1.0, 2.0 and 3.0) that are specified design or construction of the software that
comprehensively. The reader never needs to go any satisfies these requirements check that the
further back than the requirements specifications for document is sufficient to support their work.
the last major release to obtain the complete set of
specifications.
6 SWEBOK® Guide V4.0

Providing checklists, quality criteria or a “definition 6. Requirements Management Activities


of done” to the reviewers can guide them to focus on [1*, c27-28] [2*, s4.6]
specific aspects of the requirements specification.
(See Reviews and Audits in the Software Quality Requirements development, as a whole, can be
KA.) thought of as “reaching an agreement on what
software is to be constructed.” (See Figure 1.3.) In
5.2. Simulation and Execution contrast, requirements management can be thought
of as “maintaining that agreement over time.” This
topic examines requirements management. (See also
Nontechnical stakeholders might not want to spend [5, c9].)
time reviewing a specification in detail. Some
specifications can be subjected to simulation or 6.1. Requirements Scrubbing
actual execution in place of or in addition to human The goal of requirements scrubbing [22, c14, c32] is
review. To the extent that the requirements are to find the smallest set of simply stated requirements
formally specified (e.g., in a model-based that will meet stakeholder needs. Doing so will
specification), software engineers can hand interpret reduce the size and complexity of the solution, thus
that specification and “execute” the specification. minimizing the effort, cost and schedule to deliver
Given a sufficient set of demonstration scenarios, it. Requirements scrubbing involves eliminating
stakeholders can be convinced that the specification requirements that:
defines their policies and processes completely and
accurately. (See [9, c12].) ● are out of scope;
● would not yield an adequate return on
5.3. Prototyping [1*, c17p342] [2*, c4p130] investment;
If the requirements specification is not in a form that ● are not that important.
allows direct simulation or execution, an alternative
is to have a software engineer build a prototype that
concretely demonstrates some important dimension Another important part of the process is to simplify
of an implementation. This demonstrates the unnecessarily complicated requirements.
software engineer’s interpretation of those
requirements. In waterfall and other plan-based life cycles,
requirements scrubbing can be coordinated with
Prototypes can help expose software engineers’ requirements reviews for validation; scrubbing
assumptions and, where needed, give useful should occur just before the validation review. In
feedback on why they are wrong. For example, a Agile life cycles, scrubbing happens implicitly in
user interface’s dynamic behavior might be better iteration planning; only the highest-priority
understood through an animated prototype than requirements are brought into a sprint (iteration).
through textual description or graphical models.
However, a danger of prototyping is that cosmetic 6.2. Requirements Change Control [1*, c28] [2*,
issues or quality problems with the prototype can s4.6]
distract the reviewers’ attention from the core Change control is central to managing requirements.
underlying functionality. Prototypes can also be This topic is closely linked to the Software
costly to develop. However, if a prototype helps Configuration Management KA. (Refer to that
engineers avoid the waste caused by trying to satisfy chapter for more information.)
erroneous requirements, its cost can be more easily
justified. Projects using waterfall or other plan-based life
cycles should have an explicit requirements change
control process that includes:
Software Requirements 1-17

● a means to request changes to previously planning is done, then the only work allowed into a
agreed-upon requirements; sprint/iteration will be the work that can reasonably
● an optional impact analysis stage to more be expected to be completed during that
thoroughly examine benefits and costs of a sprint/iteration.
requested change;
● a responsible person or group who decides to 7. Practical Considerations
accept, reject, or defer each requested change;
● a means to notify all affected stakeholders of 7.1. Iterative Nature of the Requirements Process
that decision; [2*, s4.2]
● a means to track accepted changes to closure. Requirements for typical software not only have
wide breadth; they must also have significant depth.
The tension created by simultaneous breadth-wise
All stakeholders must understand and agree that and depth-wise requirements in real-world projects
accepting a change means accepting its impact on often prompts teams to perform requirements
schedule, resources and/or commensurate change in activities iteratively. At some points, elicitation and
scope elsewhere in the project. analysis favor expanding the breadth of
requirements knowledge, while at other points,
In contrast, requirements change management expanding the depth is called for. In practice, it is
happens implicitly in Agile life cycles. In these life highly unlikely that all requirements work can be
cycles, any request to change previously agreed- done in a single pass through the subject matter. (See
upon requirements becomes just another item on the also [6, c2, c9].)
product backlog. A request will only become
“accepted” when it is prioritized highly enough to 7.2. Requirements Prioritization [1*, c16]
make it into an iteration (a sprint). (See also [5, c9] Prioritizing requirements is useful throughout a
[22, c17].) software project because it helps focus software
engineers on delivering the most valuable
6.3. Scope Matching functionality soonest. It also helps support
intelligent trade-off decisions involving conflict
resolution and scope matching. Prioritized
Scope matching [22, c14] involves ensuring that the requirements also help in maintenance beyond the
scope of requirements to architect, design and initial development project itself. Defects raised
construct does not exceed any cost, schedule or against higher-priority requirements should
staffing constraints on the project. When probably be repaired before defects raised against
requirements scope exceeds the cost, schedule or lower-priority ones.
staffing constraints, then either that scope must be
reduced (presumably by removing a sufficient A variety of prioritization schemes are available.
number of the lowest-priority requirements), Answering a few key questions can help engineers
capacity must be increased (by extending the choose the best approach. The first question is
schedule or increasing the budget and/or staffing), or “What factors are relevant in determining the
some appropriate combination thereof must be priority of one requirement over another?” The
negotiated. following factors might be relevant to a project:

In waterfall and other plan-based life cycles, scope ● value; desirability; client, customer and user
matching can be coordinated with requirements satisfaction;
validation; the scope matching should occur just ● undesirability; client, customer and user
before the validation review. In Agile life cycles, as dissatisfaction (Kano model, below);
long as some variant of velocity-based sprint ● cost to deliver;
8 SWEBOK® Guide V4.0

● cost to maintain over the software’s service life; function. (See Measurement Theory in Computing
● technical risk of implementation; Foundations).
● risk that users will not use it even if
implemented. Once the priority of the requirements has been
determined, those priorities must be specified in a
way that can be communicated to all stakeholders.
The Kano model, which underlies [6, c17], shows Several ways to do this are possible, including the
that considering only value, desirability or following:
satisfaction can lead to erroneous priorities. A better
understanding of priorities comes from considering ● enumerated scale (e.g., must have, should have,
how unhappy stakeholders would be if that nice to have);
requirement were not satisfied. For example, ● numerical scale (e.g., 1 . . . 10);
consider a project to develop an email client. Two ● Lists that sort the requirements in decreasing
candidate requirements might relate to: priority order.

1. Having an effective spam filter


2. Handling attachments on emails Effective requirement prioritization focuses on
finding groups of requirements with similar
priorities rather than creating overly rigorous
Prioritization must weigh both the satisfaction users measurement scales or debating small differences.
will experience from having certain features and the
dissatisfaction they will experience if they lack 7.3. Requirements Tracing [1*, c29]
certain features. For example, users are more likely Requirements tracing can serve two potentially
to be happy with an effective spam filter than with useful purposes. One is to serve as an accounting
the ability to handle attachments, so the spam filter exercise that documents consistency between pairs
would be given a higher priority based on the of related project work products. An important
satisfaction criterion. On the other hand, the inability question might be “For each identified software
to handle attachments would make many users requirement, are there identified design elements
extremely unhappy — much more so than not intended to satisfy it?” If no identified design
having an effective spam filter. When considering elements can be found, then either that requirement
happiness, or satisfaction, from implementing is not satisfied in that design or the design is correct
features combined with unhappiness (or and one or more stated requirements can be deleted.
dissatisfaction) from not implementing certain Similarly, “For each identified design element, are
features, developers would generally give handling there identified requirements that cause it to exist?”
attachments a higher priority than the effective spam If no identified requirements can be found, then
filter. either that design element is unnecessary or the
stated requirements are incomplete.
The second key question is “How can we convert the
set of relevant factors into an expression of The other purpose is to assist in impact analysis of a
priority?” The formula proposed requirement change. If a particular system
requirement were to change, for example, that
(𝑉𝑎𝑙𝑢𝑒 ∗ (1 − 𝑅𝑖𝑠𝑘)) system requirement could be traced to its linked
𝑃𝑟𝑖𝑜𝑟𝑖𝑡𝑦 = software requirements. Not all linked software
𝐶𝑜𝑠𝑡
is just one example of an objective function to do so. requirements would need to change. But each
The choice of measurement schemes for the relevant software requirement that would be affected could
factors can impose constraints on the objective be traced to its linked design elements. Again, not
all linked design elements would need to change.
Software Requirements 1-19

But each design element affected could be traced to estimating the cost of development or maintenance
the linked code. The affected software requirements, tasks (e.g., [9, c23]), or simply for use as the
design elements and code units could also be traced denominator in other measurements. Functional size
to their linked test cases for further impact analysis. measurement (FSM) is a technique for evaluating
This helps establish a “footprint” for the volume of the size of a body of functional requirements.
work needed to incorporate that change to the
system requirement. Additional information on size measurement and
standards can be found in the Software Engineering
Software requirements can be traced back to source Process KA.
documentation such as system requirements,
standards documents and other relevant Many quality indicators have been developed that
specifications. Software requirements can also be can be used to relate the quality of software
traced forward to design elements and requirements- requirements specification to other project variables
based test cases. Finally, software requirements can such as cost, acceptance, performance, schedule and
also be traced forward to sections in a user manual reproducibility. Quality indicators for individual
describing the implemented functionality. (See also software requirements and a requirements
[23].) specification document as a whole can be derived
from the desirable properties discussed in Section
7.4. Requirements Stability and Volatility [2*, s4.6] 3.1, Basic Requirements Analysis, earlier in this
Some requirements are very stable; they will KA.
probably never change over the software’s service
life. Some requirements are less stable; they might 7.6. Requirements Process Quality and
change over the service life but might not change Improvement [1*, c31]
during the development project. For example, in a This topic concerns assessing the quality and
banking application, requirements for functions to improvement of the requirements process. Its
calculate and credit interest to customers’ accounts purpose is to emphasize the key role of the
are likely to be more stable than requirements to requirements process in a software product’s cost
support different tax-free accounts. The former and timeliness and in customer satisfaction.
reflects a banking domain’s fundamental feature Furthermore, it helps align the requirements process
(that accounts can earn interest). At the same time, with quality standards and process improvement
the latter may be rendered obsolete by a change in models for software and systems. Process quality
government legislation. Finally, some requirements and improvement are closely related to both the
can be very unstable; they can change during the Software Quality KA and Software Engineering
project — possibly more than once. It is useful to Process KA, comprising the following:
assess the likelihood that a requirement will change
in a given time. Identifying potentially volatile ● requirements process coverage by process
requirements helps the software engineer establish a improvement standards and models;
design more tolerant of change, (e.g., [20]). (See ● requirements process measures and
also [9, c4].) benchmarking;
● improvement planning and implementation;
7.5. Measuring Requirements ● security/CIA (confidentiality, integrity, and
[1*, c19] availability) improvement/planning and
As a practical matter, it may be useful to have some implementation.
concept of the volume of the requirements for a
particular software product. This number is useful in
evaluating the size of a new development project or 8. Software Requirements Tools [1*, c30]
the size of a change in requirements and in
0 SWEBOK® Guide V4.0

Tools that help software engineers deal with The more formally defined a requirements
software requirements fall broadly into three specification language is, the more likely it is that
categories: requirements management tools, functional test cases can be at least partially derived
requirements modeling tools and functional test case mechanically. For example, converting BDD
generation tools, as discussed below. scenarios into test cases is not difficult. Another
example involves state models. Positive test cases
8.1. Requirements Management Tools [1*, can be derived for each defined transition in that
c30pp506-510] kind of model. Negative test cases can be derived
Requirements management tools support various from the state and event combinations that do not
activities, including storing requirements attributes, appear. (See Section 8.2, Testing Tools in the
tracing, document generation and change control. Testing KA, for more information.) A process for
Indeed, tracing and change control might only be deriving test cases from UML requirements models
practical when supported by a tool. Because can be found in [9, c12].
requirements management is fundamental to good
requirements practice, many organizations have In the most general case, such tools can only
invested in tools. However, many more manage their generate test case inputs. Determining an expected
requirements in more ad hoc and generally less result is not always possible. Additional business
satisfactory ways (e.g., spreadsheets). (See also [5, domain expertise might be necessary.
c8].)

8.2. Requirements Modeling Tools [1*, c30p506]


[2*, s12.3.3]
At a minimum, a requirements modeling tool
supports creating, modifying and publishing model-
based requirements specifications. Some tools
extend that by also providing static analysis (e.g.,
syntax correctness, completeness and consistency).
Formal analysis requires tool support to be
practicable for anything other than trivial systems,
and tools generally fall into two categories: theorem
provers or model checkers. In neither case can proof
be fully automated, and the competence in formal
reasoning needed to use the tools restricts the wider
formal analysis. Some tools also dynamically
execute a specification (simulation).

8.3. Functional Test Case Generation Tools

MATRIX OF TOPICS VS. REFERENCE MATERIAL

Sommerville Tockey 2005 Wing 1990


Wiegers 2013 2018 [3*] [4*]
[1*] [2*]
Software Requirements 1-21

1. Software Requirements
Fundamentals
1.1. Definition of a Software c4p102
c1pp5-6
Requirement
1.2. Categories of Software s4.1
c1pp7-12
Requirements
1.3. Software Product Requirements and
c1pp14-15
Software Project Requirements
1.4. Functional Requirements c1p9 s4.1.1
1.5. Nonfunctional Requirements c1pp10-11 s4.1.2
1.6. Technology Constraints
1.7. Quality of Service Constraints
1.8. Why Categorize Requirements This
Way?
1.9. System Requirements and Software
Requirements
1.10. Derived Requirements
1.11. Software Requirements Activities c1pp15-18 s4.2
2. Requirements Elicitation
2.1. Requirements Sources c6 s4.3
2.2. Common Requirements Elicitation s4.3
c7
Techniques
3. Requirements Analysis
3.1. Basic Requirements Analysis c8-9
3.2. Economics of Quality of Service c1-27
Constraints
3.3. Formal Analysis s12.3.2-12.3.3
3.4. Addressing Conflict in
Requirements
4. Requirements Specification
4.1. Unstructured Natural Language s4.4.1
c11
Requirements Specification
4.2. Structured Natural Language s4.4.2
c8
Requirements Specification
4.3. Acceptance Criteria-Based s3.2.3, s8.2
Requirements Specification
4.4. Model-Based Requirements c5 pp8-11
c12
Specification
4.5. Additional Attributes of
c27pp462-463
Requirements
4.6. Incremental and Comprehensive
Requirements Specification
5. Requirements Validation
14-22 SWEBOK® Guide V4.0

5.1. Requirements Reviews c17pp332-342 c4p130


5.2. Simulation and Execution
5.3. Prototyping c17p342 c4p130
6. Requirements Management
Activities
6.1. Requirements Scrubbing
6.2. Requirements Change Control c28 s4.6
6.3. Scope Matching
7. Practical Considerations
7.1. Iterative Nature of the s4.2
Requirements Process
7.2. Requirements Prioritization c16
7.3. Requirements Tracing c29
7.4. Requirements Stability and s4.6
Volatility
7.5. Measuring Requirements c19
7.6. Requirements Process Quality and
c31
Improvement
8. Software Requirements Tools
8.1. Requirements Management Tools c30pp506-510
8.2. Requirements Modeling Tools c30p506 s12.3.3
8.3. Functional Test Case Generation
Tools

FURTHER READING

T. Gilb, Competitive Engineering: A Handbook


for Systems Engineering, Requirements
P. LaPlante, Requirements Engineering for Engineering, and Software Engineering Using
Software and Systems [5]. Planguage [7].

This book is one potential alternative to [1*], This book presents a unique perspective on
offering a comprehensive discussion of software requirements, emphasizing requirements
requirements. precision and completeness along with a strong
business value-driven motivation.

S. Robertson and J. Robertson, Mastering the


Requirements Process: Getting Requirements K. Wiegers, Software Development Pearls:
Right [6]. Lessons from Fifty Years of Software Experience
[21].
This book is another potential alternative to [1*],
offering a comprehensive discussion of software This book is a compendium of important but
requirements. often unrecognized key success factors based on
Software Requirements 1-23

Dr. Wiegers’ extensive real-world experience.


Chapter 2 is specific to software requirements.

REFERENCES
R. Fisher and W. Ury, Getting to Yes [25].
[1*] K. E. Wiegers and J. Beatty, Software
This book is a classic reference on principled Requirements, 3rd ed., Redmond, WA:
negotiation and conflict resolution that serves as Microsoft Press, 2013.
one good basis for addressing inevitable conflict
in software requirements when there are multiple [2*] I. Sommerville, Software Engineering, 10th
stakeholders. ed., New York: Addison-Wesley, 2018.

[3*] S. Tockey, Return on Software:


Maximizing the Return on Your Software
N. Ahmad, Effects of Electronic Communication Investment, Boston, MA: Addison-Wesley,
on the Elicitation of Tacit Knowledge in 2005.
Interview Techniques for Small Software
Developments [29]. [4*] J. M. Wing, “A Specifier’s Introduction to
Formal Methods,” Computer, vol. 23, no. 9,
This doctoral thesis shows how using four 1990, pp. 8, 10-23.
different types of electronic communication
tools to discuss interview agenda details with [5] P. LaPlante, Requirements Engineering for
interviewees before conducting semi-structured Software and Systems, 3rd ed., Boca Raton,
interviews for requirements elicitation improved FL: CRC Press, 2018.
elicitation of tacit (hidden) knowledge.
[6] S. Robertson and J. Robertson, Mastering
the Requirements Process: Getting
Requirements Right, Upper Saddle River,
NJ: Addison-Wesley, 2013.

[7] T. Gilb, Competitive Engineering: A


Handbook for Systems Engineering,
Requirements Engineering, and Software
Engineering Using Planguage, Oxford,
UK: Elsevier Butterworth-Heinemann,
2005.

[8] E. Yourdon, Modern Structured Analysis,


Englewood Cliffs, NJ: Prentice-Hall, 1989.

[9] S. Tockey, How to Engineer Software,


Hoboken, NJ: Wiley, 2019.

[10] S. Ambler, Agile Modeling: Effective


Practices for eXtreme Programming and
the Unified Process, Hoboken, NJ: Wiley,
2002.
4 SWEBOK® Guide V4.0

[11] A. Cockburn, Writing Effective Use Cases, [23] O. Gotel and C. W. Finkelstein, “An
Upper Saddle River, NJ: Addison-Wesley, Analysis of the Requirements Traceability
2000. Problem,” presented at the Proceedings of
the 1st International Conference on
[12] L. Constantine and L. Lockwood, Software Requirements Engineering, 1994.
for Use, Reading, MA: Addison-Wesley,
2000. [24] INCOSE, Systems Engineering Handbook:
A Guide for System Life Cycle Processes
[13] J. Wood and D. Silver, Joint Application and Activities, 3.2.2 ed., San Diego, US:
Development, New York, NY: Wiley, 1995. International Council on Systems
Engineering, 2012.
[14] E. Gottesdiener, Requirements by
Collaboration, Boston, MA: Addison- [25] R. Fisher and W. Ury, Getting to Yes, 3rd
Wesley, 2002. ed., New York, NY: Penguin, 2011.

[15] J. Terninko, Step by Step QFD, 2nd ed., [26] ____, ISO/IEC/IEEE 29148 “Systems and
Boca Raton, FL: CRC Press, 1997. software engineering – Life cycle processes
– Requirements engineering,” International
[16] G. Salvendy, Handbook of Human Factors, Standards Organization, 2018.
4th ed., Hoboken, NJ: Wiley, 2012.
[27] ____, ISO/IEC 25010: “System and
[17] T. Brown and B. Katz, Change by Design: software engineering – Systems and
How Design Thinking Transforms software Quality Requirements and
Organizations and Inspires Innovation, Evaluation (SQuaRE) – System and
Revised and updated ed., New York, NY: software quality models,” International
Harper Collins, 2019. Standards Organization, 2011.

[18] S. McMenamin and J. Palmer, Essential [28] ____, Software and Systems Engineering
Systems Analysis, New York, NY: Yourdon Vocabulary,
Press, 1984. https://pascal.computer.org/sev_display/ind
ex.action.
[19] J. Smart, BDD in Action: Behavior-Driven
Development for the Whole Software [29] N. Ahmad, Effects of Electronic
Lifecycle, Shelter Island, NY: Manning Communication on the Elicitation of Tacit
Publications, 2015. Knowledge in Interview Techniques for
Small Software Developments, doctoral
[20] D. Weiss and C. Lai, Software Product- thesis, University of Huddersfield, 2021.
Line Engineering: A Family-Based
Software Development Process, Reading,
MA: Addison-Wesley, 1999.

[21] K. Wiegers, Software Development Pearls:


Lessons from Fifty Years of Software
Experience, Boston, MA: Addison-Wesley
Professional, 2021.

[22] S. McConnell, Rapid Development,


Redmond, WA: Microsoft Press, 1996.
CHAPTER 2
Software Architecture
ACRONYMS
AD architecture description INTRODUCTION
This chapter considers software architecture from several
architecture description language perspectives: concepts; representation and work products;
ADL
context, process and methods; and analysis and evaluation.
API application programming interface In contrast to the previous edition, this edition creates a
Software Architecture Knowledge Area (KA), separate from the
ASR architecturally significant Software Design KA, because of the significant interest and
requirement growth of the discipline since the 1990s.
IDL interface description language BREAKDOWN OF TOPICS FOR SOFTWARE ARCHITECTURE
MVC model view controller The breakdown of topics for the Software Architecture KA
is shown in Fig. 1.

Fig. 1. Breakdown of Topics for the Software Architecture KA

XXX-X-XXXX-XXXX-X/XX/$XX.00 ©2022 IEEE


1 SOFTWARE ARCHITECTURE FUNDAMENTALS considered fundamental. (2) Architecture considers a system in
its environment. Much like building architecture, software
1.1 The Senses of “Architecture” architecture is outward-looking; it considers a system’s context
Software engineering and related disciplines use many beyond its boundaries to consider the people, organizations,
senses of “architecture”. First, “architecture” often refers to a software, hardware and other devices with which the system
discipline: the art and science of constructing things — in this must interact.
case, software-intensive systems. The discipline involves
concepts, principles, processes and methods the community has 1.2 Stakeholders and Concerns
discovered and adopted. A software system has many stakeholders with varying roles
and interests relative to that system. These varying interests are
Second, architecture refers to the various processes through termed concerns, following Dijkstra’s separation of concerns:
which that discipline is realized. In this KA, we distinguish
architecture design as a specific phase in the life cycle Let me try to explain to you, what to my taste is
encompassing a particular set of activities, and we distinguish it characteristic for all intelligent thinking. It is, that one is
from the wider architecting processes that span the life cycle. willing to study in depth an aspect of one’s subject matter in
Both are discussed in topic Software Architecture Processes. isolation for the sake of its own consistency, all the time
knowing that one is occupying oneself only with one of the
Third, “architecture” refers to the outcome of applying aspects. We know that a program must be correct and we can
architectural design discipline and processes to devise study it from that viewpoint only; we also know that it should
architectures for software systems. Architectures as outcomes be efficient and we can study its efficiency on another day,
are expressed in architecture descriptions. This is discussed in so to speak. In another mood we may ask ourselves whether,
topic Software Architecture Description. The concept of and if so: why, the program is desirable. But nothing is
architecture has evolved, and many definitions are in use today. gained — on the contrary! — by tackling these various
One early definition of architecture, from 1990, emphasized aspects simultaneously. It is what I sometimes have called
software structure: “the separation of concerns”, which, even if not perfectly
Architecture. The organizational structure of a system or possible, is yet the only available technique for effective
component. [from: IEEE Std 610.12–1990, IEEE Glossary of ordering of one’s thoughts, that I know of. This is what I
Software Engineering Terminology] mean by “[focusing] one’s attention upon some aspect”: it
does not mean ignoring the other aspects, it is just doing
This definition did not do justice to evolving thinking about justice to the fact that from this aspect’s point of view, the
architecture; e.g., this definition does not allow us to distinguish other is irrelevant. It is being one- and multiple-track-minded
the detailed design of a module from its Makefile. Either simultaneously. [10]
example reflects an organizational structure of the software
system or component but should not be considered architecture. What is fundamental about a system varies according to
Moreover, emphasis on the structure was often limited to the stakeholders’ concerns and roles. The software structures,
code’s structure and failed to encompass all the structures of the therefore, also vary with stakeholder roles and concerns. (See
software system: also topic Design Methods in Software Design KA.)
The software architecture of a system is the set of A software system’s customer is most interested in when the
structures needed to reason about the system. These system will be ready and how much it will cost to build and
structures comprise software elements, relations among operate. Users are most interested in what it does and how to use
them, and properties of both. [2*] it. Designers and programmers building the system have their
own concerns, such as whether an algorithm will meet the
During the mid-1990s, however, software architecture system requirements. Those responsible for ensuring the system
emerged as a broader discipline involving a more generic study is safe to operate have different concerns.
of software structures and architectures. Many software system
structures are not directly reflected in the code structure. Both Concerns encompass a broad range of issues, possibly
types of structure have implications for the system as a whole: pertaining to any influence on a system in its environment,
What behaviors is the system capable of? What interactions does including developmental, technological, business, operational,
it have with other systems? How are properties like safety and organizational, political, economic, legal, regulatory, ecological
security handled? The recognition that software contains many and social influences. Like software requirements, they may be
different structures has prompted discussion of a number of classified in terms of functional, non-functional or constraint.
interesting concepts about software architecture (and software See Software Requirements KA. Concerns manifest in various
design more generally) leading to current definitions such as: familiar forms, including requirements, quality attributes or
“ilities”, emergent properties (which may be either desired or
architecture (of a system). fundamental concepts or prohibited) and various kinds of constraints (as listed above).
properties of a system in its environment embodied in its See Software Quality KA. Topic 2, Software Architecture
elements, relationships, and in the principles of its design and Description, shows how concerns shape architecture and the
evolution [17] work products describing those architectures. Example of
Key ideas in that definition are the following: concerns are depicted in Fig. 2.
(1) Architecture is about what is fundamental to a software
affordability, agility, assurance, autonomy, availability,
system; not every element, interconnection, or interface is
behavior, business goals and strategies, complexity, compliance
with regulation, concurrency, control, cost, data accessibility, concerns about the software system which are answered by the
deployability, disposability, energy efficiency, evolvability, architecture. As noted in topic 1, Software Architecture
extensibility, feasibility, flexibility, functionality, information Fundamentals, a primary audience comprises the designers,
assurance, inter-process communication, interoperability, engineers and programmers whose concerns pertain to
known limitations, maintainability, modifiability, modularity, constructing the system. For these stakeholders, the AD serves
openness, performance, privacy, quality of service, reliability, as a blueprint to guide the construction of the software system.
resource utilization, reusability, safety, scalability, schedule, For others, the AD is a basis for their work—for example, testing
security, system modes, software structure, subsystem and quality assurance, certification, deployment, operation, and
integration, sustainability, system features, testability, usability, maintenance and future evolution.
usage, user experience
Historically, ADs used text and informal diagrams to convey
Fig. 2. Examples of Architectural Concerns the architecture. However, the diversity of stakeholder audiences
and their different concerns have led to a diversity of
1.3 Uses of Architecture representations of the architecture. Often, these representations
A principal use of a software system’s architecture is to give are specialized based upon existing practices of the communities
those working with it a shared understanding of the system to or disciplines involved to effectively address this variety of
guide its design and construction. An architecture also serves as stakeholders and concerns (see Software Design KA and
a preliminary conception of the software system that provides a Software Engineering Models and Methods KA). These various
basis to analyze and evaluate alternatives. A third common usage representations are called architecture views.
is to enable reverse engineering (or reverse architecting) by 2.1 Architecture Views and Viewpoints
helping those working with it to understand an existing software
system before undertaking maintenance, enhancement or An architecture view represents one or more aspects of an
modification. To support these uses, the architecture should be architecture to address one or more concerns [26*]. Views
documented (see topic Software Architecture Description). address distinct concerns — for example, a logical view (depicts
how the system will satisfy the functional requirements); a
Conway’s Law posits that “organizations which design process view (depicts how the system will use concurrency); a
systems . . . are constrained to produce designs which are copies physical view (depicts how the system is to be deployed and
of the communication structures of these organizations.” [9] distributed) and a development view (depicts how the top-level
This suggests that architectures often mirror the structure of the design is broken down into implementation units, the
organizations that developed them. Depending on the software dependencies among those units and how the implementation is
system and the organization, this can be a strength or a weakness. to be constructed). Separating concerns by view allows
The architecture can enhance communication within a large interested stakeholders to focus on a few things at a time and
team or compromise it. Each part of the organization can base its offers a means of managing the architecture’s understandability
planning, costing and scheduling activities upon its knowledge and overall complexity.
of the architecture. Creating a well-planned and documented
architecture is one approach to increasing the applicability and As architecture practice has evolved from the use of text and
reusability of software designs and components. The informal diagrams to the use of more rigorous representations.
architecture forms the basis for design families of programs or Each architecture view depicts architectural elements of the
software product lines. This can be done by identifying system using well-defined conventions, notations and models
commonalities among members of such families and by [26*]. The conventions for each view are documented as an
designing reusable and customizable components to account for architecture viewpoint [17]. Viewpoints guide the creation,
the variability among family members. interpretation and uses of architecture views. Each viewpoint
links stakeholder audience concerns with a set of conventions.
2 SOFTWARE ARCHITECTURE DESCRIPTION In model-based architecting, each view can be machine-checked
against its viewpoint.
In topic 1, Software Architecture Fundamentals, a software
architecture was defined as the fundamental concepts or Common viewpoints include the module viewpoint, used to
properties of a software system in its environment. But each express a software system’s implementation in terms of its
stakeholder can have a different notion of what is fundamental modules and their organization [2*]; the component and
to that software system, given their perspective. Having a mental connector viewpoint, used to express the software’s large-scale
model of a system’s architecture is perhaps fine for small runtime organization and interactions [2*]; the logical
systems and for individuals working alone. However, for large, viewpoint, used to express fundamental concepts of the
complex systems developed and operated by teams, a tangible software’s domain and capability [18]; the scenarios/use cases
representation is invaluable, especially as the conception of the viewpoint, used to express how users interact with the system
system evolves, and as people join or leave the team. Having a [18]; the information viewpoint, used to express a system’s key
concrete representation as a work product can also serve as a information elements and how they are accessed and stored
basis to analyze the architecture, organize its design and guide [26*]; and the deployment viewpoint, used to express how a
its implementation. These work products are called architecture system is configured and deployed for operation [26*]. Other
descriptions (ADs). documented viewpoints include viewpoints for availability,
behavior, communications, exception handling, performance,
An AD documents an architecture for a software system. It reliability, safety and security.
is targeted to those stakeholders of the system who have
Each viewpoint provides a vocabulary or language for • General structures (e.g., layered, call-and-return,
talking about a set of concerns and the mechanisms for pipes and filters, blackboard, services and
addressing them. The viewpoint language gives stakeholders a microservices)
shared means of expression. Viewpoints need not be limited to
one software system but are reusable by an organization or • Distributed systems (e.g., client-server, n-tier,
application community for many similar systems. When generic broker, publish-subscribe, point-to-point, master-
representations such as Unified Modeling Language (UML) are replica)
used, they can be specialized to the system, its domain or the • Method-driven (e.g., object-oriented, event-driven,
organizations involved. (See section 2.3 Architecture data flow)
Description Languages and Architecture Frameworks.)
• User-computer interaction (e.g., model-view-
Beyond specifying forms of representation, an architecture controller, presentation-abstraction-control)
viewpoint can capture the ways of working within a discipline
or community of practice. For example, a software reliability • Adaptive systems (e.g., microkernel, reflection and
viewpoint captures existing practices from the software meta-level architectures)
reliability community for identifying and analyzing reliability
issues, formulating alternatives and synthesizing and • Virtual machines (e.g., interpreters, rule-based,
representing solutions. Like engineering handbooks, generic and process control)
specialized viewpoints provide a means to document repeatable There is no strict dividing line between architectural styles
or reusable approaches to recurring software issues. Clements et and patterns. An architectural style describes the overall
al. have introduced viewtypes which establish a 3-way structure of a system or subsystem and thus defines major parts
categorization of viewpoints. These categories are module, of a (sub)system and how they interact. [7, 26*] Architectural
component and connector, and allocation viewtypes [8]. patterns exist at various ranges of scale and might be applied in
Architecture descriptions frequently use multiple a software architecture repeatedly. Both provide a solution to a
architecture views to represent the diverse structures needed to particular computing problem in a given context. In fact, any
address different stakeholders’ various concerns. There are two architectural style can be described as an architectural pattern.
common approaches to the construction of views: the synthetic [7]
approach and the projective approach. In the synthetic In relation to architecture viewpoints, which provide the
approach, architects construct views of the system-of-interest languages for talking about various aspects of software systems,
and integrate these views within an architecture description a unifying notion is that both patterns and styles are idioms in
using correspondence rules. In the projective approach, an those languages for expressing particular aspects of architectures
architect derives each view through some routine, possibly (and designs, see section 4.4 Design Patterns in Software Design
mechanical, procedure of extraction from an underlying “uber KA). An architectural pattern or style uses a vocabulary, drawn
model” [17]. A consequence of introducing multiple views into from the viewpoint’s language, in a specified way, to talk about
an AD is a potential mismatch between the views. Are they view elements, including element and relation types and their
consistent? Are they describing the same system? This has been instances, and constraints on combining them [17,27]. In this
called the multiple views problem [27]. The projective approach way, viewpoints, patterns and styles are mechanisms for
limits possible inconsistencies, since views are derived from a codifying recommended practices to facilitate reuse.
single (presumably consistent) model, but at the cost of
expressiveness: the underlying model may not be capable of 2.3 Architecture Description Languages and Architecture
capturing arbitrary concerns. Under the synthetic approach, Frameworks
architects integrate views into a whole, using linkages or other An architecture description language (ADL) is a domain-
forms of traceability to cross-reference view elements to achieve specific language for expressing software architectures. ADLs
consistency [17,18]. Viewpoints often include rules for arose from module interconnection languages [25] for
establishing consistency or other relationships among views. programming in the large. Some ADLs target a single
application domain or architectural style (such as MetaH for
2.2 Architecture Styles and Patterns
avionics systems in an event-driven style), others are wide
Inspired by its use in the long history of the architecture of spectrum to frame concerns across the enterprise (such as
buildings, an architectural style is a particular manner of ArchiMate™). UML has frequently been used as an ADL. ADLs
construction yielding a software system’s characteristic features. often provide capabilities beyond description to enable
An architectural style often expresses a software system’s large- architecture analysis or code generation.
scale organization. In contrast, an architectural pattern
expresses a common solution to a recurring problem within the An architecture framework captures the “conventions,
context of a software system. Patterns are discussed in section principles and practices for the description of architectures
4.4 of Software Design KA. established within a specific domain of application and/or
community of stakeholders” [17]. Frameworks codify
Various architectural styles and patterns have been recommended practices within a specific domain and are
documented [7, 27]: implemented as an interlocking set of viewpoints or ADLs.
Examples are OMG Unified Architecture Framework (UAF®)
and ISO Reference Model for Open Distributed Processing
(RM-ODP).
2.4 Architecture as Significant Decisions deferred to subsequent stages of the software process, such as
Architectural design is a creative process. During this design or construction.
activity, architects make many decisions that profoundly affect In product line or product family settings, a product
the architecture, the downstream development process and the line/family architecture is developed against a basic set of needs,
software system. Many factors affect decision-making, requirements and other factors. That architecture will be the
including prominent concerns of stakeholders for the software starting point for one or more product instances developed
system, its requirements, and the available resources during against specific product requirements, building upon the product
development and throughout the life cycle. The impact on baseline.
quality attributes and trade-offs among competing quality
attributes are often the basis for design decisions. In agile approaches, there is not usually an architecture
design stage. The only architecture description might be the code
The architectural design activity produces a network of itself. In some agile practices, the software architecture is said to
decisions as its outcome, with some decisions deriving from “emerge” from coding the system based on user stories through
prior decisions. Decision analysis provides one approach to a rapid series of development cycles. Although this approach has
architecture evaluation. Decisions should be explicitly had some success with user-centric information systems, it is
documented, along with an explanation of the rationale for each difficult to ensure an adequate architecture emerges for other
nontrivial decision. classes of applications, such as embedded and cyber-physical
Architecture rationale captures why an architectural decision systems, when critical architectural properties might not be
was made. This includes assumptions made before the decision, articulated by any user stories.
alternatives considered, and trade-offs or criteria used to select In enterprise and system-of-systems contexts, as in product
an approach and reject others. Recording rejected decisions and lines and families, the overarching architecture (of the
the reasons for their rejection can also be useful. In the future, enterprise, system or product line/family) provides primary
this could either prevent a software development from making a requirements and guidance on the form and constraints upon the
poor decision—one rejected earlier for forgotten reasons—or software architecture. This baseline can be enforced through
allow the development to recognize that relevant conditions have specifications, additional requirements, application
changed and that they can revisit the decision. programming interfaces (APIs) or conformance suites.
Architectural technical debt has been introduced to reflect 3.1.1 Relation of Architecture to Design
that today’s decisions for an architecture may have significant Design and architecture are often blurred. It has sometimes
consequences later in the software system’s life cycle. Decisions been said that architecture is the set of decisions that one cannot
deferred can compromise its maintainability or the future trust to designers. In fact, architecture emerged out of software
evolvability, and that debt will have to be paid—typically by design as the discipline matured, largely since the 1990s. There
others, not necessarily by those who caused the debt. Such debt are various contrasts: design often focuses on an established set
has an economic impact on the system’s future development and of requirements, whereas architecture often must shape the
operations. For example, when a software project is pressed for requirements through negotiation with stakeholders and
time and designs an initial system with little modularity for its requirements analysis. In addition, architecture often must
first release. The lack of modularity affects the development recognize and address a wider range of concerns that may or may
time for subsequent releases, impacts other developers, and not end up as requirements on the software system of interest.
perhaps the future maintainability of the system. Additional
functionality can be added later only by doing extensive 3.2 Architectural Design
refactoring which impacts future timelines and introduces Architectural design is the application of design principles
additional defects. [19]. Architectural technical debt can be and methods within a process to create and document a software
analyzed and managed, like other concerns, using models and architecture. There are many architecture methods for carrying
viewpoints [20]. out this activity. This section describes a general model of
architectural design underlying various architecture methods
3 SOFTWARE ARCHITECTURE PROCESS based upon [14].
This section outlines a general model of an architectural
design process. It is used to demonstrate how architectural Architectural design involves identifying a system’s major
design fits into the general context of software engineering components; their responsibilities, properties, and interfaces;
processes (see Software Engineering Process KA) and as a and the relationships and interactions among them and with the
framework for understanding the many architecture methods environment. In architectural design, fundamentals of the system
currently in use. It also recognizes that architectural design can are decided, but other aspects, such as the internal details of
take place in a variety of contexts. major components are deferred.

3.1 Architecture in Context Typical concerns in architectural design include the


following:
Architecture occurs in several contexts. In the traditional life
cycle, there is an architectural design stage driven by software • Overall architecture styles and computing
system requirements (see Software Requirements KA). Some paradigms
requirements will be architectural drivers, influencing major
• Large-scale refinement of the system into key
decisions about the architecture, while other requirements are
components
• Communication and interaction among constraints. ASRs reflect the design problems the architecture
components must solve. Often the combination of initial requirements and
known constraints cannot be satisfied without consequences to
• Allocation of concerns and design responsibilities cost, schedule, etc. In such cases, negotiation is used to modify
to components incoming needs, requirements and expectations to make
• Component interfaces solutions possible. Architecture analysis produces ASRs, initial
system-wide decisions and any overarching system principles
• Understanding and analysis of scaling and derived from the context (see Architecture in Context).
performance properties, resource consumption
properties, and reliability properties 3.2.2 Architecture Synthesis
Architecture synthesis develops candidate solutions in
• Large-scale/system-wide approaches to dominating response to the outcomes of architecture analysis. Synthesis
concerns (such as safety and security, where proceeds by working out detailed solutions to design problems
applicable) identified by ASRs, and makes trade-offs to accommodate
An overview of architectural design is presented in Fig. 3. interactions between those solutions. These outcomes feedback
to architecture analysis resulting in elaborated ASRs, principles
Architectural design is iterative, comprising three major and decisions which then lead to further detailed solution
activities: analysis, synthesis and evaluation. Often, all three elements.
major activities are performed concurrently at various levels of
granularity. 3.2.3 Architecture Evaluation
Architecture evaluation validates whether the chosen
solutions satisfy ASRs and when and where rework is needed.
Architecture evaluation methods are discussed in topic 4
Software Architecture Evaluation.
3.3 Architecture Practices, Methods and Tactics
There are a number of documented architecture methods (see
Further Reading for a list).
3.4 Architecting in the Large
Architectural design denotes as specific stage of the life
cycle, but is only one part of software architecting. Software
architecting does not occur in a vacuum, as noted in section 3.1
Architecture in Context, but in an environment that often
includes other architectures. For example, an application
architecture should conform to an enterprise architecture; to
“play well” in a system of systems, the architecture of each
constituent system should conform to the system of systems
architecture. In such cases, these relations need to be reflected as
ASRs on the software being architected. Many software
architecting activities and principles are not limited to software
but equally apply to systems and enterprise architecting [21].
Weinreich and Buchgeher have extended Hofmeister et al.’s
model used in section 3.2 Architectural Design to include these
activities [29]:
• architecture implementation: overseeing
implementation and certifying that implementations
conform to the architecture
• architecture maintenance: managing and extending the
architecture following its implementation
Fig. 3. A general model of architectural design
• architecture management: managing an organization’s
3.2.1 Architecture Analysis portfolio of interrelated architectures
Architecture analysis gathers and formulates architecture • architecture knowledge management: extracting,
requirements (sometimes referred to as “architecturally maintaining, sharing and exploiting reusable
significant requirements” or ASRs): any ‘‘requirement upon a architecture assets, including decisions, lessons learned,
software system which influences its architecture’’ [22]. specifications and documentation across the
Architecture analysis is based on identified concerns and on organization
understanding the software’s context, including known
requirements, stakeholder needs and the environment’s
4 SOFTWARE ARCHITECTURE EVALUATION Often architecture documentation is unfinished, incomplete,
out of date or nonexistent. In such cases, the evaluation effort
4.1 Goodness in Architecture must rely on the knowledge of participants as a primary
Architecture analysis takes place throughout the process of information source.
creating and sustaining an architecture. Architecture evaluation
is typically undertaken by third parties at determined milestones Use cases are frequently used to check an architecture’s
as a form of assessment. completeness and consistency (see Software Engineering
Models and Methods KA) by comparing the steps in the use case
Given the multi-concern, multi-disciplinary nature of to the software architecture elements that would be involved in
software architecture, there are many aspects to what makes an carrying out those steps [17].
architecture “good.” The Roman architect Vitruvius posited that
all buildings should have the attributes of firmitas, utilitas and For a general framework for reasoning about various
venustas (translated from Latin as strength, utility and beauty). concerns, see Bass et al. [3].

Of a software system and its architecture, one can ask: 4.3 Architecture Reviews
Architecture reviews are an effective approach to assess an
• Is it robust over its lifetime and possible evolution? architecture’s status and quality and identify risks by assessing
• Is it fit for its intended use? one or more architecture concerns [1]. Many reviews are
informal or expertise-based, and some are more structured,
• Is it feasible and cost-effective to construct software organized around a checklist of topics to cover. Parnas and
systems using this architecture? Weiss proposed an effective approach to conducting reviews,
called active reviews [24], where instead of checklists, each
• Is it, if not beautiful, then at least clear and
evaluation item entails a specific activity by a reviewer to obtain
understandable to those who must construct, use and
the needed information.
maintain the software?
Many organizations have institutionalized architecture
Each architecture concern may be a basis for evaluation.
review practices. For example, an industry group developed a
Evaluation is conducted against requirements (when available)
framework for defining, conducting and documenting
or against need, expectations and norms (in other situations). A
architecture reviews and their outcomes [22].
“good” architecture should address not only the distinct concerns
of its stakeholders, but also the consequences of their 4.4 Architecture Metrics
interactions. For example: a secure architecture may be An architecture metric is a quantitative measure of a
excessively costly to build and verify; an easy-to-build characteristic of an architecture. Various architecture metrics
architecture may not be maintainable over the system’s lifetime have been defined. Many of these originated as design or code
if it cannot incorporate new technologies. The SARA Report metrics that have been “lifted” to apply to architecture. Metrics
provides a general framework for software architecture include component dependency, cyclicity and cyclomatic
evaluation [22]. complexity, internal module complexity, module coupling and
4.2 Reasoning about Architectures cohesion, levels of nesting, and compliance with the use of
patterns, styles and (required) APIs.
Each architecture concern has a distinct basis for evaluation.
Evaluation is most effective when it is based upon robust, In continuous development paradigms (such as DevOps),
existing architecture descriptions. ADs can be queried, other metrics have evolved that focus not on the architecture
examined and analyzed. For example, evaluation of directly but on the responsiveness of the process, such as metrics
functionality or behavior benefits from having an explicit for lead time for changes, deployment frequency, mean time to
architecture view or other representation of that aspect of the restore service, and change failure rate—as indicative of the state
system to study. Specialized concerns such as reliability, safety of the architecture.
and security often rely on specialized representations from the
respective discipline.

MATRIX: TOPICS VS. REFERENCE MATERIAL


cX refers to chapter X

Bass et Budgen Rozanski Sommerville See also


al. [2*] [6*] Woods [28*]
[26*]
Software c2
Architecture
Fundamentals
The senses of c1 [21]
"architecture"
Stakeholders and c3-14 c8, c9 [17]
Concerns
Roles of c24 c30
Architecture
Architecture c22 all c6 [17]
Description
Architecture c7 c3, c12, c6.2
Views and c13
Viewpoints
Architectural c6 c11 c6.3 [7]
Styles and
Patterns
Architecture [17]
Description
Languages and
Architecture
Frameworks
Architecture as c8 c6.1 [17]
Significant
Decisions
Architecture c7
Processes
Architecture in [21]
Context
Architectural c19-20 [14]
Design
Architecture see
Methods and Further
Tactics Reading
Architecting in [21]
the Large
Architecture c21 c14 [22,24]
Evaluation
Goodness in c2 [3]
Architecture
Reasoning about c10 [3]
Architectures
Architecture c21 [1,22]
Reviews
Architecture c23
Metrics
process and on managing risk. An appendix provides a case
FURTHER READINGS study.
Fairbanks, Just Enough Software Architecture: A risk-
Bass et al., Software Architecture in Practice [2*] driven approach [12]
This book introduces concepts and recommended Fairbanks offers a risk-driven approach to architecting
practices of software architecture, meaning how software is within the context of development: do just enough software
structured and how the software’s components interact. The architecture to mitigate the identified risks where those risks
book addresses several quality concerns in detail, including: could result from a small solution space, from extremely
availability, deployability, energy efficiency, modifiability, demanding quality requirements or from possible high-risk
performance, testability and usability. The authors offer failures. The risk-driven approach is harmonious with low-
recommended practices focusing on architectural design, ceremony and agile approaches. Architecting, as argued by
architecture description, architecture evaluation and managing Fairbanks, is not just for architects—but is relevant to all
architecture technical debt. They also emphasize the developers.
importance of the business context in which large software is
designed. In doing so, they present software architecture in a Erder, Pureur and Woods, Continuous Architecture in
real-world setting, reflecting both the opportunities and Practice: Software Architecture in the Age of Agility and
constraints that organizations encounter. DevOps. [11]
This book shows how “classical” thinking about software
Kruchten, The 4+1 View Model of Architecture [17].
architecture has evolved in the present day in the contexts of
This seminal paper organizes an approach to architecture agile, cloud-based and DevOps approaches to software
description using five architecture viewpoints. The first four development by providing practical guidance on a range of
are used to produce the logical view, the development view, quality and cross-cutting concerns including security,
the process view, and the physical view. These are integrated resilience, scalability and integration of emerging
through selected use cases or scenarios to illustrate the technologies.
architecture. Hence, the model results in 4+1 views. The views
are used to describe the software as envisioned by different REFERENCES
stakeholders—such as end-users, developers, and project [1] M. Ali Babar, and I. Gorton, “Software Architecture Review: The State
managers. of the Practice”, IEEE Computer, July 2009.
[2] * L. Bass, P. Clements, and R. Kazman, Software Architecture in
Rozanski and Woods, Software Systems Architecture Practice, 4th edition, 2021.
[24*] [3] L. Bass, J. Ivers, M.H. Klein, and P. Merson, Reasoning Frameworks,
CMU/SEI-2005-TR-007, 2005.
This is a handbook for the software systems architect. It
[4] * F. Brooks, The Design of Design, Addison-Wesley, 2010.
develops key concepts of stakeholder, concern, architecture
[5] S. Brown, Software Architecture for Developers, 2018,
description, architecture viewpoint and architecture view, http://leanpub.com/software-architecture-for-developers
architecture patterns and styles, with examples. It provides an [6] * D. Budgen, Software Design: Creating Solutions for Ill-Structured
end-to-end architecting process. The authors provide a catalog Problems, 3rd Edition, CRC Press, 2021.
of ready-to-use, practical viewpoints for the architect to [7] F. Buschmann, R. Meunier, H. Rohnert, P. Sommerlad, and M. Stal,
employ that are applicable to a wide range of systems. The Pattern Oriented Software Architecture, John Wiley & Sons, 1996.
book is filled with guidance for applying these concepts and [8] P. Clements, et al. Documenting Software Architecture: Views and
methods. Beyond, 2nd edition Addison Wewsley, 2011
[9] M.E. Conway, “How Do Committees Invent?” Datamation, 14(4), 28-
Clements 31, 1968.
This book provides detailed guidance on capturing [10] E.W. Dijkstra, “On the role of scientific thought”, 1974, available at
software architectures, using guidance and examples to http://www.cs.utexas.edu/users/EWD/transcriptions/EWD04xx/EWD
447.html.
express an architecture so that stakeholders can build, use, and
[11] P. Eeles, and P. Cripps, The Process of Software Architecting, Addison
maintain that system. The book introduces a 3-way Wesley, 2010.
categorization of views and therefore viewpoints : into [12] M. Erder, P. Pureur and E. Woods, Continuous Architecture in
module, component and connector and allocation called Practice: Software Architecture in the Age of Agility and DevOps,
viewtypes, providing numerous examples of each. Addison-Wesley, 2021.
[13] G. Fairbanks, Just Enough Software Architecture: A Risk-Driven
Brown, Software Architecture for Developers [5] Approach, Marshall & Brainerd, 2010.
Brown provides an overview of software architecture [14] C. Hofmeister, P.B. Kruchten, R.L. Nord, H. Obbink, A. Ran, and P.
topics from the perspective of a developer. He discusses America, “A general model of software architecture design derived
from five industrial approaches”, The Journal of Systems and Software,
common architecture drivers (functional requirements, quality 80, 106–126, 2007.
concerns, constraints and architecture principles. He has an in- [15] C. Hofmeister, R.L. Nord, and D. Soni, Applied Software Architecture,
depth discussion of the role of the architect in a development Addison- Wesley, 2000.
setting and requisite knowledge and skills for architects. He [16] ISO/IEC/IEEE 24765:2017, Systems and software engineering —
focuses on the practical issues of architecture in the delivery Vocabulary.

XXX-X-XXXX-XXXX-X/XX/$XX.00 ©2022 IEEE


[17] ISO/IEC/IEEE 42010:2011, Systems and software engineering —
Architecture description.
[18] P.B. Kruchten, The “4+1” View Model of Architecture, IEEE Software
12(6), 1995.
[19] P.B. Kruchten, Nord, R.L.; Ozkaya, I.: Managing Technical Debt:
Reducing Friction in Software Development. Addison Wesley, 2019.
[20] Z. Li, P. Liang, P. Avgeriou, Architecture viewpoints for documenting
architectural technical debt. Software Quality Assurance, Elsevier,
2016.
[21] * M.W. Maier, and E. Rechtin, The Art of Systems Architecting, 3rd
edition, CRC Press, 2021.
[22] H. Obbink, et al., Report on Software Architecture Review and
Assessment (SARA), version 1.0, available at
https://philippe.kruchten.com/architecture/SARAv1.pdf, 2002.
[23] D.L. Parnas, “On the criteria to be used in decomposing systems into
modules”, Communications of the ACM 15(12), 1053-1058, 1972.
[24] D.L. Parnas, and D.M. Weiss, “Active Design Reviews: Principles and
Practices”, Proceedings of 8th International Conference on Software
Engineering, 215-222, 1985.
[25] R. Prieto-Diaz, and J.M. Neighbors, “Module Interconnection
Languages”, Journal of Systems and Software, 6(4), 307–334, 1986.
[26] * N. Rozanski, and E. Woods, Software Systems Architecture:
Working with Stakeholders Using Viewpoints and Perspectives, 2nd
edition, Addison-Wesley, 2011.
[27] M. Shaw, and D. Garlan, Software Architecture: Perspectives on an
Emerging Discipline, Prentice Hall, 1996.
[28] * I. Sommerville, Software Engineering, 10th edition, 2016.
[29] R. Weinreich, and G. Buchgeher, Towards supporting the software
architecture life cycle, The Journal of Systems and Software, 85, 546–
561, 2012.
chapter 3
Software Design
ACRONYMS Design is used in distinct but closely related ways to refer to
(1) the discipline (“use of scientific principles, technical
API application programming information, and imagination in the definition of a software
system to perform [prespecified] functions with maximum
interface economy and efficiency”) [10]; (2) the processes for performing
AOD aspect-oriented design within that discipline; (3) the result of applying that discipline;
and (4) the stage in the life cycle of a software system during
CBD component-based design which those processes yield those results.
CRC class responsibility collaborator Software design, viewed as a life cycle activity, is the
(or collaboration) application of software engineering discipline in which software
requirements are analyzed to define the software’s external
DFD data flow diagram characteristics and internal structure as the basis for the
software’s construction.
DSL domain-specific language
A software design description (SDD) documents the result
ERD entity relationship diagram of software design. It is a “representation of software created to
facilitate analysis, planning, implementation, and decision-
FOSS free and open source software making. The software design description is used as a medium for
communicating software design information and can be thought
IDL interface description language of as a blueprint or model of the system” [10].
MBD model-based design The SDD, which may take many forms, encompasses the
refinement of that software into components, the organization of
MDD model-driven design those components, and the definition of interfaces among them
and between the software and the outside world—to a level of
object-oriented
OO detail that enables their construction.
Software design takes place in three stages:
program design language
PDL • architectural design of the software system

software design description • high-level or external-facing design of the system and


SDD its components
• detailed or internal-facing design
Unified Modeling Language
UML Architectural design is a part of architecting, discussed in the
Software Architecture KA.
BREAKDOWN OF TOPICS FOR SOFTWARE DESIGN
INTRODUCTION
The breakdown of topics for the Software Design KA is
This chapter considers software design from several shown in Fig. 1.
perspectives—focusing on basic concepts, context and
processes, software design qualities and strategies, and
recording and evaluating designs.

XXX-X-XXXX-XXXX-X/XX/$XX.00 ©20XX IEEE


a problem, express its solution and implement that solution. The
Fig. 1. Breakdown of topics for the Software Design KA steps emphasize the linguistic nature of software design problem
solving. This is a recurring pattern we see throughout high-level
1 SOFTWARE DESIGN FUNDAMENTALS design, detailed design and architecting (see Architecting in the
Large in Software Architecture KA). Therefore, Software
The concepts, notions and terminology introduced here form Design is a practical process of transforming a problem
a basis for understanding the role and scope of software design. statement into a solution statement. Software design shares
1.1 Design Thinking commonalities with other kinds of design. Design can be further
understood via design theory [7].
Design is all around us, in the things and organizations that
have been created to meet a need or solve a problem. 1.2 Context of Software Design
In a general sense, design can be viewed as a form of Software design is an important part of the software
problem-solving. For example, the concept of a wicked development process. To understand the role of software design
problem—a problem with no definitive solution—is interesting is to see how it fits into the software development life cycle (see
in terms of understanding the limits of design. Many other Software Process KA). To understand that context, it is
notions and concepts help us understand design in its general important to understand the major characteristics and roles of
sense: goals, constraints, alternatives, representations and software requirements, software construction, software testing,
solutions. (See also Problem-Solving Techniques in the and software maintenance. The context varies with many factors,
Computing Foundations KA.) including degree of formality and stage of the life cycle.
Design thinking comprises two essentials: (1) understanding Software design is the transformation of customer and other
the need or problem and (2) devising a solution. Ross, requirements, needs, and concerns into implementable design
Goodenough and Irvine offer an elaboration of design thinking specifications. Its contexts include the following:
appropriate to software:
• Design interface with software requirements: The
This process consists of five basic steps: (1) crystallize a requirements establish a set of problems that the
purpose or objective; (2) formulate a concept for how the software design must solve.
purpose can be achieved; (3) devise a mechanism that
• Design interface with software architecture: In cases
implements the conceptual structure; (4) introduce a notation
where an architecture has been established, that
for expressing the capabilities of the mechanism and
architecture constrains the design by capturing
invoking its use; (5) describe the usage of the notation in a
fundamental aspects of the system: its major
specific problem context to invoke the mechanism so the
components and their interconnections, application
purpose is achieved. [18]
programming interfaces (APIs), styles and patterns to be
This is particularly appropriate because much of software used, and architectural principles to be observed and
design consists of creating the necessary vocabulary to express enforced.

XXX-X-XXXX-XXXX-X/XX/$XX.00 ©20XX IEEE


• Design interface with software construction: The possible, [SoC] is yet the only available technique for effective
software design must provide a guide to implementors ordering of one’s thoughts ” [5] (See also topic Stakeholders and
on building the system. Concerns in Software Architecture KA.)
• Design interface with software testing: Software design • Modularization (or refinement or decomposition) structures
provides a foundation for an overall testing strategy and large software as comprising smaller components or units. Each
test cases that ensure that the design is properly component is named and has well-defined interfaces for its
implemented and operates as intended. interactions with other components. Smaller components are
easier to understand and, therefore, to maintain. There are
1.3 Key Issues in Software Design numerous modularization strategies. (See topic 5 Software
Many key issues must be dealt with when designing Design Strategies and Methods.)
software. Some are quality concerns that all software must
Traditionally, the goal is to place distinct functionalities and
address (performance, security, reliability, usability, etc.).
responsibilities in different components. Parnas advocated that
Another important issue is how to refine, organize, interconnect
each module in a system should have a single responsibility [15].
and package software components. These issues are so
One way to think of modularization is as a special case of more
fundamental that all design approaches address them in one way
general strategies, such as separation of concerns or divide and
or another. (See topic Stakeholders and Concerns in Software
Architecture KA, section 1.4 Software Design Principles, and conquer. (see topic Problem-Solving Techniques in Computing
topic 5 Software Design Strategies and Methods.) Foundations).

In contrast, other issues “deal with some aspect of software’s • Encapsulation (or information hiding) builds upon the
behavior that is not in the application domain, but which principles of abstraction and modularization so that nonessential
addresses some of the supporting domains” [2]. Such issues, information is less accessible, allowing users of the module to
which often crosscut the system’s functionality, are referred to focus on the essential elements of the interface.
as aspects, which “tend not to be units of software’s functional • Separation of interface and implementation is an
decomposition, but rather to be properties that affect the application of encapsulation that involves defining a component
performance or semantics of the components in systemic ways” by specifying its public interfaces, which are known to and
[11]. accessible to clients; isolating the use of a component from the
details of how that component is built. (See Encapsulation (or
1.4 Software Design Principles
information hiding) above.)
A principle is “a fundamental truth or proposition that serves
as the foundation for a system of belief or behavior or for a chain • Coupling is defined as “a measure of the interdependence
of reasoning.” [Oxford English Dictionary] among modules in a computer program” [10]. Most design
methods advocate that modules should be loosely or weakly
Design principles provide direction or guidance for making coupled.
decisions during design. Some principles originated during the
early days of software engineering, others even predate the • Cohesion (or localization) is defined as “a measure of the
discipline, deriving from best practices in engineering unrelated strength of association of the elements within a module” [10].
to software. (See Engineering Foundations KA.) Decision Cohesion highlights organizing a module’s constituents based
making can also be assisted by quantitative methods, such as on their relatedness. Most design methods advocate that modules
discussed in Software Engineering Economics KA. Software should maximize their cohesion/locality.
design principles are key notions that provide the basis for many • Uniformity is a principle of consistency across software
different software design concepts, approaches and methods. components—common solutions should be produced to address
The principles listed below apply to any of the three stages of common or recurring problems. These include naming schemes,
design. Many of these principles are interrelated. Whether alone notations and syntax, interfaces that define access to services and
or used in combination with other principles, they are reflected mechanisms, and ordering of elements and parameters. This can
elsewhere in software design to produce many concepts and be achieved through conventions such as rules, formats and
constructs found in design capture, strategies and methods. This styles.
is itself an application of the design thinking process above.
Software design principles include the following: • Completeness (or sufficiency) means ensuring that a
software component captures the important characteristics of an
• Abstraction is “a view of an object that focuses on the abstraction and leaves nothing out. Completeness takes various
information relevant to a particular purpose and ignores the forms, perhaps the most important of which is design
remainder of the information” [10].“The abstraction principle . . completeness against requirements: a design should be sufficient
. helps to identify essential properties common to superficially for designers to demonstrate how requirements will be met and
different entities” [18]. (See also topic Abstraction in the how subsequent work will satisfy those requirements. Design
Computing Foundations KA.) should be complete with respect to the modes and states of the
• Separation of concerns (SoC). A design concern is an “area software.
of interest with respect to a software design” [10] that is relevant • Confirmability means that information needed to verify that
to one or more of its stakeholders. By identifying and separating the software is correct, complete and fit for use is available. This
concerns, the designer can focus on each concern for the system is relevant for any software but is of particular importance for
in isolation about which Dijkstra says “even if not perfectly high-assurance software, such as software where security,
reliability or safety-critical concerns are present. An SDD should important protocols and relationships among them. This
be sufficient as a basis for verifying a design. stage develops strategies to address crosscutting
concerns, such as performance, reliability, security and
• Other design principles. Recently, with the increased safety, and articulation of crosscutting decisions,
appearance of autonomous systems, the use of machine learning including system-wide styles (e.g., a Model-View-
and artificial intelligence, and, generally, systems with widening Controller style versus, a Pipes-and-Filters style,
social impacts, approaches to Ethically Aligned Design have together with the rationale for such decisions).
been developed to address concerns including universal human
values, political self-determination, and data agency and • The high-level design stage includes identification of
technical dependability [8]. The general principles of Ethically the primary computational elements and significant
Aligned Design are human rights, well-being, data agency, relationships among them, with a focus on each major
effectiveness, transparency, accountability, awareness of component’s existence, role and interfaces. That
misuse, and competence. definition should be sufficiently detailed to allow
designers or programmers of client components to
2 SOFTWARE DESIGN PROCESSES correctly and efficiently access each server’s
Software design is generally considered a multistage process capabilities—without having to read its code.
or activity. Software design can be divided into the following
• The detailed design stage defines each module’s internal
stages or phases. When necessary, we distinguish the phase from
structure, focusing on detailing and justifying choices of
the general activity:
algorithms, data access and data representation. The
• Architectural design stage detailed design specifications should be sufficient to
allow programmers to code each module during
• High-level design stage construction (see Software Construction KA). The code
• Detailed design stage is a representation of the solution that is sufficiently
detailed and complete that a compiler (or interpreter)
The architectural design stage addresses the fundamentals of can execute it.
the system as a whole and situated in its environment (see
Software Architecture KA). 2.1 High-Level Design
High-level design specifies the interaction of a system’s
The high-level design stage is outward-facing—developing
major components with one another and with the environment,
the top-level structure and organization of the software,
including users, devices and other systems. High-level design
identifying its various components and how that software system
addresses the following:
and its components interact with the environment and its
elements. • External events and messages to which the system must
respond
The detailed design stage is inward-facing—specifying each
component in sufficient detail to facilitate its construction and to • Events and messages which the system must produce
meet its outside obligations, including how software
components are further refined into modules and units. • Specification of the data formats and protocols for
events and messages
Each stage reflects the basic pattern outlined in section 1.1
Design Thinking. • Specification of the ordering and timing relationships
between input events and messages, and output events
Not all stages are found in every software process. However, and messages
when present, each stage creates an obligation upon the next
stage regarding the software which is under development. • Data persistence (how data is stored and managed)
Although software developers generally follow similar High-level design is undertaken within the envelope
guidelines for what happens in each stage, there are no strict established by the system’s software architecture (if any). Each
boundaries between stages regarding what must be done and of the above may be guided or constrained by architecture
when. For example, for many software systems, the choice of an directives. For example, event signaling and messaging will use
algorithm to sort data will be deferred to programmers, within the protocols and modes of interaction established by the
the constraints and guidance provided by the system’s architecture. Data formats and protocols will use data and
requirements, its architecture description or design communication standards specified by the architecture. Absent
specifications. However, for another software system, the an explicit architecture design stage, some of these directives
existence of a suitable algorithm could be architecturally will be established by the software requirements or decided
significant and must be determined early in the life cycle. during high-level design.
Without that algorithm, there is no possibility of constructing the
2.2 Detailed Design
software to meet its requirements.
The detailed design stage proceeds within the constraints
Some rules of thumb for each stage include the following: established by the high-level design. It specifies major system
• The architectural design stage defines a computational components’ internal characteristics, internal modules and their
model, the major computational elements, and the interconnections to other modules, services and processes they
provide, computing properties, algorithms, and data access rules 3.6 Integration and Interoperability
and data structures. This includes the following: This issue arises at the enterprise or system-of-systems level
• Refinement of major system components into modules or for any complex software when heterogeneous systems or
or program units, including opportunities for using off- applications need to interwork through exchanges of data or
the-shelf components and application frameworks accessing one another’s services. Within a software system, the
issue arises when components are designed using different
• Allocation of design responsibilities to modules and frameworks, libraries or protocols.
program units
3.7 Assurance, Security and Safety
• Interactions among modules High assurance spans a number of software qualities,
• Scope and visibility among components, modules and including security and safety concerns, pertaining to whether the
program units software behaves as intended in critical situations, such as in the
face of hazards. Design for security concerns how to prevent
• Component modes, component states and transitions unauthorized disclosure, creation, change, deletion, or denial of
among them access to information and other resources in the face of attacks
upon the system or violations of system policies to limit damage;
• Data and control interdependencies
provide continuity of service; and assist repair and recovery.
• Data organization, packaging and implementation Design for safety pertains to managing the software’s behavior
in circumstances which might lead to harm to or loss of human
• User interfaces life or damage to property or the environment.
• Requisite algorithms and data structures 3.8 Variability
3 SOFTWARE DESIGN QUALITIES Variability concerns permissible variations in software, as
arises for example in software product lines and system families,
Software requirements and architecture directives are to accommodate and manage multiple different deployments
intended to guide software toward certain characteristics or such as for different organizations or markets.
design qualities. Design qualities are an important subclass of
concerns (see topic Stakeholders and Concerns in Software 4 RECORDING SOFTWARE DESIGNS
Architecture KA). One role of design principles (see section 1.4
Software Design Principles) is to help software achieve these The outcome of design processes is accumulated knowledge
qualities. Among the characteristics of interest to designers are and work products recording that knowledge. Work products of
the following: software design capture (1) aspects of the problems to be solved,
using the vocabulary of the domain; (2) a solution vocabulary
3.1 Concurrency for solving the design problems (see section 1.1 Design
Design for concurrency concerns how software is refined Thinking); (3) the major decisions that have been taken; and
into concurrent units such as processes, tasks, and threads and (4) explanations of the rationale for each nontrivial decision.
the consequences of those decisions with respect to efficiency, Recording the rationale for important decisions enhances the
atomicity, synchronization and scheduling. software product’s long-term maintainability when
modifications or enhancements are considered (see section 4.6
3.2 Control and Event Handling Design Rationale). These work products, often termed design
Event handling is concerned with how to organize control descriptions or design specifications, can take the form of texts,
flow as well as how to handle reactive and temporal events diagrams, models and prototypes that comprise the blueprints of
through various mechanisms including synchronization, implicit the software to be implemented.
invocation and callbacks. A fundamental aspect of software design is communication
3.3 Data Persistence about the design to customers, other designers, implementers
and other stakeholders. This is true whether the software is
Data persistence concerns the storage and management of
developed using agile, traditional or formal methods. The
data throughout the system.
communication will vary depending upon the target audience,
3.4 Distribution of Components the level of detail being communicated, and relevance to the
Distribution concerns how software components are concerns of the stakeholders. While implementers are an
distributed across hardware (including computers, networks and important audience for design specifications, testing and quality
other devices) and how those components communicate while assurance personnel, certification authorities, and requirements
meeting performance, reliability, scalability, availability, analysts will also use the design specifications in their work.
monitorability, business continuity and other expectations. Therefore, design specifications should have a clearly defined
audience, subject and intended usage.
3.5 Errors and Exception Handling, Fault Tolerance
Designers can analyze and evaluate these work products to
This concern pertains to how to prevent, avoid, mitigate, determine whether the design can meet the requirements and
tolerate and process errors and exceptional conditions. constraints on the software. Software design also examines and
evaluates alternative solutions and trade-offs. In addition to
using them as inputs and as the starting point for construction
and testing, stakeholders can use the design work products to 4.2 Structural Design Descriptions
plan subsequent activities, such as system verification and The following types of notation, most of which are graphical,
validation. are used to represent the structural aspects of a software
As design concepts evolve, so do their representations (see design—that is, they are used to describe the major components
section 1.1 Design Thinking); part of the design process involves and how they are interconnected (static view) and the allocation
creating appropriate vocabularies for problems and solutions. An of responsibilities to components and modules:
informal sketch may be most appropriate for the early stages. It • Class and object diagrams are used to represent a set of
is useful to distinguish in-process (“working”) specifications classes and objects and their interrelationships.
from final design products. The former are produced by the
design team for the design team; the latter may be produced for • Component diagrams are used to represent a set of
known stakeholders or even for an unknown future audience. components (“physical and replaceable part[s] of a
system that [conform] to and [provide] the realization of
Many notations exist to represent software design artifacts.
a set of interfaces” [1]) and their interconnections.
Software design is often carried out using multiple types of
Component models evolved from earlier module
notation. Two broad areas of concern are software structures and
interconnection languages into the package systems of
software behaviors. Some are used to describe a design’s
programming languages like Ada and Java and the
structural organization, others to represent the software’s sophisticated module systems of current functional
intended behavior. Below, they are categorized as notations for language systems such as Haskell and Coq.
structural and behavioral concerns (see section 4.2 Structural
Design Descriptions and section 4.3 Behavioral Design • Class responsibility collaborator cards (CRCs) are used
Descriptions, respectively). Certain notations are used mostly to denote the names of components (classes), their
during architectural design and others mainly during detailed responsibilities and the components they interact with to
design; some are useful throughout all stages of software design. meet those responsibilities.
Some notations are closely tied to the context of specific design
methods (see Software Design Strategies and Methods KA). • Deployment diagrams are used to represent a set of
physical nodes and their interconnections to model the
The Unified Modeling Language (UML) is a widely used physical aspects of software as deployed on hardware.
family of notations addressing both structural and behavioral
concerns and is used in all design stages, from architectural • Entity relationship diagrams (ERDs) are used to
through detailed design [1]. represent conceptual, logical and physical models of
data as stored in information repositories or as a part of
4.1 Model-Based Design interface descriptions.
Over the history of software engineering, including
• Interface description languages (IDLs) are
architecture and design, there has been an evolution from
programming-like languages used to define the
document-based artifacts to model-based artifacts. Model-based
interfaces (names and types of exported operations) of
design (MBD) is an approach to recording designs where models
software components.
play an important role.
This trend reflects the limitations of document-based • Structure charts are used to describe the calling structure
artifacts and the increased capabilities of automated tools. of programs (that is, they show which modules call, and
Document-based artifacts use natural language and informal are called by, which other modules).
diagrams to convey designers’ intentions, which might introduce 4.3 Behavioral Design Descriptions
ambiguity and incompleteness. Even when documents use well- The following notations and languages, some graphical and
defined formats, relevant information might be spread across some textual, are used to describe the dynamic behavior of
documents, making understandability and analysis difficult. software systems and their components. Many of these notations
With MBD, appropriate tooling can gather and organize relevant are useful mostly, but not exclusively, during detailed design.
information for use by designers and other stakeholders in an Moreover, behavioral descriptions can include rationale for
accessible form. design decisions (see section 4.6 Design Rationale).
Modern tools have accelerated the trend from document to
model-based artifacts. Tooling enables animation or simulation • Activity diagrams are used to show flow of a
of various software aspects, analyses of what-if scenarios and computation from activity to activity. They also can
trade-offs, and rapid prototyping. Tooling also facilitates represent concurrent activities, their inputs and outputs
continuous testing and integration approaches, enhanced and and opportunities for concurrency.
interactive traceability, and knowledge capture and
management, which are inefficient or even infeasible with
• Communication diagrams are used to show the
interactions among a group of objects; the emphasis is
document-based approaches.
on the objects, their links and the messages they
Model-driven development (MDD) is a development exchange on those links.
paradigm that uses models as the development process’ primary
artifacts (see Software Engineering Models and Methods KA). • Data flow diagrams (DFDs) are used to show data flow
among computing elements. A DFD provides “a
description based on modeling the flow of information
around a network of operational elements, with each the behavioral logic of sequencing screens based upon user
element making use of or modifying the information actions. Specialized concerns such as safety and reliability often
flowing into that element” [4]. DFDs have other uses, have their own forms of representation that have evolved among
such as security analysis, as they identify possible paths specialists in those communities [19].
for attack and disclosure of confidential information.
A recent trend has been the maturing of domain-specific
• Decision tables and diagrams are used to represent languages (DSLs) and widely available tools to develop them.
complex combinations of conditions and actions. In this approach, part of the design process is codifying concepts
and constructs of a specific application domain to create a
• Flowcharts are used to represent the flow of control and computer language for that domain so that representing the
the sequence of associated actions. design using these constructs leads to an animated or executable
implementation. DSLs blur the lines among modeling
• Sequence diagrams are used to show the interactions languages, design languages and programming languages in this
among a group of objects, depicting the time ordering of approach.
messages passed among objects.
There are DSLs and supporting tools for domains such as
• State (transition) diagrams and statecharts are used to simulation; real-time, reactive and distributed systems; game
show transitions from state to state and how a development; user interfaces; test development; and language
component’s behavior changes based on its current state processing tools. The growth of DSLs has been facilitated by
and response to input events. increasingly powerful grammar-driven tools that, given a
language definition, can generate a graphical user interface,
• Formal specification languages are predominantly syntax checkers, code generators, compilers and linkers for the
textual languages founded upon basic notions from specialized language.
mathematics (for example, type, set, sequence, logical
proposition) to rigorously and abstractly define software 4.6 Design Rationale
component interfaces and behavior, often in terms of A useful design outcome is insight into and explicit
pre- and post-conditions, invariants, type checking, and documentation of the major decisions taken, along with an
computational models (see section Formal Methods in explanation of the rationale for each decision. Design rationale
Software Engineering Models and Methods KA). captures why a design decision was made. This includes prior
assumptions made, alternatives considered, and trade-offs and
• Pseudocode and program design languages (PDLs) are criteria analyzed to select one approach and reject others.
structured, programming language-like notations used
to describe a procedure’s processing behavior, generally Although the reasons for decisions are likely to be obvious
at the detailed design stage. The use of these languages to the current design team, they can be less obvious to those who
is less common today but is still found in the modify or maintain the system after deployment. Recording the
documentation of algorithms. rationale enhances the software product’s long-term
maintainability. Continuing to capture the rationale for changes
4.4 Design Patterns and Styles during maintenance also contributes to the software’s viability.
Succinctly described, a pattern is “a common solution to a
common problem in a given context” [6]. Architectural styles It can also be useful to capture rejected decisions and the
can be viewed as patterns “in the large,” describing common reasons for rejection. Capturing these rationales can enable a
solutions to architecture-level problems that pervade the team to revisit a previously rejected decision when assumptions,
software. Design patterns include the following: requirements or constraints change. The importance of rationale
is visible, for example, in free and open-source software (FOSS)
• Creational patterns (e.g., builder, factory, prototype, projects, which often involve large, distributed teams of
singleton) developers with frequent turnover.
• Structural patterns (e.g., adapter, bridge, composite, Design rationale may be captured as part of a software design
decorator, façade, flyweight, proxy) description or as a companion artifact. Often rationale is
captured in text, but other forms of representation can also be
• Behavioral patterns (e.g., command, interpreter, iterator, used, such as graphs that portray a design as an interconnected
mediator, memento, observer, peer-to-peer, publish- network of decisions.
subscribe, state, strategy, template, visitor)
5 SOFTWARE DESIGN STRATEGIES AND METHODS
Design patterns and styles reflect idioms that have proven
useful in solving particular design problems in the past. They Various strategies and methods exist to structure and guide
arise at all stages of design, including architecture (see also the design process; many of these evolved from programming
section 2.2 Architecture Styles and Patterns, Software styles or paradigms. In addition to embodying one or more
Architecture KA). general strategies, most design methods focus on making one or
more design concepts (whether objects, methods or events)
4.5 Specialized and Domain-specific languages prominent as organizing themes for the software. These themes
Not every design representation falls easily into the then guide the designers as to what to focus on first, how to
structure/behavior dichotomy. For example, user interface proceed, and how to structure modules.
design mixes the structural layout of what a user might see with
5.1 General Strategies invocation) [13]. Publish/subscribe messaging (broadcasting) is
Some often-cited examples of general strategies useful in the often used as means of transporting events via the network to all
design process include divide-and-conquer and stepwise interested subscribers. Publish/subscribe keeps the producers
refinement strategies; top-down vs. bottom-up strategies; and consumers decoupled using a message broker with channels
strategies using heuristics, patterns and pattern languages; and called topics. This differs from Point-to-point messaging where
iterative and incremental approaches. senders and receivers need to know each other to deliver and
receive a message. Different types of event processing exist, i.e.
5.2 Function-Oriented (or Structured) Design simple event processing, event stream processing and complex
This is one of the classical software design methods. It event processing. Message-based systems frequently
focuses on refinement (or decomposition) to identify major incorporate identifiable senders and receivers within the design.
software functions, elaborating them in a top- down manner. Event-driven systems may not identify senders and receivers
Structured design often follows structured analysis, producing explicitly—instead each module produces events while listening
DFDs and associated process descriptions. Various tools enable for any events they care about or need to respond to [12].
the automated translation of DFDs into high-level designs. “Anonymous” asynchronous message and event processing are
good strategies for scalable systems.
5.3 Data-Centered Design
5.8 Aspect-Oriented Design (AOD)
Data-centered design starts from the data structures a
program manipulates rather than from the functions it performs. AOD is a method by which software is constructed using
The software designer specifies the input and output data aspects to implement the crosscutting concerns and extensions
structures and then develops program units that transform inputs identified in software requirements [11]. AOD evolved from
into outputs. Various heuristics have been proposed to deal with object-oriented design and programming practices. Although it
special cases, such as cases where there is a mismatch between has yet to become a widespread design or programming
the input and output structures. paradigm, the aspect-oriented perspective is frequently used in
application frameworks and software libraries where parameters
5.4 Object-Oriented Design of the framework or library can be configured with aspect
Numerous software design methods based on objects have declarations.
been proposed. The field has evolved from the early object-
5.9 Constraint-Based Design
oriented design of the mid-1980s (where nouns depict objects;
verbs depict methods; and adjectives depict attributes), where Constraints’ role in the design process is to limit the size of
inheritance and polymorphism play key roles, to the field of a design space to exclude infeasible or unacceptable alternatives.
component-based design (CBD), where metainformation can be Constraints accelerate design because they force a few early
defined and accessed (through reflection, for example). decisions. The constraints can reflect limits imposed on the
Although OOD’s roots stem from the concept of data hardware, software, data, operational procedures, interfaces or
abstraction, responsibility-driven design has been proposed as an anything that affects the software. The constrained design space
alternative underlying principle of OOD. can then be explored with search or backtracking methods.
Constraint-based design approaches are used in user interface
5.5 User-Centered Design design, gaming and other applications. In general, constraint
User-centered design is more than a design method; it is a satisfaction problems can be NP-hard; however, various kinds of
multidisciplinary approach emphasizing a deep understanding of constraint-based programming can be used to approximate or
users and their needs as the basis for designing user experiences solve constraint problems.
within the context of their organization and the tasks to be
5.10 Other Methods
accomplished. It involves gathering user requirements, creating
a user flow of tasks and decisions, creating prototypes or Other approaches to design exist (see Software Engineering
mockups representative of user interfaces, and evaluating the Models and Methods KA). For example, iterative and adaptive
design solution against original requirements [14]. methods implement software increments and reduce the
emphasis on rigorous software requirements and design.
5.6 Component-Based Design (CBD)
Service-oriented methods builds distributed software using
CBD decomposes a software system into one or more
web services executed on distributed computers. Software
standalone components that communicate only on well-defined
systems are often constructed using services from different
interfaces and conform to a system-wide standard component
providers interconnect with standard protocols (e.g., HTTP,
model. A software component is an independent unit, having
HTTPS, SOAP) designed to support service communication and
well-defined interfaces and dependencies that can be composed
service information exchange.
and deployed independently. CBD addresses issues related to
providing, developing and integrating such components to 6 SOFTWARE DESIGN QUALITY ANALYSIS AND
improve reuse. CBD often emphasizes common APIs for all EVALUATION
components and specialized APIs for specific services or
responsibilities. 6.1 Design Reviews and Audits
5.7 Event-Driven Design Design reviews are intended as comprehensive examinations
of a design to assess concerns such as status or degree of
Event-driven design is an approach where a system or completion, coverage of requirements, open or unresolved issues
component invokes its operations in reaction to events (indirect and potential problems. A design review can be undertaken at
any stage of design. Design reviews can be conducted by the mistakes). (See also Software Engineering Models and
design team, by an independent third party or other stakeholder. Methods KA.)
A design audit is more narrowly focused on a set list of
characteristics (e.g., a functional audit). (See also section 2.3 • Simulation and prototyping: dynamic techniques to
Reviews and Audits in Software Quality KA). evaluate a design (for example, performance simulation
or feasibility prototypes).
6.2 Quality Attributes
6.4 Measures and Metrics
Various attributes contribute to the quality of a software
design, including various “ilities” (maintainability, portability, Measures can be used to assess or to quantitatively estimate
testability, usability) and “nesses” (correctness, robustness). various aspects of a software design; for example, size, structure,
Qualities are a major subset concerns (see topic Stakeholders or quality. Most measures that have been proposed are based
and Concerns in Software Architecture KA). Some qualities can upon the approach used for producing the design (see topic 5
be observed at runtime (e.g., performance, security, availability, Software Design Strategies and Methods). These measures are
functionality, usability); others cannot (e.g., modifiability, classified in two broad categories:
portability, reusability, testability); some (e.g., conceptual • Function-based (structured) design measures: measures
integrity, correctness, completeness) are intrinsic to the obtained by analyzing functional decomposition;
software. generally represented using a structure chart (or
6.3 Quality Analysis and Evaluation Techniques hierarchical diagram) on which various measures can be
calculated.
Various tools and techniques can help in analyzing and
evaluating software design quality. (See also topic Software • Object-oriented design measures: the design structure is
Quality Tools in Software Quality KA.) typically represented as a class diagram, on which
various measures can be computed. Measures on the
• Software design reviews include informal and rigorous
properties of the internal content of each class can also
techniques to determine software qualities based on
be calculated.
SDDs and other design artifacts for example,
architecture reviews, design reviews and inspections; 6.5 Verification, Validation and Certification
scenario-based techniques; requirements tracing. Systematic analysis or evaluation of the design plays an
• Static analysis: formal or semiformal static important role in each of these three areas:
(nonexecutable) analysis that can be used to evaluate a • verification: to confirm that the design satisfies stated
design (for example, fault-tree analysis or automated requirements;
cross-checking). Design vulnerability analysis (for
example, static analysis for security weaknesses) can be • validation: to establish that the design will allow the
performed if security is a concern. Formal design system to meet the expectations of its stakeholders,
analysis uses mathematical models that allow designers including customers, users, operators and maintainers;
to predict the behavior and validate the performance of
the software instead of having to rely entirely on testing. • certification: third-party attestation of conformity of
Formal design analysis can be used to detect residual design to its overall specification and intended usage.
specification and design errors (perhaps caused by (See also section 2.2 Verification and Validation in Software
imprecision, ambiguity, and sometimes other kinds of Quality KA.)

MATRIX: TOPICS VS. REFERENCE MATERIAL


In table below, cX means chapter X

Software Design Brooks Budgen Gamma et al. Sommerville See


Fundamentals [3*] [4*] [6*] [19*] also
Design Thinking c1, c2, c3 c1, c2 [3,
18]
Context of c13, c14 c19, c20
Software Design
Key Issues in [2,
Software Design 11]
Software Design [5, 9,
Principles 15,
18]
Software Design c3 c2, c7 [9]
Processes
High-level Design c5 c6 [9]
Detailed Design [9]
Software Design c4
Qualities
Concurrency c17
Control and c21
Handling of
Events
Data Persistence c6, c16
Distribution of c17
Components
Errors and c11
Exception
Handling, Fault
Tolerance
Integration and c11, c14,
Interoperability c16
Assurance, c10–c14
Security and
Safety
Recording c7, c8 [1]
Software Designs
Model-based c7.3 c5.5
Design
Structural Design c7, c10 c4 c5.3
Descriptions
Behavioral Design c9, c10 c5 c5.4
Descriptions
Design Patterns c12 c15 c1, c2 c7.2 [6]
and Styles
Specialized and c15
Domain-specific
languages
Design Rationale c16 c12 c6.1
Software Design c3
Strategies
General c13
Strategies
Function- c9
Oriented
(“Structured”)
Design
Data-Centered c9
Design
Object-Oriented c10
Design
User-Centered c9 [14]
Design
Component- c11, c16 c16
Based Design
(CBD)
Event-Driven [11,
Design 13]
Aspect-Oriented [11]
Design
Constraint- c11
Based Design
Other Methods c18–c21
Software Design c17 c24
Quality Analysis
and Evaluation
Design Reviews c5.3
and Audits
Quality c24
Attributes
Quality Analysis c24
and Evaluation
Techniques
Measures and c5, c17 c24.5
Metrics
Verification, c7,c8
Validation and
Certification
FURTHER READINGS
Brooks, The Design of Design [3*]
Brooks, one of the pioneers of software engineering,
provides a collection of essays and case studies on all aspects
of software design.
REFERENCES
[1] * Booch, G, J. Rumbaugh, and I. Jacobson, The Unified Modeling
Language User Guide, 2nd edition, Addison-Wesley, 2005.
[2] Bosch, J., Design and Use of Software Architectures: Adopting and
Evolving a Product-Line Approach, ACM Press, 2000.
[3] * Brooks, F. The Design of Design, Addison-Wesley, 2010.
[4] * Budgen, D. Software Design: Creating Solutions for Ill-structured
problems, 3rd Edition CRC Press, 2021.
[5] Dijkstra, E. W., On the role of scientific thought. 1974.
http://www.cs.utexas.edu/users/EWD/transcriptions/EWD04xx/EWD
447.html.
[6] * Gamma, E. et al., Design Patterns: Elements of Reusable Object-
Oriented Software, 1st ed, Addison-Wesley, 1994.
[7] Gregor, S. and Jones, D., The anatomy of a design theory, Association
for Information Systems, 2007.
[8] IEEE Std 7000™-2021, IEEE Standard Model Process for Addressing
Ethical Concerns during System Design.
[9] ISO/IEC/IEEE 12207, Systems and software engineering — Software
life cycle processes.
[10] ISO/IEC/IEEE 24765, Systems and software engineering —
Vocabulary.
[11] Kiczales, G. et al., Aspect-Oriented Programming, Proc. 11th
European Conf. Object-Oriented Programming (ECOOP 97),
Springer, 1997.
[12] Luckham, D., The power of events: an introduction to Complex Event
Processing, Addison-Wesley, 2002.
[13] Mühl, G., Fiege, L. and Pietzuch, P., Distributed event-based systems,
Spring-Verlag, 2006.
[14] Nielsen, J. Usability Engineering, Morgan Kaufman, 1994.
[15] Parnas, D.L. On the criteria to be used in decomposing systems into
modules, Communications of the ACM 15(12), 1053–1058, 1972.
[16] Parnas, D.L. and Clements, P.C. A rational design process: How and
why to fake it, IEEE Transactions on Software Engineering 12(2),
251– 257, 1986.
[17] Parnas, D.L. and Weiss, D.M. Active design reviews: Principles and
practices, Journal of Systems & Software 7, 259–265, 1987
[18] Ross, D.T., Goodenough, J.B., Irvine, A. Software Engineering:
Process, Principles, and Goals, IEEE Computer, May 1975.
[19] * Sommerville, I. Software Engineering, 10th edition, Pearson, 2016.

XXX-X-XXXX-XXXX-X/XX/$XX.00 ©20XX IEEE


CHAPTER 4
SOFTWARE CONSTRUCTION

ABBREVIATIONS
API Application programming interface
ASIC Application-specific integrated circuit
BaaS Backend as a service
CI Continuous integration
COTS Commercial off-the-shelf
CSS Cascading style sheets
DSL Domain-specific language
DSP Digital signal processor
ESB Enterprise service bus
FPGA Field programmable gate array
GUI Graphical user interface
HTML5 HyperText markup language version 5
IDE Integrated development environment
IEEE Institute of electrical and electronics engineers
ISO International organization for standardization
J2EE Java 2 platform, enterprise edition
KA Knowledge area
MDA Model-driven architecture
NPM Node Package Manager
OMG Object management group
PIM Platform independent model
POSIX Portable operating system interface
PSM Platform-specific model
SDK Software development kit
TDD Test-driven development
UML Unified Modeling Language
WYSIWY What you see is what you get
G

Software Construction 4–1 © IEEE – SWEBOK Guide V4


INTRODUCTION First, software construction typically
produces the highest number of configuration
items that need to be managed in a software
Software construction refers to the detailed
project (e.g., source files, documentation, test
creation and maintenance of software
cases). Thus, the Software Construction KA
through coding, verification, unit testing,
is closely linked to the Software
integration testing and debugging.
Configuration Management KA.

The Software Construction Knowledge Area


Second, while quality is important in all the
(KA) is linked to all the other KAs, but it is
KAs, code is a software project’s ultimate
most strongly linked to the Software Design
deliverable, and code is produced during
and Software Testing KAs because the
construction. Thus, the Software Quality KA
software construction process involves
is closely linked to the Software Construction
significant design and testing. The process
KA.
uses the design output and provides an input
to testing (“design” and “testing” in this case
referring to the activities, not the KAs). Third, while project management involve
Boundaries among design, construction and various software development tasks, software
testing (if any) vary depending on the construction typically produces the most
software life cycle processes used in a deliverables of a software project. Thus, the
project. Software Construction KA is closely linked
to the Software Engineering Management
KA.
Although some detailed design might be
performed before construction, much design
work is performed during construction. Thus, Fourth, since software construction requires
the Software Construction KA is closely knowledge of algorithms and coding
linked to the Software Design KA. practices, this KA is closely related to the
Computing Foundations KA, which concerns
the computer science foundations supporting
Also, throughout construction, software
software product design and construction.
engineers both unit-test and integration-test
their work. Thus, the Software Construction
KA is closely linked to the Software Testing
BREAKDOWN OF TOPICS FOR SOFTWARE
KA as well.
ARCHITECTURE
The breakdown of topics for the Software
The Software Construction KA is also related Architecture KA is shown in Figure 4-1.
to configuration management, quality,
project management and computing, and thus
to the relevant KAs.

Software Construction 4–2 © IEEE – SWEBOK Guide V4


The first four concepts apply to design as well
Fig. 1. Breakdown of Topics for the Software Construction KA as to construction. The following sections
define these concepts and describe how they
1. Software Construction
apply to construction.
Fundamentals
Software construction fundamentals include
1.1.Minimizing Complexity [1]
the following:
Most people have limited ability to hold
● Minimizing complexity complex structures and information in their
● Anticipating and embracing change working memories, especially over long
● Constructing for verification periods. This greatly influences how people
● Reusing assets convey intent to computers and drives one of
● Applying standards in construction the key goals in software construction — to
minimize complexity. The need to reduce
complexity applies to essentially every aspect

Software Construction 4–3 © IEEE – SWEBOK Guide V4


of software construction and is particularly
critical to testing software constructions. Moreover, today’s business environments
require many organizations to deliver and
Several types of complexity can affect deploy software more frequently, faster and
software construction. Tools can be used to more reliably. Anticipating specific,
manage different aspects of the complexity of necessary changes can be difficult, so
software components and their construction. software engineers should be careful to build
For example, cyclomatic complexity is a flexibility and adaptability into the software
static analysis measure of how difficult code to incorporate changes with less difficulty.
is to test and understand. The tool, developed These software teams should embrace change
by Thomas J. McCabe, Sr., in 1976, by adopting agile development, practicing
calculates the number of linearly independent DevOps, and by adopting continuous
paths through a program’s source code. delivery and deployment practices. Such
Ideally, there should be at least that number practices align the software development
of test cases. Other examples are tools like process and management with an
Make, which can build an application, or evolutionary environment.
integrated development environments (IDEs)
for entering, editing and compiling code. 1.3.Constructing for Verification [1]
These tools help manage the complexity of Constructing for verification builds software
the construction process. in such a way that faults can be readily found
by the software engineers writing the
In software construction, reduced complexity software as well as by the testers and users
is achieved by creating simple and readable during independent testing and operational
code rather than clever code. This is activities. Specific techniques that support
accomplished by using standards (see section constructing for verification include
1.5, Standards in Construction), modular following coding standards to support code
design (see section 3.1, Construction Design) reviews and unit testing, organizing code to
and numerous other specific techniques (see support automated testing, and restricting the
section 3.3, Coding). Construction-focused use of complex or difficult-to-understand
quality techniques also support this (see language structures.
section 3.6, Construction Quality).
1.4.Reusing Assets [2]
1.2.Anticipating and Embracing Reuse means using existing assets to solve
Change [1, 2, 3] different problems. In software construction,
Most software changes over time, and typical assets that are reused include
anticipating change drives many aspects of frameworks, libraries, modules, components,
software construction; changes in the source code and commercial off-the-shelf
environments in which software operates also (COTS) assets. Reuse has two closely related
affect software in diverse ways. Anticipating facets: construction for reuse and
change helps software engineers build construction with reuse. The former means
extensible software, enhancing a software creating reusable software assets, whereas
product without disrupting the underlying the latter means reusing software assets to
structure. Anticipating change is supported construct a new solution. Reuse often
by many specific techniques (see section 3.3, transcends project boundaries, which means
Coding).

Software Construction 4–4 © IEEE – SWEBOK Guide V4


reused assets can be constructed in other Use of internal standards: Standards may also
projects or organizations. be created on an organizational basis at the
corporate level or for use on specific projects.
1.5.Applying Standards in Construction These standards support coordinating group
[1] activities, minimizing complexity,
anticipating change and constructing for
Applying external or internal development
verification.
standards during construction helps achieve a
project’s efficiency, quality and cost
objectives. Specifically, the choices of 2. Managing Construction
allowable programming language subsets
and usage standards are important aids in 2.1.Construction in Life Cycle Models
achieving higher security. [1, 2, 3]
Numerous models have been created to
develop software; some emphasize
Standards that directly affect construction construction more than others.
issues include the following:

● Communication methods (e.g., Some models are more linear from the
standards for document formats and construction viewpoint, such as the waterfall
content) and staged-delivery life cycle models. These
● Programming languages (e.g., models treat construction as an activity that
standards for languages like Java and occurs only after the completion of
C++) significant prerequisite work, including
● Coding standards (e.g., standards for detailed requirements work, extensive design
naming conventions, layout and work and detailed planning. The more linear
indentation) approaches emphasize the activities that
● Platforms (e.g., interface standards precede construction (requirements and
for operating system calls) design) and create more distinct separations
● Tools (e.g., diagrammatic standards between activities. In these models,
for notations like UML (Unified construction’s main emphasis might be
Modeling Language)) coding.

Other models, such as evolutionary


Use of external standards: Construction prototyping and agile development, are more
depends on external standards for iterative. These approaches treat construction
construction languages, construction tools, as an activity that occurs concurrently with or
technical interfaces and interactions between overlaps other software development
the Software Construction KA and other activities (including requirements, design and
KAs. Standards come from numerous planning). These approaches mix design,
sources, including hardware and software coding and testing activities, and they often
interface specifications (e.g., object treat the combination of activities as
management group (OMG)) and construction (see the Software Engineering
international organizations (e.g., the institute Management and Software Process KAs).
of electrical and electronics engineers (IEEE)
or the international organization for
The practices of continuous delivery and
standardization (ISO)).
deployment further mix coding, testing,

Software Construction 4–5 © IEEE – SWEBOK Guide V4


delivery and deployment activities. In these 2.3.Construction Measurement [1]
practices, software updates made during Numerous construction activities and
construction activities are continuously artifacts can be measured, including code
delivered and deployed into the production developed, modified, reused, and destroyed;
environment. The whole process is fully code complexity; code inspection statistics;
automated by a deployment pipeline that fault-fix and fault-find rates; effort; and
consists of various testing and deployment scheduling. These measurements can be
activities. useful for managing construction, ensuring
quality during construction and improving
Consequently, what is considered the construction process, among other uses
construction depends on the life cycle model (see the Software Engineering Process KA
used. In general, software construction is for more on measurement).
mostly coding and debugging, but it also
involves construction planning, detailed 2.4.Managing Dependencies [2]
design, unit testing, integration testing and Software products often heavily rely on
other activities. dependencies, including internal and external
(commercial or open-source) dependencies,
2.2.Construction Planning [1] which allow developers to reuse common
The choice of construction method is a key functionalities instead of reinventing the
aspect of the construction planning activity. wheel and substantially improve developers’
This choice affects the extent to which productivity. In addition, package managers
construction prerequisites are performed, the (e.g., Maven in Java and NPM in JavaScript)
order in which they are performed and the are widely used to automate the process of
degree to which they should be completed installing, upgrading, configuring and
before construction work begins. removing dependencies.

The approach to construction affects the The direct and indirect dependencies of
project team’s ability to reduce complexity, software products constitute a dependency
anticipate change and construct for supply chain network. Any dependency in the
verification. Each objective may also be supply chain network can introduce potential
addressed at the process, requirements and risk to software products and should be
design levels, but the choice of construction managed by developers or tools.
method will influence them. Unnecessary dependencies should be
avoided to improve build efficiency. License
conflicts between dependencies and software
Construction planning also defines the order
products should be avoided to reduce legal
in which components are created and
risk. Propagation of dependencies’ defects or
integrated, the integration strategy (for
vulnerabilities into software products should
example, phased or incremental integration),
be avoided to improve the quality of software
the software quality management processes,
products. Regulations and monitoring
the allocation of task assignments to specific
mechanisms should be developed to prevent
software engineers, and other tasks,
developers from introducing untrusted
according to the chosen method.
external dependencies.

Software Construction 4–6 © IEEE – SWEBOK Guide V4


3. Practical Considerations
Construction is an activity in which the The simplest construction language is a
software engineer often has to deal with configuration language, in which software
sometimes chaotic, changing and even engineers choose from a limited set of
conflicting real-world constraints. Because of predefined options to create new or custom
real-world constraints, practical software installations. The text-based
considerations drive construction more than configuration files used in both the Windows
some other KAs, and software engineering is and Unix operating systems are examples of
perhaps most craft-like in the construction this, and some program generators’ menu-
activities compared with other activities. style selection lists constitute another
example of a configuration language.
3.1.Construction Design [1, 2]
Some projects allocate considerable design Toolkit languages are used to build
activity to construction, whereas others applications from elements in toolkits
allocate design to a phase explicitly focused (integrated sets of application-specific
on design. Regardless of the exact allocation, reusable parts); they are more complex than
some detailed design work occurs at the configuration languages. Toolkit languages
construction level, and that design work is may be explicitly defined as application
dictated by constraints imposed by the real- programming languages, or the applications
world problem the software addresses. might be implied by a toolkit’s set of
interfaces.
Just as construction workers building a
physical structure must make small Scripting languages are commonly used
modifications for unanticipated gaps in the application programming languages. In some
builder’s plans, software construction scripting languages, scripts are called batch
workers must make small or large files or macros.
modifications to flesh out software design
details during construction. Programming languages are the most
flexible construction languages. They also
The details of the design activity at the contain the least amount of information about
construction level are essentially the same as specific application areas and development
described in the Software Design KA, but processes. Therefore, they require the most
they are applied at a smaller scale to training and skill to use effectively. The
algorithms, data structures and interfaces. choice of programming language can greatly
affect the likelihood of vulnerabilities being
introduced during coding (e.g., uncritical use
3.2.Construction Languages [1] of C and C++ is questionable from a security
Construction languages include all forms of viewpoint).
communication by which a human can
specify an executable solution to a problem.
Three general notations are used for
Consequently, construction languages and
programming languages:
their implementations (e.g., compilers) can
affect software quality attributes such as ● Linguistic (e.g., C/C++, Java)
performance, reliability and portability. As a
● Formal (e.g., Event-B)
result, they can seriously contribute to ● Visual (e.g., MATLAB)
security vulnerabilities.

Software Construction 4–7 © IEEE – SWEBOK Guide V4


C/C++ or Java, a DSL is designed for the
Linguistic notations are distinguished in application construction of a particular
particular by the use of textual strings to domain. Therefore, a DSL usually can be
represent complex software constructions. defined based on a higher level of abstraction
The combination of textual strings in patterns of the target domain and can be optimized for
may have a sentence-like syntax. Properly a specific class of problems. Furthermore, A
used, each string should have a strong DSL usually can be expressed by visual
semantic connotation providing an notations defined by domain-specific
immediate intuitive understanding of what concepts and rules.
happens when the software construction is
executed. 3.3.Coding [1]
The following considerations apply to the
Formal notations rely less on intuitive, software construction coding activity:
everyday meanings of words and text strings
and more on definitions backed by precise, ● Techniques for creating
unambiguous and formal (or mathematical) understandable source code,
definitions. Formal construction notations including naming conventions and
and methods are at the semantic base of most source code layout
system programming notations, where ● Use of classes, enumerated types,
accuracy, time behavior and testability are variables, named constants and other
more important than ease of mapping into similar entities
natural language. Formal constructions also ● Use of control structures
use precisely defined ways of combining ● Handling of error conditions — both
symbols that avoid the ambiguity of many anticipated and exceptional (e.g.,
natural language constructions. input of bad data)
● Prevention of code-level security
Visual notations rely much less on the textual breaches (e.g., buffer overflows or
notations of linguistic and formal array index bounds)
construction and more on direct visual ● Resource use through use of
interpretation and placement of visual entities exclusion mechanisms and discipline
that represent the underlying software. Visual in accessing serially reusable
construction is somewhat limited by the resources, including threads and
difficulty of making “complex” statements database locks
using only the arrangement of icons on a ● Source code organization into
display. However, these icons can be statements, routines, classes,
powerful tools in cases where the primary packages or other structures
programming task is to build and “adjust” a ● Code documentation
visual interface to a program, the detailed ● Code tuning
behavior of which has an underlying
definition.
3.4.Construction Testing [1, 2]
Construction involves two forms of testing,
Nowadays, domain-specific languages
which are often performed by the software
(DSLs) are widely used to build domain-
engineer who wrote the code: unit testing and
specific applications. Unlike a general-
integration testing.
purpose programming language, such as

Software Construction 4–8 © IEEE – SWEBOK Guide V4


Construction testing aims to reduce the gap The tasks related to software construction for
between when faults are inserted into the reuse during coding and testing are as
code and when those faults are detected, follows:
thereby reducing the cost incurred to fix
them. In some instances, test cases are written ● Variability implementation with
after the code has been written. In other mechanisms such as
instances, test cases might be created before parameterization, conditional
code is written. compilation and design patterns
● Variability encapsulation to make the
Construction testing typically involves a software assets easy to configure and
subset of the various types of testing, customize
described in the Software Testing KA. For ● Testing the variability provided by
instance, construction testing does not the reusable software assets
typically include system testing, alpha ● Description and publication of
testing, beta testing, stress testing, reusable software assets
configuration testing, usability testing, or
other more specialized testing. Construction with reuse means creating new
software by reusing existing software assets.
The most popular reuse method is to reuse
Two standards have been published on code from the libraries provided by the
construction testing: IEEE Standard 829- language, platform, tools or an organizational
1998, “IEEE Standard for Software Test repository. Aside from these, many
Documentation,” and IEEE Standard 1008- applications developed today use open-
1987, “IEEE Standard for Software Unit source libraries. In addition, reused and off-
Testing.”
the-shelf software often have the same (or
better) quality requirements as newly
See sections 2.1.1 and 2.1.2 in the Software developed software (e.g., security level
Testing KA for more specialized reference requirements).
material.
The tasks related to software construction
3.5.Reuse in Construction [2] with reuse during coding and testing are as
Reuse in construction includes both follows:
construction for reuse and construction with
reuse. ● Selecting reusable units, databases,
test procedures or test data
Construction for reuse creates software with ● Evaluating code or test reusability
the potential to be reused in the future for the ● Integrating reusable software assets
present project or for other projects with a into the current software
broad-based, multisystem perspective. ● Reporting reuse information on new
Construction for reuse is usually based on code, test procedures or test data
variability analysis and design. To avoid the
problem of code clones, developers should The forms of reusable software assets are not
encapsulate reusable code fragments into limited to software artifacts that must be
well-structured libraries or components. locally integrated. Nowadays, cloud services
that provide various services through online
interfaces such as RESTful application

Software Construction 4–9 © IEEE – SWEBOK Guide V4


programming interfaces (APIs) are widely ● Test-first development (see section
used in applications. In the new cloud service 6.1.2 in the Software Testing KA)
model BaaS (backend as a service), ● Use of assertions and defensive
applications delegate their backend programming
implementations to cloud service providers ● Debugging
— for example, utilities such as ● Inspections
authentication, messaging and storage are ● Technical reviews, including
usually provided by cloud providers. security-oriented reviews (see
section 2.3 in the Software Quality
Reuse is best practiced systematically, KA)
according to a well-defined, repeatable ● Static analysis (see section 2.2.1 of
process. Systematic reuse can enable the Software Quality KA)
significant software productivity, quality and
cost improvements. Systematic reuse is The specific technique or techniques selected
supported by methodologies such as software depend on the software constructed and on
product line engineering and various the skill set of the software engineers
software frameworks and platforms. Widely performing the construction activities.
used frameworks such as Spring provide Programmers should know good practices
reusable infrastructures for enterprise and common vulnerabilities (e.g., from
applications so software teams can focus on widely recognized lists about common
application-specific business logic. vulnerabilities). Automated static code
Commercial platforms provide various analysis for security weaknesses is available
reusable frameworks, libraries, components for several common programming languages
and tools to support application development and can be used in security-critical projects.
to build their ecosystems.
Construction quality activities are
3.6.Construction Quality [1, 2] differentiated from other quality activities by
In addition to faults occurring during their focus. These activities focus on artifacts
requirements and design activities, faults that are closely related to code — such as
introduced during construction can cause detailed design — as opposed to other
serious quality problems (e.g., security artifacts that are less directly connected to the
vulnerabilities). These include not only faults code, such as requirements, high-level
in security functionality but also faults designs and plans.
elsewhere that allow bypassing of the
security functionality or create other security 3.7.Integration [1, 2, 3]
weaknesses or violations. During construction, a key activity is
integrating individually constructed routines,
Numerous techniques exist to ensure the classes, components and subsystems into a
quality of code as it is constructed. The single system. In addition, a particular
primary techniques used to ensure software system may need to be integrated
construction quality are the following: with other software or hardware systems.

● Unit testing and integration testing Concerns related to construction integration


(see section 3.4, Construction include planning the sequence in which
Testing) components are integrated, identifying what

Software Construction 4–10 © IEEE – SWEBOK Guide V4


hardware is needed, creating scaffolding to 3.8.Cross-Platform Development and
support interim versions of the software, Migration [4]
determining the degree of testing and quality Some applications, such as mobile
work performed on components before they applications, heavily rely on specific
are integrated, and determining points in the platforms (e.g., Apple, Android), which
project at which interim versions of the usually include operating systems,
software are tested. development frameworks and APIs. To
support multiple platforms, the developers
Programs can be integrated by means of need to develop and build an application
either the phased or the incremental separately for each target platform using the
approach. Phased integration, also called big corresponding program language and
bang integration, entails delaying the software development kit (SDK). However,
integration of component software parts until multi-platform development in this way
all parts intended for release in a version are requires more time and cost and might cause
complete. Incremental integration is thought different user experiences between different
to offer many advantages over the traditional implementations.
phased integration (e.g., easier error location,
improved progress monitoring, earlier Cross-platform development allows the
product delivery and improved customer developers to develop an application using a
relations). In incremental integration, the universal language and export it to various
developers write and test a program in small platforms. This usually can be done in two
pieces and then combine the pieces one at a ways for mobile applications. One way is to
time. Additional test infrastructure, generate native applications using specific
including, for example, stubs, drivers and tools that can compile the universal language
mock objects, is usually needed to enable into platform-specific formats. The other is to
incremental integration. In addition, by develop hybrid applications that combine
building and integrating one unit at a time web applications developed using languages
(e.g., a class or component), the construction like hypertext markup language version 5
process can provide early feedback to (HTML5) and cascading style sheets (CSS)
developers and customers. Other advantages and native containers or wrappers for various
of incremental integration include easier operations systems.
error location, improved progress monitoring
and more fully tested units, among others. For applications that are not developed in this
way, developers may consider migrating the
Nowadays, continuous integration (CI) has applications from one platform to another.
been widely adopted in practice. A software The migration usually involves translation of
team using CI integrates its work frequently, different programming languages and
leading to multiple integrations per day. CI is platform-specific APIs and can be partially
usually automated by a pipeline that builds automated by tools.
and tests each integration to detect errors and
provide fast feedback.
4. Construction Technologies

Software Construction 4–11 © IEEE – SWEBOK Guide V4


4.1.API Design and Use [5] instantiation of new objects at runtime and
An API is a set of signatures that are exported invocation of methods using parameterized
and available to the users of a library or a class and method names.
framework to write their applications.
Besides signatures, an API should always 4.3.Parameterization, Templates and
include statements about the program’s Generics [6]
effects and/or behaviors (i.e., its semantics). Parameterized types, also known as generics
(Ada, Eiffel) and templates (C++), enable a
API design should make the API easy to learn type or class definition without specifying all
and memorize, lead to readable code, be the other types used. The unspecified types
difficult to misuse, be easy to extend, be are supplied as parameters at the point of use.
complete, and maintain backward Parameterized types provide a third way
compatibility. As the APIs usually outlast (besides class inheritance and object
their implementations for a widely used composition) to compose behaviors in object-
library or framework, an API should be oriented software.
straightforward and stable, to facilitate client
application development and maintenance.
4.4.Assertions, Design by Contract and
API use involves selecting, learning, testing, Defensive Programming [1]
integrating and possibly extending APIs An assertion is an executable predicate
provided by a library or framework (see placed in a program — usually a routine or
section 3.5, Reuse in Construction). macro — that allows runtime checks of the
program. Assertions are especially useful in
4.2.Object-Oriented Runtime Issues [1] high-reliability programs. They enable
programmers to more quickly flush out
Object-oriented languages support runtime mismatched interface assumptions, errors
mechanisms, including polymorphism and that creep in when code is modified, and
reflection. These runtime mechanisms other problems. Assertions are typically
increase the flexibility and adaptability of compiled into the code at development time
object-oriented programs. and are later compiled out of the code so they
don’t degrade the performance.
Polymorphism is a language’s ability to
support general operations without knowing Design by contract is a development
until runtime what kind of concrete objects approach in which preconditions and
the software will include. Because the postconditions are included for each routine.
program does not know the types of the When preconditions and postconditions are
objects in advance, the exact behavior is used, each routine or class is said to form a
determined at runtime (called dynamic contract with the rest of the program. A
binding). contract precisely specifies the semantics of
a routine and thus helps clarify its behavior.
Reflection is a program’s ability to observe Design by contract is thought to improve the
and modify its structure and behavior at quality of software construction.
runtime. For example, reflection allows
inspection of classes, interfaces, fields and
Defensive programming means to protect a
methods at runtime without knowing their routine from being broken by invalid inputs.
names at compile time. It also allows

Software Construction 4–12 © IEEE – SWEBOK Guide V4


Common ways to handle invalid inputs and replacing an erroneous value with a
include checking the values of all the input phony value that will have a benign effect.
parameters and deciding how to handle bad
inputs. Assertions are often used in defensive 4.6.Executable Models [7]
programming to check input values. Executable models abstract away the details
of specific programming languages and
4.5.Error Handling, Exception decisions about the software’s organization.
Handling and Fault Tolerance [1] Different from traditional software models, a
How errors are handled affects software’s specification built in an executable modeling
ability to meet requirements related to language like xUML (executable UML) can
correctness, robustness and other be deployed in various software
nonfunctional attributes. Assertions are environments without change. Furthermore,
sometimes used to check for errors. Other an executable-model compiler (transformer)
error-handling techniques — such as can turn an executable model into an
returning a neutral value, substituting the implementation using a set of decisions about
next piece of valid data, logging a warning the target hardware and software
message, returning an error code or shutting environment. Thus, constructing executable
down the software — are also used. models is a way of constructing executable
software.
Exceptions are used to detect and process
errors or exceptional events. The basic Executable models are one foundation
structure of an exception is as follows: A supporting the model-driven architecture
routine uses throw to throw a detected (MDA) initiative of the OMG. An executable
exception, and an exception-handling block model is a way to specify a platform-
will catch the exception in a try-catch block. independent model (PIM); a PIM is a model
The try-catch block may process the of a solution to a problem that does not rely
erroneous condition or return control to the on any implementation technologies. Then a
calling routine. Exception-handling policies platform-specific model (PSM), which is a
should be carefully designed following model that contains the details of the
common principles, such as including in the implementation, can be produced by weaving
exception message all information that led to together the PIM and the platform on which
the exception, avoiding empty catch blocks, it relies.
knowing the exceptions the library code
throws, perhaps building a centralized 4.7.State-Based and Table-Driven
exception reporter, and standardizing the Construction Techniques [1]
program’s use of exceptions. State-based programming, or automata-
based programming, is a programming
Fault tolerance is a collection of techniques technology that uses finite-state machines to
that increase software reliability by detecting describe program behaviors. A state
errors and then recovering from them or machine’s transition graphs are used in all
containing their effects if recovery is not stages of software development
possible. The most common fault tolerance (specification, implementation, debugging
strategies include backing up and retrying, and documentation). The main idea is to
using auxiliary code and voting algorithms, construct computer programs in the same
way technological processes are automated.

Software Construction 4–13 © IEEE – SWEBOK Guide V4


State-based programming is usually 4.9.Grammar-Based Input Processing
combined with object-oriented [1, 8]
programming, forming a new composite Grammar-based input processing involves
approach called state-based, object-oriented syntax analysis, or parsing, of the input token
programming. stream. It creates a data structure (called a
parse tree or syntax tree) representing the
A table-driven method is a schema that uses input data. The inorder traversal of the parse
tables to display information rather than tree usually gives the expression just parsed.
convey information with logic statements Next, the parser checks the symbol table for
(such as if and case). When used in programmer-defined variables that populate
appropriate circumstances, table-driven code the tree. After building the parse tree, the
is simpler than complicated logic and easier program uses it as an input to the
to modify. When using table-driven methods, computational processes.
the programmer addresses two issues: what
information to store in the table or tables and 4.10.Concurrency Primitives [9]
how to efficiently access information in the A synchronization primitive is a
table. programming abstraction provided by a
programming language or the operating
4.8.Runtime Configuration and system that facilitates concurrency and
Internationalization [1] synchronization. Well-known concurrency
To achieve more flexibility, a program is primitives include semaphores, monitors and
often constructed to support its variables’ late mutexes.
binding time. For example, runtime
configuration binds variable values and A semaphore is a protected variable or
program settings when the program is abstract data type that provides a simple but
running, usually by updating and reading useful abstraction for controlling access to a
configuration files in a just-in-time mode. common resource by multiple processes or
threads in a concurrent programming
Internationalization is the technical activity environment.
of preparing a program, usually interactive
software, to support multiple locales. The A monitor is an abstract data type that
corresponding activity, localization, presents a set of programmer-defined
modifies a program to support a specific local operations executed with mutual exclusion.
language. Interactive software may contain A monitor contains the declaration of shared
dozens or hundreds of prompts, status variables and procedures or functions that
displays, help messages, error messages and operate on those variables. The monitor
so on. The design and construction processes construct ensures that only one process at a
should accommodate string and character set time is active in the monitor.
issues, including which character set is used,
what kinds of strings are used, how to A mutex (mutual exclusion) is a
maintain the strings without changing the synchronization primitive that grants
code and how to translate the strings into exclusive access to a shared resource by only
different languages with minimal impact on
one process or thread at a time.
the processing code and the user interface.

Software Construction 4–14 © IEEE – SWEBOK Guide V4


4.11.Middleware [5, 8] API gateway, service registration and
Middleware is a broad classification for discovery.
software that provides services above the
operating system layer yet below the 4.13.Constructing Heterogeneous
application program layer. Middleware can Systems [8]
provide runtime containers for software Heterogeneous systems consist of various
components to provide message passing, specialized computational units of different
persistence and a transparent location across types, such as digital signal processors
a network. Middleware can be viewed as a (DSPs), microcontrollers and peripheral
connector between the components using the processors. These computational units are
middleware. Modern message-oriented independently controlled and communicate
middleware usually provides an enterprise with one another. Embedded systems are
service bus (ESB) that supports service- typically heterogeneous systems.
oriented interaction and communication
among multiple software applications.
The design of heterogeneous systems may
require combining several specification
4.12.Construction Methods for languages to design different system parts
Distributed and Cloud-Based (hardware/software codesign). The key
Software [2, 9] issues include multilanguage validation, co-
A distributed system is a collection of simulation and interfacing.
physically separate, possibly heterogeneous
computer systems networked to provide the During the hardware/software codesign,
users with access to the resources the system software and virtual hardware development
maintains. The construction of distributed
proceed concurrently through stepwise
software is distinguished from traditional decomposition. The hardware part is usually
software construction by issues such as simulated in field programmable gate arrays
parallelism, communication and fault (FPGAs) or application-specific integrated
tolerance. circuits (ASICs). The software part is
translated into a low-level programming
Distributed programming typically falls into language.
several basic architectural categories: client-
server, three-tier architecture, n-tier 4.14.Performance Analysis and Tuning
architecture, distributed objects, loose [1]
coupling or tight coupling (see section 5.6 in
the Computing Foundations KA and section Code efficiency — determined by
2.2 in the Software Architecture KA). architecture, detailed design decisions, and
data structure and algorithm selection —
influences execution speed and size.
Nowadays, more applications are migrated to Performance analysis investigates a
the cloud. Cloud-based software often adopts program’s behavior using information
microservice architecture and container- gathered as the program executes to identify
based deployment. In addition to traditional possible hot spots in the program to be
distributed software issues, cloud-based improved.
software developers also need to consider
cloud infrastructure issues such as use of an
Code tuning, which improves performance at
the code level, modifies correct code to make

Software Construction 4–15 © IEEE – SWEBOK Guide V4


it run more efficiently. Code tuning usually important advantages of agile development
involves only small changes that affect a and DevOps. Agile development provides
single class, a single routine or, more early feedback for construction through
commonly, a few lines of code. A rich set of frequent iterations in the development
code tuning techniques is available, including process. DevOps provides even faster
those for tuning logic expressions, loops, data feedback from the operation, allowing the
transformations, expressions and routines. developers to learn how well their code
Using a low-level language is another performs in production environments. This
common technique for improving hot spots in fast feedback is achieved through techniques
a program. and practices in the DevOps pipeline, such as
automated building and testing, canary
4.15.Platform Standards [4, 8, 9] release, and A/B testing.
Platform standards enable programmers to
develop portable applications that can be 5. Software Construction Tools
executed in compatible environments
without changes. Platform standards usually 5.1.Development Environments [1]
involve standard services and APIs that A development environment, or integrated
compatible platform implementations must development environment (IDE), provides
use. Typical examples of platform standards comprehensive facilities to programmers for
are Java 2 platform, enterprise edition software construction by integrating a set of
(J2EE); the portable operating system development tools. The programmers’ choice
interface (POSIX) standard for operating of development environment can affect
systems, which represents a set of standards software construction efficiency and quality.
implemented primarily for Unix-based
operating systems; and HTML5, which Besides basic code editing functions, modern
defines the standards for developing web IDEs often offer other features, like
applications that can run on different compilation and error detection within the
environments (e.g., Apple iOS, Android). editor, integration with source code control,
build/test/debugging tools, compressed or
4.16.Test-First Programming [1, 2] outline views of programs, automated code
Test-first programming (also known as test- transforms, and support for refactoring.
driven development (TDD)) is a popular
development style in which test cases are Nowadays, cloud-based development
written before any code. Test-first environments are available in public or
programming can usually detect defects private cloud services. These environments
earlier and correct them more easily than can provide all the features of modern IDEs
traditional programming styles. Furthermore, and even more (e.g., containerized building
writing test cases first forces programmers to and deployment), powered by the cloud.
think about requirements and design before
coding, thus exposing requirements and 5.2.Visual Programming and Low-
design problems sooner. Code/Zero-Code Platforms [1]
Visual programming allows users to create
4.17.Feedback Loop for Construction [3] programs by manipulating visual program
Early and continuous feedback for the elements graphically. As a visual
construction activity is one of the most programming tool, a GUI (graphical user

Software Construction 4–16 © IEEE – SWEBOK Guide V4


interface) builder enables the developer to separately testable software elements (for
create and maintain GUIs in a WYSIWYG example, classes, routines, components).
(what you see is what you get) mode. A GUI Unit testing is often automated. Developers
builder usually includes a visual editor that can use unit testing tools and frameworks to
enables the developer to design forms and extend and create an automated testing
windows and manage the layout of the environment. For example, the developer can
widgets with drag, drop and parameter setting code criteria into the test with unit testing
features. Some GUI builders can tools and frameworks to verify the unit’s
automatically generate the source code correctness under various data sets. Each test
corresponding to the visual GUI design. is implemented as an object, and a test runner
Because GUI applications usually follow the runs the tests. Failed test cases will be
event-driven style (in which events and event automatically flagged and reported during the
handling determine the program flow), GUI test execution.
builder tools usually provide code generation
assistants, which automate the most 5.4.Profiling, Performance Analysis
repetitive tasks required for event handling. and Slicing Tools [1]
The supporting code connects widgets with Performance analysis tools are usually used
the outgoing and incoming events that trigger to support code tuning. The most common
the functions providing the application logic. performance analysis tools are profiling
Some modern IDEs provide integrated GUI tools. An execution profiling tool monitors
builders or GUI builder plug-ins. There are the code while it runs and records how often
also many stand-alone GUI builders. each statement is executed or how much time
the program spends on each statement or
Visual programming and other rapid execution path. Profiling the code while it
application development tools have evolved runs gives insight into how the program
into low-code/zero-code platforms. These works, where the hot spots are and where the
platforms allow developers to build complete developers should focus the code tuning
applications visually through a drag-and- efforts.
drop interface and with minimal hand-
coding. They are usually based on the Program slicing involves computing the set
principles of model-driven design, visual of program statements (i.e., the program
programming and code generation. The slice) that might affect the values of specified
difference between low-code development variables at some point of interest, which is
and zero-code development lies in hand- called a slicing criterion. Program slicing can
coding; the former requires a little hand- be used for locating error sources, program
coding, whereas the latter requires practically understanding and optimization analysis.
none. Program slicing tools compute program
slices for various programming languages
5.3.Unit Testing Tools [1, 2] using static or dynamic analysis methods.
Unit testing verifies the functioning of
software modules in isolation from other

Software Construction 4–17 © IEEE – SWEBOK Guide V4


MATRIX: TOPICS VS. REFERENCE MATERIAL
McConnell, Sommerville Kim et Heitkötter Clem Gam Mellor and Null Silber
2004 , 2016 al., 2021 et al., ents ma et Balcer, and schatz
[1] [2] [3] 2013 [4] et al., al., 2002 Lobur et al.,
2010 1994 [7] , 2006 2008
[5] [6] [8] [9]

1. Software Construction
Fundamentals
c2, c3, c7-c9, c24,
1.1. Minimizing Complexity c27, c28, c31,
c32, c34
1.2. Anticipating and Embracing c3-c5, c24, c31, c1, c3, c9 c1
Change c32, c34
c8,
1.3. Constructing for Verification
c20-c23, c31, c34
1.4. Reuse c15

1.5. Standards in Construction c4


2. Managing Construction
2.1. Construction in Life Cycle Models c2, c3, c27, c29 c3, c7 c1
c3, c4, c21, c27-
2.2. Construction Planning
c29
2.3. Construction Measurement c25, c28
2.4. Managing Dependencies c25

3. Practical Considerations
3.1. Construction Design c3, c5, c24 c7

3.2. Construction Languages c4


3.3. Coding c5-c19, c25-c26
3.4. Construction Testing c22, c23 c8

3.5. Reuse in Construction c15, c16


c8, c8, c24
3.6. Construction Quality
c20-c25
3.7. Integration c29 c8 c11
3.8. Cross-Platform Development and c
Migration
4. Construction Technologies
4.1. API Design and Use c7

4.2. Object-Oriented Runtime Issues c6, c7


4.3. Parameterization, Templates and c1
Generics
4.4. Assertions, Design by Contract and
c8, c9
Defensive Programming
4.5. Error Handling, Exception
c3, c8
Handling and Fault Tolerance
4.6. Executable Models c1
4.7. State-Based and Table-Driven
c18
Construction Techniques
4.8. Runtime Configuration and
c3, c10
Internationalization
4.9. Grammar-Based Input Processing c5 c8

4.10. Concurrency Primitives c6

4.11. Middleware c1 c8

Software Construction 4–18 © IEEE – SWEBOK Guide V4


4.12. Construction Methods for c17, c18
c2
Distributed and Cloud-Based Software
4.13. Constructing Heterogeneous c9
Systems
4.14. Performance Analysis and Tuning c25, c26
4.15. Platform Standards c c10 c1

4.16. Test-First Programming c22 c8

4.17. Feedback Loop for Construction c3, c16

5. Software Construction Tools


5.1. Development Environments c30
5.2. Visual Programming and Low-
c30
Code/Zero-Code Platforms
5.3. Unit Testing Tools c22 c8
5.4. Profiling, Performance Analysis
c25, c26
and Slicing Tools

Reading, MA: Addison-Wesley


REFERENCES
Professional, 1994.
[1] McConnell, S., Code Complete, 2nd [7] Mellor, S.J., and Balcer, M.J.,
edition, Redmond, WA: Microsoft Executable UML: A Foundation for
Press, 2004. Model-Driven Architecture, 1st
[2] Sommerville, I., Software edition, Boston: Addison-Wesley,
Engineering, 10th edition, Addison- 2002.
Wesley, 2016. [8] Null, L., and Lobur, J., The Essentials
[3] Kim, G., et al., The DevOps of Computer Organization and
Handbook: How to Create World- Architecture, 2nd edition, Sudbury,
Class Agility, Reliability & Security MA: Jones and Bartlett Publishers,
in Technology Organizations, 2nd 2006.
edition, IT Revolution, 2021. [9] Silberschatz, A., et al., Operating
[4] Heitkötter, H., Hanschke, S., Majchrzak, System Concepts, 8th edition,
T.A., Evaluating Cross-Platform Hoboken, NJ: Wiley, 2008.
Development Approaches for Mobile
Applications, 2013, in Cordeiro, J.,
Krempels, K.H. (eds.), Web
Information Systems and
Technologies. WEBIST 2012.
Lecture Notes in Business
Information Processing, vol. 140,
Springer, Berlin, Heidelberg.
[5] Clements, P., et al., Documenting
Software Architectures: Views and
Beyond, 2nd edition, Boston: Pearson
Education, 2010.
[6] Gamma, E., et al., Design Patterns:
Elements of Reusable Object-
Oriented Software, 1st edition,

Software Construction 4–19 © IEEE – SWEBOK Guide V4


CHAPTER 5
SOFTWARE TESTING
ACRONYMS HIPAA Health Insurance Portability and
Accountability Act
AI Artificial Intelligence
HL7 Health Level Seven
API Application Program Interface
IoT Internet of Things
ARINC Aeronautical Radio Incorporated
KPI Key Performance Indicator
ATDD Acceptance Test-Driven Development
MC/DC Modified Condition Decision Coverage
CMMI Capability Maturity Model Integration
ML Machine Learning
CSS Cascading Style Sheets
MTTR Mean Time to Recovery
DICOM Digital Imaging and Communications in
Medicine OAT Orthogonal Array Testing

DL Deep Learning ODC Orthogonal Defect Classification

DU Definition and Use RUP Rational Unified Process

EBSE Evidence-Based Software Engineering SoS System of Systems

ECS Ecosystem SPI Software Process Improvement

ETSI European Telecommunications Standards SPICE Software Process Improvement and


Institute Capability Determination

FHIR Fast Healthcare Interoperability SUT System Under Test


Resources
TDD Test-Driven Development
GDPR General Data Protection Regulation

GPS Global Positioning System TMMi Test Maturity Model integration

GUI Graphical User Interface UI User Interface

HIL Hardware-In-the-Loop

In the above statement, italicized words correspond to


INTRODUCTION key issues in the Software Testing Knowledge Area
Software testing consists of the dynamic validation (KA). Those terms are discussed below.
that a System Under Test (SUT) provides expected ● System Under Test: This term can refer to the
behaviors on a finite set of test cases suitably selected testing object, which could be a program, a
from the usually infinite execution domain. software product, an application, a service-
oriented application (e.g., web services,
microservices), middleware (HW/SW), a

Software Testing 5–1 © IEEE – SWEBOK Guide V4


services composition, a system, a System of of any process development life cycle (e.g., traditional
Systems (SoS), or an Ecosystem (ECS). or left-shift development). The remainder of this
● Test Case: A test case is the specification of all chapter presents the basics of software testing and its
the entities that are essential for the execution, challenges, issues, and commonly accepted practices
such as input values, execution and timing and solutions.
conditions, testing procedure, and the expected
outcomes (e.g., produced values, state changes, BREAKDOWN OF TOPICS FOR SOFTWARE
output messages). Input values alone are not TESTING
always sufficient to specify the test cases because
the SUT might react to the same input with Figure 1 shows the breakdown of topics for the
different behaviors, depending, for instance, on Software Testing KA. The Matrix of Topics vs.
the SUT state or environmental conditions. A set Reference Material provides a more detailed
of test cases is usually called a test suite. breakdown at the end of this KA. The first topic,
● Dynamic: Dynamic validation requires executing Software Testing Fundamentals, covers the basic
the SUT on a test suite. Static techniques definitions in software testing, the basic terminology
complement dynamic testing, and they are and key issues, and software testing’s relationship
covered in the Software Quality KA.1 with other activities.
● Finite: Even in a simple SUT, executing all the The second topic, Test Levels, contains two
possible test cases (i.e., exhaustive testing) could (orthogonal) subtopics. The first subtopic, The Target
require months or years. Consequently, in of the Test, lists the levels into which the testing of
practice, testing targets a subset of all possible large software is traditionally subdivided, and the
test cases determined by different criteria. second subtopic, Objectives of Testing, discusses
Testing always implies a trade-off between testing for specific conditions or properties. Not all
limited resources and schedules on the one hand types of testing apply to every software product, nor
and inherently unlimited test requirements on the has every possible type been listed. The Target of the
other. Test and Objectives of Testing together determine how
● Selected: Identifying the most suitable selection the test suite is identified, both regarding its
criteria under given conditions is a complex consistency (How much testing is enough for
problem. Different techniques can be considered achieving the stated objective?) and its composition
and combined to tackle that problem, such as risk (Which test cases should be selected for achieving the
analysis, software requirements, cost reduction, stated objective?). (However, usually, “for achieving
quality attributes satisfaction, prioritization, and the stated objective” remains implicit, and only the
fault detection. The many proposed test first part of the two questions above is posed.) Criteria
techniques differ in how the test suite is selected, for addressing the first question are test adequacy
and software engineers must be aware that criteria, whereas those used for addressing the second
different selection criteria might yield vastly question are the test selection criteria.
different degrees of effectiveness.
Several Test Techniques have been developed in the
● Expected: For each executed test case, it must be past few decades, and new ones are still being
possible, although it might not be easy, to decide proposed. Therefore, the third topic covers generally
whether the observed SUT outcomes match the accepted and standardized techniques.
expected ones. Indeed, the observed behavior
may be checked against user needs (commonly Test-Related Measures are dealt with in the fourth
referred to as testing for validation), against a topic, while the issues relative to the Test Process are
specification (testing for verification), or, covered in the fifth.
perhaps, against the foreseen behavior from
implicit requirements or expectations. (See Software Testing in the Development Processes and
Section 4.3, Acceptance Criteria-Based the Application Domains is described in the sixth
Requirements Specification, in the Software topic, and Testing of and Testing Through Emerging
Requirements KA.) Technologies are described in the seventh topic.
As reflected in this discussion, software testing is a
pervasive and holistic activity involving all the steps

1
It is worth noting that terminology is not uniform
among different communities, and some use the term
testing to refer to static techniques as well.

Software Testing 5–2 © IEEE – SWEBOK Guide V4


F
i
g
Finally, Software Testing Tools are presented in topic faults — those sets of inputs that cause a failure to
u
eight.
r appear.
e 1.2. Key Issues
1.S Software Testing Fundamentals
This subsection provides an overview of the main
E c1, c2; 2*, c8; 14*, c7]
[1*, testing issues.
Q
This
F section provides an overview of the main testing 1.2.1. Test Case Creation
issues
i and the relationship of testing to the other
activities.
g Most of the testing terms used here are also [1*, c12s1, c12s3, 2*, c8]
u
defined. A more comprehensive overview of the
r
Test case creation or generation creates the test suite
testing and testing-related terminology can be found in useful for testing the SUT for specific purposes (e.g.,
e cited references.
the
\ adequacy, accuracy, or assessment). Because test case
* Faults vs. Failures
1.1 generation is among the most important and intensive
A software testing activities, it is usually supported by
[1*,
R c1s5; 2*, c1; 14*, c1s3] approaches, techniques, and tools to automate the
A process.
Many terms are used in the software engineering
B
literature
I to describe a malfunction: notably fault (see, 1.2.2. Test Selection and Adequacy Criteria
for
C comparison, defect in Section 3.2, Defect
Characterization,
1 in the Software Quality KA), failure [1*, c1s14, c6s6, c12s7, 2*, c8]
and
: error. It is essential to distinguish between the A test selection criterion is a means of selecting test
cause
B of a malfunction (for which the term fault is used cases or determining that a test suite is sufficient for a
r
here) and an undesired effect observed in the system’s specified purpose. Test case selection aims to reduce
e
delivered service (a failure). Indeed, there might well
a faults in the software that never manifest as failures. the cardinality of the test suites while keeping the same
be effectiveness in terms of coverage or fault detection
k
(See Theoretical and Practical Limitations of Testing rate. Test adequacy criteria can be used to decide when
d
ino Section 1.2.8.) Thus, testing can reveal failures, but sufficient testing is accomplished.
the
w faults causing them are what can and must be
removed.
n However, a failure’s cause cannot always be 1.2.3 Prioritization/Minimization
unequivocally
o identified. No theoretical criteria exist [4, part 2, part 3, c5]
tof definitively determine, in general, the fault that
T
caused an observed failure. The fault might have to be Suitable strategies for test case selection or
o
modified to remove the failure, but other prioritization can be adopted to improve testing
p
modifications might also work. To avoid ambiguity, efficacy. Test case prioritization aims to define a test
i execution order according to some criteria (e.g.,
we could refer to failure-causing inputs instead of
c
coverage, fault detection rate, similarity, and risk), so
s
f
Software
o Testing 5–3 © IEEE – SWEBOK Guide V4
r
t
h
e
those tests with a higher priority are executed before behavioral models, and code annotations. Automation
those with a lower priority. Test case minimization of mechanized oracles can be difficult and expensive.
usually aims to reduce a test suite by removing
1.2.8. Theoretical and Practical Limitations
redundant test cases according to some criterion or
purpose. [1*, c2s7]
1.2.4. Purpose of Testing Testing theory warns against ascribing unjustified
confidence to a series of successful tests.
[1*, c13s11, c11s4, 2*, c8]
Unfortunately, most established results of the testing
Different well-defined purposes can guide testing theory are negative results in that they state what is not
activity; it is only by considering a specific purpose achieved as opposed to what is achieved. The most
that a test suite can be generated (selected), executed, famous quotation on this point is the Dijkstra aphorism
and evaluated (see Section 2 for more details). that “program testing can be used to show the presence
of bugs, but never to show their absence” [3]. The
1.2.5. Assessment and Certification
obvious reason for this is that complete testing is not
[4, part 1, c5; 2*, c7, c25; 8] feasible in realistic software.
Testing needs to focus on specific (mandatory)
1.2.9. The Problem of Infeasible Paths
prescriptions, such as requirements, laws, and
standards. Test cases should be generated and [1*, c4s7]
executed to provide evidence useful for evaluating
Infeasible paths are control flow paths that cannot be
and/or certifying adherence to the selected
exercised by any input data (i.e., test cases). Managing
prescriptions. Usually, assessment and certification of
the infeasible paths can help reduce the time and
the test results include verifying that the test cases
resources devoted to testing. They are a significant
have been derived and generated using baseline
problem in path-based testing, particularly in the
requirements, adopting a configuration control
automated derivation of test cases to exercise control
process, and using repeatable processes.
flow paths. Additionally, infeasible paths can also be
1.2.6. Testing for Quality Assurance/Improvement connected to the analysis and detection process for
security vulnerabilities and can improve accuracy.
[1*, c16s2; 4, part 1, c5; 9]
1.2.10. Testability
Testing has many aspects, including quality
improvement and assurance. These characteristics [1*, c17s2]
involve planned and systematic supporting processes
The term software testability has two related but
and activities leveraging confidence that the SUT
different meanings. On the one hand, it refers to the
fulfills established technical or quality requirements.
ease with which a given test coverage criterion can be
Thus, quality improvement and assurance involve
satisfied; on the other hand, it is defined as the
defining methods, tools, skills, and practices to
likelihood, possibly measured statistically, that a test
achieve the specific quality level and objectives. The
suite will expose a failure if the software is faulty. Both
list of the main quality characteristics that testing can
meanings are important.
measure or assess is reported in ISO/IEC 25010:2011
[9]. (See also Section 1.3.2, Software Product Quality, 1.2.11 Test Execution and Automation
in the Software Quality KA.)
[4, part 1, c4]
1.2.7. The Oracle Problem
An important challenge of testing is to improve
[1*, c1s9, c9s7] attainable automation, either by developing advanced
techniques for generating the test inputs or, beyond
An important testing component is the oracle. Indeed,
test generation, by finding innovative support
a test is meaningful only if it is possible to decide its
procedures to (fully) automate the different testing
observed outcome. An oracle can be any human or
activities — for instance, to increase the number of test
mechanical agent that decides whether the SUT
cases generated or executed.
behaved correctly in each test and according to the
expected outcomes. Consequently, the oracle provides
a “pass” or “fail” verdict. The oracle cannot always 1.2.12. Scalability
decide; in these cases, the test output is classified as [1*, c8s7]
inconclusive. There are many kinds of oracles — for
example, unambiguous requirements specifications, Scalability is the software’s ability to increase and
scale up on its nonfunctional requirements, such as

Software Testing 5–4 © IEEE – SWEBOK Guide V4


load, number of transactions, and volume of data. ● Testing vs. Static Software Quality Management
Scalability is also connected to the complexity of the Techniques: See Section 2.2.1, Static Analysis
platform and environment in which the program runs, Techniques, in the Software Quality KA.
such as distributed, wireless networks and virtualized ● Testing vs. Quality Improvement/Assurance: See
environments, large-scale clusters, and mobile clouds. Section 1.3.2, Software Product Quality, in the
1.2.13 Test Effectiveness Software Quality KA.
● Testing vs. Correctness Proofs and Formal
[1* c1s1; 2* c8s1; 8] Verification: See the Software Engineering
Evaluating the SUT, measuring a testing technique’s Models and Methods KA.
efficacy, and judging whether testing can be stopped ● Testing vs. Debugging: See Construction Testing
are important issues for software testing, and they may in the Software Construction KA and Debugging
require defining and selecting the proper test Tools and Techniques in the Computing
effectiveness measures. Foundations KA.
● Testing vs. Program Construction: See
1.2.14 Controllability, Replication, and Generalization
Construction Testing in the Software
[1* c12s12; 4, part 2, c7] Construction KA.
Specific aspects of testing include the following: ● Testing vs. Security: See the new KA: Software
Security.
● Controllability refers to the transition of testing ● Testing vs. Effort Estimation: See the Software
activities from the laboratory (i.e., controlled Engineering Management KA.
conditions) to reality (i.e., uncontrolled ● Testing vs. Legal Issues: See the Software
conditions). Engineering Professional Practice KA.
● Replication refers to the ability for different
people to perform the same testing activities. The 2. Test Levels
purpose is to verify whether a given testing [1*, c1s13; 2*, c8s1]
theory works, at least in the laboratory.
● The generalization of testing is connected to Software testing is usually performed at different
external validity — i.e., the extent to which the levels throughout development and maintenance.
test approach can be applied to broader settings Levels can be distinguished based on the object of
or target populations. The generalizability of the testing, the target, or on the purpose or objective (of
software testing can be important for managing the test level).
the testing activities (in terms of cost and effort) 2.1. The Target of the Test
and increasing confidence in the test results.
1.2.15. Off-Line vs. Online Testing [1*, c1s13, 2*, c8s1]

[10, c3] The target of the test can vary depending on the SUT,
the conditions of the environment, and the budget/time
The testing process can be executed in two settings: devoted to the testing activity. Four test stages can be
off-line and online. Usually, the SUT is validated in an distinguished: unit, integration, system, and
environment without external interaction in off-line acceptance. These four test stages do not imply any
testing, whereas the SUT interacts with the real development process, nor is any one of them assumed
application environment in online testing. The test to be more important than the other three.
cases are either manually or automatically derived in
both cases, and the expected outcomes are used to 2.1.1. Unit Testing
assess the SUT. [1*, c3, 2*, c8]
1.3. Relationship of Testing to Other Activities Unit testing verifies the functioning in isolation of
● Software testing is related to but different from SUT elements that are separately testable. Depending
static software quality management techniques, on the context, these could be the individual
proofs of correctness, debugging, and program subprograms or components, a subsystem, or a
construction. However, it is informative to composition of SUT components. Typically, but not
consider testing from the viewpoint of software always, the person who wrote the code conducts the
quality analysts and certifiers. For further unit testing.
discussion, see the following: 2.1.2. Integration Testing
[1*, c7, 2*, c8]

Software Testing 5–5 © IEEE – SWEBOK Guide V4


Integration testing verifies the interactions among the functional specifications are correctly
SUT elements (for instance, components, modules, or implemented, which is variously referred to in the
subsystems). Integration strategies involve the literature as conformance testing, correctness testing
incremental (and systematic) integration of the SUT or functional testing. However, several other non-
elements considering either identified functional functional properties may be tested as well, including
threads or architecture specifications. Typical performance, reliability, and usability. (See Models
integration testing strategies are top-down, bottom-up, and Quality Characteristics in the Software Quality
mixed (or sandwiched), and the big bang. They focus KA.)
on different perspectives of the level at which SUT
Other important testing objectives include but are not
elements are integrated. Integration testing is a
limited to reliability measurements, identification of
continuous activity that can be performed at each
security and privacy vulnerabilities, and usability
development stage. It may target different aspects,
evaluation; different approaches would be necessary
such as interoperability (e.g., compatibility or
depending on the objective. Note that, in general, the
configuration) of the SUT elements or with the
test objectives vary with the test target; different
external environment. External interfaces to other
purposes are addressed at different levels of testing.
applications, utilities, hardware devices or operating
environments can also be considered. The subtopics listed below are those most cited in the
literature.
2.1.3. System Testing
2.2.1. Conformance Testing
[1*, c8, 2*, c8]
[1*, c10s4]
System testing concerns testing the behavior of the
SUT (according to the definition of Section 1). Conformance testing aims to verify that the SUT
Effective unit and integration testing should have conforms to standards, rules, specifications,
identified many SUT defects. In addition, system requirements, design, processes, or practices.
testing is usually considered appropriate for assessing
non-functional system requirements, such as security, 2.2.2 Compliance Testing
privacy, speed, accuracy, and reliability. (See [1*, c12s3]
Functional and Non-Functional Requirements in the
Software Requirements KA and Software Quality Compliance testing aims to demonstrate the SUT’s
Requirements in the Software Quality KA.) adherence to a law or regulation. Usually, compliance
testing is forced by an external regulatory body.
2.1.4. Acceptance Testing
2.2.3. Installation Testing
[1*, c1s7, 2*, c8s4]
[1*, c12s2]
Acceptance testing targets the deployment of a SUT.
Its main goal is to verify that the SUT satisfies the Often, after system and acceptance testing is
requirements and the end-users expectations. completed, and the SUT has been installed in the target
Generally, it is run by or with the end-users to perform environment, the SUT is verified. Installation testing
those functions and tasks for which the software was can be viewed as system testing conducted in the
built. For example, this testing activity could target operational environment of hardware configurations
usability testing or operational acceptance. Defining and other operational constraints. Installation
acceptance tests before implementing the procedures may also be verified.
corresponding functionality is a key activity of the 2.2.4. Alpha and Beta Testing
Acceptance Test-Driven Development (ATDD). (See
the Software Requirements KA, Section 4.3.) [1*, c13s7, c16s6, 2*, c8s4]

2.2. Objectives of Testing Before the SUT is released, it is sometimes given to a


[1*, c1s7] small, selected group of potential users for trial use
(alpha testing) and/or to a larger set of representative
Testing is conducted considering specific objectives, users (beta testing). These users report problems with
which are stated (more or less) explicitly and with the product. Alpha testing and beta testing are often
varying degrees of precision. Stating the testing uncontrolled and are not always referred to in a test
objectives in precise, quantitative terms supports plan.
measurement and control of the test process.
2.2.5. Regression Testing
Testing can be aimed at verifying different properties.
For example, test cases can be designed to check that [1*, c8s11, c13s3; 4, part 1, c5]

Software Testing 5–6 © IEEE – SWEBOK Guide V4


According to the definition reported in [5], regression ● Performance Testing [4, part 1]: Performance
testing is the “selective retesting of a SUT to verify testing verifies that the software meets the
that modifications have not caused unintended effects specified performance requirements and assesses
and that the SUT still complies with its specified performance characteristics (e.g., capacity and
requirements.” In practice, the approach is designed to response time).
show that the SUT still passes previously passed tests ● Load Testing [4, part 1]: Load testing focuses on
in a test suite (in fact, it is sometimes referred to as validating the SUT’s behavior under load
non-regression testing). In some cases, a trade-off pressure conditions to discover problems (e.g.,
must be made between the assurance given by deadlocks, racing, buffer overflows and memory
regression testing every time a change is made and the leaks) or reliability, stability, or robustness
resources required to perform the regression tests. This violations. It aims to assess the rate at which
can be quite time-consuming because of the many tests different service requests are submitted to the
that might be executed. Regression testing can be SUT.
conducted at each test level described in Section 2.1. ● Stress Testing [1*, c8s8]: Stress testing aims to
It may involve functional and non-functional testing, push the SUT beyond its capabilities by
such as reliability, accessibility, usability, generating a load greater than what the system is
maintainability, conversion, migration, and expected to handle.
compatibility testing.
● Volume Testing [4, part 1]: Volume testing
targets the assessment of the SUT’s internal
Regression testing may involve selection (see Section storage limitations and its ability to exchange
1.2.2) and minimization (see Section 1.2.3) of test data and information.
cases, as well as the adoption of prioritization
● Failover Testing [1*, c17s2; 2*, c8]: Failover
approaches (see Section 2.2.6) to existing test suites.
testing validates the SUT’s ability to manage
heavy loads or unexpected failure to continue
Regression testing is a fundamental activity of Agile,
typical operations (e.g., by allocating extra
DevOps, Test-Driven Development (TDD), and
resources). Failover testing is also connected with
Continuous Development. It is usually performed after
recoverability validation.
integration testing and before deployment to
production or operation. ● Reliability Testing [1*, c15; 2*, c11]: Reliability
testing evaluates the SUT’s reliability by
2.2.6. Prioritization Testing identifying and correcting faults. Reliability
[1*, c12s7] testing observes the SUT in operation or
exercises the SUT by using test cases according
Test case prioritization aims to schedule test cases to to statistical models (operational profiles) of the
increase the rate of fault detection, the likelihood of different users’ behaviors. Usually, reliability is
revealing faults, the coverage of code under test, and assessed through reliability growth models. The
the SUT’s reliability. Typically, prioritization testing continuous development processes (such as
relies on heuristics, and its performance might vary DevOps) are currently facilitating the adoption of
according to the SUT, the environment, and the reliability testing in the various iterations for
available test cases. Among the different prioritization improving final SUT quality.
proposals, similarity-based prioritization is one of the ● Compatibility Testing [4, part 1; 10, c3]:
most commonly adopted. In this approach to Compatibility testing is used to verify whether
prioritization, test cases are prioritized starting from the software can collaborate with different
those most dissimilar according to a predefined hardware and software facilities or with different
distance function. versions or releases.
2.2.7. Non-functional Testing ● Scalability Testing [1*, c8s7; 2* c17]: Scalability
testing evaluates the capability to use and learn
[2*, c8] the system and the user documentation. It also
Non-Functional testing targets the validation of non- focuses on the system’s effectiveness in
functional aspects (such as performance, usability, or supporting user tasks and the ability to recover
reliability), and it is performed at all test levels. At the from user errors. This testing is particularly
state of the practice, there are hundreds of non- important in distributed or high-performance
functional testing techniques that include but are not systems.
limited to the following: ● Elasticity Testing [2* c17]: Elasticity testing
assesses the ability of the SUT (such as cloud and
distributed systems) to rapidly expand or shrink

Software Testing 5–7 © IEEE – SWEBOK Guide V4


compute, memory, and storage resources without 2.2.11. Configuration Testing
compromising the capacity to meet peak
[1*, c8s5]
utilization. Some elasticity testing objectives are
to control behaviors, to identify the resources to Where the SUT is built to serve different users,
be (un)allocated, to coordinate events in parallel, configuration testing verifies the software under
and to evaluate scalability. specified configurations.
● Infrastructure Testing [8, annex H]:
2.2.12. Usability and Human-Computer Interaction
Infrastructure testing tests and validates
Testing
infrastructure components to reduce the chances
of downtime and improve the performance of the [2* c8s4; 19*, c6; 4, part 4, annex A]
IT infrastructure.
The main task of usability and human-computer
● Back-to-Back Testing [5]: IEEE/ISO/IEC interaction testing is to evaluate how easy it is for end-
Standard 24765 defines back-to-back testing as users to learn to use the software. It might involve
“testing in which two or more variants of a testing the software functions that support user tasks,
program are executed with the same inputs, the the documentation that aids users, and the system’s
outputs are compared, and errors are analyzed in ability to recover from user errors. (See User-Centered
case of discrepancies.” Design in the Software Design KA.)
● Recovery Testing [1*, c14s2]: Recovery testing
is aimed at verifying software restart capabilities 3. Test Techniques
after a system crash or other disasters. [1*, c1s15; 4, part 4]
2.2.8. Security Testing
Over the years, different testing techniques have been
[2*, c13; 4, part 4, annex A] developed to increase the SUT’s overall quality [4,
Security testing focuses on validating that the SUT is part 4]. These techniques attempt to propose
protected from external attacks. More precisely, it systematic procedures and approaches for generating
verifies the confidentiality, integrity, and availability or selecting the most suitable test suites for detecting
of the systems and their data. Usually, security testing as many failures as possible.
includes validation against misuse and abuse of the
software or system (negative testing). (See Security Testing techniques can be classified by considering
Testing in the Software Security KA.) different key aspects such as specification, structure,
and experience [4, part 4]. Additional classification
2.2.9. Privacy Testing sources can be the faults to be discovered, the
[2*, c13, c14] predicted use, the models, the nature of the
application, or the derived knowledge. For instance,
Privacy testing is devoted to assessing the security and model-based testing [7; 4, part 1] refers to all the
privacy of users’ personal data to prevent local attacks. testing techniques that use the concept of a model
It specifically assesses privacy and information- representing behavioral specification, the SUT’s
sharing policies, as well as the validation of structure, or the available knowledge and experience.
decentralized management of users’ social profiles However, classification overlapping is possible, and
and data storage solutions. (See Legal Issue in the one category might deal with combining two or more
Software Engineering Professional Practice KA.) techniques.
2.2.10. Interface and Application Program Interface
(API) Testing Alternative classifications that rely on the degree of
information about the SUT are available in the
[2*, c8s1; 14*, c7s12; 4, part 5, c4, c7] literature. Indeed, in the specification-based
Interface defects are common in complex systems. techniques, also known as black-box techniques, the
Interface testing aims to verify whether the generation of test cases is based only on the SUT’s
components’ interface provides the correct exchange input/output behavior, whereas in the structure-based,
of data and control information. Usually, the test cases also called white-box (or glass-box or clear-box),
are generated from the interface specification. A techniques, the test cases are generated using the
specific interface testing objective is to simulate the information about how the SUT has been designed or
use of APIs by end-user applications. That involves coded.
generating parameters of the API calls, setting
conditions of the external environment, and defining As some testing techniques are used more than others,
internal data that affect the API. the remainder of the section presents the standard

Software Testing 5–8 © IEEE – SWEBOK Guide V4


testing techniques and those commonly adopted at the values or conditions. According to [4, part 4], the
state of the practice. commonly used combinatorial test techniques are All-
Combinations Testing, Pair-Wise Testing, Each
3.1. Specification-Based Techniques
Choice Testing, and Base Choice Testing. All-
[1*, c6s2; 4, part 4] combinations testing focuses on all the possible input
combinations, whereas its subset, also called t-wise
The underlying idea of specification-based techniques
testing, considers every possible combination of t
(sometimes also called domain testing techniques) is input. In this case, more than one pair is derived (i.e.,
to select a few test cases from the input domain that by including higher-level combinations). Pair-wise
can detect specific categories of faults (also called
testing is a specific combinatorial testing technique
domain errors). These techniques check whether the where test cases are derived by combining values of
SUT can manage inputs within a certain range and every pair of an input set. These techniques are also
return the required output. known as Orthogonal Array Testing (OAT).
3.1.1. Equivalence Partitioning 3.1.5. Decision Table
[1*, c9s4] [1*, c9s6; 1*, c13s6; 4, part 4]
Equivalence partitioning involves partitioning the Decision tables (or trees) represent logical
input domain into a collection of subsets (or relationships between conditions (roughly, inputs) and
equivalence classes) based on a specified criterion or
actions (roughly, outputs). Usually, they are widely
relation. This criterion or relation may be different adopted for knowledge representation (e.g., Machine
computational results, a relation based on control flow Learning (ML)). Test cases are systematically derived
or data flow, or a distinction made between valid
by considering every possible combination of
inputs that are accepted and processed by the SUT and conditions and their corresponding resultant actions. A
invalid inputs, such as out-of-range values, that are not related technique is cause-effect graphing. Currently,
accepted and should generate an error message or
shift-left development processes are taking advantage
initiate error processing. A representative test suite of this kind of testing technique because these
(sometimes containing only one test case) is usually techniques are useful for documenting the test results
taken from each equivalence class. and factors that can affect them.
3.1.2. Boundary-Value Analysis
3.1.6. Cause-Effect Graphing
[1*, c9s5; 4, part 4]
[1*, c1s6; 4, part 3, part 4]
Test cases are chosen on or near the boundaries of the
input domain of variables, with the underlying Cause-effect graphing techniques rely on logical
rationale that many faults tend to concentrate near the networks that map a set of causes to a set of effects by
extreme values of inputs. An extension of this systematically exploring the possible combinations of
technique is robustness testing, wherein test cases are input conditions. They identify the effects and link the
also chosen outside the input domain of variables to effects to their causes through model graphs. Cause-
test program robustness in processing unexpected or effect graphing techniques are used in testing because
erroneous inputs. they allow specification analysis, the identification of
the relevant input conditions or causes, the consequent
3.1.3. Syntax Testing transformations, and the output conditions.
[1*, c10s11, 2*, c5; 4, part 4]
3.1.7. State Transition Testing
The Syntax Testing techniques, also known as formal [1*, c10; 4, part 4]
specification-based techniques, rely on the SUT
specifications in a formal language. (See Formal Techniques based on Finite-State Machines (State
Methods in the Software Engineering Models and Transition Testing techniques in [4, part 4]) focus on
Methods KA.) This representation permits automatic representing the SUT with a finite-state machine. In
derivation of functional test cases and, at the same this case, the test suite is derived to cover the states
time, provides an oracle for checking test results. and transitions according to a specific coverage level.
3.1.4. Combinatorial Test Techniques 3.1.8. Scenario-Based Testing
[2*, c8s3, c19s3; 4, part 4; 7]
[1*, c9s3; 4, part 4]
A model in this context is an abstract (formal)
The Combinatorial Test Techniques systematically representation of the SUT or its software
derive the test cases that cover specific parameters of
requirements. (See Modeling in the Software

Software Testing 5–9 © IEEE – SWEBOK Guide V4


Engineering Models and Methods KA.) Scenario- ● Critically analyzing the evidence in light of the
based testing is used to validate requirements, check problem that the evidence should help solve.
their consistency, and generate test cases focused on EBSE principles can also be applied to the testing
the SUT’s behavioral aspects. (See Types of Models process. For that purpose, the widely used approaches
in the Software Engineering Models and Methods that allow identifying and aggregating evidence are
KA.) The key components of scenario-based testing systematic mapping studies and systematic reviews.
are the notation used to represent the model of the
software or its requirements, workflow models or 3.1.11. Forcing Exception
similar models, the test strategy or algorithm used for [5]
test case generation, the supporting infrastructure for Test cases are specifically conceived for checking
the test execution, and the evaluation of test results whether the SUT can manage a predefined set of
compared to expected results. Because of the exceptions/errors, such as data exception, operation
complexity of the techniques, scenario-based testing exception, overflow exception, protection exception or
approaches are often used with test automation underflow exception. Testing techniques usually focus
harnesses. on negative test scenarios (i.e., test cases that are able
Among scenario-based testing, workflow models can to force the generation of error messages).
also be used to graphically represent the sequence of
activities performed by humans and/or software 3.2. Structure-Based Test Techniques
applications. In this case, each sequence of actions [4, part 4]
constitutes one workflow (also called a scenario). Structure-Based Test Techniques (sometimes called
Usually, it is important to ensure that both typical and code-based test techniques) focus on the code and its
alternate workflows are also tested. For example, structure. Structure-Based Test Techniques can be
business process testing is part of this scenario-based performed at different levels (such as code
technique. In this case, the special focus is on the roles development, code inspection, or unit testing) and can
in a workflow specification. include static testing (such as code inspection, code
walkthrough, and code review), dynamic testing (like
3.1.9. Random Testing statement coverage, branch coverage, and path
[1*, c9s7; 4, part 4] coverage), or code complexity measurement (e.g.,
using techniques like cyclomatic complexity [12]).
In this approach, test cases are generated purely at
random. This testing falls under the heading of input 3.2.1. Control Flow Testing
domain testing because the input domain must be
known to be able to pick random points within it. [1*, c4; 4, part 4]
Random testing provides a relatively simple approach Control flow testing covers all the statements,
to test automation. Enhanced forms of random testing branches, decisions, branch conditions, modified
(such as adaptive random testing) have been proposed condition decision coverage (MC/DC), blocks of
in which other input selection criteria direct the statements, or specific combinations of statements in a
random input sampling. SUT. The strongest of the control flow-based criteria
is path testing, which aims to execute all entry-to-exit
Currently, under the name of fuzzy testing, the random control flow paths in a SUT’s control flow graph.
selection of invalid and unexpected inputs and data is Because exhaustive path testing is generally not
extensively used in cybersecurity to find hackable feasible because of loops, other less stringent criteria
software bugs, coding errors, and security loopholes. focus on coverage of paths that limit loop iterations,
(See also Sections 2.2.8 and 8.2.) such as statement coverage, branch coverage, and
condition/decision testing. The adequacy of such tests
3.1.10. Evidence-Based is measured in percentages; for example, when all
[10, c6s2] branches have been executed at least once by the tests,
100% branch coverage has been achieved.
Evidence-based software engineering (EBSE), which
follows a rigorous research approach, is the best 3.2.2. Data Flow Testing
solution for a practical problem. EBSE includes the [1*, c5; 4, part 4]
following phases:
In data flow testing, the control flow graph is
● Identifying the evidence and forming a question annotated with information about how the variables
● Tracking down the best evidence to answer the are defined, used, and killed (undefined). Commonly
question adopted data flow testing techniques are All-
Definitions Testing, All-C-Uses Testing, All-P-Uses

Software Testing 5–10 © IEEE – SWEBOK Guide V4


Testing, All-Uses Testing and All-DU-Paths Testing. used in left-shift development (such as Agile). (See
The strongest data flow testing criterion is the All-DU- Section 5.4.2.)
Paths Testing, where all definition and use (DU) paths
3.3.3. Further Experience-Based Techniques
need to be covered. This is because it requires
executing, for each variable, every control flow path [4, part 4; 13]
segment from a definition of that variable to the use of
that definition. However, weaker strategies such as all- At the state of the practice, experience-based
definitions and all-uses are used to reduce the number techniques may include further approaches such as Ad
of paths required. Hoc-based, knowledge-based and ML-based testing
techniques.
3.2.3. Reference Models for Structure-Based Test
Techniques Ad Hoc testing is a widely used technique in which
test cases are derived by relying on the software
[1*, c4] engineer’s skill, intuition, and experience with similar
programs. It can be useful for identifying test cases
Although not a technique, a SUT’s control structure
that are not easily generated by more formalized
can be graphically represented using a flow graph to
techniques. Typical Ad Hoc methodologies are the
visualize structure-based test techniques. A flow
following:
graph is a directed graph, the nodes and arcs of which
correspond to program elements. (See Graphs and ● Monkey testing runs randomly generated test
Trees in the Mathematical Foundations KA.) For cases to cause the program to stop.
instance, nodes may represent statements or ● Buddy testing generates test cases by using
uninterrupted sequences of statements, and arcs may internal architecture knowledge and testing
represent the transfer of control between nodes. specific knowledge.
3.3. Experience-Based Techniques ● Pair testing involves two individuals. One
[4, part 1, part 4] generates and runs the test cases; the other
observes and analyzes the testing process. Pair
The generation of the most suitable test suite may testing allows generating test cases with broad
depend on different factors, such as human knowledge and better test coverage.
of the SUT and its context and his/her experience and
● Gamification aims to convert testing tasks to
intuition. In the following section, the commonly
components of gameplay. By applying specific
adopted experience-based techniques are briefly
techniques (such as engaging practitioners or
introduced.
crowdsourcing complex testing tasks),
3.3.1. Error Guessing gamification can substantially improve software
testing practice and, consequently, SUT quality.
[1*, c9s8; 4, part 4]
● Quick testing, in which a very small test suite is
In error guessing, software engineers design test cases selected and executed, guarantees that no failure
specifically to anticipate the most plausible faults in can be experienced because of SUT components
each SUT. Good sources of information are the history that are not fully operational.
of faults discovered in earlier projects and the software ● Smoke testing (also known as Build Verification
engineer’s expertise. Testing) ensures that the SUT’s core
3.3.2. Exploratory Testing functionalities behave properly. It also
guarantees that the SUT is operational before the
[4, part 1] planned testing begins. In addition, smoke testing
Exploratory testing is defined as simultaneous prevents failures because of the test environment
learning, test design and test execution. The test cases (e.g., because artifacts or packages are not
are not defined in advance but are dynamically properly built). Smoke testing is also considered
designed, executed, and modified according to the a special case of quick testing.
collected evidence and test results, such as observed
product behavior, peculiarities of the SUT, the domain Knowledge-based testing and ML-based testing
and the environment, the failure process, the types of exploit (formal or informal) knowledge about the SUT
possible faults and failures, and the risk associated or derive it from observations of SUT executions for
with a particular product. Usually, the intuition, defining its behavioral models (such as ontologies or
knowledge, and expertise of the personnel in charge of decision tables) (see Section 3.6.1), rules, and non-
performing the exploratory testing can affect the functional properties. In addition, Knowledge-based
testing effectiveness. Exploratory testing is widely testing and ML-based testing specify the testing needs

Software Testing 5–11 © IEEE – SWEBOK Guide V4


and identify test objectives for which test cases are statistical testing is applied more during the
generated. acceptance testing stage.
3.4. Fault-Based and Mutation Techniques 3.5.1. Operational Profile
[1*, c1s14, 1* c3s5; 5]
[1*, c15s5, 2*, c11]
With different degrees of formalization, fault-based
testing techniques devise test cases specifically to Testing based on operational profiles aims at
reveal likely or predefined fault categories. A fault generating test cases that might estimate the reliability
model can be introduced that classifies the different of the SUT or part of it. Therefore, the goal is to infer
faults to better focus the test case generation or from the observed test results the future reliability of
selection. In this context, a variety of platforms and the software (when it is in use). Because the
development processes (e.g., waterfall, spiral and established reliability strictly depends on the operating
Agile) consider the Orthogonal Defect Classification profile, the main difficulty (and cost) in using this
(ODC) a valid methodology for collecting semantic testing approach comes from the operational profile
information about the different defects and reducing derivation. Therefore, one possible solution is to
the time and effort of the root cause analysis. assign to the input the probabilities or profiles
according to their frequency of occurrence in actual
Mutation Testing was originally conceived as a operation.
technique to evaluate test suites (see Section 4.2,
Evaluation of the Tests Performed) in which a mutant 3.5.2. User Observation Heuristics
is a slightly modified version of the SUT (also called [19*, c5, c7; 4, part 4, annex A]
gold), differing from it by a small syntactic change.
Every test case exercises both the gold version and all Specialized heuristics, also called usability inspection
generated mutants. If a test case succeeds in methods, are applied to systematically observe system
identifying the difference between the gold version use under controlled conditions to determine how well
and a mutant, the latter is said to be “killed.” The people can use the system and its interfaces. Usability
underlying assumption of mutation testing, the heuristics include cognitive walkthroughs, claims
coupling effect, is that more complex but real faults analysis, field observations, thinking aloud, and even
will be found by looking for simple syntactic faults. indirect approaches such as user questionnaires and
For the technique to be effective, many mutants must interviews.
be automatically generated and executed 3.6. Techniques Based on the Nature of the
systematically [6]. Mutation testing is also a testing Application
criterion in itself. Test cases are randomly generated [2* c16, c17, c18, c20, c21; 14*, c4s8; 8]
until enough mutants have been killed, or tests are The above techniques apply to all kinds of software.
specifically designed to kill surviving mutants. In the Additional test derivation and execution techniques
latter case, mutation testing can also be categorized as are based on the nature of the software being tested.
a structure-based technique. Mutation testing has been Examples are the following:
used effectively for generating fuzzy testing. A more
recent application of the mutation process is ● Object-oriented software
metamorphic testing, a technique that has become ● Component-based software
increasingly popular in addressing some ML systems’ ● Web-based software
testing challenges. In this case, the modifications ● Concurrent programs
(called also morph) are applied to the inputs so a ● Protocol-based software
relationship can connect the previous input (and its ● Communication systems
output) to the new morphed input (and its output).
● Real-time systems
3.5. Usage-Based Techniques ● Safety-critical systems
[1*, c15s5] ● Service-oriented software
Usage-based techniques usually rely on a usage model ● Open-source software
or profiles. In this case, the testing environment needs ● Embedded software
to represent the actual operational environment, and ● Cloud-based software
the sequence of test case execution should reproduce ● Blockchain-based software
the SUT usage by the target stakeholder. Statistical ● Big data-based software
sampling is used for simulating the execution of many ● AI/ML/DL-based software
test cases. Thus, sometimes, the term random testing
● Mobile apps
is also associated with these techniques. Usage-based
● Security and privacy-preserving software

Software Testing 5–12 © IEEE – SWEBOK Guide V4


In some cases, standards such as ISO/IEC/IEEE 29119 needed. Measurement is usually considered
[4, part 4, part 5] provide examples and support for fundamental to quality analysis. Measurement may
specifying test cases, automating their execution, and also be used to optimize test planning and execution.
maintaining the test suites, such as the case of the Test management can use several different process
Keyword-Driven Testing [4, part 5]. measures to monitor progress. (See Software
Engineering Measurement in the Software
3.7. Selecting and Combining Techniques
Engineering Management KA for information on
[14*, c7s12; 10; 4, part 5]
measurement programs. See Software Measurement in
Combining different testing techniques has always
the Software Engineering Process KA for information
been a well-grounded means to assure the required
on measures.)
level of SUT quality. Currently, especially in left-shift
developments, methodologies for adaptive
According to the definition in [4, part 4], testing
combinations of testing techniques are part of the state
techniques can be classified according to the degree of
of the practice. The goal is to improve the
coverage they can achieve. Coverage may vary from
effectiveness of testing processes by learning from
0% to 100%, excluding possible infeasible tests (i.e.,
experience and, at the same time, adapting the
tests that cannot be executed). Thus, for each
technique selection to the current testing session.
specification-based, structure-based, and experience-
3.7.1. Combining Functional and Structural based test technique, the associated coverage measures
and the procedure for evaluating that coverage must be
[1*, c9; 4, part 5]
determined. Examples of coverage measures could be
Scenario-based and structure-based test techniques are the percentage of branches covered in the program
often contrasted as functional vs. structural testing. flow graph or the percentage of functional
These two approaches to test case selection are requirements exercised among those listed in the
nowadays seen as complements, as they use different specifications document.
sources of information and have been shown to
highlight different problems. Depending on the It is important to consider that monitoring facilities
different organizational constraints, such as budgetary can dynamically compute the ratio between covered
considerations, they could be combined. elements, and the total number may also be
considered. Additionally, especially in the case of
3.7.2. Deterministic vs. Random
structure-based testing techniques, appropriate
[1*, c9s6] instrumentation of the SUT may also be necessary.
Test cases can be selected in a deterministic way,
However, the proposed set of testing measures can
according to many techniques, or randomly drawn
also be classified from different viewpoints — from
from some distribution of inputs, such as is usually
the point of view of those providing and allowing an
done in reliability testing. Several analytical and
evaluation of the SUT based on the observed test
empirical comparisons have been conducted to
outputs and of those that evaluate the thoroughness or
analyze the conditions that make one approach more
effectiveness of the executed test suites.
effective than the other.
4.1. Evaluation of the SUT
3.8. Techniques Based on Derived Knowledge
[2*, c24s5]
[2*, c19, c20; 14*, c7]
Usually, indicators (i.e., measurable information) can
Testing techniques can integrate evidence and
be used to determine whether a SUT is performing as
knowledge from different research areas and contexts.
expected and achieving its expected outcomes. The
For this, approaches and methodologies are used to
indicators, sometimes known as Key Performance
support testing activity and improve its effectiveness.
Indicators (KPIs), are strongly connected with the
Currently, innovative approaches include using digital
adopted evaluation measures, methods, data analysis
twins or simulation methodologies and frameworks,
and reporting.
exploiting ML and gamification facilities, and using
(simulated) neuronal networks. 4.1.1. SUT Measurements That Aid in Planning and
Designing Tests
4. Test-Related Measures
[14*, c10; 10, c6; 4, part 1]
[2*, c24s5; 14*, c10; 4, part 4]
All the testing measures proposed in [4, part 4] can be
Testing techniques are like tools that help in achieving
used for planning and guiding testing activities.
specific test objectives. To evaluate whether a test
Additionally, in the shift-left development process,
objective is reached, well-defined measures are

Software Testing 5–13 © IEEE – SWEBOK Guide V4


specific measures, such as Deployment Frequency, Reliability growth models predict reliability based on
Lead Time, Mean Time to Recovery (MTTR), and observed failures. They assume, in general, that when
Change Failure Rate, are also commonly adopted to the faults that caused the observed failures have been
plan and manage the testing activities and results. fixed (although some models also accept imperfect
fixes), the product’s reliability will increase. There are
4.1.2. Fault Types, Classification and Statistics
many published reliability growth models. Notably,
[1* c13s4, c13s5, c13s6] these models are divided into failure-count and time-
between-failure models.
The testing literature is rich in classifications and
taxonomies of faults that can be generic or specific to 4.2. Evaluation of the Tests Performed
a context or quality attributes (such as the usability [4, part 4, c6]
defect classification, the taxonomy of HW/SW
The behavior of SUT is generally verified by
security and privacy vulnerabilities and attacks, and
executing test suites, which are pivotal in finding
the classification of cybersecurity risks). To make
defects. Therefore, from both the researchers’ and
testing more effective, it is important to know which
practitioners’ perspectives, a fundamental part of
types of faults may be found in the SUT and the
software testing is comparing test suites. Usually,
relative frequency with which these faults have
evaluating the test suites means comparing techniques
occurred in the past. This information can be useful in
for test case generation that produce the test cases.
making quality predictions and in process
Different criteria are used for that purpose, such as
improvement (See Characterization in the Software
coverage criteria or mutation analysis criteria.
Quality KA).
4.2.1. Fault Injection
4.1.3. Fault Density
[1*, c2s5]
[1*, c13s4; 14*, c10s1]
In fault injection, some faults are artificially
Traditionally, a SUT can be evaluated by counting
introduced into the SUT before testing. When a test
discovered faults as the ratio between the number of
suite is executed, some of these injected faults are
faults found and the SUT size. Because of the
revealed, as are, possibly, some faults that were
semantics-based definition of faults, additional
already there. In theory, depending on which and how
measurements can be considered, such as fault depth
many artificial faults are discovered, the testing
(the minimal number of fault removals needed to make
effectiveness can be evaluated, and the remaining
a SUT correct) and fault multiplicity (the number of
number of genuine faults can be estimated. In practice,
atomic changes needed to repair a single fault).
statisticians question the distribution and
representativeness of injected faults relative to
4.1.4. Life Test, Reliability Evaluation genuine faults and the small sample size on which any
[1*, c15, 2*, c11; 14*, c1s3] extrapolations are based. Some also argue that this
technique should be used with great care because
A statistical estimate of software reliability, which can inserting faults into the SUT incurs the obvious risk of
be obtained by observing reliability achieved, can be leaving them there.
used to evaluate a SUT and decide whether testing can
be stopped or the SUT is mature enough to be a 4.2.2. Mutation Score
candidate for the next left-shift development release.
[1*, c3s5; 6]
Reliability evaluation is taking a pivotal role in the
Cloud (and fog) contexts [18]. In mutation testing, the test suite effectiveness
measure is calculated as the ratio of killed mutants to
On the one hand, validation and verification proposals the number of generated mutants. The higher the test
are focusing on maintaining the high level of suite effectiveness value, the better, since it indicates
reliability and availability required by the cloud (fog) a stronger ability to discover the most real injected
services. On the other, testing activities are exploiting faults.
the computational power of the cloud (fog) 4.2.3. Comparison and Relative Effectiveness of
environment to speed up the reliability evaluation and Different Techniques
drastically reduce its costs.
[1*, c1s7; 5; 9]
4.1.5. Reliability Growth Models
Relative effectiveness compares different testing
[1*, c15, 2* c11s5] techniques against a specific property, such as the
number of tests needed to find the first failure, the ratio

Software Testing 5–14 © IEEE – SWEBOK Guide V4


of the number of faults found through testing to all the An important element of successful testing is a
faults found during and after testing, and how much collaborative attitude toward testing and Quality
reliability was improved. Several studies have already Assurance (QA) activities. Managers have a key role
been conducted to compare different techniques in fostering a favorable reception toward failure
analytically and empirically according to each notion discovery and correction during software development
of property (or effectiveness) defined. and maintenance. For instance, in shift-left
development processes, such as Agile, communication
5. Test Process and collaboration among testers and developers are
[4, part 1, part 2, part 3; 2* c8] considered vital for achieving successful testing
results.
Testing concepts, strategies, techniques and measures
need to be integrated into a defined and controlled test 5.1.2. Test Guides and Organizational Process
planning process to test output evaluation. The test [1*, c12s1, 2* c8; 4, part 2, part 3; 14*, c7s3]
process supports testing and provides guidelines to
those responsible for different testing activities to Various aims can guide the testing phases. For
ensure the test objectives are met cost-effectively. example, risk-based testing uses the product risks to
prioritize and focus the test strategy, and scenario-
As described in [4, part 2], the test process is a multi- based testing defines test cases based on specified
layered process activity that includes the test software scenarios and backlog lists. Usually, the
specification at the organizational, management and organization of the test process includes defining test
dynamic levels. The organizational test process policies (i.e., specifying the purpose, goals, and
defines the steps for creating and maintaining test overall scope of testing) and test strategies (i.e.,
specifications, such as organizational test policies, specifying the guidelines about how testing will be
strategies, processes, procedures, and other assets [4, carried out). For instance, in left-shift developments, a
part 2]. test strategy should include at least the following data:
the purposes (e.g., defined through user stories), the
The test management process defines the steps objectives (e.g., a test suite), the scope (the SUT), and
necessary for management: planning, monitoring and the environment and methods (e.g., how, and where
control, and completion. the test suite is run).
5.1.3. Test Management and Dynamic Test Processes
Finally, the dynamic test process specifies the steps for
design and implementation, environment setup and [1*, c12; 4, part 2, part 3, 14*, c7s3]
maintenance, execution, and test incident reporting. Test activities conducted at different levels (see
Section 2, Test Levels) should be organized — with
In the remainder of this section, some practical people, tools, policies, and measures — into a well-
considerations about the test process specification, defined process integral to the life cycle. Test process
management, and execution, as well as a summary of management includes different subprocesses such as
the test sub-processes and activities included in the planning, monitoring, control, and completion,
organizational, management and dynamic levels as in whereas the Dynamic test process includes test design
[4, part 2], are provided. and implementation, test environment set-up and
maintenance, test execution, and test incident
5.1. Practical Considerations reporting.
[4, part 1]
5.1.4. Test Documentation
Testing processes should allow the automation of
different testing phases and should rely on the [1*, c8s12; 14*, c7s8; 4, part 3]
controllability, traceability, replicability, and risk/cost According to [4, part 3], documentation is integral to
estimation of the performed activities. In the the formalization of the test process. Test documents
remainder of this section, commonly applied test steps can be classified into three hierarchical categories:
are described, compatible with and applicable to all organizational test documentation, test management
life cycle models. (See Software Life Cycles in the documentation and dynamic test documentation.
Software Engineering Process KA.) Organizational test documentation includes the
5.1.1. Attitudes/Egoless Programming information necessary for documenting the test policy
and the organizational test strategies. Test
[1*, c16; 2*, c3] management documentation includes the test plan, test
status report and test completion report. Finally,

Software Testing 5–15 © IEEE – SWEBOK Guide V4


dynamic test documentation includes the following and yield different confidence levels in product
documents: test specification (test design reliability.
specification, test case specification and test procedure
5.1.7. Test Monitoring and Control
specification), test data requirements, test environment
requirements, test data readiness report, test [4, part 1, part 2]
environment readiness report, and test execution
Monitoring and Control comprise an important sub-
documentation (such as actual results, test results, test
process of the test management process as in [4, part
execution log and incident report).
2], useful for collecting data and information required
Test documentation should be produced and during test management and assessment. Usually,
continuously updated with the same quality as other monitoring and control activities are executed in
software engineering documentation. Test parallel with the test execution, and sometimes, data
documentation should also be under the control of collected might prompt revision of overall process
software configuration management. (See the planning. Monitoring assures that testing process
Software Configuration Management KA.) activities comply with a specific test plan to trace the
requirements satisfaction and mitigate the identified
5.1.5. Test Team
risks satisfactorily. During test monitoring and
[1*, c16; 2* c23s5; 4, part 2, part 3] control, specific documentation (test reports) can
regularly be produced to help assess and document the
Formalizing the testing process may also involve
test activity.
formalizing the testing team’s organization.
Considerations of cost, schedule, maturity levels of the 5.1.8. Test Completion
involved organizations and criticality of the
[14*, c7s11; 4, part 3]
application can guide the decision. The testing team
can be composed of members involved (or not) in the A decision must be made about how much testing is
SUT development (i.e., having or not having an enough and when a test stage can be completed.
unbiased, independent perspective) or internal (or Therefore, the purpose of Test Completion, a sub-
external) personnel. Nowadays, shift-left development process of the test management process as in [4, part
does not strongly distinguish among testing team 2], is to ensure that test requirements are satisfied and
members because the test suite is defined and updated verified, test reports are completed, and test results are
according to the SUT development and delivered communicated to relevant stakeholders. Thoroughness
code. measures, such as achieved code coverage or
functional coverage, and estimates of fault density or
5.1.6. Test Process Measures
operational reliability, provide useful support but are
[1*, c18s3, 14*, c10; 4, part 1, part 2, part 3] not sufficient in themselves. The decision also
involves considerations about the costs and risks
Managers use several measures for the resources spent
incurred by possible remaining failures, as opposed to
on testing, as well as for the relative fault-finding
the costs incurred by continuing to test (See Test
effectiveness of the various test phases, to control and
Selection and Adequacy Criteria in Section 1.2, Key
improve the testing process, as well as to provide
Issues.) As for the other activities, in this stage,
information for managing process risks. Therefore,
specific documentation is produced (e.g., test
monitor and control testing must define required data
completion report) and communicated to the relevant
and information and state how to obtain them. The test
stakeholders.
measures may cover the number of specified,
executed, passed, and failed test cases, among other 5.1.9. Test Reusability
elements. These measures can also be combined with
[14*, c3; 9]
specific process metrics such as residual risk,
cumulative defects open and closed, test case progress, It is necessary to add complexity and time for test
and defect detection percentage. Evaluation of test planning and design to achieve reusability of the
phase reports can be combined with root-cause testing artifacts, such as the test case or execution
analysis to evaluate test process effectiveness in environment, which is desired when test development
finding faults as early as possible. Such an evaluation is costly, time-consuming, and complex.
can be associated with risk analysis. Moreover, the
resources deemed worth spending on testing should be Test reusability collects and classifies the testing
commensurate with the application’s use and knowledge (test cases and test results) to make this
criticality. Different techniques have different costs information searchable and usable for creating new
tests or re-executing an existing one. Suitable

Software Testing 5–16 © IEEE – SWEBOK Guide V4


knowledge-based repositories should be configured According to the dynamic test process, as described in
and managed to test reusability so changes to software [4, part 2], test environment development and setup
requirements or design can be reflected in changes to involve identifying the testing infrastructure. This
the tests. includes selecting or developing the facilities,
hardware, software, firmware, and procedures to
Currently, the reusability of test cases is pivotal in conduct the testing activity. The testing environment
feature-based or product-line development and can be simulated, controlled, and executed in vitro or
regression testing. Test reusability also relates to in vivo. Developing the test environment also involves
maintainability because reusability can reduce the cost setting up monitoring and logging facilities useful for
and effort involved and improve a test’s effectiveness. documenting the testing activities and assessing the
result obtained. The testing environment should be
5.2. Test Sub-Processes and Activities compatible with the other software engineering tools
[1*, c1s12; 1*, c12s9; 4, part 2] used.
In the remainder of this section, the main testing 5.2.4. Controlled Experiments and Test Execution
activities and sub-processes are briefly introduced.
[1*, c12s7, 14* c4s7, 14* c5s6; 4, part 2]
5.2.1. Test Planning Process
Execution of tests should embody a basic principle of
[1*, c12s1, c12s8; 11; 4, part 2] scientific controlled experimentation — everything
Like all other aspects of project management, testing done during testing should be performed and
activities must be planned. According to [4, part 2], documented specifically and clearly enough that
key aspects of test planning include identification and another person could replicate the results. Hence,
coordination of personnel, identification of the test testing should be performed following documented
objective and completion criteria, definition of test procedures using a clearly defined version of the SUT.
facilities and equipment, creation and maintenance of Especially during acceptance testing, controlled
all test-related documentation, and risk planning and experiments like A/B testing can also be performed to
management for possible undesirable outcomes. These statistically evaluate user preferences between
activities can be organized at three different levels: (1) different versions of the SUT.
process management (i.e., identification of test
5.2.5. Test Incident Reporting
policies, strategies, processes, and procedures), (2)
organizational management (i.e., definition of the test [1*, c13s4, c13s9, c13s11; 2*, c8s3; 14*, c7s8; 4, part
phase, test type and test objective), and (3) design and 3; 12]
implementation (i.e., definition of the test
According to the dynamic test process, as described in
environment, the test execution process and
[4, part 2], testing incidents and reporting focus on the
monitoring, the completion process, and reporting).
well-defined test data collection process (i.e.,
5.2.2. Test Design and Implementation identifying when a test was conducted, who performed
the test, what software configuration was used, and
[1*, c12s1, c12s3; 11] other relevant identification information). This
Generation of test cases is based on the level of testing process and the collected evidence can be leveraged
to be performed and the chosen testing techniques. for accountability purposes. Test reporting can involve
According to the dynamic test process, as described in suitable audit systems to identify unexpected or
[4, part 2], preconditions of the test case generation are incorrect test results and record them in a problem
the identification of test objectives and the selection of reporting system. These data form the basis for later
the appropriate testing/demonstration techniques. Test debugging and fixing the problems observed as
generation focuses on implementing and executing failures during testing. Also, anomalies not classified
test cases. It often relates to tooling (i.e., using specific as faults could be documented if they later become
software, also called a test cases generator). This more serious than first thought. Test reports are also
software accepts inputs (such as source code, test inputs to the change management request process.
criteria, specifications, or data structure definitions) (See Software Configuration Control in the Software
and uses them to generate the test suites. Sometimes, Configuration Management KA.)
a test case generator can determine expected results by Hence, the Test Incident Reporting process focuses on
using a specific oracle facility. This contributes to the identifying the relevant stakeholders’ incidents that
full test automation of the overall testing process. could be used to determine what aspects of software
5.2.3. Test Environment Set-up and Maintenance testing and other processes need improvement and
how effective previous approaches have been.
[1*, c12s6; 2* c8s1; 14* c13s2; 4, part 2; 11]

Software Testing 5–17 © IEEE – SWEBOK Guide V4


Part of the incident reporting is also evaluating test Whatever development process is adopted, testing
results to determine whether the testing has been remains a fundamental activity. However, specific
successful. In most cases, “successful” means that the testing activities or terminologies could be used in
software performed as expected and did not have any some cases, such as the adopted development life
major unexpected outcomes. Not all unexpected cycle and/or the application domain
outcomes are necessarily faults; sometimes they are
determined to be simply noise. Before a fault can be 6.1. Testing Inside Software Development Processes
removed, an analysis and debugging effort is needed [2*, c8; 14*, c7]
to isolate, identify, and describe it. When test results
are particularly important, a formal review board may In the remainder of this section, peculiarities of testing
be convened to evaluate them. inside the different development processes are
provided.
5.3. Staffing
[1*, c16; 4, part 3] 6.1.1. Testing in Traditional Processes
According to [4, part 3], staffing includes defining [1* c18; 14*, c7]
roles, activities, and responsibilities, specifying hiring There are a variety of traditional processes, essentially
needs, and defining training needs. Staffing affects based on the SUT development principles, that can be
project risk because the team’s expertise might adopted within the organization. Sequential, V, spiral
undermine the ability to discover faults, to address model and iterative are just some of the processes
changing requirements, to meet deadlines, and commonly applied. (Software Life Cycles in the
increase/reduce maintenance costs. Software Engineering Process KA provides a detailed
description of each.) However, in all these processes,
The roles, activities and responsibilities definition testing is just one perceived activity; it is sometimes
establishes the following roles and responsibilities: the performed at the end of the process, with a tangible
activity leader and supporting personnel, the test- risk of SUT development failure in case of deviation
related roles and their corresponding responsibilities, of the end-user needs or assessment issues. During
and the person responsible for providing the test recent years, to evaluate and control the overall quality
item(s). of the SUT, initiatives such as Test Maturity Model
integration (TMMi) and Software Process
Depending on the development lifecycle adopted, Improvement (SPI) have been established. As a result,
typical testing roles include but are not limited to different existing frameworks have been updated or
scrum master/test lead, QA/test analyst, test designer, improved for the purpose, such as Software Process
test security/performance engineer and consultant, test Improvement and Capability Determination (SPICE),
environment expert, test executor and test automation Capability Maturity Model Integration (CMMI), and
consultant or architect. Rational Unified Process (RUP).
Hiring needs require the identification of specific For instance, CMMI is one of the most referenced
requirements for which additional testing personnel models; it can guide key SUT stakeholders in gaining
are needed to complete the testing process (as well as control of their development and maintenance
when that personnel is needed and the desired skills). processes. It is, in fact, a well-defined set of best
Depending on the business needs, staffing could take practices in software testing that improves SUT
different forms, from internal transfers to external quality by increasing customer satisfaction.
hires or even consultants and/or outsourced resources.
Presented in the early 2000s, the RUP model can be
Finally, the training needs specification includes the seen as a predecessor of the left-shift movement. RUP
definition of the required skill level. It also includes encourages testing early by offering several
the specification of the training activities (such as mechanisms to integrate testing more closely with the
classroom training, self-paced training, computer- software development effort, making testing a distinct
based training, or mentoring) useful for providing the discipline. Furthermore, RUP promotes an iterative
necessary skills to the selected staff. development approach for continuously verifying
quality. It also enables use cases and risk to drive SUT
development and allows strategic change
6. Software Testing in the Development Processes
management. Indeed, RUP groups the SUT
and the Application Domains
increments and SUT iterations into four phases:
[2*, c8, c15; 14*, c4s8, c7] inception, elaboration, construction, and transition.

Software Testing 5–18 © IEEE – SWEBOK Guide V4


technique depends on the objective and the level
Nowadays, RUP can be considered both Iterative and chosen.
Agile — Iterative because all the core activities are
repeated throughout the SUT development project, Here, some examples of testing inside the different
and Agile because the defined phases of the chosen left-shift movements implementation are provided:
lifecycle can be repeated until the SUT meets ● In Agile process development, testing activities
requirements (both functional and non-functional), involve all stakeholders (such as customers and
achieves the defined objectives, and guarantees the team personnel) and target the identification of
target quality. where improvements could be made in future
interactions. Managing the risk of regression
6.1.2. Testing in Line with Left-Shift defects, meeting changing requirements, and
Movement managing their impact on test artifacts are also
objectives of the Agile testing process. Typically,
[2*, c3, c8s2; 4, part 1; 10, c3, c5] test automation is used to manage the regression
risk, and exploratory testing may be used to
The left-shift testing movement promotes the adoption
manage a lack of detailed requirements.
of testing in the early stages of software development
to detect and remove faults as early as possible to ● In TDD, the test cases mainly target the software
increase overall SUT quality and reduce the cost and requirements specifications and acceptance, and
risks of testing activities. Currently, different they are generated in advance of the code being
development life cycles, such as Agile, DevOps and written. The tests are based on the user stories and
TDD, belong to the left-shift movement. (See Agile implemented using automated component testing
Methods in the Software Engineering Process KA.) tools. Indeed, TDD is a practice that requires
defining and maintaining unit tests and can help
In left-shift-based development, different testing clarify the user needs and software requirements
aspects should be considered: specifications.
A. The internal code quality: Regression, ● In testing automated builds and continuous
prioritization, security, and privacy could be the integration (for instance, DevOps), the SUT is
primary objectives of the internal code quality continuously developed, integrated, delivered
(Section 2.2). Usually, unit testing and integration and monitored. In this process, regression testing
testing are the targeted levels (Section 2.1), is continuously performed to timely identify and
whereas structure-based is the main testing correct development and integration issues.
technique (Section 3.2). Additionally, quick testing techniques, such as
B. Business needs: Compliance and conformance, smoke testing, are commonly used during
usability, security, and privacy are just a subset of continuous integration to guarantee that the SUT
the possible objectives of the business needs is testable before it is released to the operational
aspect (Section 2.2). Concerning this aspect, stage.
testing focuses more on the system and
acceptance test levels and on end-user 6.2. Testing in the Application Domains
expectations, as well as usage-based (Section 3.5)
and scenario-based techniques (Section 3.1.8). [2*, c15; 14*, c4s8]
C. Perceived quality: Alpha, beta, installation, Usually, an application domain is strictly connected to
usability, security, and privacy could be the a certain reality. Therefore, testing approaches could
primary objectives of the internal perceived be tailored to the needs of the domain and customized
quality (Section 2.2). Perceived quality usually to the adopted technologies.
focuses on the acceptance test level and is
achieved by applying techniques based on Below, we provide an overview of different aspects
software engineering’s intuition and experience and solutions for software testing applied within
(Section 3.3) and usage-based and fault-based several domain-specific environments:
techniques, such as mutation testing (Section 3.4).
D. Quality assurance: Performance installations, ● Automotive domain testing: Due to the
security, and privacy conformance and complexity of automotive systems, this testing
compliance are some main objectives of quality involves aspects of almost every software
assurance (Section 2.2). This aspect may involve component and its interaction with hardware.
all testing levels, and the selection of the testing Security testing, simulation testing,
reliability/life cycle testing, integrated systems

Software Testing 5–19 © IEEE – SWEBOK Guide V4


testing, data acquisition and signal analysis for developing and testing web-based content,
testing, quality testing and inspection, and applications and services.
stress/strain testing are just some of the various ● Avionics domain testing6: Usually, avionics
testing performed in this domain. Several systems include several independent or loosely
supporting standards are currently available to coupled components and commercial off-the-
guide and manage automotive testing according shelf products. Those forces testing to include
to the peculiarity, the component, or the quality very general processes and approaches applicable
aspect that should be assessed. Autosar2 and at both the system and the process levels.
Automotive SPICE3 are examples. Functional and non-functional, integration,
● Internet of Things (IoT) domain testing: This communication operational, stress, safety, and
testing involves application development, device security testing are examples of possible
management, system management, heterogeneity approaches. As in other domains, supporting
management, data management, and tools for standards such as Aeronautical Radio
analysis, deployment, monitoring, visualization Incorporated (ARINC) Standards and ASTM
and research. Additionally, security, privacy, F3153-15 can be used for reference.
communications and user/component interaction ● Healthcare domain testing: Healthcare domain
should be considered in the quality assessment. testing should ensure quality in areas such as
For example, guidelines and specific secure and reliable data exchange, stable
conformance test suites for cybersecurity performance, privacy, and safety.
assessment of the IoT SUT are detailed in the Interoperability, usability, performance and
European Telecommunications Standards compliance with industry regulations, as well as
Institute (ETSI) standards.4 security and safety standards (such as the Health
● Legal domain testing: One of the most important Level Seven (HL7),7 Fast Healthcare
aspects in the legal domain is the management of Interoperability Resources (FHIR),8 Digital
highly sensitive users; therefore, security, privacy Imaging and Communications in Medicine
and trust are the most common areas of focus for (DICOM),9 Health Insurance Portability and
testing. Additionally, because of the copious data Accountability Act (HIPAA),10 and the General
collected and exchanged, performance testing of Data Protection Regulation (GDPR)11) should
the data repository, testing to show accurate also be considered.
communication and integration testing, as well as ● Embedded domain testing: Because software and
consistency and compliance testing, should also hardware are tightly coupled in embedded
be done. Finally, because the legal domain is systems, testing activity should assess functional
characterized by specific nomenclature and and non-functional attributes of both software
jargon, involving legal domain experts in test and hardware.
case generation is common practice to ensure a ● Graphical User Interface (GUI) testing: GUI
focus on desired characteristics and quality. testing involves assessing the UI (User Interface)
● Mobile domain testing: This testing is usually for (i.e., the elements of the user objects that we can
usability, functional, configuration and see). Thus, GUI testing targets the design pattern,
consistency assessment. Mobile-specific aspects images, alignment, spellings, and the overall look
such as screen resolution, Global Positioning and feel of the UI. Testing approaches based on
System (GPS), operating systems, and device finite-state machines, goal-driven approaches,
manufacturers should also be considered during approaches based on abstractions and model-
testing activity. Finally, the type of mobile based approaches can be considered.
applications (native or web apps) and their ● Gaming: Gaming applications and software are
interactions need to be tested. For example, the currently a very active sector of software
W3C Web and Mobile Interest Group5 provides production, causing increased demand for new
facilities, guidelines and ad hoc test suites useful approaches and ways to ensure their quality and
security. Among the specific testing techniques,

2 7
https://www.autosar.org/ https://www.hl7.org/
3 8
https://www.automotivespice.com/ http://fhir.org/
4 9
https://www.etsi.org/ https://www.dicomstandard.org/
5 10
https://www.w3.org/2013/07/webmobile-ig- https://www.hhs.gov/hipaa/.
11
charter.html https://eur-lex.europa.eu/legal-
6
www.astm.org. content/EN/TXT/PDF/?uri=CELEX:32016R0679.

Software Testing 5–20 © IEEE – SWEBOK Guide V4


playtesting is one of the most adopted. In this or DL testing refers to any activity designed to
case, real gamers repeat quality control methods reveal AI, ML or DL bugs.
at many points of the game execution or design o Three main aspects should be considered in
process. GUI testing, functionality testing, defining bugs and testing in this scenario: the
security testing, console testing, compliance required conditions (correctness, robustness,
testing and performance testing can also be security, and privacy); the AI, ML or DL
considered. items (e.g., a bug might exist in the data, the
● Real-time domain testing: Real-time testing learning program, or the framework used);
usually focuses on assessing timing constraints and the involved testing activities (test case
and deterministic behavior. Usually, unit, generation, test oracle identification and
integration and system testing approaches can be definition, and test case adequacy criteria).
adopted. Communication, interaction and o In all these applications, a prototype model is
behavioral testing can also be performed. first generated based on historical data. Then,
● Service Oriented Architecture (SOA) testing: off-line testing, such as cross-validation, is
This testing focuses mainly on correctly conducted to verify that the generated model
implementing business processes and involves satisfies the required conditions. Usually,
unit and integration testing approaches. after deployment, the model is used for
Structure-based, specification-based and security prediction purposes by generating new data.
testing can be applied. The testing activity might Finally, the generated data is analyzed
vary according to the environment, organization through online testing to evaluate how the
and set of requirements that should be satisfied. model interacts with user behaviors.
● Finance domain testing: This testing covers a ● Testing blockchain [15]: The commonly used
wide range of aspects, from managing financial testing techniques for validating blockchains and
requirements to assessing financial applications related applications such as smart contracts are
and software programs. As in other domains, stress testing, penetration testing and property
domain-specific knowledge (such as that held by, testing. However, depending on the specific
for example, banks, credit unions, insurance situation, different aspects should be considered
companies, credit card companies, consumer during the testing of a blockchain-based SUT,
finance businesses, investment funds and stock such as the following:
brokerages) could be necessary to apply the ● Platform type: The level of validation depends on
testing process effectively and efficiently. the type of platform used for implementation —
Customer satisfaction, usability, security, public or private. The latter requires a much
privacy, third-party component and apps greater testing effort.
integrations, real-time issues, and performance ● Connection with other applications: Integration
are some of the most important challenges in this testing should be performed to check consistency
domain. when the blockchain works with various
applications.
● Performance: Performance testing should be
7. Testing of and Testing Through Emerging
conducted when performance issues are a
Technologies
concern. Specific strategies to handle many
In recent decades, software development was driven transactions should be conceived to guarantee a
by emerging trends such as the widespread diffusion satisfactory performance level. Qualitative and
of mobile technology, cloud infrastructures adoption, quantitative metrics, such as average transaction
big data analysis and the software as a service validation latency and security, should also be
paradigm, which highlighted new constraints and considered.
challenges for testing. ● Testing the cloud [1*, c10s10, 2*, c18]: Testing
7.1. Testing of Emerging Technologies the cloud validates the quality of applications and
infrastructures deployed in the cloud by
● Testing Artificial Intelligence (AI), ML/Deep considering both functional and non-functional
Learning (DL) [13]: AI, ML and DL are properties. The focus is to identify problems
successfully being applied in practice. Sooner or posed by systems residing in the cloud.
later, most business applications will have some Therefore, testing activities use techniques to
form of AI, ML or DL. Because of their validate cloud-based services’ performance,
peculiarities, testing such applications is scalability, elasticity and security. Moreover,
challenging and might be very expensive. AI, ML testing should also focus on compatibility and

Software Testing 5–21 © IEEE – SWEBOK Guide V4


interoperability among heterogeneous cloud software systems to achieve a common goal. This
resources when different deployment models are is mainly because of the time constraint, data
used (e.g., private, public or hybrid). sharing policies, acceptance criteria and trusted
● Testing concurrent and distributed applications coordination among the teams involved in the
[1*, c10s10, 2*, c17]: One main aspect of testing testing process. Blockchain technologies can be
dynamic, complex, distributed or concurrent exploited to improve software testing efficiency
applications is dealing with multiple operating and avoid using centralized authority to manage
systems and updates, multiple browser platforms different testing activities. This can help ensure
and versions, different types of hardware, and distributed data management, tamper resistance,
many users. For such testing, it’s difficult to use auditability, and automatic requirement
testing approaches based on the classical compliance to improve the quality of software
hierarchy between components or systems; testing and development. Blockchain-based
instead, solutions based on input/output, approaches for trusted test case repository
dependency threads, or dynamic relations often management and to support test-based software
work better. Additionally, the possibility of and security testing are also considered.
continuous integration and deployment of the ● Testing through the cloud [17]: Testing through
different components forces the testing process to the cloud refers to SUT testing performed by
include approaches for managing continuous test leveraging scalable cloud technologies. Usually,
operation, injection, monitoring and reporting the cloud is used for testing purposes wherever
according to the time, bandwidth usage, large-scale simulations and elastic resources are
throughput, and adaptability constraints. Finally, necessary. Indeed, this can affect cost reduction,
there is still the need for solutions that allow the development, and maintenance of the testing
reusability of testing knowledge, architectures, infrastructure (scaffolding), and online validation
and code to make the testing activity more of systems, such as ML-based SUT. A particular
effective and less expensive. situation is the testing of the cloud through the
7.2. Testing Through Emerging Technologies cloud itself. This is an example of the intersection
between testing of and testing through emerging
● Testing through ML [13]: AI, ML or DL technologies. The applications and
techniques are successfully used to reduce the infrastructures deployed in the cloud can be
effort involved in several activities in software tested, exploiting the cloud’s bandwidth.
engineering (such as behavior extraction, testing ● Testing through simulation [1*, c3s9]:
or bug fixing). These techniques aid both Simulation is an important technology for testing
researchers and practitioners in adopting and activity because it represents a valid means for
identifying appropriate methods for their desired evaluating SUT execution under critical
applications. There is a growing interest in situations or disasters or assessing specific
adopting ML techniques in software testing behaviors or recovering activities. The
because most software testing issues are being complexity of the testing approach might vary
formulated as ML learning problems. Indeed, AI, according to the complexity of the simulation
ML or DL is intensively used in almost all system adopted and might involve closed-loop
software, such as test case design, the oracle testing; assessing the devices, communications,
problem, test case evaluation, test case and interface; and use of real-time data (e.g.,
prioritization and refinement, and mutation voltage, current and breaker status). Simulation
testing automation. Indeed, they can reduce testing can be applied to each development level
maintenance efforts and improve the overall SUT and might involve mathematical, formal
quality because of their ability to analyze large representation of the real system, environment,
amounts of data for classifying, triaging and network conditions and control devices.
prioritizing bugs more efficiently. From a Simulation testing is currently adopted in many
DevOps perspective, AI, ML and DL solutions application domains. Especially in the
can be used in SUT automation authoring and automotive and embedded domain, among the
execution phases of test cases, as well as in the different proposals, one of the emerging solutions
post-execution test analysis that identifies trends, for simulation testing is hardware-in-the-loop
patterns and impact on SUT testing activity. (HIL) simulation testing. In this case, real signals
● Testing through blockchain [15]: Testing sent to the SUT to simulate reality and to test and
becomes complicated when different teams, design the iteration are continuously performed
domain experts and users need to work together while the real-world system is being used.
in collaborative, large-scale systems and complex

Software Testing 5–22 © IEEE – SWEBOK Guide V4


● Testing through crowdsourcing [16]: ● Test generators [1*, c12s11] assist in generating
Crowdsourced testing (also known as test cases. That generation can be random, path-
crowdtesting) is an emerging approach for based, model-based or a mix thereof.
involving users and experts in the testing activity. ● Capture/replay tools [1*, c12s11] automatically
Thus, crowdsourcing uses represent the re-execute or replay previously executed tests
dispersed, temporary workforce of multiple that have recorded inputs and outputs (e.g.,
individual testers. Testing through screens).
crowdsourcing is mainly used for testing mobile ● Oracle/file comparators/assertion checking tools
applications because it ensures technology [1*, c9s7] assist in deciding whether a test
diversity and customer-centric validation. outcome is successful.
However, crowdtesting is not a substitute for in- ● Coverage analyzers and instrumenters [1*, c4]
house SUT validation. It represents a valid means work together. Coverage analyzers assess which
of detecting failures and issues because it and how many entities of the program flow graph
involves many individuals (testers) in different have been exercised among all those required by
locations, who are using different technologies in the selected test coverage criterion. The analysis
different conditions and who have different skills can be done through SUT instrumenters that
and knowledge. insert recording probes into the code.
8. Software Testing Tools ● Tracers [1*, c1s7] record the history of a
program’s execution paths.
[1*, c12s11, 14*, c7]
● Regression testing tools [1*, c12s16] support the
Several testing tools focus on the SUT peculiarities re-execution of a test suite after a section of
and needs. This section describes the main issues and software has been modified. They can also help
challenges concerning testing tools and provides an select a test subset according to the change made.
overview of their currently identified categories. ● Reliability evaluation tools [1*, c8] support test
8.1. Testing Tool Support and Selection results analysis and graphical visualization to
[1*, c12s11, 14*, c7] assess reliability-related measures according to
selected models.
Testing involves many labor-intensive tasks since it ● Injection-based tools [1*, c3, c7s7] focus on
involves running numerous program executions and introducing or reproducing specific problems to
handling a considerable amount of information. confirm that the SUT behaves suitably under the
Appropriate tools can alleviate the burden of tedious corresponding condition. That can involve
clerical operations and make them less error-prone. managing some input or triggering of events.
Sophisticated tools can support test design and Usually, two categories of injection-based tools
generation, making them more effective. are considered: attack injection and fault
Guidance to managers and testers on selecting testing injection.
tools that will be most useful to their organization and ● Simulation-based tools [1*, c3s9] verify and
processes is an important topic, as tool selection greatly validate selected properties. Usually, they exploit
affects testing efficiency and effectiveness. Tool specific models to enable the automated
selection depends on diverse factors, such as execution of scenarios to assess whether the SUT
development choices, evaluation objectives and operates as expected or to predict how the SUT
execution facilities. In general, there might not be a would respond to defined inputs. Typical
unique tool to satisfy specific needs, so a suite of simulation-based tools are classified into tools for
selected tools could be appropriate. verification, tools for collaboration, tools for
optimization, tools for testing automated systems
8.2. Categories of Tools and tools for evaluating software concepts.
[1*, c1, c3, c4, c7, c8, c9, c12] ● Security testing tools [1*, c8s3, c12s11] focus on
Several classifications of testing tools mainly describe specific security vulnerabilities. Among these are
their functionalities, such as the following: tools for attack injection, penetration testing and
fuzzy testing.
● Test harnesses (drivers, stubs) [1*, c3s9] provide ● Test management tools [1*, c12s11] include all
a controlled environment in which tests can be the supporting tools that assure efficient and
launched and the test outputs can be logged. effective test management and data collection.
Drivers and stubs are provided to execute parts of
● Cross-browser testing tools [1*, c8s3] enable the
a SUT to simulate calling and called modules.
tester to quickly build and run user interface test

Software Testing 5–23 © IEEE – SWEBOK Guide V4


cases across desktop, mobile and web reliability, and security expectations throughout
applications to check whether the SUT looks and the automation of specific API tests.
works as expected on every device and browser. ● CSS validator tools [1*, c7s2] validate Cascading
● Load testing tools [1*, c3] collect valuable data Style Sheets (CSS) code and discover errors,
and evidence for SUT performance evaluations. issues and warnings that can be fixed. The CSS
● Defect tracking tools [1*, c3] help keep track of Validation Service, provided by W3C for free, is
detected faults during the SUT development one of the most used validators in practice that
projects. These tools behave as tracking systems helps both web designers and web developers
and usually allow end users to enter fault reports check CSS.
directly. ● Web application testing tools [1*, c8s3], also
● Mobile testing tools [1*, c8s3] support the referred to as web testing tools, support
implementation and testing of mobile apps by validating the functionality and the performance
allowing several repeated UI tests over the of web-based SUTs before their deployment into
application platform, development on real mobile production. These tools provide relevant insight
devices or emulators, testing of the mobile apps and data for different stakeholders, such as
on real-time implementations and collection of developers, servers, and infrastructure
data for specific QA measures. administrators. From a DevOps perspective,
● API testing tools [1*, c7s2] check whether the these tools address issues, or bugs before SUTs
applications meet functionality, performance, are available to end users.

Software Testing 5–24 © IEEE – SWEBOK Guide V4


MATRIX OF TOPICS VS. REFERENCE MATERIAL

Software Testing 5–25 © IEEE – SWEBOK Guide V4


1* 2* 14* 19*

1. Software Testing Fundamentals c1, c2 c8 c7

1.1. Faults vs. Failures c1s5 c1 c1s3

1.2. Key Issues

1.2.1. Test Case Creation c12s1, c12s3 c8

1.2.2. Test Selection and Adequacy Criteria c1s14, c6s6, c12s7 c8

1.2.3. Prioritization/Minimization

1.2.4. Purpose of Testing c13s11, c11s4 c8

1.2.5. Assessment and Certification c7, c25

1.2.6. Testing for Quality Improvement/Assurance c16s2

1.2.7. The Oracle Problem c1s9, c9s7

1.2.8. Theoretical and Practical Limitations c2s7

1.2.9. The Problem of Infeasible Paths c4s7

1.2.10. Testability c17s2

1.2.11. Test Execution and Automation

1.2.12. Scalability c8s7

1.2.13. Test Effectiveness c1s1 c8s1

1.2.14. Controllability, Replication and Generalization c12s12

1.2.15. Off-line vs. Online Testing

1.3. Relationship of Testing to Other Activities

2. Test Levels c1s13 c8s1

2.1. The Target of the Test c1s13 c8s1

2.1.1. Unit Testing c3 c8

2.1.2. Integration Testing c7 c8

2.1.3. System Testing c8 c8

2.1.4. Acceptance Testing c1s7 c8s4

2.2. Objectives of Testing c1s7

2.2.1. Conformance Testing c10s4

2.2.2. Compliance Testing c12s3

Software Testing 5–26 © IEEE – SWEBOK Guide V4


2.2.3. Installation Testing c12s2

2.2.4. Alpha and Beta Testing c13s7, c16s6 c8s4

2.2.5. Regression Testing c8s11, c13s3

2.2.6. Prioritization Testing c12s7

2.2.7. Non-functional testing c8s7, c8s8, c14s2, c15, c8, c 11, c17
c17s2

2.2.8. Security Testing c13

2.2.9. Privacy Testing c13, c14

2.2.10. Interface and API Testing c8s1 c7s12

2.2.11. Configuration Testing c8s5

2.2.12. Usability and Human-Computer Interaction Testing c8s4 c6

3. Test Techniques c1s15

3.1. Specification-Based Techniques c6s2

3.1.1. Equivalence Partitioning c9s4

3.1.2. Boundary-Value Analysis c9s5

3.1.3. Syntax Testing c10s11 c5

3.1.4. Combinatorial Test Techniques c9s3

3.1.5. Decision Table c9s6, c13s6

3.1.6. Cause-Effect Graphing c1s6

3.1.7. State Transition Testing c10

3.1.8. Scenario Testing c8s3.2, c19s3.1

3.1.9. Random Testing c9s7

3.1.10. Evidence-Based

3.1.11. Forcing Exception

3.2. Structure-Based Test Techniques

3.2.1. Control Flow Testing c4

3.2.2. Data Flow Testing c5

3.2.3. Reference Models for Structure-Based Test Techniques c4

3.3. Experience-Based Techniques

Software Testing 5–27 © IEEE – SWEBOK Guide V4


3.3.1. Error Guessing c9s8

3.3.2. Exploratory Testing

3.3.3. Further Experience-Based Techniques

3.4. Fault-Based and Mutation Techniques c1s14, c3s5

3.5. Usage-Based Techniques c15s5

3.5.1. Operational Profile c15s5 c11

3.5.2. User Observation Heuristics c5, c7

3.6. Techniques Based on the Nature of the Application c16, c17, c18, c4s8
c20, c21

3.7. Selecting and Combining Techniques c7s12

3.7.1. Combining Functional and Structural c9

3.7.2. Deterministic vs. Random c9s6

3.8. Techniques Based on Derived Knowledge c19, c20 c7

4. Test-Related Measures c24s5 c10

4.1. Evaluation of the SUT c24s5

4.1.1. SUT Measurements That Aid in Planning and c10


Designing Tests

4.1.2. Fault Types, Classification and Statistics c13s4, c13s5, c13s6

4.1.3. Fault Density c13s4 c10s1

4.1.4. Life Test, Reliability Evaluation c15 c11 c1s3

4.1.5. Reliability Growth Models c15 c11s5

4.2. Evaluation of the Tests Performed

4.2.1. Fault Injection c2s5

4.2.2. Mutation Score c3s5

4.2.3. Comparison and Relative Effectiveness of Different c1s7


Techniques

5. Test Process c8

5.1. Practical Considerations

5.1.1. Attitudes/Egoless Programming c16 c3

5.1.2. Test Guides and Organizational Process c12s1 c8 c7s3

Software Testing 5–28 © IEEE – SWEBOK Guide V4


5.1.3. Test Management and Dynamic Test Processes c12 c7s3

5.1.4. Test Documentation c8s12 c7s8

5.1.5. Test Team c16 c23s5

5.1.6. Test Process Measures c18s3 c10

5.1.7. Test Monitoring and Control

5.1.8. Test Completion c7s11

5.1.9. Test Reusability c3

5.2. Test Sub-Processes and Activities c12s9, c1s12

5.2.1. Test Planning Process c12s1, c12s8

5.2.2. Test Design and Implementation c12s1, c12s3

5.2.3. Test Environment Set-up and Maintenance c12s6 c8s1 c13s2

5.2.4. Controlled Experiments and Test Execution c12s7 c4s7, c5s6

5.2.5. Test Incident Reporting c13s4, c13s9, c13s11 c8s3 c7s8

5.3. Staffing c16

6. Software Testing in the Development Processes and the c8, c15 c4s8, c7
Application Domains

6.1. Testing Inside Software Development Processes c8 c7

6.1.1. Testing in Traditional Processes c18 c7

6.1.2. Testing in Line with Left-Shift Movement c3, c8s2

6.2. Testing in the Application Domains c15 c4s8

7. Testing of and Testing Through Emerging Technologies

7.1. Testing of Emerging Technologies c10s10 c17, c18

7.2. Testing Through Emerging Technologies c3s9

8. Software Testing Tools c12s11 c7

8.1. Testing Tool Support and Selection c12s11 c7

8.2. Categories of Tools c1, c3, c4, c7, c8, c9,


c12

Software Testing 5–29 © IEEE – SWEBOK Guide V4


References Application Build, Package, and
[1*] Naik, S., and Tripathy P., Software Deployment, ed. 2021.
Testing and Quality Assurance: [11] Software Engineering Competency
Theory and Practice, ed: Wiley, Model (SWECOM), v1.0, 2014.
2008, p. 648.
[2*] Sommerville, I., Software [12] ISO/IEC 20246:2017, “Software and
Engineering, 10th ed., Addison- systems engineering — Work product
Wesley, 2016. reviews”, ed, 2017, 42p
[3] Dijkstra, E.W., Notes on Structured [13] Riccio, V., Jahangirova, G., Stocco,
Programming, Technological A., et al., Testing machine learning
University, Eindhoven, 1970. based systems: A systematic
[4] ISO/IEC/IEEE 29119 — System and mapping, Empir Software Eng, 25,
software engineering — Software 2020, pp. 5193-5254.
testing, ed. 2021.
[5] ISO/IEC/IEEE International Standard [14*] Laporte, C.Y., and April, A.,
— Systems and software engineering Software Quality Assurance, IEEE
— Vocabulary, in ISO/IEC/IEEE Computer Society Press, 1st ed.,
24765:2017(E), Aug. 28, 2017, pp. 1- 2018.
541. [15] Demi, S., Colomo-Palacios, R., and
[6] Papadakis, M., Kintis, M., Zhang, J., Sánchez-Gordón, M., Software
Jia, Y., Le Traon, Y., and Harman, Engineering Applications Enabled by
M., Chapter Six — Mutation Testing Blockchain Technology: A
Advances: An Analysis and Survey, Systematic Mapping Study, Applied
Adv. Comput. 112, 2019: 275-378. Sciences, 11(7), 2021, pp. 2960.
[7] Utting, M., Legeard, B., Bouquet, F.,
Fourneret, E., Peureux, F., and [16] Mao, Ke, Capra, Licia, Harman,
Vernotte, A., Recent advances in Mark, and Jia, Yue. A survey of the
model-based testing, Advances in use of crowdsourcing in software
Computers, 101, 2016, pp. 53-120. engineering, Journal of Systems and
Software, 126, 2017, pp. 57-84.
[8] IEEE Std 1012-2016, IEEE Standard
for System, Software, and Hardware [17] Bertolino, A., Angelis, G.D., Gallego,
Verification, and Validation, ed. M., García, B., Gortázar, F., Lonetti,
2016. F., and Marchetti, E., A systematic
review on cloud testing, ACM
[9] ISO/IEC 25010:2011, Systems and Computing Surveys (CSUR), 52(5),
software engineering — Systems and 2019, pp. 1-42.
Software Quality Requirements and
Evaluation (SQuaRE) — System and [18] Achary, Rathnakar, and Pethuru, Raj,
Software Quality Models, ed. 2011. Cloud Reliability Engineering:
Technologies and Tools, CRC Press,
[10] IEEE 2675-2021, IEEE Standard for 2021.
DevOps: Building Reliable and
Secure Systems Including [19*] Nielsen, J., Usability Engineering, 1st
ed., Boston: Morgan Kaufmann,
1993.

Software Testing 5–30 © IEEE – SWEBOK Guide V4


CHAPTER 6
SOFTWARE ENGINEERING OPERATIONS
ACRONYMS
Software engineering operations refers to
API Application the set of activities and tasks necessary to
Programming Interface deploy, operate and support a software
ATDD Acceptance Test application or system while preserving its
Driven Development integrity and stability. These activities
CD Continuous Delivery include the deployment and configuration
CI Continuous of the software in the targeted operational
Integration environments and the monitoring and
CPU Central Processing management of the application while it is in
Unit use (until it is retired). Once the application
is operational, software engineering
CONOPS Concepts of
operations must manage any defects that
Operations
are uncovered, any changes made to the
DBMS Database system software environment and hardware
Management System equipment over time, and any new user
IaC Infrastructure as- requirements that surface.
Code
IaaS Infrastructure as a Software engineering operations is an
Service integral part of system and software life
IT Information cycle processes [3]. The Software
technology Engineering Operations Knowledge Area
ITIL IT Infrastructure (KA) is related to all other aspects of
Library software engineering. Therefore, this KA
KA Knowledge Area description is linked to all other software
KPI Key Performance engineering KAs of the SWEBOK Guide,
indicator particularly the Software Construction KA,
MR Modification request which discusses preparing the software for
deployment, including integrating,
MVP Minimum Viable building, packaging and testing.
Product
PaaS Platform as a
Service Specialized software and information
technology (IT) operations engineers have
PR Problem Report traditionally provided and managed IT
QA Quality Assurance operations services. Best practices in
SaaS Software as a software engineering operations were
Service initially published by the IT Infrastructure
SLAs Service-Level Library (ITIL) and were quickly accepted
Agreements by the industry. These practices were
TDD Test Driven summarized and published in the Institute
Development of Electrical and Electronics Engineers
20000 standard [1].

INTRODUCTION Historically, operations and computing


centers were often located in organizational

Software Engineering Operations 6–1 © IEEE – SWEBOK Guide V4


silos separate from software development their daily project activities. For example,
activities. Progressive organizations now application developers in many
co-locate software development, software organizations can now directly use IaaS and
maintenance and some software PaaS to deploy applications in production
engineering operations activities (often environments and to monitor different
provided as a service). Benefits of this aspects of those applications without
approach are the elimination of the directly involving operations engineers.
organizational silos that separated these
software activities and the sharing of Although many organizations still use
common processes and tools. The rising conventional IT operations management
popularity and growing acceptance of processes, this KA focuses mainly on the
DevOps practices [2*] and related role of software engineers in operations in
standards [4], including an ever-evolving the emerging contexts of DevOps, IaC and
set of tools, reflect this trend. DevOps aims Agile infrastructure practices. For this
at automating and continuously evolving purpose, we identify two main software
software engineering activities to ensure engineering roles related to operations:
high-quality software and to satisfy users Operations engineer, who is responsible for
who demand quicker turnaround from developing operations services made
software engineers. available as a service and accessible
through an application programming
The software engineer’s role in software interface (API), and software engineer,
engineering operations has significantly who can use the resulting operations
evolved over the past decade with the services (available as a service) to
emergence of DevOps, Infrastructure as independently deploy and manage
Code (IaC), Agile infrastructure practices, applications without directly involving IT
and the availability of Infrastructure as a operations specialists.
Service (IaaS) and Platform as a Service
(PaaS) solutions. Tasks traditionally BREAKDOWN OF TOPICS FOR SOFTWARE
performed by IT infrastructure engineers ENGINEERING OPERATIONS
are increasingly automated and made The breakdown of topics for the Software
available as a service, enabling application Engineering Operations KA is shown in
developers to perform software engineering Figure 1.
operations tasks independently as part of

Software Engineering Operations 6–2 © IEEE – SWEBOK Guide V4


Figure 1. Breakdown of Topics for the Software Engineering Operations KA
This first section introduces the concepts
and terminology that form an underlying
1. Software Engineering Operations basis for understanding the role and scope
Fundamentals of software engineering operations.

closely with software engineers to develop


1.1. Definition of Software and offer operations services such as the
Engineering Operations following:
[1, c3s3.3][3, c6s6.4.12] ● Provisioning, deploying and
configuring, and supporting
In this Guide, the term software containers and virtual servers
engineering operations refers to the ● Designing and offering on-demand
knowledge, skills, processes and tools used services (e.g., environment on
by software engineers or their organization demand, versioning, continuous
to ensure that a software product, including integration (CI) and testing,
IT infrastructure, system software, and deployment, and surveillance) for
application software, operates well during use by software engineerins,
development, maintenance and in real ● Monitoring and troubleshooting
conditions of operations. system and application software
incidents by running diagnostics,
documenting problems and
In IEEE 12207 [3], an operator is defined resolutions, prioritizing problems,
as an “individual or organization that and assessing impact of issues,
performs the operations of a system.” The ● Performing, automating and
SWEBOK Guide modifies that definition implementing appropriate processes
for the term operations engineer, which for security, data protection and
refers to a software engineer who executes failover procedures,
software engineering operations processes.
In this role, an operations engineer works

Software Engineering Operations 6–3 © IEEE – SWEBOK Guide V4


● Overseeing capacity, storage individual, with descriptions of the
planning and database management training provided.
system (DBMS) performance,
● Providing documentation and 1.2. Software Engineering Operations
technical specifications to IT staff Processes [2*,
for planning and implementing new s1][3, c6s6.4.12]
or upgraded IT infrastructure and
system software.
IEEE 20000 [1] is the reference standard
that presents an overview of operations
IEEE 20000 [1] describes the need to processes. It specifies requirements for the
develop and enhance the professional design, transition, delivery and
competencies of operations engineers. To improvement of operations services. The
achieve this goal, software organizations IEEE 20000 describes five main operations
should address the following: process groups: service delivery processes,
● Staff recruitment: To validate job release processes, control processes,
applicants’ resolution processes and relationship
qualifications/competencies, processes. These operations processes are
including their professional further categorized as technical processes in
certifications, and to identify their IEEE 12207 [3]. Operations processes,
strengths, weaknesses and potential from the perspective of a software engineer,
capabilities against the operations contain the activities and tasks necessary to
engineer job description, core deploy, configure, operate and support an
technologies and computer existing software system or product while
languages mastered and overall preserving its integrity. The IEEE 12207
experience, describes four main operations process
● Resource planning: To staff new or activities: 1) prepare for the operation: that
expanded engineering operations requires to define an operation strategy; 2)
services, plan the use of new perform the operation: which consist of
technology, plan the assignment of operating and monitoring; 3) manage the
service management staff to results of operation: where anomalies are
development project teams, develop recorded and adressed; and finally 4)
succession planning and other support the customer: which means to give
staffing gaps created by staff assistance and consultation to any user of
turnover, the operations services.
● Resource training and development:
To identify training and
Finally, IEEE 2675 [4] introduces a number
development requirements and
of software engineering operations
create a training and development
activities using an Agile and a minimum
plan that meets them; also, to
viable product (MVP) perspective. This
provide timely, effective delivery of
standard recognizes the influence of
operations services. Operations
DevOps as a set of principles and practices
engineers should be trained in the
that enable better communication and
relevant aspects of service
collaboration between relevant
management (e.g., via training
stakeholders for the purpose of specifying,
courses, self-study, mentoring and
developing, continuously improving, and
on-the-job training), and their
operating software and system products and
teamwork and leadership skills
services. These processes and activities are
should be developed. A
the responsibility of operations engineers.
chronological training record
should be maintained for each

Software Engineering Operations 6–4 © IEEE – SWEBOK Guide V4


For the purpose of the SWEBOK Guide, deployment. To install the software, the
engineering operations activities can be engineer might have to uninstall previous
grouped into three main operations versions, configure the software for its
processes (see Figure 2) that each contain a target destination, and create the necessary
number of operations activities, which are directories, registry files and environment
described in the following sections of this variables on the target destination. This is
chapter: often done using a scripting language. The
● Operations Planning (section 2) installation of the software to the
● Operations Delivery (section 3) appropriate locations is typically done
electronically, but in the case of embedded
● Operations Control (section 4)
systems, it might require the use of a

physical medium. Once the software is


Figure 2. Software Engineering installed, a verification step is conducted to
Operations Processes and Activities ensure that the operation succeeded.

Each software engineering operations 1.4. Scripting and Automating


process includes activities performed [2*, c9]
during the pre delivery and post delivery
stages of a software project. Software As part of software engineering operations,
engineering operations planning activities repetitive tasks are automated to reduce
occur during the pre delivery stage. These delays, increase quality, and ensure a
activities are covered in this chapter. consistent and stable operational
environment. This is typically achieved
1.3. Software Installation using scripting languages, which are basic
[1, c3, c6s2][2*, c3s3.1] programming languages. Automating
operations enables a quicker reaction in
case of a failure and, therefore, results in
Before a software application or update can
less downtime and fewer severe incidents,
be made available to the users (i.e. released
as alerts are sent immediately. Automating
in production), the operations engineer
such tasks is also a good way to ensure
must install the software as part of its

Software Engineering Operations 6–5 © IEEE – SWEBOK Guide V4


standardization of operations in an impossible) and could require the use of
organization. It also constitutes the basis for testing techniques such as canary testing
the development of operations made and dark launches. The Software Testing
available as a service. Refer to section 6 for KA provides additional information and
further discussion on operations tools. references on testing.

1.5. Effective Testing and 1.6. Performance, Reliability and


Troubleshooting Load Balancing
[2*, c3] [1, c6s6.2]

Software engineering operations is Software operations engineers plan for


responsible for ensuring the stability of the performance, reliability and load balancing
system. For this purpose, software must be early in software projects to ensure they
thoroughly tested before it is released meet the project requirements. (See section
(deployed in production and made available 1.2 to 1.7 of the Software Requirements
to users). Because manual testing is KA). A current trend is for software
inefficient, error-prone and non-scalable, engineers to design and use
testing must be automated as much as infrastructure/operations services to adjust
possible throughout the entire software dynamically (e.g. scalability) the
process. Also, because the time available infrastructure according to the demand.
for testing is limited, regression testing and Using DevOps practices enables operations
test coverage strategies (the selective engineers to anticipate these needs early
retesting of a software application, or and provide infrastructure services that
component, to verify that the software to be software engineers can use and test during
deployed will not cause unintended effects) the development stages of a project.
play an important role in software
engineering operations.
2. Software Engineering Operations
Planning
When errors are found (in production after
the software is released or during internal
testing phases), software operations This topic introduces some of the generally
engineers need to troubleshoot hardware accepted techniques used in software
and software incidents by running engineering operations planning.
diagnostics, documenting problems and Operations engineers must deal with a
resolutions, prioritizing problems, and number of key issues to ensure software
assessing the impact of the issues. The cost operates effectively. Operations engineers
— in both time and money — of repeating should document their software engineering
full testing on a major piece of software is operations steps and tools, using any type,
significant. To ensure that the requested form or medium suitable for the purpose
problem reports (PRs) are valid, the (e.g., Wikis, documents, and more). The
operations engineer should replicate and following topics are typically considered
verify problems by running the appropriate suitable as evidence of well documented
tests. Testing certain aspects of the software operations:
in production can be particularly ● Policies and plans,
challenging. For example, when software ● Service documentation,
performs critical functions, bringing it off- ● Procedures,
line to test might be difficult. Generally, ● Processes, and
testing the software in the production ● Process control records.
system context is challenging (sometimes

Software Engineering Operations 6–6 © IEEE – SWEBOK Guide V4


2.1. Operations Plan and Supplier development and should specify how users
Management will request software modifications and
[1, c4s4.1][3, c6s6.1] report problems or issues when the software
will be operational. Software engineering
Software engineering operations planning operations planning is addressed in IEEE
should comprise part of the process of 12207 [3] and IEEE 2675 [4]. The standards
translating project requirements and the provide guidelines for planning,
needs of the developers and maintainers implementing, maintaining, automating and
into services, and it should provide a road supporting production software. Finally, at
map for directing progress. This process the highest planning level, the operations
often involves the products and services of organization must conduct business
suppliers that must be well coordinated to planning activities (e.g., budgetary,
ensure quality service. IEEE 20000 financial and human resources), just as all
describes planning activities, as well as the other divisions of the organization (refer
IEEE 12207, which lists the activities to the Software Engineering Management
operations engineers considers from KA). IEEE 20000 recommends that the
human, technical and system perspectives. operations plan address issues associated
with a number of planning perspectives,
including the following:
2.1.1. Operations Plan
[1, ● The roles and responsibilities for
c4s4.1][3,c6s6.4.12.3a] implementing, operating and
maintaining the new or changed service,
● Activities to be performed by customers
Whereas software development typically
and suppliers,
lasts from some months to a few years, the
operations phase usually lasts many years. ● Changes to the existing service
Therefore, estimating resources is a key management framework and services,
element of operations planning. Software ● Communication to the relevant parties,
engineering operations planning should ● New or changed contracts and
begin with the decision to develop a new agreements to align with changes in
software product and should consider its business needs,
maintenance and operations requirements ● Staffing and recruitment requirements,
early. A concept document should be ● Skills and training requirements (e.g.,
developed, followed by an operations and users, technical support),
maintenance plan [1,c7s2], and both should ● Processes, measures, methods and tools
address the following: to be used in connection with the new or
● Scope of the operations and software changed service,
maintenance, ● Capacity management, financial
● Adaptation of the software engineering management
operations process and tools, ● Budgets and timescales,
● Identification of the software ● Service acceptance criteria, and
engineering operations organization,
● The expected outcomes from operating
● Estimate of software engineering the new service, expressed in
operations and maintenance costs. measurable terms.

The next planning step suggest to develop a This plan ensures that an operational
software engineering operations plan, or strategy is defined, conditions for correct
concept of operations (CONOPS). This operations are identified and evaluated, the
plan should be prepared during software software is tested at scale to operate in its

Software Engineering Operations 6–7 © IEEE – SWEBOK Guide V4


intended environment, and surveillance is The overall software process requires the
provided to ensure responsiveness and use of different environments at different
availability of the software by ensuring stages. These are typically defined as the
constant support. At the individual request development environment, the testing or
level (e.g., PR and modification request quality assurance (QA) environment, the
(MR)) need planning. Once individual preproduction environment, and the
requests are received and validated, the production environment. To build quality
release or version planning activity requires into the product and reduce the risks
that operations engineers perform the associated with the release of software in
following tasks: the production environment (whether the
● Identify the target availability dates of release is associated with new functionality
individual requests, or a defect fix), engineers must ensure that
● Agree on the content of subsequent the different environments are all coherent
releases or versions, and synchronized with the production
environment.
● Identify potential conflicts and develop
alternatives,
● Assess the risk of a given release and For this reason, DevOps recommends that
develop a rollback and data migration the creation of all the different
plan (see section 3.2) in case problems environments be automated and built from
arise, a single code repository. In mature DevOps
organizations, the creation of the different
● Inform all stakeholders.
environments is completely automated and
made available as a service. Also, all
2.1.2. Supplier Management environments need to be built from the
same code source (single source of truth) to
[1, c7s3][3, c6s6.1] ensure that all the environments are
synchronized with the production
Supplier management ensures that the environment in which the software is
organization’s suppliers and their released. This leads to the concept of IaC.
performance are managed appropriately to
support the seamless provision of quality 2.3. Software Availability, Continuity
products and services. IEEE 12207 lists the and Service Levels
activities that the operations engineer will [1, c6s6.3]
perform to establish an agreement to
acquire suppliers’ products and/or services.
Service availability and continuity must be
From an operations engineer’s perspective,
managed to ensure that customer
the nature of the relationship with suppliers
commitments are met. Because service
and the approach should be determined by
availability and continuity are defined as
the nature of the products and services
nonfunctional requirements early in a
needed in a project. Managing suppliers of
project (see the Software Quality KA),
services related to operational software
operations engineers will ensure that the
includes managing outsourced services and
proper infrastructure is planned, designed,
services provided by software as a service
implemented and tested. Software
(SaaS), PaaS and IaaS.
availability is measured and recorded, and
unplanned nonavailability is investigated
2.2. Development and Operational and appropriate actions taken. Service
Environments reports produce availability and continuity
[2*, c9] indicators of operations services against
service-level targets.

Software Engineering Operations 6–8 © IEEE – SWEBOK Guide V4


and recommend solutions to ensure
The service-level management process achievement of the agreed-upon service-
monitors the agreed software level of level targets as defined in the SLA. The
service, including workload characteristics, technical infrastructure and its current and
performance and availability trend projected capabilities should be well
information and customer satisfaction understood.
analysis. Defining, agreeing to and
documenting service-level agreements 2.5. Software Backup, Disaster
(SLAs) can help clarify the full range of Recovery and Failover
operations services obligations provided. [1, c6s6.3.4]

2.4. Software Capacity Management IEEE 20000 proposes that, to ensure


continuity planning and testing, backups of
[1, c6s6.5] data, documents and software, as well as
any equipment and staff necessary for
IEEE 20000 describes the need to ensure service restoration, should be quickly
that the software product has the capacity, available following a major service failure
at all times, to meet current and future or disaster. Backup and data recovery are
agreed-upon demands created by the important activities; successful recovery is
customer’s business needs. The current and especially vital. The need for successful
expected business requirements for services recovery should influence which backup
should be understood in terms of what the and recovery methods are used (full or
business needs in order to deliver its incremental), how frequently restore points
products or services to its customers. are established, where they are stored, and
Business predictions and workload how long they are retained.
estimates should be translated into specific
requirements and documented. The reaction Preparedness and regular test of backup,
to variations in workload or environment disaster recovery, and failover should be
should be predictable; data on current and constantly rehearsed as changes to the
previous components, as well as resource production environment are made. This is
utilization at an appropriate level, should be another essential activity that is triggered
captured and analyzed to support the when outage assessments are done. Testing
process. disaster recovery requires stopping the
service, identifying the checkpoint state and
Capacity management is the focal point for triggering the failover process. Software
all performance and capacity issues. The engineers should understand that failure is
process should directly support the inevitable and that automated failover
development of new and changed services daemons can reduce recovery time
by sizing and modeling these services. A drastically. To achieve this, software
capacity plan documenting the actual applications should include failure-
performance of the infrastructure and the handling logic; this must be planned during
expected requirements should be produced development. DevOps can help
at a suitable frequency (at least annually), organizations that want to reduce failovers
considering the rate of change in services and disasters by automating and launching
and service volumes, information in the tests as often as possible to ensure readiness
change management reports, and changing in case of a failure or catastrophic event.
customer business requirements. The
capacity plan should document costed
options for meeting business requirements

Software Engineering Operations 6–9 © IEEE – SWEBOK Guide V4


2.6. Software and Data Safety,
Security, Integrity, Protection and 3.1. Operational Testing, Verification
Controls [1, c6.s6.6] and Acceptance
[2*,c10] [3, c6s6.3.5.3d]
The need to manage information security
effectively within all service activities is Software engineers plan and execute
described in IEEE 20000. This is done by software verification as early as possible,
conducting a software risk assessment on using test-driven development (TDD) and
the security and availability of information. acceptance test-driven development
Operations engineers should strive to (ATDD) techniques and tools that ensure
enforce the following controls: that operational testing is ongoing during
a) Senior management should define their the development of the software, not only at
information security policy, communicate the end of a project. DevOps plays an
it to staff and customers, and act to ensure important role in developing and
its effective implementation, automating software testing services and
b) Information security management roles integrating different tools to boost software
and responsibilities should be defined and productivity and quality. (See TDD and
allocated to post holders, ATDD in the Software Testing KA.)
c) A representative of the management
team should be assigned the role of 3.2. Deployment/Release Engineering
monitoring and maintaining the [2*,c12][3,c6s6.3.5.3d]
effectiveness of the information security
policy, A software operations engineer’s main
d) Staff with significant security roles responsibility relates to the deployment and
should receive information security release of software to ensure its continued
training, performance. As defined in [2*],
e) All staff should be made aware of the “deployment is the installation of a
information security policy, specified version of software to a given
f) Expert help on risk assessment and environment (e.g., deploying code into an
control implementation should be integration test environment or deploying
available, code in production),” whereas “release is
g) Changes should not compromise the when we make a feature (or set of features)
effective operation of controls, and available to all our customers or a segment
of customers (e.g., we enable the feature to
h) Information security incidents should be
be used by 5% of our customer base).”
reported following incident management
Release processes include all the activities
procedures, and a response should be
related to release management. ISO 12207
initiated.
[3] lists release control activities and
explains the need to identify and record
3. Software Engineering Operations release requests, identify the software
Delivery system elements in a release followed by
approval, and track the releases in their
This topic introduces some of the generally
specified environments.
accepted processes used during software
engineering operations delivery (IEEE
20000): SLA, service reporting, service DevOps advocates integrating development
continuity, availability management, and operations in the same team to improve
budgeting and accounting for IT services, software engineering operations efficiency.
capacity management, and information In traditional software processes, when an
security management. application is ready for deployment, it is

Software Engineering Operations 6–10 © IEEE – SWEBOK Guide V4


transferred from a development team to an Management KA provides more
operations team that is responsible for information about the release processes.
deployment, which is mostly done Once the application platform is deployed
manually. This results in processes that are in the targeted production environment, the
inefficient from both a time and a quality decision to make it available to the users
perspective. To improve the efficiency of (release it) becomes a business decision.
the deployment process, DevOps calls for
automating the different deployment steps, 3.3. Rollback and Data Migration
including packaging the code, generating [2*, c12][3, c6s6.4.10.3]
configuration files, restarting the servers,
configuring the servers and databases,
installing the software on the different Rollback and data migration are terms used
servers, launching the execution of the to describe the process of returning
application, and executing smoke testing. software and its database to a state where
they work properly. Software engineers
ensure that when a new version of the
Different release engineering strategies can software and its databases have been
be used to reduce the risks associated with modified and deployed to production, they
software releases. These strategies can be can easily and quickly be rolled back in case
grouped into two main categories: the new version is causing defects or
environment-based release strategies and product degradation in production. This
application-based release strategies. means a planned and rehearsed rollback is
Environment-based release strategies use a done before a new version of the software
staging environment to support the release is deployed in production. DevOps
of a new version of an application. In other processes automate this process to make it
words, the basic strategy involves faster; in fact, the automated surveillance
deploying the new version of the can trigger rollback and data migration to a
application to a staging environment. previous state so quickly that the end user
Application-based release strategies are doesn’t notice that there was a problem.
based on the use of toggles (e.g., feature Both release strategy categories (described
toggles) that make it possible to enable or in section 3.2) — environment-based
disable specific sections of the code (e.g., a release and application-based release —
feature) using configuration parameters. can be used to support rollback.

Deployment and release are supported by 3.4. Change Management


automation techniques and tools. The [1, c9s9.2]
canary release testing technique is a partial
and time-limited deployment of a change in
a service and an evaluation of that change. This operations process ensures that all
This evaluation helps the operations changes are assessed, approved,
engineer decide whether to proceed with a implemented and reviewed in a controlled
complete deployment. Similarly, tools that manner. All change requests are recorded
manage the installation of new software and classified (e.g., emergency, urgent,
typically observe the newly started server major and minor). This process assesses the
for a while, ensuring that the server doesn’t risk of a change and the need for a rollback
crash or otherwise misbehave. The same strategy in case of failure. Large systems
technique is useful for observing recent might require that a change schedule be
changes; if they do not pass the validation planned with the product manager and end
period, they can be automatically rolled users.
back. The Software Configuration

Software Engineering Operations 6–11 © IEEE – SWEBOK Guide V4


Whereas in traditional software delivery business impact, resolution, escalation and
processes (or software life cycle models), closure of software incidents. The modern
all changes are delivered as part of new DevOps approach automates software
software releases (containing multiple surveillance using alerts and logs to prevent
changes related to different aspects of the minor incidents from becoming major
application or system) issued at fixed time incidents.
intervals (e.g., every three months),
DevOps aims to deliver small units of 4.2. Monitor, Measure, Track and
change (a single new functionality or Review
service, or defect fix, rather than a new [2*, c14-15]
version of an application containing
multiple changes) on demand and
independently from each other. For this Software engineering operations activities
purpose, software applications (or services) monitor capacity, continuity and
must be architected to enable small, availability. In a DevOps mindset, hope
independent software deployments. should not be a strategy; instead, engineers
should be informed about system quality
and operational health with evidence, such
3.5. Problem Management as the following key performance indicators
(KPI), which are available to stakeholders
[1, c8s8.3] in real time:
● Production system’s monitoring and
The objective of this operations process is product telemetry,
to minimize disruption to the business ● Actionable verification and
through the identification and analysis of validation results before and after
the cause of software and system incidents release to production,
and problems. This approach may require ● End-user activity and resource use,
the involvement of a multidisciplinary ● Impact analysis results,
team, whose software engineers and ● Inter- and intra-related
operations engineers investigate, for dependencies required for system
example, recurring production problems operation,
that might have an underlying cause in ● Configuration changes unrelated to
software infrastructure and system approved deployment tasks, and
components. This might require ● Security and resilience performance
monitoring, logging and profiling the capability.
software and its infrastructure behavior.
4.3. Operations Support
4. Software Engineering Operations [1, c6, c14s5]
Control
IEEE 12207 [3], IEEE 20000 [1] and IEEE
This topic introduces some generally 2675 [4] identify the primary software
accepted techniques used in software engineering operations activities that
engineering operations control. support the operations processes —
activities that operate the software product
in its intended environment — and the
4.1. Incident Management primary activities that provide support to
[1, c8s8.2] the customers of the software products.
Operations support acticities are initiated at
Incident management is the process of the planning stage of the project and are
recording, prioritizing and assessing the then executed, which often requires

Software Engineering Operations 6–12 © IEEE – SWEBOK Guide V4


techniques and tools to proactively monitor techniques to detect problems as early as
the product and services and react quickly possible to prevent incidents. For this
to events and incidents. Support activities purpose, data collected at all layers of the
are often described in SLAs. product stack (including application layer,
operating system layer and infrastructure
4.4. Operations Service Reporting layer) must be collected and analyzed.
[1,c6s6.2] Using product telemetry not only allows
engineers to detect potential issues but also
provides the foundation for identifying the
Service reporting aims to produce agreed- source of the problem.
upon, timely, reliable and accurate
information for decision-making. Each
service report helps demonstrate how an 5.2. Operational Risk Management
operations service has performed and
whether it has met some stated and agreed- [3, c6s6.4.12.3c4]
upon end-user objective. Typical service
reports address performance against Operations engineers must manage a
service-level targets, as well as security number of risks. IEEE 2675 [4] defines
breaches, the volume of transactions and continuous risk management as a
resource use, incidents and failures, trend continuous process that can be automated to
information, and satisfaction analysis. monitor operations constantly for risks that
Operations engineers need to establish can affect software availability, scalability
automated systems and tools for and security. Operations engineers can take
measurement to do the following: measures to automate the alerts. To decide
● Determine whether measures are what events will trigger an alert, they need
already available or additional to talk with product owners and software
instrumentation for collection, engineers to establish an agreed-upon level
analysis and reporting is needed of risk tolerance. Other perspectives are to
● Select or develop a framework and choose the deployment process that is
tools to allow coordination of appropriate for the risk profile of a given
measurement collection for service and the risks of exposing private
analysis, reporting and control data.

5.3. Automating Software


5. Practical Considerations Engineering Operations
[2*, c8]
This topic introduces practical
considerations for software engineering Automation has taken an important place in
operations. recent years in modern operations. Software
engineers achieve the best results when
5.1. Incident and Problem Prevention coupling applications and operations
automation. Although automation primarily
[2*, c7] focuses on managing the life cycle of a
system or infrastructure (e.g., user account
The overall operations process needs to be creation, environments and server
automated as much as possible to prevent provisioning, runtime config changes), it
incidents and problems, and automated can also be useful in other use cases where
testing needs to be integrated throughout services can be developed to help software
the process. Also, product telemetry should engineers deploy, test and debug during
be implemented with proper analytics development. Trends in operations

Software Engineering Operations 6–13 © IEEE – SWEBOK Guide V4


automation aim to reduce complexity,
accelerate provisioning of infrastructure, Continuous delivery (CD) is a software
offer operations services scripts to engineering practice that uses automated
developers, define applications, automate tools to provide frequent releases of new
deployment and test workflows. systems (including software) to staging or
various test environments. CD continuously
5.4. Software Engineering Operations assembles the latest code and configuration
for Small Organizations from the head into release candidates.

Continuous testing is a software testing


Very small organizations (organizations of practice that involves testing the software at
up to 25 people) have difficulty applying every stage of the software development
standards developed by and for large life cycle. Continuous testing aims to
organizations, as their requirements can evaluate the quality of software at every
overwhelm the capabilities of small step of the CD process by testing early and
organizations. This is where the ISO/IEC often. Continuous testing involves various
29110 series is useful, as it provides stakeholders, such as developers, DevOps
standards and guidelines adapted to very personnel, and QA and end-users..
small organizations to ensure the quality of
their software engineering operations [7]. Continuous deployment (aka CD) is an
Software engineers should be aware that automated process of deploying changes to
operations processes can be adapted to production by verifying intended features
small organizations and that the ISO/IEC and validations to reduce risk. Jez Humble
29110 series is available for this purpose. and David Farley [8] pointed out that “[t]he
biggest risk to any software effort is that
you end up building something that isn’t
6. Software Engineering Operations useful. The earlier and more frequently you
Tools [1, get working software in front of real users,
c5s5g][2*, c12] the quicker you get feedback to find out
how valuable it really is.”
This topic encompasses tools that are
particularly important in software 6.1. Containers and Virtualization
engineering operations for maximizing the
efficient use of personnel. Automating
development, maintenance and operations-
related tasks saves engineering resources Different container/virtualization
and improves quality and turnaround. When technologies and management tools (also
implemented appropriately, such called orchestrators) are available to
automated tasks are generally faster, easier operations engineers to improve the
and more reliable than they would be if they scalability of applications and standardize
were attempted manually by software software deployment across multiple
engineers and operations engineers. computer and server suppliers. [4,
DevOps supports such automation for c6,s6.4.12] Operations engineers use their
integrating, building, packaging, and knowledge of the size and complexity of
deploying reliable and secure systems. It each project to identify the best tool for
combines development, maintenance, and flexibility, security and monitoring.
operations resources and procedures to
perform CI, delivery, testing and
deployment.

Software Engineering Operations 6–14 © IEEE – SWEBOK Guide V4


6.2. Deployment
6.4. Monitoring and Telemetry
[2*, c12]
Different technologies and tools can be [2*, c14-15]
used to manage software deployments in Monitoring and telemetry are key aspects of
different environments. [4, c5s5.1] Also, software engineering operations. They
different tools are usually combined to collect data at all layers of the software
cover the different phases and aspects of system (including application, operating
software deployment, ranging from the system and server) and extract information
specification of deployment and that can be used to analyze and monitor
configuration using descriptor files to the different aspects of the system to detect
automated deployment and management of issues and follow the evolution of various
production environment resources. properties. James Turnbull [9] describes a
general monitoring framework architecture
6.3. Automated Test used by engineering operations in many
technology organizations. Implementing
[2*, c10] monitoring solutions requires combining
To enable fast and constant feedback to the different techniques and tools to collect data
developers, testing must be automated as at different layers. This includes logs at the
much as possible throughout the entire application level, execution traces at the
software delivery process, including operating system level and resource use
throughout development and operations. information (like CPU and memory use) at
For this purpose, a testing strategy covering the server level. Then, based on the
the different types of test (unit test, collected data, different analytics
integration test, system test, user techniques (e.g., statistical analysis and
acceptance test) must be defined, and tools machine learning techniques) can be used to
to support and automate the different testing extract relevant information. Finally,
phases must be selected. The automation of dashboards can be used to visualize the
testing is critical to provide continuous extracted information; different dashboards
feedback to software engineers developing can be developed to display relevant
code and thereby to improve software information to different stakeholders.
quality.

MATRIX OF TOPICS VS. REFERENCE MATERIAL

The DevOps
ISO 20000-1 Handbook IEEE 12207
[1] [3]
[2*]

1. Software Engineering
Operations Fundamentals
1.1. Definition of Software c6s6.4.12
c3s3.3
Engineering Operations
1.2. Software Engineering c6 s6.4.12
s1
Operations Processes
1.3. Software Installation c3, c6s2 c3s3.1
1.4. Scripting and Automating c9

Software Engineering Operations 6–15 © IEEE – SWEBOK Guide V4


1.5. Effective Testing and
c3
Troubleshooting
1.6. Performance, Reliability and
c6s6.2
Load Balancing
2. Software Engineering
Operations Planning
2.1. Operations Plan and Supplier
c4s4.1 c6s6.1
Management
2.2. Development and Operational
c9
Environments
2.3. Software Availability,
c6s6.3
Continuity and Service Levels
2.4. Software Capacity
c6s6.5
Management
2.5. Software Backup, Disaster
c6s6.3.4
Recovery and Failover
2.6. Software and Data Safety,
Security, Integrity, Protection c6s6.6
and Controls
3. Software Engineering
Operations Delivery
3.1. Operational Testing,
c10 c6s6.3.5.3d
Verification and Acceptance
3.2. Deployment/Release
c12
Engineering
3.3. Rollback and
c12 c6s6.4.10.3
Data Migration
3.4. Change Management c9s9.2
3.5. Problem Management c8s8.3
4. Software Engineering
Operations Control
4.1. Incident Management c8s8.2
4.2. Monitor, Measure, Track and
c14-15
Review
4.3. Operations Support c6, c14s5
4.4. Operations Service Reporting c6s6.2
5. Practical Considerations
5.1. Incident and Problem
c7
Prevention
5.2. Operational Risk Management c6s6.4.12.3c4
5.3. Automating Software
c8
Engineering Operations
5.4. Software Engineering
Operations for Small
Organizations
6. Software Engineering
c5s5g c12
Operations Tools

Software Engineering Operations 6–16 © IEEE – SWEBOK Guide V4


6.1. Containers and Virtualization
6.2. Deployment c12
6.3. Automated Test c10
6.4. Monitoring and Telemetry c14-15

Standard for DevOps: Building


REFERENCES Reliable and Secure Systems
[1] IEEE standard, Including Application Build,
ISO/IEC/IEEE 20000-1:2013, Package and Deployment, ed.
Information technology — Service IEEE, 2021.
management — Part 1: Service [5] IEEE/ISO/IEC standard,
management systems requirements, IEEE/ISO/IEC 24765:2010,
ed. IEEE, 2013. Systems and Software Engineering
[2*] G. Kim, J. Humble, J. — Vocabulary, 1st ed.
Debois, J. Willis, N. Forsgren, The [6] B. Beyer, C. Jones, J. Petoff,
DevOps Handbook: How to create N. R. Murphy, Site Reliability
world-class agility, reliability and Engineering — How Google Runs
security in technology Production Systems, O’Reilly
organizations, 2nd ed., IT Media, 2016.
Revolution Press, 2021. [7] ISO/IEC 29110-5-5:2023,
[3] IEEE standard, Systems and software engineering —
ISO/IEC/IEEE 12207:2017, Lifecycle profiles for Very Small
Systems and software engineering Entities (VSEs), Agile/DevOps
Software Development and Support
— Software Life Cycle Processes,
Guidelines.
ed. IEEE, 2017.
[4] IEEE standard,
ISO/IEC/IEEE 2675:2021, IEEE
[8] J. Humble, and D. Farley. Continuous delivery: reliable software releases
through build, test, and deployment automation. Pearson Education, 2010.
[9] Turnbull, James. The art of monitoring. James Turnbull, 2014.

Software Engineering Operations 6–17 © IEEE – SWEBOK Guide V4


CHAPTER 7
SOFTWARE MAINTENANCE
ABBREVIATIONS
Software maintenance is an integral part of a
API Application programming software life cycle. However, it has not
interface received the same degree of attention as the
CI Continuous integration other software engineering activities.
IEC The International Historically, software development has had a
Electrotechnical Commission much higher profile than software
IEEE The Institute of Electrical and maintenance. This is now changing as
Electronics Engineers organizations strive to optimize their
ISO International Organization for software engineering investment by ensuring
Standardization continuous development, maintenance and
operation, progressively eliminating the
KA Knowledge area
organizational silos among these areas. The
LOC Lines of code growing acceptance of DevOps practices and
MR Modification request tools have drawn further attention to the need
PR Problem report to continuously evolve software while
SCM Software configuration ensuring its smooth operation to satisfy users,
management who are demanding quicker turnaround from
SEE Software engineering software engineers than in the past.
environment
SLA Service-level agreement In this SWEBOK Guide, software
SLI Service-level indicators maintenance is defined as the totality of
SLO Service-level objectives activities required to provide cost-effective
support for software in operation. Activities
SQA Software quality assurance to support software operation and
V&V Verification and validation maintenance are performed during the pre
XaaS Anything as a service delivery stage and during the post delivery
stage. Pre delivery activities include planning
INTRODUCTION for post delivery operations, maintainability
Successful software development efforts and determining the logistics support needed
result in the delivery of a software product for the transition from development to
that satisfies user requirements. As those maintenance.. Postdelivery activities include
requirements and other factors change, the software surveillance, modification, training,
software product must evolve: Once the and operating or interfacing with a help desk.
software is in operation, defects are
uncovered, operating environments change, The Software Maintenance Knowledge Area
and new user requirements surface. The (KA) is related to all other aspects of software
maintenance phase of the life cycle begins engineering. Therefore, this KA description
after a warranty period or after post- is linked to all other software engineering
implementation support delivery, but KAs in the Guide.
maintenance activities occur much earlier.

Software Maintenance 7–1 © IEEE – SWEBOK Guide V4


BREAKDOWN OF TOPICS FOR SOFTWARE understanding the role and scope of software
MAINTENANCE maintenance. Among these concepts are the
different categories of software maintenance.
The breakdown of topics for the Software
Learning about these categories is critical to
Maintenance KA is shown in Figure 1.
understanding what this knowledge area
1. Software Maintenance Fundamentals encompasses and why it is so important.
This section introduces the concepts and
terminology that form a basis for

Figure 1. Breakdown of Topics for the Software Maintenance KA

1.1. Definitions and Terminology with software development and software


[1, s3.1][2*, operation and also has its own processes and
c1s1.2, c2s2,2] techniques

The purpose of software maintenance is 1.2. Nature of Software Maintenance


defined in the international standard for
software maintenance: ISO/IEC/IEEE 14764 [2*, c1s1.3]
[1]. In the context of software engineering,
software maintenance is essentially one of Software maintenance sustains the software
many technical processes. The objective of product throughout its life cycle (from
software maintenance is to modify existing development through operations). The
software while preserving its integrity. The software is monitored for capacity, continuity
international standard also emphasizes the and availability. Modification requests
importance of performing some maintenance (MRs) and incidents or problems reports
activities before final delivery of the software (PRs) are logged and tracked, the impact of
(pre delivery activities). Software proposed changes is determined, code and
maintenance shares knowledge and tools

Software Maintenance 7–2 © IEEE – SWEBOK Guide V4


other software artifacts are modified, testing functionality
is conducted, and a new version of the ● Adapt to changes in interfaced systems or
software product is released into operation. infrastructure
Also, training and daily ongoing support are ● Prevent security threats
provided to users. A software maintainer is
● Remediate technical obsolescence of
defined as a role or an organization that
system or software elements
performs software maintenance activities. In
this KA, the term sometimes refers to ● Retire the software
individuals who perform those activities, to
contrast their role with the software 1.4. Majority of Maintenance Costs
developer’s role. [2*,
c4s4.3, c5s5.2]
Maintainers can learn from the developers’
and operators’ knowledge of the software. It is generally accepted that the relative cost
Early contact with the developers and early of error fixing increases in later phases of the
involvement by the maintainers can reduce software life cycle. Maintenance also uses a
the overall maintenance costs and efforts. An significant portion of the total financial
additional challenge is created when resources attributed throughout the life of a
maintainers join the project after the initial software. A common perception of software
developers have left or are no longer maintenance is that it merely fixes faults.
available. Maintainers must understand and However, studies and surveys over the years
use software artifacts from development have indicated that most software
(e.g., code, tests or documentation), support maintenance — over 80% — is used for
them immediately, and progressively evolve enhancing and adapting the software [3].
and maintain them over time. Grouping enhancements and corrections
together in management reports contributes
1.3. Need for Software Maintenance to a misconception that corrections cost more
than they really do. Understanding the
[2*, c1s1.5] categories of software maintenance helps us
understand the structure of software
maintenance costs — that is, where most of
Software maintenance is needed to ensure that spending goes [7]. Also, understanding
that the software continues to satisfy user the factors that affect the maintainability of
requirements throughout its life span. software can help organizations contain
Maintenance is necessary regardless of the costs. Environmental factors that affect
type of software life cycle model used to software maintenance costs include the
develop it (e.g., waterfall or Agile). Software following:
products change as a result of both corrective
● Operating environment (hardware and
and non-corrective actions. Software
software)
maintenance is typically performed to do the
following: ● Organizational environment (policies,
competition, process, product and
● Correct faults and latent defects
personnel)
● Improve the design or performance of
operational software
1.5. Evolution of Software
● Implement enhancements
● Help users understand the software’s [2*, c3s3.5]

Software Maintenance 7–3 © IEEE – SWEBOK Guide V4


unless it is rigorously maintained and
Software maintenance as an activity that adapted to changes in the operational
supports the evolution of software was first environment.
addressed in the late 1960s. Research, by ● Feedback System — Software
Lehman and others, over a period of twenty evolution processes constitute
years led to the formulation of eight laws of multilevel, multi-loop, multi-agent
software evolution: feedback systems and must be treated
● Continuing Change — Software must as such to achieve significant
be continually adapted, or it becomes improvement over any reasonable
progressively less satisfactory. base (in other words, the maintenance
● Increasing Complexity — As process is similar to an Agile
software evolves, its complexity process).
increases unless work is done to
maintain or reduce that complexity. Key findings of Lehman’s research include a
● Self-Regulation — The program proposal that maintenance is evolutionary
evolution process is self regulating development and that maintenance decisions
with close to normal distribution of are aided by an understanding of what
measures of product and process happens to software over time. Another way
attributes. to think of maintenance is as continued
● Invariant Work Rate — The average development that accommodates extra inputs
effective global activity rate in an (or constraints) — in other words, large
evolving software package is software programs are never complete and
invariant over the product’s lifetime. continue to evolve. As they evolve, they grow
● Conservation of Familiarity — As more complex unless action is taken to
software evolves, all associated with reduce that complexity.
it (e.g., developers, sales personnel
and users) must maintain mastery of 1.6. Categories of Software
its content and behavior to achieve Maintenance [1,
satisfactory evolution. Excessive s3.1.8][2*, c1s1.8, c3s3.3]
growth diminishes that mastery.
Hence, average incremental growth
remains invariant as the system Five categories (types) of software
evolves. maintenance have been standardized to
● Continuing Growth — Functional classify a maintenance request: corrective,
content of a program must be preventive, adaptive, additive and perfective.
continually increased to maintain user ISO/IEC/IEEE 14764 [1], regroups these
satisfaction over its lifetime. maintenance categories as either corrections
● Declining Quality — The quality of or enhancements, as shown in Figure 2.
software will appear to be declining

Software Maintenance 7–4 © IEEE – SWEBOK Guide V4


performance, maintainability or other
Figure 2. Software Maintenance software quality attributes, and b) it adds
Categories functionality or features with relatively
large additions or changes for improving
software attributes after delivery..
ISO/IEC/IEEE 14764 [1] also defines a sixth
category — emergency maintenance: ● Perfective maintenance: Modification of
a software product after delivery to
● Corrective maintenance: Reactive
provide enhancements for users,
modification (or repairs) of a software
improvement of program documentation,
product performed after delivery to
and recoding to improve software
correct discovered problems.
performance, maintainability, or other
● Preventive maintenance: Modification of software attributes.
a software product after delivery to
● Emergency maintenance: Unscheduled
correct latent faults in the software
modification performed to temporarily
product before they occur in the live
keep a system operational, pending
system.
corrective maintenance.
● Adaptive maintenance: Modification of a
software product performed after
delivery to keep a software product 2. Key Issues in Software Maintenance
usable in a changed or changing A number of key issues must be dealt with to
environment. Adaptive maintenance ensure the effective maintenance of software.
provides enhancements necessary to Software maintenance provides unique
accommodate changes in the technical and management challenges for
environment in which a software product software engineers (e.g.,the challenge of
operates (e.g., an upgrade to the operating finding a fault in large complex software
system results in changes to the developed by someone else.)
applications).
● Additive maintenance: Modification of a
Similarly, in an Agile setting, maintainers
software product performed after
and developers are constantly striving to
delivery to add functionality or features
make sure that clients see the value at the end
to enhance the usage of the product.
of each iteration so maintenance activities
Additive maintenance differs from
have to compete with the development of
perfective maintenance in that a) it
new features for client approval; Planning for
provides additional new functions or
a future release, which often includes coding
features to improve software usability,

Software Maintenance 7–5 © IEEE – SWEBOK Guide V4


the next release while sending out emergency tool-based graphical representations of the
patches for the current release, also creates a code.
challenge in balancing maintenance and
development work. The following section 2.1.2. Testing
presents technical and management issues [1, s6.2][2*,
related to software maintenance. They are c9, c13s13.4.4]
grouped under the following topics:
● Technical issues
Test planning and activities occur during
● Management issues MRs and PRs processing. The cost of
● Maintenance costs repeating full testing on a major piece of
● Maintenance measurement. software is significant, in both time and
money. To ensure a software modification is
2.1. Technical Issues validated, the maintainer should replicate or
verify changes by planning and executing the
appropriate tests — for example, regression
2.1.1. Limited Understanding
testing is important in maintenance.
Regression testing is the selective retesting of
[2*, c6s6.9]
software or a component to verify that the
modifications have not caused unintended
Limited understanding describes a software effects. Another challenge is finding the time
engineer’s initial comprehension of software to conduct as much testing as possible.
someone else developed. This is reflected in Coordinating tests when different members
how quickly a software engineer can of the maintenance team are working on
understand where to change or correct the different problems at the same time can be
software. Research indicates that about half challenging. Bringing software offline to test
of total maintenance effort is devoted to it can be difficult if the software performs
understanding the software to be modified. critical functions. The Software Testing KA
Naturally, then, the topic of software provides additional information and
comprehension is of great interest to software references on software testing and its
engineers. A number of comprehension subtopic on regression testing.
factors have been identified: 1) domain
knowledge; 2) programming practices (e.g.,
implementation issues); 3) documentation; 2.1.3. Impact Analysis
and 4) organisation and presentation issues. [1,
Comprehension is more difficult in text- s5.1.6][2*, c13s13.3]
oriented representation (e.g., in source code),
where it is often difficult to trace the An impact analysis is a complete analysis of
evolution of software through its releases or the impact of a proposed change in existing
versions if changes are not documented and software. Software engineers should strive to
the developers are not available to explain conduct the analysis as cost-effectively as
them. Thus, software engineers may initially possible. Maintainers need detailed
have a limited understanding of the software, knowledge of the software’s structure and
and much work must be done to remedy this. content. They use that knowledge to perform
Various techniques can help engineers the impact analysis, which identifies all
understand existing software, such as systems and software products that would be
visualization and reverse engineering using affected by a software change request and

Software Maintenance 7–6 © IEEE – SWEBOK Guide V4


develops an estimate of the resources needed More information can be found in the
to accomplish the change. The analysis also Software Configuration Management KA.
determines the risks involved in making the
change. The change request, sometimes 2.1.4. Maintainability
called an MR and often called a PR, must first [1, s8.8][2*, c12s12.5.5]
be analyzed and translated into software
terms. Impact analysis is performed after a
change request enters the software ISO/IEC/IEEE 14764 [1] defines
configuration management (SCM) process. maintainability as the capability of the
ISO/IEC/IEEE 14764 [1] states that the software product to be modified.
impact analysis tasks do the following: Modifications can include corrections,
improvements or adaptation of the software
● Develop an identification scheme for
to changes in environment, as well as
MRs/PRs
changes in requirements and functional
● Develop a scheme for categorizing and specifications.
prioritizing MRs/PRs
● Determine the procedures for an operator
As an important software quality
to submit an MR/PR
characteristic, maintainability should be
● Identify the information needs and issues specified, reviewed and controlled during
that must be tracked and reported to the software development activities in order to
users and identify the measures that reduce maintenance costs. When these
provide feedback on those information activities are carried out successfully, the
needs and issues software’s maintainability will benefit.
● Determine how temporary work-arounds Maintainability is often difficult to achieve
will be provided to the operators because it is often not a primary focus during
● Track the work-around(s) through to software development. The developers are
removal typically more focused on other activities and
● Determine what follow-up feedback will might not pay enough attention to
be provided to the users maintainability requirements. This can result
in bad architecturing, missing software
Software maintainers often use the severity documentation or test environments, which is
of a problem as a guide when deciding how a leading cause of difficulties in program
and when to fix the problem. The maintainer comprehension and subsequent impact
then identifies the affected components, analysis during maintenance. The presence of
develops several potential solutions, and, systematic and mature software development
finally, recommends a course of action. processes, techniques and tools helps
enhance the maintainability of software.
Impact analyses of proposed maintenance
changes often consider various factors such Compromised software maintainability
as the maintenance action category, the size typically increases the burden on software
of the modification, the cost involved, engineers who maintain the software in the
needed to make the modification, and any future; in other words, it creates technical
impacts on performance, safety and security. debt. Technical debt commonly occurs when
Designing software with maintainability in software engineers attempt to conclude
mind greatly facilitates impact analysis. development or maintenance tasks before
they have been peer reviewed thouroughly.

Software Maintenance 7–7 © IEEE – SWEBOK Guide V4


This practice generally creates a technical consequence, adding new features is often
debt that will take additional time and effort given higher priority than other maintenance
to address during maintenance. Specifically, activities (such as refactoring, security or
software engineers must investigate three performance improvement) to meet the goals
areas in depth when addressing technical and objectives of software customers, as well
debt: as with constraints such as time and budget.
1. Code quality versus relevance: Not all However, such organizational objectives and
technical debt is urgent. constraints must be balanced with software
2. Alignment with organizational maintainability and engineering standards to
objectives: The software architecture avoid code decay and technical debt.
should reflect the organization’s
goals. Applying product management approaches to
3. Process loss: Ensure complementary the management of software development
skills of software engineers involved. and maintenance can help organizations:
● Understand the total cost of
2.2. Management Issues operational software over its full life
cycle
2.2.1. Alignment with ● Compare the costs and benefits of
developing new software versus
Organizational Objectives
enhancing existing software
[1, s9.1.8][2*, c2s2.3.1.2,
● Resolve staffing and skills issues, as
c3s3.4]
the same team can be responsible for
maintenance and development
This section describes how to optimizse ● Focus more on maintainability
software maintenance activities and requirements from the start, as the
economics to be aligned with organizational same team has responsibility for both
objectives and the priorities of the business, development and maintenance
customers and users.
2.2.2. Staffing
In many organizations, initial software [1*, s6.4.13.3c][2*,
development is project-based, with a defined c2s2.3.1.5, c10s10.4]
time scale and budget. The main goal is to
deliver a product that meets user needs on
time and within budget. In contrast, software As software maintenance requires detailed
maintenance aims to extend the life of knowledge of software, organizations must
software and keep it operational for as long be aware of the need to attract and retain
as possible. In addition, it may be driven by software maintenance staff. Since doing only
the need to meet user demand for software maintenance can be perceived as less
updates and enhancements. interesting; software maintainers can feel
they are “second-class citizens,” and morale
can suffer as a result, leading to poor
In both cases, the economics of software performance or high staff turnover.
maintenance is not as visible as those of Organizations need to design development
software development. At the organizational and maintenance teams and roles carefully
level, it may be seen as an activity that and provide professional development
consumes significant resources with no clear, opportunities for their staff.
quantifiable benefit for the organization. As a

Software Maintenance 7–8 © IEEE – SWEBOK Guide V4


one independent supplier. These are
2.2.3. Process combined into a single (software-
enabled) service. Multi-sourcing in
[1*, s6][2*, c5] software services is increasingly
common, enabled by the growth of
“anything as a service” (XaaS),
The software life cycle process is a set of application programming interfaces
activities, methods, practices and (APIs), and data sources.
transformations that people use to develop
and maintain software and its associated
products. At the process level, software Many organizations outsource entire
maintenance activities share much in portfolios of software. Typically, these
common with software development (e.g., portfolios include software that is not
SCM is a crucial activity in both). mission-critical, as organizations do not want
Maintenance also requires several activities to lose control of the software used in their
not found in software development. (Refer to core business. One major challenge for
section 3.2.) outsourcers is determining the scope of the
maintenance services required, the terms of a
service-level agreement (SLA), and the
2.2.4. Supplier Management contractual details. Outsourcers need to
[1*, invest in good communication infrastructure
s6.1.2, s8.3, s8.8.2] and an efficient help desk staffed with people
who can communicate effectively with
Supplier management ensures that the customers and users [3]. Outsourcing
organization’s suppliers and their requires a significant initial investment and
performance are managed appropriately to the setup and review of software maintenance
support the seamless provision of quality processes that require automation.
products and services when maintenance is
contracted to suppliers. The nature of the 2.2.5. Organizational Aspects of
organization’s relationship with suppliers Maintenance
and its approach to supplier management [1, s9.1.8][2*, c10]
should be determined by the nature of these
products and services. Contractors can be
hired to conduct maintenance tasks and Organizational aspects of maintenance
outsourcing or offshoring software include determining which teams will be
maintenance is a major industry. Outsourcing responsible for software maintenance. When
maintenance means substituting internal using Agile life cycle models, the developer
capability with an external supplier’s also conducts maintenance tasks, acting as
capability. Approaches to contracting both developer and maintainer. Other
maintenance include the following: organizations prefer that the team that
develops the software does not necessarily
● Single source or partnership: A single
maintain it once it is operational. In deciding
supplier provides all services, or an
where the software maintenance function will
external service integrator manages
be located, software engineering
the organization’s relationship with
organizations must consider each
all suppliers.
alternative’s advantages and disadvantages.
● Multi-sourcing: Products and
There are a number of disadvantages to
services are provided by more than
having the developer also maintain the

Software Maintenance 7–9 © IEEE – SWEBOK Guide V4


software after it has been put into production, important aspect of planning software
such as the risk that new development will be maintenance.
disrupted when the developers need to attend
to failures and the potential loss of 2.3.1. Technical Debt Cost Estimation
knowledge when developers leave the [1, s6.1.7, s8.8.3.6][2*, c12.12.5]
organization, since fewer individuals are
familiar with the software; this could also
lead to lower-quality documentation, as Technical debt generally makes code more
fewer individuals are involved. However, expensive to maintain than it has to be.
having a separate maintenance function also Technical debt represents the effort required
has its challenges, as many software to fix problems that remain in the code when
engineers do not like limiting their work to an application is released. Several techniques
maintenance and may be more likely to leave and indicators can help engineers measure
for more interesting work. In addition, a technical debt, including, size, complexity
handoff process must be put in place between and the number of engineering flaws and
developers and maintainers, which violations of good architectural design and
sometimes leads to friction between teams coding practices in the source code.
[3]. ISO/IEC/IEEE 14764 provides suggestions
for improving maintainability, including:
ensuring legibility, pursuing structured code,
The introduction of product management reducing code complexity, provide accurate
processes has encouraged a single-team code comments, using identation and white
approach, particularly for developing and space, eliminating language weaknesses and
maintaining software that needs to respond compiler dependent constructs, facilitate
rapidly to changes in customer and user error-tracing, ensure tracability of code to
needs. Because there are many pros and cons design, conduct inspections and code
to each option, the decision should be made reviews.A software product needs to evolve,
on a case-by-case basis. What is important is by adding new features and capabilities, and
that the organization delegates the its codebase must remain maintainable,
maintenance tasks to an experienced group or easily understood, and easy to further evolve.
person and keeps quality documentation on A common barrier to addressing technical
maintenance tasks and all changes made to debt — or, indeed, of implementing any
the software, regardless of the organization’s potential enhancement — is the uncertain
structure. reward for doing so. That’s why it’s so
important for organizations to determine the
2.3. Software Maintenance Costs following:
● The quality of their current software
Software engineers must understand the ● The current cost of their technical
different categories of software maintenance debt
described in 1.6. Presenting costs trends by ● The potential savings from investing
categories of Maintenance can show in quality enhancement
customers where maintenance effort is spent ● The impact of current quality issues
for each system supported [7]. The data about on their business
maintenance effort by category can be also
used to accurately estimate the cost of Furthermore, technical debt is only one factor
software maintenance. Cost estimation is an of several contributing to excess unplanned

Software Maintenance 7–10 © IEEE – SWEBOK Guide V4


work; team or process issues may also need executing a change, resource estimates and
to be understood and addressed. Modern an estimated timeline for implementing the
tooling can help detect such issues, which change.
means technical debt should not be handled
in isolation but through an examination of its 2.4. Software Maintenance
root causes. Measurement [1,
s6.1.7][2*, c12]
2.3.2. Maintenance Cost Estimation
[1, s6.2.2, s9.1.4, s9.1.9-10][2*, Measurable software maintenance artifacts
c12s12.5.6] include maintenance processes, resources
and products [2*, c12s12.3.1]. Measures
An estimate of software maintenance costs include size, complexity, quality,
should be prepared early in the software understandability, maintainability and effort.
planning process [1, c6s1.4]. The costs One useful measure is the amount of effort (in
should be a function of the scope of terms of resources) expended for corrective,
maintenance activities. ISO/IEC/IEEE 14764 preventive, adaptive, additive and perfective
[1, c7s2.4] identified various factors that maintenance.
should be included, such as the following:
● Travel to user locations Complexity and technical debt measures of
● Training for maintainers as well as software can also be obtained using available
users tools. These measures constitute a good
● Cost and annual maintenance for the starting point for the measurement of
software engineering environment software quality. Maintainers should
(SEE) and software testing determine which measures are appropriate
● Personnel costs (e.g., salaries, for a specific organization based on that
benefits) organization’s needs. Software measurement
● Other resource costs, such as programs are discussed in the Software
consumables Engineering Management KA.
● Software license maintenance costs
● Product changes, program The software quality model described in the
management Software Quality KA describes software
● Field service engineers product and process measures specific to
● Renting facilities for maintenance software maintenance. Measurable
characteristics of maintainability include the
Moreover, as the maintenance and following:
development efforts progress, the estimates
● Modularity measures the degree to which
should be amended. Historical measurement
a system or software is composed of
data should be used as inputs to estimate
components that are independent, such
maintenance costs. Additionally, cost
that a change to one component has
estimates are also required during impact
minimal impact on other components.
analysis of an MR or PR. The cost estimating
method (e.g., parametric model, comparison ● Reusability measures how well a
to analog systems, use of empirical and component can be reused.
historical data) should be described. ● Analyzability measures the effort or
Estimates of individual MRs or PRs typically resources the maintainer must expend
include the estimated effort associated with either to diagnose deficiencies or causes

Software Maintenance 7–11 © IEEE – SWEBOK Guide V4


of failure or to identify components to be Maintenance measures may be collected,
modified. analyzed and trended by category to facilitate
● Modifiability measures the maintainer’s improvement and to provide insight into
effort associated with implementing a where maintenance costs are expended. The
specified modification without degree of software maintenance effort
introducing defects or degrading existing expended for different applications, listed by
product quality. category, is valuable business information for
● Testability measures the effort users and their organizations. It can also
maintainers and users expend to test the enable the organization to make an internal
modified software. comparison of software maintenance profiles
[7].
Other measures that software maintainers use 3. Software Maintenance Processes
include the following: In addition to standard software engineering
● Reliability: The degree to which a system processes and activities described in
or software performs specific functions ISO/IEC/IEEE 14764 [1], a number of
under specified conditions for a specified activities are unique to maintainers.
period, including the following
characteristics: 3.1. Software Maintenance Processes
o Maturity: How well a system
or software can meet the [1, s5.2][2*, c5]
need for reliability
o Availability: Whether a Maintenance processes provide needed
system or software is activities and detailed inputs and outputs to
operational and accessible those activities, as described in
o Fault tolerance: How well a ISO/IEC/IEEE 14764 [1]. Maintenance is
system or software operates one of the technical life cycle processes
despite hardware or software presented in ISO/IEC/IEEE 12207 [9].
faults Figure 3 shows how maintenance processes
o Recoverability: How well a connect to other software engineering
system or software can processes, which interact to support
recover data during an operational software. The software
interruption or failure maintenance processes includes the
● Size of the software (e.g., functional size, following:
LOC) ● Prepare for maintenance
● Number of maintenance requests, by time ● Perform maintenance
period ● Perform logistics support
● Effort per maintenance request ● Manage results of maintenance and
● Software characteristics (e.g., platform, logistics
hardware, programming language,
frameworks)

Software Maintenance 7–12 © IEEE – SWEBOK Guide V4


recommends that when a maintainer uses a
Figure 3. Software Maintenance development process, the process must be
Processes (ISO/IEC/IEEE 14764) [1] tailored to meet specific needs.

However, there are a number of processes,


Recently, Agile methodologies, which activities and practices that are specialized to
promote lightweight processes, have also software maintenance:
been adapted to maintenance. This ● Program understanding: This comprises
requirement has emerged from the ever- the activities needed to obtain a general
increasing demand for fast turnaround of knowledge of what a software product
maintenance services. Improvement to the does and how the parts work together.
software maintenance processes is supported ● Transition: This is a controlled and
by software maintenance maturity models coordinated sequence of activities during
[3]. which software is transferred
progressively from the developer to the
3.2. Software Maintenance Activities operations and maintenance team.
and Tasks [1, ● MR acceptance/rejection: Modifications
s6.1][2*, c6, c7] requesting work greater than the agreed
size, level of effort, or level of complexity
The maintenance process contains the may be rejected by maintainers and
activities and tasks necessary to operate and rerouted to a developer.
modify an existing software system while ● Maintenance help desk: The help desk is
preserving its integrity. These activities and an end-user and maintenance-coordinated
tasks are the responsibility of the operator support function that triggers the
and the maintainer. As already noted, many assessment, prioritization and costing of
maintenance activities are similar to those of MRs and incidents.
software development. Maintainers perform ● Impact analysis: The impact analysis
analysis, design, coding, testing and identifies areas impacted by a potential
documentation. They must track change.
requirements in their activities — just as in ● Maintenance service-level indicators
development — and update documentation as (SLIs), service-level objectives (SLOs),
baselines change. ISO/IEC/IEEE 14764 SLAs, and maintenance software and

Software Maintenance 7–13 © IEEE – SWEBOK Guide V4


hardware licenses and contracts: These alternatives
are contractual agreements that describe ● Assess the risk of a given release and
the services and quality objectives of develop a back-out plan in case problems
third parties. arise
● Inform all stakeholders
3.2.1. Supporting and Monitoring
Activities Whereas software development projects have
[s6.4.13.3d5, s6.1.8][2*, a typical duration of months to a few years,
c3s3.4] the maintenance phase usually lasts many
years. Estimating resources is a key element
Maintainers may also perform ongoing of maintenance planning. Software
support activities, such as documentation, maintenance planning should begin with the
SCM, verification and validation (V&V), decision to develop a new software product
problem resolution, software quality and should consider quality objectives. A
assurance (SQA), reviews, and audits. concept document should be developed,
Another important management of followed by a maintenance plan, and these
maintenance results activity is that of should address the following:
monitoring customer satisfaction. ● Scope of software maintenance
● Adaptation of the software maintenance
3.2.2. Planning Activities processes and tools
[1, s6.1.3, ● Identification of the software
s8.7.2][2*, c10] maintenance organization
● Estimate of software maintenance costs
An important activity for software
maintenance is planning, and this process A software maintenance plan should be
must address the issues associated with a prepared during software development and
number of planning perspectives, including should specify how users will request
the following: modifications and report problems or issues.
● Business planning (organizational level) Software maintenance planning is addressed
● Maintenance planning (transition level) in ISO/IEC/IEEE 14764 [1]. Finally, at the
● Release/version planning (software level) highest level of management, the
maintenance organization must conduct
● Individual software change request
software maintenance business planning
planning (request level)
activities (e.g., communications, budgetary,
financial and human resources activities).
At the individual request level, planning is [2*, c10]
carried out during the impact analysis. (See
section 2.1.3, Impact Analysis.) The
release/version planning activity requires that 3.2.3. Configuration Management
the maintainer do the following: [1, s6.1.3c, s6.4.13.3d4][2*,
c11s11.3]
● Collect the dates of availability of
individual requests
ISO/IEC/IEEE 14764 [1] describes SCM as
● Agree with users on the content of
an enabling system or service to support the
subsequent releases/versions
maintenance process. SCM procedures
● Identify potential conflicts and develop

Software Maintenance 7–14 © IEEE – SWEBOK Guide V4


should provide for the verification, validation about software quality can be found in the
and audit of each step required to identify, Software Quality KA.
authorize, implement and release the
software product and its IT assets undergoing
change. 4. Software Maintenance Techniques

It is not sufficient to track MRs or PRs only. This topic introduces generally accepted
Any change made to the software product and techniques used in software maintenance.
its underlying infrastructure must be
controlled. This control is established by 4.1. Program Comprehension
implementing and enforcing an approved
SCM process. The SCM KA discusses SCM [2*, c6, c14s14.5]
in more detail as well as the process by which
change requests are submitted, evaluated and
Programmers spend considerable time
approved. SCM for software maintenance
reading and understanding programs in order
differs from SCM for software development
to implement changes. Code browsers are
in the number of small changes that must be
key tools for program comprehension and are
controlled in the operational environment.
used to organize and present source code.
The SCM process is implemented by
Clear and concise documentation also aids
developing and following an SCM plan and
program comprehension.
operating procedures. Maintainers participate
in configuration control boards to determine
the content of the next release or version in 4.2. Software Reengineering
production.
[2*, c7]
3.2.4. Software Quality
[1, s6.1.6, Software reengineering refers to the
s8.7.2][2*, c13s13.4] examination and alteration of software to
reconstitute it in a new form. It includes the
subsequent implementation of the new form.
It is not sufficient to simply hope that It is often undertaken not to improve
software maintenance will produce higher maintainability but to replace aging legacy
quality software. Maintainers should have an software.
effective quality program. They must
Refactoring is a reengineering technique that
implement processes to support the
aims to reorganize a program without
continuous improvement of software
changing its behavior. Refactoring seeks to
maintenance processes. The activities and
improve the internal structure and the
techniques for SQA, V&V, reviews, and
maintainability of software. Refactoring
audits must be selected in concert with all the
techniques can be used during maintenance
other processes to achieve the desired level of
activities to clean up the codebase before and
quality. It is also recommended that both
after code changes.
software operations and maintenance adapt
and use the output of the software In the context of Agile software
development process, its techniques and development, the incremental nature of
deliverables (e.g., test tools and continuous integration (CI) often requires the
documentation), and test results. More details code to be continuously refactored to
maintain its quality and reliability. Hence,

Software Maintenance 7–15 © IEEE – SWEBOK Guide V4


continuous refactoring supports the volatile calculation, technical debt estimation, and
software life cycle by providing better ways bad design and coding practices (code
to reduce and manage the growing smells) detection.
complexity of software systems while
improving developer productivity. 4.4. Continuous Integration, Delivery,
Testing and Deployment
4.3. Reverse Engineering [1, s6.4.13.3 Note 1]

[2*, c7, c14s14.5] Automating development, operation and


maintenance-related tasks saves engineering
Reverse engineering is the process of resources. When implemented appropriately,
analyzing software to identify the software’s such automated tasks are generally faster,
components and their interrelationships and easier and more reliable than they would be
creating representations of the software in if performed manually. ISO14764 that
another form or at higher levels of automation includes distribution and
abstraction. Reverse engineering is passive; it installation of software.[1, s6.4.13.3 Note 1].
does not change the software or result in new DevOps supports such automation while
software. Reverse engineering efforts building, packaging and deploying reliable
typically produce graphical representations and secure systems. It combines
of different software artifacts, such as call development, operations, and maintenance
graphs and control flow graphs from source resources and procedures to perform CI,
code. Types of reverse engineering include delivery, testing and deployment. [8]
the following:
● Re-documentation CI is a software engineering practice that
● Design recovery continually merges artifacts, including source
● Data reverse engineering — code updates from all developers on a team,
recovering logical schemata from into a shared mainline for building and
physical databases testing the developed system. With CI, the
members of a team can integrate their
Tools are key for reverse engineering and changes frequently, and each integration can
related tasks such as re-documentation and be verified by an automated build (including
design recovery. Software visualization is a testing) to detect integration errors as quickly
common reverse engineering technique that as possible. The fundamental goal of CI is to
helps engineers explore, analyze and automatically catch problematic changes as
understand the structure of software systems early as possible. CI helps guarantee the
as well as their development and evolution. working state of a software system at various
Software visualization comprises visually points from build to release, thereby
encoding and analyzing software systems, improving confidence and quality in software
including software development practices, products and improving productivity in
evolution, structure and software runtime teams. Specifically, CI automates the build
behavior using information visualization, and release processes with continuous build,
computer graphics and human-computer continuous delivery, continuous testing and
interaction. Generally, software visualization continuous deployment. [6, c23, c24].
tools are accompanied by various quality
assurance features, such as quality metrics

Software Maintenance 7–16 © IEEE – SWEBOK Guide V4


Continuous delivery is a software maintenance where existing software is being
engineering practice that enables frequent modified. Maintenance tools are interrelated
releases of new systems (including software) with development and operations tools.
to staging or various test environments Together, they are part of the SEE. The
through the use of automated tools. following are examples of maintenance tools:
Continuous delivery continuously assembles ● Configuration management, code
the latest code and configuration to create versioning and code review tools
release candidates. ● software testing tools,
● Software quality assessment tools (to
Continuous testing is a software testing assess technical debt and code quality)
practice that involves testing the software at ● Program slicers, which select only the
every stage of the software development life parts of a program affected by a change
cycle. The goal of continuous testing is to
● Static analyzers, which allow general
evaluate the quality of software at every step
viewing and summaries of program
of the continuous delivery process by testing
content
early and often. Continuous testing involves
various stakeholders such as developers and ● Dynamic analyzers, which allow the
DevOps, SQA, and operational systems maintainer to trace the execution path of
teams. a program
● Data flow analyzers, which allow the
maintainer to track all possible data flows
Continuous deployment is an automated
of a program
process of deploying changes to production
by verifying intended features and ● Cross-referencers, which generate
validations to reduce risk. As Martin Fowler, indexes of program components
in the book Continuous Delivery, pointed out, ● Dependency analyzers, which help
“The biggest risk to any software effort is that maintainers analyze and understand the
you end up building something that isn’t interrelationships among components of
useful. The earlier and more frequently you a program
get working software in front of real users,
the quicker you get feedback to find out how Reverse engineering tools support the
valuable it really is.” process by working backward from an
existing product to create artifacts such as
specification and design descriptions, which
5. Software Maintenance Tools can then be transformed to generate a new
[1, product from an old one. Maintainers also use
c6s4][2*, c14] software tests, SCM, software documentation
and software measurement tools.
This topic encompasses tools that are
particularly important in software

Software Maintenance 7–17 © IEEE – SWEBOK Guide V4


MATRIX OF TOPICS VS. REFERENCE MATERIAL

ISO/IEC/IEEE Grubb and Takang


14764 2022 [1] 2003 [2*]

1. Software Maintenance Fundamentals

1.1. Definitions and Terminology s3.1 c1s1.2, c2s2.2


1.2. Nature of Software Maintenance c1s1.3
1.3. Need for Software Maintenance c1s1.5
1.4. Majority of Maintenance Costs c4s4.3, c5s5.2
1.5. Evolution of Software c3s3.5
1.6. Categories of Software Maintenance s3.1.8 c1s1.8, c3s3.3
2. Key Issues in Software Maintenance
2.1. Technical Issues
2.1.1. Limited Understanding c6s6.9
2.1.2. Testing s6.2 c9, c13s13.4.4
2.1.3. Impact Analysis s5.1.6 c13s13.3
2.1.4. Maintainability s8.8 c12s12.5.5
2.2. Management Issues
2.2.1. Alignment with Organizational Objectives s9.1.8 c2s2.3.1.2, c3s3.4
2.2.2. Staffing s6.4.13.3c c2s2.3.1.5, c10s10.4
2.2.3. Process s6 c5
2.2.4. Supplier Management s6.1.2, s8.3, s8.8.2
2.2.5. Organizational Aspects of Maintenance s9.1.8 c10
2.3. Maintenance Costs
2.3.1. Technical Debt Cost Estimation s6.1.7, s8.8.3.6 c12s12.5
s6.2.2, s9.1.4, s9.1.9-
2.3.2. Maintenance Costs Estimation c12s12.5.6
10
2.4. Software Maintenance Measurement s6.1.7 c12
3. Software Maintenance Process
3.1. Software Maintenance Processes s5.2 c5
3.2. Software Maintenance Activities and Tasks s6.1 c6, c7
3.2.1. Supporting and Monitoring Activities s6.4.13.3d5, s6.1.8 c3s3.4
3.2.2. Planning Activities s6.1.3, s8.7.2 c10

Software Maintenance 7–18 © IEEE – SWEBOK Guide V4


3.2.3. Software Configuration Management s6.1.3c, s6.4.13.3d4 c11s11.3
3.2.4. Software Quality s6.1.6, s8.7.2 c13s13.4
4. Software Maintenance Techniques
4.1. Program Comprehension c6,c14s14.5
4.2. Software Reengineering c7
4.3. Reverse Engineering c7, c14s14.5
4.4. Continuous Integration, Delivery, Testing and
s6.4.13.3 Note 1
Deployment
5. Software Maintenance Tools s4 c14

Software Maintenance 7–19 © IEEE – SWEBOK Guide V4


FURTHER READING
A. April and A. Abran, Software
Maintenance Management: Evaluation and
Continuous Improvement [3].

This book explores the domain of continuous


software maintenance processes. It provides
road maps for improving software
maintenance processes in organizations. It
describes software maintenance practices
organized by maturity levels, which allow for
benchmarking and continuous improvement.
Goals for each key practice area are provided,
and the process model presented is fully
aligned with the architecture and framework
of international standards ISO12207,
ISO14764 and ISO15504, as well as models
such as ITIL and CoBIT.

IEEE std 2675-2021, IEEE Standard for


DevOps: Building Reliable and Secure
Systems Including Application Build,
Package and Deployment [5].

Technical principles and processes to build,


package, and deploy systems and
applications in a reliable and secure way are
specified. Establishing effective compliance
and information technology (IT) controls is
the focus. DevOps principles presented
include mission first, customer focus, left-
shift, continuous everything, and systems
thinking. How stakeholders, including
developers and operations staff, can
collaborate and communicate effectively is
described. The process outcomes and
activities herein are aligned with the process
model
specified in ISO/IEC/IEEE 12207:2017 and
ISO/IEC/IEEE 15288:2015.

Software Maintenance 7–20 © IEEE – SWEBOK Guide V4


REFERENCES
[1] IEEE standard, ISO/IEC/IEEE 14764
IEEE Std. 14764:2022, Software
Engineering — Software Life Cycle
Processes — Maintenance, third ed:
2022 01, 39p.
[2*] Grubb, P., and Takang, A. A.,
Software Maintenance: Concepts and
Practice, 2nd ed. River Edge, NJ:
World Scientific Publishing, 2003.
[3] April, A., and Abran, A., Software
Maintenance Management:
Evaluation and Continuous
Improvement. Wiley-IEEE Computer
Society Press, 2008.
[4] Seybold, C., and Keller, R., Aligning
Software Maintenance to the
Offshore Reality, 12th European
Conference on Software Maintenance
and Reengineering. April 1-4, 2008,
Athens, Greece,
DOI:10.1109/CSMR.2008.4493298.
[5] IEEE standard, IEEE Std. 2675-2021,
IEEE Standard for DevOps: Building
Reliable and Secure Systems
Including Application Build, Package
and Deployment, ed: IEEE. 2021.
[6] Winters, Titus, Tom Manshreck, and
Hyrum Wright. Software engineering
at Google: Lessons learned from
programming over time. O’Reilly
Media, 2020.
[7] Abran, A., and Nguyenkim, H.,
Measurement of the maintenance
process from a demand-based
perspective, Journal of Software
Maintenance: Research and Practice,
Vol. 5 Issue 2: 63-90, 1993.
[8] Humble, J. and Fairley, D Continuous
Delivery: Reliable Software Releases
through Build, Test, and Deployment
Automation, Addison-Wesley, 2010
[9] ISO/IEC/IEEE 12207:2017 Systems
and software engineering — Software
life cycle processes, 2017

Software Maintenance 7–21 © IEEE – SWEBOK Guide V4


CHAPTER 8
SOFTWARE CONFIGURATION MANAGEMENT

throughout the software life cycle to ensure


ABBREVIATIONS
the completeness and correctness of CIs
CCB Configuration control board [configuration items],” with CM defined as
CI Configuration item “a discipline applying technical and
CM Configuration management administrative direction and surveillance to
FCA Functional configuration audit identify and document the functional and
physical characteristics of a configuration
PCA Physical configuration audit
item, control changes to those characteristics,
QA Quality assurance record and report change processing and
SCCB Software configuration control implementation status, and verify compliance
board with specified requirements” [1]. SCM is a
SCI Software configuration item software life cycle process (SLCP) that
SCM Software configuration supports project management, development
management and maintenance activities, quality assurance
SCMP Software configuration (QA) activities, and the customers and users
management plan of the end product.
SCR Software change request
SCSA Software configuration status The concepts of CM apply to all items
accounting controlled, although some differences exist
CMMI Software Engineering Institute’s between implementing hardware CM and
Capability Maturity Model implementing software CM. CM applies
Integration equally to iterative and incremental software
development methodology.
SLCP Software life cycle process
SQA Software quality assurance
SCM is closely related to software quality
V&V Verification and validation assurance (SQA). As defined in the Software
KA Knowledge area Quality Knowledge Area (KA), SQA
MBX Model Based Experience processes ensure that the software products
SBOM Software Bill of Materials and processes in the project life cycle
CR Change Request conform to their specified requirements by
VDD Version Description Document requiring software engineers to plan, enact
and perform a set of activities that
CMDB Configuration Management
demonstrate that those specifications are built
Database
into the software. SCM activities support
these SQA goals through software
configuration activities (presented later in
INTRODUCTION this chapter). The configuration audit activity
can be described as a review of CIs and is
Software configuration management (SCM) closely related to the reviews defined in the
is formally defined as “the process of quality plan.
applying configuration management [CM]

Software Configuration Management 8–1 © IEEE – SWEBOK Guide V4


organizational context for, and the
The SCM activities should operationalize constraints placed on, the design and
SCM process management and planning, implementation of the SCM process. The
software configuration identification, SCM plan can be developed once for the
software configuration change control, organization and then adjusted as needed for
software configuration status accounting individual projects.
(SCSA), software configuration auditing, and
software release management and delivery. 1.1 Organizational Context for SCM
This operationalization: [2*, c6, ann. D] [3*, Introduction] [4*, c25]
1. Determines what is expected to be To plan an SCM process for a project, it is
under control during project necessary to understand the organizational
development context and the relationships among
2. Identifies and records who developed organizational elements. SCM interacts not
what CI as well as when and where it just with the particular project but also with
is allocated several other areas of the organization.
3. Allows controlled changes
4. Tracks CIs’ relationships to show
how changes that affect one CI might The organizational elements responsible for
affect other CIs software engineering supporting processes
5. Keeps CI versions under control might be structured in various ways. The
6. Ensures that the quality of the CIs overall responsibility for SCM often rests
delivered meets the requirements for with a distinct part of the organization or with
intended use a designated individual. However,
responsibility for certain SCM tasks might be
assigned to other parts of the organization
The SCM KA is related to all other KAs (such as the development division).
because SCM’s object is the artifact
produced and used throughout the software
engineering process. Software is frequently developed as part of a
larger system containing hardware and
BREAKDOWN OF TOPICS FOR SOFTWARE firmware elements. In this case, SCM
CONFIGURATION MANAGEMENT activities take place in parallel with hardware
and firmware CM activities and must be
Figure 1 shows the breakdown of topics for consistent with system-level CM. Note that
the SCM KA. firmware contains hardware and software;
1. Management of the SCM Process [2*, therefore, both hardware and software CM
c6, c7] concepts apply.
SCM controls the evolution and integrity of a
product by identifying its elements (known as SCM might interface with an organization’s
CIs); managing and controlling change; and QA activity on issues such as records
verifying, recording and reporting on management and nonconforming items.
configuration information. From the software Regarding the former, project records subject
engineer’s perspective, SCM facilitates to provisions of the organization’s QA
development and change implementation program might also be under SCM control.
activities. Successful SCM implementation The QA team is usually responsible for
requires careful planning and management, managing nonconforming items. However,
which requires a strong understanding of the SCM might assist with tracking and reporting

Software Configuration Management 8–2 © IEEE – SWEBOK Guide V4


on software configuration items (SCIs) in this organizations. It is within this context that
category. many of the software configuration control
tasks are conducted. Frequently, the same
Perhaps the closest relationship is with the tools support development, maintenance, and
software development and maintenance SCM purposes.

Software Configuration
Management

Software Software Software Software


Software Software
Management of Configuration Configuration Release Configuration
Configuration Configuration
the SCM Process Change Status Management and Management
Identification Auditing
Control Accounting Delivery Tools

Organizational Identifying Items Requesting, Evaluating Software Software Functional Software


Context for SCM to Be Controlled and Approving Configuration Status Configuration Audit Building
Constraints and Software Software Changes Information
Software Release
Guidance for the Configuration Software Software Software Physical
Management
SCM Process Software Configuration Configuration Status Configuration Audit
Configuration Control Board Reporting
Planning for SCM In-process Audits
Item Software Change of a Software
SCM Organization Configuration Item Request Process Baseline
and Responsibilities Identifiers and Attributes
Software Change
Baselines Identification Request Forms
SCM Resources and Definition
Schedules Baseline Attributes
Implementing
Tool Selection and Software Changes
Relationships Scheme
Implementation
Definition Deviations and
Vendor/Subcontractor Waivers
Control Software Libraries
Interface Control
SCM Plan

Surveillance of
Software Configuration
Management
SCM Measures and
Measurement
In-Process Audits of
SCM

Figure 1. Breakdown of Topics for the Software Configuration Management KA

1.2 Constraints and Guidance for the SCM might specify that certain items be placed
Process under CM). When the software to be
[2*, c6, ann. D, ann. E] [3*, c2, c5] [5, developed could affect public safety, external
c19s2.2] regulatory bodies may impose constraints.
Constraints affecting, and guidance for, the Finally, the SLCP chosen for a software
SCM process come from many sources. project and the level of formalism selected
Policies and procedures set forth at corporate for implementation will also affect SLCP
or other organizational levels might influence design and implementation.
or prescribe the design and implementation
of the SCM process for a project. In addition, Software engineers can also find guidance for
the contract between the acquirer and the designing and implementing an SCM process
supplier might contain provisions affecting in “best practice,” as reflected in the software
the SCM process (e.g., certain configuration engineering standards issued by the various
audits might be required, or the contract

Software Configuration Management 8–3 © IEEE – SWEBOK Guide V4


standards organizations. (See Appendix B for cycles. Clearly, SCM activities must be
more information about these standards.) planned accordingly.

1.3 Planning for SCM 1.3.1 SCM Organization and


[2*, c6, ann. D, ann. E] [3*, c23] [4*, c25] Responsibilities
SCM process planning for a project should be [2*, ann. Ds5-6] [3*, c10-11] [4*, c25]
consistent with the organizational context, Organizational roles must be clearly
applicable constraints, commonly accepted identified to prevent confusion about who
guidance and the nature of the project (e.g., will perform specific SCM activities or tasks.
size, safety criticality and security). The These responsibilities must also be assigned
major activities covered in the plan are to organizational entities; this can be made
software configuration identification, clear by the responsible individual's title or
software configuration control, SCSA, by designating the organizational division or
software configuration auditing, and software section in addition to the individual
release management and delivery. In responsible within that section. The overall
addition, issues such as organization and authority and reporting channels for SCM
responsibilities, resources and schedules, tool should also be identified, although this might
selection and implementation, vendor and be accomplished at the project management
subcontractor control, and interface control or the QA planning stage.
are typically considered. The planning
activity’s results are recorded in an SCM plan
(SCMP), which is subject to SQA review and 1.3.2 SCM Resources and Schedules
audit. [2*, ann. Ds8] [3*, c23]
Planning for SCM identifies the resources —
Branching and merging strategies should be including staff and tools — involved in
carefully planned and communicated because carrying out SCM activities and tasks. It also
they affect many SCM activities. SCM identifies the necessary sequences of SCM
defines a branch as a set of evolving source tasks and establishes each task’s place in the
file versions [1]. Merging consists of project schedule and its position relative to
combining different changes to the same file milestones established at the project
[1]. This typically occurs when more than management planning stage. Any training
one person changes a CI. There are many requirements for implementing the plans and
branching and merging strategies in common training new staff members are also
use. (See the Further Reading section for specified.
additional discussion.)
1.3.3 Tool Selection and Implementation
The software development life cycle model
chosen (see Software Life Cycle Models in [3*, c26s2, c26s6]
the Software Engineering Process KA) also As in any area of software engineering, the
affects SCM activities, and SCM planning selection and implementation of SCM tools
should consider this. For instance, many should be carefully planned. The following
software development approaches use questions should be considered:
continuous integration, which is ● Organization: What motivates tool
characterized by frequent build-test-deploy acquisition from an organizational
perspective?

Software Configuration Management 8–4 © IEEE – SWEBOK Guide V4


● Tools: Can we use commercial tools, or Organization size and the type of projects
do we need to develop our own tools involved may also affect tool selection. (See
specifically for this project? SCM Tools, section 7 of this document)
● Environment: What constraints are
imposed by the organization and its 1.3.4 Vendor/Subcontractor Control
technical context?
[2*, c13] [3*, c13s9-c14s2]
● Legacy: How will projects use (or not
use) the new tools? A software project might acquire or use
purchased software products, such as
● Financing: Who will pay for the tools’
compilers or other tools. SCM planning
acquisition, maintenance, training and
considers whether and how these items will
customization?
be managed with configuration control (e.g.,
● Scope: How will the new tools be integrated into the project libraries) and how
deployed — for instance, through the changes or updates will be evaluated and
entire organization or only on specific managed.
projects?
● Ownership: Who is responsible for
Similar considerations apply to
introducing new tools?
subcontracted software. When a project uses
● Future: What is the plan for the tools’ use subcontracted software, both the SCM
in the future? requirements to be imposed on the
● Change: How adaptable are the tools? subcontractor’s SCM process and the means
● Branching and merging: Are the tools’ for monitoring compliance need to be
capabilities compatible with planned established. The latter includes determining
branching and merging strategies? what SCM information must be available for
● Integration: Do the various SCM tools effective compliance monitoring.
integrate among themselves? Do they
integrate with other tools in use in the 1.3.5 Interface Control
organization?
[2*, c12] [3*, c23s4]
● Migration: Can the repository maintained
by the version control tool be ported to When a software item interfaces with another
another version control tool while software or with a hardware item, a change to
maintaining the complete history of the either item can affect the other. Planning for
CIs it contains? the SCM process considers how the
interfacing items will be identified and how
changes to the items will be managed and
SCM requires a set of tools instead of a single communicated. The SCM role may be part of
tool. Such tool sets are sometimes called a larger, system-level process for interface
workbenches. As part of the tool selection specification and control involving interface
planning effort, the team must determine specifications, interface control plans and
whether the SCM workbench will be open interface control documents. In this case,
(tools from different suppliers will be used in SCM planning for interface control takes
different SCM process activities) or place within the context of the system-level
integrated (elements of the workbench are process.
designed to work together).
1.4 SCM Plan
[2*, ann. D] [3*, c23]

Software Configuration Management 8–5 © IEEE – SWEBOK Guide V4


The results of SCM planning for a given responsibility perform the defined SCM tasks
project are recorded in an SCMP, a “living correctly. As part of a compliance auditing
document” that serves as a reference for the activity, the SQA authority might also
SCM process. The SCMP is maintained perform this surveillance.
(updated and approved) as necessary during
the software life cycle. For teams to Using integrated SCM tools with process
implement an SCMP, they’ll typically need control capability can make the surveillance
to develop a number of more detailed, task easier. Some tools facilitate process
subordinate procedures to define how compliance while providing flexibility for the
specific requirements will be met during software engineer to adapt procedures. Other
day-to-day activities (e.g., which branching tools enforce a specific process, leaving the
strategies will be used, how frequently builds software engineer with less flexibility.
will occur, how often automated tests of all Surveillance requirements and the level of
kinds will be run). flexibility provided to the software engineer
are important considerations in tool selection.
Guidance on creating and maintaining an
SCMP, based on the information produced by 1.5.1 SCM Measures and Measurement
the planning activity, is available from a
number of sources, such as [2*]. This [3*, c9s2, c25s2-s3]
reference provides requirements for SCM measures can be designed to provide
information to be contained in an SCMP. An specific information on the evolving product,
SCMP should include the following sections: but they can also provide insight into how
● Introduction (purpose, scope, terms used) well the SCM process functions and identify
● SCM Management (organization, opportunities for process improvement. SCM
responsibilities, authorities, applicable process measurements enable teams to
policies, directives, procedures) monitor the effectiveness of SCM activities
on an ongoing basis. These measurements are
● SCM Activities (configuration
useful in characterizing the current state of
identification, configuration control, etc.)
the process and providing a basis for
● SCM Schedules (coordination with other comparison over time. Measurement analysis
project activities) may produce insights that lead to process
● SCM Resources (tools, physical changes and corresponding updates to the
resources and human resources) SCMP.
● SCMP Maintenance
Software libraries and the various SCM tool
1.5 Monitoring of Software Configuration capabilities enable teams to extract useful
Management information about SCM process
[3*, c11s3] characteristics (as well as project and
After the SCM process has been management information). For example,
implemented, some surveillance may be information about the time required to
necessary to ensure that the SCMP provisions accomplish various types of changes would
are properly carried out. The plan is likely to be useful in evaluating criteria for
include specific SQA requirements to ensure determining what levels of authority are
compliance with specified SCM processes optimal for authorizing certain changes and
and procedures. The person responsible for in estimating the resources needed to make
SCM ensures that those with the assigned future changes.

Software Configuration Management 8–6 © IEEE – SWEBOK Guide V4


2.1.1. Software Configuration
Care must be taken to keep the surveillance Software configuration is the functional and
focused on the insights that can be gained physical characteristics of hardware or
from the measurements, not on the software as set forth in technical
measurements themselves. Software process documentation or achieved in a product. It
and product measurement is further discussed can be viewed as part of an overall system
in the Software Engineering Process KA. configuration.
Software measurement programs are
described in the Software Engineering
Management KA. 2.1.1 Software Configuration Item
[2*, c8s2.1] [3*, c9]
A CI is an item or aggregation of hardware,
1.5.2 In-Process Audits of SCM software or both, designed to be managed as
[3*, c1s1] a single entity. An SCI is a software entity
Audits can be carried out during the software that has been established as a CI [1]. The
engineering process to investigate the status SCM controls various items in addition to the
of specific configuration elements or to code itself. Software items with potential to
assess the SCM process implementation. In- become SCIs include plans, specifications
process SCM auditing provides a more and design documentation, testing materials,
formal mechanism for monitoring selected software tools, source and executable code,
aspects of the process and may be code libraries, data and data dictionaries, and
coordinated with the SQA function. (See documentation for installation, maintenance,
Software Configuration Auditing.) operations and software use.

Selecting SCIs is an important process in


2. Software Configuration Identification which a balance must be achieved between
[2*, c8] providing adequate visibility for project
Software configuration identification control purposes and providing a manageable
identifies items to be controlled, establishes number of controlled items.
identification schemes for the items and their
versions, and establishes the tools and 2.2 Configuration Item Identifiers and
techniques to be used in acquiring and Attributes
managing controlled items. These activities
[2*, c8s2.3, c8s2.4] [3*, c9]
provide the basis for other SCM activities.
Status accounting activity (explained later)
gathers information about CIs while they are
2.1 Identifying Items to Be Controlled developed. The CIs’ scheme is defined in
[2*, c8s2.2] order to establish what information must be
A first step in controlling change is gathered and tracked for each CI. Unique
identifying the software items to be identifiers and versions are tracked.
controlled. This involves understanding the
software configuration within the context of An example scheme may include the
the system configuration, selecting SCIs and following:
developing a strategy for labeling software
items.
CI name
CI unique Ientifier

Software Configuration Management 8–7 © IEEE – SWEBOK Guide V4


CI description Relationships provide the connections
CI date(s) required to create and sustain structure. The
CI type ability to communicate intent and manage the
CI owner results are significantly enhanced when
CI version effective relationships (structuring) are in
place (e.g., model-based experience (MBX)
platforms). Relationship information
The CI’s unique Identifier can use significant exchange and interoperability are needed to
or nonsignificant codification. An example of support the applicable relationship types. The
significant codification could be XX-YY, status accounting activity is responsible for
where XX is the iteration abbreviation (in gathering information about relationships
case of using an iterative development among CIs.
method) and YY is the CI abbreviation.
Common types of relationships can be
2.3 Baseline Identification
described according to the following
[2*, c8s2.5.4, c8s2.5.5, c8s2.5.6] schemes:
A software baseline is a formally approved
version of a CI (regardless of media type) that
Dependencies: CI-1 and CI-2 depend
is formally designated and fixed at a specific
mutually on each other.
time during the CI’s life cycle. The term also
refers to a particular version of an agreed- Example: CI-1 depends on C1-2, and vice
upon SCI. The baseline can be changed only versa, for instance a class model depends on
through formal change control procedures. A a sequence diagram, because any change on
baseline, with all approved changes to the any of both types of models, affect the other.
baseline, represents the current approved
configuration. A baseline consists of one or CI-1 Code CI-2 Code Date
more related CIs.
Derivation: One CI derives from another,
2.4 Baseline Attributes typically in a sequential relationship, not
[2*, c8s2.5.4] because of a lack of resources to handle both
Baseline attributes are used in the status CIs but because of a constraint that requires
accounting activity and specify information that, for instance, CI-1 is completed before
about the baseline established. CI-2 is developed.

Example baseline attributes may include the Example: CI-1 derives from CI-2.
following:
CI-1 Code CI-2 Code Date
Baseline name
Baseline unique identifier Succession: Software items evolve as a
Baseline description software project proceeds. A software item
Baseline date of creation version is an identified instance of an item. It
Baseline CIs can be thought of as a state of an evolving
item. This is what the succession relationship
2.5 Relationships Scheme Definition reflects, and it is reflexive in that each CI has
this relationship with itself. The first
[3*, c7s4]

Software Configuration Management 8–8 © IEEE – SWEBOK Guide V4


succession comes up the first time a CI is succession succession succession
created. Each time it is changed, a new
dependency
succession comes up, and tracking these
CI-1 CI-2 CI-3
successions is the way to track CI versions.

Example: CI versions along a timeline. derivation

CI Previous Next Date Successions records: According to the scheme defined above, the next table give
Code Version Version each CI was created (three first rows), and the fourth row indicates a change m
2021/10/05.

Variants are program versions resulting from CI-1 - 1 10/01/2021


engineered alternative options. This type of CI-2 - 1 10/04/2021
CI-3 - 1 10/03/2021
relationship is not as common as the type of CI-1 1 2 10/05/2021
relationships described above because it is Dependency record: According to the scheme defined above for dependencies, CI-
more expensive to maintain. a dependency relationship created the day CI-2 was developed.

CI-1 CI-2 10/04/2021


The decision on what relationships to track
throughout the project is important because Derivation record: According to the scheme defined above for derivation, CI-3 de
tracking some relationships can require extra and this relationship came up the day CI-3 was created.
work. On the other hand, tracking such
CI-3 CI-1 10/03/2021
relationships can facilitate decisions on
change requests (CRs) for a CI.
Figure 1 Example of reported relationships

Relationships between CIs can be tracked in


a Software Bill of Materials (SBOM). An
SBOM is a formal record containing the 2.6 Software Libraries
details and supply chain relationships of the
CIs used in building software. CIs in an [2*, c8s2.5] [3*, c1s3]
SBOM are frequently referred to as
A software library is a controlled collection
components. Components can be source
of source code, scripts, object code,
code, libraries, modules and other artifacts;
documentation and related artifacts.
they can be open source or proprietary, free
Requirements and test cases are stored in a
or paid; and the data can be widely available
repository and should be linked with the code
or access-restricted.
baselines developed. Source code is stored in
a version control system, which provides
A simple example of the relationships among traceability and security for the baselines
three CIs in an SBOM, called CI-1, CI-2 and developed. Multiple development streams are
CI-3, is illustrated in Figure 2: supported in version control systems linked
to the binary objects (e.g., object code)
derived during the build process. These
binary objects are typically stored in a
repository that should contain cryptographic
hashes used to perform the physical
configuration audit (PCA).

Software Configuration Management 8–9 © IEEE – SWEBOK Guide V4


process (Figure 3) provides formal
The definitive media library contains the procedures for submitting and recording
release baseline(s) of the artifacts that can be CRs; evaluating the potential cost and impact
deployed to the test, stage and production of a proposed change; and accepting,
systems. The release management process modifying, deferring or rejecting the
depends on these software libraries to proposed change. A CR is a request to expand
manage the artifacts deployed. In terms of or reduce the project scope; modify policies,
access control and the backup facilities, processes, plans or procedures; modify costs
security is a key aspect of library or budgets; or revise schedules [1]. Requests
management. for changes to SCIs may be originated by
anyone at any point in the software life cycle
and may include a suggested solution and
3. Software Configuration Change requested priority. One source of a CR is the
Control initiation of corrective action in response to
[2*, c9] [3*,c8] [4*, c25s3] [5, c11.s3.3] problem reports. Regardless of the source,
Software configuration change control is the type of change (e.g., defect or
concerned with changes required to CIs enhancement) is usually recorded on the
during the software life cycle. It covers the SCR.
process for determining what changes to
make, the authority for approving certain
changes, support for implementing those
changes, and the concept of formal deviations
from project requirements as well as waivers
of them. Information derived from these
activities is useful in measuring change
traffic and breakage, as well as aspects of
rework.

Given that change to CIs can follow specific


rules depending on the industrial sector, area, Figure 3. Flow of a Change Control Process
company, etc., it is very important to identify
those rules in the context of the software Recording on the SCR enables the software
project for which the SCM process is being engineers to track defects and collect change
developed and to adhere strictly to those activity measurements by change type. Once
rules. The rest of this section can be useful an SCR is received, a technical evaluation
when no specific rules regarding change (also known as an impact analysis) is
control exist in the company or the industrial performed to determine the extent of the
sector where the software project under modifications necessary should the CR be
development is allocated. accepted. A good understanding of the
relationships among software (and, possibly,
3.1 Requesting, Evaluating and Approving hardware) items is important for this task.
Software Changes The information recorded about the CIs’
[2*, c9s2.4] [3*, c11s1] [4*, c25s3] relationships could be useful for making
The first step in managing changes to decisions affecting any CI, given the
controlled items is determining what changes potential impact on other CIs. Finally, an
to make. The software change request (SCR) established authority — commensurate with

Software Configuration Management 8–10 © IEEE – SWEBOK Guide V4


the affected baseline, the SCI involved and 3.1.3 Software Change Request Forms
the nature of the change — will evaluate the Definition
CR’s technical and managerial aspects and [2*, c9s2.3, c9s2.5] [3*, c8s4] [4*, c25s3]
accept, modify, reject or defer the proposed
change. A CR application must include the following:

• A CR form, which must describe the


3.1.1 Software Configuration Control
request and give the rationale for it
Board
• A change certification form
[2*, c9s2.2] [3*, c11s1] [4*, c25s3] (necessary if the CR is granted)
The authority for accepting or rejecting
proposed changes rests with an entity known These forms can be managed through the
as a configuration control board (CCB). In corresponding supporting tool, but humans
smaller projects, this authority may reside are responsible for designing the forms.
with the leader or an assigned individual
rather than a multi-person board. There can
3.2 Implementing Software Changes
be multiple levels of change authority
[4*, c25s3]
depending on a variety of criteria — such as
the criticality of the item involved, the nature Approved SCRs are implemented using the
of the change (e.g., impact on budget and defined software procedures per the
schedule), or where the project is in the life applicable schedule requirements. Because a
cycle. The composition of the CCBs used for number of approved SCRs might be
a system varies depending on these criteria implemented simultaneously, a means for
(but an SCM representative is always tracking which SCRs are incorporated into
present). All stakeholders appropriate to the particular software versions and baselines
CCB level are represented. When a CCB’s must be provided. At the end of the change
scope of authority is limited to software, the process, completed changes may undergo
board is known as a Software Configuration configuration audits and software quality
Control Board (SCCB). The CCB’s activities verification, which includes ensuring that
are subject to software quality audits or only approved changes have been made. The
reviews. SCR process typically documents the
change’s SCM and other approval
information.
3.1.2 Software Change Request Process
[3*, c1s4, c8s4] [4*, c25s3] Changes may be supported by source code
An effective SCR process requires the use of version control tools. These tools allow a
supporting tools and procedures for team of software engineers, or a single
originating CRs, enforcing the change software engineer, to track and document
process flow, capturing CCB decisions and changes to the source code. These tools
reporting change process information. provide a single repository for storing the
Linking this tool capability with the problem- source code, so they can prevent more than
reporting system can facilitate the problem one software engineer from editing the same
resolution tracking and how quickly solutions module at the same time, and they record all
are developed. changes made to the source code. Software
engineers check modules out of the
repository, make changes, document the

Software Configuration Management 8–11 © IEEE – SWEBOK Guide V4


changes, and then save the edited modules in following the logical schemes defined in the
the repository. If needed, changes can also be activity configuration identification for CIs,
discarded, restoring a previous baseline. baselines and relationships for gathering
More powerful tools can support parallel information.
development and geographically distributed
environments. These tools may manifest as 4.1 Software Configuration Status
separate, specialized applications under an Information
independent SCM group’s control. They may [2*, c10s2.1]
also appear as an integrated part of the
software engineering environment. Finally, The SCSA activity designs and operates a
they may be as elementary as a rudimentary system for capturing, verifying, validating
change control system that is provided with and reporting necessary information as the
an operating system. life cycle proceeds. As in any information
system, the configuration status information
to be managed for the evolving
3.3 Deviations and Waivers configurations must be identified, collected
[1, c3] and maintained. In addition, the information
The constraints imposed on a software itself should be secured where relevant.
engineering effort or the specifications SCSA information and measurements are
produced during the development activities needed to support the SCM process and to
might contain provisions that those working meet the configuration status reporting needs
on the project find cannot be satisfied at the of management, software engineering,
designated point in the life cycle. A deviation security, performance and other related
is a written authorization granted before the activities.
manufacture of an item to depart from a
particular performance or design requirement The types of information available include
for a specific number of units or a specific but are not limited to the following:
period of time. A waiver is a written • Ongoing and approved configuration
authorization to allow a CI or other identification
designated item in response to an issue found
during production or after the project is • Current implementation status of changes
submitted for inspection to depart from • Impacted CIs and related systems
specified requirements when the CI or project • Deviations and waivers
is nevertheless considered suitable for use, • Verification and validation (V&V)
either as it is or after rework via an approved activities
method. In these cases, a formal process is
used to gain approval for deviations from or Automated tools support SCSA as tasks are
waivers of the provisions. performed, and reporting is available in a
4. Software Configuration Status user-friendly format.
Accounting
[2*, c10] [3*, c9] [5, c11s3.4] 4.2 Software Configuration Status Reporting
SCSA is an activity of CM consisting of [2*, c10s2.4] [3*, c1s5, c9s1]
recording and reporting information needed Reported information can be used by various
to manage a configuration effectively organizational and project elements —
regarding CIs, baselines and relationships including the development team, operations,
among CIs. This activity must be done by security, the maintenance team, project

Software Configuration Management 8–12 © IEEE – SWEBOK Guide V4


management, software quality activities perform various tasks over a fairly short time.
teams and others. Reporting can take many Tools to support the planning and conduct of
forms: automated reports, ad hoc queries to an audit can greatly facilitate the process.
answer specific questions, and regular
production of predesigned reports, including Software configuration auditing determines
those developed to meet security, legal or the extent to which an item satisfies
regulatory requirements. In other words, requirements for functional and physical
information produced by the SCSA activity characteristics. Informal audits can be
throughout the life cycle can be used to conducted at key points in the life cycle. Two
satisfy QA and security and to provide types of formal audits might be required by
evidence of compliance with regulations, the governing contract (e.g., a contract
governance requirements, etc. covering critical software): the functional
configuration audit (FCA) and the PCA.
In addition to reporting the configuration’s Successful completion of these audits can be
current status, the information obtained by a prerequisite for establishing the product
the SCSA can serve as a basis for various baseline.
measurements. Modern SCM includes a
wider scope of information, including but not 5.1 Software Functional Configuration
limited to the following: Audit
• Indicators of integrity (e.g., MAC [2*, c11s2.1]
(Message Authentication Code) The software FCA ensures that the audited
SHA1 (Secure Hash Algorithm), software item is consistent with its governing
MD5 (Message Digest)) specifications. The software V&V activities’
• Indicators of security status (e.g., output (see Verification and Validation in the
governance risk and compliance) Software Quality KA) is a key input to this
• Evidence of V&V activities (e.g., audit.
requirements completion)
• Baseline status
5.2 Software Physical Configuration Audit
• The number of CRs per SCI
[2*, c11s2.2]
• The average time needed to
implement a CR The software PCA ensures that the design
and reference documentation are consistent
with the as-built software product.
5. Software Configuration Auditing
[2*, c11] [5, c11s3.5] 5.3 In-Process Audits of a Software Baseline
A software audit is an independent [2*, c11s2.3]
examination of a work product or set of work Audits can be carried out during the
products to assess technical, security, legal development process to investigate the status
and regulatory compliance with of specific configuration elements. In-
specifications, standards, contractual process audits can be applied to all baseline
agreements or other criteria [1]. Audits are items to ensure that performance is consistent
conducted according to a well-defined with specifications or that evolving
process comprising various auditor roles and documentation continues to be consistent
responsibilities. Because of this complexity, with the developing baseline item.
each audit must be carefully planned. An
audit can require a number of individuals to

Software Configuration Management 8–13 © IEEE – SWEBOK Guide V4


This task applies to every single CI to be building software for new releases, SCM
approved as part of a baseline. The audit must usually be able to reproduce previous
consists of reviewing the CI to determine releases for recovery, testing, maintenance or
whether it satisfies requirements. How to additional release purposes.
conduct the review and the expected result
must be described in the quality plan or if Software is built using supporting tools, such
there is no quality plan, defined for the as compilers. (See Compiler Basics in the
software configuration auditing activity. Computing Foundations KA.) For example,
if it is necessary to rebuild an exact copy of a
Continuous reviews of CIs identified in the previously built SCI, supporting tools and
configuration identification activities help associated build instructions must be under
verify conformance to governance and SCM control to ensure the availability of the
regulatory requirements. Configuration correct versions of the tools.
auditing reviews take place throughout
project development, whenever a CI must be Tool capability is useful for selecting the
reviewed. correct versions of software items for a target
environment and automating the process of
building the software from the selected
6. Software Release Management and
version and configuration data. This tool
Delivery
capability is necessary for projects with
[2*, c14] [3*, c8s2] [4*, c25s4]
parallel or distributed development
In this context, release refers to distributing environments. Most software engineering
software and related artifacts outside the environments provide this capability.
development activity, including internal However, these tools vary in complexity;
releases and distribution to customers. When some require the software engineer to learn a
different versions of a software item are specialized scripting language, while others
available for delivery (such as versions for use a more graphics-oriented approach that
different platforms or versions with varying hides much of the complexity of an
capabilities), re-creating specific versions “intelligent” build facility.
and packaging the correct materials for
version delivery are frequently necessary.
The software library is a key element in The build process and products are often
accomplishing release and delivery tasks. subject to software quality verification.
Outputs of the build process might be needed
for future reference. They may become
6.1 Software Building records of quality, security, or compliance
[4*, c25s2] with organizational or regulatory
Software building constructs the correct requirements. The SBOM listing the artifacts
versions of SCIs, using the appropriate included in the build is an important CM
configuration data, into a software package output.
for delivery to a customer or other recipient
such as a team performing testing. For
In continuous integration, software building
systems with hardware or firmware, the
is performed automatically when changes to
executable program is delivered to the
CIs are committed to a source control
system-building activity. Build instructions
repository. Tools running on a local or cloud-
help ensure that the proper build steps are
based server monitor the project’s source
taken in the correct sequence. In addition to

Software Configuration Management 8–14 © IEEE – SWEBOK Guide V4


control system and initiate a pipeline of steps to notify a customer of newly reported
to be undertaken every time a change is problems). Finally, a mechanism to help
committed to a particular branch or area of ensure the released item’s integrity can be
the source code repository. The tool is implemented (e.g., by including a digital
configured to retrieve a fresh copy of the signature).
complete source code for the project and
execute the necessary commands to compile A tool capability is needed for supporting
and link the code. This configuration is often these release management functions. For
combined with steps to validate coding example, a connection with the tool
standards via automated static analysis, capability supporting the CR process is
execute unit tests and determine code useful to map release contents to the SCRs
coverage metrics, or extract documentation that have been received. This tool capability
from the source code. The resulting artifacts might also maintain information on various
are then deployed through the Release target platforms and customer environments.
Management process.
In continuous delivery, a pipeline is
6.2 Software Release Management established to build software continuously, as
[4*, c25s2] described in the previous section. The
Software release management encompasses resulting artifacts from the build process
the identification, packaging and delivery of include executable code and libraries, which
the elements of a product (e.g., an executable can then be combined into an installation
program, documentation, release notes, or package and deployed into an environment
configuration data). Given that product for verification or production use.
changes can occur continually, one concern
for release management is determining when 7. Software Configuration Management
to issue a release. The severity of the Tools
problems addressed by the release and [3*, c26s1]
measurements of the fault densities of prior Many tools can assist with CM at many
releases affect this decision. The packaging levels. The scope of these tools varies
task identifies which product items are to be depending on who uses the tools. CM is most
delivered and then selects the correct variants effective when integrated with other
of those items, given the product’s intended processes and by extension with other
application. The information documenting existing tools. The selection of CM toolcan
the physical contents of a release is known as be made depending on the scope that the tool
a version description document (VDD). The is going to have.
release notes describe new capabilities,
known problems and platform requirements Overview of tools:
necessary for proper product operation. The
package to be released also contains
• The configuration management
installation or upgrade instructions. The latter
system (CMS) provides enabling
can be complicated because some users
technology and logic to facilitate CM
might have versions that are several releases
activities.
old. In some cases, release management
might be necessary to track the product’s • Version control stores the source
distribution to various customers or target code, configuration files and related
systems (e.g., when the supplier was required artifacts.

Software Configuration Management 8–15 © IEEE – SWEBOK Guide V4


• Build automation (pipeline) is ● Build handling tools: In their simplest
established to enable continuous form, such tools compile and link an
delivery. executable version of the software. More
• A repository stores binaries that are advanced building tools extract the latest
created during the build process to version from the version control
extract the latest build artifacts and software, perform quality checks, run
redeploy them as required — used in regression tests, and produce various
the release verification process. forms of reports, among other tasks.
• Configuration management database ● Change control tools: These tools
(CMDB) or similar persistence store. primarily support the control of CRs and
• Change control tools. event notifications (e.g., CR status
• Release/deployment tools. changes, milestones reached).

The CMS supports the unique identification Project-related support tools mainly support
of artifacts. Both individual artifacts and workspace management for development
collections are specified in CM systems and teams and integrators. In addition, they can
related repositories. Structuring creates a support distributed development
logical relationship between artifacts. environments. Such tools are appropriate for
Validation and release establish the artifacts’ medium-to-large organizations that use
integrity, as part of the release management variants of their software products and
process. Baselines are identified where parallel development and do not have
stability is intended. For example, interface certification requirements.
management is identified and controlled,
making it part of the baseline process. Companywide-process support tools can
Change management, including variants and automate portions of a companywide
nonconformances, is reviewed and approved, process, providing support for workflow
and its implementation is planned. management, roles and responsibilities. They
Verification and audit activities are can handle many items, large volumes of
performed as part of the identification, data, and numerous life cycles. In addition,
change and release management process. such tools add to project-related support by
Status and performance accounting are supporting a more formal development
recorded as events occur and are made process, including certification requirements.
available through the CMS.

Individual support tools are typically


sufficient for small organizations or
development groups that do not issue variants
of their software products or face other
complex SCM requirements. The following
are examples of these tools:
● Version control tools: These tools track,
document and store individual CIs such
as source code and external
documentation.

Software Configuration Management 8–16 © IEEE – SWEBOK Guide V4


MATRIX OF TOPICS VS. REFERENCE MATERIAL
IEEE 828-2012 Hass 2003 Sommerville 2016
Topic
[2*] [3*] [4*]
1. Management of the SCM Process c6, c7
1.1. Organizational Context for SCM c6, ann.D Introduction c25
1.2. Constraints and Guidance for the SCM Process c6, ann.D, ann.E c2,c5
1.3. Planning for SCM c6, ann.D, ann.E c23 c25
1.3.1. SCM Organization and Responsibilities ann.Ds5-6 c10-11 c25
1.3.2. SCM Resources and Schedules ann.Ds8 c23
1.3.3. Tool Selection and Implementation c26s2, s6
1.3.4. Vendor/Subcontractor Control c13 c13s9-c14s2
1.3.5. Interface Control c12 c23s4
1.4. SCM Plan ann.D c23
1.5. Surveillance of Software Configuration
c11s3
Management
c9s2; c25s2-
1.5.1. SCM Measures and Measurement
s3
1.5.2. In-Process Audits of SCM c1s1
2. Software Configuration Identification c8
2.1. Identifying Items to Be Controlled c8s2.2 c1s2
2.1.1. Software Configuration
2.1.2. Software Configuration Item c8s2.1 c9
c8s2.3
2.2. Configuration Item Identifiers and Attributes c9
c8s2.4
c8s2.5.4
2.3. Baseline Identification
c8s2.5.5 c8s2.5.6
2.4. Baseline Attributes c8s2.5.4
2.5. Relationships Scheme Definition c7s4
2.6. Software Libraries c8s2.5 c1s3
3. Software Configuration Change Control c9 c8 c25s3
3.1. Requesting, Evaluating and Approving
c9s2.4 c11s1 c25s3
Software Changes
3.1.1. Software Configuration Control Board c9s2.2 c11s1 c25s3
3.1.2. Software Change Request Process c1s4, c8s4 c25s3
c9s2.3
3.1.3. Software Change Request Forms Definition c8s4 c25s3
c9s2.5
3.2. Implementing Software Changes c25s3
3.3. Deviations and Waivers
4. Software Configuration Status Accounting c10 c9
4.1. Software Configuration Status Information c10s2.1
4.2. Software Configuration Status Reporting c10s2.4 c1s5; c9s1
5. Software Configuration Auditing c11
5.1. Software Functional Configuration Audit c11s2.1
5.2. Software Physical Configuration Audit c11s2.2
5.3. In-Process Audits of a Software Baseline c11s2.3
6. Software Release Management and Delivery c14 c8s2 c25s4
6.1. Software Building c25s2
6.2. Software Release Management c25s2
7. Software Configuration Management Tools c26s1

Software Configuration Management 8–17 © IEEE – SWEBOK Guide V4


[5] J. W. Moore. The Road Map to
FURTHER READING
Software Engineering: A Standards-
S. P. Berczuk and B. Appleton., Software Based Guide, 1st ed. Hoboken, NJ:
Configuration Management Patterns: Wiley-IEEE Computer Society Press,
Effective Teamwork, Practical Integration 2006.
[6]. [6] S. P. Berczuk and B. Appleton.
Software Configuration Management
This book expresses useful SCM practices Patterns: Effective Teamwork,
and strategies as patterns. The patterns can Practical Integration: Addison-
be implemented using various tools, but they Wesley Professional, 2003.
are expressed in a tool-agnostic fashion. [7] CMMI for Development, Version 1.3,
Software Engineering Institute, 2010.
CMMI for Development, Version 1.3, pp.
[8] B. Aiello & L. A. Sachs. (2011).
137-147 [7].
Configuration management best
practices: Practical methods that
This model presents a collection of best work in the real world (1st edition).
practices to help software development
organizations improve their processes. At
maturity level 2, it suggests CM activities.

B. Aiello & L. A. Sachs. (2011).


Configuration management best
practices: Practical methods
that work in the real world (1st edition) [8].

This book presents the seven types of change


control (Chapter 4, Section 3).

REFERENCES
[1] IEEE. ISO/IEC/IEEE
24765:2017(E): ISO/IEC/IEEE
International Standard — Systems
and software engineering —
Vocabulary.
[2*] IEEE. IEEE Standard 828-2012,
Standard for Configuration
Management in Systems and
Software Engineering, . 2012.
[3*] A. M. J. Hass. Configuration
Management Principles and
Practices, 1st ed. Boston: Addison-
Wesley, 2003.
[4*] I. Sommerville. Software
Engineering, 10th ed. Global ed.
Pearson. 2016.

Software Configuration Management 8–18 © IEEE – SWEBOK Guide V4


CHAPTER 9
SOFTWARE ENGINEERING MANAGEMENT
ABBREVIATIONS

In one sense, it should be possible to


PMBOK® Guide Guide to the Project manage a software engineering project in the
Management Body of same way other complex endeavors are
Knowledge managed, using models, technical processes
SDLC Software and problem-solving styles as other
development life engineering projects do. However, software
cycle engineers use different process models,
technical processes, and problem-solving
SEM Software engineering
styles than other engineers, making these
management
choices based on their education and
SQA Software quality experience and on the differences between
assurance physical and software attributes. Software
SWX Software Extension system elements are logical constructions
to the PMBOK® expressed in logarithmic form, while
Guide physical system elements are realized in
mechanical, electrical, chemical, biological
and other physical media. Software is
WBS Work breakdown
intangible because it has no physical
structure
properties and is malleable because of the
PSM Practical Software relative ease with which code can be
and Systems modified. Obtaining the desired effect by
Measurement modifying software code might not be easy,
but code modifications, per se, are
INTRODUCTION straightforward compared with the
modification of physical elements that have
Software engineering management (SEM) already been constructed [12].
can be defined as a collection of work
activities involved with planning, As software and software-embedded
estimating, measuring, controlling, systems become bigger, more complex, and
coordinating, leading and managing risk more intertwined, software management and
factors for a software project to help ensure engineering roles are evolving in response
that software products and software [10], because skilled individuals must
engineering services are delivered actively develop and maintain these systems.
efficiently, effectively and to the Consider the following: hardware is
stakeholders’ benefit [3]. Although project different from software (and not all software
management and measurement management is the same). Hardware can be developed,
are often seen as separate areas, and each procured, and maintained in a linear fashion.
possesses many unique attributes, the close Software is an enduring capability that must
relationship between the two has led to their be supported and continuously improved
combined treatment in this knowledge area throughout its life cycle [13]. Furthermore,
(KA). the malleable nature of software allows

Software Engineering Management1© IEEE – SWEBOK Guide V4 Draft


iteration among and interleaving of the built iteratively rather than as a linear
development phases (to a much greater sequence of phases.
degree than is possible when developing ● Software is nominally an enduring
physical artifacts). capability that must be supported and
Software is made by people and for people, continuously improved throughout its
so digital talent matters. Software projects lifecycle
are increasingly important, and their ● Software construction differs from
ongoing success largely depends on people hardware implementation in that design is
with the right skills, knowledge and abilities. usually part of software construction,
This fact is essentially actual and necessary whereas in hardware-oriented systems,
but not sufficient. Other human factors may design precedes hardware implementation
affect the project's success. During the to “get it right” prior to procurement or
software development lifecycle, it is fabrication of hardware [12].
impossible to separate the human factors ● Software engineering necessarily
from the technical ones. Therefore, people incorporates creativity and discipline.
management activities, such as team and Maintaining an appropriate balance
teamwork, leadership, communication, and between the two is sometimes difficult [5].
coordination activities, are important to ● The development of software capabilities
project success. often involves a high degree of novelty
and complexity.
Factors such as cultural differences and ● Typically, the underlying technology has a
diverse attitudes may affect the development high rate of change.
team. A significant number of software ● Computer software has become a key
projects failed due to social issues. Poor component of most modern systems.
quality developers may produce poor quality Software has been elevated to a highly
products resulting in a higher cost of prominent role because of its flexibility
reworks to remove their poor-quality traces. and relatively low replication cost
compared with hardware.
● Software, as an intangible deliverable, is
Other issues can complicate effective challenging to measure. Physical
management of software projects and measurement units such as the length and
software life cycle processes, including the weight measures are challenging to apply
following: to the software. This difficulty impacts
how to plan, monitor, and control
● Clients often do not know what is needed software development projects.
or what is feasible. ●
Software rework to remove faults and
● Increased understanding and changing respond to change
conditions will likely generate new or ●
Speed and cycle time are important
changed software requirements. metrics for managing software. Software
● Clients often do not appreciate the capabilities are often delivered at
complexities inherent in software increasing speed to satisfy business and
engineering, particularly regarding the mission needs [13].
impact of changing requirements.
● As a result of changing requirements and SEM activities occur on three levels:
software malleability, software is often organizational and infrastructure
management, project management, and

Software Engineering Management2© IEEE – SWEBOK Guide V4 Draft


management of the measurement program. for a project’s success, but also for the
The last two are covered in detail in this KA organization’s long-term success. Given the
description. This fact does not diminish the projected scarcity of skilled software
importance of organizational and engineers, it is important to provide an
infrastructure management issues but rather environment that attracts and retains good
points out that software organizational talent. Software engineering personnel can
engineering managers should be conversant present unique training or personnel
with the project management and software management challenges (e.g., maintaining
measurement knowledge described in this currency in a context where the underlying
KA. They should also possess some target technology undergoes rapid and continuous
domain knowledge. Likewise, it also helps change) as part of career development.
for managers of complex projects and Communication management is also often
programs where software is part of the mentioned as an overlooked but important
system architecture to know what issues aspect of success in a field where a precise
software engineering processes (versus other understanding of user needs, software
types of engineering processes) introduce requirements and software designs is
into project management and project necessary. Furthermore, portfolio
measurement. management is desirable, which provides an
Other aspects of organizational management overall view of software under development
affect software engineering — for example, in various projects and programs (integrated
organizational policies and procedures that projects) of planned software, and of
provide the framework for software software already in use in an organization.
engineering projects. These policies and Also, software reuse can be a key factor in
procedures might need to be adjusted for maintaining and improving productivity and
effective software development and competitiveness. Effective reuse requires a
maintenance requirements. In addition, strategic vision that reflects the advantages
several policies specific to software and disadvantages of reuse.
engineering might need to be in place or Software engineers should have a sound
established for the effective management of understanding of the aspects of management
software engineering at the organizational that are unique to software projects, and they
level. For example, policies are usually should also have some knowledge of the
necessary to establish specific organization- more general aspects of management
wide processes or procedures for software discussed in this KA (even in the first few
engineering tasks such as software design, years after graduation).
software construction, estimating,
monitoring and reporting. Such policies are Certain attributes of organizational culture
important for effective long-term and behavior, as well as management of
management of software engineering functional areas of the enterprise outside the
projects across an organization (e.g., one immediate software engineering realm, can
such policy could establish a consistent basis influence an organization’s software
for analyzing past project performance and engineering processes, albeit indirectly.
implementing improvements). Software projects are often targeted at
changing the way people work — but
Another important aspect of organizational culture change is difficult, complicated and
management is the use of personnel unlikely to succeed without a significant
management policies and procedures for effort. For this reason, leadership is an
hiring, training and mentoring — not only
Software Engineering Management3© IEEE – SWEBOK Guide V4 Draft
important attribute for program managers, as essence, management without measurement
they often need to lead the charge for digital (qualitative and quantitative) suggests a lack
transformation. They might need to of discipline, and measurement without
galvanize their teams and other stakeholders management suggests a lack of purpose or
to bring their very best to every project context. To be effective, software engineers
pursuing major change. must use both measurement and
management.
Extensive information concerning software
project management can be found in the The following working definitions are
Guide to the Project Management Body of adopted here:
Knowledge (PMBOK® Guide) and the ● Management is a system of processes and
Software Extension to the PMBOK® Guide controls required to achieve the strategic
(SWX) [1, 2]. Each of these guides includes objectives set by the organization.
10 project management KAs: project ● Measurement refers to the assignment of
integration management, project scope values and labels to software engineering
management, project time/schedule work products, processes and resources,
management, project cost management, plus the models derived from them,
project quality management, project whether these models are developed using
resource/human management, project statistical or other techniques [3*, c7, c8].
communications management, project risk
management, project procurement The software engineering project
management and project stakeholder management sections in this KA use the
management. Each KA has direct relevance Software Engineering Measurement section
to this SEM KA. extensively.

Additional information is also provided in This KA is closely related to others in the


this KA’s references and list of further SWEBOK Guide; reading the following KA
reading. descriptions will be particularly helpful in
understanding this one:
This SEM KA discusses the software project
management processes shown as the first
five topics in Figure 1 (Initiation and Scope ● The Engineering Foundations KA
Definition, Software Project Planning, describes some general measurement
Software Project Enactment, Review and concepts that directly apply to the
Evaluation, Closure), as well as Software Software Engineering Measurement
Engineering Measurement (the sixth topic section of this KA. In addition, the
shown in the figure) and Software concepts and techniques presented in the
Engineering Management Tools (the seventh Statistical Analysis section of the
topic). Engineering Foundations KA apply
directly to many topics in this KA.
Unfortunately, a common perception of the ● The Software Requirements KA describes
software industry is that software products activities that should be performed during
often are delivered late, are over budget, are the project’s Initiation and Scope
of poor quality and have incomplete Definition phase.
functionality. Measurement-informed ● The Software Configuration Management
management — a basic principle of any true KA deals with the identification, control,
engineering discipline (see Measurement in status accounting and auditing of software
the Engineering Foundations KA) — can configurations, along with software release
help improve perception and reality. In

Software Engineering Management4© IEEE – SWEBOK Guide V4 Draft


management and delivery and software processes involve Agile SDLC approaches
configuration management tools. [14]. The Agile approach assumes that
● The Software Engineering Process KA teams can develop high-quality, adaptive
describes software life cycle models and software using continuous design
the relationships between processes and improvement principles and testing based on
work products. rapid feedback and change. In comparison,
● The Software Quality KA emphasizes the traditional approach assumes that
quality as a management goal and as an software-intensive systems are fully
aim of many software engineering specifiable and predictable and can be built
activities. through meticulous and extensive planning.
● The Software Engineering Economics KA The management style associated with the
discusses how to make software-related Agile approach emphasizes leadership and
decisions in a business context. collaboration at the team level, whereas the
management style of the highly predictive
BREAKDOWN OF TOPICS FOR SOFTWARE
approach is more formal (top-down). Many
ENGINEERING MANAGEMENT
Agile approaches integrate different
Because most software development life management approaches.
cycle (SDLC) models require similar
activities that may be executed in different For example, Dev/Sec/Ops is a culture and
ways, the topic breakdown, shown in Figure an Agile approach to modern software
1, is activity-based. The top-level elements delivery that aligns development (Dev),
shown in the figure are activities that are security (Sec) and operations (Ops) groups
usually performed when a software into an integrated team focused on
development project is being managed, continuous, incremental delivery of
regardless of which SDLC model is being capabilities. The main characteristic of
used (see Software Life Cycle Models in the Dev/Sec/Ops is that this approach
Software Engineering Process KA). This automates, continuously monitors and
breakdown does not recommend a specific applies security at all phases of the software
life cycle model. However, it is important to life cycle: plan, develop, build, test, release,
note the impact the choice of software can deliver, deploy, operate and monitor. In
have on business success and the associated Dev/Sec/Ops, testing and security are shifted
development of software life cycle models to the left through automated unit,
to accommodate changing business needs. functional, integration and security testing.
This is a key Dev/Sec/Ops differentiator;
Delivery speed, continuous adaptation and security/quality assurance (QA) and other
frequent modular upgrades to deliver new nonfunctional and functional capabilities are
capabilities are often key business tested and built simultaneously [11, 14].
differentiators and project management Whereas Dev/Sec/Ops encompasses the
imperative [11, 13]. These imperatives culture and processes that enable rapid,
should be balanced with risk management continual delivery of cyber-resilient
activities. systems, complex software-embedded
systems can have additional demands that
Several software life cycle process models must also be integrated into the
have been and are being developed to Dev/Sec/Ops culture and processes, such as
shorten development cycles in response to safety. Elevating these demands to be on par
the changing business needs. Most of these with Dev/Sec/Ops highlights the importance

Software Engineering Management5© IEEE – SWEBOK Guide V4 Draft


of incorporating quality into all program
aspects. The complexity of the end-to-end The activity-based breakdown in Figure 1
Dev/Sec/Ops tools and of using emerging shows what happens but does not imply
technologies such as artificial intelligence when, how or how many times each activity
(AI) and machine learning (ML) to leverage occurs. The seven topics are the following:
those tools adds another dimension [15]. For
example, Agile and DevOps approaches are
● Initiation and Scope Definition, which
reasonably well-established, but in case of
deals with the decision to embark on a
AI-based software, new SLDCs maybe
software engineering project
required to manage the complexity brought
● Software Project Planning, which
by AI to the software.
addresses the activities undertaken to
prepare for a successful software
It is important to understand the difference engineering project from the management
between phases and activities and why an perspective
activities breakdown is used. The Project ● Software Project Enactment, which deals
Management Institute (PMI) describes a with generally accepted SEM activities
phase this way: “The completion and that occur during a software engineering
approval of one or more deliverables project’s execution
characterizes a project phase.” A deliverable ● Review and Evaluation, which deals with
is a measurable, verifiable work product ensuring that technical, schedule, cost and
such as a specification, feasibility study quality engineering activities are
report, detailed design document or working satisfactory
prototype. Some deliverables correspond to ● Closure, which addresses the activities
part of the project management process, accomplished to complete a project
whereas others are the end products or ● Software Engineering Measurement,
components of the end products for which which deals with the effective
the project was conceived. The deliverables, development and implementation of
and hence the phases, are part of a generally measurement programs in software
sequential process designed to ensure proper engineering organizations
control of the project and to attain the ● Software Engineering Management Tools,
desired product or service, which is the which describes the selection and use of
project’s objective. From a project tools for managing a software engineering
management perspective, phases help project
accomplish project objectives and maintain
control over the project.

Software Engineering Management6© IEEE – SWEBOK Guide V4 Draft


Figure 1. Breakdown of Topics for the Software Engineering Management KA

1. Initiation and Scope Definition requirements review (e.g., elicitation,


Project initiation focuses on reviewing the analysis, specification, and validation).
software requirements and determining the Methods and techniques should be selected
need, scope, feasibility, and authorization and applied considering the various
for a software project Once project stakeholder perspectives. Requirements
feasibility has been established, the provide the basis for all that follows on a
remaining tasks in this section are specifying software project and are captured in a
the software requirements and selecting the Project Charter or other high-level project
processes for requirements revision and initiation document.
review. 1.2. Feasibility Analysis [4*, c5]
The purpose of the feasibility analysis is to
1.1. Determination and Negotiation of develop a clear description of project
Requirements [3*, c3] objectives and to evaluate alternative
approaches to determine whether the
Determining and negotiating the project
proposed project solution is the best
requirements are the overarching goals of
approach, given the constraints of
the tasks undertaken during this phase (see
technology, resources, finances and changes
the Software Architecture KA and Software
to ethical, environmental, and socio-
Requirements KA). Activities software

Software Engineering Management7© IEEE – SWEBOK Guide V4 Draft


technical considerations. An initial project will not be “set in stone” but can and should
and product scope statement, project be revisited at predetermined points as the
deliverables, project duration constraints, project unfolds (for example, at the time
and an estimation of resources needed when backlog priorities are created or at
should be prepared. milestone reviews). If changes are accepted,
then forward or backward traceability
Resources (which can be internal or external
analysis and risk analysis should be used to
to the organization) include infrastructure,
ascertain the impact of those changes. For
support, and people with the necessary core
example, backward traceability may link the
competencies. The feasibility analysis often
test script to its associated requirement and
requires estimations of effort and cost based
design. This link helps monitor the status of
on appropriate methods. (See Section 2.3,
requirements satisfaction and helps make
Effort, Schedule and Cost Estimation.)
decisions to stop testing. It also helps in
An initial work breakdown structure (WBS) making tradeoffs regarding requirements
and context diagram may be developed and design. (See Section 2.5, Risk
during the project’s Initiation and Scope Management, and Software Configuration
Definition phase activities. Breaking work Control in the Software Configuration
into smaller tasks is a common productivity Management KA.)
technique that makes the work more A managed-change approach can also form
manageable and approachable. As the the basis for evaluating success during
project tool that uses this technique, WBS is closure of an incremental cycle or an entire
an important project management document. project, based on changes that occurred
While a WBS can be used to organize cost along the way. (See Topic 5, Closure).
and schedule tracking, the WBS does not
itself include cost and schedule baselines.
Schedules are developed as part of the next 2. Software Project Planning
activity, project planning (section 2). A key step in software project
An engineering context diagram defines the planning should be selecting an appropriate
boundary between the system (or a part of SDLC model and, perhaps, tailoring it based
the system) and its environment, showing on project scope, software requirements and
the entities interacting with it. This a risk assessment. The SWX [2] states that
document is important in defining project life cycles occupy a continuum from
management and technical interfaces and predictive to adaptive. Factors that
trade-offs that must be considered [1]. While characterize the positions of software project
engineers are developing the WBS, they life cycles within the continuum include (but
should consider all configuration items as are not limited to) the various ways
tasks to have under control. requirements and plans are handled, how
1.3. Process for the Review and Revision of risk and cost are managed, and key
Requirements [3*, c3] stakeholder involvement. Highly predictive
software project life cycles emphasize
Given the inevitability of change,
requirements specification and detailed
stakeholders should agree on how
planning during the project’s initiation and
requirements and scope will be reviewed
planning phases. Detailed plans based on a
and revised (e.g., change management and
known architecture, requirements and
trade-off procedures, iterative cycle
constraints are used to reduce risk and cost.
retrospectives). (See the Requirements KA.)
Milestones are planned, versus continuous
This indicates that scope and requirements

Software Engineering Management8© IEEE – SWEBOK Guide V4 Draft


key stakeholder involvement. Highly SDLC executes the first five processes listed
adaptive software project life cycles, on the in Figure 1 in a linear sequence with
other hand, are characterized by progressive revisions to earlier phases only as necessary.
requirements specification based on short Adaptive SDLCs are characterized by
iterative development cycles. Risk and cost iterative development cycles. SDLCs in the
are reduced by progressive evolution of midrange of the SDLC continuum produce
initial plans, and key stakeholders are increments of functionality on either a
continuously involved [2]. preplanned schedule (on the predictive side
of the continuum) or as the products of
Other factors to consider include the nature
frequently updated development cycles (on
of the application domain, functional and
the adaptive side of the continuum).
technical complexity, and software quality
requirements. (See Software Quality Well-known SDLCs include the waterfall,
Requirements in the Software Quality KA.) incremental and spiral models, plus various
Agile software development approaches [2,
In all SDLCs, risk assessment should be an
11] [3*, c2].
element of initial project planning, and the
“risk profile” of the project should be Relevant methods (see the Software
discussed and accepted by all relevant Engineering Models and Methods KA) and
stakeholders. Software quality management tools should be selected as part of planning.
processes (see Software Quality Automated tools that will be used
Management Processes in the Software throughout the project should also be
Quality KA) should be planned along with planned for and acquired. Tools might
project planning. This planning should include those for project scheduling,
establish procedures and responsibilities for software requirements, software design,
software quality assurance (SQA), software construction, software
verification and validation, reviews, and maintenance, software configuration
audits. (See the Software Quality KA.) management, software engineering process
Processes and responsibilities for ongoing and software quality, among others. Many of
review and revision of the project plan and these tools should be selected based
related plans should also be clearly stated primarily on the technical considerations
and agreed upon. discussed in other KAs, but some of those
concerns are closely related to the
2.1. Process Planning [3*, c3, c4, c5], [5*, management considerations discussed in this
c1] chapter.
SDLC models span a continuum from
predictive to adaptive. (See Software Life 2.2. Determine Deliverables [3*, c4, c5, c6]
Cycle Models in the Software Engineering
Process KA.) Predictive SDLCs are Each project activity’s work product(s) (e.g.,
characterized by the development of detailed software architecture design documents,
software architecture and software inspection reports, tested software) should
requirements, detailed project planning, and be identified and characterized.
minimal planning for iteration among Opportunities to reuse software components
development phases. Adaptive SDLCs are from previous projects or to use off-the-shelf
designed to accommodate emergent software products should be evaluated.
software requirements and iterative Software procurement and use of third
adjustment of plans. A highly predictive parties to develop deliverables should be

Software Engineering Management9© IEEE – SWEBOK Guide V4 Draft


planned and suppliers selected. (See Section projects, the expected schedule of tasks,
3.2, Software Acquisition and Supplier with projected start times, durations and end
Contract Management.) times, is typically produced during planning.
In adaptive SDLC projects, an overall
estimate of effort and schedule is typically
2.3. Effort, Schedule and Cost Estimation developed from the initial understanding of
the requirements, or, alternatively,
The topic of estimation in general is constraints on overall effort and schedule
addressed in the Software Engineering may be specified and used to determine an
Economics KA. Questions like “What is initial estimate of the number of iterative
estimation?” and “Why do we estimate?” are cycles and estimates of effort and other
addressed there. This section addresses resources allocated to each cycle.
management-specific estimation topics.

Resource requirements (for example, people


Estimating costs for software projects is an
and tools needed) can usually be translated
error-prone process. The effort required for
into cost estimates. The estimation of effort,
any given software project depends almost
schedule and cost is an iterative activity that
entirely on human elements: individuals’
should be negotiated and revised among
experience and capabilities, team members’
affected stakeholders until consensus is
interactions, and the culture of the software
reached on resources and time available for
development environment. Dynamic
project completion. Program manager often
environmental factors, such as rapid
us a model that links four association role
technology evolution, changing and
types: responsible, accountable, consulted,
emergent requirements, and the intangible
and informed (i.e., RACI) to facilitate this
nature of the product, also significantly
process. Responsible roles produce
affect cost management. Estimating costs
deliverables; accountable roles check the
when this much variability exists is difficult
deliverables; consulted roles advise on tasks;
even when significant historical data exists.
and informed roles are kept informed
Software project managers should use
throughout these processes. Project
multiple estimation approaches and then
managers should constantly monitor
reconcile the differences among the
stakeholder requirements and changes as
estimates [3, 10, 11].
they evolve to analyze their impact on the
project cost and schedule. This is usually
When data is available, the estimated range more important in Agile software
of effort required for a project, or parts of a development projects, where stakeholder
project, can be determined using a calibrated requirements are dynamic because changes
estimation model based on historical size might occur rapidly as the project progresses.
and effort data. It is best to also use bottom-
up estimation techniques based on estimates
from those who will accomplish the work 2.4. Resource Allocation [3*, c5, c10, c11]
and historical data based on similar projects
[2]. Task dependencies can be established, Equipment, facilities and people should be
and potential opportunities for completing allocated to the identified tasks, including
tasks concurrently and sequentially can be allocating responsibilities for completing
identified and documented, using a Gantt various project elements and the overall
chart, for example. In predictive SDLC project. A matrix that shows who is

Software Engineering Management10© IEEE – SWEBOK Guide V4 Draft


responsible for, accountable for, consulted Particular attention should be paid to
about and informed about each task can be managing risks related to software quality
used. Resource allocation is based on and requirements such as safety or security [11].
constrained by the availability of resources (See the Software Quality KA.) Risk
and their optimal use, and by issues relating management should be done not only at the
to personnel (e.g., productivity of beginning of a project, but also at periodic
individuals and teams, team dynamics, and intervals throughout the project life cycle.
team structures).
2.6. Quality Management [3*, c4] [4*, c24]
2.5. Risk Management [3*, c9] [5*, c5] According to the PMBOK® Guide, Project
Risk and uncertainty are related but distinct quality management includes the performing
concepts. Uncertainty results from a lack of organization’s processes and activities that
information. Risk is effect of uncertainty on determine quality policies, objectives and
objectives that has negative (threats) or responsibilities so the project will satisfy the
positive (opportunities) consequences on needs for which it was undertaken. This
objectives. Uncertainty often creates risk section discusses additional considerations
and is characterized by the probability that for managing software project quality [1].
an event having a positive outcome might Software quality requirements for a software
occur. project and the associated work products
should be identified, perhaps both
Risk management entails identifying risk
quantitatively and qualitatively. Quality
factors, analyzing probability and potential
attributes of software include but are not
impact of each risk factor, prioritizing risk
limited to safety, security, reliability,
factors, and developing risk mitigation
availability, performance, ease of use and
strategies to reduce the probability of a
ease of modification. SWX Section 1.9 lists
negative event and to minimize the negative
quality attributes that are important for
impact if a risk factor becomes a problem.
software users (e.g., efficiency, safety,
Risk management data can be used to
security, reliability, availability) and quality
represent the project risk profile; this data is
attributes that are important to software
often part of a risk register. A risk register is
developers and maintainers (e.g.,
a document used as a risk management tool.
maintainability is important to those who
It can be used to fulfill regulatory
provide sustainment services) [1]. ISO/IEC
compliance, serving as a repository for all
25000 series of standards provides extensive
risks identified and for additional
lists of software quality attributes that align
information about each risk [2]. Risk
with different stakeholder needs [2]. This
assessment methods (e.g., expert judgment,
alignment is consistent with ISO/IEC/IEEE
historical data, decision trees and process
15939 and Practical Software and Systems
simulations) can sometimes be used to
Measurement (PSM) [2, 9.11].
identify and evaluate risk factors.
Project abandonment conditions can also be Large portions of system functionality are
determined with all relevant stakeholders. shifting from hardware to software to
Software-unique aspects of risk, such as capitalize on the increased flexibility and
software engineers’ tendency to add speed of component delivery that software
unneeded features or the risks related to can provide. However, with these benefits
software’s intangible nature, can influence come other challenges — for example, the
risk management for software projects.

Software Engineering Management11© IEEE – SWEBOK Guide V4 Draft


need for increased management of software up-front development of the project plan and
quality requirements (e.g., cybersecurity) integration of subsidiary plans developed by
throughout the SDLC [11]. Thresholds for support personnel from other organizational
acceptable quality measurements should be units (e.g., estimation specialists in the
set for each software quality requirement Project Management Office (PMO)).
based on stakeholder needs and
expectations. Procedures concerned with In other types of programs (e.g., adaptive
ongoing SQA and quality improvement programs) where formal plans are not
throughout the development process and usually used, the emphasis should be on
with verifying and validating the deliverable selecting and retaining project information
software product should also be specified useful in project control and future projects,
during quality planning (e.g., technical and establishing strategy, policies, and
reviews and inspections or demonstrations procedures. For example, in adaptive
of completed functionality). (See the programs, managers will usually spend less
Software Quality KA.) effort up front on developing detailed scope,
cost and schedule plans. But significant
2.7. Plan Management [3*, c4] effort is typically spent defining monitor and
Except for older predictive programs, control processes, such as requirements
documenting and managing formal plans are traceability, to ensure coordination among
becoming less emphasized in managing the project members or teams as the
most software projects. (e.g., documentation emerging plans are implemented [2].
plans are rarely used, especially when
MBSE is used for product data). The said,
where they are used, plans should be 3. Software Project Enactment
developed and managed for software During software project enactment (also
projects when change is expected. The known as project execution), plans are
magnitude of the planning effort and the implemented, and the processes embodied in
plan’s content should be determined partly the plans are enacted. Throughout, there
by the risk of not developing the plan. The should be a focus on adherence to the
management of the project plan should itself selected SDLC processes, with an overriding
be planned. Plans and processes selected for expectation that adherence will satisfy
software development should be stakeholder requirements and achieve the
systematically monitored, reviewed, project’s objectives. Fundamental to
reported and, when appropriate, revised. enactment are the ongoing management
Plans associated with supporting processes activities of monitoring, controlling and
(e.g., documentation, software configuration reporting.
management, and problem resolution) also
should be managed. Reporting, monitoring 3.1. Implementation of Plans [4*, c2]
and controlling a project should fit within Project activities should follow the project
the selected SDLC and the realities of the plan and supporting plans. Project activities
project. Plans should account for the various use resources (personnel, technology and
artifacts that will be used to manage the funding) and generate work products
project. (software design, software code and
software test cases).
Project managers of predictive life cycle
software projects put substantial effort into

Software Engineering Management12© IEEE – SWEBOK Guide V4 Draft


3.2. Software Acquisition and Supplier Software projects typically use different
Contract Management [3*, c3, c4] acquisition approaches to obtain the
Software acquisition and supplier contract necessary software components. However,
management concern issues involved in regardless of how the software components
contracting with customers of the software are obtained, the following activities should
development organization who acquire the be performed: verifying that each
deliverable work products and with component is complete, correct and
suppliers who supply products or services to consistent concerning the architectural
the software engineering organization. design and software requirements for that
component; integrating the components;
Software acquisition is common practice in verifying that the integrated components are
software development projects, with correct, complete and consistent concerning
integrated development environments the architectural design and the software
(IDEs) and package libraries allowing requirements; and validating that the
software engineers to acquire third-party integrated components will satisfy their
libraries with minimal steps, facilitating the intended purpose when used in their
assessment of risk, legality and suitability. intended operating environment.
However, software is no longer exclusively
acquired as a shrink-wrapped product via a Different acquisition approaches (for
complex supply chain process and obtaining software components) require
purchasing route. The ease of acquiring different approaches to managing the project.
software has resulted in a common attack For example, custom development requires
surface and led to security vulnerabilities. detailed planning for the numbers and skills
Organizations should consider introducing of the software developers, organizing the
technical or procedural controls to minimize development team(s), allocating
risk potentially exposed by unfiltered access requirements to the teams, specifying project
to external library repositories. metrics to be collected, monitoring progress,
and applying corrective actions when actual
The different software acquisition classes progress does not agree with planned
include commercial off-the-shelf (COTS) progress. Licensing components involves
software — an existing product acquired “as evaluating candidate components; selecting
is” from another software vendor, with appropriate components; and negotiating
applicable license terms; software developed terms, conditions, and delivery dates for the
exclusively for the organization by another selected components.
party — typically contracted and sometimes
a customization of COTS software; open This might involve selecting appropriate
source software — nominally free, although contracts, such as fixed price, time-and-
the organization may purchase enhanced materials, cost plus fixed fee, and cost-plus
support or maintenance and must review the incentive fee. Agreements with customers
license for restrictions on use; customer and suppliers typically specify the scope of
loaned software — typically to provide work and the deliverables. The agreements
simulation or integration with another can also include special clauses, such as
system element; software as a service (SaaS) clauses establishing penalties for late
— which might include software the delivery or no delivery, and intellectual
organization rents to fulfill a particular need property agreements that specify what the
(for example, a cloud-based hosting, source suppliers are providing and what the
control or development environment). acquirer is paying for, plus what will be

Software Engineering Management13© IEEE – SWEBOK Guide V4 Draft


delivered to and owned by the acquirer. For schedule slippage or other measures. Outlier
software developed by suppliers (both those identification and analysis of quality and
internal to and those external to the software other measurement data should be
development organization), agreements performed (e.g., defect analysis). (See
commonly establish software quality Software Quality Measurement in the
requirements. Software Quality KA.) Risk exposures
should be recalculated. (See Section 2.5,
After the agreement has been put in place,
Risk Management.) These activities can
executing the project in compliance with the
enable problem detection and exception
terms of the agreement should be managed.
identification based on thresholds that have
(See Chapter 12, Software Extension to the
been exceeded. Outcomes should be
PMBOK® Guide (SWX), Software
reported as necessary or when thresholds
Procurement Management, for more
have been exceeded. For example, the
information on this topic [2].)
timely identification, mitigation, and
resolution of software security
vulnerabilities and weaknesses that exceed
3.3. Implementation of Measurement
expectations can affect the system’s security
Process [3*, c7]
posture [11].
The measurement process should be enacted
during the software project to ensure that
relevant and useful data is collected. (See 3.5. Control Process [3*, c7, c8]
Sections 6.2, Plan the Measurement Process, Project monitoring activities provide the
and 6.3, Perform the Measurement Process.) basis for making decisions. Where
appropriate, and when the probability and
3.4. Monitor Process [3*, c8] impact of risk factors are understood,
Adherence to the project plan and related changes can be made to the project. This
plans should be assessed continually and at may take the form of corrective action (e.g.,
predetermined intervals. Outputs and retesting certain software components). It
completion criteria for each task should also might involve incorporating additional
be assessed. Deliverables should be actions (e.g., deciding to use prototyping to
evaluated for their required characteristics assist in software requirements validation;
(for example, via inspections or by see Prototyping in the Software
demonstrating working functionality). Effort Requirements KA). It might also entail
expenditure, schedule adherence, costs to revising the project plan and other project
date, and resource use should be analyzed. documents (e.g., the software requirements
The project risk profile (see Section 2.5, specification) to accommodate unanticipated
Risk Management) should be revisited, and events and their implications.
adherence to software quality requirements In some instances, the control process might
should be evaluated (see Software Quality lead to abandonment of the project. In all
Requirements in the Software Quality KA). cases, the software development team
Measurement data should be analyzed. (See should adhere to software configuration
Statistical Analysis in the Engineering control and software configuration
Foundations KA.) Variance analysis should management procedures. (See the Software
be conducted to determine deviation of Configuration Management KA.) Decisions
actual from expected outcomes and values. should be documented and communicated to
This analysis might examine cost overruns, all relevant parties, plans should be revisited

Software Engineering Management14© IEEE – SWEBOK Guide V4 Draft


and revised when necessary, and relevant Configuration Management KA). Decisions
data should be recorded. (See Section 6.3, should be documented and communicated to
Perform the Measurement Process.) all relevant parties; plans should be revisited
and revised as necessary; and relevant data
should be recorded (see Section 6.3, Perform
3.6. Reporting [3*, c11] the Measurement Process).
Progress to date should be reported at
specified and agreed-upon times both within
the organization (e.g., to a project steering 4.2. Reviewing and Evaluating Performance
committee) and to external stakeholders [3*, c8, c10]
(e.g., clients or users). Reports should focus Periodic performance reviews for project
on the information needs of the target personnel can provide insight into the
audience as opposed to the detailed status likelihood of adherence to plans and
reporting within the project team. processes and possible areas of difficulty
(e.g., team member conflicts). The various
project methods, tools and techniques should
4. Review and Evaluation be evaluated for effectiveness and
At prespecified times and as needed, overall appropriateness. The project’s process
progress toward the stated objectives and should also be systematically and
satisfaction of stakeholder (user and periodically assessed for relevance, utility
customer) requirements should be evaluated. and efficacy. Where appropriate, project
Similarly, assessments of the effectiveness changes should be made and managed.
of the software process, the personnel
involved, and the tools and methods used
should also be undertaken regularly and as 5. Closure
circumstances demand. An entire project, a major project phase or
an iterative development cycle reaches
4.1. Determining Satisfaction of closure when all the plans and processes
Requirements [4*, c8] have been enacted and completed. The
criteria for project, phase or iteration success
Achieving stakeholder satisfaction is a
should then be evaluated. Once closure has
principal goal of the software engineering
been established, archival, retrospective and
manager. Progress toward this goal should
process improvement activities can be
be assessed periodically. Progress should be
performed.
assessed upon achieving a major project
milestone (e.g., completing software design
architecture or completing a software 5.1. Determining Closure [1, s3.7, s4.6]
technical review) or upon completion of an Closure occurs when the specified tasks for
iterative development cycle that results in a a project, a phase or an iteration have been
product increment. Variances from software completed and satisfactory achievement of
requirements should be identified, and the completion criteria has been confirmed.
appropriate actions should be taken. Software requirements can be confirmed as
satisfied or not, and the degree of achieving
As in the control process activity above (see
the objectives can be determined. Closure
Section 3.5, Control Process), software
processes should involve relevant
configuration control and software
stakeholders and document relevant
configuration management procedures
should be followed (see the Software
Software Engineering Management15© IEEE – SWEBOK Guide V4 Draft
stakeholders’ acceptance; any known levels of projects, processes and work
problems should be documented. products.
This section follows ISO/IEC/IEEE 15939
5.2. Closure Activities [2, s3.7, s4.8] standard [6], which describes a process to
After closure has been confirmed, project define the activities and tasks necessary to
materials should be archived in accordance implement a software measurement process.
with stakeholder agreed-upon rules for The standard also includes a measurement
archival methods, location and duration — information model. This model in the PSM
possibly including destruction of sensitive Continuous Iterative Development
information, software and the medium on Measurement Framework report is also
which copies are resident. For example, elaborated for SDLC approaches [9].
these rules could require that during closure,
all data is removed and destroyed from any
devices that contain relevant information 6.1. Establish and Sustain Measurement
before physical disposal of the devices (e.g., Commitment [7*, c1, c2]1
the hard drives of personal computers, ● Establish measurement requirements.
servers, mainframes, personal digital Each measurement endeavor should
assistants (PDAs), routers, firewalls, be guided by organizational
switches, tapes, diskettes, CDs, DVDs, cell objectives and driven by a set of
phones, printers, Universal Serial Bus measurement requirements
(USB) data storage devices). established by the organization and
The organization’s measurement database the project (e.g., an organizational
should be updated with relevant project data. objective might be first to market).
A project, phase or iteration retrospective ● Establish the scope of measurement.
analysis should be undertaken so that issues, The project team should establish the
problems, risks and opportunities organizational unit to which each
encountered can be analyzed. (See Topic 4, measurement requirement is to be
Review and Evaluation.) Lessons learned applied. This might be a functional
should be drawn from the project and fed area, a single project, a single site or
into organizational learning and an entire enterprise. The temporal
improvement endeavors. scope of the measurement effort
should also be considered because
the time series of some
6. Software Engineering Measurement measurements might be required
The importance of software engineering (e.g., to calibrate estimation models).
measurement for good management and (See Section 2.3, Effort, Schedule
engineering practices is widely and Cost Estimation.)
acknowledged. (See Measurement in the ● Establish the team’s commitment to
Engineering Foundations KA.) Effective measurement. The commitment
software engineering measurement has should be formally established,
become one of the cornerstones of communicated and supported by
organizational maturity. Measurement can resources.
be applied to organizations, projects,
processes and work products. This section
focuses on applying measurement at the 1
These two chapters can be downloaded free of charge
from http://www.psmsc.com/PSMBook.asp.

Software Engineering Management16© IEEE – SWEBOK Guide V4 Draft


● Commit measurement resources. An process disruption during collection;
organization’s commitment to ease of obtaining accurate, consistent
measurement is an essential factor data; and ease of analysis and
for success, as evidenced by the reporting. Internal quality
assignment of resources for characteristics (see Models and
implementing the measurement Quality Characteristics in the
process. Assigning resources Software Quality KA) are often not
includes allocation of responsibility contained in the contractually
for the various tasks of the binding software requirements.
measurement process (such as Therefore, consider measuring the
analyst and librarian). Adequate software’s internal quality to provide
funding, training, tools and support an early indicator of potential issues
to conduct the process should also be that might affect external
allocated. stakeholders.

6.2. Plan the Measurement Process [7*, c1, ● Define data collection, analysis and
c2]1 reporting procedures. This
● Characterize the organizational unit. encompasses collection procedures
The organizational unit provides the and schedules, storage, verification,
context for measurement, so the analysis, reporting and data
organizational context should be configuration management.
explicit, including the organization’s
constraints on the measurement ● Select criteria for evaluating the
process. The characterization can be information products. The
stated in terms of organizational organizational unit’s technical and
processes, application domains, business objectives influence
technology, organizational interfaces evaluation criteria. Information
and organizational structure. products include those associated
with the product produced and those
● Identify information needs. associated with the processes used to
Information needs are based on the manage and measure the project.
organizational unit’s goals,
constraints, risks, and problems and ● Provide resources for measurement
may be derived from business, tasks. The appropriate stakeholders
organizational, regulatory and/or should review and approve the
product objectives. Stakeholders measurement plan to include all data
should identify, prioritize, document, collection procedures; storage,
communicate and review these analysis, and reporting procedures;
needs. evaluation criteria; schedules; and
responsibilities. Criteria for
● Select measures. Select candidate reviewing these artifacts should be
measures, with clear links to the established at the organizational unit
information needs. Select measures level or higher and should be used as
based on the priorities of the the basis for these reviews. Such
information needs and other criteria criteria should consider experience,
such as cost of collection; degree of resource availability and potential

Software Engineering Management17© IEEE – SWEBOK Guide V4 Draft


disruptions to projects when changes procedures are typically integrated similarly
from current practices are proposed. into organizational and project processes.
Approval demonstrates commitment
to the measurement process. Collect data. Data should be collected,
verified and stored. Collection can
o Identify resources to be made sometimes be automated by using SEM
available for implementing tools (see Topic 7, Software Engineering
the planned and approved Management Tools) to analyze data and
measurement tasks. Resource develop reports. Data may be aggregated,
availability may be staged in transformed or recorded as part of the
cases where changes are analysis, using a degree of rigor appropriate
piloted before widespread to the nature of the data and the information
deployment. Consider the needs. This analysis typically produces
resources necessary for graphs, numbers or other indicators that
successful deployment of inform conclusions and recommendations to
new procedures or measures. present to stakeholders. (See Statistical
o Acquire and deploy Analysis in the Engineering Foundations
supporting technologies. This KA.) The results and conclusions are
includes evaluating available reviewed using the organization’s formal or
supporting technologies, informal process. Data providers and
selecting the most measurement users should participate in
appropriate technologies, reviewing the data to ensure it is meaningful
acquiring those technologies and accurate and can result in reasonable
and deploying those actions.
technologies.
Communicate results. Document and
communicate information products to users
6.3. Perform the Measurement Process [7*, and stakeholders.
c1, c2]
Integrate measurement procedures with 6.4. Evaluate Measurement [7*, c1, c2]
relevant software processes. The
Evaluate information products and the
measurement procedures, such as data
measurement process against specified
collection, should be integrated into the
evaluation criteria, and determine the
software processes they measure. This might
strengths and weaknesses of the information
involve changing current software processes
products or process. An internal process or
to accommodate data collection or
an external audit can be used to perform the
generation activities. It might also involve
evaluation, including feedback from
analyzing current software processes to
measurement users. Record lessons learned
minimize additional effort and evaluating
in an appropriate database.
the effect on employees to ensure
acceptance of the measurement procedures.
Identify potential improvements. Such
Consider morale issues and other human
improvements might be changes in the
factors. In addition, communicate the
format of indicators, changes in units
measurement procedures to those providing
measured or reclassification of measurement
the data. Training and support might also be
categories. Determine potential
needed. Data analysis and reporting

Software Engineering Management18© IEEE – SWEBOK Guide V4 Draft


improvements’ costs and benefits, and report Tracking tools can be used to track project
appropriate improvement actions. milestones, regularly scheduled project
status meetings, scheduled iteration cycles,
Communicate proposed improvements to the product demonstrations and action items.
measurement process owner and
stakeholders for review and approval. Also, Risk management tools. Risk management
communicate the lack of potential tools (see Section 2.5, Risk Management)
improvements if the analysis fails to identify can be used to track risk identification,
any. analysis and monitoring. These tools include
simulation or decision trees to analyze the
effect of costs versus payoffs and subjective
7. Software Engineering Management estimates of the probabilities of risk events.
Tools [3*, c5, c6, c7] For example, Monte Carlo simulation tools
SEM tools are often used to provide can be used to produce probability
visibility and control of SEM processes. distributions of effort, schedule and risk by
Some tools are automated, whereas others algorithmically combining multiple input
are manually implemented. In addition, probability distributions.
there has been a recent trend toward using
integrated suites of software engineering Communication tools. Communication tools
tools throughout a project to plan, collect can help provide timely and consistent
and record, monitor and control, and report information to relevant stakeholders
project and product information. Tools can involved in a project. Examples of such
be divided into the following categories: tools are email notifications and broadcasts
Project planning and tracking tools. Project to team members and stakeholders; regular
planning and tracking tools can be used to communications of meeting minutes; and
estimate project effort and cost and to charts showing progress, backlogs, and
prepare project schedules. For example, maintenance request resolutions.
some projects use automated estimation
tools that use a software product’s estimated Measurement tools. Measurement tools
size and other characteristics as input and support activities related to the software
then estimate the required total effort, measurement program. (See Topic 6,
schedule and cost. Planning tools also Software Engineering Measurement.) There
include automated scheduling tools that are few completely automated tools in this
analyze the WBS tasks, their estimated category. Measurement tools to gather,
durations, their precedence relationships and analyze and report project measurement data
the resources assigned to each task to may be based on spreadsheets developed by
produce a Gantt chart. project team members or organizational
employees.

Software Engineering Management19© IEEE – SWEBOK Guide V4 Draft


MATRIX OF TOPICS VS. REFERENCE MATERIAL

Sommerville Boehm and McGarry et al.


Fairley 2009
2011 [4*] Turner 2003 2001
[3*]
[5*] [7*]
1. Initiation and Scope Definition
1.1. Determination and Negotiation of
c3
Requirements
1.2. Feasibility Analysis c4
1.3. Process for the Review and Revision of
c3
Requirements
2. Software Project Planning
2.1. Process Planning c2, c3, c4, c5 c1
2.2. Determine Deliverables c4, c5, c6
2.3. Effort, Schedule and Cost Estimation c6
2.4. Resource Allocation c5, c10, c11
2.5. Risk Management c9 c5
2.6. Quality Management c4 c24

2.7. Plan Management c4


3. Software Project Enactment
3.1. Implementation of Plans c2
3.2. Software Acquisition and Supplier
c3, c4
Contract Management
3.3. Implementation of Measurement
c7
Process
3.4. Monitor Process c8
3.5. Control Process c7, c8
3.6. Reporting c11
4. Review and Evaluation
4.1. Determining Satisfaction of
Requirements
4.2. Reviewing and Evaluating Performance c8, c10
5. Closure
5.1. Determining Closure
5.2. Closure Activities
6. Software Engineering Measurement
6.1. Establish and Sustain Measurement
c1, c2
Commitment
6.2. Plan the Measurement Process c1, c2
6.3. Perform the Measurement Process c1, c2
6.4. Evaluate Measurement c1, c2
7. Software Engineering Management
c5, c6, c7
Tools

Software Engineering Management20© IEEE – SWEBOK Guide V4 Draft


inspection results and testing metrics to
FURTHER READING
monitor project status.
A Guide to the Project Management Body of
Knowledge (PMBOK® Guide) [1].
REFERENCES
The PMBOK® Guide provides guidelines for
managing individual projects and defines
project management-related concepts. It also [1] Project Management Institute, A
describes the project management life cycle Guide to the Project Management
and its related processes, and the project life Body of Knowledge (PMBOK®
cycle. It is a globally recognized guide for Guide), 6th ed., Newton Square, PA:
the project management profession. Project Management Institute, 2017.
Software Extension to the Project [2] Software Extension to the Project
Management Body of Knowledge Management Body of Knowledge
(PMBOK®) Guide [2]. (PMBOK® Guide), Fifth Edition,
Project Management Institute, 2013.
SWX provides adaptations of and extensions
[3*] R. E. Fairley, Managing and Leading
to the generic practices of project
Software Projects. Hoboken, NJ:
management documented in the PMBOK®
Wiley IEEE Computer Society Press,
Guide for managing software projects. The
2009.
primary contribution of this extension to the
PMBOK® Guide is a description of [4*] I. Sommerville, Software
processes for managing adaptive life cycle Engineering, 10th ed., New York:
software projects. Addison-Wesley, 2015.
[5*] B. Boehm and R. Turner, Balancing
Agility and Discipline: A Guide for
IEEE Standard Adoption of ISO/IEC 15939 the Perplexed. Boston: Addison-
[6]. Wesley, 2003.
This international standard identifies a [6] IEEE, IEEE Standard Adoption of
process that supports defining suitable ISO/IEC 15939: 2007 Systems and
measures to address specific information Software Engineering Measurement
needs. It identifies the activities and tasks Process, ed: IEEE, 2017.
necessary to successfully identify, define, [7*] J. McGarry, et al., Practical
select, apply and improve measurement Software Measurement: Objective
within an overall project or organizational Information for Decision Makers,
measurement structure. Addison-Wesley Professional, 2001.
J. McDonald, Managing the Development of
Software Intensive Systems, Wiley, 2010 [8]. [8] J. McDonald, Managing the
This textbook introduces project Development of Software-Intensive
management for beginning software and Systems. Hoboken, NJ: John Wiley
hardware developers, plus unique advanced and Sons, Inc., 2010.
material for experienced project managers. [9] Practical Software and Systems
Case studies are included for planning and Measurement Continuous Iterative
managing verification and validation for Development Measurement Framework
large software projects and complex Parts 1-3: Concepts, Definitions, Principles,
software and hardware systems, as well as and Measures, Version 2.1, April 15, 2021.

Software Engineering Management21© IEEE – SWEBOK Guide V4 Draft


[10] Dr. Sarah Sheard, Mickael Bouyaud, Macaulay Osaisai, Jeannine Siviy, and Dr. Ken Nidiffer. “Book Club”
[11] Dr. Kenneth E. Nidiffer, Dr. Carol
Woody, Timothy A. Chick, Program
Manager’s Guidebook for Software
Assurance, Special Report, CMU/SEI-2018-
SR-025, Software Solutions and CERT
Divisions, Software Engineering
Institute/Carnegie Mellon University,
August 2018.
[12] Dr. R. E. Fairley, Systems
Engineering of Software-Enabled Systems,
ISBN 978-1-119-53501-0, 2019.

[13] Defense Innovation Board, Software Is


Never Done: Refactoring the Acquisition
Code for Competitive Advantage Defense,
v3.3, March 12, 2019.

[14] “DevOps: Building Reliable and Secure


Systems Including Application Build,
Package, and Deployment,” IEEE Standard,
2675-2021, 2021.

[15] Murali Chemuturi and Thomas Cagley,


Mastering Software Project Management:
Best Practices, Tools and Techniques, J.
Ross Publishing, July 2010.

Software Engineering Management22© IEEE – SWEBOK Guide V4 Draft


CHAPTER 10
SOFTWARE ENGINEERING PROCESS
ABBREVIATIONS SLCP Software life cycle process
BPMN Business Process Modeling UML Unified Modeling Language
Notation
CASE Computer-aided software
engineering
INTRODUCTION
CMM Capability Maturity Model
This chapter considers the software
CMMI Capability Maturity Model
engineering process from several
Integration
perspectives: concepts, life cycles, and
GQM Goal-question-metric software engineering process assessment. The
IDEF0 Integration definition software engineering community has been
very active concerning the standardization of
KA Knowledge Area many of the aspects of the software
PDCA Plan-Do-Check-Act engineering process.
SLCM Software life cycle model BREAKDOWN OF TOPICS FOR THE SOFTWARE
ENGINEERING PROCESS KA

Figure 1. Breakdown of Topics for the Software Engineering Process KA

Software Engineering Process 8–1


© IEEE – SWEBOK Guide V4
The concept of a project emerges as an
1. Software Engineering Process “endeavor with defined start and finish
Fundamentals criteria undertaken to create a product or
service in accordance with specified resources
1.1 Introduction
and requirements” [1] or a “temporary
Software engineering processes involve work endeavor undertaken to create a unique
activities software engineers conduct to build product, service, or result” [13]. It is a concept
and operate software. When the discipline of of the management discipline linked to clear
software engineering emerged, scientists, objectives and bound by a limited time frame,
engineers and technicians had to look at as discussed in Knowledge Area (KA) 9,
existing disciplines to understand the scope of Software Engineering Management. Software
the software engineering process. An engineering processes are usually performed
engineering process consists of a set of in the context of projects.
interrelated activities that transform one or
Many of the processes of the more
more inputs into outputs while consuming
conventional engineering disciplines (e.g.,
resources to accomplish the transformation.
electrical or chemical) include design and
As part of engineering, software engineering
manufacturing, where manufacturing
uses processes similar to those of other types
produces multiple units of a system (e.g., a
of engineering. As engineers create devices or
chemical reactor). This is not the case for
other products, they progress through various
software systems, though manufacturing is
steps, expending significant design effort,
useful to describe the need to build the many
relying on a vast trove of knowledge as they do
software units that comprise a software
so, at the time that they gain knowledge, i.e.
system. In electrical or chemical engineering,
learn, about the process they are performing
the operation of the engineering systems
and the product they are creating.
transforms (raw) materials, energy and
Beginning in the 1960s and continuing in the physical entities into other forms of material
1970s, engineering design and manufacturing or energy. For the software engineering
provided a baseline — a foundation — for discipline, an analogy for this operation could
what would later become a new discipline. In be the execution of a software unit (the output
those years, it was agreed that the process of from a software engineering set of processes)
building software would be decomposed into that transforms one kind of data into another.
processes that could include design and
In the rest of the section, the term process will
manufacturing, and later, operations. Some of
denote work activities, not the execution of
the processes needed to construct software
software.
systems fit into the design class, and others fit
into the manufacturing class. Today, the The Software Engineering Process KA is
software engineering community is still closely related to this Software Engineering
learning and, therefore, still improving the Process KA, and it includes Software
software engineering process. Currently, a Engineering Management, Software
wide consensus exists concerning that Engineering Models and Methods, Software
building software systems requires lots of Quality, Software Architecture, and Software
design and learning effort focused on the Testing. The Measurement and Root Cause
product under construction, and on the Analysis in the Engineering Foundations KA is
process. also closely related.

where activity is a “set of cohesive tasks of a


1.2 Software Engineering Process Definition process,” and a task is a “required,
A process is a “set of interrelated or interacting recommended, or permissible action,
activities that transforms inputs into outputs”, intended to contribute to the achievement of

Software Engineering Process 8–2


© IEEE – SWEBOK Guide V4
one or more outcomes of a process”[1]. generated. These definitions address any
According to [2], a process is a “predetermined processes that are applied to the software part
course of events defined by its purpose or by of software systems. Software systems also
its effect, achieved under given conditions.” A include hardware, and they also involve
third definition, following [7], is a “system of people and manual procedures. The output of
activities, which use resources to transform one process can be an input to another
inputs into outputs.” And a fourth one is a “set process. Processes may include controls (e.g.
of interrelated or interacting activities which directives and constraints) and enabling
transforms inputs into outputs to deliver an mechanisms (e.g. tools, technologies or
intended result” [20]. That is, the description resources such as workforce and
of a process includes required inputs, infrastructure) associated with the processes
transforming activities, and the outputs [14].
definition is not specific to software systems
2. Life Cycles1
but applies to all products more generally.
2.1. Life cycle definition, process categories Likewise, the life cycle concept, which is linked
and terminology to the product concept, is not specific to
software engineering.
A life cycle, according to [1], is the “evolution
of a system, product, service, project or other Software systems contain software units that
human-made entity from conception through are an “atomic-level software component of
retirement.” In software engineering, life the software architecture that can be
cycles help convey information about software subjected to stand-alone testing.” (See the
systems, the “system[s] for which software is Testing KA.) The life cycle of a software system
of primary importance to the stakeholders” (and keep in mind that software engineering
[1]. The concept of life cycles was put in place uses an interdisciplinary approach) comprises
because simply identifying and defining the all the processes, activities and tasks from the
processes required to produce software did ideation of the software system to the
not adequately describe all the complexity of retirement of the system, including
software systems. It was also necessary to production, operation and evolution, as well as
define life cycles, which include a number of acquisition, when needed, and supply.
processes and constraints [8]. Likewise, we can look at the life cycle of an
element of a software system (a software
In software engineering, development refers to unit). A software system life cycle will
a crucial stage of a system, product, service or consider both the business and the technical
project life cycle: that of building (or changing) needs of the stakeholders and the system’s
a software system according to the ability to produce, as the outcome of the
stakeholders’ needs. From a different software life cycle processes (SLCPs)
production/industrial management performed by a team, a product that meets the
perspective, software systems are referred to stakeholders’ needs, with the required quality
as products. In this context, the term software level for its users and for all the different
product development lifecycle makes sense. stakeholders.
Product life cycle can be defined as the “series The following paragraphs enumerate the
of phases that represent the evolution of a process categories, as enumerated in [1].
product, from concept through delivery, These process categories reflect the multiple
growth, maturity, to retirement” [13]. This perspectives involved in producing a software

1 Lifecycle, life-cycle and life cycle are different


spellings. Merriam-Webster prefers the spelling
“life cycle”.

Software Engineering Process 8–3


© IEEE – SWEBOK Guide V4
system: (1) technical processes including
engineering practices to build, make, evolve, b) Project assessment and control
operate and retire software products; (2) process
technical management processes that cover
planning and control, as well as configuration c) Decision management process
management, risk management, information
management and quality assurance; (3) d) Risk management process
organizational project-enabling processes e) Configuration management process
that support life cycle model and
infrastructure management, portfolio f) Information management process
management, and human resources,
knowledge and quality management; and g) Measurement process
finally (4) agreement processes, which are h) Quality assurance process
essential to support collective decision-
2) Organizational project-enabling
making, as well as acquisition and supply
processes
processes.
A breakdown of these processes is as follows: a) Life cycle model management
process
1) Technical processes
b) Infrastructure management
a) Business or mission analysis
process
process
c) Portfolio management process
b) Stakeholder needs and
requirements definition process
d) Human resource management
process
c) System/software requirements
definition process
e) Quality management process
d) Architecture definition process
e) Design definition process
f) Knowledge management process
f) System analysis process
3) Agreement processes as well as
g) Implementation process acquisition and supply processes

h) Integration process
i) Verification process
j) Transition process
2.2. Rationale for life cycles
k) Validation process
Creating, operating and retiring software
l) Operation process products require a number of processes, with
m) Maintenance process their activities and tasks, and a number of
constraints. As noted above, software systems
involve people and manual procedures, as well
n) Disposal process as software and hardware. Defining software
processes, following [12], requires specifying
Technical management processes inputs and outputs. Inputs from processes are,
very often, outputs from other processes.
a) Project planning process Therefore, life cycle processes are interrelated

Software Engineering Process 8–4


© IEEE – SWEBOK Guide V4
processes; that is, each individual process (its consider all these needs. As explained in
inputs and outputs) may depend on other Section 2.3, a software life cycle will be defined
processes. The interrelated nature of the in conformance with (partially or fully
processes involved make the overall software conforming to) an SLCM. Some authors use the
engineering process highly complex. term “development” to refer to SLCM, e.g.
“iterative development” instead of “iterative
The specification of life cycles is a powerful
(software) life cycle model”. Types of life
tool for implementing an engineering
cycles are described below.
approach to the creation, operation and
retirement of software systems. A life cycle Predictive life cycles are “a form of project life
should be defined following engineering cycle in which the project scope, time, and cost
principles that guide engineering as a are determined in the early phase of the life
discipline [8]. The specification of a life cycle cycle” [13]. Predictive life cycles assume that
includes the specification of every process and the set of requirements that will be
the associated constraints. The process implemented is a closed set that will not
specification should be useful to humans so undergo substantive change unless a force
that they can communicate with one another majeure occurs.
using this specification. The specification
An iterative life cycle is “a project life cycle
should be easy to understand and correct
where the project scope is generally
because life cycle specifications are the basis
determined early in the project life cycle, but
for technical and engineering management,
time and cost estimates are routinely modified
including coordination and agreement,
as the project team understanding of the
measurement, assessment and improvement,
product increases. Iterations develop the
and quality management.
product through a series of repeated cycles,
while increments successively add to the
functionality of the product” [3, 8, 13]. The
2.3. The concepts of process models and life iterations duration is defined for each project.
cycle models The method chosen (see KA 11) would
Section 2.1 provides a number of software life prescribe the role and size of iterations.
cycle definitions. In reference [2], a new In an evolutionary life cycle, a product or
definition introduces the concept of a standard service changes over its lifetime. It may
as a commonly accepted guiding document, happen because requirements and customer
stating that a “project‐specific sequence of needs change, but it also may happen because
activities … is created by mapping the requirements are introduced into the product
activities of a standard onto a selected in successive steps and not as a complete and
software life cycle model (SLCM).” That is, a atomic set [3, 8]. “Successive steps” is a
life cycle is created in conformance with the synonym for “iterations.”
life cycle model.
An incremental life cycle is “an adaptive
Examples of well-known life cycle models for project life cycle in which the deliverable is
product development are, among others, the produced through a series of iterations that
waterfall model, the V-model, the incremental successively add functionality within a
model, the spiral model and the Agile model predetermined time frame. The deliverable
[2,3, 10]. contains the necessary and sufficient
capability to be considered complete only
2.4. Some paradigms for development life
after the final iteration” [3, 8, 13]. Incremental
cycle models
life cycles are not always predictive, but they
Each software system has its own features can be. Incremental development is a “software
reflecting the stakeholders’ needs, both development technique in which requirements
business and technical. A suitable life cycle will definition, design, implementation, and testing

Software Engineering Process 8–5


© IEEE – SWEBOK Guide V4
occur in an overlapping, iterative (rather than address the so-called software crisis [3]. The
sequential) manner, resulting in incremental waterfall model is document-driven.
completion of the overall software product” [2]. Reference [2] defines the waterfall model as
Continuous development refers to software the “model of the software development
engineering practices that allow for frequent process in which the constituent activities,
releases of new systems (including software) typically a concept phase, requirements phase,
to staging or various test environments design phase, implementation phase, test
through the use of automated tools [8, 9, 11]. phase, and installation and checkout phase,
are performed in that order, possibly with
A life cycle can enforce a rule that the overlap but with little or no iteration.”
requirements specifications cannot be changed
once the requirements process has been finalized The waterfall model is clearly an example of a
and the customer has agreed to the specifications. predictive life cycle. Some other paradigms,
This happens, for example, in predictive life such as the incremental life cycle, also
cycles. On the other hand, when the life cycle attempted to address the “software crisis.” In
does not preclude changes in the requirements this model (see Section 2.4), different phases
specifications, even after the customer has agreed occur in an overlapping rather than sequential
to them and signed off on them, and in practice, manner. An incremental life cycle can also be a
allows them to change at any point [upon predictive life cycle. This would mean that the
negotiation of interested parts], then the life cycle requirements are defined and closed before
is said to be open to change. Being open to any other development phase is started. The
change is one of the claims of Agile development spiral model, introduced by Boehm, is
[9, 10]. evolutionary and risk-driven, as opposed to
document- or code-driven [3]. Reference [2]
defines the spiral model as a “model of the
2.5. Development life cycle models and their software development process in which the
engineering dimension constituent activities, typically requirements
analysis, preliminary and detailed design,
Several life cycle models have become well coding, integration, and testing, are performed
known with the development of software iteratively until the software is complete.”
engineering since its inception. One model, Another popular model is rapid prototyping, a
which became popular early in the history of “type of prototyping in which emphasis is
the discipline, is the waterfall model [3], that placed on developing prototypes early in the
falls into the category of predictive, described development process to permit early feedback
previously. The waterfall model approach for and analysis in support of the development
product development uses a number of process”[2].
phases, including requirements, preliminary
design, detailed design, coding and testing. It The Agile Manifesto [16] effected a disruption
implements a very strict process, in which one in the software engineering community by
phase cannot be started until the previous one creating an abrupt change of mindset. The
is finished. The waterfall model was useful difference was that Agile Manifesto
because it introduced a systematization in the signatories claimed that the process should be
development of software systems and, open to change — requirements could be
therefore, what could be referred to as an modified at any stage of the development
engineering approach to software product process if users’ needs changed.
development. Many variants or extensions, Communication and mutual trust between
such as the V-model [3], with many different team/customer were essential. Signatories
names and nuances, have been introduced in claimed that team communication, often face-
the history of software engineering. The to-face, and communication with the customer
waterfall model was an early attempt to were key. Nevertheless, the Agile Manifesto
does not say that documents (e.g. to define

Software Engineering Process 8–6


© IEEE – SWEBOK Guide V4
requirements) are not needed, documents are process, and the terms business agility and
needed [9, 10]. Signatories also advocated for Agile organizations are now very common
small software incremental deliveries, as [19]. From a software engineering point of
opposed to projects that applied the waterfall view, Agile created an opportunity for the
model with a single software delivery at the industry to achieve a reengineering and a
end of the project after months or years of better alignment of software engineering
working. Agile makes a clear distinction processes and business strategic processes in
between, on the one side, values and organizations. The use of an Agile approach by
principles (e.g., always delivering value to the business processes is a common scenario; this
customer or a commitment to technical is reflected in the principles of DevOps [11],
excellence) and, on the other, practices (peer for example, explained later in this section,
programming, sprint planning or and process assessment and improvement in
retrospective). The Agile mindset [10] is Section 3.
different from the predictive mindset. The
The need to provide more frequent releases,
Agile mindset is based on a number of values
the fact that users’ needs and technological life
and principles (e.g., the importance of
cycles change more frequently, together with
communication, being open to change or
the required alignment of the organizations’
commitment to technical excellence and
strategic plans with the organizations’ IT
always delivering value to the customer); this
operations, has led to the creation of DevOps,
focus differentiates Agile from the predictive
defined as a “set of principles and practices
mindset, which is more focused on committing
which enable better communication and
to the implementation of the requirements
collaboration between relevant stakeholders
specifications. Agile helps address complexity
for the purpose of specifying, developing, and
[8, 10].
operating software and systems products and
Several misconceptions arose around Agile, services, and continuous improvements in all
and some still remain. One is that Agile is a aspects of the life cycle” [11]. The ability to
method in itself, which it is not. Another is that provide more releases more frequently, once
Agile is “faster” than waterfall because you adequate process management has been
need not produce any document. A third one is defined, has become an advantage that makes
that Agile has a limited or unstructured set of companies more competitive.
methods/practices; a chart that enumerates
In the history of software engineering, there
several commonly used Agile methods and
has been a lot of controversy over software life
practices can be found, for example, in [18].
cycle models — for example, as seen in debate
Several Agile methods became popular, like
over the merits of the waterfall model versus
Extreme Programming for product
the Agile model of software development (See
development, Scrum for project management
Section 2). This controversy should be
and others. Even considering the ever rising
understood from a historical perspective; new
popularity of the Agile life cycle model to
approaches have been disruptive or
address complex projects, scaling up Agile for
considered disruptive, and there has been a
large projects and portfolios is still
lack of empirical measures to support
challenging. The perception today is that the
evidence-based discussions about software
Agile Manifesto meant a significant disruption;
engineering. This situation has been changing
nevertheless, it is already 20 years old, and
slowly but steadily. Using empirical measures
some authors think that some of its principles
as the basis for making decisions is an
might need be updated, informed by the
essential element of software engineering [4,
experience developers have obtained in the
8]. See also KA 9, Software Engineering
past 20 years [17].
Management., and KA 12, Software Quality.
The application of Agile practices has
transcended the software engineering

Software Engineering Process 8–7


© IEEE – SWEBOK Guide V4
2.6. The management of SLCPs Several management levels govern the
software engineering process, as explained in
reference [1], see also KA 9, Software
The life cycle for any software system contains Engineering Management. The lowest level is
a number of stages. According to [14], these the technical processes engineering
stages are the following: management; the second is the technical
1) Concept: At this stage, stakeholders’ management level, which is represented by
needs will be identified, concepts will the technical processes level and will include
be explored, and solutions will be project management processes. The third level
proposed. is the (executive) management level, focused
on organizational enabling processes, such as
2) Development: At this stage, knowledge management, life cycle model
requirements representing the users’ management, or portfolio management.
needs will be refined, solutions will be
created, systems built, and all undergo 2.8. Software life cycle adaptation
the needed verification and validation Each software system has its differential
processes. characteristics. These differential
3) Production: This stage will have a characteristics, together with the
different scope depending on the stakeholders’ needs, lead to specific life cycles.
characteristics of the software system This adaptation will include identifying all the
under focus. Generally speaking, it will relevant characteristics, selecting the
include the production and testing of appropriate standards or documents internal
the system. to an organization, selecting a development
strategy/life cycle model, stages, and
4) Utilization: At this stage, the system
processes, and documenting the decisions and
operates to satisfy users’ needs.
rationale. The adaptation will not require
5) Support: At this stage, developers keeping the names provided in Section 2, or
provide the required actions to including them all [5, 14, 23].
achieve a satisfactory operation.
2.9. Practical considerations
6) Retirement: At this stage, the team
follows established procedures to Defining a life cycle process includes the
dispose of the system. specification of the four categories presented
in Section 2. This means addressing technical
processes (definition of the processes that will
The stages are not supposed to be sequential, be required), organizational processes (this
by any means. Actually, the specification of the includes human resources, among other
life cycle for a software system will include the processes), technical management processes
transitions between these stages. It should be (how processes are related, how they are
clear that these stages have been identified for monitored and managed), and agreement
a general life cycle. Specific life cycles will have processes.
specific stages, meaningful to a particular The discipline of software engineering has
project’s stakeholders; these stages will fit into been evolving since its conception for several
these general stages. reasons. The community has never stopped
learning, while the complexity of the products
2.7. Software engineering process
has been ever-increasing. Defining a software
management
life cycle for the development of a product
Process management is defined as “direction, requires considering the characteristics of the
control, and coordination of work performed product (e.g., stakeholders’ needs, product
to develop a product or perform a service” [2]. size or complexity) and others external to the

Software Engineering Process 8–8


© IEEE – SWEBOK Guide V4
product, such as the stakeholders’ nets, and Unified Modeling Language (UML)
characteristics. Something that the activity diagrams, and Business Process
community has learned is that estimations and Modeling Notation (BPMN) [2, 3]. Software
measurements are essential. Wrong or process infrastructure includes tools to
uncertain estimations in the context of a life support the definition of these processes (e.g.,
cycle will lead to failure. Accurate estimations a BPMN toolkit) but mainly to support all
are not easy to produce. specific processes (testing or configuration
management). Process definitions will often
A current trend in software engineering is a
include methods and formalism (e.g., Rational
focus on continuous delivery, supported by
Unified Process or extreme programming) [3].
realistic process and product estimations and
Tools will, ideally, have to support these
measurements. A helpful lesson engineers
methods and, as important, be integrated with
have learned is that working with large
them. Therefore, it is not enough that a tool
processes without producing any deliverables
supports testing. Once a code unit has been
along the way increases uncertainty. (See
successfully tested, for example, this becomes
DevOps in Section 2.5.) The Agile mindset has
useful information that should be recorded so
contributed to this and has helped engineers
that the rest of the team can be aware of this
recognize the importance of communication in
fact. This means that the configuration
the process.
management tool and the testing tool will have
When a project process is defined in to be integrated [3, 8]. The term software
conformity with a life cycle, it is important to engineering environment, representing a set of
make sure that it will be possible to have integrated tools, is sometimes used. The term
metrics/measure definitions that will result in CASE (computer-aided software engineering)
realistic process (and product) estimations was popular in the 1980s and 1990s.
and measurements throughout project Somehow, the power tools of the 1980s and
definition and execution, and to define the 1990s were oversold as a cure for the software
level of precision and uncertainty; project crisis. In any case, today, the automation of
process (and product) measurements should some processes (e.g., configuration
always provide accurate information about management, or at least version control;
what is happening (the status of the process testing; ticket management) is seen as
and the product) while the life cycle process is essential for the implementation of successful
executed. If we are uncertain about the life cycles. You can also read KA 11, Software
accuracy of estimations and measurements, Engineering Models and Methods.
the project might not be successful. In this
case, a reflection should take place on the 2.11. Software engineering process
overall approach. Historically, a lot of polemics monitoring and its relationship with the
have grown about the predictive life cycle software product
versus the Agile life cycle. In software
engineering, discussions should always be Developers must monitor the software
supported by realistic process and product engineering process execution, assess
estimations and measurements, which can whether the process objectives are met, and
accurately reduce the level of uncertainty. assess risks. This process monitoring is part of
software engineering process assessment (see
2.10. Software process infrastructure, tools, Section 3) and part of the Software
methods Engineering Management KA [1, 3, 4, 8].
Several notations have been used for defining
Empirical methods support process
software processes, including natural
assessment and improvement as well as
language, specifying textual lists of constituent
product assessment and improvement. The
activities and tasks, data-flow diagrams, state
goal of process execution is to obtain products
charts, integration definition (IDEF0), Petri

Software Engineering Process 8–9


© IEEE – SWEBOK Guide V4
that meet stakeholders’ needs. While this area The ISO/IEC 33000 framework includes a
is focused on the software engineering process reference framework and a process
process, process monitoring requires assessment model. The ISO/IEC 33000
assessing both process and product, using a framework revises the ISO/IEC 15504 series
joint, more holistic approach. of International Standards, providing a
framework for the assessment of (1) the
3. Software Process Assessment and process quality characteristics, one of which is
Improvement process capability, together with (2)
organizational maturity. This framework
3.1. Overview of software process assessment covers processes for the development,
and improvement maintenance and use of systems across the
information technology domain, as well as
The idea that any executed process can be processes for the design, transition, delivery
improved was present in the classic Shewhart- and improvement of services. The concept of
Deming Plan-Do-Check-Act (PDCA) paradigm seeking continuous improvement underlies
[15, 24], which was already being discussed the assessment.
and applied in the 1950s, and its foundations
can be found centuries earlier. For the This series has developed several groups of
software engineering process, several standards addressing, as well as core
approaches have been developed. elements, basic requirements for performing
process assessments, process models and the
The PDCA paradigm is an opportunity to meet process measurement framework; guidance
a widely recognized need — the need for on how to perform assessments;
empirical evidence to make decisions. Such measurement frameworks for the assessment
decisions include choosing a life cycle, of process capability and organizational
deciding how to assess a process or deciding maturity; process reference models for special
how to improve a process, among others. cases such as safety or high maturity; process
Getting empirical evidence across the assessment models for SLCPs, system life cycle
execution of a software engineering process is process IT service management, safety and
essential for the success of the process high maturity; and organizational maturity
execution. models.

The process reference model is defined as a


“model comprising definitions of processes in
3.2. Goal-question-metric (GQM) a domain of application described in terms of
process purpose and outcomes, together with
The GQM approach [21] is based on Basili’s an architecture describing the relationships
Quality Improvement Paradigm. Both are between the processes.” The process
based on setting goals that can be measured, assessment model is defined as a “model
changing something, and then evaluating the suitable for the purpose of assessing a
effect of the change. When the evaluation is specified process quality characteristic, based
positive, an improvement has occurred. on one or more process reference models.”
3.3 Framework-based methods 3.4. Process assessment and improvement in
Some assessment methods are based on Agile
frameworks that use a process reference
model and an assessment reference model — Agile methods (e.g., the scrum project
for example, CMM (Capability Maturity management method) introduce what they
Model), CMMI [4, 22], and the ISO/IEC 33000 call retrospectives at the end of each iteration.
[4, 6] series, also known as SPICE. The objective of the retrospective is to analyze

Software Engineering Process 8–10


© IEEE – SWEBOK Guide V4
what went well and what did not go well, to end, the team is in a continuous learning loop
understand why, and to set a number of [9].
actions for learning and improvement. In the

Software Engineering Process 8–11


© IEEE – SWEBOK Guide V4
MATRIX OF TOPICS VS. REFERENCE MATERIAL

ISO/IEC/I Sommervi Laport et Farley Shore et PMI [10*] Others


EEE 12207 lle [3*] al.[4*] [8*] al [9*]
[1*]

Software c5 c2 c1
Engineering
Process
Fundamenta
ls

Introduction [13]
Software
Engineering [2] [7][14]
c5 c2
Process [20]
Definition
Life Cycles c 5-6 c2-3 c1-3
Life cycle
definition,
process
c5-6 c2 c1-3 [13]
categories
and
terminology
Rationale for
c2-3 [12]
life cycles
The concept
of process
models and c2 c2 [2]
life cycles
models
]Some
paradigms for
development c2-3 c2-3 c1 c1 [2] [13]
life cycle
models
Development
life cycle [2] [11] [16]
models and c2 c2-3 c1 c1 [17] [18]
their [19]
engineering
dimension
The
management [14]
of SLCPs
Software
engineering c5 [2]
process
management
Software life
cycle [5] [14] [23]
adaptation
Practical
consideration c2 c2-3 [2]
s
Software
process
infrastructure, c2 c2-3 [2]
tools,
methods
Software
engineering c5-6 c2 c4-10 c2-3
process
monitoring

Software Engineering Process 8–12


© IEEE – SWEBOK Guide V4
and its
relationship
with the
software
product
Software
Process
Assessment c4-10
and
Improvemen
t
Overview of
software
process c4 [15] [24]
assessment
and
improvement
Goal-question
metric [21]
(GQM)
Framework-
based c4-10 [6] [22]
methods
Process
Assessment
and c11
improvement
in Agile

Software Engineering Process 8–13


© IEEE – SWEBOK Guide V4
[14] ISO/IEC/IEEE 24748-1:2018(E)
Systems and software engineering — Life cycle
REFERENCES management — Part 1: Guidelines for life cycle
management.
[1] ISO/IEC/IEEE 12207 Systems and [15] Shewhart, W. A., Deming, W. E. .
software engineering — Software life cycle Statistical Method from the Viewpoint of Quality
processes. Control. Dover, New York. (1986)
[2] ISO/IEC/IEEE 24765 Systems and [16] “The Agile Manifesto.”
software engineering — Vocabulary. https://agilemanifesto.org. [Accessed March 5,
2022].
[3] Ian Sommerville, Software Engineering.
10th ed. 2016. [17] Steve McConnell. More Effective Agile:
[4] C. Y. Laporte, A. April, Software A Roadmap for Software Leaders. 2019.
Quality Assurance, IEEE Computer [18] “Subway Map to Agile Practices.” Agile
Society Press, 1st ed., 2018. Alliance.
[5] Project Management Institute, https://www.agilealliance.org/agile101/subway-
Software Extension to the PMBOK® map-to-agile-practices/. [Accessed March 5,
Guide — Fifth Edition, 2013. 2022].
[6] ISO/IEC 33001:2015 Information [19] Jutta Eckstein, John Buck. Company-wide
technology — Process assessment — Agility with Beyond Budgeting, Open Space &
Concepts and terminology. Sociocracy: Survive & Thrive on Disruption.
[7] ISO/IEC 25000:2014 Systems and 2021.
software engineering — Systems and software [20] ISO/IEC TR 29110-5-3:2018 Systems and
product quality requirements and evaluation software engineering — Lifecycle profiles for
(SQuaRE) — Guide to SQuaRE. very small entities (VSEs) — Part 5-3: Service
[8] David Farley, Modern Software delivery guidelines.
Engineering: Doing What Works to Build [21] Norman Fenton, James Bieman. Software
Better Software Faster. Addison-Wesley Metrics, 3rd ed. CRC Press, 2014.
Professional, December 2021.
[22] CMMI Institute — CMMI V2.0.
[9] James Shore, Shane Warden, The Art of https://cmmiinstitute.com/cmmi.[Accessed
Agile Development, O’Reilly Media, 2nd ed. March 5, 2022].
October 2021.
[23] ISO/IEC/IEEE 24748-3:2020. Part 3:
[10] Project Management Institute, Agile Guidelines for the application of ISO/ IEC/IEEE
Practice Guide. Project Management Institute 12207 (software life cycle processes)
and Agile Alliance. September 2017.
[24] D.R. Kiran. Total Quality management.
[11] IEEE 2675-2021 IEEE standard for Elsevier , 2017
DevOps: Building reliable and secure systems,
including application build, package, and
deployment.
[12] ISO/IEC/IEEE 24774:2021 Systems and
software engineering — Life cycle management
— Specification for process description.
[13] Project management Institute, A Guide to
the Project Management Body of Knowledge
(PMBOK® Guide) — Sixth Edition.

Software Engineering Process 8–14


© IEEE – SWEBOK Guide V4
CHAPTER 11
SOFTWARE ENGINEERING MODELS AND METHODS
ACRONYMS software life cycle phases, since other KAs
cover methods specific to single life cycle
3GL 3rd Generation Language phases .
BNF Backus-Naur Form BREAKDOWN OF TOPICS FOR SOFTWARE
ENGINEERING MODELS AND METHODS
Feature-Driven
FDD
Development This chapter on software engineering models
and methods is divided into four main topic
Integrated Development
IDE areas:
Environment
● Modeling discusses the general
PBI Product Backlog Item practice of modeling and presents topics
Rapid Application in modeling principles; properties and
RAD expression of models; modeling syntax,
Development
semantics and pragmatics; and
UML Unified Modeling Language preconditions, postconditions and
invariants.
XP eXtreme Programming
● Types of Models briefly discusses
models and aggregation of submodels
INTRODUCTION and provides general characteristics of
model types commonly found in the
Software engineering models and methods software engineering practice.
impose structure on software engineering
to make it systematic, repeatable and ● Analysis of Models presents
ultimately more success-oriented. Models common analysis techniques used in
provide an approach to problem- solving, modeling to verify completeness,
a notation and procedures for model consistency, correctness, traceability
construction and analysis. Methods provide and interaction.
an approach to the systematic specification, ● Software Engineering Methods
design, construction, testing and presents a summary of commonly used
verification of the end-item software and software engineering methods. The
associated work products. discussion guides the reader through a
Software engineering models and methods summary of heuristic methods, formal
vary widely in scope — from addressing a methods, prototyping and A gile
single software life cycle phase to covering methods.
the complete software life cycle. This The breakdown of topics for the Software
knowledge area (KA) focuses on Engineering Models and Methods KA is
models and methods that encompass multiple shown in Figure 1.

Software Engineering Models and Methods 9–1


© IEEE – SWEBOK Guide V3
Figure 1. Breakdown of Topics for the Software Engineering Models and Methods KA

1. Modeling Although there are many modeling


Modeling of software is becoming a languages, notations, techniques and tools
pervasive technique to help software in the literature and in practice, some
engineers understand, engineer and general, unifying concepts apply to
communicate aspects of the software to them all. The following sections provide
appropriate stakeholders. Stakeholders are background on these general concepts.
those people or parties with a stated or 1.1. Modeling Principles [1*, c2s2, c5s1,
implied interest in the software (e.g., users, c5s2, 2*, c2s2, 3*, c5s0]
buyers, suppliers, architects, certifying
authorities, evaluators, developers, software Modeling provides the software engineer
engineers ). with an organized and systematic approach
for representing significant aspects of the

Software Engineering Models and Methods 9–2


© IEEE – SWEBOK Guide V3
software under study, facilitating decision- which, when taken together, describe
making about the software or elements, and selected aspects, perspectives or views —
communicating those significant decisions to only those that are needed to make informed
others in the stakeholder communities. Three decisions and respond to the reasons for
general principles guide such modeling creating the model in the first place. This
activities: simplification points to assumptions
about the context within which the model is
● Model the essentials: Good models do not
placed that should also be captured in the
usually represent every aspect or feature
model. Then, when the model is reused,
of the software under every possible
these assumptions can be validated first to
condition. Modeling typically involves
establish the relevancy of the reused model
only those aspects or features that
within its new use and context.
pose specific questions, abstracting
away any nonessential information. This 1.2. Properties and Expression of Models
approach keeps models manageable and [1*, c5s2, c5s3, 3*, c4s1.1p7, c4s6p3,
useful. c5s0p3]
● Provide perspective: Modeling provides Properties of models are those distinguishing
views of the software under study using features of a particular model that
defined rules for expressing the characterize its completeness, consistency
model within each view. This and correctness within the chosen modeling
perspective-driven approach provides notation and tooling . Properties of models
dimensionality to the model (e.g., include the following:
providing a structural view, a behavioral
view, a temporal view, an organizational ● Completeness — the degree to which
view and/or other views if relevant). all requirements have been implemented
Organizing information into views and verified within the model
focuses the software modeling efforts on ● Consistency — the degree to which the
specific concerns relevant to that view model contains no conflicting
using the appropriate notation, requirements, assertions, constraints,
vocabulary, methods and tools. functions or component descriptions
● Correctness — the degree to which the
● Enable effective communications: M model satisfies its requirements and
odeling uses the application domain design specifications and is free of
vocabulary of the software, a modeling defects
language and semantic expression (in
other words, meaning within context). Models are constructed to represent real-
When used rigorously and systematically, world objects and their behaviors to answer
modeling results in a reporting approach specific questions about how the software is
that facilitates effective communication expected to operate. Interrogating the models
of software information to project — through exploration, simulation or
stakeholders. review — might expose areas of
uncertainty within the model and the
A model is an abstraction or simplification of software to which the model refers. These
a software component. A consequence of uncertainties or unanswered questions
using abstraction is that, because no single regarding the requirements, design and/or
abstraction completely describes a software implementation can then be handled
component, the software model appropriately.
comprises an aggregation of abstractions,

Software Engineering Models and Methods 9–3


© IEEE – SWEBOK Guide V3
The primary expression element of a model regarding a single model within this
is an entity. An entity may represent concrete collection of submodels may be problematic.
artifacts (e.g., processors, sensors or Understanding the precise meanings of
robots) or abstract artifacts (e.g., software modeling constructs can also be difficult.
modules or communication protocols). Syntactic and semantic rules define
Model entities are connected to other entities modeling languages . For textual
using relations ( lines or textual operators languages, syntax is defined using a notation
on target entities). Expression of model grammar that defines valid language
entities may be accomplished using textual or constructs (e.g., Backus-Naur f orm
graphical modeling languages; both (BNF)). For graphical languages, syntax is
modeling language types connect model defined using graphical models called
entities through specific language constructs. metamodels. As with BNF, metamodels
The meaning of an entity may be represented define a graphical modeling language’s
by its shape, its textual attributes or both. valid syntactical constructs . In addition, t
Generally, textual information adheres to he metamodel defines how these constructs
language-specific syntactic structure. The can be composed to produce valid models.
precise meanings related to the modeling of
context, structure or behavior using these Semantics for modeling languages specify
entities and relations are dependent on the the meaning attached to the entities and
modeling language used, the design rigor relations captured within the model. For
applied to the modeling effort, the specific example, a simple diagram of two boxes
view being constructed and the entity to connected by a line is open to various
which the specific notation element may be interpretations. Knowing that the diagram on
attached. Multiple views of the model may be which the boxes are placed and connected is
required to capture the needed semantics of an object diagram or an activity diagram can
the software. assist in interpreting this model.
When using automation-supported models, As a practical matter, the semantics of a
models may be checked for completeness specific software model are usually fairly
and consistency. The usefulness of these clear due to the model’s use of a modeling
checks depends greatly on the level of language with consistent rules , the way
semantic and syntactic rigor applied to the that modeling language expresses entities
modeling effort and on explicit tool and relations within that model, the
support. Correctness is typically checked experience of the modeler s , and the
through simulation and/or review. context within which the modeling has been
undertaken and represented. Meaning is
1.3. Syntax, Semantics and Pragmatics communicated through the model even in the
[2*, c2s2.2.2p6, 3*, c5s0] presence of incomplete information through
abstraction . P ragmatics explains how
Models can be surprisingly deceptive. The
meaning is embodied in the model and its
fact that a model is an abstraction with
context and how it is communicated
missing information can give people the
effectively to other software engineers.
illusion that they completely understand
the software after studying a single model. However, there are still instances where
A complete model (“complete” being relative caution is needed regarding modeling and
to the modeling effort) may be a union of semantics. For example, any model parts
multiple submodels and any special function imported from another model or library must
models. Examination of and decision-making be examined for semantic assumptions that

Software Engineering Models and Methods 9–4


© IEEE – SWEBOK Guide V3
conflict with the new modeling have changed, or how the return value has
environment; these conflicts might not been affected.
be obvious. The model should be checked for
● Invariants are conditions within the
documented assumptions. Although the
operational environment that persist (in
employed modeling syntax might be
other words, do not change) before and
the same, it might mean something quite
after execution of the function or method.
different in the new environment, which is a
These invariants are relevant and
different context. Also, consider that as
necessary to the software and to the
software matures and changes are made,
correct operation of the function or
semantic discord can be introduced, leading
method.
to errors. With many software engineers
working on part of a model over time, and 2. Types of Models
with tool updates and perhaps new
A typical model consists of an aggregation of
requirements, there are opportunities for
submodels. Each submodel is a partial
portions of the model to represent something
description and is created for a specific
different from the original author’s intent and
purpose . A submodel may comprise
initial model context.
one or more diagrams. The collection of
1.4. Preconditions, Postconditions and submodels may use multiple modeling
Invariants [2*, c4s4, 4*, c10s4p2, languages or a single modeling language. The
Unified Modeling Language (UML)
c10s5p2p4] recognizes a rich collection of modeling
When modeling functions or methods, the diagrams. These diagrams, along with the
software engineer typically starts with modeling language constructs, are used in
assumptions about the software’s state three common model types : information
before, during and after the function or models, behavioral models and structure
method executes. These assumptions are models. (S ee S ection 1.1.)
essential to the correct operation of the
function or method and are grouped, for 2.1. Information Modeling [1*, c7s2.2, 3*,
discussion, as a set of preconditions, c8s1]
postconditions and invariants. Information models focus on data and
● Preconditions are conditions that other information. An information model is
must be satisfied before execution of an abstract representation that identifies and
the function or method. If these defines a set of concepts, properties, relations
preconditions do not hold before and constraints on data entities. The semantic
execution of the function or method, the or conceptual information model is often
function or method might produce used to provide some formalism and context
erroneous results. to the software as viewed from the
problem perspective, without concern for
● Postconditions are conditions how this model is mapped to the
guaranteed to be true after the function or implementation of the software. The
method has executed successfully. semantic or conceptual information model is
Typically, the postconditions represent an abstraction and, as such, includes only the
how the software’s state has changed, concepts, properties, relations and
how parameters passed to the function or constraints needed to conceptualize a real-
method have changed, how data values world view of the information. Subsequent
transformations of the semantic or conceptual

Software Engineering Models and Methods 9–5


© IEEE – SWEBOK Guide V3
information model become logical and function, operational us e and assembly
then physical data models as implemented in considerations . Analysis of constructed
the software. models is needed to ensure that the models
are complete, consistent and correct
2.2. Behavioral Modeling [1*, c7s2.1, enough to serve their intended purpose for the
c7s2.3, c7s2.4, 2*, c9s2, 3*, c5s4] stakeholders.
Behavioral models identify and define The following sections briefly describe the
software functions . Behavioral analysis techniques generally used to
models generally take three basic forms: state ensure that the software engineer and other
machines, control-flow models and data- relevant stakeholders gain appropriate value
flow models. State machines provide a model from the development and use of models.
that represents the software as a collection of
defined states, events and transitions. The 3.1. Analyzing for Completeness [3*,
software transitions from one state to the next c4s1.1p7, c4s6, 5*, pp8-11]
through a guarded or unguarded triggering To ensure software fully meets the
event that occurs in the modeled needs of the stakeholders, testing for
environment. Control-flow models depict completeness — from the
how a sequence of events causes processes to requirements elicitation process to code
be activated or deactivated. Data-flow implementation — is critical.
behavior is typified as a sequence of steps Completeness is the degree to which all
where data moves through processes toward specified requirements have been
data stores or data sinks. implemented and verified. Engineers can
check models for completeness with
2.3. Structure Modeling [1*, c7s2.5, c7s3.1,
a modeling tool that uses structural
c7s3.2, 3*, c5s3, 4*, c4]
analysis and state-space reachability analysis
Structure models illustrate software’s (which ensure some set of correct inputs
physical or logical composition from its reach all paths in the state models ).
various parts. Structure modeling M odels may also be checked manually
establishes the defined boundary between the for completeness by using inspections or
software being implemented or modeled and other review techniques. (S ee the
the environment in which it is to operate. Software Quality KA.) Errors and
Some common structural constructs used in warnings generated by these analysis tools
structure modeling are composition, and found by inspection or review indicate
decomposition, generalization and what corrective actions are probably needed
specialization of entities; identification of to ensure model completeness .
relevant relations and cardinality between
entities; and the definition of process or 3.2. Analyzing for Consistency [3*,
functional interfaces. Structure diagrams c4s1.1p7, c4s6, 5*, pp8-11]
provided by the UML for structure modeling
include class, component, object, deployment Consistency is the degree to which models
and packaging diagrams. contain no conflicting requirements,
assertions, constraints, functions or
3. Analysis of Models component descriptions. Typically,
The development of models allows the consistency checking is accomplished with
software engineer to study, reason about the modeling tool using an automated
and understand software structure, analysis function . Models may also be
checked manually for consistency using

Software Engineering Models and Methods 9–6


© IEEE – SWEBOK Guide V3
inspections or other review techniques. (See Requirements Tracing in the Software
the Software Quality KA.) As with Requirements KA) and the many work
completeness, errors and warnings generated products. Use of traceability typically
by these analysis tools and found by improves the management of software work
inspection or review indicate the need for products and software process quality
corrective action. and assures stakeholders that all requirements
are satisfied. Traceability enables change
3.3. Analyzing for Correctness [5*, pp8-11] analysis once the software is developed and
Correctness is the degree to which a model released because relationships to
satisfies its software requirements and software work products can easily be
software design specifications, is free of traversed to assess change impact. Modeling
defects, and ultimately meets the tools typically help automatically or
stakeholders’ needs. Analyzing for manually specify and manage traceability
correctness includes verifying the model’s links among requirements, design, code
syntactic correctness (that is, correct use and/or test entities that might be
of the modeling language grammar and represented in the models and other software
constructs) and semantic correctness work products. (For more information on
(that is, use of the modeling language traceability, see the Software Configuration
constructs to correctly represent the meaning Management KA.)
of that which is being modeled). To analyze
a model for syntactic and semantic 3.5. Interaction Analysis [2*, c10, c11, 3*,
correctness, one analyzes it — either c29s1.1, c29s5, 4*, c5]
automatically (e.g., using the modeling tool Interaction analysis focuses on the
to check for model syntactic correctness) or communications or control- flow relations
manually (using inspections or other review between entities used to accomplish a
techniques) — searching for possible specific task or function within the software
defects and then removing or repairing the model. This analysis examines the dynamic
confirmed defects before the software is behavior of the interactions among the
released for use. software model’s different portions ,
including other software layers (such as the
3.4. Traceability [3*, c4s7.1, c4s7.2] operating system, middleware and
Developing software typically involves applications). Examining
using , creating and modifying many interactions between the computer software
work products such as planning documents, application and the user interface software
process specifications, software might also be important for some software
requirements, diagrams, designs and pseudo- applications. Some software modeling
code, handwritten and tool-generated code, environments provide simulation facilities to
manual and automated test cases and reports, study aspects of the dynamic behavior of
and files and data. These work products may modeled software. Stepping through the
share various dependency relationships (e.g., simulation allows the software engineer to
uses, implements and tests). As software review the interaction design and verify that
is developed, managed, maintained or the software’s different parts work together
extended, these traceability relationships to provide the intended functions.
must be mapped and controlled to
demonstrate the software requirements’ 4. Software Engineering Methods
consistency with the software model (see

Software Engineering Models and Methods 9–7


© IEEE – SWEBOK Guide V3
Software engineering methods provide an ● Data modeling methods: The data model
organized and systematic approach to is constructed from the viewpoint of the
developing software for a target computer. data or information used. Data tables and
There are numerous methods from which to relationships define the data models. This
choose, and the software engineer needs data modeling method is used primarily
to choose an appropriate method or methods to define and analyze data
for the software development task at hand . requirements supporting database
T his choice can dramatically affect designs or data repositories typically
the success of the project. When software found in business software, where data is
engineers, working with people who have the actively managed as a business systems
right skill sets and the right tools, use resource or asset.
these software engineering methods,
● Object-oriented analysis and design
they can visualize the software’s details
methods: The object-oriented model is
and ultimately transform the representation
represented as a collection of objects that
into a working set of code and data.
encapsulate data and relationships and
Selected software engineering methods are interact with other objects through
discussed below. The topic areas are methods. Objects may be real-world
organized into discussions of Heuristic items or virtual items. The software
Methods, Formal Methods, Prototyping model is constructed using diagrams
Methods and Agile Methods. to constitute selected views of the
software. Progressive refinement of the
4.1. Heuristic Methods [1*, c13, c15, c16, 3*, models leads to a detailed design. The
c2s2.2, c7s1, c5s4.1] detailed design is then either evolved
Heuristic methods are experience-based through successive iterations or
software engineering methods that are transformed (using some mechanism)
fairly widely practiced in the software into the implementation view of the
industry. This topic area contains three broad model, where the code and packaging
discussion categories: structured analysis and for eventual software product release and
design methods, data modeling methods, and deployment are expressed. (See
object-oriented analysis and design methods. Software Design KA, Model-B ased
R equirements and Software
● Structured analysis and design methods:
Requirements KA.)
These methods develop the software
model primarily from a functional or 4.2. Formal Methods [1*, c18, 3*, c27, 5*,
behavioral viewpoint . It starts from
a high-level view of the software pp8-24]
(including data and control elements). It Formal methods are software engineering
then progressively decomposes or methods that apply rigorous, mathematically
refines the model components through based notation and language to specify,
increasingly detailed designs. The develop and verify the software .
detailed designs eventually converge to Through use of a specification language, the
become a set of specific software software model can be systematically
details or specifications that must be checked for consistency ( or lack of
coded (by hand, automatically generated ambiguity), completeness, and correctness,
or both), built, tested and verified. either automatically or semi automat
ically. This topic is related to the Formal

Software Engineering Models and Methods 9–8


© IEEE – SWEBOK Guide V3
Analysis section in the Software to demonstrate that the represented
Requirements KA. software design has or preserves certain
model properties of interest. An example
This section addresses specification
of model checking is an analysis that
languages, program refinement and
verifies correct program behavior under
derivation, formal verification, and logical
all possible interleaving of event or
inference.
message arrivals. Formal verification
● Specification languages: Specification requires a rigorously specified model of
languages provide the mathematical basis the software and its operational
for a formal method. Specification environment. T his model often takes
languages are formal, higher- level the form of a finite- state machine or
computer languages ( not a classic 3rd other formally defined automaton.
-g eneration l anguage (3GL)
● Logical inference: Logical inference is
programming language) used during the
a method of designing software that
software specification, requirements
specifies preconditions and
analysis and/or design stages to
postconditions around each significant
describe specific input/output behavior.
design block. Using mathematical
Specification languages are not directly
logic, it develops the proof that
executable languages . Instead, t hey
those preconditions and postconditions
typically comprise a notation and
must hold under all inputs. This allows
syntax, semantics for the use of the
the software engineer to predict software
notation, and a set of allowed relations for
behavior without having to execute the
objects.
software. Some i ntegrated d
● Program refinement and derivation: evelopment e nvironments (IDEs)
Program refinement creates a lower- include ways to represent these proofs a
level (or more detailed) specification nd the design or code.
using a series of transformations.
Through successive transformations, 4.3. Prototyping Methods [1*, c12s2, 3*,
the software engineer derives an c2s3.1, 6*, c7s3p5]
executable representation of a program.
Software prototyping is an activity that
Specifications may be refined, adding
generally creates incomplete or minimally
details until the model can be formulated
functional versions of a software application,
in a 3GL programming language or in an
usually for trying out specific new features;
executable portion of the chosen
soliciting feedback on software requirements
specification language. This specification
or user interfaces; further exploring
refinement is made possible by defining
software requirements, software design, or
specifications with precise semantic
implementation options; or gaining
properties . For example, the
some other useful insight into the software.
specifications must set out not only the
The software engineer selects a prototyping
relationships between entities but also the
method to first understand the least
exact runtime meanings of those
understood software aspects or
relationships and operations.
components . T his approach
● Formal verification: Model checking contrasts with other software engineering
is a formal verification method . I t methods that usually begin development with
typically involves performing a state- the best-understood portions first.
space exploration or reachability analysis Typically, the prototype does not become

Software Engineering Models and Methods 9–9


© IEEE – SWEBOK Guide V3
the final software product without extensive considered lightweight because of their
development rework or refactoring. short, iterative development cycles, self-
organizing teams, simpler designs, code
This section briefly discusses prototyping
refactoring, test-driven development,
styles, targets and evaluation techniques .
frequent customer involvement and
● Prototyping style: Prototyping styles emphasis on creating a demonstrable
describe the various approaches to working product with each development
developing prototypes. A prototype cycle.
can be developed as throwaway code or a
Many Agile methods are available in the
paper product , as an evolution of a
literature .S ome more popular
working design, or as an executable
approaches, discussed here briefly,
specification. Different prototyping life
include r apid a pplication d evelopment
cycle processes are typically used for
(RAD), eXtreme Programming (XP), Scrum,
each style. The style chosen is based on
and f eature-d riven d evelopment
the type of results the project needs, the
(FDD).
quality of the results needed and the
results’ urgency . ● RAD: R AD methods are used primarily
in data-intensive, business systems
● Prototyping target: The prototyping
application development. RAD is
target is the specific product served
enabled by special-purpose database
by the prototyping effort. Examples of
development tools used by software
prototyping targets are a requirements
engineers to quickly develop, test and
specification, an architectural design
deploy new or modified business
element or component, an algorithm,
applications.
and a human-machine user interface.
● XP: This approach uses stories or
● Prototyping evaluation techniques: The
scenarios for requirements, develops tests
software engineer or other project
first, has direct customer involvement on
stakeholders may use or evaluate
the team (typically defining acceptance
the prototype in many ways ,
tests), uses pair programming, and
driven primarily by the underlying
provides continuous code refactoring
reasons that led to prototype
and integration. Stories are decomposed
development . Prototypes may be
into tasks, prioritized, estimated,
evaluated or tested against the
developed and tested. Each software
implemented software or target
increment is tested with automated and
requirements ( e.g., a requirements
manual tests. A n increment may be
prototype ). T he prototype might
released frequently, such as every couple
also serve as a model for future
of weeks .
software development ( e.g., as in a
user interface specification). ● Scrum: This A gile approach is more
project management-friendly than the
4.4. Agile Methods [3*, c3, 6*, c7s3p7, 7*, others. The S crum master manages the
c6, App. A, 16, 17] activities within the project increment .
Agile methods were developed in the 1990s E ach increment is called a sprint and
to reduce the apparent large overhead lasts no more than 30 days. A p roduct
associated with heavyweight, plan-based b acklog i tem (PBI) list is developed;
methods used in large-scale software tasks from this list are identified,
development projects. Agile methods are defined, prioritized and estimated. A

Software Engineering Models and Methods 9–10


© IEEE – SWEBOK Guide V3
working version of the software is tested
and released in each increment. Daily S
crum meetings ensure work is managed
to the plan.
● FDD: This is a model-driven, short,
iterative software development approach
using a five-phase process: (1) develop a
product model to scope the breadth of the
domain, (2) create the list of needs or
features, (3) build the feature
development plan, (4) develop designs
for iteration-specific features, and (5)
code, test, and then integrate the features.
FDD is similar to an incremental software
development approach . I t is
similar to XP, except that code ownership
is assigned to individuals rather than to
the team. In addition, FDD emphasizes an
overall architectural approach to the
software, which promotes building
features correctly the first time rather
than rely on continual refactoring.
There are many more variations of A gile
methods in the literature and in practice.
There will always be a place for heavyweight,
plan-based software engineering methods as
well as places where A gile methods shine.
In addition, n ew methods are arising
from combinations of A gile and plan-
based methods: Practitioners are
defining these new methods to balance
features from heavyweight and
lightweight methods based primarily on
organizational business needs. These
business needs, as identified by project
stakeholders, should and typically do drive
the choice of software engineering
method .

Software Engineering Models and Methods 9–11


© IEEE – SWEBOK Guide V3
MATRIX OF TOPICS VS. REFERENCE MATERIAL

Bro
oks
hea
r
200
8
[6*
]{B
roo Boe
ksh hm
Pag
ear and
Som e- Wi
Budg , Tu
Mellor and merv Jon ng
en 200 rne
Balcer 2002 ille es 199
2003 8, r
[2*] 2011 199 0
[1*] Co 200
[3*] 9 [5*]
mp 3
[4*]
ute [7*
r ]
Sci
enc
e:
An
Ov
erv
iew
}
1. Modeling
1.1. Modeling c2s2, c5s1,
c2s2 c5s0
Principles c5s2

1.2. Properties c4s1.1p7,


and Expression of c5s2, c5s3 c4s6p3,
c5s0p3
Models
1.3. Syntax,
Semantics and c2s2.2.2p6 c5s0
Pragmatics
1.4.
Preconditions, c10s4p2,
c4s4 c10s5p2p
Postconditions 4
and Invariants
2. Types of
Models
2.1. Information c7s2.2 c8s1
Modeling

Software Engineering Models and Methods 9–12


© IEEE – SWEBOK Guide V3
2.2. Behavioral c7s2.1,
c7s2.3, c9s2 c5s4
Modeling c7s2.4
2.3. Structure c7s2.5,
c7s3.1, c5s3 c4
Modeling c7s3.2
3. Analysis of
Models
3.1. Analyzing for c4s1.1p7,
pp8-11
Completeness c4s6

3.2. Analyzing for c4s1.1p7,


pp8-11
Consistency c4s6

3.3. Analyzing for pp8-11


Correctness
c4s7.1,
3.4. Traceability c4s7.2
3.5. Interaction c10, c11
c29s1.1,
c5
Analysis c29s5

4. Software
Engineering
Methods
4.1. Heuristic c2s2.2,
c13, c15,
c7s1,
Methods c16
c5s4.1
4.2. Formal c18 c27 pp8-24
Methods
4.3. Prototyping c12s2 c2s3.1 c7s3p5
Methods
4.4. Agile c3 c7s3p7
c6, app.
Methods A

Software Engineering Models and Methods 9–13


© IEEE – SWEBOK Guide V3
REFERENCES
[1*] D. Budgen, Software Design, 2nd ed.
New York: Addison-Wesley, 2003.
[2*] S. J. Mellor and M. J. Balcer,
Executable UML: A Foundation for
Model-Driven Architecture, 1st ed.
Boston: Addison-Wesley, 2002.
[3*] I. Sommerville, Software
Engineering, 9th ed. New York:
Addison-Wesley, 2011.
[4*] M. Page-Jones, Fundamentals of
Object-Oriented Design in UML, 1st
ed. Reading, MA: Addison-Wesley,
1999.
[5*] J. M. Wing, “ A Specifier’ s
Introduction to Formal Methods,”
Computer, vol. 23, pp. 8, 10-23,
1990.
[6*] J. G. Brookshear, Computer Science:
An Overview, 10th ed. Boston:
Addison-Wesley, 2008.
[7*] B. Boehm and R. Turner, Balancing
Agility and Discipline: A Guide for the
Perplexed. Boston: Addison-Wesley, 2003.

Software Engineering Models and Methods 9–14


© IEEE – SWEBOK Guide V3
CHAPTER 12
SOFTWARE QUALITY

authors and organizations have defined the


ABBREVIATIONS
term quality differently. Phil Crosby defined
CI/CD Continuous quality as “conformance to requirements”
Integration/Continuous Delivery [2]. Watts Humphrey referred to it as
CoSQ Cost of Software Quality “achieving excellent levels of “fitness for
COTS Commercial Off-The-Shelf use” [3]. Meanwhile, IBM coined the phrase
FMEA Failure Mode and Effects “market-driven quality,” where the
Analysis “customer is the final arbiter” [4, p. 8].
FTA Fault Tree Analysis More recently, software (product) quality has
IV&V Independent Verification and been defined as the “capability of a software
Validation product to satisfy stated and implied needs
PDCA Plan-Do-Check-Act under specified conditions” [4] and as “the
degree to which a software product meets
PSP Personal Software Process
established requirements; however, quality
QFD Quality Function Deployment depends upon the degree to which those
RCA Root Cause Analysis established requirements accurately represent
SCM Software Configuration stakeholder needs, wants, and expectations”
Management [6]. Both definitions embrace the premise of
SQA Software Quality Assurance conformance to requirements. Neither refers
SQAP Software Quality Assurance Plan to different types of requirements
SQC Software Quality Control (requirements categorized according to
functionality, reliability, performance,
SQM Software Quality Management dependability, or any other characteristic).
VSEs Very Small Entities Significantly, however, these definitions
V&V Verification and Validation emphasize that quality is an important
characteristic of requirements.
INTRODUCTION These definitions also illustrate another
reason for the recurring discussions about
What is software quality, and why is it so
software quality throughout the SWEBOK
important that it is included in many
Guide — the often-unclear distinction
knowledge areas (KAs) of the SWEBOK
between software quality and software
Guide? One reason is that the term software
quality requirements (“the -ilities” is a
quality is overloaded. Software quality may
common shorthand for these terms).
refer to the desirable characteristics of
Software quality requirements (Quality of
software products, to the extent to which a
Service Constraints in the Software
particular software product has those
Requirements KA) are attributes of (or
characteristics (software product quality),
constraints on) functional requirements (what
and to the processes, tools and techniques
the system does). Software requirements may
used to achieve those characteristics
also specify resource use, a communication
(software process quality). Over the years,

Software Quality 12–1 © IEEE – SWEBOK Guide V4


protocol, or many other characteristics likely show up as defects in the resulting
(Technology Constraints in the Software software product, as well.
Requirements KA). This KA attempts to Finally, the Agile and DevOps movements
clarify by using software quality in the aim at improving the software process and
broadest sense from the definitions above and product quality through compliance by
by using software quality requirements as promoting quick iteration feedback loops and
constraints on functional requirements. eliminating organizational silos by
Software product quality is achieved by collocating users and software engineers.
conforming to all requirements regardless of Other practices like pair programming and
specified characteristics or grouping or the automation of development, testing, and
naming of requirements. operations services also bring value, improve
Software quality is also discussed in many efficiency, and can detect defects early.
other SWEBOK Knowledge Areas because it (Refer to the Process KA for Agile life cycles
is a basic parameter of a software engineering and the Software Operations KA for more
effort. The primary goal for all engineered information on DevOps processes.)
products is to deliver maximum stakeholder This KA provides an overview of practices,
value while balancing the constraints of tools, and techniques for understanding
development and maintenance costs and software quality and planning and appraising
schedule, sometimes characterized as fitness the state of software quality during
for use. Stakeholder value is expressed in development, maintenance and operation,
requirements. For software products, from both a software product perspective and
stakeholders could value price (what they pay a software process perspective. Cited
for the product), lead time (how fast they get references provide additional details.
the product), and software quality. (See the
Software Requirements KA for a broader BREAKDOWN OF TOPICS FOR
discussion of this.) SOFTWARE QUALITY
The software process quality aspect, which is The breakdown of topics for the
implied by the above, must be made explicit. Software Quality KA is presented in
The quality of a software process can be also Figure 1.
observed in process characteristics such as
efficiency, effectiveness, usability, and
learnability. Defects in that process will

Software Quality 12–2 © IEEE – SWEBOK Guide V4


Figure 1. Breakdown of Topics for Software
Quality
1. Software Quality Fundamentals a software product to satisfy stated and
implied needs when under specified
Agreeing on what constitutes software conditions” [6]. It is further defined “by the
quality for all stakeholders and degree to which a software product meets
communicating that agreement to software established requirements; however, quality
engineers requires that the many aspects of depends upon the degree to which those
quality be formally defined and established requirements accurately represent
communicated. The main challenges the stakeholder needs, wants, and expectations”
software engineer faces to ensure quality [6]. Quality often means the absence of
include the following: defects. The word defect is overloaded with
● Difficulty in clearly defining too many meanings, as engineers and others
requirements; use the word to refer to all different types of
● Maintaining effective communication anomalies. However, different engineering
with the client/user; cultures and standards often understand
● Deviations from specifications; “defect” and other terms as having more
● Architecture and design errors; specific meanings. To avoid confusion,
● Coding errors; software engineers should use the meaning
● Noncompliance with current provided by their standards [14]:
processes/procedures; ● Error: “A human action that produces an
● Inadequate work product reviews and incorrect result.” Also called human
tests; error;
● Documentation errors. ● Defect: (synonym of a fault) An
Software quality is defined as “conformance “imperfection or deficiency in a work
to established requirements; the capability of product where that work product does

Software Quality 12–1 © IEEE – SWEBOK Guide V4


not meet its requirements or business model (e.g., custom, mass-market,
specifications and needs to be either commercial, firmware) and the industry
repaired or replaced.” A defect is where the software engineers work. Software
inserted when a person developing the engineers are expected to share a
software makes an error. It hides in the commitment to software quality in the
software until (and if) it is discovered; context of their industry and as part of their
● Failure: The “termination of the ability culture. A healthy software engineering
of a system to perform a required culture includes many characteristics, such as
function or its inability to perform within the understanding that trade-offs among cost,
previously specified limits; an externally schedule and quality are a basic tenet of any
visible deviation from the system’s product’s engineering. A strong software
specification event in which a system or engineering ethic assumes that engineers
system component does not perform a accurately report information, conditions and
required function within specified outcomes related to quality. Ethics also play
limits.” A failure is produced when the a significant role in software quality in the
software executes a defect. professional culture of engineering, and in
the attitudes of software engineers. The IEEE
Computer Society and the Association for
A software engineer should understand
Computing Machinery (ACM) have
software quality concepts, characteristics,
developed a code of ethics and professional
and values and their application to the many
practice. (See Codes of Ethics and
development, maintenance, and operation
Professional Conduct in the Software
activities. An important concept is that the
Engineering Professional Practice KA.)
software requirements are expected to define
the required software quality attributes.
Furthermore, software requirements 1.2. Value and Costs of Quality [1*,
influence the measurement methods and
c2s2.2]
acceptance criteria for assessing how the
software and related work products achieve One major factor driving resistance to
the desired quality levels. Another important implementing SQA is its perceived high cost.
concept is that software quality should be However, not implementing basic SQA
planned early and assessed at many activities can be costly as well. Software
milestones during the software life cycle. engineers should inform their administration
Finally, how to adapt software quality of the risks they take when they are not fully
assurance (SQA) activities to accommodate committed to quality. This can be done by
Agile software development is presented in explaining the cost of software quality
detail in the Institute of Electrical and concepts to management. Cost of software
Electronics Engineers (IEEE) Standard quality (CoSQ) is defined as the sum of the
730:2014 [6]. following project costs:
● Cost of planning and construction
activities (e.g., planning, designing,
1.1. Software Engineering Culture and
development);
Ethics [1*, c1s1.6; c2] [5*]
● Cost of prevention activities (process
An organization’s culture affects how improvement, tools, training);
software engineers influence software ● Cost of appraisal activities for defect
quality. As Iberle explains [19], software detection (e.g., reviews, audits,
engineering practices vary depending on the testing);

Software Quality 12–2 © IEEE – SWEBOK Guide V4


● Cost of nonconformance rework 1.3. Standards, Models and
(internal failure cost and external Certifications [1*, c4] [7, c24s24.2]
failure cost). Sound use of software engineering software
The CoSQ can be broken down into two top- standards and software process assessment
level categories: conformance cost and and improvement improves software quality.
nonconformance cost. Conformance cost is One of the key general software engineering
the total of all investments in error and defect standards is ISO/IEC/IEEE 12207:2017,
detection (appraisal) and prevention which describes the software life cycle
activities. Appraisal costs arise from project processes. Foremost, software engineers
activities that are intended to find errors and should know the key software engineering
defects. These include testing (as detailed in standards that apply to their specific industry.
the Software Testing KA) and reviews and As Iberle discussed [19], the practices
audits (as detailed later in this KA). Appraisal software engineers use vary greatly
costs extend to subcontracted software depending on the industry, business model
suppliers, if any. Prevention costs include and organizational culture where they work.
investments in software process For example, IEEE 1228:1994 Standard for
improvement (SPI) efforts, quality Software Safety Plans and IEEE 1633:2016
infrastructure, quality tools, work product Recommended Practice on Software
templates and training. These costs might not Reliability target industries where safety and
be specific to a project; they often span the reliability are important.
larger organization. The PDCA paradigms differ from standards
Nonconformance cost is the total of all in that it often proposes “best practices” for
spending dealing with errors and defects that software engineers from a specific
have been detected. Pre-delivery costs are perspective. (Refer to the Software
those incurred to repair errors and defects Engineering Process KA for more
found during appraisal activities and information about the PDCA paradigm for
discovered before the software product is software.)
delivered to the customer. Post-Delivery Other industry “best practices” models such
costs include those incurred responding to as the Control Objectives for Information and
software failures discovered after delivery to Related Technologies (COBIT) for
the customer. External costs include the information technology governance, the
rework needed to repair and test an updated Project Management Body of Knowledge
release. However, the financial impact on the (PMBOK®) for project management, the
customer who encounters a failure is just as Business Analysis Body of Knowledge
important. For example, the customer’s lost (BABOK®), the Capability Maturity Model
productivity, lost data, and potential loss of Integration (CMMI) and The Open Group
reputation in the marketplace must be Architecture Framework (TOGAF) propose
acknowledged and accounted for. Beyond the software related practices that can improve
impact on the customer, low-quality software the quality of software processes and
can also impact the public and the products. Software organizations can also
environment. Software engineers should consider the possible advantages of obtaining
seek the optimal CoSQ — the minimal total registrations or certifications (e.g., ISO 9001
cost for a specified quality level. for quality, ISO 27001 for security, ISO
20000 for operations), and software
engineers can also obtain Scrum and Scaled

Software Quality 12–3 © IEEE – SWEBOK Guide V4


Agile Framework® (SAFe®) certifications environments and software test
for Agile processes. The use of these models environments.
and certifications have been shown to Three complementary techniques for
augment stakeholders’ confidence that the reducing failure risk are avoidance, detection
software engineers’ knowledge and skills are and removal, and damage limitation. These
up to date and recognized internationally. techniques impact software functional
requirements, performance requirements and
development processes. Increasing risk
1.4. Software Dependability and
implies increasing SQA and more rigorous
Integrity Levels [1*, c4s4.8.2,
review techniques such as inspections [16].
c7s7.3.3] [11]
Higher risk levels might necessitate more
Software-intensive and safety-critical thorough inspections of requirements,
systems are those in which a system failure design, and code, or the use of more formal
could harm human life, other living things, verification and validation techniques.
physical structures, or the environment. The Another technique for managing and
software in these systems is considered controlling software risk is building
safety-critical and requires the use of assurance cases. An assurance case is a
systematic methods and tools to ensure its reasoned, auditable artifact created to support
high level of quality. A growing number of the contention that its claim or claims are
industries are using increasing numbers of satisfied. It contains the following
safety-critical software, including relationships: one or more claims about
transportation systems, chemical and nuclear properties, arguments that logically link the
plants, and medical devices. Software failure evidence and any assumptions to the claims,
in these systems could have catastrophic and a body of evidence and assumptions
effects. Engineers use industry standards, supporting these arguments [9].
such as software considerations in airborne
systems and equipment certification DO-
178C [8] and railway applications EN 50128 1.4.1. Dependability [7, c10]
[18], and emerging processes, tools, and In cases where system failure may have
techniques to develop safety-critical software severe consequences, overall dependability
more safely. These standards, tools and (e.g., hardware, software, and human or
techniques reduce the risk of injecting faults operational dependability) is the main quality
into the software and thus improve software requirement, aside from basic software
availability, reliability, and maintainability. functionality, for the following reasons:
Software engineers and their managers must System failures affect many people; users
understand the threats and issues and develop often reject systems that are unreliable,
the skills needed to anticipate and prevent unsafe, or insecure; system failure costs
accidents before they occur [15]. could be enormous; and undependable
Safety-critical software can be categorized as systems might cause information loss. Many
direct or indirect. Direct software is standards address different perspectives of
embedded in a safety-critical system, such as dependability, such as reliability and
an aircraft’s flight control computer. Indirect availability. System and software
software includes software applications used dependability regroups several related
to develop safety-critical software. Indirect quality characteristics: availability,
software is included in software engineering reliability, maintainability and
supportability, risk assessment, and safety

Software Quality 12–4 © IEEE – SWEBOK Guide V4


and security [21]. When developing Software engineers should know that in
dependable software, engineers can apply certain safety-critical industries, such as
tools and techniques to reduce the risk of avionics, railways, nuclear power, medical
injecting faults into the intermediate devices and many others, industry-specific
deliverables or the final software product. guidance can require a certain level of
They can use static, dynamic, or formal independence for software quality activities
methods for verification and validation and can assign minimum V&V techniques to
(V&V), and testing processes, as well as be used by integrity level (example of such
other specialized techniques, methods, and techniques are: usability analysis, algorithm
tools to identify defects that affect analysis, boundary value analysis, data flow
dependability as early as possible in the analysis, walk-through review [11][26]).
software life cycle [7*, c10.5]. Additionally,
they may have to incorporate specific
mechanisms into the software to guard 2. Software Quality Management
against external attacks and to tolerate faults Process
during its operation.
“Software quality management" (SQM) is
concerned coordinating activities to direct
1.4.2. Integrity Levels of Software [1*, and control an organization with regard to
c4s4.8.2, c7s7.3.3] [11] software quality” [6]. The purpose of the
Quality Management process is to assure that
Defining integrity levels is a method of risk products, services, and implementations of
management. An integrity level is “a value the quality management process meet
representing project-unique characteristics organizational and project quality objectives
(e.g., complexity, criticality, risk, safety and achieve customer satisfaction.
level, security level, desired performance, Software engineers can learn about the SQM
and reliability) that define the importance of process in the many software engineering
the system, software, or hardware to the user” standards, models, and certifications
[11]. The characteristics used to determine available and used widely in the industry.
software integrity level vary depending on An important concept of SQM is the design
the intended application and use of the and upkeeping of a Quality Management
system. The software is a part of the system, System (QMS). As proposed by ISO 9001, a
and its integrity level is determined as a part
of that system. QMS defines processes, process owners,
requirements for the processes,
The assigned software integrity levels might measurements of the processes and their
change as the software evolves. Design, outputs, and feedback channels throughout
coding, procedural and technology features the whole software life cycle. A QMS
implemented in the system or software can comprises many key activities: SQA, V&V,
raise or lower the assigned software integrity reviews and audits, software configuration
levels. The software integrity levels management (SCM), and requires policies,
established for a project result from procedures, and processes to ensure that
agreements among the acquirer, supplier, everyone involved understands what is
developer, and independent assurance expected in terms of software process and
authorities. A software integrity level scheme product quality. For a QMS to be effective,
is used to determine software integrity levels management support is imperative.
[11]. Management support implies that projects are
trained to the QMS requirement and have

Software Quality 12–5 © IEEE – SWEBOK Guide V4


enough resources to achieve the quality goal includes management control, coordination
defined for it. Management sponsorship of activities, and feedback from many
should be solicited frequently during concurrent processes: (1) the process of
software project review to ensure software improving the software life cycle processes;
quality activities are executed and (2) the process of fault/defect categorization,
nonconformities addressed. detection, removal, and prevention; and (3) a
For a software project, software quality personal improvement process.
processes consist of tasks and techniques to The theory and concepts behind quality
indicate how software plans (e.g., software improvement — such as building quality
management, development, quality through the prevention and early detection of
management or configuration management defects, continual improvement, and
plans) are implemented and how well the stakeholder focus — are also pertinent to
intermediate and final products meet their software engineering. These concepts are
specified requirements. Results from these based on the work of experts in quality who
tasks are assembled in reports for have stated that a product’s quality is directly
management. SQM process management is linked to the quality of the process used to
tasked with ensuring that the report results create it. Improvement models such as the
are accurate and acted upon. Plan-Do-Check-Act (PDCA) improvement
Risk management can also play an important cycle, evolutionary delivery, Kaizen, and
role in delivering quality software. techniques like quality function deployment
Incorporating disciplined risk analysis and (QFD) offer ways to specify quality
management techniques into the software life objectives and determine whether they are
cycle processes can help improve product met.
quality. (See the Software Engineering Finally, since software engineering is a
Management KA for related material on risk complex process, it cannot be reduced to a
management.) cookbook of procedures. To complement the
process and tools improvement movement,
Humphrey proposed the personal software
2.1. Software Quality Improvement [1*, process (PSP) for software engineers to also
s9.9 and c9] [2] [3] assess their skills and knowledge constantly
Software Quality Improvement (SQI) is done and continually improve them as well.
using many different approaches within the
software industry, including software process
improvement (SPI), Six Sigma, Lean, and 2.2. Plan Quality Management
Kaizen just to name a few. For example, the Software quality planning includes
SPI activities seek to improve process determining which quality standards and
effectiveness, efficiency, and other models are to be used, defining specific
characteristics to improve software quality. quality goals, estimating the effort to be used
For example, although SPI could be included to achieve each goal; and deciding at what
in any of the first three categories, many milestone the software quality activity should
organizations organize SPI into a separate take place. In some cases, software quality
category that might span many projects. planning also includes defining the software
Software product quality can be improved quality processes to be used.
using Lean principles as well as an iterative
process of continual improvement, which

Software Quality 12–6 © IEEE – SWEBOK Guide V4


First, the software organization must commit looking at quality measures and defect
to quality by establishing their Quality characterization produced by the projects.
Management System (QMS) which includes
quality management policies, objectives, and 2.3.1. Software Quality Measurement [1*,
procedures. This requires that the c10] [7, c24s24.5]
responsibility and authority for implementing
the QMS are assigned and that they are Software quality measurements are used to
independent of current project management support decision-making. With the increasing
teams. sophistication of software, quality questions
go beyond whether the software works to
An approved organizational policy, about how well it achieves measurable quality
software quality, help in guiding projects and goals. Quantifying some attribute of software
products development decisions as well as can help engineers evaluate its quality or the
behavior of personnel. Software engineers quality of its process. (Process measurement
should promote the use of graphically is described in detail in the Process KA.)
represented processes and procedures that
implement the quality policy and explain the Software quality measurement helps
roles, activities to be executed and the engineers make determinations about
expected results of key software engineering software quality (because models of software
activities. Consequently, for a QMS to be product quality include measures to
used in improvement its processes should be determine the degree to which the software
documented with its user in mind and identify product achieves quality goals); managerial
where quality controls are to be verified. questions about effort, cost, and schedule;
Finally, procedures explain in detail what when to stop testing and release a product
steps are taken to execute a specific activity. (see Test-Related Measures in the Software
Testing KA); and the efficacy of process
improvement efforts.
2.3. Evaluate Quality Management
The CoSQ assurance activities are an issue
Once the QMS is in place, the ISO/IEC frequently raised in deciding how a project or
Technical Specification TS 33061:2021 [22] a software development and maintenance
Standard defines a process assessment model organization should be organized. Often,
for software life cycle processes using five generic models of cost are used; these models
process capabilities levels (from level 0: are based on when a defect is found and how
incomplete to level 5: optimizing process). much effort it takes to fix the defect relative
Additionally, software engineers can assess to finding the defect earlier in development.
the maturity of their QMS activities in their Software quality measurement data collected
software projects using the IEEE 730:2014 internally may offer a better picture of cost
Standard guidance [6]. Management within the project or organization. Although
sponsorship supports process and product the software quality measurement data may
evaluations and the resulting findings feed be useful by itself (e.g., the number of
into an improvement program is developed defective requirements or the proportion of
identifying detailed actions and improvement defective requirements), mathematical and
projects to be addressed in a feasible time graphical techniques can help project
frame. Periodically, the software engineers stakeholders interpret the measures. (See the
will gather and analyze quality assurance Engineering Mathematical Foundations KA.)
evaluation results. This can be achieved by These techniques include the following:

Software Quality 12–7 © IEEE – SWEBOK Guide V4


● Descriptive statistics-based analysis information also helps engineers understand
(e.g., Pareto analysis, run charts, scatter trends, how well detection and containment
plots, normal distribution); techniques are working, and how well the
● Statistical tests (e.g., the binomial test, development and maintenance processes are
chi-squared test); progressing. They can use these
● Trend analysis (e.g., control charts; see measurement methods to develop defect
The Quality Toolbox in Further profiles for a specific application domain.
Reading); Then, for the next software project within
● Prediction (e.g., reliability models). that organization, the profiles can be used to
guide the SQM processes — that is, to focus
effort on where problems are most likely to
Descriptive statistics-based techniques and
occur. Similarly, benchmarks, or defect
tests often provide a snapshot of the more
counts typical of that domain, may help
troublesome areas of the software product
engineers determine when the product is
under examination. The resulting charts and
graphs are visualization aids decision-makers ready for delivery. (Discussion about using
measurement data to improve development
can use to focus resources and conduct
and maintenance processes appears in the
process improvements where they seem most
Software Engineering Management and
needed. Results from trend analysis may
Software Engineering Process KAs.)
indicate that a schedule is being or that
certain classes of faults may become more
likely unless some corrective action is taken 2.4. Perform Corrective and Preventive
in development. The predictive techniques Actions
help estimate testing effort and schedule and It is important that when quality management
predict failures. (More discussion on objectives are not met, corrective actions be
measurement in general appears in the documented and submitted so that the QMS
Software Engineering Process and Software be improved to prevent problem from
Engineering Management KAs. More reoccurring in future software projects. This
specific information on testing measurement requires that project participants have a way
is presented in the Software Testing KA.) of reporting software engineering process
Software quality measurement also includes and tools problems to an independent
measuring defect occurrences and applying organization that will document and monitor
statistical methods to understand what types the progress of the corrective actions and
of defects occur most frequently. Three inform the relevant stakeholders.
widely used software quality measurements
are error density (number of errors per unit 2.4.1. Defect Characterization [1*, c1s3]
size of documents/software), defect density To help in the elimination of the cause or
(number of defects found divided by the size causes of an existing nonconformity or
of the software), and failure rate (mean time undesirable situation to prevent recurrence,
to failure). Reliability models are built from software engineers can use Software Quality
failure data collected during software testing Control (SQC) techniques to find errors,
or from software in service and thus can be defects, and failures in their processes and
used to estimate the probability of future products. When tracking errors, defects and
failures and assist in decisions about when to failures, the software engineer is interested in
stop testing. This information can be used in the number and types of incidents. Numbers
SPI to determine methods to prevent, reduce alone, without classification, might be
or eliminate defect recurrence. The insufficient to help in identifying the

Software Quality 12–8 © IEEE – SWEBOK Guide V4


underlying causes and thus to prevent them in not only testing of a software. A key attribute
the future. Therefore, software engineers of SQA, in critical systems, is the objectivity
should establish a meaningful defect of the SQA function concerning the quality
classification taxonomy to describe and of a software product. In this case, the SQA
categorize such anomalies. One probable function might also be organizationally
action resulting from peer reviews and testing independent of the project; that is, free from
findings is to remove these errors and defects technical, managerial, and financial pressures
early from the work product under [6]. SQA has two aspects: product assurance
examination. and process assurance, which are explained
in Section 2.3.
Other SQM activities attempt to eliminate
their causes (e.g., root cause analysis (RCA)). The software quality plan (in some industry
RCA activities include analyzing and sectors, it is termed the software quality
summarizing the findings to find root causes assurance plan (SQAP)) defines the activities
and using measurement techniques to and tasks used to ensure that software
improve the software engineering processes, developed for a specific product satisfies the
techniques and tools. (Process improvement project’s established requirements and user
is primarily discussed in the Software needs within project cost and schedule
Engineering Process KA. RCA is further constraints and is commensurate with project
discussed in the Engineering Mathematical risks. The SQAP first ensures that quality
Foundations KA.) targets are clearly defined and understood.
Data on errors and defects found during SQA The SQAP’s quality activities and tasks are
and control techniques may be lost unless specified, along with their costs, resource
they are recorded. For some techniques (e.g., requirements, objectives, and schedule in
peer reviews and inspections), software relation to related objectives, in the software
engineers are present to record such data and engineering management, software
to address issues and make decisions. In development and software maintenance
addition, when automated tools are used (see plans. The SQAP identifies documents,
Topic 4, Software Quality Tools), the tool standards, practices, and conventions
output may provide defect trends reports that governing the project and how these items are
can be provided to the organization’s checked and monitored to ensure adequacy
management. and compliance. The SQAP also identifies
measures; statistical techniques; procedures
for problem reporting and corrective action;
3. Software Quality Assurance Process resources such as tools, techniques, and
methodologies; security for physical media;
3.1. Prepare for Quality Assurance [1*, training; and SQA reporting and
c1s1.5] [6] documentation. Moreover, the SQAP
addresses the SQA activities of any other
Software quality assurance (SQA) is defined type of activity described in the software
as “a set of activities that define and assess plans — such as procurement of supplier
the adequacy of software processes to software for the project, commercial off-the-
provide evidence that establishes confidence shelf (COTS) software installation and
that the software processes are appropriate service after software delivery. It can also
for and produce software products of suitable contain acceptance criteria and reporting and
quality for their intended purposes.” To management activities that are critical to
correct a common misunderstanding, SQA is software quality. The SQA plan should not

Software Quality 12–9 © IEEE – SWEBOK Guide V4


conflict with the software configuration Standard [6], describe the many quality
management plan (see the Software assurance activities that should be conducted
Configuration Management KA) or any other early in a software project’s life cycle to
relevant project planning artifact. ensure quality. Software engineers should be
aware of the need to plan and execute SQA
Software quality encompasses several
activities at certain project milestones and
perspectives: the software process quality,
keep records of their execution. These
the software end-product quality and the
activities consist of document and code
software work products (also called
reviews as well as verification and validation
intermediary products) quality. The next
(V&V) activities, including testing (as
sections cover each perspective of software
detailed in Section 3.3.1 of this KA), which
quality knowledge a software engineer must
evaluate the output of a process’s compliance
have.
with its requirements and specifications.
3.2. Perform Process Assurance [1*,
Finally, software configuration management
c3s3.2–s3.3; ; c8 ;c9] [7, c25]
(SCM) is an important activity to ensure the
Crosby [2] and Humphrey [3] have quality of work products and software.
demonstrated that software quality Configuration management is defined as the
management (SQM) and software “discipline applying technical and
engineering process quality have a direct administrative direction and surveillance to:
effect on the quality of the final software
product. (Models and criteria that evaluate ● identify and document the functional
and improve the capabilities of software and physical characteristics of a
organizations are primarily project configuration item;
organization and management considerations ● control changes to those
and, as such, are covered in the Software characteristics;
Engineering Management and Software ● record and report change processing
Engineering Process KAs.) International and implementation status;
Organization for Standardization (ISO) 9000 ● verify compliance with specified
[10] proposes another process quality requirements.”
perspective, where a management system Software engineers should identify which
that oversees the processes’ actors, activities, work products and software artifacts require
controls, input, and outputs ensures the configuration management. In addition, they
quality of outputs (e.g., work products and should be familiar with source code
final product). A management system is versioning processes, which involve keeping
defined as a “set of interrelated or interacting track of baselined and incremental versions
elements of an organization to establish of the software and ensuring that changes
policies and objectives, and processes to different developers make do not interfere
achieve those objectives” [10]. This with one another, and they should know how
perspective requires software engineering to operate the version control tool kit. (Refer
organizations to take the time to describe to the Software Configuration Management
their policies, processes, and procedures with KA for more information about this process.)
enough detail that software engineer roles
3.3. Perform Product Assurance [1*,
and responsibilities are clear during life cycle
s3.2–s3.3] [7, c4s4.1.2]
activities (as detailed in the Software
Engineering Process KA). First, the software engineer must determine
the real purpose of the software to be
SQA activities, listed in the IEEE 730:2014

Software Quality 12–10 © IEEE – SWEBOK Guide V4


designed and constructed. Stakeholder characteristic. This international standard
requirements are paramount here. They also proposes a general data quality model
include quality requirements (called Quality that focuses on data quality as part of a
of Service Constraints in the Software computer system and defines quality
Requirements KA) and functional characteristics for target data used by humans
requirements. Thus, software engineers are and systems.
responsible for eliciting quality requirements Another software product quality perspective
that might not be explicit at the outset and for is the quality of work products. The term
understanding their importance and the work product means any artifact resulting
difficulty in defining them, measuring them, from a process used to create the final
and establishing them for final acceptance. software product. Work products include
Software engineers should understand how to system/subsystem specifications, software
define quality requirements as well as their requirements specifications for a system’s
quality targets to ensure they can effectively software components, software design
be measured at the acceptance stage of the descriptions, source code, software test
project. During the project planning, software documentation and test reports. Sound
engineers must keep these quality engineering practice requires that
requirements in mind. They must also intermediate work products relevant to
anticipate potential additional development quality be evaluated using work product
costs if attributes such as safety, security and reviews and inspections (discussed later in
dependability are important. this chapter) throughout the software
An international standard on what constitutes engineering process.
a software product’s many measurable 3.3.1. V&V and Testing [1*, c7] [11]
quality characteristics was reached and is
described in ISO/IEC 25010:2011 [4]. This Verification ensures that the product is built
standard proposes several software product correctly in that the output products of a life
quality models, consisting of characteristics cycle phase meet the specifications imposed
and sub-characteristics, for software product on them in previous phases. Verification is
quality and software quality in use. Another defined as “the process of evaluating a
is IEEE 982.1:2005 Standard Dictionary of system or component to determine whether
Measures to Produce Reliable Software. the products of a given development phase
These software characteristics are commonly satisfy the conditions imposed at the start of
called product quality requirements, which that phase” [11]. Alternatively, validation
are nonfunctional software requirements [7* ensures that the right product is built — the
C4s4.1.2]. Software engineers should know product fulfills its specific intended purpose.
the many software characteristics that can be It is defined as “the process of evaluating a
planned, implemented, and measured during system or component during or at the end of
software construction (e.g., functional the development process to determine
suitability, performance efficiency, whether it satisfies specified requirements.”
compatibility, usability, reliability, security, The purpose of V&V is to help the
maintainability, and portability). Software development organization build quality into
engineers should also know that certain the software throughout the development life
quality characteristics have conflicting cycle. V&V includes software testing tasks.
impacts. For example, trying to augment the Software testing is a necessary activity to
security characteristic by encrypting data ensure product quality. However, in most
might adversely affect the performance cases, software testing is insufficient to

Software Quality 12–11 © IEEE – SWEBOK Guide V4


establish confidence that the software fits its mathematics and formal specification
intended use. V&V tasks listed in IEEE languages.
Standard 1012:2016 [11] objectively assess 3.3.2. Static Analysis Techniques
products and processes throughout the life
cycle. This assessment demonstrates whether Static analysis techniques directly analyze a
the requirements are correct, complete, work product’s content and structure
accurate, consistent, and testable. The (including requirements, interface
verification process and the validation specifications, designs, and models) without
process should begin early in development or executing the software. Tools and techniques
maintenance. This prevents defects late in the for statically examining software work can
life cycle, which would incur rework and help software engineers in this task. For
significantly increase costs. Software example, code reading, peer review of a work
engineers should identify the product product, and static analysis of source code
integrity level and ensure the minimum V&V control flow are considered static techniques
tasks are assigned for key product features because they do not involve executing the
concerning both the product’s immediate software code.
predecessor and the planned specifications. 3.3.3. Dynamic Analysis Techniques
Optional V&V tasks are also listed and can
improve software product quality. Keeping a Dynamic analysis techniques involve
record of the traceability among software executing or simulating the software code,
work products can help augment the quality looking for errors and defects. Different
of the V&V activities. Traceability is defined dynamic techniques are performed
as the “ability to trace the history, application throughout software development,
or location of an object” [14]. maintenance, and operation. Generally, these
are testing techniques, but simulation and
Early planning of V&V activities ensures that model analysis are considered dynamic
each resource, role, and responsibility is analysis techniques. (See the Software
clearly assigned. The resulting V&V plan Engineering Models and Methods KA.) In
documents the various resources and their addition, black box testing is considered a
roles and SQA activities, as well as the dynamic analysis technique, as the software
techniques and tools to be used. Software engineer analyzes the output received
engineers should choose and apply the proper following the entry of inputs. (See the
V&V task depending on the software Software Testing KA.)
integrity level. (Refer to Section 3.1.3.) V&V
can also be executed by an independent 3.3.4. Formal Analysis Techniques
organization for very critical software. Formal analysis techniques (also called
Independent verification and validation formal methods) are “mathematical
(IV&V) are defined as “V&V performed by approaches to software development where
an organization that is technically, you define a formal model of the software.
managerially, and financially independent of You may then formally analyze this model to
the development organization” [11]. search for errors and inconsistencies” [7*,
Software V&V tasks can be sorted into static, c10s10.5]. Sometimes, the software
dynamic and formal tasks [20]. Dynamic requirements may be written using a more
techniques involve executing the software; formal specification language known as
static techniques involve analyzing formal methods. They are notably used to
documents and source code but not executing verify software requirements and designs.
the software; formal techniques use They have mostly been used to verify crucial

Software Quality 12–12 © IEEE – SWEBOK Guide V4


parts of critical systems, such as specific the work products to identify defects for
security and safety requirements. (See also removal” [14]. For example, during software
Formal Methods in the Software Engineering development, a code review (often done by
Models and Methods KA.) Different groups using a pull request technique/tool) occurs
may perform testing during software when a peer reviews the code, often at the
development, including groups independent software developer’s request, before it can be
of the development team. The Software merged into a project.
Testing KA is devoted entirely to this subject. Reviews are valuable because they can
3.3.5. Software Quality Control and Testing identify issues early in development or even
[1*, c7s7.10] before a component is designed. Fixing a
defect in a component that has been coded is
Testing is considered an important product
much more expensive than catching it
quality control activity part of a software
beforehand. Review and audit processes are
development project’s V&V processes.
broadly defined as static activities, meaning
Quality Control is a set of activities that
that no software or models are executed.
measure, evaluate and report on the quality of
Instead, they examine software engineering
software project artifacts throughout the
artifacts (also called intermediary or work
project life cycle [25]. Software testing is an
products) concerning standards established
important quality control activity to ensure
by the organization or project for those
software quality. Software testing is one of
artifacts.
many verification activities that confirm that
software development output meets input Different types of work product reviews (e.g.,
requirements. IEEE 730:2014 [6] lists the formal, and informal) are distinguished by
many testing and retesting activities software purpose, level of independence, tools and
engineers should plan, execute, and record. It techniques used, roles involved, and by the
also recommends that testing completion subject of the activity. Reviews play
criteria be set. Software engineers should important roles in software quality, in SCM,
plan the testing activities, including levels, and in the sharing of knowledge among
techniques, measures, and tools. (Refer to the colleagues. However, these different roles
Testing KA for details about the knowledge share a single purpose — to ensure the quality
software engineers should have about of the delivered products. Reviews should be
software testing.) part of the software engineering culture and
should be planned, executed, and
documented during the software life cycle. In
3.3.6. Technical Reviews and Audits [1*, c5, Agile life cycles, pair programming invites
c6] [23, s4, s5] continuous reviews. Different review types
We have seen SQC techniques for assessing for work products are described in the
the quality of the software in the previous ISO/IEC 20246:2017 Standard [12]: Ad hoc
section. For the other artefacts, product reviews — unstructured reviews where each
quality control is assessed using reviews and reviewer is expected to find as many defects
inspections of these work products. These as possible of any type; Checklist-based
SQC activities are planned and executed reviews — systematic reviews identifying
during development, maintenance, and issues based on checklists; Scenario-based
operations activities [17]. Peer reviews are reviews — reviews where reviewers are
defined as “the review of work products provided with structured guidelines on how
performed by peers during development of to read through the work product under
review; Perspective-based reviews —

Software Quality 12–13 © IEEE – SWEBOK Guide V4


reviews where reviewers take on different readiness reviews ascertain that the system
stakeholder viewpoints and review the work design is ready for production and that the
product from that stakeholder’s viewpoint; project has accomplished adequate
and Role-based reviews — reviews in which production planning for entering production.
the reviewer evaluates the work product from
the perspective of various stakeholder roles,
which might differ from their daily role. 4. Software Quality Tools [1*, c3s3.2.3,
Audits are more formal activities that are c7s7.8.1, c7s7.11]
often mandated to be performed by third Software tools improve software quality.
parties to ensure independence. In mature Simple tools can be forms and checklists
organizations, technical reviews and audits (e.g., a requirements traceability matrix or a
are fully integrated with the overall project code review checklist). But automated tools
plans. Therefore, technical reviews and can also be of great help to improve software
audits should be planned, approved, and efficiency and quality. Examples of
conducted. Although a project audit often automated tools are tools that allow code
addresses the whole project’s current state, versioning/branching (e.g., Git) and pull
technical reviews can also be more focused requests for code review. DevOps tools in
and address a specific project phase [24]. services/scripts like on-demand
System requirements reviews help ensure environments, continuous
that the level of understanding of top-level integration/continuous delivery (CI/CD),
system requirements is adequate to support code quality assessment, and automated
further requirements analysis and design testing are important contributors to software
activities and that the system can proceed into quality. (See the Software Operations KA
initial system design with acceptable risk; discussion about tools.)
System functional or preliminary design
These tools are known as static and dynamic
reviews help ensure that the system under
analysis tools. Static analysis tools input
review can proceed into preliminary or
source code, perform syntactical and
detailed design with acceptable risk and that
semantic analysis without executing the
all system requirements and functional
code, and present results to users. There is a
performance requirements derived from the
large variety in the depth, thoroughness and
approved preliminary system specification
scope of static analysis tools that can be
are defined and consistent with the project
applied to artifacts, including models, and
budget, program schedule, risk, and other
source code. (See the Software Construction,
program and system constraints; Preliminary
Software Testing, and Software Maintenance
design reviews help ensure that the
KAs for descriptions of dynamic analysis
preliminary design for the system under
tools.) Categories of static analysis tools
review is sufficiently mature and ready to
include the following: Tools that facilitate
proceed into detailed design and can meet the
and partially automate reviews and
stated performance requirements within
inspections of documents and code. These
program budget, schedule, risk and other
tools can route work to different participants
program and system constraints; Test
to partially automate and control the review
readiness reviews assess test objectives, test
process. In addition, they allow users to enter
methods and procedures, test scope, safety,
defects found during inspections and reviews
readiness for the project test and evaluation,
for later removal; Tools that help
and whether test resources have been
organizations perform software safety hazard
properly identified and obtained; Production
analysis. These tools provide, for example,

Software Quality 12–14 © IEEE – SWEBOK Guide V4


automated support for failure mode and engineering environments and software test
effects analysis (FMEA) and fault tree environments and produce visual displays of
analysis (FTA); Tools that support tracking quantified data in graphs, charts, and tables.
of software problems. These tools enable These tools sometimes include the
entry of anomalies discovered during functionality to perform statistical analysis
software testing and subsequent analysis, on data sets (to discern trends and make
disposition, and resolution. Some tools forecasts). Some of these tools provide defect
include support for workflow and for and removal injection rates, defect densities,
tracking problem resolution status; and Tools yields, and distribution of defect injection
that analyze data captured from software and removal for each life cycle phase.

MATRIX OF TOPICS VS. REFERENCE MATERIAL


Topic Laporte and April Sommerville IEEE Wiegers
2018 [1*] 2016 [7*] Software 2013 [13*]
Code of
Ethics [5*]

1. Software Quality Fundamentals

1.1. Software Engineering Culture and Ethics Ch. 1s1.6, Ch. 2 X

1.2. Value and Costs of Quality Ch. 2s2.2

1.3. Standards, Models and Certifications Ch. 4 Ch. 24s24.2

1.5. Software Dependability and Integrity Levels Ch. 4s4.8.2 Ch. 10


Ch. 7s7.3.3

2. Software Quality Management Process

2.1. Software Quality Improvement Ch 9s9.9

2.2. Plan Quality Management

2.3. Evaluate Quality Management Ch. 10 Ch. 24s24.5

2.4. Perform Corrective and Preventive action Ch. 1,s3

3. Software Quality Assurance Process

3.1. Prepare for Quality Assurance Ch. 1s1.5 Ch. 14

3.2. Perform Process Assurance Ch. 3s3.2-s3.3 Ch. 25


Ch. 8
Ch. 9

Software Quality 12–15 © IEEE – SWEBOK Guide V4


3.3. Perform product assurance Ch. 3s3.2-3.3 Ch. 4s4.1.2
Ch. 7
Ch. 5

4. Software Quality Tools c3s3.2.3, c7s7.8.1, x


c7s7.11

FURTHER READINGS
IEEE 730-2014, “IEEE Standard for and used by all organizations involved in the
Software Quality Assurance Processes,” management, development, testing and
2014 [6]. Requirements for initiating, maintenance of systems and software.
planning, controlling, and executing the N. Leveson, Safeware: System Safety and
Software Quality Assurance processes of a Computers [15]. This book describes the
software development or maintenance importance of software safety practices and
project are established in this standard. how these practices can be incorporated into
software development projects.
IEEE Std 1012-2016, “IEEE Standard for
T. Gilb and D. Graham, Software Inspection
System, Software, and Hardware
[16]. This book introduces measurement and
Verification and Validation,” 2016 [11].
statistical sampling for reviews and defects.
Verification and validation (V&V) processes
It presents techniques that produce quantified
are used to determine whether the
results for reducing defects, improving
development products of a given activity
productivity, tracking projects and creating
conform to that activity’s requirements and
documentation.
whether the product satisfies its intended use
and user needs. V&V life cycle process
K. E. Wiegers, Peer Reviews in Software: A
requirements are specified for different
Practical Guide [17*]. This book provides
integrity levels.
clear, succinct explanations of different peer
ISO/IEC Std 20246-2017, “Software and
review methods distinguished by level of
Systems Engineering — Work Product
formality and effectiveness. It provides
Reviews,” 2017 [12]. This international
pragmatic guidance for implementing the
standard establishes a generic framework for
methods and for determining which methods
work product reviews that can be referenced
are appropriate for given circumstances.

REFERENCES
[1*] C. Y. Laporte, A. April, Software and Evaluation (SQuaRE) — Systems and
Quality Assurance, IEEE Press, 2018. Software Quality Models,” ed., 2011.
[2] P. B. Crosby, Quality Is Free, [5*] IEEE CS/ACM Joint Task Force on
McGraw-Hill, 1979. Software Engineering Ethics and
[3] W. Humphrey, Managing the Professional Practices, “Software
Software Process, Addison-Wesley, 1989. Engineering Code of Ethics and Professional
[4] ISO/IEC, “ISO/IEC 25010:2011 Practice
https://www.computer.org/education/code-
Systems and Software Engineering —
of-ethics.
Systems and Software Quality Requirements

Software Quality 12–2 © IEEE – SWEBOK Guide V4


[6] IEEE, “IEEE 730 Standard for [18] BS EN 50128:2011+A2:2020,
Software Quality Assurance Processes,” ed., “Standard for Railway Applications –
IEEE, 2014. Communications, Signaling and Processing
[7*] I. Sommerville, Software Systems – Software for Railway Control and
Engineering, 10th ed., New York: Addison- Protection Systems,” British-Adopted
Wesley, 2016. European Standard, August 10, 2020.
[8] RTCA, “DO-178C, Software [19] K. Iberle, They don’t care about
Considerations in Airborne Systems and quality, proceedings of STAR East, Orlando,
Equipment Certification,” ed., January 5, United States, 2013, available at
2012. Also known as ED-12C in https://kiberle.com/publications/.
EUROCAE. [20] D. Wallace, L. M. Ippolito, B. B.
[9] ISO/IEC, “ISO/IEC 15026-1:2019 Cuthill, Reference Information for the
Systems and Software Engineering — Software Verification and Validation
Systems and Software Assurance — Part 1: Process, National Institute of Standards and
Concepts and Vocabulary,” ed., ISO/IEC, Technology (NIST), U.D. Department of
2019. Commerce, Special Publication 500-234,
[10] ISO, “ISO 9000:2015 Quality 1996.
Management Systems — Fundamentals and [21] IEC 60300-1:2014, “Dependability
Vocabulary,” ed., ISO, 2015. Management — Part 1: Guidance for
[11] IEEE, “IEEE Std. 1012:2016, Management and Application,” version 3,
Standard for System and Software September 25, 2014.
Verification and Validation,” IEEE, 2016. [22] ISO/IEC TR 29110-1:2016, “System
[12] ISO/IEC 20246:2017, “Software and and Software Engineering — Lifecycle
systems engineering — Work product Profiles for Very Small Entities (VSEs) —
reviews,” ed., 2017. Part 1: Overview Dependability
Management — Part 1: Guidance for
[13*] K. E. Wiegers, Software
Management,” 2nd ed., 2016-06.
Requirements, 3rd ed., Redmond, WA:
Microsoft Press, 2013. [23] ISO/IEC TS 33061:2021,
“Information technology — Process
[14] IEEE/ISO/IEC, “IEEE/ISO/IEC
assessment — Process Assessment Model
24765: Systems and Software Engineering
for Software Life Cycle Processes,” 2021-
— Vocabulary,” 1st ed., 2017.
04.
[15] N. Leveson, Safeware: System Safety
[24] IEEE Std 15288.2:2014, “IEEE
and Computers, Addison-Wesley
Standard for Technical Reviews and Audits
Professional, 1995.
on Defense Programs.”
[16] T. Gilb and D. Graham, Software
[25] A guide to the Project management
Inspection, Addison-Wesley Professional,
Body of Knowledge, 7th edition, PMI, 2021,
1993.
368p.
[17*] K. Wiegers, Peer Reviews in
Software: A Practical Guide, Addison-
Wesley Professional, 2001.

Software Quality 12–3 © IEEE – SWEBOK Guide V4


CHAPTER 13

SOFTWARE SECURITY

ACRONYMS and reliability concerns, software developers


Common Criteria must pay attention to the security of the
CC software they develop. Secure software
development builds security by following a
SD Secure development life cycle set of established and/or recommended rules
LC and practices. Secure software maintenance
complements secure software development
by ensuring that no security problems are
INTRODUCTION introduced during software maintenance.

Security has become a significant issue in


software development because of increasing BREAKDOWN OF TOPICS FOR
malicious activity targeting computer SOFTWARE SECURITY
systems. In addition to the usual correctness
The breakdown of topics for the Software
Security knowledge area (KA) is shown in Figure
13.1.
and maintain them throughout the software
development life cycle.
Figure 13.1. The Breakdown of Topics for
the Software Security KA 1.3. Cybersecurity [12*][38]

1. Software Security Fundamentals [37, 9] Cybersecurity addresses security issues in


cyberspace, including the following:
A generally accepted belief about software
security is that it is much better to design security ● Social engineering attacks
into software than to patch it in after the software ● Hacking
is developed. To design security into software, ● The proliferation of malicious software
one must consider every development life cycle (malware)
stage. Secure software development involves ● Spyware
software requirements security, software design ● Other potentially unwanted software
security, software construction security and [12]
software testing security. In addition, security
must be considered during software maintenance, Software engineers should consider the
as security faults and loopholes can be and often mitigation of such risks as part of software
are introduced during maintenance. development.

1.1. Software Security [10*] 2. Security Management and Organization


[1*, c7][13]
Security is a product quality characteristic
representing the degree to which a product or Security governance and management are most
system protects information and data so that effective when they are systematic; in other
persons or other products or systems have data words, when they are woven into the culture and
access appropriate to their types and levels of fabric of organizational behaviors and actions.
authorization [10]. (For more information about Project managers need to elevate software
product quality, refer to the Software Quality security from a stand-alone technical concern to
KA.) an enterprise issue [1].

1.2. Information Security [11*] 2.1. Capability Maturity Model [3*,


c22][14]
Information security preserves confidentiality,
integrity and availability of information. Other Many organizations practice security
properties, such as authenticity, accountability, engineering in the development of computer
non-repudiation and reliability can also be programs, including operating systems, functions
involved [11]. Confidentiality is the property of that manage and enforce security, packaged
ensuring that information is not disclosed to software products, middleware, and applications.
unauthorized individuals, entities or processes. Therefore, a diverse array of individuals must
Integrity is the property of accuracy and know how to apply appropriate methods and
completeness. Availability is the property of practices, including product developers, service
being accessible and usable on demand by an providers, system integrators, system
authorized entity. Software engineers should administrators and even security specialists.
define the security properties of their software
Software Security

Systems Security Engineering — Capability Software is only as secure as its development


Maturity Model (SSE-CMM), which helps process. Security must be built into software
measure the process capability of an organization engineering to ensure software security. The
that performs risk assessments [14], can be an SDLC concept is one trend that aims to do this.
important tool. SDLC uses a classical spiral model that views
security holistically from the perspective of the
2.2. Information Security Management System software life cycle and ensures that security is
[15*] inherent in software design and development, not
an afterthought later in production. The SDLC
International Organization of process is claimed to reduce software
Standardization/International Electrotechnical maintenance costs and increase software
Commission (ISO/IEC) 27001:2013 specifies reliability against security-related faults.
the requirements for establishing, implementing,
maintaining and continually improving an Recently, DevSecOps (meaning the integration
information security management system of development, security and operations) has
(ISMS) within the organizational context [15]. emerged. Beyond SDLC, DevSecOps includes an
Software that is part of an ISMS in an
approach to culture, automation and platform
organization complies with the security policy.
design to make the software life cycle as Agile
In other words, some software security
and responsible as Agile development and
properties come from the policy for ISMS.
continuous integration (CI).
2.3. Agile Practice for Software Security
3.2. Common Criteria for Information
[4*,c15,c16]
Technology Security Evaluation
[3*, c22, c25][34][35]
Agile teams need to understand and adopt
security practices and take more responsibility
Security evaluation establishes confidence in the
for their systems’ security. Security
security functionality of IT products and the
professionals must learn to accept change, work
assurance measures applied to them. The
faster and more iteratively, and think about
evaluation results may help consumers
security risks and how to manage risks in
determine whether IT products meet their
incremental terms. Finally, and most important,
security needs. ISO/IEC 15408, named
security needs to become an enabler instead of a
Common Criteria (CC) for Information
blocker. The keys to a successful Agile security
Technology Security Evaluation, is useful as a
program are the involvement of the security
guide for developing, evaluating and/or
team and developers, enablement, automation,
procuring IT products with security
and agility to keep up with Agile teams [4].
functionality [34].
3. Software Security Engineering and
CC addresses the protection of assets from
Processes
unauthorized disclosure, modification or loss of
use. The categories of protection relating to
3.1. Security Engineering and Secure
these three types of security failure are
Development Life Cycle (SDLC)
commonly called confidentiality, integrity and
[1*, c1][16*][36]
availability, respectively.
4. Security Engineering for Software Systems A security pattern describes a particular
[1*,c1,c3][3*,c1,c3] recurring security problem that arises in a
specific context and presents a well-proven
4.1. Security Requirements generic solution [21].
[1*,c3][2*,c2][3*,c20,c30][18]
4.4. Construction for Security
Software requirements security deals with [1*,c5][3*,c20,c31][22, 23, 24]
clarifying and specifying security policy and
objectives into software requirements, laying the Software construction security concerns how to
foundation for security considerations in write programming code for specific situations
software development. Factors to consider in this to address security considerations. The term
phase include software requirements and threats software construction security can mean
or risks. The former refers to the specific different things to different people. It can mean
functions required for security; the latter refers to the way a specific function is coded so that the
the possible ways that software security is code itself is secure, or it can mean the coding
threatened. of security into software. Unfortunately, most
people entangle the two meanings without
4.2. Security Design distinction. One reason for such confusion is
[1*,c4][2*,c5][3*,c20,c31][17,40] that it is unclear how to ensure a specific coding
is secure. For example, in the C programming
Security design concerns how to prevent language, the expressions “i<<1” (shift the
unauthorized disclosure, creation, change, binary representation of i’s value to the left by
deletion or denial of access to information and one bit) and “2*” (multiply the value of variable
other resources. It also concerns how to tolerate i by constant 2) mean the same thing
security-related attacks or violations by limiting semantically, but do they have the same security
damage, continuing service, speeding repair and
ramifications?
recovery, and failing and recovering securely.
Access control is a fundamental concept of
The answer could be different for different
security; ensuring the proper use of cryptology
combinations of ISAs and compilers. Because
is also important.
of this lack of understanding, software
construction security — in its current state —
Software design security deals with the design
mostly refers to the second aspect mentioned
of software modules that fit together to meet the
security objectives specified in the security above: the coding of security into software.
requirements. This step clarifies the details of Coding of security into the software can be
security considerations and develops the achieved by following recommended rules. A
specific steps for implementation. Factors few such rules follow:
considered may include frameworks and access
modes that set up the overall security ● Structure the process so that all
monitoring/enforcement strategies, as well as sections requiring extra privileges are
the individual policy enforcement mechanisms. modules. The modules should be as
small as possible and perform only the
4.3. Security Patterns [1*,c4][19, 20, 21] tasks that require those privileges.
● Ensure that any assumptions in the
program are validated. If this is not
Software Security

possible, document them for the Security testing ensures that the implemented
installers and maintainers so they know software meets the security requirements. It also
the assumptions attackers will try to verifies that the software implementation
invalidate. contains none of the known vulnerabilities.
● Ensure that the program does not share Whereas general software testing methods can
objects in memory with any other handle the former, the latter requires security-
program. specific testing methods. (For more information
● Check every function’s error status. Do about testing, please refer to the Software Testing
not recover unless neither the error’s KA.)
cause nor its effects affect any security
considerations. The program should There are two approaches to security-specific
restore the state of the software to the testing. One is to detect programming language
state it had before the process began or implementation-specific vulnerabilities by
and then terminate. static analysis of the source code, which can be
automated using tools. The other is the
Although there are no bulletproof ways to penetration test, also known as the ethical
achieve secure software development, some hacking test. It detects vulnerabilities in software
general guidelines exist that can be helpful. behavior. It can be automated using tools such as
These guidelines span every phase of the web application scanners and fuzzing tools.
software development life cycle. The Computer Security experts who are skilled in the latest
Emergency Response Team (CERT) publishes security in the application domain should
reputable guidelines, and the following are its conduct these tests.
top 10 software security practices (the details
can be found in [22]): 4.6. Vulnerability Management
[1*,c5][3*,c24][28,29, 30]
1. Validate input.
2. Heed compiler warnings. Using sound coding practices can help
3. Architect and design for security substantially reduce software defects commonly
policies. introduced during implementation [1]. Such
4. Keep it simple. common security defects are categorized and
5. Default deny. shared with databases: the Common
6. Adhere to the principle of least Vulnerabilities and Exposures (CVE) [28],
privilege. Common Weakness Enumeration (CWE) [29],
7. Sanitize data sent to other software. and Common Attack Pattern Enumeration and
8. Practice defense in depth. Classification (CAPEC) [30]. Programmers can
9. Use effective quality assurance refer to these databases for security
techniques. implementation, and some tools are available to
10. Adopt a software construction security check common vulnerabilities in codes.
standard.
5. Software Security Tools
4.5. Security Testing
[1*,c5][2*,c7][3*,c24,c31][26, 27] 5.1. Security Vulnerability Checking
Tools [1*,c6][25]
Some source code analysis tools check codes to physical security and physical asset tracking
detect security problems such as security controls [31].
vulnerabilities. However, identifying security
vulnerabilities is complicated by the fact that 6.2. Security for IoT Software [32,33]
they often appear in hard-to-produce software
states or crop up in unusual circumstances [1]. As part of today’s IoT (Internet of Things),
Security analysis tools can help, but they cannot systems are interconnected with many other
find all vulnerabilities. devices, especially back-end systems suffering
from all the well-known security flaws inherent
5.2. Penetration Testing Tools [2*,c4] in today’s business IT. Attackers gaining access
to business IT platforms, for instance, by
Penetration testing tests a system in its final exploiting browser vulnerabilities, will likely
production environment. These tools submit also gain access to weakly protected IoT
malformed, malicious and random data to a industrial devices. This can cause severe
system’s entry points in an attempt reveal faults damage, including safety incidents. Hence, the
— a process commonly called fuzzing [2]. introduction of a massive number of end points
from the consumer or industrial environment
6. Domain-Specific Software Security creates fertile ground for the exploitation of
weak links. Hardening these end points,
securing device-to-device communications, and
ensuring device and information credibility in
6.1. Security for Container and Cloud what until now have been closed, homogeneous
[31] systems present new challenges.
Comprehensive risk and threat analysis
Cloud infrastructure and services are often
methods, as well as management tools for IoT
inexpensive and easy to provision, which can
platforms, are required [33].
quickly lead to having many assets strewn all
over the world and forgotten. These forgotten
assets are like a ticking time bomb, waiting to
6.3. Security for Machine Learning-
explode into a security incident [31]. Based Application [39,c8]
One important difference with cloud Although machine learning techniques are
environments is that physical assets and widely used in many systems, machine learning
protection are generally not a concern. presents a specific vulnerability: Attackers can
Developers can gleefully outsource asset tags, change the decisions of machine learning models.
anti-tailgating, slab-to-slab barriers, placement There are two kinds of attacks: model poisoning,
of data center windows, cameras, and other which attacks training data, and evasion, which
attacks inputs to trained models [39].
Software Security

MATRIX OF TOPICS VS. REFERENCE MATERIAL


Topic Allen et al. McGrow Bishop 2019 Bell 2017 [4*]
2018 [1*] 2006 [2*] [3*]

1. Software Security Fundamentals

1.1. Software Security

1.2. Information Security

1.3. Cybersecurity Ch. 23

2. Security Management and Ch. 7

Organization

2.1. Capability Maturity Model Ch. 22

2.2. Information Security


Management System

2.3. Agile Practice for Software Ch. 15, Ch. 16

Security

3. Software Security Engineering Ch. 9

and Processes

3.1. Security Engineering and Ch. 1 Ch. 4

Secure Development Life Cycle

3.2. Common Criteria for Ch. 22, Ch. 25

Information Technology Security


Evaluation
4. Security Engineering for Ch. 1, Ch. 15, Ch.

Software Systems 1, Ch. 3

4.1. Security Requirements Ch. 3 Ch. 2 Ch. 20, Ch. 31 Ch. 5, Ch. 8

4.2. Security Design Ch. 4 Ch. 5 Ch. 20, Ch. 31 Ch. 8

4.3. Security Patterns Ch. 4

4.4. Construction for Security Ch. 5 Ch. 20, Ch. 31

4.5. Security Testing Ch. 5 Ch. 24, Ch. 31 Ch. 10, Ch. 11

4.6. Vulnerability Management Ch. 24 Ch. 6

5. Software Security Tools

5.1. Security Vulnerability Checking Ch. 6 Ch. 6

Tools

5.2. Penetration Testing Tools Ch. 4 Ch. 31 Ch. 11, Ch. 12

6. Domain-Specific Software
Security

6.1. Security for Container and


Cloud
Software Security

6.2. Security for IoT Software

6.3. Security for Machine Learning-


Based Application

FURTHER READING ● [5] Tony Hsiang-Chih Hsu, Hands-On


Security in DevOps: Ensure continuous
● [A] John Viega, Building Secure Software: security, deployment, and delivery with
How to Avoid Security Problems the Right DevSecOps, Packt Publishing, 2018.
Way, Addison-Wesley, 2011.
● [6] Tony Hsiang-Chih Hsu, Practical
● [B] Loren Kohnfelder, Designing Secure Security Automation and Testing: Tools
Software: A Guide for Developers, No and techniques for automated security
Starch Press, 2021. scanning and testing in DevSecOps, Packt
Publishing, 2019.
● [C] C. Warren Axelrod, Engineering Safe
and Secure Software Systems, Artech ● [7] Glenn Wilson, DevSecOps: A leader’s
House Publishers, 2012. guide to producing secure software without
compromising flow, feedback and
REFERENCES continuous improvement, Rethink Press,
2020.
● [1*] Julia H. Allen, Sean J. Barnum,
Robert J. Ellison, Gary McGraw, and ● [8] Liz Rice, Container Security:
Nancy R. Mead, Software Security Fundamental Technology Concepts That
Engineering: A Guide for Project Protect Containerized Applications,
Managers, Addison-Wesley Professional, O’Reilly & Associates Inc., 2020.
2008.
● [9] ISO/IEC/JTC1 SC27 Standards:
● [2*] Gary McGraw, Software Security: Trustworthiness, Cryptography, Data
Building Security In, Addison-Wesley security, Cryptography, Security evaluation
Professional, 2006. and testing, Security control, Identity
management and privacy technologies.
● [3*] Matt Bishop, Computer Security, 2nd
Edition, Addison-Wesley Professional, ● [10*] ISO/IEC 25010:2011 Systems and
2019. software engineering — Systems and
software Quality Requirements and
● [4*] Laura Bell, Michael Brunton-Spall, Evaluation (SQuaRE) — System and
Rich Smith, Jim Bird, Agile Application software quality models.
Security, O’Reilly, 2017.
● [11*] ISO/IEC 27000:2018 Information Services, and Identity Management,
technology — Security techniques — Prentice Hall, 2005.
Information security management systems
— Overview and vocabulary. ● [21] Markus Schumacher, Eduardo
Fernandez-Buglioni, Duane Hybertson,
● [12*] ISO/IEC 27032:2012 Information Frank Buschmann, Peter Sommerlad,
technology — Security techniques — Security Patterns: Integrating Security and
Guidelines for cybersecurity. Systems Engineering, Wiley, 2006.

● [13] ISO/IEC 19770-1:2017 Information ● [22] Robert C. Seacord, The CERT C


technology — IT asset management — Secure Coding Standard, Addison-Wesley
Part 1: IT asset management systems — Professional, 2008.
Requirements.
● [23] Robert C. Seacord, Secure Coding in
● [14] ISO/IEC 21827:2008 Information C and C++, Addison-Wesley Professional,
technology — Security techniques — 2013.
Systems Security Engineering —
Capability Maturity Model (SSE-CMM). ● [24] David Long, Fred Mohindra, Dhruv
Seacord, Robert C. Sutherland, Dean F.
● [15*] ISO/IEC 27001:2013 Information Svoboda, The CERT Oracle Secure Coding
technology — Security techniques — Standard for Java, 2011.
Information security management systems
— Requirements. ● [25] Jon Erickson, Hacking: The Art of
Exploitation, 2nd Edition, No Starch Press,
● [16] Michael Howard and Steve Lipner, 2008.
The Security Development Lifecycle,
Microsoft Press, 2006. ● [26] Karen Scarfone, Murugiah Souppaya,
Amanda Cody, Angela Orebaugh,
● [17] Frank Swiderski, Window Snyder, Technical Guide to Information Security
Threat Modeling: Design for Security, Testing and Assessment, NIST SP800-115,
Wiley, 2014. 2008.

● [18] Donald Firesmith, “Security use ● [27] PCI Security Standards Council, PCI
cases,” Journal of Object Technology, Vol. DSS: Payment Card Industry Data Security
2, No. 1, pp. 53-64, 2003. Standard, Version 3.2, 2017.

● [19] Eduardo Fernandez-Buglioni, Security ● [28] MITRE, “Common Vulnerabilities and


Patterns in Practice: Designing Secure Exposures (CVE),” https://cve.mitre.org/.
Architectures Using Software Patterns,
Wiley, 2013. ● [29] MITRE, “Common Weakness
Enumeration (CWE),”
● [20] Christopher Nagappan, Ramesh Lai, https://cwe.mitre.org/.
Ray Steel, Core Security Patterns: Best
Practices and Strategies for J2EE, Web
Software Security

● [30] MITRE, “Common Attack Pattern ● [40] Ian Sommerville, Software


Enumeration and Classification (CAPEC),” Engineering, 10th ed., Addison-Wesley,
https://capec.mitre.org/. 2016.

● [31] Chris Dotson, Practical Cloud


Security, O’Reilly, 2019.

● [32] “Internet of Things Security Best


Practices,” IEEE, 2017,
https://internetinitiative.ieee.org/resources/
reports-presentations-publications.

● [33] “IoT 2020: Smart and secure IoT


platform,” IEC, 2016,
https://www.iec.ch/basecamp/iot-2020-
smart-and-secure-iot-platform.

● [34] ISO/IEC 15408-1:2009 Information


technology — Security techniques —
Evaluation criteria for IT security — Part
1: Introduction and general model.

● [35] ISO/IEC 18045:2008 Information


technology — Security techniques —
Methodology for IT security evaluation.

● [36] DoD Enterprise DevSecOps,


https://software.af.mil/dsop/documents/.

● [37] Chuck Easttom, Computer Security


Fundamentals, 4th Edition, Pearson IT
Certification, 2019.

● [38] Yuri Diogenes, Erdal Ozkaya,


Cybersecurity — Attack and Defense
Strategies, Second Edition, Packt
Publishing, 2019.

● [39] Clarence Chio, David Freeman,


Machine Learning and Security:
Protecting Systems with Data and
Algorithms, O’Reilly, 2018.
Software Engineering Professional Practice V4.0

CHAPTER 14

SOFTWARE ENGINEERING PROFESSIONAL PRACTICE

ACRONYMS responsible and ethical manner. Because of the


widespread applications of software products in social
Association for Computing
ACM and personal life, software product quality can
Machinery
profoundly affect personal well-being and societal
The California Consumer Privacy harmony. Software engineers must handle unique
CCPA
Act engineering problems to produce software with known
characteristics and reliability. This requirement calls for
European Economic Area
EEA software engineers who possess the proper knowledge,
skills, training, and experience in professional practice.
European Network for
ENAEE Accreditation of Engineering Professional practice refers to a way of conducting
Education services to achieve certain standards or criteria in both the
European Union process of performing a service and the end product
EU resulting from the service. These standards and criteria
can include both technical and non-technical aspects. The
The General Data Protection concept of professional practice is especially applicable
GDPR
Regulation to professions with a generally accepted body of
International Engineering Alliance knowledge; code of ethics and professional conduct with
IEA penalties for violations; accepted processes for
accreditation, certification, qualification, and licensing;
International Electrotechnical and professional societies to provide and administer all
IEC
Commission these. Admission to these professional societies is often
predicated on a prescribed combination of education and
IEEE-CS Institute for Electrical and
experience.
Electronics Engineers —
Computer Society
A software engineer maintains professional practice by
International Federation for performing all work following generally accepted
IFIP
Information Processing practices, standards, and guidelines set forth by the
applicable professional society, such as the Association
IP Intellectual property for Computing Machinery (ACM), Institute for Electrical
International Organization for and Electronics Engineers (IEEE), or International
ISO Federation for Information Processing (IFIP). The
Standardization
Institute for Electrical and Electronics Engineers —
NDA Nondisclosure agreement Computer Society (IEEE-CS), International Organization
for Standardization/International Electrotechnical
UI/UX User interface/user experience Commission (ISO/IEC), and ISO/IEC/IEEE provide
internationally accepted software engineering standards.
World Intellectual Property
WIPO All of these standards and guidelines comprise the
Organization
foundation of the professional practice of software
WTO World Trade Organization engineering.

INTRODUCTION

The Software Engineering Professional Practice


knowledge area (KA) is concerned with the knowledge,
skills, and attitudes software engineers must possess to
practice software engineering in a professional,
Software Engineering
Professional Practice

Group Dynamics Communication


Professionalisms
And Psychology Skills

Accreditation, Dynamics of Reading,


Certification and Working in Understanding,
Qualification, Teams/Groups And Summarizing
and Licensing
Individual Writing
Code of Ethics Cognition
and Professional
Conduct Team and Group
Dealing with Communication
Problem
Nature and Role Complexity
of Professional Presentation
Societies Skills
Interacting with
Stakeholders
Nature and Role
of Software
Engineering Dealing with
Standards Uncertainty and
Ambiguity
Economic Impact
of Software
Dealing with
Equity, Diversity, and
Employment Inclusivity
Contracts

Legal Issues

Documentation

Trade-off Analysis
Software Engineering Professional Practice V4.0

Figure 14.1. Breakdown of Topics for the Software Accredited schools or programs have shown that
Engineering Professional Practice KA
they adhere to particular standards and maintain
certain qualities. In many countries, the basic
means by which engineers acquire knowledge is
BREAKDOWN OF TOPICS FOR by completing an accredited course of study.
SOFTWARE ENGINEERING Often, the accreditation process is independent
PROFESSIONAL PRACTICE of the government and is performed by private
membership associations. There are two major
The Software Engineering Professional Practice global accreditation organizations. One is the
KA’s breakdown of topics is shown in Figure International Engineering Alliance (IEA), of
14.1. which the Washington Accord is a constituent.
The subareas presented in this KA are The other is the European Network for
professionalism, group dynamics and Accreditation of Engineering Education
psychology, and communication skills. (ENAEE), which administers EUR-ACE®, the
label awarded to engineering degree programs at
the bachelor’s and master’s levels, listed by the
1. Professionalism European Commission.

A software engineer displays professionalism Although the accreditation process might differ
notably by adhering to a code of ethics and for each country and jurisdiction, the general
professional conduct and to standards and meaning is the same. Accreditation of an
practices established by the engineer’s institution’s course of study means “the
professional community. accreditation body recognizes an educational
institution as maintaining standards that qualify
One or more professional societies often the graduates for admission to higher or more
represent a professional community, and this is specialized institutions or professional practice.”
the case for the engineering community. Those
societies publish codes of ethics and 1.1.2. Certification and Qualification
professional conduct as well as criteria for
admittance to the community. Those criteria ISO/IEC 24773-1 Software and Systems
form the basis for accreditation and licensing Engineering — Certification of Software and
activities and may determine engineering Systems Engineering Professionals — Part 1:
competence or negligence. General Requirements define certification and
qualification. Certification contains
recertification. Qualification is similar to
certification but does not require re-
As software is used more widely and deeply in qualification. Certification refers to the
society, stakeholders’ requirements have confirmation of a person’s particular
likewise become wider and deeper. And as characteristics. A common type of certification
software has become socially vital, software is professional certification, which certifies a
engineers have worked to base the user person as being able to complete an activity in a
interface/user experience (UI/UX) on socially certain discipline at a stated level of competency.
inclusive concepts. Professional certification can verify the holder’s
ability to meet professional standards and to
1.1. Accreditation, Certification and apply professional judgment in solving or
Qualification, and Licensing [1*, cls4-s5, addressing problems. Professional certification
cls10] [2] [4*, c12s10] [6] [7] [8] [9] can also verify prescribed knowledge, mastery
of best practices and proven methodologies, and
professional experience.
1.1.1. Accreditation
An engineer usually obtains certification by
Accreditation certifies an organization’s
passing an examination in addition to meeting
competency, authority, or credibility.
other experience-based criteria. 1.2. Codes of Ethics and Professional Conduct
Nongovernmental organizations, such as [1*, cls7-cls9, c10s2, Appendix] [3*, c8] [4*,
professional societies, often administer these cls2] [5*, c33] [10] [11] [13*]
examinations. In software engineering,
certification testifies to one’s capability as a Codes of ethics and professional conduct
software engineer. describe the values and behavior that an
engineer’s professional practice and decisions
The IEEE-CS has enacted certification should embody. The professional community
programs [9]. Currently, they are classified in establishes a code of ethics and professional
the following levels, Associate conduct. This code exists in the context of
Software Developer, Professional Software societal norms and local laws and is adjusted to
Developer, and Professional Software agree with those norms and laws as needed. A
Engineering Master. The qualification and code of ethics and professional conduct can
certification programs are designed to confirm a offer guidance in the face of conflicting
software engineer’s knowledge of standard imperatives. More than one such code serves the
software engineering practices and to advance professional engineering community. For
the engineer’s career. A lack of qualification example, in 1999, IEEE-CS and ACM launched
or certification does not exclude the a joint Software Engineering Ethics and
individual from working as a software Professional Practices Task Force to publish a
engineer. Qualification or certification in code of ethics. In 2018, ACM published its
software engineering is voluntary. Most ACM Code of Ethics and Professional Conduct,
software engineers are not qualified or certified and in 2020, IEEE published a revision of its
under any program Code of Ethics which was originally approved
in 1912. Then, in 2021, IFIP published its Code
of Ethics and Professional Conduct, adapted
1.1.3. Licensing from ACM’s Code of Ethics and Professional
Conduct.
Licensing authorizes a person to perform certain
activities and take responsibility for resultant Once established, codes of ethics and
engineering products. The noun license refers to professional conduct are enforced by the
both that authorization and the document profession, as represented by professional
recording that authorization. Governmental societies or by a statutory body. Violations may
authorities or statutory bodies usually issue be acts of commission, such as concealing
licenses. inadequate work, disclosing confidential
information, falsifying information, or
Obtaining a license to practice requires an misrepresenting abilities. They may also occur
individual to meet a certain standard at a certain through omission, including failure to disclose
ability to practice or operate. Sometimes an risks or provide important information, failure to
entry-level requirement sets the minimum skills give proper credit or acknowledge references,
and capabilities to practice, and as the and failure to represent client interests.
professional moves through their career, the Violations of a code of ethics and professional
required skills and capabilities change and conduct may result in penalties and possible
evolve. expulsion from professional status.

Engineers are licensed to protect the public from Software engineers shall commit themselves
unqualified individuals. In some countries, no to making the analysis, specification, design,
one can practice as a professional engineer development, testing, and maintenance of
unless licensed; further, no company may offer software a beneficial and respected profession.
“engineering services” unless at least one Following their commitment to the health,
licensed engineer is employed there. safety, and welfare of the public, software
engineers shall adhere to the eight principles
concerning the public, client and employer,
Software Engineering Professional Practice V4.0

product, judgment, management, profession, Standards are valuable sources of information


colleagues, and self. about requirements and other guidance that can
support software engineers in everyday
Since the code of ethics and professional activities. Adherence to standards promotes
conduct may be introduced, modified, or discipline by enumerating minimal
replaced at any time, individual software characteristics of products and practices. That
engineers are responsible for continuing their discipline helps mitigate subconscious
studies to stay current in their professional assumptions or overconfidence in a design. For
practice. these reasons, organizations performing
software engineering activities often include
1.3. Nature and Role of Professional Societies conformance to standards as part of their
[1*, c2s3] [4*, c1s2] [5*, c35s1] organizational policies.

Professional societies comprise a mix of 1.5. Economic Impact of Software [3*, c1s1,
practitioners and academics. These societies c10s8] [4*, c1s1] [13*]
define, advance, and regulate their
corresponding professions. Professional The software has economic effects at the
societies help establish professional standards as individual, business, and societal levels. For
well as codes of ethics and professional conduct. example, software “success” may be determined
They also engage in related activities, which by a product’s suitability for a recognized
include the following: problem and by its effectiveness when applied
to that problem. At the individual level, an
• Establishing and promulgating a body of engineer’s continuing employment may depend
generally accepted knowledge on their ability and willingness to interpret and
• Providing the basis for licensing, certifying, execute tasks in meeting customers’ or
and accrediting employers’ needs and expectations. The
• Dispensing disciplinary actions customer’s or the employer’s financial situation
• Advancing the profession through may be positively or negatively affected by
conferences, training, publications, and software purchases.
standards
At the business level, software properly applied
Participation in professional societies assists to a problem can eliminate months of work and
individual engineers in maintaining and translate to elevated profits or more effective
sharpening their professional knowledge and organizations. Organizations that acquire or
relevancy and in expanding and maintaining provide successful software may become a boon
their professional network. to the society in which they operate by providing
both employment and improved services.
1.4. Nature and Role of Software Engineering However, the software’s development or
Standards [1*, c10s2] [2] [4*] [5*, c32s6] acquisition costs can be considerable, like those
of any major acquisition.
Software engineering standards cover a
remarkable variety of topics. They provide At the societal level, direct impacts of software
guidelines for the practice of software success or failure include the avoidance or
engineering and for processes to be used during experience of accidents, interruptions, and loss
the development, maintenance, and support of of service. Indirect impacts include the success
software. By establishing a common body of or failure of the organization that acquired or
knowledge and experience, software produced the software, increased or decreased
engineering standards establish a basis on which societal productivity, harmonious or disruptive
further guidelines may be developed. Appendix social order, and even the saving or loss of
B of this Guide presents IEEE, ISO/IEC, and property or life. In addition, as digitalization
ISO/IEC/IEEE software engineering standards progresses, easier and faster access to the
that support this Guide’s KAs. information needed may bring higher social
value.
1.6. Employment Contracts [1*, c6, c7] [10] • Limitations of the software engineer’s
[11] [12] and employer’s liability
• A communication matrix and/or
Software engineering services may be provided escalation plan
under a variety of client-engineer relationships. • Administrative details such as rates,
For example, the work may be done through a frequency of compensation, working
company-to-customer supplier arrangement, an hours, and working conditions
engineer-to-customer consultancy arrangement,
a direct-hire, or even through volunteering. In 1.7. Legal Issues [1*, c6, c11] [2] [3*, c5s3–
these situations, the customer and supplier agree c5s4] [4*, c12s3, c13s2]
that a product or service will be provided in
return for some consideration. Here, we are most Legal issues surrounding software engineering
concerned with engineer-to-customer professional practice include matters related to
arrangements and their attendant agreements or standards, trademarks, patents, copyrights, trade
contracts, whether they are of the direct-hire or secrets, professional liability, legal requirements,
consultant variety, and the issues they typically trade compliance, cybercrime, and data privacy.
address. It is therefore beneficial to know these issues
and their applicability. In addition, legal issues
A common concern in software engineering are jurisdictionally based, so software engineers
contracts is confidentiality. Employers derive must consult attorneys who specialize in the
commercial advantage from intellectual type and jurisdiction of any identified legal
property (IP), so they strive to protect that issues.
property from disclosure. Therefore, software
engineers are often required to sign
nondisclosure agreements (NDA) or IP 1.7.1. Standards
agreements as a precondition to working. These
agreements typically apply to information the Adherence to standards provides a defense from
software engineer could gain only through legal action or allegations of malpractice.
association with the customer. The terms of
these agreements may extend past the 1.7.2. Trademarks
association’s termination.
A trademark relates to any word, name, symbol,
Another concern is IP ownership. Rights to or device used in business transactions. It is used
software engineering assets — products, “to indicate the source or origin of the goods.”
innovations, inventions, discoveries, and ideas Trademark protection protects names, logos,
— may reside with the employer or customer, images, and packaging. However, if a name,
under explicit contract terms or relevant laws, if image, or other trademarked asset becomes a
those assets are obtained during the software generic term, trademark protection is nullified.
engineer’s relationship with that employer or
customer. Contracts differ in the ownership of The World Intellectual Property Organization
assets created using non-employer-owned (WIPO) is the authority that frames the rules and
equipment or information. regulations on trademarks. WIPO is the United
Nations agency dedicated to protecting the use
Finally, contracts can also specify, among other of IP as a means of stimulating innovation and
elements: creativity.
• The location at which work is
performed 1.7.3. Patents
• Standards to which that work will be
held Patents protect an inventor’s right to
• The system configuration used for manufacture and sell an idea. A patent consists
development of exclusive rights granted by a sovereign
government to an individual, group of
individuals, or organization for a limited period.
Software Engineering Professional Practice V4.0

Patents are an old form of idea-ownership standards and generally accepted practices to
protection and date to the 15th century. protect themselves against allegations of or
proceedings related to malpractice, negligence,
Application for a patent entail keeping and or incompetence.
producing careful records of the process that led
to the invention. In addition, patent attorneys For engineers (including software engineers),
help write patent disclosure claims in a manner professional liability is related to product
most likely to protect the software engineer’s liability. Under the laws and rules of their
rights. Note that if inventions are made during a jurisdiction, engineers may be held accountable
software engineering contract, ownership may for failing to fully and conscientiously follow
belong to the employer or customer or be jointly recommended practice; this is known as
held rather than belong to the software engineer. negligence. They may also be subject to laws
governing strict liability and implied or express
Rules vary concerning what is and what is not warranty, where, by selling the product, the
patentable. In many countries, software code is engineer is held to warrant that the product is
not patentable, but software algorithms may be. both suitable and safe for use. In some countries
Existing and filed patent applications can be (e.g., in the US), privity (a doctrine under which
found at WIPO. one can sue only the person selling the product)
is no longer a defense against liability actions.
1.7.4. Copyrights
Legal suits for liability can be brought under tort
Most governments give exclusive rights of an law in the US, allowing anyone who is harmed
original work to its creator, usually for a limited to recover their loss even if no guarantees were
time, enacted as copyright. Copyrights protect made. Because it is difficult to measure the
the way an idea is presented — not the idea itself. suitability or safety of software, failure to take
For example, they may protect the particular due care can be used to prove negligence on the
wording of an account of a historical event, part of software engineers. Engineers can defend
whereas the event itself is not protected. themselves against such an allegation by
Copyrights are long-term and renewable. As a showing that they followed standards and
form of IP, they date to the 17th century. generally accepted practices in developing the
product.
1.7.5. Trade Secrets
1.7.7. Legal Requirements
In many countries, an intellectual asset such as
a formula, algorithm, process, design, method, Software engineers must operate within local,
pattern, instrument, or compilation of national and international legal frameworks.
information may be considered a trade secret, Therefore, software engineers must know the
provided the asset is not generally known and legal requirements for the following:
may provide a business with some economic
advantage. The “trade secret” designation • Registration and licensing, including
provides legal protection if the asset is stolen. examination, education, experience, and
This protection is not subject to a time limit. training requirements
However, if another party derives or discovers • Contractual agreements
the same asset legally, then the asset is no longer • Noncontractual legalities, such as those
protected and the other party will also possess governing liability
all rights to use it.
Basic information on the international legal
1.7.6. Professional Liability framework can be accessed from the World
Trade Organization (WTO).
It is common for software engineers to be
concerned with professional liability matters. As
1.7.8. Trade Compliance
engineers provide services to a client or
employer, it is crucial that they adhere to
All software professionals must be aware of their actions and be transparent with users
legal restrictions on the import, export, or re- instead of manipulating them.
export of goods, services, and technology in the
jurisdictions in which they work. Such rules 1.7.10. Data Privacy
often concern export controls and classification;
transfer of goods; acquisition of necessary Software engineers should know that data
governmental licenses for foreign use of privacy is a key legal requirement in many
hardware and software; services and technology countries. The General Data Protection
by sanctioned nations, enterprises, or individual Regulation (GDPR), adopted on April 14, 2016,
entities; and import restrictions and duties. and enforceable since May 25, 2018,
Trade experts should be consulted for detailed regulates data protection and privacy in the
compliance guidance. European Union (EU) and the European
Economic Area (EEA). It also addresses the
1.7.9. Cybercrime transfer of personal data outside the EU and
EEA areas. The GDPR’s primary aim is to
Cybercrime refers to any crime that involves a enhance individuals’ control and rights over
computer, computer software, computer their data and to simplify the regulatory
networks, or embedded software controlling a environment for international business.
system. The computer or software may have
been used in the commission of a crime or have The regulation became a model for many
been the target of the crime. This category of national laws outside the EU, including the UK,
crime includes fraud, unauthorized access, spam, Chile, Japan, Brazil, South Korea, Argentina,
obscene or offensive content, threats, and Kenya. The California Consumer Privacy
harassment, theft of sensitive personal data or Act (CCPA), adopted on June 28, 2018, has
trade secrets, and use of one computer to many similarities with the GDPR.
damage or infiltrate other computers and
automated system controls.
1.8. Documentation [1*, c10s5.8] [3*, c1s5]
Computer and software users commit fraud by [4*] [5*, c32]
altering electronic data to facilitate illegal
activity. Forms of unauthorized access include Providing clear, thorough, and accurate
hacking, eavesdropping, and using computer documentation is the responsibility of each
systems in a way that is concealed from their software engineer. The adequacy of
owners. Many countries have laws that documentation is judged according to different
specifically cover cybercrimes, but many do not criteria, based on stakeholder needs. Good
have effective statutes, making cybercrime documentation complies with accepted
difficult to prosecute in some cases. The standards and guidelines. In particular, software
software engineer has a professional obligation engineers should document the following:
to consider the threat of cybercrime and to • Relevant facts
consider how the software system’s security will • Significant risks and trade-offs
protect the software and user information from • Warnings of undesirable or dangerous
accidental or malicious access, use, consequences from the use or misuse of the
modification, destruction, or disclosure. software
• Relevant information pertaining to attribute,
Dark patterns are deceptive UI/UX license type, and sourcing
interactions designed to mislead or trick users
into making them do something they may not Software engineers should avoid:
want to do. These patterns do not have the • Certifying or approving unacceptable
users’ interests in mind and aim for products
exploitability rather than usability. Creating • Disclosing confidential information
dark patterns is not good ethical practice. • Falsifying facts or data
Software engineers should be responsible for
Software Engineering Professional Practice V4.0

In addition, software engineers and their Trade-off analysis notably identifies competing
managers should provide the following and complementary software requirements to
documentation for other elements of the prioritize the final requirements defining the
software development organization to use: software to be constructed. (See Requirements
Negotiation in the Software Requirements KA
• Software requirements specifications, and Determination and Negotiation of
software design documents, details on the Requirements in the Software Engineering
software engineering tools used, software Management KA.)
test specifications and results, and details
about the adopted software engineering When an ongoing software development project
methods is late or over budget, a trade-off analysis is
• Problems encountered during the often conducted to decide which software
development process requirements can be relaxed or dropped given
the effects thereof. The first step in a trade-off
For external stakeholders (customers, users, analysis is establishing design goals (see
others), software documentation should provide Engineering Design in the Engineering
the following: Foundations KA) and setting the relative
importance of those goals. This permits the
• Information needed to determine whether identification of the solution that most nearly
the software is likely to meet customer and meets those goals; this means that the way the
user needs goals are stated is critically important.
• Description of safe and unsafe use of the
software Design goals may include minimizing monetary
• Explanation of how to protect sensitive cost and maximizing reliability, performance, or
information created by or stored using the other criteria on various dimensions. However,
software it is difficult to formulate a trade-off analysis of
• Clear identification of warnings and critical cost against risk, especially where primary
procedures production and secondary risk-based costs must
be weighed against each other.
Software use may include installation, operation,
administration, and performance of other
A software engineer must ethically conduct a
functions by various groups of users and support
trade-off analysis — notably by being objective
personnel. If the customer will acquire
and impartial when selecting criteria for
ownership of the software source code or the
comparing alternative problem solutions and
right to modify the code, the software engineer
assigning weights or importance to these criteria.
should provide documentation of the functional
In addition, any conflict of interest must be
specifications, the software design, the test suite,
disclosed upfront.
and the necessary operating environment for the
software. Documents should be kept for at least 2. Group Dynamics and Psychology
as long as the software product’s life cycle or the
time required by relevant organizational or Engineering work is often conducted in teams.
regulatory requirements. A software engineer should interact
cooperatively and constructively with others to
1.9. Trade-Off Analysis [3*, c1s2, c10] [4*, first determine and then meet needs and
c7s2, c13s4] [13*, c9s5.10]
expectations. Knowledge of group dynamics
and psychology is an asset when interacting
A software engineer often has to choose
with customers, coworkers, suppliers, and
between alternative problem solutions. The
subordinates to solve software engineering
outcome of these choices is determined by the
problems.
software engineer’s professional evaluation of
each alternative’s risks, costs, and benefits in 2.1.
cooperation with stakeholders. The software Dynamics of Working in Teams/Groups [3*,
engineer’s evaluation is called trade-off analysis. c1s6] [14*, c1s3.5, c10]
creatively develop a solution can be inhibited by
Software engineers must work with others. On the following:
the one hand, they work internally in
engineering teams; on the other hand, they work • The need for more knowledge
with customers, members of the public, • Subconscious assumptions
regulators, and other stakeholders. Performing • The volume of data
teams — those who demonstrate a consistent • Fear of failure or the consequence of failure
quality of work and progress toward goals — are • Culture, either of the application domain or
cohesive and possess a cooperative, honest and the organization
focused atmosphere. Individual and team goals • Lack of ability to express the problem
are aligned so the members naturally commit to • Perceived working atmosphere
and feel ownership of shared outcomes. • The individual’s emotional status

Team members facilitate this atmosphere by The effects of these inhibiting factors can be
being intellectually honest, using group thinking, reduced by cultivating good problem-solving
admitting ignorance, and acknowledging habits that minimize the impact of misleading
mistakes. They share responsibility, rewards, assumptions. The ability to focus is crucial, as is
and workload fairly. They communicate clearly intellectual humility. Both allow a software
and directly to one another and in documents engineer to suspend personal considerations and
and source code so information is accessible to consult with others freely, which is especially
everyone. Peer reviews about work products are important when working in teams.
framed in a constructive and nonpersonal way.
(See Reviews and Audits in the Software Engineers use basic methods to facilitate
Quality KA.) This allows all the members to problem-solving. (See Problem-Solving
pursue a continuous improvement and growth Techniques in the Computing Foundations KA.)
cycle without personal risk. Members of Breaking down problems and solving them one
cohesive teams demonstrate respect for one piece at a time reduces cognitive overload. By
another and their leader. taking advantage of professional curiosity and
pursuing continuous professional development,
One point to emphasize is that software engineers gain skills and knowledge. Reading,
engineers must be able to work in networking, and experimenting with new tools,
multidisciplinary environments and varied techniques and methods are all valid means of
application domains. Because software is professional development.
everywhere, from phones to cars, it affects
people’s lives far beyond the more traditional 2.3. Dealing with Problem Complexity [3*,
concept of software made for information c3s2] [4*, c1s1, c20s1-s5] [5*, c33]
management in a business environment.
Many, if not most, software engineering
2.2. Individual Cognition [3*, c1s6.5] [5*, c33] problems are too complex and difficult to
address as a whole or to be tackled by
Engineers want to solve problems. Every individual software engineers. When such
engineer strives to solve problems effectively circumstances arise, engineers typically use
teamwork and problem decomposition. (See
and efficiently. However, the limits and
Problem-Solving Techniques in the Computing
processes of individual cognition affect
Foundations KA.)
problem-solving. Individual cognition plays a
prominent role in problem-solving in software
engineering, in part because of the highly
Teams work together to deal with large,
abstract nature of software itself.
complex problems by sharing burdens and
drawing on one another’s knowledge and
An individual’s (in particular, a software creativity. When software engineers work in
engineer’s) ability to decompose a problem and teams, individual engineers’ different views and
abilities complement one another and help build
Software Engineering Professional Practice V4.0

a solution otherwise difficult to come by. Some or consulting with teammates and peers can
teamwork examples in software engineering are likely solve the problem.
pair programming (see Agile Methods in the
Software Engineering Models and Methods KA) When uncertainty or ambiguity cannot be
and code review (see Reviews and Audits in the overcome easily, software engineers or
Software Quality KA). organizations may regard it as a project risk.
When this is the case, work estimates or pricing
2.4. Interacting with Stakeholders [4*] are adjusted to mitigate the anticipated cost of
addressing it. (See Risk Management in the
The success of a software engineering endeavor Software Engineering Management KA.)
depends on positive interactions with
stakeholders. Stakeholders should provide 2.6. Dealing with Equity, Diversity, and
support, information, and feedback at all stages Inclusivity [4*] [14*, c10s7]
of the software life cycle. For example, during
the early stages, it is critical to identify all
The equity, diversity, and inclusivity
stakeholders and discover how the product will
environment can affect a group’s dynamics.
affect them to properly capture a sufficient
This is especially true when the group is
definition of stakeholder requirements.
geographically separated or communication is
infrequent because such separation elevates the
In Agile software development, the involvement importance of each contact. Intercultural
of stakeholders is even more essential than in communication is even more difficult if the
other types of development. First, during difference in time zones makes oral
development, stakeholders may provide communication less frequent.
feedback on specifications or early versions of
the software, changes of priority, and
Multicultural environments are prevalent in
clarification of detailed or new software
software engineering, perhaps more than in
requirements. Last, during software
other engineering fields, because of the strong
maintenance and until the end of product life,
trend of international outsourcing and the easy
stakeholders can provide feedback on evolving
shipment of software components
or new requirements and problem reports so the
instantaneously around the globe. For example,
software can be extended and improved. Clearly,
it is common for a software project to be divided
regular stakeholder involvement will lead to a
into pieces across national and cultural borders.
better application. It is vital to maintain open
It is also common for a software project team to
and productive communication with
consist of people from diverse cultural
stakeholders during the software product’s life
backgrounds.
cycle.
For a software project to succeed, team
2.5.
members must embrace tolerance of different
Dealing with Uncertainty and Ambiguity [4*,
cultural and social norms, acknowledging that
c4s1, c4s4, c11s5, c24s5] [14*, c9s4]
not all societies have the same social
expectations. The support of leadership and
As with engineers in other fields, software
management can facilitate tolerance and
engineers must often deal with and resolve
understanding. More frequent communication,
uncertainty and ambiguities while providing
including face-to-face meetings, can help
services and developing products. The software
mitigate geographical and cultural divisions,
engineer must reduce or eliminate any lack of
promote cohesiveness, and raise productivity.
clarity that is an obstacle to performing work.
Also, communicating with teammates in their
native language could be beneficial.
Often, uncertainty reflects a lack of knowledge.
If that is the case, investigating the issue by
In the software industry, gender bias is still
reading formal sources such as textbooks and
prevalent. Implementing broader recruiting
professional journals, interviewing stakeholders,
strategies, specific and measurable performance
evaluation criteria, and transparent procedures 3.2. Writing [3*, c1s5] [4*, c4s2-s3]
for assigning compensation can reduce gender
inequality in the software industry. These trends Software engineers can produce written
can contribute to building a diverse environment products requested by customers or required by
for all software engineers, regardless of their generally accepted practice. These written
gender. products may include source code, software
. project plans, software requirement documents,
risk analyses, software design documents,
3. Communication Skills software test plans, user manuals, technical
reports and evaluations, justifications, diagrams
A software engineer must communicate well, and charts, and so forth.
both orally and in reading and writing. To meet
software requirements and deadlines, engineers Clear, concise writing is important because
must establish clear communication with writing is often the primary method of
customers, supervisors, coworkers, and communication among relevant parties. In all
suppliers. Optimal problem-solving is made cases, written software engineering products
possible through the ability to investigate, must be accessible, understandable, and relevant
comprehend and summarize information. to their intended audience.
Customer product acceptance and safe product
use depend on relevant training and 3.3. Team and Group Communication [3*,
documentation. The software engineer’s career c1s6.8] [4*, c22s3] [5*, c27s1] [14*, c10s4]
success is affected by consistently providing
oral and written communication effectively and Effective communication among team and
on time. group members is essential to a collaborative
software engineering effort. Stakeholders must
3.1. Reading, Understanding, and Summarizing be consulted; decisions must be made, and plans
[4*, c4s5] [5*, c33s3] must be generated. The greater the number of
team and group members, the greater the need
Software engineers must be able to read and to communicate.
understand technical material. Technical
material includes reference books, manuals, However, the number of communication paths
research papers, and program source code. grows quadratically with the addition of each
team member. Furthermore, team members are
unlikely to communicate with anyone perceived
Reading is not only a primary way of improving to be removed from them by more than two
skills but also a way of gathering information for degrees (levels). This problem can be more
completing engineering goals. A software serious when software engineering endeavors or
engineer sifts through accumulated information, organizations are spread across national and
focusing on the pieces that will be most helpful. continental borders.
Customers may request that a software engineer
summarize the results of such information- Some communication can be accomplished in
gathering for them, simplifying or explaining it writing. Software documentation is a common
so that they can make the final choice among substitute for direct interaction. Email is another,
competing solutions. but although it is useful, it is not always enough.
Also, if one receives too many messages, it
Reading and comprehending source code are becomes difficult to identify the important
also components of information-gathering and information. Increasingly, organizations are
problem-solving. For example, when engineers using enterprise collaboration tools to share
modify, extend or rewrite software, they must information. In addition, electronic information
understand both its implementation, directly stores, accessible to all team members for
derived from the presented code, and its design, organizational policies, standards, common
which must often be inferred.
Software Engineering Professional Practice V4.0

engineering procedures, and project-specific


information, can be beneficial.

Some software engineering teams focus on face-


to-face interaction and promote such interaction
through office space arrangements. Although
private offices improve individual productivity,
other arrangements, such as co-locating team
members in physical or virtual spaces and
providing communal work areas, can boost
collaborative efforts.

3.4. Presentation Skills [3*, c1s5] [4*, c22]


[14*, c10s7–c10s8]

Software engineers rely on their presentation


skills during software life cycle processes. For
example, software engineers may walk
customers and teammates through software
requirements during the phase and conduct
formal requirements reviews. (See Requirement
Reviews in the Software Requirements KA.)
During and after software design, software
construction, and software maintenance,
software engineers lead reviews, product
walkthroughs (see Review and Audits in the
Software Quality KA), and training. These
require the ability to present technical
information to groups and solicit ideas or
feedback.

Therefore, the software engineer’s ability to


convey concepts effectively in a presentation
influences product acceptance, management,
and customer support. It also influences the
ability of stakeholders to comprehend and assist
in the product effort. This knowledge needs to
be archived in slides, knowledge write-ups,
technical white papers, and other material used
for knowledge creation.
MATRIX OF TOPICS VS. REFERENCE MATERIAL
Bott et al. Voland, 2003 Sommerville, McConnel, Tockey, 2004 Fairley, 2009
2000 [1*] [3*] 2016 [4*] 2004 [5*] [13*] [14*]
1. Professionalism
1.1. Accreditation, c1s5, c12s10
Certification and c1s10
Qualification, and
Licensing
1.2. Codes of Ethics c1s7-s9, c10s2, c1s2
and Professional App
Conduct
1.3. Nature and c2s3 c1s2 c35s1
Role of Professional
Societies
1.4. Nature and c10s2, * c32s6
Role of Software
Engineering
Standards
1.5. Economic c1s1, c1s1 *
Impact of Software c10s8
1.6. Employment c6, c7 *
Contracts
1.7. Legal Issues c6, c11 c5s3- c12s3,
s4, c13s2
1.8. Documentation c10s5 c1s5 * c32
1.9. Trade-Off c1s2, c7s2, c9s5-10
Analysis c10 c13s4
2. Group Dynamics
and Psychology
2.1. Dynamics of c1s6 c1s3-5,
Working in c10
Teams/Groups
2.2. Individual c1s6 c33
Cognition
2.3. Dealing with c3s2 c1s1,
Problem c20s1-s5
Complexity
2.4. Interacting *
with Stakeholders
2.5. Dealing with c4s1, c9s4
Uncertainty and c4s4,
Ambiguity
c11s5
c24s5
2.6. Dealing with * c10s7
Equity, Diversity,
and Inclusivity
3. Communication
Skills
3.1. Reading, c4s5 c33s3
Understanding, and
Summarizing
3.2. Writing c1s5 c4s2-s3
3.3. Team and c1s6 c22s3 c27s1 c10s4
Group
Communication
3.4. Presentation c1s5 c22 c10s7-s8
Skills
[15] G. M. Weinberg,
The Psychology of Computer Programmin
FURTHER READING g: Silver Anniversary Edition, Dorset
House, 1998.
Gerald M. Weinberg, The Psychology of Computer [16] Kinney and Lange, P.A.,
Programming [15]. Intellectual Property Law for Business La
wyers, Thomson West, 2013
This was the first major book to address
programming as an individual and team effort; it
has become a classic in the field.

Kinney and Lange, P.A.,


Intellectual Property Law for Business Lawye
rs [16].

This book covers IP laws in the US. It not only


talks about what the IP law is; it also explains why
it looks the way it does.

REFERENCES

[1*] F. Bott et al.,


Professional Issues in Software Engineering,
3rd ed., Taylor & Francis, 2000.
[2] Appendix B of this Guide.
[3*] G. Voland, Engineering by Design, 2nd ed.,
Prentice-Hall, 2003.
[4*] I. Sommerville, Software Engineering, 10th
ed., Addison-Wesley, 2016.
[5*] S. McConnell, Code Complete, 2nd ed.,
Microsoft Press, 2004.
[6] 25 Years Washington Accord, IEC, 2014.
[7] EUR-ACE, 2017.
[8] ISO/IEC 24773-1, Software and Systems
Engineering – Certification of Software and
Systems
Engineering Professionals — Part 1: General
Requirements.
[9] Software Professional Certification Program
IEEE-CS,

https://www.computer.org/education/certification
s.
[10] ACM Code of Ethics and Professional
Conduct, 2018.
[11] IEEE Code of Ethics, 2020.
[12] IFIP Code of Ethics and Professional Conduct,
2021.
[13*] S. Tockey,
Return on Software: Maximizing the Return
on Your Software Investment, Addison-
Wesley, 2004.
[14*] R. E. Fairley,
Managing and Leading Software Projects,
Wiley-IEEE Computer Society Press, 2009.
CHAPTER 15

SOFTWARE ENGINEERING

ECONOMICS

ACRONYMS ● alignment with organizational goals.


IRR Internal Rate of Return
Software engineering economics helps
Minimum Acceptable Rate of software engineers work in ways that satisfy
MARR
Return these critical demands. The Introduction to
SDLC Software Development Life SWEBOK Guide explains that engineering
Cycle economics is a key element of all recognized
engineering disciplines. Economics is the science
SPLC Software Product Life Cycle of choice, not the science of money. Engineering
ROI Return on Investment economics is the applied microeconomics branch
of economics. It asks the fundamental question,
SEI Software Engineering Institute “Is it in the best interest of this enterprise to
invest its limited resources in this technical
TCO Total Cost of Ownership
endeavor, or would the same investment produce
a higher return elsewhere?” Paraphrasing the
definition in [1], engineering is “finding the
INTRODUCTION
balance between what is technically feasible and
what is economically acceptable.”
Software is ubiquitous and has become
Software engineering must be value-based.
essential for many organizations. It serves
Neutral — or worse, negative — value from an
organizations in the following ways:
organization’s investment in software is not
● as a lever to reach an organization’s business
sustainable. Software engineering economics
or strategic goals;
aligns software technical decisions with the
● as a catalyst of organizational know-how to
organization’s business goals.
improve value.
“The organization” will at least include the
organization where the software engineer is
Both aspects lead directly to critical software
employed. However, when the software engineer
engineering demands:
is involved in work for any third party, such as
● increased productivity; through an external digital transformation
● long-term sustainability; contract or other “works for hire” situation, the
● innovation; business goals of that third party are also
● competitiveness; relevant.
SWEBOK® Guide V4.0

In all types of organizations — for-profit, ● what is an optimal load-balancing strategy


nonprofit and government — a value-based for a cloud-based deployment that provides
approach translates into long-term sustainability. adequate response time to clients without
In for-profit organizations this means achieving incurring unnecessary operational cost?
a tangible return on the software investment. In ● how much risk-based testing is enough?
nonprofit organizations, this means achieving the ● is it better to refactor, redevelop or just live
maximum benefit for the least cost. with code that has high technical debt?
Software technical decisions, like an ● is it better to focus maintenance on adding
organization’s decision to use a preexisting new functionality or on fixing known
library or to develop its own, may appear easy defects?
from a purely technical perspective. However, ● would the value of early delivery of partial
they can have serious implications for the functionality gained by using an Agile
business viability of a software project as well as process outweigh the overhead of rework
the product itself. Most software practitioners and continuous testing inherent in iterative
wonder whether such concerns apply to them. approaches?
But economic decision-making is fundamental to
engineering. Someone who cannot make The Software Engineering Economics
decisions from both a technical and an economic Knowledge Area (KA) is directly or indirectly
perspective cannot be considered a true engineer. related to all other KAs in this Guide.
Software engineering economics applies to This KA also takes the position that the more
decisions across the entire software product life traditional, purely financial view of engineering
cycle (SPLC), from the pre-project decision to economics needs to be broadened [2]. Value does
develop the software to end-of-life decisions for not always derive from money alone; value can
existing software. It also applies to decisions at also derive from “unquantifiables” like corporate
all levels of technical detail. For example, all citizenship, employee well-being, environmental
following questions involve an economic friendliness, customer loyalty and so on.
perspective: Therefore, software engineering decisions must
● can a client organization benefit from a also consider relevant unquantifiable criteria.
digital transformation?
● does a project proposal (a tender) align with BREAKDOWN OF TOPICS FOR
a client’s business goals? SOFTWARE ENGINEERING ECONOMICS
● should certain software functionality be
bought or built? The breakdown of topics for the Software
● should certain requirements be included in Engineering Economics KA is shown in Figure
scope or not? 15.1.
● what is the most efficient, cost-effective
architecture and design?
Software Engineering Economics 15-3

Software Engineering
Economics

Software
The Engineering Multiple- Identifying and
Engineering For-Profit Nonprofit Present Economy Practical Related
Decision-Making Attribute Characterizing Estimation
Economics Decision-Making Decision-Making Decision-Making Considerations Concepts
Process Decision-Making Intangible Assets
Fundamentals

Proposals Process Minimum Benefit-Cost Break-Even Compensatory Identify Expert Business Case Accounting
Overview Acceptable Analysis Analysis Techniques Processes and Judgment
Cash Flow Rate of Return Define Multiple- Cost and Costing
Understand the Cost- Non- Business Goals Analogy Currency
Time-Value Optimization
Real Problem Economic Life Effectiveness Compensatory Analysis Finance
of Money Analysis Decomposition
Analysis Techniques Identify
Identify all Planning Intangible Assets Systems Controlling
Equivalence Reasonable Horizon Parametric Thinking
linked with
Technically- Business Goals Efficiency and
Bases for Replacement Multiple Effectiveness
Comparison Feasible
Decisions Estimates
Solutions Identify
Software Productivity
Alternatives Retirement
Define the Products that
Decisions Product or
Intangible Selection Support Service
Assets Criteria Advanced Intangible Assets
For-Profit Project
Business Evaluate Define and
Decision
Model each Measure Program
Considerations
Alternative Indicators
against the Portfolio
Selection Intangible Asset
Product
Criteria Characterization
Lifecycle
Select the Link Specific Project
Preferred Intangible Assets Lifecycle
Alternative with the
Business Model Price and
Monitor the Pricing
Performance of Decision Making
the Selected Prioritization
Alternative

Figure 15.1. Breakdown of Topics for the Software Engineering Economics KA

1. Software Engineering Economics A cash flow instance is a specific amount of money


Fundamentals flowing into or out of the organization at a specific
time as a direct result of carrying out a proposal. For
1.1. Proposals example, in a proposal to develop and launch
[3*, c3pp23-24] product X, the payment for new computers, if
needed, would be an example of an outgoing cash
Software engineering decisions begin with the flow instance. Money would need to be spent to
concept of a proposal — a single, separate course of carry out that proposal. The sales income from
action to be considered (e.g., carrying out a product X in the 11th month after market launch
particular software development project or not). would be an example of an incoming cash flow
Another proposal could be to enhance an existing instance. Money would come in because of carrying
software component; another might be to redevelop out the proposal.
that same software from scratch. In deciding what A cash flow stream is the set of cash flow instances
algorithm to use in implementing a certain function, over time caused by carrying out that proposal. The
each candidate considered is a proposal. Every cash flow stream is that proposal’s complete
proposal represents a binary unit of choice — the financial view. How much money goes out? When
software engineer either carries out that proposal or does it go out? How much money comes in? When
chooses not to. Software engineering economics does it come in? If the cash flow stream for Proposal
aims to identify the proposals best aligned with the A is more desirable than the cash flow stream for
organization’s goals. Proposal B, then — all other things being equal —
the organization is financially better off carrying out
1.2. Cash Flow Proposal A than Proposal B. Thus, the cash flow
[3*, c3pp24-32] stream is an important element of engineering
decision-making.
Engineers must evaluate a proposal from a financial A cash flow diagram is a picture of a cash flow
perspective to make a meaningful decision about it. stream. The cash flow diagram quickly summarizes
The concepts of cash flow instance and cash flow the financial view of a proposal. Figure 15.2 shows
stream describe the financial perspective of an example cash flow diagram.
proposals.
SWEBOK® Guide V4.0

$8150 Due to the time-value of money, two or more cash


$5900 flows are equivalent only when they equal the same
amount of money at the same time. Therefore,
$3650 comparing cash flows makes sense only when they
$2900 are expressed in the same time frame. Then, lack of
$1400 equivalence between the two cash flows can be
$650
0 1 determined accurately and can serve as the basis for
2 3 4 5 6 7 choice. The proposal with the highest value in the
-$850 same time frame is the most financially desirable.

1.5. Bases for Comparison


[3*, c8]

A basis for comparison is a shared frame of


reference for comparing two or more cash flow
-$10,000
streams. It uses equivalence to meaningfully
Figure 15.2. A Cash Flow Diagram compare two or more proposals. Several bases for
comparison exist, including the following:
The cash flow stream is shown in two dimensions. ● present worth;
Time runs from left to right and amounts of money ● future worth;
run up and down. The horizontal axis is divided into ● annual equivalent;
units representing years, months, weeks, etc., as ● internal rate of return (IRR);
appropriate for the proposal. Each net cash flow ● discounted payback period.
instance is drawn at a left-to-right position relative
to its timing. The amount of the cash flow instance 1.6. Alternatives
is shown as an upward or downward arrow. Upward [3*, c9]
arrows indicate that money is coming in (income),
whereas downward arrows indicate that money is Often, an organization could carry out more than one
spent (expense). The arrow’s length is usually proposal if it wanted to. But there might be
proportional to the net amount. important relationships between proposals that need
to be considered. Maybe Proposal Y can only be
1.3. Time-Value of Money carried out if Proposal X is also carried out. Or
[3*, c5-6] maybe Proposal P cannot be carried out if Proposal
Q is carried out, nor could Q be carried out if P were.
One of the most fundamental concepts in economics Decisions are easier when there are mutually
— and therefore, in business decisions — is that exclusive paths — A, or B, or C, or another project,
money has time-value: Its value changes over time. and no others. This topic explains how to turn any
A specific amount of money right now almost set of proposals, with their interrelationships, into a
always has a value different from the same amount set of mutually exclusive alternatives. The cash flow
at some other time. This concept has been around stream for any alternative is the sum of the cash flow
since the earliest recorded human history and is streams for all the proposals it contains. The choice
commonly expressed as interest. can then be made among these alternatives.
One special case is known as the do-nothing
1.4. Equivalence alternative. Sometimes the best course of action is
[3*, c7] not to carry out any of the proposals being
considered. The do-nothing alternative represents
that case. It doesn’t mean do nothing at all; it means
Software Engineering Economics 15-5

“do something else, something that’s not in this set


of choices.” The do-nothing alternative should be Understanding the organization’s business model —
considered in most, but not all, situations. as well as its intangible assets — helps the software
engineer better understand how proposals may affect
1.7. Intangible Assets or be affected by organizational realities. Analyzing
the business model can help the software engineer
Intangible assets, also known as knowledge assets, identify hidden risks and opportunities that could
are any knowledge that lies in the non-visible side of influence a proposal’s success or failure [6].
an organization but affects that organization’s The skills needed to consider intangible assets are
financial performance. According to International knowledge management and intangible assets
Valuation Standards (IVS) 210 § 20.1, “an identification and valuation [SFIA, category
intangible asset is a non-monetary asset that Strategy and Architecture, subcategory Business
manifests itself by its economic properties. It does strategy and planning].
not have physical substance but grants rights and
economic benefits to its owner” [4].
This can include, but is not limited to, policies, 2. The Engineering Decision-Making
procedures, tools and specifications, as well as Process
organizational culture, experience and know-how.
Knowing the organization’s intangible assets helps
the software engineer better understand how 2.1. Process Overview
proposals may affect or be affected by [3*, c4pp35-36]
organizational realities. Otherwise, hidden risks and
opportunities that could influence proposals’ Figure 15.3 provides an overview of the engineering
success or failure might not be exposed. decision-making process.
The skills needed to consider intangible assets are
the following: Define the
selection criteria
● intangible assets identification and valuation Evaluate each
Understand the
alternative against
[Skills Framework for the Information Age real problem
Identify all
the selection criteria

(SFIA), category Strategy and Architecture, reasonable


technically feasible
solutions
subcategory Business strategy and planning];
● knowledge management [SFIA, category
Strategy and Architecture, subcategory
Monitor the
Business strategy and planning]. Select the
preferred alternative
performance of the
selected alternative

Identifying and characterizing intangible assets are Figure 15.3. The Engineering Decision-Making
Process
discussed in more detail later in this KA.

1.8. Business Model The process is shown as stepwise and sequential;


Peter Drucker, a founder of modern management, however, it can be more fluid in practice. Steps can
defines a good business model as one that answers be done iteratively, can overlap and can even occur
these questions [5]: in different sequences. Just be sure not to skip any
● “Who is the customer?” step or execute it poorly.
● “What does the customer value?” When the consequences of a wrong decision are
● “How do we make money?” significant, such as a go/no-go decision for a large
● “What is the underlying economic logic that project, more time, effort and care should be spent
explains how we can deliver value to customers in this process. All steps should be completed
at an appropriate cost?” thoroughly and carefully. ISO 12207 [7] and ISO
SWEBOK® Guide V4.0

15288 [8] recommend two additional early On the one hand, adding candidates increases the
activities, which can be important in high- probability that the best one is in the set. On the other
consequence decisions: hand, each adds cost to the decision-making process.
● define the decision management strategy — this Software engineers must use their best judgment in
strategy might specify roles, responsibilities, deciding when they have enough candidates. These
procedures and tools; candidates are the “proposals,” as defined in the
● identify relevant stakeholders, which might Fundamentals topic.
include appropriate subject matter experts.
2.4. Define the Selection Criteria
When the consequences of a wrong decision are [3*, c4pp39-40, c26pp441-442]
small, such as the consequences of selecting a minor
algorithm or data structure, less time, effort and care Engineering decisions almost always consider the
can be spent, but the same general process is financial perspective. However, other decision
followed. Each step is discussed in more detail criteria can also be relevant; when this is the case,
below. the decision is a multiple-attribute decision. For
example, an environmentally conscious
2.2. Understand the Real Problem organization may choose a less economical solution
[3*, c4pp37-39] if it is more eco-friendly. In many cases, the greater
the consequences of a wrong decision, the more
The best solution to a problem can come only from selection criteria need to be considered.
thoroughly understanding the real problem to be As much as possible, each criterion should be
solved. This step’s key aspects include the use of an expressed objectively. Ideally, those objective terms
interrogative technique such as the “5 Whys” will be expressed as a monetary value — but not
technique and a consideration of the broader context necessarily. What is the “value” of a clean river? It
surrounding the problem. The Empathize stage in might not make sense to value a river by multiplying
Design Thinking [9] (to consider intangible assets) the price per kilogram of fish by an estimate of the
and looking closely at the organization’s business number of fish in the river. Decision criteria that
model are examples of considering that broader can’t be expressed objectively are called
context. “unquantifiables,” “irreducibles” or “intangibles.”
Defining the decision criteria can be a subjective
2.3. Identify All Reasonable Technically Feasible task. Too many criteria could make the analysis
Solutions unwieldy. On the other hand, too few criteria might
[3*, c4pp40-41] not differentiate well between proposals and could
thus lead to a suboptimal choice. The potential for a
The goal of engineering decision-making is to find better decision provided by including more criteria
the best solution. However, the best solution must must be balanced against the extra effort required to
first be identified as a candidate before it can be analyze the criteria.
selected as the best. If the best solution is not among To the extent that money is a selection criterion, the
the set of solutions being considered, it cannot be context of the decision will constrain the decision-
selected. The importance of creative thinking in this maker to a for-profit, nonprofit or present economy
step cannot be overstated when the consequences of decision analysis, as explained in topics 3, 4 and 5,
a wrong decision are high. later in this KA.
For some potential solutions, or candidates,
prototyping is a useful way to verify technical 2.5. Evaluate Each Alternative Against the Selection
feasibility. Peer review can also help verify technical Criteria
feasibility and possibly spur the identification of [3*, c4pp41-42]
even more candidates.
Software Engineering Economics 15-7

Each alternative is evaluated against each selection decision trees, and the expected value of perfect
criterion. When a selection criterion involves information;
money, each alternative must be judged from the ● decision-making-under-uncertainty techniques
same viewpoint. Use the same basis for comparison [3*, c25] are used when probabilities cannot be
(present worth, future worth, IRR, etc., in for-profit assigned to the different potential outcomes.
decisions; benefit-cost ratio or cost-effectiveness in Specific techniques include the Laplace Rule,
nonprofit decisions, etc.), the same planning the Maximin Rule, the Maximax Rule, the
horizon, and consider the same kinds of costs and Hurwicz Rule and the Minimax Regret Rule.
incomes. An example decision might be buying and High-consequence decisions may benefit from
adapting an off-the-shelf software product versus formally recording the selected alternative and the
building a custom application from scratch. justification for why that alternative was selected.
Considering costs for a longer time frame for one
proposal than for the other will make the one using 2.7. Monitor the Performance of the Selected
the shorter time frame seem like the better choice Alternative
even though it might not be better over the same time [3*, c4pp42-43]
frame.
Because estimation is a fundamental element of
2.6. Select the Preferred Alternative engineering decision-making, the quality of the
[3*, c4p42, c26pp447-458] decision depends on the quality of the estimates. Bad
estimates can easily lead to bad decisions. The
If the only selection criterion is money, the software engineer needs to “close the loop” on
alternative with the highest present worth, future estimates by comparing them to the actual outcomes.
worth, etc., will be chosen. When there are multiple Otherwise, no one will ever know if the estimates
criteria, a variety of techniques can be used to were good [3*, c21pp356-358]. This also helps
evaluate the criteria together. Multiple-attribute improve estimation over time. Understanding what
decision-making is detailed later in this KA. drives differences between estimates and actual
Engineering decisions are based on estimates outcomes helps engineers refine estimation
(discussed later in this KA). The accuracy of an techniques to produce more accurate estimates in the
estimate is limited in theory and in practice, and the future.
degree of inaccuracy depends on the specifics of the
situation [3*, c21pp344-356]. If the degree of
inaccuracy is high enough, that inaccuracy could 3. For-Profit Decision-Making
change the resulting decision. The following
techniques [3*, c23] can help engineers address
these situations: For-profit decision techniques apply when the
● consider ranges of estimates; organization’s goal is profit — which is the case in
● perform a sensitivity analysis; most companies.
● delay final decisions. Figure 15.4 shows the process for identifying the
financially best alternative out of a set of proposals.
In addition, two categories of techniques address Arranging alternatives in order of increasing initial
multiple potential outcomes from a decision: investment and then selecting strictly better
● decision-making-under-risk techniques [3*, candidates means that, all other considerations being
c24] are used when probabilities can be equal, the alternative with the smaller initial
assigned to the different potential outcomes. investment will be chosen. The “Is the next
Specific techniques include expected value candidate strictly better?” decision is made in terms
decision-making, expectation variance and of the appropriate basis for comparison: present
decision-making, Monte Carlo analysis, worth, future worth, IRR, etc.
SWEBOK® Guide V4.0

time. On the other hand, operating and maintenance


Start costs tend to start low and increase over time. An
Arrange the alternatives
alternative’s total cost is the sum of those two costs.
in order of increasing At first, frozen asset costs dominate; later, operating
initial investment
and maintenance costs dominate. At some point, the
Assume the first alternative sum of the two costs is minimized; this is the
is the current best
economic life or minimum cost lifetime.

3.3. Planning Horizon


Are there
more alternatives
Yes Compare the next candidate [3*, c11]
to the current best
to compare?

To properly compare a proposal with a four-year life


No to a proposal with a six-year life, the economic
Is the next
candidate strictly No effects of either cutting the six-year proposal by two
The current best is
the best overall better than the
current best?
years or investing the profits from the four-year
proposal for another two years need to be addressed.
Yes The planning horizon, sometimes known as the
Make that next candidate study period, is the consistent time frame over which
the new current best
Stop
all proposals in the same decision are considered.
Aspects such as economic life and the time frame
Figure 15.4. The For-Profit Decision-Making Process
over which reasonable estimates can be made need
to be factored into establishing a planning horizon.
3.1. Minimum Acceptable Rate of Return Once the planning horizon is established, several
[3*, c10pp141-143] techniques are available for putting proposals with
The minimum acceptable rate of return (MARR) is different life spans into that planning horizon.
the lowest IRR the organization would consider a
good investment. Generally, it would not be wise to 3.4. Replacement Decisions
invest in an activity with a return of 10% when [3*, c12pp171-178] [8*, c9]
another activity returns 20%. The MARR is a
statement that the organization is confident it can A replacement decision happens when an
achieve at least that rate of return. The MARR organization already has a particular asset and is
represents the organization’s opportunity cost for considering replacing it with a different asset (e.g.,
investments. By investing in some alternative, the deciding between maintaining and supporting
organization explicitly decides not to invest that legacy software or redeveloping it from the ground
same money somewhere else. If the organization is up). Replacement decisions use the same for-profit
already confident it can achieve a known rate of decision process, but there are two additional
return, alternatives should be chosen only if their important considerations: sunk cost and salvage
rate of return is at least that high. A simple way to value.
account for that opportunity cost is to use the MARR
as the interest rate in the basis for comparison. 3.5. Retirement Decisions
[3*, c12pp178-181] [8*, c9]
3.2. Economic Life
Retirement decisions are about getting out of an
[3*, c11pp160-164]
activity altogether, such as when a software
When an organization invests in a particular
company considers not selling a software product
alternative, money is tied up in that alternative —
anymore or a hardware manufacturer considers not
so-called frozen assets. The economic impact of
building and selling a particular computer model any
frozen assets typically starts high and decreases over
Software Engineering Economics 15-9

longer. Retirement decisions can be preplanned or effectiveness analysis. The fixed-cost version seeks
happen spontaneously (e.g., when performance to maximize benefit given a fixed upper bound on
targets are not achieved). Retirement decisions can cost. The fixed-effectiveness version seeks to
be influenced by lock-in factors such as technology minimize the cost to achieve a fixed goal.
dependency and high exit costs.
5. Present Economy Decision-Making
3.6. Advanced For-Profit Decision Considerations
[3*, c13-17] This subset of engineering decision-making is called
The above concepts and techniques are often present economy because it does not involve the
sufficient to make a good for-profit decision. time-value of money (future economy). The two
However, particularly when the consequences of a forms of present economy decisions are presented
wrong decision are high, additional considerations below.
may need to be factored into the decision analysis,
including the following: 5.1. Break-Even Analysis
● inflation or deflation; [3*, c19]
● depreciation;
● income taxes. Given functions describing the costs of two or more
proposals, break-even analysis helps engineers
4. Nonprofit Decision-Making choose between them by identifying points where
those cost functions are equal. Below a break-even
The for-profit decision techniques don’t apply when point, one proposal is preferred, and above that
the organization’s goal isn’t profit — which is the point, the other is preferred. For example, consider a
case in government and nonprofit organizations. choice between two cloud service providers. One
These organizations have a different goal, so provider has a lower fixed cost per month with a
different decision techniques are needed. The two higher incremental fee for use, whereas the other has
techniques are benefit-cost analysis and cost- a higher fixed monthly cost with a lower incremental
effectiveness analysis (discussed below). fee for use. Break-even analysis identifies the use
level where the costs are the same. The
4.1. Benefit-Cost Analysis organization’s expected use level can be compared
[3*, c18pp303-311] to the break-even point to identify the lower-cost
provider.
Benefit-cost analysis is one of the most widely used
methods for evaluating proposals in nonprofit 5.2. Optimization Analysis
organizations. A proposal’s financial benefits are [3*, c20]
divided by its costs. Any proposal with a benefit-
cost ratio of less than 1.0 can usually be rejected Optimization analysis studies one or more cost
without further analysis because it would cost more functions over a range of values to find the point
than it would benefit the organization. Additional where overall cost is lowest. Software’s classic
considerations are necessary when two or more space-time trade-off is an example of optimization;
proposals are considered at the same time. an algorithm that runs faster often uses more
memory. Optimization balances the value of faster
4.2. Cost-Effectiveness Analysis run time against the cost of the additional memory.
[3*, c18pp311-314]
6. Multiple-Attribute Decision-Making
Cost-effectiveness analysis shares much of the
philosophy and methodology of benefit-cost [3*, c26]
analysis. There are two versions of cost-
0 SWEBOK® Guide V4.0

Most topics presented in this KA so far have 7. Identifying and Characterizing


discussed decisions based on a single criterion — Intangible Assets
money. The alternative with the best present worth,
the best incremental IRR, the best incremental The intangible side of an organization is the valuable
benefit-cost ratio, etc., is the one selected. Aside knowledge residing within it. This includes
from technical feasibility, money is usually the most employees’ knowledge about processes, structures,
important decision criterion, but it’s certainly not procedures, etc. (tacit, or implicit, knowledge), as
always the only one. Often, other criteria, other well as institutional knowledge recorded in various
“attributes,” need to be considered that can’t be cast organizational resources (explicit knowledge). These
in terms of money. Multiple-attribute decision- assets are usually hidden, the way most of an iceberg
making techniques allow nonmonetary criteria to be is underwater. The intangible assets must be
factored into the decision. explicitly considered in many decisions, particularly
A variety of techniques can be used to address when the consequences of a wrong decision are high
multiple criteria, including nonmonetary criteria. for the client, no matter if the client is internal or
These techniques fall into two categories. external to the organization for which the software
project is being done. organization.
6.1. Compensatory Techniques
If these assets are not adequately considered,
[3*, c26pp449-458] software engineers risk developing a software
solution that does not fit the client organization. Only
Also called single-dimensioned techniques, the when the intangible assets are explicitly considered
techniques in this category collapse all criteria into will the risk of a poorly fitting software solution be
a single figure of merit. This category is called minimized. The Strategic Intangible Process Assets
compensatory because, for any given alternative, a Characterization (SIPAC) method [13] has been used
lower score in one criterion can be compensated by to good effect to accomplish this. SIPAC steps are
— traded off against — a higher score in other outlined in the following subsections.
criteria. Compensatory techniques include
nondimensional scaling, additive weighting and 7.1. Identify Processes and Define Business Goals
analytic hierarchy process (AHP). Start by understanding the organization’s business
Gilb’s Impact Estimation [11] and the Software processes and business goals. If the organization has
Engineering Institute’s (SEI) Architectural Tradeoff well-documented processes, these should be used;
Analysis Method (ATAM) [12] are examples of otherwise, a deliberate survey will be necessary.
compensatory multiple-attribute decision-making
techniques focused on identifying the best software Business goals can include, but are not limited to, the
design. following:

● maintaining growth and continuity of the


6.2. Non-Compensatory Techniques
organization;
[3*, c26pp447-449]
● meeting financial objectives;
Also called fully dimensioned techniques, the ● meeting responsibility to employees;
techniques in this category do not allow trade-offs ● meeting responsibility to society;
among the criteria. Each criterion is treated as a ● managing market position.
separate entity in the selection process. Non-
compensatory techniques include dominance,
satisficing and lexicography. 7.2. Identify Intangible Assets Linked with Business
Goals
Software Engineering Economics 15-11

The next step is to comprehensively identify the


intangible assets. Common examples are policies, • discovering them all at a single time by
documented business processes, checklists, lessons using the methodology of Osterwalder [13],
learned, templates, standards, procedures, plans and which promotes innovation by generating a
training materials. Organizations develop or acquire value map with the stakeholders’ emerging
these assets to meet their business goals. The assets needs, mapping the products to the specific
represent investments that provide business value. intangible assets;
One effective approach to identifying an • listing them if they are known and then
mapping them to specific intangible assets;
organization’s intangible assets is to start with a
• iteratively working with the individual
taxonomy such as described in the following
intangible assets by (1) selecting a specific
reference [14]. The goal is to identify as many
intangible asset and (2) identifying the
intangible assets as possible that serve as a lever to products, continuing until all specific
achieve the business goals identified in the previous intangible assets have been analyzed.
step. In practice, this can be an iterative process A single product can support more than one specific
where reviewing the already-identified assets intangible asset, and each specific intangible asset
reveals the existence of others. A practical way to do can be supported by many products.
it is by focusing iteratively on the 11 generic
intangible assets (GIAs) described in [6]. 7.4. Define and Measure Indicators
Possible GIAs represent all potential parts of any
business that can be involved in a digital This step defines and measures the indicators that
transformation. Focusing on one or more of them will be used to characterize how the intangible assets
allows the software engineer to better understand (through the software products that support those
and frame the project’s impact. Focusing iteratively intangible assets) help meet business goals through
on the 11 GIAs, the software engineer will select the describing, implementing or improving the identified
type of GIA to be considered and, with this, elicit the products. Quality indicators assess specific
specific intangible assets associated with each GIA. intangible asset characteristics or features. Impact
In addition to identifying specific intangible assets, indicators assess how much the specific intangible
a qualitative relative “importance” must be added to assets contribute to processes or business goals.
each one as it is identified. The importance is a value
between 1 and 5 (1 for lower importance and 5 for Indicators must be normalized and standardized to
higher importance), depending on how well the asset operate correctly.
supports achieving the business objectives. The
intangible assets with the highest importance are 7.5. Intangible Asset Characterization
likely the most suitable target for the client
organization. Based on the information gathered, the software
engineer determines the value of the identified
7.3. Identify Software Products That Support specific intangible assets based on their quality and
Intangible Assets impact. Specific intangible assets may be
characterized in terms of their impact on business
Software products that support specific intangible goals and their quality as organizational assets. There
assets will be part of the digital transformation are three important characterization cases:
proposal to be presented to the client to help them
decide what digital transformation to implement. • case 1: specific intangible assets with both
impact and quality indicators (Warning,
To identify products related to specific intangible Replaceable, Evolving or Stable);
assets, the software engineer can choose from the
following:
2 SWEBOK® Guide V4.0

• case 2: specific intangible assets with only The quality valuation considers only the indicators
quality indicators (Acceptable or of the type quality of an intangible asset and
Unacceptable); calculates a general valuation of it. To evaluate the
subset of quality indicators, given a set of q quality
• case 3: specific intangible assets with only indicators for an intangible asset n, the valuation of
impact indicators (Acceptable or the quality is given according to Equation 1.
Unacceptable). Equation 1. Quality Assessment for a Knowledge Asset

The three characterization cases are shown in Figure 𝑛


∑𝑞𝑖=1 𝑋𝑖𝑛
𝑄𝑉𝐴𝐿 =
15.5. The quadrants represent the “states” 𝑞
constituting different levels of characterization. The
Where 𝑿𝒏𝒊 is each of the q normalized indicators of
lines separating the quadrants are thresholds of
quality that the intangible asset n has.
impact and quality that define the point at which the
impact or quality of a specific intangible asset may
If n is the number of indicators of quality and n is
be considered acceptable or not for each
the number of indicators of impact, the assessments
organization. These thresholds are established for
of quality and impact are given as the average of the
every client organization and specify what level of
normalized values of the corresponding indicators.
organizational performance, quality, and impact they
∑𝑛𝑖=1 𝑋𝑁𝑂𝑅𝑀
𝑖
will demand from their knowledge/intangible assets. 𝑄𝑣𝑎𝑙 =
𝑛
Case 2: Case 1:
Above, Qval is the average of the normalized values
Only Quality Indicators Quality and Impact Indicators of the quality indicators of a corresponding specific
intangible asset.

Acceptable
Quality
Replaceable Stable Impact quantitative assessment
An intangible asset’s impact valuation is an
Quality
Threshold
assessment that considers only the normalized
indicators that are classified as “impact” indicators.
Unacceptable
Warning Evolving To evaluate the subset of impact indicators, given a
Quality
set of p normalized impact indicators for an
intangible asset n, the valuation is given as stated in
Case 3: Equation 2:
Only Impact Unacceptable Acceptable Equation 2. Impact Assessment for a Specific Intangible
Impact Impact
Indicators Asset

𝑛
∑𝑝𝑖=1 𝑋𝑖𝑛
Impact Threshold
𝐼𝑉𝐴𝐿 =
𝑝
Figure 15.5. Extended Characterization of Specific Where 𝑿𝒏𝒊 is each of the p normalized indicators of
Intangible Assets
impact that the knowledge asset n has.
The characterization uses information from
standardized-normalized indicators to assess the ∑𝑚 𝑖
𝑖=1 𝑋𝑁𝑂𝑅𝑀
𝐼𝑣𝑎𝑙 =
identified intangible assets. This assessment 𝑛
generates a descriptive value that will determine the Where Ival is the average of the normalized values
asset’s general state of health from a quantitative of the impact indicators of a corresponding
perspective. knowledge asset.

Quality quantitative assessment


Software Engineering Economics 15-13

Finally, the linear value of an intangible asset - the impact of intangibles assets status on the
characterization is given by the impact and quality competitors of the organization under
valuations (Qval and Ival), following these rules, improvement;
assuming that both quality and impact are equally - the intangible asset’s impact on the business
important, so KAval (the valuation of the intangible model;
asset) is given by: - cost to implement the products;
- time to implement the products;
If ∃ 𝑸𝒗𝒂𝒍 ∩ ∃ 𝑰𝒗𝒂𝒍, then 𝑲𝑨𝒗𝒂𝒍 =
𝑸𝒗𝒂𝒍+𝑰𝒗𝒂𝒍 - complexity of the products.
𝟐

All criteria must be considered to decide what


If ∃ 𝑸𝒗𝒂𝒍 ∩ ∄ 𝑰𝒗𝒂𝒍, then 𝑲𝑨𝒗𝒂𝒍 = 𝑸𝒗𝒂𝒍 software products should be developed for the client
organization, making this a multiple-attribute
If ∄ 𝑸𝒗𝒂𝒍 ∩ ∃ 𝑰𝒗𝒂𝒍, then 𝑲𝑨𝒗𝒂𝒍 = 𝑰𝒗𝒂𝒍 decision. (See 6., Multiple-Attribute Decision-
Making.)
This linear value represents an intangible asset’s
general state based on the state of its indicators. It Upon considering all relevant criteria, the
uses the algebraic mean of the standardized and organization can see the risks of implementing a
normalized indicators to represent the assets’ software solution to automate processes that are
general state on a scale [-1, 1] and based on the either not very valuable or not in good shape. Instead,
corresponding interpretation thresholds. the software engineer can offer, in a transparent way,
proposals that better satisfy the organization’s
business needs.
7.6. Link Specific Intangible Assets with the Business
Model This approach can be useful whenever an
engineering decision needs to be made, but it is
Visualizing the client business model, enriched with particularly critical in the pre-project stage when
the intangible assets status allocated into that model, there is a need to present the client organization with
gives organizational leadership a clear understanding proposals that are best for business value.
of the important relationships among proposed
software solutions, intangible assets, the business 8. Estimation
model and the business goals. The software engineer
can clearly show which proposed solution generates [3*, c21-26]
the most value for the business. An example is shown
in [6]. An estimate analytically predicts some quantity, like
a project’s size, cost or schedule. Many other
7.7. Decision-Making quantities are also estimated in software
engineering, such as the average number of active
The next step in the decision-making process is to client sessions a cloud service needs to support, the
prioritize and choose the software products that number of times a function will be called during
interest the client organization most. There is no execution of a section of code, or the number of
simple rule; several criteria must be considered: delivered defects in a software product.
Software engineers do not estimate purely for the
- the intangible asset’s impact on business sake of estimating. Software engineers estimate to
goals (defined in previous steps); make decisions when critical quantities are
- the characterization reached (defined in unknown. For example, a decision to buy a
previous steps); functionality or build it within the organization
would certainly be based on the cost of building it.
But the actual cost of building it cannot be precisely
4 SWEBOK® Guide V4.0

known until the organization does build it. Key allowances for relevant differences. The steps in
information needed to make engineering decisions is estimation by analogy are as follows:
usually not known when those decisions need to be 1. Understand the thing to be estimated.
made. Instead, decisions are based on estimates. 2. Find a suitable analogy for which actual results
Behind every estimate is one or more decisions. are known.
Given that estimates are predictions, there is a 3. List differences between the thing being estimated
nonzero probability that the actual outcome will and the analogy that could significantly affect the
differ from the estimate. All estimates are inherently outcome.
uncertain. Sometimes, the uncertainty is large, and 4. Estimate the magnitude of each identified
sometimes it is small. But it is always there. difference.
Fortunately, estimates need not be perfect; they need 5. Build the estimate from the analogy’s actual result
only to be good enough to lead the decision-maker and adjustments for the identified differences.
to make the right decision. Estimation by analogy produces more accurate
The Software Engineering Code of Ethics and results than expert judgment, and it is still relatively
Professional Practice [16] states, “3.09. Ensure quick and easy. On the other hand, an appropriate
realistic quantitative estimates of cost, scheduling, analogy for which accurate results are known must
personnel, quality and outcomes on any project on be available for this approach to work.
which they work or propose to work and provide an
uncertainty assessment of these estimates” 8.3. Decomposition
(underlining added for emphasis). (See [3*, [3*, c22pp371-374]
c21pp358-361].)
Estimation is covered extensively in [17], [18] and Sometimes called bottom-up estimation, the steps in
[3*]. Several general techniques exist, and each is estimation by decomposition are:
overviewed here. All specific estimation techniques 1. Break the thing to be estimated into successively
use one or a combination of these general smaller pieces until the smallest pieces can be
techniques. reasonably estimated.
2. Estimate those smallest pieces.
8.1. Expert Judgment 3. Add up the estimates for the smallest pieces to
[3*, c22pp367-369] build the estimate for the whole.
4. If the estimates for the smallest pieces don’t
In expert judgment estimation, the estimate is based include allowances for significant cross-cutting
purely on the estimator’s professional opinion. It is factors, then find a way to address those factors. For
the simplest technique and is always available, and example, when estimating a software project from
it is particularly useful when the other techniques its design, the estimates for the design elements may
aren’t available. The downside is that this technique not include allowances for requirements work,
produces the least accurate estimates. Multiple integration work, testing work and user
expert judgment estimates can be fed into group documentation work.
estimation processes like Wide Band Delphi and Estimation by decomposition assumes that
Planning Poker to produce more accurate estimates. overestimates of lowest-level pieces will cancel out
corresponding underestimates of other pieces and
8.2. Analogy lead to a more accurate estimate of the whole. The
[3*, c22pp369-371] primary disadvantages are the following:
● it can be a lot more work than any other
Estimation by analogy assumes that if the thing technique;
estimated is similar to something already known, ● if the bottom-level estimates are biased either
then the estimate for the new thing can be based on high or low, the canceling effect doesn’t
the actual result for the similar thing, with happen.
Software Engineering Economics 15-15

8.4. Parametric The business case is the consolidated, documented


[3*, c22pp374-377] information summarizing and explaining a
recommended business decision from different
Also called estimation by statistical methods, perspectives (cost, benefit, risk and so on) for a
parametric estimation takes advantage of a known, decision-maker and other relevant stakeholders. It’s
mathematical relationship between the thing being used to assess a product’s potential value, which can
estimated and one or more observable factors about be used as a basis for an investment decision.
that thing, like calculating the cost to build a
building as a function of its floor space. The 9.2. Multiple-Currency Analysis
estimation model is an equation: First, count the
observable factors, and then plug them into the
equation to get the resulting estimate. When a decision analysis involves cross-border
Parametric estimates are typically the most accurate, finances, currency exchange rate variations may
the most defendable and the easiest to use, provided need to be considered. This is often done using
the equation has been developed and validated. The historical data.
disadvantage is that developing and validating such
an equation requires an adequate base of accurate 9.3. Systems Thinking
historical data along with some nontrivial
mathematics and statistics.
The ecosystem in which software engineers develop
8.5. Multiple Estimates their professional life is complex. To understand the
[3*, c22pp377-379] whole picture around a client organization and form
a holistic view of the scenarios they analyze,
When the consequences of a wrong decision are software engineers can use systems thinking
small, it can be acceptable to base the decision on a methodologies. This approach helps the software
single estimate from a single estimator using a single engineer create a complete set of possible scenarios
estimation technique. However, when the in which the software to be provided could be useful
consequences of a wrong decision are significant, and, with this information, explain to the client how
investing extra effort in developing more than one the software solution can be a value provider for the
estimate can be worthwhile. organization. Sources for system thinking
To use this approach, engineers estimate the same methodologies are [19] and [20]. A way to connect
thing using different techniques, possibly by systems thinking methodologies with the
different estimators. Then, they look for development of a business model to understand the
convergence or divergence among those multiple pillars of the client organization can be reached here
estimates. Convergence suggests the individual [21].
estimates are probably accurate, and any of them
could be used to make the decision. Divergence
suggests that one or more important factors might 10. Related Concepts
have been overlooked. Finding the factors that
caused the divergence and reestimating to produce This topic includes concepts the software engineer
converging results often lead to a better estimate and may want to bear in mind.
thus a better decision.
10.1. Accounting
9. Practical Considerations [3*, c15pp234-245]

9.1. Business Case Accounting is part of finance. It allows people


whose money is used to run an organization to know
6 SWEBOK® Guide V4.0

the results of their investment: Did they get the profit An important concept in costing is the total cost of
they were expecting? In for-profit organizations, this ownership (TCO). This holds true especially for
relates to the tangible return on investment (ROI), software because there are many not-so-obvious
while in nonprofit and governmental organizations, costs related to SPLC activities after initial product
as well as for-profit organizations, it translates into development. TCO for a software product is defined
sustainably staying in business. Accounting’s as the total cost for acquiring that product, activating
primary role is to measure the organization’s actual it and keeping it running. These costs can be grouped
financial performance and to communicate financial as direct and indirect costs. TCO is an accounting
information about a business entity to stakeholders, method that is crucial in making sound economic
such as shareholders, financial auditors and decisions.
investors. Communication generally takes the form
of financial statements showing the economic 10.3. Finance
resources to be controlled. The right information — Finance is the branch of economics concerned with
relevant and reliable to the user — must be allocating, managing, acquiring and investing
presented. Information and its timing are partially resources. Finance is an element of every
governed by risk management and governance organization, including software engineering
policies. Accounting systems are also a rich source organizations.
of historical data for estimating. The field of finance deals with the concepts of
time, money, and risk, and how they are interrelated.
Software engineers must be conscious of the It also deals with how money is spent and budgeted.
software’s importance as a driver of business Corporate finance is concerned with funding an
accounts in the digital era. organization’s activities. Generally, this involves
balancing risk and profitability while attempting to
10.2. Cost and Costing maximize an organization’s wealth and the value of
its stock. This applies primarily to for-profit
[3*, c15pp245-259] organizations but also to nonprofit organizations.
The latter needs finances to ensure sustainability, if
A cost is the money used to produce something and, not to make a tangible profit. To do this, an
hence, is no longer available for use. In economics, organization must:
a cost is an alternative that is given up as a result of
a decision. • identify organizational goals, time horizons, risk
Sunk cost refers to unrecoverable expenses that factors, tax considerations and financial
have occurred, which can cause emotional hurdles constraints;
looking forward. From a traditional economics • identify and implement the appropriate business
viewpoint, sunk costs should not be considered in strategy, such as which portfolio and investment
decision-making. Opportunity cost is the cost of an decisions to take, how to manage cash flow and
alternative that must be forgone to pursue another where to get the funding;
alternative. • measure financial performance, such as cash
Costing is part of finance and product flow and ROI, and take corrective actions in
management. It is the process of determining the case of deviation from objectives and strategy.
cost based on expenses (e.g., production, software
engineering, distribution, rework) and on the target Provided that many organizations use software
cost to be competitive and successful in a market. development or acquisition to stay competitive, the
The target cost can be below the actual estimated software engineer must be conscious of the
cost. The planning and controlling of these costs importance of software to business finances.
(called cost management) is important and should
always be included in costing. 10.4. Controlling
Software Engineering Economics 15-17

Controlling is the element of finance and accounting 10.7. Product or Service


that involves measuring and correcting A product is a tangible economic good (or output)
performance. It ensures that an organization’s created in a process that transforms product factors
objectives and plans are accomplished. Controlling (or inputs) into an output. A service is an intangible
cost is a specialized branch of controlling used to resource, like consulting. When sold, a product or
detect variances of actual costs from planned costs. service is a deliverable that creates both a value and
an experience for its consumers. A product or
In software engineering, this concept is referred to service can be a combination of systems, solutions
as processes and products control and evolution. and materials delivered internally (e.g., an in-house
While the organization is seen as an entity with its IT solution) or externally (e.g., a software
own goals, and control of the organizational goals is application), either as is or as a component for
seen as separate, software engineers must consider another product (e.g., embedded software).
control of the organization part of their job by
ensuring alignment of their software with business 10.8. Project
goals. [22*, c2s2.4]

10.5. Efficiency and Effectiveness A project is “a temporary endeavor undertaken to


[10*, c22pp422-23] create a unique product, service, or result” [23]. In
software engineering, different project types are
Economic efficiency of a process, activity or task is distinguished (e.g., product development,
the ratio of resources consumed to resources outsourced services, software maintenance, service
expected to be consumed. Efficiency means “doing creation, and so on). During its life cycle, a software
things right.” An efficient behavior, like an effective product may require many projects. For example,
behavior, delivers results and minimizes effort. during the product conception phase, a project might
Factors affecting efficiency in software engineering be conducted to determine customer need and
include product complexity, quality requirements, market requirements; during maintenance, a project
time pressure, process capability, team distribution, might be conducted to produce the next version of a
interruptions, feature churn, tools and programming product.
language.
10.9. Program
Effectiveness is about having impact. It is the A program is “a group of related projects,
relationship between achieved objectives and subprograms, and program activities managed in a
defined objectives. Effectiveness means “doing the coordinated way to obtain benefits not available
right things.” Effectiveness looks only at whether from managing them individually” [23]. Programs
defined objectives are reached — not at how they are are often used to identify and manage different
reached. deliveries to a single customer or market over a time
horizon of several years.
10.6. Productivity
[10*, c23pp689] 10.10. Portfolio
Portfolios are “projects, programs, sub-portfolios,
Productivity is the ratio of output to input from an and operations managed as a group to achieve
economic perspective. Output is the value delivered. strategic objectives” [23]. Portfolios are used to
Input covers all resources (e.g., effort) spent to group and then manage simultaneously all assets
generate the output. Productivity combines within a business line or organization. Having an
efficiency and effectiveness from a value-oriented entire portfolio to consider helps ensure that the
perspective. Maximizing productivity is about broader impacts of decisions are considered, such as
generating the highest value with the lowest the decision to allocate resources to a specific
resource consumption.
8 SWEBOK® Guide V4.0

project, which means that the same resources will [10*, c23s23.1]
not be available for the other projects in the
portfolio. A price is what is paid in exchange for a good or
service. Price is a fundamental aspect of financial
10.11. Product Life Cycle modeling and is one of the four Ps of the marketing
An SPLC includes all activities needed to define, mix. The other three Ps are product, promotion and
build, operate, maintain and retire a software place. Price is the only revenue-generating element
product or service and its variants. The SPLC among the four Ps; the rest are costs.
activities of “operate,” “maintain” and “retire” occur Pricing is an element of finance and marketing. It
in a much longer time frame than initial software determines what a company will receive in exchange
development (the software development life cycle for its products. Pricing factors include
(SDLC)). (See Software Life Cycle Models in the manufacturing cost, market placement, competition,
Software Engineering Process KA.) Also, the market condition and product quality. Pricing
operate-maintain-retire activities of an SPLC applies prices to products and services based on
consume more total effort and other resources than factors such as fixed amount, quantity break,
the SDLC activities. (See Majority of Maintenance promotion or sales campaign, specific vendor quote,
Costs in the Software Maintenance KA.) The value shipment or invoice date, combination of multiple
contributed by a software product or associated orders, service offerings, and many others. The
services can be objectively determined during the consumer’s needs can be converted into demand
“operate and maintain” time frame. Software only if the consumer has the willingness and
engineering economics should be concerned with all capacity to buy the product. Thus, pricing is crucial
SPLC activities, including activities that take place in marketing. Pricing is initially done during the
after the initial product release. project initiation phase and is a part of the “go”
decision-making process.
10.12. Project Life Cycle
Project life cycle activities typically involve five 10.14. Prioritization
process groups: Initiating, Planning, Executing, Prioritization involves ranking alternatives based on
Monitoring and controlling, and Closing [24]. (See common criteria to deliver the best value. For
the Software Engineering Management KA.) The example, in software engineering projects, software
activities within a software project life cycle are requirements are often prioritized to deliver the most
often interleaved, overlapped and iterated in various value to the client within the constraints of schedule,
ways [20*, c2] [25]. (See the Software Engineering budget, resources, and technology, or to allow the
Process KA.) For instance, Agile product team to build the product in increments, where the
development within an SPLC involves multiple first increments provide the highest value to the
iterations that produce increments of deliverable customer. (See Requirements Prioritization in the
software. An SPLC should include risk management
Software Requirements KA and Software Life
and synchronization with different suppliers (if any)
Cycle Models in the Software Engineering Process
while providing auditable decision-making
KA.) Prioritizing alternatives is at least implicit in
information (e.g., to comply with product liability
the discussion in 2.6., Select the Preferred
needs or governance regulations). The software
Alternative, but is explicit when a compensatory
project life cycle and the SPLC are interrelated; an
technique is used, as described in 7.6., Multiple-
SPLC may include several SDLCs.
Attribute Decision-Making.
10.13. Price and Pricing
Software Engineering Economics 15-19

MATRIX OF TOPICS VS. REFERENCE MATERIAL

Tockey 2005
Sommerville 2016 Fairley 2009
[3*]
[10*] [22*]

1. Software Engineering Economics


Fundamentals
c3pp23-24
1.1. Proposals
c3pp24-32
1.2. Cash Flow
c5-6
1.3. Time-Value of Money
c7
1.4. Equivalence
c8
1.5. Bases for Comparison
c9
1.6. Alternatives

1.7. Intangible Assets

1.8. Business Model


2. The Engineering Decision-Making Process

2.1. Process Overview c4pp35-36

2.2. Understand the Real Problem c4pp37-39

2.3. Identify All Reasonable Technically c4pp40-41


Feasible Solutions
2.4. Define the Selection Criteria c4pp39-40,
c26pp441-442

2.5. Evaluate Each Alternative Against the c4pp41-42


Selection Criteria
15-20 SWEBOK® Guide V4.0

Tockey 2005
Sommerville 2016 Fairley 2009
[3*]
[10*] [22*]

2.6. Select the Preferred Alternative c4p42,


c26pp447-
458
2.7. Monitor the Performance of the Selected c4pp42-43
Alternative
3. For-Profit Decision-Making

3.1. Minimum Acceptable Rate of Return c10pp141-


143
3.2. Economic Life c11pp160-
164
3.3. Planning Horizon c11

3.4. Replacement Decisions c12pp171-178 c9

3.5. Retirement Decisions c12pp178- c9


181
3.6. Advanced For-Profit Decision c13-17
Considerations
4. Nonprofit Decision-Making

4.1. Benefit-Cost Analysis c18pp303-


311
4.2. Cost-Effectiveness Analysis c18pp311-
314
5. Present Economy Decision-Making

5.1. Break-Even Analysis c19

5.2. Optimization Analysis c20

6. Multiple-Attribute Decision-Making
Software Engineering Economics 15-21

Tockey 2005
Sommerville 2016 Fairley 2009
[3*]
[10*] [22*]

6.1. Compensatory Techniques c26pp449-458

6.2. Non-Compensatory Techniques c26pp447-449

7. Identifying and Characterizing Intangible


Assets
7.1. Identify Processes and Define Business
Goals
7.2. Identify Intangible Assets Linked with
Business Goals
7.3. Identify Software Products That Support
Intangible Assets
7.4. Define and Measure Indicators

7.5. Intangible Asset Characterization

7.6. Link Specific Intangible Assets with the


Business Model
7.7. Decision-Making

8. Estimation

8.1. Expert Judgment c22pp367-369

8.2. Analogy c22pp369-371

8.3. Decomposition c22pp371-374

8.4. Parametric c22pp374-377

8.5. Multiple Estimates c22pp377-379

9. Practical Considerations
15-22 SWEBOK® Guide V4.0

Tockey 2005
Sommerville 2016 Fairley 2009
[3*]
[10*] [22*]

9.1. Business Case

9.2. Multiple-Currency Analysis

9.3. Systems Thinking

10. Related Concepts

10.1. Accounting c15pp234-245

10.2. Cost and Costing c15pp245-259

10.3. Finance

10.4. Controlling

10.5. Efficiency and Effectiveness c22pp422-23

10.6. Productivity c23pp689

10.7. Product or Service

10.8. Project c2s2.4

10.9. Program

10.10. Portfolio

10.11. Product Life Cycle

10.12. Project Life Cycle

10.13. Price and Pricing c23s23.1

10.14. Prioritization
Software Engineering Economics 15-23

[27].

This book provides an overview of quantitative


methods in software engineering, starting with
measurement theory and proceeding to
performance management and business
decision-making.

FURTHER READINGS D.J. Reifer,


Making the Software Business Case:
Project Management Institute, Improvement by the Numbers [28].
A Guide to the Project Management Body
of Knowledge (PMBOK® Guide) [24]. This book is classic reading on making a
business case in software and IT industries.
The PMBOK® Guide provides guidelines for Many useful examples illustrate how the
managing individual projects and defines project business case is formulated and quantified.
management-related concepts. It also describes
the project management life cycle and its related REFERENCES
processes, as well as the project life cycle. It is a
globally recognized guide for the project [1] E. DeGarmo et al., Engineering Economy,
management profession. 9th ed., Englewood Cliffs, NJ: Prentice
Hall, 1993.
Project Management Institute and IEEE
Computer Society, [2] P. Rodriguez, C. Urquhart, and E. Mendes.
Software Extension to the Guide to the “A Theory of Value for Value-based
Project Management Body of Knowledge (S Feature Selection in Software Engineering,”
WX) [25]. IEEE Transactions on Software
Engineering, 1, 2020.
SWX provides adaptations and extensions to the
generic practices of project management [3*] S. Tockey, Return on Software:
documented in the PMBOK® Guide for Maximizing the Return on Your Software
managing software projects. The primary Investment, Boston, MA: Addison-Wesley,
contribution of this extension to the 2005.
PMBOK® Guide is its description of processes
that are applicable to managing adaptive life [4] International Valuation Standards (IVS),
cycle software projects. 2019, Norwich: Page Bros, ISBN: 978-0-
9931513-3-3-0.
B.W. Boehm, Software Engineering Economics
[26]. [5] K. Voigt, O. Buliga, and K. Michl, Business
model pioneers: How innovators
This book is classic reading on software successfully implement new business
engineering economics. It provides an overview models, 2017.
of business thinking in software engineering.
Although the examples and figures are dated, it [6] M.-I. Sanchez-Segura, G.-L. Dugarte-Peña,
is still worth reading. A. Amescua-Seco, and F. Medina-
Domínguez, “Exploring how the intangible
C. Ebert and R. Dumke, Software Measurement side of an organization impacts its business
15-24 SWEBOK® Guide V4.0

model,” Kybernetes, Vol. 50 No. 10, pp. https://doi.org/10.1108/IMDS-10-2016-


2790-2822. 2021. 0422, 2017.
https://doi.org/10.1108/K-05-2020-0302
[14] M.I. Sanchez-Segura, A. Ruiz Robles, F.
[7] ISO/IEC/IEEE International Standard – Medina-Domínguez. “Uncovering hidden
Systems and software engineering – process assets: A case study.” Information
Software life cycle processes – Part 2: Systems Frontiers.
Relation and mapping between https://www.springerprofessional.de/en/unc
ISO/IEC/IEEE 12207:2017 and ISO/IEC overing-hidden-process-assets-a-case-
12207:2008. IEEE, 2020, pp. 1-278, doi: study/11724394, 2016.
10.1109/IEEESTD.2020.9238529.
[15] A. Osterwalder, Y. Pigneur, G. Bernarda,
[8*] ISO/IEC/IEEE 15288 First edition 2015- A. Smith, and T. Papadakos, Value
05-15: ISO/IEC/IEEE International proposition design, Wiley, 2015.
Standard – Systems and software
engineering – System life cycle processes, [16] D. Gotterbarn, K. Miller, and S. Rogerson,
IEEE. “Software engineering code of ethics,”
Commun. ACM 40, 11, 110-118, doi:
[9] T. Brown and B. Katz, Change by Design: 10.1145/265684.265699, 1997.
How Design Thinking Transforms
Organizations and Inspires Innovation, [17] S. McConnell, Software Estimation
Revised and updated ed., New York, NY: Demystifying the Black Art, 1st ed.,
Harper Collins, 2019. Microsoft Press, 2009.

[10*] I. Sommerville, Software Engineering, [18] R.D. Stutzke, Estimating software-intensive


10th ed., New York: Addison-Wesley, systems projects, products, and processes,
2016. 1st ed., Addison-Wesley, 2005.

[11] T. Gilb, Competitive Engineering: A [19] M. Ben-Eli, Understanding Systems.


Handbook for Systems Engineering, Systems Innovation, http://bit.ly/2XNlh3D,
Requirements Engineering, and Software 2019.
Engineering Using Planguage, Oxford,
UK: Elsevier Butterworth-Heinemann, [20] J. Sterman, Business Dynamics: Systems
2005. Thinking and Modeling for a Complex
World, McGraw-Hill, 2000.
[12] R. Kazman, M. Klein, and P. Clements,
“ATAMSM: Method for Architecture [21] S. Pereira, G. Medina, et al., “System
Evaluation,” CMU/SEI-2000-TR-004, thinking and business model canvas for
Software Engineering Institute, August collaborative business models design,” IFIP
2000. Advances in Information and
Communication Technology, Vol. 488, pp.
[13] M.I. Sanchez-Segura, A. Ruiz-Robles, F. 461-468, 2016.
Medina-Domínguez, and G.L. Dugarte-
Peña. “Strategic characterization of process [22*] R.E. Fairley,
assets based on asset quality and business Managing and Leading Software Projects,
impact,” Industrial Management and Data Wiley-IEEE Computer Society Press, 2009.
Systems, 117(8), 1720-1734.
Software Engineering Economics 15-25

[23] Project Management Institute, Inc.,


PMI Lexicon of Project Management Term,
2012.

[24] Project Management Institute,


A Guide to the Project Management Body o
f Knowledge (PMBOK® Guide), 5th ed.,
Project Management Institute, 2013.

[25] Project Management Institute and IEEE


Computer Society,
Software Extension to the PMBOK® Guide
Fifth Edition, ed: Project Management
Institute, 2013.

[26] B.W. Boehm,


Software Engineering Economics, Prentice-
Hall, 1981.

[27] C. Ebert and R. Dumke,


Software Measurement, Springer, 2007.

[28] D.J. Reifer,


Making the Software Business Case: Impro
vement by the Numbers, Addison-Wesley,
2002.
CHAPTER 16
COMPUTING FOUNDATIONS
ACRONYMS

Acronym Definitions

ADT Abstract Data Type

AI Artificial Intelligence

ANSI American National Standards Institute

AVL Tree Adelson-Velskii and Landis Tree

BCNF Boyce-Codd Normal Form

BST Binary Search Tree

CASE Common Application Service Element

CDRAM Cache DRAM

CERT Computer Engineering Response Team

CISC Complex Instruction Set Computer

CRUD Create, Read, Update, Delete

CUDA Compute Unified Device Architecture

DAG Direct Acrylic Graph

DAL Database Access Language

DAS Direct Access Storage

DBCS Double Byte Character Set

DCL Data Control Language

DDL Data Definition Language

DDR SDRAM Double data rate SDRAM

DKNF Domain/Key Normal Form

DMA Direct Memory Access

DML Data Manipulation Language

EDW Enterprise Data Warehouse

FCFS first come, first served


FIFO First In, First Out

FPU Floating Point Unit

HCI Human-Computer Interface

HMPP Hybrid Multicore Parallel Programming

HTTP Hyper Text Transfer Protocol

IPC Inter-Process Communication

ISA Instruction Set Architecture

MIMD Multiple instruction, multiple data stream

MISD Multiple instruction, single data stream

MISRA Motor Industry Software Reliability Association

ML Machine Learning

NAS Network Access Storage

OSI Open Systems Interconnection

PDU Protocol Data Unit

RDBMS Relational DBMS

RDM Runtime Database Manager

RDRAM Rambus DRAM

RISC Reduced Instruction Set Computer

RTOS Real Time Operating System

SAN Storage Area Network

SASE Specific Application Service Element

SDRAM Synchronous DRAM

SEI Software Engineering Institute

SIMD Single instruction, multiple data stream

SISD Single instruction, single data stream

SQL Structured Query Language

SRTF Shortest Remaining Time First

Introduction Software engineers must understand and


internalize the differences between their role
and that of a computer programmer. A identify the areas of knowledge that
typical programmer converts a given professional software engineers must know,
algorithm into a set of computer instructions, according to practicing subject matter
compiles the code, creates links with relevant experts worldwide.
libraries, binds, loads the program into the Software engineers are expected to have deep
desired system, executes the program, and and broad knowledge of various concepts of
generates output. computer science and be able to apply them.
On the other hand, a software engineer These concepts form the foundations of
studies the requirements, architects and computing.
designs major system blocks, and identifies
optimal algorithms, communication BREAKDOWN OF TOPICS FOR COMPUTING
mechanisms, performance criteria, test and FOUNDATIONS
acceptance plans, maintenance
methodologies, engineering processes and The breakdown of topics for the Computing
methods appropriate to the applications and Foundations Knowledge Area (KA) is shown
so on. in Figure 16.1.
The key purpose of the Software Engineering
Body of Knowledge (SWEBOK) Guide is to

Figure 16.1. Breakdown of Topics for the Computing Foundations KA


1 Basic Concepts of a System The applications may require systems
that are manual or fully or
or Solution semiautomated; real-time, online or
offline; distributed or single-location,
The problem to be solved has to be and so on.
analyzed in greater detail for functional
requirements, user interactions, The software subsystems’ architects
performance requirements, device have to consider appropriate
interfaces, security, vulnerability, technology, tools, data structure,
durability and upgradability. A system operating system, database (if
is an integrated set of subsystems, required), user interfaces,
modules and components that perform programming languages, and
specific functions independently. algorithms for computing solutions
Delineating the problem and solution is optimally among others.
critical.
Software requirements, architecture,
An engineered system ensures the design, construction, testing, methods
subsystems are designed to be: and models, quality assurance, and
security are discussed in detail in other
● Modular: Each subsystem chapters as independent KAs.
(module) is uniform (similar size).
● Cohesive: Each subsystem The Computing Foundations KA
performs one specific task. focuses on explaining the key
Ideally, systems should be highly computer science concepts a software
cohesive. engineer has to know well to architect,
design, construct, deploy and maintain
● Coupled: Each subsystem useful, high-quality software
functions independently, as subsystems.
much as possible. Ideally,
systems should be loosely
coupled.

The subsystems may further be broken


down into modules and sub-modules
that also exhibit these characteristics.

The system may include both software


and hardware subsystems. The
hardware must be designed to support
the software subsystems and satisfy all
user requirements, especially user
interfaces (input/output (I/O)) and
performance.

This section focuses on designing and


building engineered software
subsystems.

Computing Foundations 16–1 © IEEE – SWEBOK Guide V4


2 Computer Architecture ● Data bus, which stores (writes)
or retrieves (reads) data to and
and Organization from the memory location
● Control bus, which provides
Computer architecture refers to the
components of a computer system control signals from the CPU to
designed for specific purposes. I/O devices (read or write,
Computer organization explains how enable or disable, interrupt,
the units within the system connect and status, reset, etc.)
interact to achieve those purposes.
Software engineers are expected to
System architects must analyze the know the details of the functioning and
application for which the computer timing of different types of buses —
system is to be designed or developed; first-generation, second-generation
identify the critical components, and third-generation buses; internal
including I/O devices required (along and external buses; serial and parallel
with throughput), types and quantum buses; simplex, full-duplex and half-
of memory, processing power, and duplex buses; Mil-Std-1553Bbus,
coprocessors required; and choose or Wishbone buses, etc.
design appropriate computer
architecture and organization. 2.2 Types of Computer
Contingencies should be built in for the Architectures
resources required. 2.2.1 Von Neumann Architecture
This content area discusses various John von Neumann designed a
computer architectures and computer system architecture with five
organizations a system or software essential components as shown in
architect needs to know. Figure 16.2:

2.1 Computer Architecture ● Arithmetic Logic Unit (ALU)


that performs arithmetic and
Architecture describes what the logic computation.
computer or system does, and its
components, such as memory, data ● Memory where the program
storage devices, graphics, and the and data are loaded and
computers or processor’s computing executed (program and data
power. A computing system typically reside in the same memory
has memory, I/O devices and a central space).
processing unit (CPU). ● Input devices (e.g., keyboard,
mouse, serial port, hard disk)
These components are connected
that allow the user to provide
through physical signal lines called a
bus. Typically, three types of buses are inputs and control commands.
used for specific purposes: ● Output devices (e.g., monitor,
printer) that transmit or
● Address bus, which addresses communicate the computed
or accesses a specific memory results.
location or I/O device
● The control unit synchronizes
all devices, memory and ALU.

Computing Foundations 16–2 © IEEE – SWEBOK Guide V4


Memory

ALU
Input Devices Output Devices

Control Unit

Figure 16.2. Computer Architecture

2.2.2 Harvard Architecture the system. An ISA defines registers


(address, data, flags), data types,
The Harvard architecture provides instructions specific to the computer or
separate memory blocks for code system, memory (internal and external)
(program or instructions) and data. As addressing schemes, and I/O handling
the code and data memory blocks are models.
different, the contents of address 0000
in the code block and the contents of A Reduced Instruction Set Computer
address 0000 in the data block are (RISC) architecture and a complex
different. The CPU reads instructions instruction set computer (CISC)
from the code addresses and reads data architecture are the two primary types
from the data addresses. of ISAs.

The system design and implementation In RISC, the instructions perform


in the original Harvard architecture single tasks such as reading from
were relatively complex. The modified memory or I/O, performing arithmetic
Harvard architecture provides one or logical computation, and storing
memory block but partitions it into data into memory or I/O. The computer
code and data sections. Data memory system is simple but requires more
sections are read/write capable, and instructions to execute a task. It
code memory sections are read-only requires fewer clock cycles per
(thus protects code from getting instruction, and instruction sizes tend
corrupted at runtime). I/O operations to be fixed. As the instruction set is
can be performed simultaneously. small (fewer instructions), it is easier to
build a compiler, and the program can
2.2.3 Instruction Set Architecture be relatively large. RISC architectures
are typically designed for general-
An instruction set architecture (ISA) is purpose processors.
an abstract model of how a CPU
executes the instruction sets defined for

Computing Foundations 16–3 © IEEE – SWEBOK Guide V4


The instructions are relatively more among these architectures, along with
powerful in CISC and can perform case studies, so that they can choose
multiple tasks such as reading data the right architecture to solve the
from memory + performing arithmetic problem at hand.
operation + storing the result in
memory. Here, fewer instructions are 2.2.5 System Architecture
required to perform a task, but the
instructions take more clock cycles to System architecture is the overall
complete. Instruction sizes vary widely system design, considering hardware
depending on operations with registers, architecture, software architecture,
memory and I/O. Programs are modules, interfaces, data management,
relatively small. CISCs are typically and communication among modules.
designed for specific purposes such as Distributed computing has become
digital signal processing (DSP) and affordable with the development of
graphics. efficient, high-end, high-performance
servers, storage, network devices,
2.2.4 Flynn’s Architecture or software, and tools. Several reference
Taxonomy designs or architectures are available
for any given application.
The computing architectures described
above consider a single computer at a Typical system architectures include
time. Michael J. Flynn proposed the following:
concurrent computer architectures,
where multiple instruction streams and ● Integrated system
multiple data streams are used in the architecture: Computing, I/O,
system. Software engineers need to data and networking are tightly
know the different types of Flynn’s coupled and available in one
architecture, with examples, including box. This architecture is
the following: typically used in solutions
designed for specific
● Single instruction, single data applications.
stream (SISD) architecture
● Single instruction, multiple ● Distributed system
data stream (SIMD) architecture: Computing and
architecture storage are located in separate
● Multiple instruction, single but networked boxes. This
data stream (MISD) architecture supports scaling,
architecture provides centralized or
● Multiple instruction, multiple isolated data storage, and
data stream (MIMD) shares computation load.
architecture ● Pooled system architecture:
Several computing, storage
Variants of these architectures include and network resources are
array processing, parallel processing, available in pools and provided
and associate processing; processing depending on demand. This
single program multiple data streams, architecture provides for
and multiple program multiple data
efficient use of shared
streams. Software engineers are
resources.
expected to know the differences

Computing Foundations 16–2 © IEEE – SWEBOK Guide V4


● Converged system Various schemes may be implemented
architecture: As the name to improve the performance of the
implies, this is the convergence ALU, including pipeline processing
of distributed and pooled and parallel processing. The latest
architectures. This architecture CPUs provide multiple cores and
supports agility and scalability. multiple threads that help achieve
maximum throughput. Software
Software engineers are also expected to engineers are expected to know the
know and be able to apply various differences between multiple cores and
other architectures, including .NET multiple threads, along with specific
Framework architecture, Unix cases illustrating the best use of these.
architecture, and virtual machine
architecture. Specific-purpose coprocessors and
associate processors are used with
main processors to support faster
2.3 Microarchitecture or processing.
Computer Organization
2.3.2 Memory Unit
Microarchitecture or computer
organization explains how the ISA of a
Memory units are used to store data or
computer is implemented and how
information, which is accessed by the
different components in the system
CPU. The total amount of memory a
function and interact with one another
computer can have is derived from the
to produce the desired outcome.
maximum number of address lines
supported by the CPU. Different types
System architects and engineers must
of memory used in the system include
know the various components used in
read-only memory (ROM), and read-
the system along with how they
write memory or random access
function. Some of these components
memory (RAM). ROM is also RAM.
are discussed below.
Software engineers working on
2.3.1 Arithmetic Logic Unit performance-critical applications are
expected to know the differences
The ALU performs all arithmetic among various types of memory,
computations and logical operations. including static RAM (SRAM),
The CPU typically has an ALU, dynamic RAM (DRAM),
processor, memory, and control unit. asynchronous DRAM (ADRAM),
High-end CPUs may also have other synchronous DRAM (SDRAM),
functionality-specific processing units, double-data-rate SDRAM (DDR
such as a floating-point unit (FPU), to SDRAM), rambus DRAM (RDRAM),
perform computations involving and cache DRAM (CDRAM), along
floating point or real numbers with pros, cons and use cases of each.
(fractions). ALUs have registers that
are high-speed memory and internal to 2.3.3 Input/Output Devices
the ALU. The ALU executes the
processor instruction sets. All
As the names imply, input devices are
operations are typically carried out on
those that provide inputs to the
the registers.
computer system, and output devices
are those that deliver computer
systems’ output to the user. While

Computing Foundations 16–3 © IEEE – SWEBOK Guide V4


some devices are input only (keyboard,
mouse, microphone, etc.) or output
only (printer, monitor, speakers, etc.),
a few devices serve as both input and
output devices (e.g., touch screens,
hard disks, USB drives).

Software engineers are expected to


understand the interface of the I/O
devices with the system, whether they
are memory-mapped I/O or I/O-
mapped I/O devices, and device drivers
required for the users or applications to
interact with the devices through the
operating system.

2.3.4 Control Unit

The control unit synchronizes multiple


components in the computer system.
Typically, control units are part of the
CPU. They interpret instructions and
coordinate data movement among
different components (memory, I/O
devices and ALU). Control units are
also used to enable or disable
components or devices and reset
devices.

Software engineers are expected to be


aware of the different types of control
units, including hardware control units
and micro programmable control units
(single-level and two-level control
stores), along with the benefits and
challenges of each.

Computing Foundations 16–4 © IEEE – SWEBOK Guide V4


3 Data Structures and An Abstract Data Type (ADT) is
defined by its behavior (semantics)
Algorithms from the user’s perspective,
specifically from the point of possible
Data structures are fundamental to values and operations.
computer science and software
engineering. Every program uses data Composite or compound data types are
— receives input (data), performs further grouped under linear, and
specific functions on the data and hierarchical or nonlinear data types.
produces output. Data structures is
about representing different types of Linear data types include one-
data effectively, performing various dimensional and multidimensional
operations on the data proficiently, and arrays, strings, linked lists (singly
storing and retrieving data efficiently. linked lists, doubly linked lists, circular
Software engineers must internalize lists), stacks, queues, and hash tables.
data structures, the selection of data
structures, and operations on them Hierarchical or nonlinear data types
specific to applications. include trees, binary trees, n-array
trees, B trees, B+ trees, weighted
In this chapter, different types of data balanced trees, red-black trees, graphs,
structures and various operations on heaps, binary heaps and graphs.
them are discussed.
In the current era of free text queries or
3.1 Types of Data Structures natural language processing, software
engineers may need to understand
Data type is an attribute of data. strings and various operations on
Various data types are identified and strings, and to be able to analyze skip
defined based on different lists.
characteristics of data, the need for
grouping data items and various Software engineers must understand
operations performed on data. Data the nuances of various types of data
structures are grouped primarily based and their sizes in memory (short
on the physical and logical ordering of integer, integer, long integer, long long
data items. integer, signed and unsigned integer,
float, double, long double, double byte
Primarily, data is grouped into three character set (DBCS), Boolean, etc.),
types: basic, composite or compound, along with how various data types are
and abstract. represented and stored in memory and
how various operations are performed
Basic or primitive data types include on them. Sets, graphs, and trees are
character, integer, float or real, discussed in more detail in the
Boolean, and pointer data. Mathematical Foundations KA.

Compound data types are made of 3.2 Operations on Data Structures


multiple basic or primitive, or even
multiple compound data types. Some Basic operations performed on data
of the compound data types include structures include Create, Read,
sets, graphs, records and partitions. Update and Delete (CRUD).
Compound data types also require
various ways of traversing data sets to

Computing Foundations 16–5 © IEEE – SWEBOK Guide V4


identify specific data items before computational resources (computing
performing the operation. power and space) consumed by that
algorithm for a given set of data.
It is important to ensure that any
insertion or deletion of items in a data A thorough understanding of data
set or database does not alter the data structures is vital for analyzing and
set or database in a way that violates designing good algorithms. Refer to
any policy under which the database the “Data Structures and Organization”
was designed and built. content area for more details.

Additional operations performed on The attributes of algorithms are many


data structures include sorting the data and include functionality, correctness,
items in a specific order, searching and robustness, modularity,
locating a data item, and merging two maintainability, programmer-
or more data sets into one set without friendliness (ease of integration into
disturbing the policy on which the data the project and ease of use), user-
set is built. Searching and sorting friendliness (i.e., how easily it is
algorithms are discussed in the next understood by people), need for
section. programmer time, simplicity, and
extensibility.
Different data structures are created to
suit specific applications, such as A commonly emphasized attribute of
stacks, queues, trees, and graphs. algorithms is “performance” or
Software engineers are encouraged to “efficiency.”
learn the traversals through nonlinear
data structures, which include different The parameters that matter for an
tree parsers (pre-order, in-order, and algorithm’s resource consumption
post-order tree traversals), CRUD include, but are not limited to:
operations on trees, tree balancing,
Binary Search Trees (BSTs), AVL 1. Hardware
trees, and red-black trees, and to learn
2. Software
tree search algorithms (depth first,
breadth first, shortest paths, etc.). Some 3. Algorithm selection and
of these are discussed in the design for a specific problem
Mathematical Foundations KA. 4. Effective implementation

3.3 Algorithms and Attributes of 3.4 Algorithm Complexity


Algorithms
The complexity of an algorithm is a
All software implements logic to measure of the resources it consumes
perform the required function. That (computing power or memory) for a
logic or algorithm to perform a specific specific problem and given data set.
task has to be designed or chosen with
consideration for system performance, Choosing the right data structures and
security, portability, maintainability, operations on data structures and
scalability and simplicity, among other ensuring optimal implementation of
concerns. the algorithm also effect the
algorithm’s complexity.
The complexity of an algorithm is
determined by measuring the

Computing Foundations 16–6 © IEEE – SWEBOK Guide V4


3.5 Measurement of Complexity best-case, worst-case and average-case
scenarios in terms of resource
Often, the complexity of an algorithm consumption for a given data set.
is denoted by the resources consumed
in the worst-case scenario. The Popular asymptotic notations for
complexity of algorithms is typically algorithms are listed in Table 16.1.
measured by asymptotic notations for

Asymptotic Description
Notations
Big O Big O notation provides the upper bound of operations (worst-case
scenario) for a function f(n).
little-o Little o notations are used to depict scenarios where the upper
bound is not tight.
Big Omega (Ω) Big Ω notations are used to depict lower bounds (best-case
scenarios) for a function f(n).
little-omega (ω) Little omega (ω) notations are used to depict loosely bound best-
case scenarios of an algorithm.
Theta (Θ) Theta notation bounds the function from above and below
(provides average-case complexity of an algorithm).

Table 16.1. Asymptotic Notations of Algorithms

Learning the computation of the listed exponential or logarithmic. These


notations for different sets of input data complexities are described in Table
(e.g., sorted, unsorted, and sorted in 16.2. Typically, constants are not
reverse order) is important. considered when computing the
efficiency of an algorithm.
The complexity of an algorithm can be
constant, linear, quadratic, cubic,

Complexity Notation Description


Constant O(1) Regardless of the data size, the algorithm takes a
constant number of steps to perform the operation.
Linear O(n) The number of operations is linearly proportional
(steps are a constant multiple of the data set size n).
Quadratic O(n2) The algorithm takes the order of n2 steps for
performing the operation on the data set of size n.
Cubic O(n3) The algorithm takes the order of n3 steps for
performing the operation on a data set size of n.
Exponential O(nk) The algorithm has an order of exponential
O(2n) dependability for performing the operation on a data
set of size n.
O(n!)

Computing Foundations 16–7 © IEEE – SWEBOK Guide V4


O(log (n)) The algorithm takes the order of log (n) steps (base of
Logarithmic log is typically 2).
O(N*log (n))

Table 16.2. List of Algorithmic Complexities

3.6 Designing Algorithms ● Optimized algorithms for


performing several operations
The software engineer must consider on a matrix, such as matrix
the specific application's purpose and multiplication, transposition,
the performance requirements in order matrix inversion, median, and
to select an appropriate algorithm. In finding determinants.
addition, the software engineer must
consider linear programming versus ● Cryptographic complexity and
parallel programming and single- algorithms: secret key
versus multi-threading. (symmetric) encryption
algorithms, public key
The efficiency of an algorithm is (asymmetric) encryption
measured by the resources it consumes, algorithms and hash functions.
primarily computing time and memory. ● One-way functions, class UP,
space complexity, deterministic
A software engineer has to know a few
and nondeterministic space
standard algorithms and relevant
concepts, including the following: complexity classes, the
reachability method, and
● Common types of algorithms: Savitch’s theorem.
Brute force algorithm, Recursive ● Graph representations, graph
algorithm, Divide & Conquer algorithms, breadth-first and
algorithm, Dynamic depth-first search, topological
programming algorithms, Greedy sort, minimum spanning tree,
algorithm, Backtracking Kruskal and Prim algorithms, and
algorithms, Randomized single-source shortest paths
algorithms. (Bellman-Ford and Dijkstra
● Randomized approximation algorithms).
algorithms, randomized ● Complexity of randomized
rounding, approximation computation, interactive proofs,
algorithms, P and NP complexity complexity of counting, Boolean
class algorithms, Cook’s circuit complexity.
theorem, reductions and
completeness algorithms. Of particular importance in many
● Multiple comparison operations software systems are algorithms for
sorting and searching, these are
performed simultaneously in a
discussed in more detail.
network model of computation.
Popular sorting network
3.7 Sorting Techniques
algorithms include comparison
networks, zero-one principle,
Sorting is the process of arranging data
merging network and bitonic items in a specific order.
sorter.

Computing Foundations 16–2 © IEEE – SWEBOK Guide V4


Popular sorting algorithms include Depending on the type of the data item
Linear sort, Bubble sort, Quick sort, and the size of the data set, various
Merge sort, Radix sort, Heap sort, search techniques are used to find the
Bucket sort, Pigeonhole sort, Bitonic desired data item. Popular search
sort, Tree sort, Cartesian Tree sort, 3- algorithms include linear, binary,
Way Quick sort,3-Way Merge sort, and jump, interpolation, exponential,
Sorting Singly / Doubly linked lists. Fibonacci, sub-list (search a linked list
in another list), logarithmic, tree and
Each sorting algorithm has its benefits hashing.
and shortfalls. Selection of an
appropriate algorithm depends on the 3.9 Hashing
size of input data, the type of data
(linear or nonlinear), and the type of Hashing is one of the very important
data set (completely unsorted, partially and popular technique in which data of
sorted, etc.). The algorithms are arbitrary size (key values) are
implemented in both iterative and converted into values of fixed size
recursive methods. Typically, iterative called hash values, which index into a
methods are better than recursive hash table so the data records can be
methods for CPU performance and located easily. The function used for
memory. However, recursion provides that purpose is called a hash function,
easy methods for solving specific and the values returned are called hash
problems, such as tree operations. If values, hash codes, digests, or hash
adequate computing power and keys.
memory are available, the difference
between recursive and iterative Different properties of hash functions,
implementation methods is negligible. such as uniformity, efficiency,
universality, applicability,
In the case of applications where deterministic, defined or variable
certain sorting algorithms work best, range, data normalization, testing, and
software engineers should learn and measurement, must be understood and
accommodate any preconditions and considered when designing or
complexities (demand on memory and choosing a hash function.
computing power) involved in using
them. Various types of hash functions are
designed for different types of key
3.8 Searching Techniques values, applications, and database
sizes. Hash function types include
Searching is a process of finding trivial hash function, division method,
specific data items or records in a set of mid-square method, digit folding
data items or a database. method, multiplicative hashing, double
hashing, open and closed hashing,
Search algorithms are primarily rehashing, extendible hashing, and
categorized into sequential search (data cryptographic and noncryptographic
set is traversed sequentially until the hash functions.
end of the data set) and interval search
(the search moves efficiently through a Software engineers are expected to
sorted list, balanced tree, etc.), based learn, implement and be able to
on how data sets are organized. compare different types of hashing
algorithms, various collision resolution
techniques, linear probing, quadratic

Computing Foundations 16–2 © IEEE – SWEBOK Guide V4


probing, separate chaining, and open
addressing.

Computing Foundations 16–3 © IEEE – SWEBOK Guide V4


4 Programming ● Functional programming
languages
Fundamentals and ● Procedural programming
Languages languages
● Object-oriented programming
Computer programs are sequential languages
steps or instructions that work on ● Scripting languages
provided inputs and generate desired or ● Logic programming languages
specific outputs.
Software engineers need to study
Software engineers must carefully
multiple programming languages to
consider various aspects before
choose the right one for a specific
selecting a programming language to
application.
solve a specific problem.
Many programming languages, such as
4.1 Programming Language Types C, C++ and Java, use compilers to
build executables, whereas other
Depending on the hardware, operating programming languages, such as
system, and application various types JavaScript, Ruby and Python, use
of programming languages are interpreters.
developed and used. Basic types of
programming languages include
4.2 Programming Syntax,
microprogramming, machine
languages, assembly programming and Semantics, Type Systems
high-level programming.
The syntax of a programming language
Microprogramming is executed within is its grammar — the various
the microcontroller or microprocessor constructs the programming language
chips to execute the assembly language uses. A compiler or interpreter checks
instructions. the syntax of all declarations,
statements (algorithmic statements,
Assembly language programs use the conditional or logical statements,
mnemonic specified by the control statements, loops, special
microcontroller or microprocessor. language-specific statements, micros,
Typically, the microcontrollers or etc.), and functions or procedures, and
microprocessors are designed to creates notifications of any errors.
address specific applications (DSP
processors, graphics chips, I/O Semantics refers to the meaning or
controllers, mathematical interpretation of the statement. The
coprocessors, generic processors, etc.). meaning could vary at runtime,
depending on runtime values.
High-level languages enable programs
to be written in instructions similar to A type system assigns a type to a data
English, which makes it easy for the item or to constructs of a program, such
developer and maintainer to write and as variables, expressions and functions.
maintain the programs. Various high- In static typing, the type is fixed; it is
level programming languages include defined during program creation and
the following: checked at compilation time.
Languages such as C, C++ and Java
support static typing. In dynamic

Computing Foundations 16–4 © IEEE – SWEBOK Guide V4


typing, the type of a variable can input parameters is local to the
change at runtime depending on the subprogram. Subprograms that return
context and hence is checked at value by their name (which can be used
runtime. Dynamic typing languages as a variable in a statement) are called
include Python, Perl, PHP and Ruby. functions, and subprograms designed
Dynamic typing is also called not to return any value are called
polymorphic typing. procedures.

Software engineers are expected to By default, the scope of subprogram


know how high-level programming parameters is dynamic and local to the
languages are translated into machine subprogram. However, if the
languages, to be familiar with the subprograms have to remember their
various types of compilers, and to history or previous values, they have to
know the differences among compilers, be declared static or as specified in the
interpreters, cross-compilers, chosen programming language.
assemblers and cross-assemblers.
Software engineers are encouraged to Different programming languages
learn about compiler phases, including support one or more types of
preprocessing, lexical analysis, syntax parameters’ passing, including pass-
analysis, intermediate code generation, by-value, pass-by-reference, pass-by-
optimization, code generator, linkers, name, pass-by-result and pass-by-
loaders and debuggers. result-value. Software engineers
should know the differences among
Tokens, grammars, syntax trees, parse these types and use them appropriately.
trees and weights to various operators
(precedence) in arithmetic and logical Many high-end languages support the
equations are important to analyze and nesting of subroutines and recursions,
understand. where a subroutine calls itself.
Different types of recursions include
4.3 Subprograms and Coroutines cyclic or direct recursion (subroutine
calls itself) and acyclic or indirect
Subprograms or functions are recursion (subroutine A calls
programs or building blocks that subroutine B, which in turn calls
perform specific (part) functions in the subroutine A). It is important to
scope of a complete project. establish the exit criteria in recursive
Subprograms provide for breaking the subprograms.
larger program into smaller modules.
The modules are typically sections of Software engineers are encouraged to
code that are used multiple times in understand, using case studies, how the
multiple places. The subprograms subprogram return address and
reduce memory space, improve parameters are stored in memory
readability and maintainability of the (runtime stack), how they are used in
program, and execute parts of the the subprogram and for returning to the
program with different values at called subprogram, and the scope of
different places and times. variables (global and local).

The subprograms have an entry point A subprogram with multiple entry


and typically have multiple input points, where the previous exit point is
parameters on which the subprogram remembered for resumption at a later
acts and produces output. The scope of point, is called a Coroutine. A

Computing Foundations 16–5 © IEEE – SWEBOK Guide V4


Coroutine call is typically called a Software engineers are encouraged to
resume call. The first resume call understand specific applications where
enters the subroutine from the coroutines are useful and to use the
beginning, and subsequent resume coroutines. It is an interesting exercise
calls enter the subroutine at the point to implement coroutines in C, as C
where it was exited last. does not support coroutines natively.

High-end languages that support Figure 16.3 depicts the functioning or


Coroutines include C++20, C#, Java, control flow of coroutines.
JavaScript, Kotlin, Perl, .NET
Framework, Python, Ruby and many
assembly languages.

Subroutine S1 Subroutine S2 Subroutine S3


• • •
• • •
• • •
Resume S2
Resume S1 Resume S2

• •

• •

Resume S3 • •

• •
Resume S3
• •
• ●
• ● Resume S1

● •

Figure 16.3. Example of Coroutine

4.4 Object-Oriented Programming user) and called methods internally


(referring to how the operation is
As the name suggests, object-oriented implemented by the developer).
programming languages are based on
objects. The objects typically have A Class is a programmer-defined
both data and functions that operate on prototype that defines the attributes and
that data. The data of an object is methods. Objects are actual instances
typically called the object’s attributes of a Class. There could be multiple
or properties, and the code or functions Objects of a Class with varied
that work on the attributes are called characteristics. For example, a Class
operations externally (by the client or can be defined by the characteristics

Computing Foundations 16–6 © IEEE – SWEBOK Guide V4


and operations of a vehicle, whereas rectangle. Polymorphism has two
objects are instances of the class types:
vehicle such as car, bus or truck.
o Static or compile-time
The objects interact with one another polymorphism: The methods
using the methods or operations. (functions) or operators are
overloaded and resolved during
Important characteristics of object- compile time. Example: The
oriented programming (OOP) are methods, though they have the
Abstraction, Encapsulation, same name, will have different
Inheritance and Polymorphism. types or numbers of parameters.
o Dynamic or runtime
Abstraction is a property that exposes
polymorphism: The overloaded
only required or relevant information
to the user, hiding the details and method to be executed is resolved
nonessentials. Typically, a superclass at runtime. Example: When both
is created with generalized methods, base class and derived class have
and the subclasses implement the the same method, the base class
methods as appropriate for specific method is said to be overridden.
instances of the class (object). Thus,
the implementation is hidden from the Popular OOP languages include C++,
user of the superclass. C#, Cobol 2002, Java, Python, Lisp,
Perl, Object Pascal, Ruby and
One of the key benefits of Smalltalk.
encapsulation is the ability to hide or
protect data from unauthorized users. It’s important to recognize that using
The software engineer can give OOP requires a different mindset than
different levels of protection to data using traditional, procedural, or
and methods by declaring them private structured programming does.
(local to class) or public (available to
other classes). This also protects data
from corruption, either intentional or
accidental. 4.5 Distributed Programming and
Parallel Programming
Inheritance is an important feature of
OOP, where a subclass or derived class In a distributed computer system,
inherits the properties of a superclass multiple parts of the software are run
or base class. Primary inheritance on multiple computers, connected
modes include public, protected and through computer networks, to achieve
private modes. a common goal. Writing such
programs is called distributed
Polymorphism is another key feature of programming.
OOP. Polymorphism is the ability to
have multiple forms depending on the Parallel programming is a type of
object. For example, shape could be a computing in which different parts of
base class with draw as a method, and the program are run in parallel to
objects could be a circle, triangle or achieve the same objective or goal.
rectangle. The implementation of Table 16.3 compares distributed and
method draw, though the name is the parallel programming.
same, differs for a circle, triangle and

Computing Foundations 16–2 © IEEE – SWEBOK Guide V4


Parameters Distributed Programming Parallel Programming

Functionality A task is shared and executed by One or more processors on a


multiple computers that are computer share and execute the
networked. task in parallel.

Computers Multiple computers in different One computer with one or more


locations but networked. processors or cores.

Memory Each computer has its own memory. Computers can have shared or
distributed memory.

Communication Computers communicate through Processes communicate through a


networks. bus or inter-process
communication (IPC) methods.

Benefits Failure of one computer does not As multiple processes run in


affect the functioning of the task, as it parallel, CPU performance
is transferred to another computer. increases.
Provides scalability and reliability for Failure of one processor does not
end users. affect the performance of other
processors or cores.

Disadvantages Having multiple systems could Using multiple processors or cores


become expensive; the cost must be could be expensive.
weighed against customers’ need for Dependency of one process on
application uptime. another process could introduce
Network delays could affect the latency.
overall functioning of the task.
Designing an efficient distributed
computing system is relatively
difficult.

Example Telephone and cellular networks, Distributed rendering in computer


Applications internet, World Wide Web networks, graphics, scientific computing.
distributed database management
systems, network file systems, grid
computing, cloud computing.

Example Golang, Elixir, Scala. Apache Hadoop, Apache Spark,


Programming Apache Flink, Apache Beam,
Languages CUDA, OpenCL, OpenHMPP,
OpenMP for C, C++ and Fortran.

Table 16.3. Comparison of Distributed and Parallel Programming

4.6 Debugging Programs, when written, are expected


to function properly and generate the

Computing Foundations 16–1 © IEEE – SWEBOK Guide V4


expected output. However, An estimated 82% of vulnerabilities
programmers often face three types of are caused by clashes between
errors — syntax errors, runtime errors, programming styles
and logical errors — at different stages (https://www.ptsecurity.com/ww-
of software development. en/analytics/web-vulnerabilities-
2020/).
Syntax errors are deviations from the
standard format specified by Hence, quality-conscious companies
programming languages. These are often have defined standards and
explicitly identified by compilers and guidelines, which set rules and
are easy to fix. recommendations for their
programmers and testers to follow.
Runtime errors surface when a
program runs into an unexpected When software teams follow
condition or situation such as dividing appropriate coding standards, they
by zero, memory overflow, or create readable, cleaner, portable,
addressing a wrong or unauthorized reusable, modular, easily maintainable,
memory location or device, or when a less defect-prone software code, and
program tries to perform an illegitimate project schedules become more
or unauthorized operation or tries to predictable. The following practices
access a library, for example. The can help organizations implement such
programs must be thoroughly tested for standards successfully:
various types of inputs (valid data sets,
invalid data sets and boundary value • Carefully choose the coding
data sets) and conditions to identify standards and guidelines that suit
these errors. Once identified, runtime the application or system being
errors are easy to fix. developed.

Logical errors are slipups in • Consider open standards created


implementing the logic to achieve the by community participation, such
desired output. These errors must be as Software Engineering Institute
traced and resolved with various data (SEI) Computer Emergency
for each functionality. Several Response Team (CERT), as well as
sophisticated high-end debuggers help closed standards created by
trace each variable or data item and working groups such as the Motor
support setting various types of break Industry Software Reliability
points. Association (MISRA).

4.7 Standards and Guidelines • Educate programmers to follow


adopted standards and guidelines.
As the computing system or • Use tools and periodic reviews to
application becomes bigger and ensure adopted standards and
complex, more programmers are guidelines are followed.
involved. Their individual
programming styles affect the project • Review and revise standards and
schedules and make system integration guidelines from time to time,
difficult, so systems become defect- learning from project execution.
prone, and maintenance and
enhancement become challenging. SC 22 is a subcommittee of the Joint
Technical Committee ISO/IEC JTC 1

Computing Foundations 16–2 © IEEE – SWEBOK Guide V4


of the International Organization for
Standardization (ISO) and the
International Electrotechnical
Commission (IEC) for defining
standards for programming languages,
their environments and system
software interfaces (ISO/IEC JTC 1/SC
22). Software engineers are
recommended to refer these standards
as well.

Computing Foundations 16–3 © IEEE – SWEBOK Guide V4


5 Operating Systems booting, processes, cores, threads, user
and kernel threads, fork and exec,
An operating system (OS) is software synchronization, and hardware support
that manages the computer’s hardware for locking. They should compare and
and provides a platform for software contrast various CPU scheduling
applications. Software engineers need concepts, scheduling algorithms,
a good general understanding of OSs algorithm evaluations, multiple
and OS objectives, services, and processor scheduling and real-time
functions. scheduling, concurrent programming,
deadlocks, critical regions, conditional
Different types of OSs have been critical regions, and monitors.
designed over time to support various
types of systems or applications, Communication among different
including batch processing, processes is important in multitasking,
multiprogramming, time-sharing, and multiuser OSs. A software engineer
dual-mode operation — for protecting must have a deep understanding of
I/O, memory, CPU, kernels and micro- inter-process communication (IPC),
kernels. and types of IPCs, including messages,
pipes, shared memory, semaphores,
To choose an appropriate OS, software modularization and process
engineers have to analyze different synchronization.
types of operating systems, such as
single-user, single-tasking, multiuser, Various types of locks are used to
multitasking and multi-threading OSs; ensure proper synchronization of data
real-time OS (RTOS); network OS; among processes, including
and distributed OS. For small systems, semaphores, binary semaphores,
an operating system may not be counting semaphores and mutex locks.
required. It is important to study Deep understanding of common
examples of each type and compare challenges of IPCs, deadlocks,
their benefits and limitations. deadlock scenarios, and deadlock
characterization; prevention,
Software engineers need to understand avoidance, detection and recovery of
operating systems’ basic structure, deadlocks; and precedence graphs is
system architecture types, design critical and to be internalized with the
approaches, the architecture of help of case studies.
distributed OS and issues in distributed
OS. Software engineers are required to
study, with examples, concurrent
An operating system typically has four languages, processes and scheduling,
major components: processor job and process concepts, and various
management, memory management, types of scheduling: CPU-I/O
device management and information interleaving, non-preemption, context
management. switching, and scheduling algorithms
(first come, first served (FCFS),
shortest job first (SJF), shortest
5.1 Processor Management remaining time first (SRTF), priority
scheduling, round robin and combined
Software engineers must understand
schemes).
the concepts of processor, process and
address space. They must understand
5.2 Memory Management

Computing Foundations 16–4 © IEEE – SWEBOK Guide V4


A software engineer needs a very good devices, and buffering devices.
understanding of how memory is Engineers should compare and contrast
managed in the system and of the polled, interrupt-driven and direct
different types of memory and relevant memory access (DMA) I/O devices,
concepts — physical memory, virtual and blocking versus non-blocking I/O
memory, secondary memory, memory devices.
hierarchy, linking and memory
allocation. Device drivers are software programs
that provide an interface between
Engineers must understand memory hardware and applications. Software
fragmentation (both external engineers should understand device
fragmentation, internal fragmentation), drivers, the various types of device
and various memory management drivers, device driver tables, device
concepts, including units, paging, page driver functions, and interfaces for
tables, segmentation, paged various types of hardware devices, as
segmentation, virtual memory well as hardware and software
management, demand paging, page interrupts and interfaces by interrupts
replacement, thrashing and swapping. and polling.

Memory is allocated to processes in Software engineers should also


different ways — for example, through understand that issues with caching,
contiguous allocation, noncontiguous scheduling, spooling and performance
allocation, dynamic partitioned can arise for shared devices in
memory allocation, static-swapping multiuser, multitasking OSs and device
and overlays. a mechanism for resolving them.

An understanding of logical addresses, 5.4 Information Management


partitions, static versus dynamic
memory allocation, free space Software engineers need to understand
management, and defragmentation of the following:
memory blocks is also important.
• The concept of a process, a
As the physical memory available is system programmer’s view of
always limited, various memory page processes, an operating
replacement strategies are designed system’s view of processes,
and implemented. These strategies
and operating system services
include First-in-first-out (FIFO), Not-
for process management
Recently-Used (NRU), Least Recently
Used (LRU), Most Recently Used • File system management,
(LRU), Least Frequently Used (LFU), storage management, file
Most Frequently Used (MFU), Longest attributes, directory structure,
Distance First (LDF), Second Chance, file system structure, mass
and Aging among others. storage structure, I/O systems,
protection and security
5.3 Device Management
• User and operating system
A software engineer must have good views of the file system and
knowledge of different types of I/O various types of file systems —
devices — memory-mapped and I/O- simple file system, symbolic file
mapped devices, block and character

Computing Foundations 16–5 © IEEE – SWEBOK Guide V4


system, logical file system and In addition, software engineers should
physical file system understand important principles
include hardware security, external
Engineers should be familiar with security, operational security,
various operations including access password protection, access control,
control lists (ACLs), access matrix, security kernels, and the layered
access control, access control approach.
verification, capabilities allocation
strategy, I/O initiators, device strategy,
device handlers, disk scheduling, disk
space management, existence and
concurrency control, schemes and
combined schemes, authentication
schemes, directory namespace,
hierarchies, Directed Acrylic Graphs
(DAGs), hard and soft links.

5.5 Network Management

Network management is the process of


administering and managing various
types of networks. This content area
includes network management
concepts, distributed objects,
distributed file systems, and network
architecture, design, issues and
resolutions.

A network manager will need detailed


knowledge of physical and logical
time, as well as internal and external
synchronization protocols in network
management such as Cristian’s
algorithm, Berkeley’s algorithm, the
Network Time Protocol, Lamport’s
logical clock, Vector clocks, Casual
ordering of messages, and global state.

Other important topics include


distributed computation, termination
detection, distributed mutual exclusion
and election, simple and multicast-
based mutual exclusion algorithms;
Centralized, Ring based, Ricart
Agrawala’s algorithm, Maekawa’s
algorithm, Election algorithms, Bully’s
algorithm and multicast
communication.

Computing Foundations 16–6 © IEEE – SWEBOK Guide V4


6 Database Management increasing complexity, create multiple
databases, and analyze the information.
A database is a collection of related This process significantly helps one to
data elements, collected specifically understand and internalize the database
for use by one or more applications and design and management.
stored in an organized format for easy
and quick access, using one or more 6.1 Schema
key values. The data items or elements
are stored in one or more databases or A database schema is a structure or
files, and the relationship among them record of data items, defined in one or
is established using a database schema. more database tables, and the
relationships between them. The
Basic operations performed on the schema may also contain formulae to
database include creating the database check the integrity of data items,
and its elements (table, index, views, relationships, indexes, functions or
functions, procedures, etc.), deleting or procedures and views.
dropping items from the database,
modifying contents and structure of the While a physical schema explains how
database, and data retrieval, comment, the database is designed at physical
and rename actions. level (files), the logical schema
describes how different data items are
Different types of databases include defined in one or more tables and
relational databases, not only interconnected.
Structured Query Language (NoSQL)
databases, columnar databases, object- Different types of schemata used in the
oriented databases, key-value industry include star, snowflake and
databases, document databases, fact constellation schemata. Different
hierarchical databases, graph types of keys used in schemata include
databases, time series databases, and Primary Key, Secondary / Alternate
network databases. Understanding Key, Foreign Key, Composite Key,
what type of database works best for Surrogate Key and Candidate Key.
specific applications and analyzing the
definition, structure, specific pros and Parameters that influence the definition
cons of each type of database; what and use of schemata include overlap
along with examples helps software preservation, extended overlap
engineers choose the right type of preservation, normalization and
database for a given application. minimality.

When selecting a database, software 6.2 Data Models and Storage


engineer should evaluate data models, Models
storage models, types of databases, key
values, graphs, column family, volume A data model specifies the logical
of data, consistent data access time, aspects of data structure in a data store,
and the number of users or applications and a storage model specifies the
accessing the database (traffic), etc. physical aspects of data structure in a
data store. It is difficult to achieve both
The learners and users of the database data consistency and high availability
system need to create two roles in a database.
(database user and database architect),
review several case studies of

Computing Foundations 16–7 © IEEE – SWEBOK Guide V4


The two primary data models used to Typical DBMSs include:
distinguish databases are the
following: ● A database engine: This is the
core of a DBMS. The database
i. The ACID (Atomicity, engine manages efficient
Consistency, Isolation, storing and retrieving of data.
Durability) model provides for Users with privileges can
high data consistency. ACID- access the database engine.
compliant databases are ideal
● A database manager: This
for a finance-intensive
program or set of programs
application.
performs all DBMS
ii. The BASE (Basically Available, functionality in a database
Soft state, Eventual (creating, purging, backing up,
consistency) model provides retrieving, maintaining, cloning
flexible methods to process and deleting data). It is also
data, which suits NoSQL responsible for maintaining the
database types. DBMS with patches and
updates.
Types of storage models include the
following: ● A runtime database manager
(RDM): The RDM checks for
i. DAS (Direct Access Storage): user authentication and
Storage devices are physically privileges before any operation
or directly connected to the is performed, provides access
computer that processes the to a context-based database,
data. provides concurrent access to
the database by multiple users,
ii. NAS (network access storage): and ensures data integrity.
Data is stored in a network and
accessed by multiple ● Database languages: These
computers or applications. help in storing, retrieving,
modifying and retrieving data,
iii. SAN (storage area network): controlling user access
Data is stored in multiple (privileges), specifying
servers and efficiently schemata and views, and
provided to users through a performing various operations.
computer network. Popular database languages
include Data Definition
6.3 Database Management Language (DDL), Database
Systems Access Language (DAL), Data
Manipulation Language (DML)
Database Management Systems and Data Control Languages
(DBMSs) are software systems that (DCL)
provide the necessary tools for
maintaining data optimally, retrieving ● A query processor: This basic
stored information effectively, and key component of DBMS
protecting and securing stored data, provides an effective, rich and
and managing access for users of English-like interface for users
different levels of authority. to access the database and

Computing Foundations 16–8 © IEEE – SWEBOK Guide V4


perform various functions or query time. If this occurs, then —
operations. depending on the application and the
requirement — de-normalization is
● Reporting: Reporting applies applied, where data redundancy is
specified filters, extracts added for quicker data access.
requested data and records
from one or more database Different types of database
tables, and presents normalizations are the following:
information as specified.
Several free and open-source i. First Normal Form (1 NF):
database management Removes duplication or
systems are available. redundancy. Each table cell
has a single value (creates
6.4 Relational Database more entries and tables). Each
row has unique values.
Management Systems and
Related data is identified with
Normalization a unique key.
Conventional file system-based ii. Second Normal Form (2 NF):
databases suffered from data The table should be in 1 NF; no
redundancy, data inconsistency, data partial dependency (creates
access challenges, unauthorized separate tables with records
access, lack of concurrent access, referenced by multiple
among other issues. records or tables).

A Relational Database Management iii. Third Normal Form (3 NF): The


System (RDBMS) stores data in tables table should be in 2 NF.
and, unlike in a DBMS, its data tables Transitive dependencies are
relate to one another, multiple data removed.
items can be accessed simultaneously, iv. Boyce-Codd Normal Form
a large amount of data is handled, (BCNF/3.5 NF): The table
multiple users can access data
should be in 3 NF, and X
concurrently, data redundancy is
should be the super-key for
significantly reduced, and multiple
levels of data security are supported. any (X->Y).
v. Fourth Normal Form (4 NF):
Computer science engineers must The table should be in 3.5 NF
understand the difference between the and should not have a
various types of RDBMS, such as multivalued dependency.
Objective RDBMS, Object Oriented
RDBMS, be familiar with examples, vi. Fifth Normal Form (5 NF): The
and know the applications they suit table should be in 4 NF and
best. cannot be split into any more
tables without losing data.
Database normalization is the process
vii. Sixth Normal Form or
of organizing data in a database and
Domain/Key Normal Form (6
removing data redundancy and data
NF/DKNF): The table should
inconsistency from the tables.
Normalization might increase the be in 5 NF, and every join
number of tables and increase the dependency is trivial.

Computing Foundations 16–9 © IEEE – SWEBOK Guide V4


Most databases are typically dynamic SQL or a combination of the
normalized until 3 NF or BCNF. An two, after weighing the pros and cons
alternative normal form, DKNF, is of each option for the particular
defined where insertion and deletion of application. They should also know the
anomalies are avoided (see [x-Fagin]). differences between simple and
complex views and use them
Database engineers are encouraged to appropriately.
understand normalization forms with
examples and case studies and to SQL is standardized and adopted by
understand the challenges one would the American National Standards
face if the database were not Institute (ANSI) and ISO. The
normalized. Although normalization is standards are revised from time to
essential and provides various benefits, time; the first SQL standard was SQL-
it also increases the number of tables 86, issued in 1986, and the most recent
and processing time. is SQL:2019.

6.5 Structured Query Language 6.6 Data Mining and Data


Warehousing
Structured Query Language (SQL) is a
standard and popular database Databases are designed to store
language for creating, updating, and transactions and retrieve them
deleting databases and for retrieving efficiently.
information from databases. SQL is an
inevitable part of most database Data warehousing extracts data from
management systems. multiple databases efficiently and
stores it in a common database so data
Typical SQL syntax has several mining can be performed effectively on
language constructs or elements, the compiled data. Data warehouses
including clauses, expressions, are typically huge, as they store
predicates, queries and statements. historical data records.

All operations on a database, including Data mining extracts requested


creating, updating, deleting and information from the data warehouse,
viewing tables; performing different applying various filters and conditions.
normalizations; purging data; and Data mining applies pattern
searching through the database based recognition algorithms to huge data
on various combinations of parameters sets to generate required reports.
or filters, can be performed using SQL.
The different types of warehouses
Most databases support SQL (except include Enterprise Data Warehouse
NoSQL databases), and the SQL (EDW), Operational Data Store (ODS)
syntax and library of functions and Data Mart (DM).
supported vary across database
providers (much like programming Many efficient tools are available to
languages — though different create data warehouses and mine data
languages support similar features, the from them.
syntaxes vary).
Database engineers must know
Database engineers also have to decide different data mining techniques,
whether to use static/embedded SQL, including association, clustering,

Computing Foundations 16–10 © IEEE – SWEBOK Guide V4


classification, sequential patterns and
prediction, and know how to apply
them for various uses and industries,
such as health care, fraud detection,
customer relationship management,
finance and banking, anomaly
detection, prediction, neural networks,
statistics, and data visualization.

6.7 Database Backup and


Recovery

Database systems are prone to failures,


and data can be corrupted. It is crucial
to prevent data corruption and — if it
does occur — to recognize it
immediately and recover the data.

Updating the database for transactions


must be carried out carefully (with
commits at specific checkpoints), and
must incorporate techniques such as
undoing, deferred updates, immediate
updates, caching or buffering, and
shadow paging.

Databases must be backed up


periodically to ensure data safety.
Backup techniques include Full
database backup, Differential backup
and Transaction log backup.

Computing Foundations 16–11 © IEEE – SWEBOK Guide V4


7 Computer Networks and ● Internet and packet delivery
Communications ● Wireless and mobile
networks
A computer network is a group of ● Security and vulnerabilities
devices that are connected for sharing
information. The connected devices
(nodes on the network) can be located 7.1 Types of Computer Networks
near one another, on the same
premises, or somewhere else. Different types of computer networks
Networking is required for certain are designed and used based on the
benefits, including certain modes of need, such as the following:
communication and information
sharing; the ability to share devices 1. Personal Area Network (PAN) /
such as printers, routers and video Home Network
cameras; global information and data 2. Local Area Network (LAN)
storing; security and policy
3. Wireless Local Area Network
enforcement; remote monitoring;
(WLAN)
shared business models; and web
browsing. 4. Wide Area Network (WAN
5. Campus Area Network (CAN)
As we are in the internet era, computer
networking is a critical element in 6. Metropolitan Area Network
computing, and the practitioners of (MAN)
computer science engineering have to 7. Storage Area Network (SAN)
study computer networks and
communication concepts, including 8. System-Area Network (SAN)
examples and case studies. Many 9. Enterprise Private Network
computing paradigms (distributed (EPN)
computing, grid computing, cloud
10. Virtual Private Network (VPN)
computing, etc.) are based on
networking principles.

It is important for software engineers to It is important to understand each of


understand the following: the above network type as well as
examples, benefits, limitations and
● Different types of computer available solutions to circumvent
networks challenges.
● Layered architectures of
7.2 Layered Architectures of
networks
Networks
● Open Systems Interconnect
(OSI) layers A communication system includes
● Encapsulation and hardware and software, and these
decapsulation components have become complex to
meet complicated use scenarios and
● Application layer protocols user demands. To support the
● Design techniques for reliable implementation and maintenance of
such systems, ISO has developed a
and efficient networking
layered approach, where every layer

Computing Foundations 16–12 © IEEE – SWEBOK Guide V4


has specific functionality for ● Service: The set of actions a layer
processing data and transferring it from provides to the adjacent higher
one node to another. layer is the service.
● Protocol: The set of rules a layer
Each layer is independent in its uses to exchange information
functionality and provides services with the peer entity is called the
from the lower layer to the upper layer protocol. The rules are primarily
without providing details of how each for managing both the contents
layer’s service is implemented. Each and order of the messages used.
layer (“n”) on a machine
communicates with the same layer ● Interface: The interface provides
(“n”) on the peer machine. Rules used a medium for transferring the
in a conversation are called layer-n message from one layer to
protocol. another layer.

The basic elements of the layered


approach are service, protocol and
interface.

Computing Foundations 16–13 © IEEE – SWEBOK Guide V4


Layer 5 Protocol
Layer 5 (Application Layer) Layer 5 (Application Layer)
Layer)

Layer 4 Protocol
Layer 4 Layer 4

Layer 3 Protocol
Layer 3 Layer 3

Layer 2 Protocol
Layer 2 Layer 2

Layer 1 Protocol
Layer 1 (Physical Layer) Layer 1 (Physical Layer)

Figure 16.4: Pictorial Representation of Layered Networking

Software engineers are expected to OSI proposes seven (7) layers, and
understand the essential functionalities each layer is assigned a specific task.
required, various modes in which the Each layer independently processes the
data or information is communicated data it receives from the upper or lower
from one layer to the other, and data layer and passes it to the lower or upper
packet formation and interpretation at layer, as appropriate.
peer levels. A useful exercise is to take
examples of different protocols and Engineers must understand each OSI
analyze them. layer, its functionality protocol, the
input and output of each layer in each
7.3 Open Systems Interconnection direction (from lower layer to upper
Model layer and vice versa). Engineers should
analyze whether all seven layers are
The Open Systems Interconnection required for all protocols and what is
(OSI) Model was defined by the ISO. necessary to optimize for performance.
It serves as a reference model for
information exchange between 1. Physical Layer (Layer 1)
applications on two systems or 2. Data Link Layer (Layer 2)
computers through a physical medium.
3. Network Layer (Layer 3)

Computing Foundations 16–1 © IEEE – SWEBOK Guide V4


4. Transport Layer (Layer 4) (Telnet, Zoho Assist, Anydesk,
TeamViewer, etc), e-mail (SMTP)
5. Session Layer (Layer 5)
Networking Support (DNS), Network
6. Presentation Layer (Layer 6) Management (SNMP, DHCP),
Devices (LPD), etc.
7. Application Layer (Layer 7)
Software engineers practicing in a
Engineers must understand the nuances
networking domain need to understand
of each layer, with examples.
CASE and SASE application services,
including example applications in each
7.4 Encapsulation and category.
Decapsulation
7.6 Design Techniques for Reliable
Each layer, while sending data from the and Efficient Network
upper layer to the lower layer, inserts
additional information at the beginning
Today’s information technology-based
(header) and optionally at the end of
businesses need around-the-clock,
the data packet received from the upper
reliable, efficient and scalable
layer, treating the packet received from
networks and high-speed internet
the upper layer as data. This is
availability. Catering to varied
encapsulation. The Protocol Data Unit
business needs, the networks and their
(PDU), which is the data packet
management has become complex as
containing additional information from
well.
all layers, is sent to the receiving
system. At the receiving end, each
It is critical to identify network
layer extracts its header from the PDU,
requirements (both business goals and
deciphers the information to treat the
technical solutions) along with a road
data appropriately, and sends the
map (scalability). The fundamental
remaining PDU to the upper layer.
design goals should include reliability,
security, availability and
Learning about cross-layer
manageability. Engineers should
optimization, the principles to which it
expect threats and intrusions at
must adhere, and its applications is
multiple levels and design security at
important. Engineers should analyze
multiple levels. Systems must be set up
the PDU structures of each layer of
to monitor the networks for both proper
OSI, the Internet protocol suite and the
functioning and malfunctioning;
Asynchronous Transfer Mode (ATM).
identify faults, vulnerabilities and
hacks quickly; and fix them.
7.5 Application Layer Protocols
Engineers must understand and learn
The application layer, being the top the nuances of designing a network
most layer, provides services and while using appropriate Firewalls,
interfaces to interact with users’ LAN/VLANs, Subnets, Quality of
application. There are two types of Service (QoS), Demilitarized Zone
application layers in the OSI model: (DMZ), Spanning Tree (especially for
Common Application Service Element hierarchical network), Port or network
(CASE) and Specific Application interface controller (NIC) channel,
Service Element (SASE). Example security (both poll security and
applications include File Transfer physical security), wireless access
(FTP, TFTP, NFS), Remote login points, and wireless access controllers.

Computing Foundations 16–2 © IEEE – SWEBOK Guide V4


Even when the design and devices (laptops, mobile phones, etc.)
implementation are well planned and seamlessly from one network to the
executed, one has to be constantly other without changing the IP address.
vigilant for attacks and continuously
upgrade to better systems, devices and Internet Protocol Version 4 (IPV4)
tools. uses a 32-bit IP address, whereas IPV6
uses 128-bit IP addresses.
7.7 Internet Protocol Suite
Private IP addresses are translated into
Data is transmitted in packets from one public IP addresses using either NAT
computer to another, either in the same (Network Address Translation) or PAT
network or in a different one. The (Port Address Translation). Both use
Internet Protocol suite, or TCP/IP, IPV4, but PAT uses port numbers.
defines data communication between Different technologies used to
two computers connected via the communicate between IPV4 and IPV6
internet. The top three layers of the OSI devices include dual-stack routers,
model (Application, Presentation and tunneling and NAT protocol
Session layers) are merged into the translators.
application layer, and the network
layer is revised specifically for internet Professional computer network
functioning. Internet Protocol is the architects and programmers need to
fulcrum of today’s internet or network understand IPV6 addressing, routing,
layer. transitioning to IPV6 from IPV4, dual-
dress stacks, tunneling and NAT64.
Multiple variations of Internet
Protocols are designed and used for
different purposes. The protocols
include TCP/IP (Transmission Control 7.8 Wireless and Mobile Networks
Protocol/Internet Protocol), UDP/IP
(User Datagram protocol / Internet Wireless networks provide the ability
Protocol), SMTP (Simple Mail for devices to connect and
Transfer Protocol), PPP (Point to Point communicate without the hassle of
Protocol), FTP File Transfer Protocol, wires and cables. They also provide
SFTP (Secure FTP), HTTP (Hyper flexibility and ease of using the
Text Transfer Protocol), HTTPS devices. Different wireless
(HTTP Secure), Telnet (Terminal technologies are used for different
Network), PoP3 (Post office Protocol applications:
3), VOIP (Voice over Internet
Protocol), SLIP (Serial Line Internet ● Wireless Personal Area
Protocol), PPP (Point-to-Point Networks (WPAN)
Protocol). It is important to know the ● Wireless Local Area Networks
differences between these along with (WLAN)
use cases (applications where each type ● Wireless Wide Area Networks
is used or where it works best). (WWAN)
Mobile Internet Protocol is a A mobile or cellular network is a radio
communications protocol that network spread over a specific area of
conforms to an IETF (Internet land (called a cell). The cells are served
Engineering Task Force) standard and by base stations, which are fixed-
allows users to move their mobile

Computing Foundations 16–3 © IEEE – SWEBOK Guide V4


location transceivers. To avoid Many precautionary measures must be
interference and ensure guaranteed implemented and strictly followed to
bandwidth, the adjacent cells use a reduce such risks. These measures
different set of frequencies. These include changing default passwords,
cells, when connected, provide wide changing passwords frequently,
area radio coverage. The cell patterns restricting access to authorized users,
take different shapes, but squares, encrypting data in the system and on
circles and hexagons are typical. the network, and installing multiple
levels of firewalls. In addition, users
Different methods of data transmission must protect and hide (not publicize)
are used between channels, such as Service Set Identifier (SSID), use
Frequency Division Multiple Access effective antivirus software, and update
(FDMA), Time Division Multiple and upgrade it regularly; use a Virtual
Access (TDMA), Code Division Private Networks (VPN), use file-
Multiple Access (CDMA), Space sharing or system-sharing access with
Division Multiple Access (SDMA), care, and disable access after use; and
etc. update or upgrade the access point or
access controller, gateway and other
Wireless technology has evolved over devices with security patches when
several generations. Software they become available.
Engineers are encouraged to learn the
differences among 1G, 2G, 3G, 4G and
5G technologies, along with the core
network, access system, frequency,
bandwidth and technologies used in
each.

7.9 Security and Vulnerabilities

Although wireless technology provides


the ease of connecting seamlessly to
the network, it is also prone to attacks
unless the network is secured. Risks to
unsecured wireless networks include
Piggybacking, Wardriving, Evil Twins
attacks, Wireless sniffing,
Unauthorized computer access,
Shoulder sniffing and Theft of mobile
devices.

Communication over the internet via


mobile device is highly vulnerable to
cyberattacks. In addition to wardriving,
mentioned above, typical wireless and
mobile device attacks include
SMiShing, War driving, WEP attacks,
WPA attacks, Bluejacking, Reply
attacks, Blue snarfing, RF Jamming,
etc.

Computing Foundations 16–4 © IEEE – SWEBOK Guide V4


8 User and Developer with the system, the system’s fault
tolerance, the system’s performance
Human Factors parameters. among others.
The thought processes and behaviors of Typically, user interface development
software developers typically differ goes through several iterations, starting
from that of software users. This with a prototype. The user interface
content area identifies salient devices must be robust.
parameters that matter for end users as
well as the perspective of the
developers. Human-computer interface 8.2 Developer Human Factors
(HCI) focuses on designing and
developing computer technology for The software lives much longer than
users to interact with computing the time taken to develop. Invariably,
systems. the software engineers who maintain
the code are different from those who
User satisfaction is measured in terms develop. Hence, the code has to be
of User Experience (UX). An ideal written with more care and for use by
interface would facilitate interaction other programmer / software engineer.
that is as natural as the interaction
between two human beings. Meaningful and comprehensive
documentation is crucial at all stages of
software lifecycle.
8.1 User Human Factors
Defining and adopting apt coding
Users expect software to be robust; to standard for the project, and ensuring
have an intuitive graphical user every team member implements the
interface (GUI) that guides the user same in spirit is key for developing
through minimal, intelligent, easy-to- clean code that lives longer with
follow steps to achieve the end result; minimal maintenance.
to be secure; and to provide fast,
consistent responses. Programming style is another key
ingredient of a good code. Code has to
The interface should help users use the be legible, should be like reading a
system easily. The interface should be good poem and easily comprehendible.
self-explanatory and enable self- Using meaningful, consistent and
learning. The messages, whether detailed comments is essential to
communicating results or errors, ensure code readability.
should be clear and complete. The
system should be able to regain its Other traits of a good software
original state if there are errors. programmer include being a team
player, enjoy solving puzzles
The system should allow users to creatively, be agile, be structured /
interrupt during the processing and modular among others.
undo the operation, wherever possible.
Good coding standards include
The software engineer needs to identify defining naming conventions for
the profile of users the system; various types of variables, functions /
system’s functionality, input and procedures, comment structure / styles,
output interfaces users use (keyboard, indentation styles, structuring the code
touch pad, audio, video, etc.) to interact

Computing Foundations 16–5 © IEEE – SWEBOK Guide V4


into paragraphs (of related functions),
etc.

“Code is read many more times than it


is written. Consider whether write-
time convenience is a false economy” -
Steve McConnell

“Clean code always looks like it was


written by someone who cares” -
Robert (Uncle Bob) Martin

Computing Foundations 16–6 © IEEE – SWEBOK Guide V4


9 Artificial Intelligence and Deductive Reasoning is a standard
and strategic approach to mapping
Machine Learning available facts, information and
knowledge to arrive at a conclusion. In
Intelligence is the ability to acquire and
this approach, available facts and
correlate information and knowledge
information are considered to be
to make a correct decision for a specific
authentic. For example, if the premises
task. Artificial intelligence (AI) enables
are “All girls are beautiful” and
computer systems to become
“Michu is a girl,” then the conclusion
intelligent, like human beings.
is “Michu is beautiful.”
Machine learning (ML) enables
computer systems to learn from
experiences and to use the knowledge Inductive Reasoning is about
gained to make smart decisions — to introducing a hypothesis and creating
become artificially intelligent. Deep generalizations from the available facts
learning uses artificial neural network and premises. Unlike deductive
models for learning and making reasoning, in inductive reasoning, even
predictions. if the premises are certain, the
conclusion would be probable,
Everyone expects all systems they use depending on whether the inductive
to be smart, reliable, consistent, secure argument is strong or weak. For
and fault-tolerant — and to get better example, check the location of all
every day. AI and ML work toward engineers working on a project and if
enabling systems to accomplish all they are from Bengaluru, India state
this. “All employees working on the gaming
project are from Bengaluru.”
An ideal AI system would be one that
a human could not identify it as a Abductive Reasoning starts with
computer; humans would not be able to an incomplete set of data or
distinguish the computer from a human information and proceeds to derive the
being. most likely conclusion from the latest
data. For example, a doctor analyzes
Several tools have been developed and the latest lab reports of a patient to
are available for creating AI systems. predict the course of the disease.
Using proven tools helps engineers
build a stable system faster. Common Sense Reasoning
makes inferences about situations
9.1 Reasoning based on similar past experiences. For
example, if a motorcycle skids while
Reasoning means analyzing sets of driving on a wet road, that information
information available for a given is remembered and considered during
situation and determining the cause of future rides.
the situation. Reaching this conclusion
is an important ability of AI, as the Monotonic Reasoning occurs
conclusion informs AI’s decision about when the conclusion remains
what to do next. permanent or constant after it is
reached. For example, “The Himalayas
Different types of reasoning used in AI are one of the tallest mountain ranges.”
include the following:

Computing Foundations 16–7 © IEEE – SWEBOK Guide V4


Non-Monotonic Reasoning Semi-supervised Learning, the
(NMR) occurs when the inference system is trained with partly labeled
changes values or direction based on and partly unlabeled data. This type of
new knowledge or information. NMR learning has been shown to be
is based on assumptions and deals with effective.
incomplete or not-known facts. For
example, the rule is “Birds fly”. But a Reinforcement Learning is based
few birds do not fly including on interactions with the environment.
penguins. In this type of learning, the system
receives feedback (an error message or
Software engineers are encouraged to a reward) and learns from that
learn other reasoning methods, such as feedback. No data is provided to the
metalevel reasoning, procedural system (neither labeled nor unlabeled).
numeric reasoning, and formal Various algorithms are produced in
reasoning, as well. reinforced learning. This is a trial-and-
error method for learning.
9.2 Learning
Software engineers working on AI are
We learn from our observations, expected to know various other
experiments and experiences. Enabling learning techniques as well, including
computers to learn and to remember dimensionality reduction learning,
what they’ve learned for future use is self-learning, feature learning, sparse
critical for building AI systems. An AI learning, anomaly detection and robot
system learns when observations and learning, along with the key
outcomes of experiments (signals) are differences between the methods and
fed back into the system. Different the applications where each method
types of learning include the following: works well.

Supervised Learning, the 9.3 Models


computer system trains by receiving
labeled (i.e., training) data. AI models are inference engines or
Subsequently, when any input is tools (algorithms) that can arrive at the
provided, the system compares it with best decisions based on relevant data.
the data it was trained on and generates
output. Naturally, the more training Different models are created to enable
data, the better the outcome. efficient ML, with or without training
Supervised learning uses multiple data. Models used in ML include the
learning techniques, including the following:
classification technique and the
regression technique. Supervised Linear Regression model is based
learning may not be able to handle on supervised learning, where the
complex tasks. relationship between input and output
variables is determined and used. This
Unsupervised Learning, labeled model is commonly used in health care
or training data is not provided to the and banking applications.
system. The system has to figure out
common patterns from the input given Logistic Regression model is a
and make inferences. The data is statistical model primarily used for
analyzed in real time.

Computing Foundations 16–8 © IEEE – SWEBOK Guide V4


classifying dependent variables from Solving a problem efficiently and
given independent variables. quickly is the goal of AI. Problem-
solving predominantly comprises
Artificial Neural Networks are understanding user commands and
inspired by biological neural networks executing them, as humans do.
in a brain. The systems are designed to Depending on the application and
learn naturally from the inputs without problem to be solved, AI systems use
specific rules. the relevant knowledge base and
predicate logic to identify the most
Decision Tree model is used where appropriate solution.
past decisions are used to arrive at a
decision. The name “tree” is used AI systems dealing with the external
because the data is stored in the form of world, obtain environmental data
a tree. through sensors (cameras;
microphones; temperature, pressure
and light sensors, etc.), analyzes the
Naïve Bayes model works on the data using its knowledge base or
assumption that the presence of a
inference engine, and acts upon it.
feature does not depend on the
presence of any other feature. Spam
Based on capabilities and functionality,
filtering is one of the applications that
AI systems are categorized into
suits this model.
multiple types.
Support Vector Machine (SVM), Type I AI systems are designed to do
is a supervised ML algorithm used to specific tasks with intelligence.
analyze a limited quantum of data. Examples include Chess games, speech
SVM is typically faster than artificial and image recognition, among others.
neural networks because it works with
limited data. Type II AI systems analyze the current
situation or environment and do not
Random Forest model uses normally refer to previous decisions
multiple decision trees for making a made in a similar situation to arrive at
final decision. The random forest an appropriate action. Reactive
model is useful for solving both systems or reactive machines typically
regression and classification problems. make decisions and execute commands
at that instance, referring to the existing
AI models are key to making the most knowledge base. A good example is a
appropriate decisions. As different self-driving cars.
models suit specific applications or
domains, software engineers are Type III, or self-aware, AI systems
encouraged to learn many other AI have consciousness and are mindful.
models as well, such as Linear These systems adopt the mind theory
Discriminant Analysis, Learning and predict the mood of the other
Vector Quantization, K-nearest person or entity based on the person’s
Neighbors (KNN), etc. action or type of action. For example,
if the driver in the vehicle behind the
9.4 Perception and Problem- system honks, then the AI system
might conclude that the driver is angry
Solving or unhappy. Social and ethical
behavior is part of conscious systems.

Computing Foundations 16–9 © IEEE – SWEBOK Guide V4


9.5 Natural Language from training data rather than written
down as program code [16]. Thus,
Processing there is a need for particular support of
SE for AI, such as interdisciplinary
Natural language processing (NLP) is a collaborative teams of data scientists
crucial part of AI systems, enabling and software engineers, software
users to interact with the AI systems in evolution focusing on large and
a way that is similar to how they changing datasets, and ethics and
interact with other humans. AI systems equity requirements engineering [16].
understand human languages and Recommended software engineering
execute commands delivered in those practices for AI are often formalized as
languages. AI systems that work on patterns, such as ML software design
voice commands need to understand patterns [17].
not only the human language, but also
the slang or pronunciation of the user.

9.6 AI and Software


Engineering
Software engineering and AI are
mutually related to each other in
basically two ways: AI applications in
software engineering (i.e., AI for SE)
and software engineering for AI
systems (i.e., SE for AI).

AI for SE aims to establish efficient


ways of building high-quality software
systems by replicating human
developers’ behavior. It ranges over
almost all development stages, from
resolving ambiguous requirements to
predicting maintainability, particularly
well applied in software quality
assurance and analytics, such as defect
prediction, test case generation,
vulnerability analysis, and process
assessment [15]. Although human-
centric software engineering activities
benefit, engineers should be aware of
limitations and challenges inherent to
the nature of AI and ML, especially the
uncertain and stochastic behavior and
the necessity of sufficiently labeled and
structured datasets [15].

The development of AI systems is


different from traditional software
systems since the rules and system
behavior of AI systems are inferred

Computing Foundations 16–10 © IEEE – SWEBOK Guide V4


REFERENCES
[11*] M. Bishop, Computer Security: Art
[1] Joint Task Force on Computing and Science, 2nd ed Addison-Wesley,
Curricula, IEEE Computer Society 2018.
and Association for Computing
Machinery, Software Engineering [12] R.C. Seacord, The CERT C Secure
2014: Curriculum Guidelines for Coding Standard, Addison-Wesley
Undergraduate Degree Programs in Professional, 2016.
Software Engineering, 2014;
http://sites.computer.org/ccse/SE200 [13] R. Fagin, “A Normal Form for
4Volume.pdf. Relational Databases that is based on
Domains and Keys,” ACM
[2*] G. Voland, Engineering by Design, Transactions on Database Systems,
2nd ed., Prentice Hall, 2003. Vol. 6, No. 3, ACM, September, 1981

[3*] S. McConnell, Code Complete, 2nd [14] I. Goodfellow, Y. Bengio, A.


ed., Microsoft Press, 2004. Courville, Deep Learning (Adaptive
Computation and Machine Learning
[4*] J.G. Brookshear, Computer Science: series) Illustrated Edition, illustrated
An Overview, 12th ed., Addison- edition, 2018
Wesley, 2017.

[5*] E. Horowitz et al., Computer [15] S. Shafiq, A. Mashkoor, C. Mayr-


Algorithms, 2nd ed., Silicon Press, Dorn, A. Egyed, “A Literature
2007. Review of Using Machine Learning in
Software Development Life Cycle
[6*] I. Sommerville, Software Stages,” IEEE Access, Volume 9,
Engineering, 9th ed., Addison- IEEE, October, 2021
Wesley, 2011.
[16] S. Martínez-Fernández, J. Bogner,
[7] ISO/IEC/IEEE 24765:2017 Systems X. Franch, M. Oriol, J. Siebert, A.
and Software Engineering— Trendowicz, A. M. Vollmer,
Vocabulary, ISO/IEC/IEEE, 2010. “Software Engineering for AI-Based
Systems: A Survey,” ACM
[8*] L. Null and J. Lobur, The Essentials Transactions on Software
of Computer Organization and Engineering and Methodology, Vol.
Architecture, 5th ed., Jones and 31, No. 2, ACM, April, 2022
Bartlett Publishers, 2018.
[17] H. Washizaki, F. Khomh, Y. G.
Gueheneuc, H. Takeuchi, N. Natori,
[9*] J. Nielsen, Usability Engineering,
T. Doi, S. Okuda, “Software
Morgan Kaufmann, 1994.
Engineering Design Patterns for
Machine Learning Applications,”
[10] ISO 9241-420:2011 Ergonomics of
Computer, Vol. 55, No. 3, IEEE
Human-System Interaction, ISO,
Computer Society, March, 2022
2011.

Computing Foundations 16–11 © IEEE – SWEBOK Guide V4


CHAPTER 17
MATHEMATICAL FOUNDATIONS

ACRONYMS symbols, images, sounds, video—almost


anything. In short, numbers and numeric
CFG Context Free Grammar equations aren’t the only subjects to
CSG Context Sensitive Grammar preciseness. On the contrary, a software
engineer needs to have a precise
FSM Finite State Machine abstraction on a diverse application
domain.
GCD Greatest Common Divisor
The Mathematical Foundations KA covers
LHS Left-Hand Side basic techniques to identify a set of rules
for reasoning in the context of the system
PSG Phrase Structure Grammar
under study. Anything that one can
RHS Right-Hand Side deduce following these rules is an
absolute certainty within the context of
that system. In this KA, techniques that
can represent and take forward the
reasoning and judgment of a software
INTRODUCTION engineer in a precise (and therefore
Software engineers live with programs. mathematical) manner are defined and
Simply stated, one can program only for discussed. The language and methods of
something that follows well-understood, logic that are discussed allow software
non-ambiguous logic. The Mathematical engineers to describe mathematical
Foundations knowledge area (KA) helps proofs to infer conclusively the absolute
software engineers comprehend this truth of certain concepts beyond just
logic, which in turn is translated into numbers. The objective of this KA is to
source code. The mathematics that is the help software engineers develop the skill
primary focus in this KA is quite different to identify and describe such logic as well
from typical arithmetic, where numbers as verify that the logic in the code is
are dealt with and discussed. Logic and consistent with abstractions. The
reasoning are the essence of mathematics emphasis is on helping software
that a software engineer must address. engineers understand the basic concepts
rather than on challenging arithmetic
Mathematics, in a sense, is the study of abilities.
formal systems. The word “formal” is
associated with preciseness, so there BREAKDOWN OF TOPICS FOR
cannot be any ambiguous or erroneous MATHEMATICAL FOUNDATIONS
interpretation of the fact. Mathematics is
therefore the study of any and all certain The breakdown of topics for the
truths about any concept. This concept Mathematical Foundations KA is shown in
can be about numbers as well as about Figure tbd.1.

Mathematical Foundations TBD–1 ©


IEEE – SWEBOK Guide V4
Mathematical
Foundations

Set, Finite
Basic Number Discrete Algebraic
Relation, State
Logic Theory Probability Structures
Function Machine

Propositional Set Types of Group


Logic Operations Numbers
Ring
Predicate Properties Divisibility
Logic of Set
Prime
Relation and Number
Function
Greatest
Common
Divisor

Numerical
Proof Graph and Basics of Precision,
Grammar Calculus
Techniques Tree Counting Accuracy,
and Error

Direct Graph Language


Proof Recognition
Tree
Proof by
Contradiction

Proof by
Induction

The Law of Contradiction: For every


proposition p, it is not the case that p is both
Figure tbd.1. Breakdown of Topics for the true and false.
Mathematical Foundations KA Propositional logic is the area of logic that
deals with propositions. A truth table displays
the relationships between the truth values of
propositions.
1. Basic Logic
A Boolean variable is one whose value is
[1*, c1] either true or false. Computer bit operations
1.1. Propositional Logic correspond to logical operations of Boolean
A proposition is a statement that is either true or variables.
false, but not both. Consider declarative
sentences for which it is meaningful to assign The basic logical operators include negation
either of the two status values: true or false. (not, ¬ p), conjunction (and, p ∧ q),
Some examples of propositions are given disjunction (or, p ∨ q), exclusive or (p ⊕ q),
below. and implication (p → q). Compound
propositions may be formed using various
1. The sun is a star logical operators.
2. Elephants are mammals. A compound proposition that is always true
3. 2 + 3 = 5. is a tautology. A compound proposition that
is always false is a contradiction. A
However, a + 3 = b is not a proposition, as it compound proposition that is neither a
is neither true nor false. It depends on the tautology nor a contradiction is a
values of the variables a and b. contingency.
The Law of Excluded Middle: For every Compound propositions that always have the
proposition p, either p is true, or p is false. same truth value are called logically

Mathematical Foundations TBD–2 ©


IEEE – SWEBOK Guide V4
equivalent (denoted by ≡). Some of the Quantifiers allow statements about entire
common equivalences are: collections of objects rather than having to
enumerate the objects by name.
Identity laws:
The Universal quantifier ∀x asserts that a
p∧T≡p p∨F≡p
sentence is true for all values of variable x.
Domination laws: For example, ∀x Tiger(x) → Mammal(x)
p∨T≡T p∧F≡F means all tigers are mammals.

Idempotent laws: The Existential quantifier ∃x asserts that a


sentence is true for at least one value of
p∨p≡p p∧p≡p variable x. For example, ∃x Tiger(x) → Man-
Double negation law: eater(x) means there exists at least one tiger
that is a man-eater.
¬ (¬ p) ≡ p
Thus, while universal quantification uses
Commutative laws: implication, the existential quantification
p∨q≡q∨p p∧q≡q∧p naturally uses conjunction.
Associative laws: A variable x that is introduced into a logical
expression by a quantifier is bound to the
(p ∨ q) ∨ r ≡ p ∨ (q ∨ r) (p ∧ q) ∧ r ≡ p
closest enclosing quantifier. Similarly, in a
∧ (q ∧ r)
block-structured programming language, a
Distributive laws: variable in a logical expression refers to the
p ∨ (q ∧ r) ≡ (p ∨ q) ∧ (p ∨ r) closest quantifier within whose scope it
appears. For example, in ∃x (Cat(x) ∧ ∀x
p ∧ (q ∨ r) ≡ (p ∧ q) ∨ (p ∧ r) (Black(x))), x in Black(x) is universally
De Morgan's laws: quantified. The expression implies that cats
exist, and everything is black.
¬ (p ∧ q) ≡ ¬ p ∨ ¬ q ¬ (p ∨ q) ≡ ¬ p
∧¬q A variable is said to be a free variable if it is
not bound to a quantifier.
Propositional logic falls short in representing
1.2. Predicate logic many assertions that are used in mathematics,
A predicate is a verb phrase template that computer science and therefore software
describes a property of objects or a engineering. It also fails to compare
relationship among objects represented by equivalence and some other types of
the variables. For example, in the sentence, relationship between propositions. For
The flower is red, the template is red is a example, the assertion a is greater than 1 is
predicate. It describes the property of a not a proposition because one cannot infer
flower. The same predicate may be used in whether it is true or false without knowing the
other sentences. value of a. Thus, propositional logic cannot
Predicates are often given a name, e.g., "Red" deal with such sentences. However, such
or simply "R" and can be used to represent assertions appear quite often in mathematics,
the predicate is red. Assuming R as the name and we want to infer on those assertions.
for the predicate is red, sentences that assert Also, the pattern involved in the following
an object is colored red can be represented as two logical equivalences cannot be captured
R(x), where x represents an arbitrary object. by propositional logic: "Not all men are
R(x) reads as x is red. smokers" and "Some men don't smoke." Each

Mathematical Foundations TBD–3 ©


IEEE – SWEBOK Guide V4
of these two propositions is treated Direct proof is a technique to establish that
independently in propositional logic. There is the implication p → q is true by showing that
no mechanism in propositional logic to q must be true when p is true. For example, to
determine if the two are equivalent to one show that if n is odd then n2−1 is even,
another. Hence, in propositional logic, each suppose n is odd, i.e., n = 2k + 1 for some
equivalent proposition is treated individually integer k:
rather than dealing with a general formula
∴ n2 = (2k + 1)2 = 4k2 + 4k + 1.
that covers all equivalences collectively.
As the first two terms of the Right-Hand Side
Predicate logic is supposed to be a more
(RHS) are even numbers irrespective of the
powerful logic that addresses these issues. In
value of k, the Left-Hand Side (LHS) (i.e., n2)
a sense, predicate logic (also known as first-
is an odd number. Therefore, n2−1 is even.
order logic or predicate calculus) is an
Direct proof can also be called Proof by
extension of propositional logic to formulas
Deduction.
involving terms and predicates.

2.2. Proof by Contradiction


2. Proof Techniques
A proposition p is true by contradiction if
[1*, c1] proved based on the truth of the implication ¬
A proof is an argument that rigorously p → q where q is a contradiction. For
establishes the truth of a statement. Proofs example, to show that the sum of 2x + 1 and
can themselves be represented formally as 2y − 1 is even, assume that the sum of 2x + 1
discrete structures. and 2y − 1is odd. In other words, 2(x + y),
which is a multiple of 2, is odd. This is a
Statements used in a proof include axioms contradiction. Hence, the sum of 2x + 1 and
and postulates that are essentially the 2y − 1 is even.
underlying assumptions about mathematical
structures, the hypotheses of the theorem to An inference rule is a pattern establishing that
be proved, and previously proved theorems. if a set of premises are all true, then it can be
deduced that a certain conclusion statement is
A theorem is a statement that can be shown to true. The reference rules of addition,
be true. simplification, and conjunction need to be
A lemma is a simple theorem used in the studied.
proof of other theorems.
A corollary is a proposition that can be 2.3. Proof by Induction
established directly from a theorem that has Proof by induction is done in two parts. First,
been proved. the proposition is established to be true for a
A conjecture is a statement whose truth value base case—typically for the positive integer
is unknown. 1. In the second part, it is established that if
the proposition holds for an arbitrary positive
When a conjecture’s proof is found that
integer k, then it must also hold for the next
conjecture becomes a theorem. Many times,
greater integer, k + 1. In other words, proof
conjectures are shown to be false and, hence,
by induction is based on the rule of inference
are not theorems.
that tells us that the truth of an infinite
sequence of propositions P(n), ∀n ∈ [1… ∞]
2.1. Direct Proof is established if P(1) is true, and secondly, ∀k

Mathematical Foundations TBD–4 ©


IEEE – SWEBOK Guide V4
∈ [2... n] if P(k) → P(k + 1). element belongs to a set, or—in other
words—is a member of the set. Its
For a proof by induction, it is not assumed
negation is represented by ∉, e.g., 1 ∈ S,
that P(k) is true for all positive integers k.
Proving a theorem or proposition only but 4 ∉ S.
requires us to establish that if it is assumed In a more compact representation of set using
P(k) is true for any arbitrary positive integer set builder notation, {x | P(x)} is the set
k, then P(k + 1) is also true. The correctness of all x such that P(x) for any proposition
of induction as a valid proof technique is P(x) over any universe of discourse.
beyond discussion in this KA. The following Examples for some important sets include
proposition is proved using induction. the following:
Proposition: The sum of the first n positive Ν = {0, 1, 2, 3, …} = the set of
odd integers P(n) is n2. nonnegative integers.
Basis Step: The proposition is true for n = 1 Ζ = {…, -3, -2, -1, 0, 1, 2, 3, …} = the
as P(1) = 12 = 1. The basis step is complete. set of integers.
Inductive Step: The induction hypothesis Finite and Infinite Set. A set with a finite
(IH) is that the proposition is true for n = k, k number of elements is called a finite set.
being an arbitrary positive integer k. Conversely, any set that does not have a
∴ 1 + 3 + 5+ … + (2k − 1) = k2 finite number of elements in it is an
infinite set. The set of all natural numbers,
Now, it’s to be shown that P(k) → P(k + 1). for example, is an infinite set.
P(k + 1) = 1 + 3 + 5+ … +(2k − 1) + (2k + 1) Cardinality. The cardinality of a finite set S
= P(k) + (2k + 1) is the number of elements in S. This is
represented |S|, e.g., if S = {1, 2, 3}, then
= k2 + (2k + 1) [using IH] |S| = 3.
= k2 + 2k + 1 Universal Set. In general S = {x ∈ U | p(x)},
= (k + 1) 2 where U is the universe of discourse in which
the predicate P(x) must be interpreted. The
Thus, it is shown that if the proposition is true "universe of discourse" for a given predicate
for n = k, then it is also true for n = k + 1. is often referred to as the universal set.
The basis step together with the inductive Alternately, one may define universal set as
step of the proof show that P(1) is true and the the set of all elements.
conditional statement P(k) → P(k + 1) is true Set Equality. Two sets are equal if and only if
for all positive integers k. Hence, the they have the same elements, i.e.:
proposition is proved.
X = Y ≡ ∀p (p ∈ X ↔ p ∈ Y).
Subset. X is a subset of set Y, or X is
3. Set, Relation, Function contained in Y, if all elements of X are
[1*, C2] included in Y. This is denoted by X ⊆ Y.
Set. A set is a collection of objects, called In other words, X ⊆ Y if and only if ∀p(p
elements. A set can be represented by ∈ X → p ∈ Y). If X = {1, 2, 3} and Y =
listing its elements between braces, e.g., {1, 2, 3, 4, 5}, then X ⊆ Y.
S = {1, 2, 3}. If X is not a subset of Y, it is denoted as X
The symbol ∈ is used to express that an Y.

Mathematical Foundations TBD–5 ©


IEEE – SWEBOK Guide V4
Proper Subset. X is a proper subset of Y common elements in both X and Y. In
(denoted by X ⊂ Y) if X is a subset of Y other words, X ∩ Y = {p | (p ∈ X) ∧ (p ∈
but not equal to Y, i.e., there is some Y)}. For example, {1, 2, 3} ∩ {3, 4, 6} =
element in Y that is not in X. {3}
If X ∩ Y = φ, then the two sets X and Y are
In other words, X ⊂ Y if (X ⊆ Y) ∧ (X ≠ Y).
said to be disjoint.
If X = {1, 2, 3}, Y = {1, 2, 3, 4}, and Z =
A Venn diagram for set intersection is shown
{1, 2, 3}, then X ⊂ Y, but X is not a
in Figure tbd.3. The common portion of
proper subset of Z. Sets X and Z are equal
the two sets represents the set
sets.
intersection.
If X is not a proper subset of Y, it is denoted
as X ⊄ Y.
Superset. If X is a subset of Y, then Y is
called a superset of X. This is denoted by
Y ⊇ X, i.e., Y ⊇ X if and only if X ⊆ Y.
If X = {1, 2, 3} and Y = {1, 2, 3, 4, 5},
then Y ⊇ X.
Empty Set. A set with no elements is called Figure tbd.3. Intersection of sets X and Y
an empty set. An empty set, denoted by φ,
is also referred to as a null or void set.
Union. The union of two sets X and Y,
Power Set. The set of all subsets of a set X is denoted by X ∪ Y, is the set of all
called the power set of X. It is represented elements either in X, or in Y, or in both.
as ℘(X). If X = {a, b, c}, then ℘(X) = {φ, In other words, X ∪ Y = {p | (p ∈ X) ∨ (p
{a}, {b}, {c}, {a, b}, {a, c}, {b, c}, {a, b, ∈ Y)}. For example, {1, 2, 3} ∪ {3, 4, 6}
c}}. If |X| = n, then |℘ (X)| = 2n. = {1, 2, 3, 4, 6}
Venn Diagrams. Venn diagrams are graphic
representations of sets as enclosed areas
in the plane. In Figure TBD.2, the
rectangle represents the universal set and
the shaded region represents a set X.

Figure tbd.4. Union of sets X and Y

It may be noted that |X ∪ Y| = |X| + |Y| − |X


∩ Y|.
A Venn diagram illustrating the union of two
sets is represented by the shaded region in
Figure TBD.2. Venn Diagram for set X
Figure tbd.4.
Complement. The set of elements in the
2.1. Set Operations
universal set that do not belong to a given
Intersection. The intersection of two sets X
set X is called its complement set X'. In
and Y, denoted by X ∩ Y, is the set of
other words, X' ={p | (p ∈ U) ∧ (p ∉ X)}.

Mathematical Foundations TBD–6 ©


IEEE – SWEBOK Guide V4
In an ordered pair (p, q), the order of
occurrences of the elements is relevant.
Thus, (p, q) ≠ (q, p) unless p = q. In
general (p, q) = (s, t) if and only if p = s
and q = t.
Given two sets X and Y, their Cartesian
product X × Y is the set of all ordered
pairs (p, q) such that p ∈ X and q ∈ Y. In
Figure tbd.5. Venn diagram for other words, X × Y = {(p, q) | (p ∈ X) ∧
complement set of X (q ∈ Y)}. For example, {a, b} × {1, 2} =
{(a, 1), (a, 2), (b, 1), (b, 2)}

The shaded portion of the Venn diagram in


Figure tbd.5 represents the complement 2.2. Properties of Set
set of X. Some of the important properties and laws of
sets are mentioned below.
Set Difference or Relative Complement. The 1. Associative Laws:
set of elements that belong to set X but X ∪ (Y ∪ Z) = (X ∪ Y) ∪ Z
not to set Y builds the set difference of Y X∩ (Y∩Z) = (X∩Y) ∩Z
from X. This is represented by X − Y. In 2. Commutative Laws:
other words, X − Y = {p | (p ∈ X) ∧ (p ∉ X∪Y=Y∪X X ∩ Y
Y)}. For example, {1, 2, 3} − {3, 4, 6} = =Y∩X
{1, 2}. 3. Distributive Laws:
It may be proved that X − Y = X ∩ Y'. X ∪ (Y ∩ Z) = (X ∪ Y) ∩ (X ∪ Z)
Set difference X – Y is illustrated by the X ∩ (Y ∪ Z) = (X ∩ Y) ∪ (X ∩ Z)
shaded region in Figure tbd.6 using a 4. Identity Laws:
Venn diagram. X∪φ=X X ∩ U
=X
5. Complement Laws:
X ∪ X' = U X ∩ X'

6. Idempotent Laws:
X∪X=X X ∩ X
=X
7. Bound Laws:
X∪U=U X ∩ φ

8. Absorption Laws:
X ∪ (X ∩ Y) = X X ∩ (X ∪ Y) =
X
Figure tbd.6. Venn diagram for X −Y
9. De Morgan’s Laws:
(X ∪ Y)' = X' ∩ Y' (X ∩ Y)' = X'
Cartesian Product. An ordinary pair {p, q} is ∪ Y'
a set with two elements. In a set, the order
of the elements is irrelevant, so {p, q} = 2.3. Relation and Function
{q, p}. A relation is an association between two sets

Mathematical Foundations TBD–7 ©


IEEE – SWEBOK Guide V4
of information. Consider a set of residents single element {8}. This qualifies as a
of a city and their phone numbers. The function even if all x-values are mapped
pairing of names with corresponding to the same y-value. Here, each x-value is
phone numbers is a relation. This pairing distinct and hence the function is well
is ordered for the entire relation. For each behaved. Relation B may be represented
pair, either the name comes first followed by the equation y = 8.
by the phone number or the reverse. The The characteristic of a function may be
set from which the first element is drawn verified using the vertical line test, which
is called the domain set and the other set is stated below:
is called the range set. The domain is
what you start with, and the range is what Given the graph of a relation, if one can draw
you end with. a vertical line that crosses the graph in
more than one place, then that relation is
A function is a well-behaved relation. A not a function.
relation R(X, Y) is well behaved if the
function maps every element of the
domain set X to a single element of the
range set Y. Consider domain set X as a
set of persons and range set Y as their
phone numbers. If a person may have
more than one phone number, then this
relation is not a function. However, if we
draw a relation between names of
residents and their date of births with the
name set as domain, then this becomes a
well-behaved relation and hence a Figure tbd.7. Vertical line test for
function. This means that, while all function
functions are relations, not all relations
are functions. In case of a function given
an x, one gets one and exactly one y for In Figure tbd.7, both lines L1 and L2 cut the
each ordered pair (x, y). graph for the relation thrice. This
For example, consider the following two signifies that for the same x-value, there
relations. are three different y-values for each.
Thus, the relation is not a function.
A: {(3, –9), (5, 8), (7, –6), (3, 9), (6, 3)}.
B: {(5, 8), (7, 8), (3, 8), (6, 8)}. 4. Graph and Tree
Are these functions as well? [1*, c10, c11]
In relation A, the domain is all x-values, i.e., 4.1. Graph
{3, 5, 6, 7}, and the range is all y-values, A graph G = (V, E) where V is the set of
i.e., {–9, –6, 3, 8, 9}. vertices (nodes) and E is the set of edges.
Relation A is not a function, as there are two Edges are also referred to as arcs or links.
different range values, –9 and 9, for the
same x-value, 3.
In relation B, the domain is same as for A,
i.e., {3, 5, 6, 7}. However, the range is a

Mathematical Foundations TBD–8 ©


IEEE – SWEBOK Guide V4
Figure tbd.8. Example of a graph
Figure tbd.9. Example of a multigraph

F is a function that maps the set of edges E to In a pseudograph, edges connecting a node to
a set of ordered or unordered pairs of itself are allowed. Such edges are called
elements V. In Figure tbd.8, G = (V, E) where loops.
V = {A, B, C}, E = {e1, e2, e3}, and F = {(e1,
(A, C)), (e2, (C, B)), (e3, (B, A))}.
The graph in Figure tbd.8 is a simple graph
that consists of a set of vertices or nodes and
a set of edges connecting unordered pairs.
The edges in simple graphs are undirected.
Such graphs are also referred to as undirected
graphs. In Figure tbd.8, (e1, (A, C)) may be
replaced by (e1, (C, A)) as the pair between
vertices A and C is unordered. This holds for
the other two edges as well.
In a multigraph, more than one edge may
connect the same two vertices. Two or more Figure tbd.10. Example of a pseudograph
connecting edges between the same pair of
vertices may reflect multiple associations In Figure tbd.10, the edge e4 both starts and
between the same two vertices. Such edges ends at B. Figure tbd.10 is a pseudograph in
are called parallel or multiple edges. In Figure which e4 is a loop.
tbd.9, the edges e3 and e4 are both between
A and B. Figure tbd.9 is a multigraph where
edges e3 and e4 are multiple edges.

Mathematical Foundations TBD–9 ©


IEEE – SWEBOK Guide V4
Figure tbd.11. Example of a directed undirected graph G(V, E), then:
graph • the degree of v, deg(v), is its number of
incident edges, except that any self-loops
are counted twice.
A directed graph G = (V, E) consists of a set
• a vertex with degree 0 is called an isolated
of vertices V and a set of edges E that are
vertex.
ordered pairs of elements of V. A directed
• a vertex of degree 1 is called a pendant
graph may contain loops. In Figure tbd.11, G
vertex.
= (V, E) where V = {A, B, C}, E = {e1, e2,
Let G(V, E) be a directed graph. If e(u, v) is
e3}, and F = {(e1, (A, C)), (e2, (B, C)), (e3,
an edge of G, then the following
(B, A))}.
terminologies are often used:
• u is adjacent to v, and v is adjacent from
u.
• e comes from u and goes to v.
• e connects u to v, or e goes from u to v.
• the initial vertex of e is u.
• the terminal vertex of e is v.
If vertex v is in the set of vertices for the
directed graph G(V, E), then
• in-degree of v, deg−(v), is the number of
edges going to v, i.e., for which v is the
terminal vertex.
Figure tbd.12. Example of a weighted • out-degree of v, deg+(v), is the number of
graph edges coming from v, i.e., for which v is
the initial vertex.
• degree of v, deg(v) = deg−(v) + deg+(v),
In a weighted graph G = (V, E), each edge has is the sum of vs in-degree and out-degree.
a weight associated with it. The weight of an • a loop at a vertex contributes 1 to both in-
edge typically represents the numeric value degree and out-degree of this vertex.
associated with the relationship between the Following the definitions above, the degree
corresponding two vertices. In Figure tbd.12, of a node is unchanged whether we
the weights for the edges e1, e2, and e3 are consider its edges to be directed or
taken to be 76, 93, and 15 respectively. If the undirected.
vertices A, B, and C represent three cities in In an undirected graph, a path of length n
a state, the weights, for example, could be the from u to v is a sequence of n adjacent
distances in kilometers between these cities. edges from vertex u to vertex v.
Let G = (V, E) be an undirected graph with • A path is a circuit if u=v.
edge set E. Then, for an edge e ∈ E where e = • A path traverses the vertices along it.
{u, v}, the following terminologies are often • A path is simple if it contains no edge more
used: than once.
A cycle on n vertices Cn for any n ≥ 3 is a
• u, v are said to be adjacent or neighbors simple graph where V = {v1, v2, …, vn}
or connected. and E = {{v1, v2}, {v2, v3}, …, {vn−1, vn},
• edge e is incident with vertices u and v. {vn, v1}}.
• edge e connects u and v.
• vertices u and v are endpoints for edge e. For example, Figure tbd.13 illustrates two
If vertex v ∈ V, the set of vertices in the cycles of length 3 and 4.

Mathematical Foundations TBD–10 ©


IEEE – SWEBOK Guide V4
form subtrees under the root node R. The
number of edges |E| in a tree would always be
equal to |N| − 1.
The subtree at node X is the subgraph of the
tree consisting of node X and its descendants
and all edges incident to those descendants.
As an alternate to this recursive definition, a
tree may be defined as a connected undirected
graph with no simple circuits.
Figure tbd.13. Example of cycles C3 and
C4

An adjacency list is a table with one row per


vertex, listing its adjacent vertices. The
adjacency listing for a directed graph
maintains a listing of the terminal nodes for
each of the vertex in the graph.

Adjacency
Vertex
list
A B, C

B A, B, C
Figure tbd.15. Example of a tree
C A, B
However, one should remember that a tree is
Figure tbd.14. Adjacency lists for graphs strictly hierarchical in nature as compared to
in Figures tbd.10 and tbd.11 a graph, which is flat. In a tree, an ordered
pair is built between two nodes as parent and
child. Each child node in a tree is associated
Figure tbd.14 illustrates the adjacency lists with only one parent node, whereas this
for the pseudograph in Figure tbd.10 and the restriction becomes meaningless for a graph
directed graph in Figure tbd.11. As the out- where no parent-child association exists.
degree of vertex C in Figure tbd.11 is zero,
there is no entry against C in the adjacency An undirected graph is a tree if and only if
list. there is a unique simple path between any two
of its vertices.
Different representations for a graph—like
adjacency matrix, incidence matrix, and Figure tbd.15 presents a tree T(N, E) where
adjacency lists—need to be studied. the set of nodes N = {A, B, C, D, E, F, G, H,
I, J, K}. The edge set E is {(A, B), (A, C), (A,
D), (B, E), (B, F), (B, G), (C, H), (C, I), (D,
4.2. Tree J), (D, K)}.
A tree T(N, E) is a hierarchical data structure
of n = |N| nodes with a specially designated The parent of a non-root node v is the unique
root node R while the remaining n − 1 nodes node u with a directed edge from u to v. Each
node in the tree has a unique parent node

Mathematical Foundations TBD–11 ©


IEEE – SWEBOK Guide V4
except the root of the tree. In Figure tbd.15, E and J, though from the same level, are not
root node A is the parent node for nodes B, C, sibling nodes.
and D. Similarly, B is the parent of E, F, G, Two sibling nodes are of the same level, but
and so on. The root node A does not have any two nodes in the same level are not
parent. necessarily siblings.
A node that has children is called an internal A tree is called an ordered tree if the relative
node. In Figure tbd.15, node A and node B position of occurrences of children nodes is
are examples of internal nodes. significant. For example, a family tree is an
The degree of a node in a tree is the same as ordered tree if, as a rule, the name of an elder
its number of children. In Figure tbd.15, root sibling always appears before (i.e., on the left
node A and its child B are both of degree 3. of) the younger sibling.
Nodes C and D have degree 2. In an unordered tree, the relative position of
The distance of a node from the root node in occurrences between the siblings does not
terms of number of hops is called its level. bear any significance and may be altered
Nodes in a tree are at different levels. The arbitrarily.
root node is at level 0. Alternately, the level A binary tree is formed with zero or more
of a node X is the length of the unique path nodes where there is a root node R and all the
from the root of the tree to node X. Root node remaining nodes form a pair of ordered
A is at level 0 in Figure tbd.15. Nodes B, C, subtrees under the root node. In a binary tree,
and D are at level 1. The remaining nodes in no internal node can have more than 2
Figure tbd.15 are at level 2. children. However, one must consider that
The height of a tree is the maximum of the besides this criterion in terms of the degree of
levels of nodes in the tree. In Figure tbd.15, internal nodes, a binary tree is always
the height of the tree is 2. ordered. If the positions of the left and right
subtrees for any node in the tree are swapped,
A node is called a leaf if it has no children.
The degree of a leaf node is 0. In Figure then a new tree is derived.
tbd.15, nodes E through K are leaf nodes with
degree 0.
The ancestors or predecessors of a non-root
node X are all the nodes in the path from root
to node X. In Figure tbd.15, nodes A and D
form the set of ancestors for J.
The successors or descendants of a node X Figure tbd.16. Examples of binary trees
are all the nodes that have X as its ancestor.
For a tree with n nodes, all remaining n−1
nodes are successors of the root node. In In Figure tbd.16, the two binary trees are
Figure tbd.15, node B has successors in E, F, different as the positions of occurrences of
and G. the children of A are different in the two trees.
If node X is an ancestor of node Y, then node
Y is a successor of X.
Two or more nodes sharing the same parent
node are called sibling nodes. In Figure 15,
nodes E and G are siblings. However, nodes
Mathematical Foundations TBD–12 ©
IEEE – SWEBOK Guide V4
except possibly the last one, filled. In case the
last level of a complete binary tree is not full,
nodes occur from the leftmost positions
available.
Interestingly, following the definitions
above, the tree in Figure tbd.18(b) is a
complete but not full binary tree as node B
has only one child in D. On the contrary, the
tree in Figure tbd.17 is a full but not complete
binary tree as the children of B occur in the
tree while the children of C do not appear in
the last level.
Figure tbd.17. Example of a full binary
tree A binary tree of height H is balanced if all leaf
nodes occur at levels H or H − 1. All three
binary trees in Figures tbd.17 and tbd.18 are
According to [1*], a binary tree is called a full balanced binary trees.
binary tree if every internal node has exactly
2 children. The binary tree in Figure tbd.17 is There are at most 2H leaves in a binary tree of
a full binary tree as both internal nodes A and height H. In other words, if a binary tree with
B are of degree 2. L leaves is full and balanced, then its height
is H = ⎡log2L⎤. This is true for the two trees
A full binary tree following the definition in Figures tbd.17 and tbd.18(a) as both trees
above is also referred to as a strictly binary are full and balanced. However, the tree in
tree. Figure tbd.18(b) is not a full binary tree.
A binary search tree (BST) is a special kind
of binary tree in which each node contains a
distinct key value, and the key value of each
node in the tree is less than every key value
in its right subtree and greater than every key
value in its left subtree.
A traversal algorithm is a procedure for
systematically visiting every node of a binary
tree. Tree traversals may be defined
recursively.
If T is binary tree with root R and the
remaining nodes form an ordered pair of
nonnull left subtree TL and nonnull right
Figure tbd.18. Example of complete subtree TR below R, then the preorder
binary trees traversal function PreOrder(T) is defined as:
PreOrder(T) = R, PreOrder(TL),
Both binary trees in Figure tbd.18 are PreOrder(TR) … eqn. 1
complete binary trees. The tree in Figure The recursive process of finding the preorder
tbd.18(a) is a complete as well as a full binary traversal of the subtrees continues until the
tree. A complete binary tree has all its levels, subtrees are found to be Null. Here, commas

Mathematical Foundations TBD–13 ©


IEEE – SWEBOK Guide V4
have been used as delimiters for the sake of A computer system may be abstracted as a
improved readability. mapping from state to state driven by inputs.
In other words, a system may be considered
The postorder and in-order may be similarly
as a transition function T: S × I → S × O,
defined using eqn. 2 and eqn. 3 respectively.
where S is the set of states and I, O are the
PostOrder(T) = PostOrder(TL), input and output functions.
PostOrder(TR), R … eqn 2
If the state set S is finite, the system is called
InOrder(T) = InOrder(TL), R, InOrder(TR) a finite state machine (FSM).
… eqn 3
Alternately, a finite state machine (FSM) is a
mathematical abstraction composed of a
finite number of states and transitions
between those states. If the domain S × I is
reasonably small, then one can specify T
explicitly using diagrams similar to a flow
graph to illustrate the way logic flows for
different inputs. However, this is practical
only for machines that have a very small
information capacity.
An FSM has a finite internal memory, an
input feature that reads symbols one at a time
in a sequence, and an output feature.
Figure tbd.19. A binary search tree The operation of an FSM begins from a start
state, goes through transitions depending on
The tree in Figure tbd.19 is a binary search input to different states, and can end in any
tree (BST). The preorder, postorder, and in- valid state. However, only a few of all the
order traversal outputs for this BST are given states mark a successful flow of operation.
below in their respective order. These are called accept states.
Preorder output: 9, 5, 2, 1, 4, 7, 6, 8, 13, 11, The information capacity of an FSM is C =
10, 15 log |S|. Thus, if we represent a machine
having an information capacity of C bits as an
Postorder output: 1, 4, 2, 6, 8, 7, 5, 10, 11, 15,
FSM, then its state transition graph will have
13, 9
|S| = 2C nodes.
In-order output: 1, 2, 4, 5, 6, 7, 8, 9, 10, 11,
A finite state machine is formally defined as
13, 15
M = (S, I, O, f, g, s0).
Further discussion on trees and their usage
S is the state set;
has been included in section 6, Data Structure
I is the set of input symbols;
and Representation, of the Computing
O is the set of output symbols;
Foundations KA. <<<TBD!!! Double
f is the state transition function;
check!!!>>>
g is the output function;
and s0 is the initial state.
5. Finite State Machine Given an input x ∈ I on state Sk, the FSM
makes a transition to state Sh following state
[1*, c13] transition function f and produces an output y

Mathematical Foundations TBD–14 ©


IEEE – SWEBOK Guide V4
∈ O using the output function g. input symbol represents the new state and the
output symbol. Figures tbd.21(a) and
tbd.21(b) are alternate representations of the
FSM in Figure tbd.20.

6. Grammar
[1*, c13]
The grammar of a natural language defines
whether a combination of words makes a
valid sentence. Unlike natural languages, a
formal language is specified by a well-
defined set of rules for syntaxes. The valid
sentences of a formal language can be
Figure tbd.20. Example of an FSM described by a grammar with the help of these
rules, referred to as production rules.
Figure tbd.20 illustrates an FSM with S0 as A formal language is a set of finite-length
the start state and S1 as the final state. Here, S words or strings over some finite alphabet,
= {S0, S1, S2}; I = {0, 1}; O = {2, 3}; f(S0, 0) and a grammar specifies the rules for
= S2, f(S0, 1) = S1, f(S1, 0) = S2, f(S1, 1) = S2, formation of those words or strings. The
f(S2, 0) = S2, f(S2, 1) = S0; g(S0, 0) = 3, g(S0, entire set of words that are valid for a
1) = 2, g(S1, 0) = 3, g(S1, 1) = 2, g(S2, 0) = 2, grammar constitutes the language for the
g(S2, 1) = 3. grammar. Thus, the grammar G is any
compact, precise mathematical definition of a
Input Current Output State language L as opposed to just a raw listing of
Current State f Trans g all legal sentences or examples of those
State sentences in that language.
0 1 Input Input
A grammar implies an algorithm that would
S2, S1, 0 1 0 1
S0 generate all legal sentences of the language.
3 2
There are different types of grammars.
S2, S2, S0 3 2 S2 S1
S1 A phrase-structure or Type-0 grammar G =
3 2
(V, T, S, P) is a 4-tuple in which:
S2, S0, S1 3 2 S2 S2
S2 V is the vocabulary, i.e., set of words.
2 3 ●
S2 2 3 S2 S0 ● T ⊆ V is a set of words called terminals.
● S ∈ N is a special word called the start
(a) symbol.
(b) ● P is the set of productions rules for
Figure tbd.21. Tabular representation of substituting one sentence fragment for
an FSM another.
There exists another set N = V − T of words
The state transition and output values for called nonterminals. The nonterminals
different inputs on different states may represent concepts like noun. Production
instead be represented using a state table. The rules are applied on strings containing
state table for the FSM in Figure tbd.20 is nonterminals until no more nonterminal
shown in Figure tbd.21. Each pair against an symbols are present in the string. The start
Mathematical Foundations TBD–15 ©
IEEE – SWEBOK Guide V4
symbol S is a nonterminal. grammars
The language generated by a formal grammar
G, denoted by L(G), is the set of all strings As illustrated in Figure tbd.22, we infer the
over the set of alphabets V that can be
following on different types of grammars:
generated, starting with the start symbol, by
applying production rules until all the 1. Every regular grammar is a context-
nonterminal symbols are replaced in the free grammar (CFG).
string. 2. Every CFG is a context-sensitive
For example, let G = ({S, A, a, b}, {a, b}, S, grammar (CSG).
{S → aA, S → b, A → aa}). Here, the set of 3. Every CSG is a phrase-structure
terminals are N = {S, A}, where S is the start grammar (PSG).
symbol. The three production rules for the
grammar are given as P1: S → aA; P2: S → Context-Sensitive Grammar: All fragments
b; P3: A → aa. in the RHS are either longer than the
corresponding fragments in the LHS or
Applying the production rules in all possible empty, i.e., if b → a, then |b| < |a| or a = φ. A
ways, the following words may be generated formal language is context-sensitive if a
from the start symbol. context-sensitive grammar generates it.
S → aA (using P1 on Context-Free Grammar: All fragments in the
start symbol) LHS are of length 1, i.e., if A → a, then |A| =
→ aaa (using P3) 1 for all A ∈ N. The term context-free derives
S →b (using P2 on from the fact that A can always be replaced
start symbol) by a, regardless of the context in which it
Nothing else can be derived for G. Thus, the occurs. A formal language is context-free if a
language of the grammar G consists of only context-free grammar generates it. Context-
two words: L(G) = {aaa, b}. free languages are the theoretical basis for the
syntax of most programming languages.
8.1 Language Recognition Regular Grammar. All fragments in the RHS
Formal grammars can be classified according are either single terminals or a pair built by a
to the types of productions that are allowed. terminal and a nonterminal; i.e., if A → a,
The Chomsky hierarchy (introduced by then either a ∈ T, or a = cD, or a = Dc for c ∈
Noam Chomsky in 1956) describes such a T, D ∈ N.
classification scheme.
If a = cD, then the grammar is called a right
linear grammar. On the other hand, if a = Dc,
then the grammar is called a left linear
grammar. Both the right linear and left linear
grammars are regular or Type-3 grammar.
The language L(G) generated by a regular
grammar G is called a regular language.
A regular expression A is a string (or pattern)
formed from the following six pieces of
information: a ∈ Σ, the set of alphabets, ε, 0
Figure tbd.22. Chomsky hierarchy of and the operations, OR (+), PRODUCT (.),
CONCATENATION (*). The language of G,
Mathematical Foundations TBD–16 ©
IEEE – SWEBOK Guide V4
L(G) is equal to all those strings that match set of natural numbers. Many mathematicians
G, L(G) = {x ∈ Σ*|x matches G}. consider that, in Europe, the sequence of
natural numbers traditionally started with 1 (0
For any a ∈ Σ, L(a) = a; L(ε) = {ε}; L(0) = 0.
was not even considered to be a number by
+ functions as an or, L(A + B) = L(A) ∪ L(B). the Greeks). In the 19th century, set
. creates a product structure, L(AB) = L(A) . theoreticians and other mathematicians
L(B). started the convention of including 0 in the set
of natural numbers.
* denotes concatenation, L(A*) = {x1x2…xn |
xi ∈ L(A) and n ≥ 0} Integers. This group has all the whole
numbers in it and their negatives. The
For example, the regular expression (ab)* common mathematical symbol for the set of
matches the set of strings: {ε, ab, abab, all integers is Z, i.e., Z = {…, −3, −2, −1, 0,
ababab, abababab, …}. The regular 1, 2, 3, …}.
expression (aa)* matches the set of strings on
one letter a that have even length. The regular Rational Numbers. These are any numbers
expression (aaa)* + (aaaaa)* matches the set that can be expressed as a ratio of two
of strings of length equal to a multiple of 3 or integers. The common symbol for the set of
5. all rational numbers is Q.
Rational numbers may be classified into three
types, based on how the decimals act. The
7. Number Theory decimals either do not exist, e.g., 15, or, when
[1*, c4] decimals do exist, they may terminate, as in
15.6, or they may repeat with a pattern, as in
Number theory is one of the oldest branches
1.666..., (which is 5/3).
of pure mathematics and one of the largest.
Of course, it concerns questions about Irrational Numbers. These are numbers that
numbers, usually meaning whole numbers cannot be expressed as an integer divided by
and fractional or rational numbers. The an integer. These numbers have decimals that
different types of numbers include integer, never terminate and never repeat with a
real number, natural number, complex pattern, e.g., PI or √2.
number, rational number, etc. Real Numbers. This group is made up of all
the rational and irrational numbers. The
1.1. Types of Numbers numbers that are encountered when studying
algebra are real numbers. The common
Natural Numbers. This group of numbers
mathematical symbol for the set of all real
starts at 1 and continues: 1, 2, 3, 4, 5, and so
numbers is R.
on. Zero is not in this group. There are no
negative or fractional numbers in the group of Imaginary Numbers. These are all based on
natural numbers. The common mathematical the imaginary number i. This imaginary
symbol for the set of all natural numbers is N. number is equal to the square root of −1. Any
real number multiple of i is an imaginary
Whole Numbers. This group has all natural
number, e.g., i, 5i, 3.2i, −2.6i, etc.
numbers plus the number 0.
Complex Numbers. A complex number is a
Unfortunately, not everyone accepts the
combination of a real number and an
above definitions of natural and whole
imaginary number in the form a + bi. The real
numbers. There seems to be no general
part is a, and b is called the imaginary part.
agreement about whether to include 0 in the

Mathematical Foundations TBD–17 ©


IEEE – SWEBOK Guide V4
The common mathematical symbol for the set greater than 1 are called composite numbers.
of all complex numbers is C. For example, 2 A composite number may be composed by
+ 3i, 3−5i, 7.3 + 0i, and 0 + 5i. 7.3 + 0i is the multiplying two integers greater than 1.
same as the real number 7.3. All real numbers There are many interesting applications of
are complex numbers with zero for the prime numbers; among them are the public-
imaginary part. Similarly, 0 + 5i is just the key cryptography scheme, which involves the
imaginary number 5i. All imaginary numbers exchange of public keys containing the
are complex numbers with zero for the real product p*q of two random large primes p
part. and q (a private key) that must be kept secret
by a given party.
1.1. Divisibility
1.1. Greatest Common Divisor
Elementary number theory involves
divisibility among integers. Let a, b ∈ Z with The greatest common divisor gcd(a, b) of
a ≠ 0. The expression a|b, i.e., a divides b if integers a, b is the greatest integer d that is a
∃c ∈ Z: b = ac, i.e., there is an integer c such divisor both of a and of b, i.e.,
that c times a equals b. For example, 3|−12 is d = gcd(a, b) for max(d: d|a ∧ d|b)
true, but 3|7 is false.
For example, gcd(24, 36) = 12.
If a divides b, then we say that a is a factor of
b or a is a divisor of b, and b is a multiple of Integers a and b are called relatively prime or
a. coprime if and only if their GCD is 1. Neither
35 nor 6 are prime, but they are coprime as
b is even if and only if 2|b. these two numbers have no common factors
Let a, d ∈ Z with d > 1. Then a mod d denotes greater than 1, so their GCD is 1.
that the remainder r from the division A set of integers X = {i1, i2, …} is relatively
algorithm with dividend a and divisor d, i.e., prime if all possible pairs ih, ik, h ≠ k drawn
the remainder when a is divided by d. We can from the set X are relatively prime.
compute (a mod d) by: a − d * ⎣a/d⎦, where
⎣a/d⎦ represents the floor of the real number.
Let Z+ = {n ∈ Z | n > 0} and a, b ∈ Z, m ∈ Z+, 8. Basics of Counting
then a is congruent to b modulo m, written as [1*, c6]
a ≡ b (mod m), if and only if m | a−b. The sum rule states that if a task t1 can be done
Alternately, a is congruent to b modulo m if in n1 ways and a second task t2 can be done in
and only if (a−b) mod m = 0. n2 ways, and if these tasks cannot be done at
the same time, then there are n1+ n2 ways to
do either task.
1.1. Prime Number
• If A and B are disjoint sets, then |A ∪
An integer p > 1 is prime if and only if it is B|=|A| + |B|.
not the product of any two integers greater • In general if A1, A2, …, An are disjoint
than 1, i.e., p is prime if p > 1 ∧ ∃ ¬ a, b ∈ N: sets, then |A1 ∪ A2 ∪ … ∪ An| = |A1| +
a > 1, b > 1, a * b = p. |A2| + … + |An|.
If there are 200 athletes doing sprint events
The only positive factors of a prime p are 1 and 30 athletes who participate in the long
and p itself. The numbers 2, 13, 29, 61, etc. jump event, then how many ways are there to
are prime numbers. Nonprime integers

Mathematical Foundations TBD–18 ©


IEEE – SWEBOK Guide V4
pick one athlete who is either a sprinter or a same problem with a smaller input.
long jumper? A phenomenon is said to be random if
Using the sum rule, the answer would be 200 individual outcomes are uncertain, but the
+ 30 = 230. long-term pattern of many individual
outcomes is predictable.
The product rule states that if a task t1 can be
done in n1 ways and a second task t2 can be The probability of any outcome for a random
done in n2 ways after the first task has been phenomenon is the proportion of times the
done, then there are n1 * n2 ways to do the outcome would occur in a very long series of
procedure. repetitions.
• If A and B are disjoint sets, then |A × B| The probability P(A) of any event A satisfies
= |A| * |B|. 0 ≤ P(A) ≤ 1. Any probability is a number
• In general, if A1, A2, …, An are disjoint between 0 and 1. If S is the sample space in a
sets, then |A1 × A2 × … × An| = |A1| * probability model, the P(S) = 1. All possible
|A2| * …. * |An|. outcomes together must have probability of 1.
If there are 200 athletes doing sprint events Two events A and B are disjoint if they have
and 30 athletes who participate in the long no outcomes in common and so can never
jump event, then how many ways are there to occur together. If A and B are two disjoint
pick two athletes so that one is a sprinter and events, P(A or B) = P(A) + P(B). This is
the other is a long jumper? known as the addition rule for disjoint events.
Using the product rule, the answer would be If two events have no outcomes in common,
200 * 30 = 6000. the probability that one or the other occurs is
The principle of inclusion-exclusion states the sum of their individual probabilities.
that if a task t1 can be done in n1 ways and a Permutation is an arrangement of objects in
second task t2 can be done in n2 ways at the which the order matters without repetition.
same time with t1, then to find the total One can choose r objects in a particular order
number of ways the two tasks can be done, from a total of n objects by using nPr ways,
subtract the number of ways to do both tasks where npr = n! / (n − r)!. Various notations like
from n1 + n2. n
Pr and P(n, r) are used to represent the
• If A and B are not disjoint, |A ∪ B| = |A| number of permutations of a set of n objects
+ |B|− |A ∩ B|. taken r at a time.
In other words, the principle of inclusion- Combination is a selection of objects in
exclusion aims to ensure that the objects in which the order does not matter without
the intersection of two sets are not counted repetition. This is different from a
more than once. permutation because the order does not
Recursion is the general term for the practice matter. If the order is only changed (and not
of defining an object in terms of itself. There the members) then no new combination is
are recursive algorithms, recursively defined formed. One can choose r objects in any order
functions, relations, sets, etc. from a total of n objects by using nCr ways,
where nCr = n! / [r! * (n − r)!].
A recursive function is a function that calls
itself. For example, we can define f(n) = 3 *
f(n − 1) for all n ∈ N and n ≠ 0 and f(0) = 5. 9. Discrete Probability
An algorithm is recursive if it solves a [1*, c7]
problem by reducing it to an instance of the
Mathematical Foundations TBD–19 ©
IEEE – SWEBOK Guide V4
Probability is the mathematical description of random variable.
randomness. Basic definitions of probability The probability that the random variable X
and randomness have been provided in the will equal x is:
previous section. Here, start with the
concepts behind probability distribution and P(X = x) or, more simply, P(x).
discrete probability. A Probability Distribution (Density)
A probability model is a mathematical Function (PDF) is a table, formula, or graph
description of a random phenomenon that describes the values of a random variable
consisting of two parts: a sample space S and and the probability associated with these
a way of assigning probabilities to events. values. Probabilities associated with discrete
The sample space defines the set of all random variables have the following
possible outcomes, whereas an event is a properties:
subset of a sample space representing a i. 0 ≤ P(x) ≤ 1 for all x
possible outcome or a set of outcomes.
ii. ΣP(x) = 1
A random variable is a function or rule that
assigns a number to each outcome. Basically, A discrete probability distribution can be
it is just a symbol that represents the outcome represented as a discrete random variable.
of an experiment. For example, let X be the
number of heads when the experiment is
flipping a coin n times. Similarly, let S be the X 1 2 3 4 5 6
speed of a car as measured on a radar
detector. P(x) 1/6 1/6 1/6 1/6 1/6 1/6
The values for a random variable could be
discrete or continuous depending on the Figure tbd.23. A discrete probability
experiment. A discrete random variable can function for a rolling die
hold all possible outcomes without missing
any, although it might take an infinite amount The mean μ of a probability distribution
of time. A continuous random variable is used model is the sum of the product terms for
to measure an uncountable number of values individual events and its outcome probability.
even if an infinite amount of time is given. In other words, for the possible outcomes x1,
For example, if random variable X represents x2, …, xn in a sample space S if pk is the
an outcome that is a real number between 1 probability of outcome xk, the mean of this
and 100, then X may have an infinite number probability would be μ = x1p1 + x2p2 + … +
of values. One can never list all possible xnpn. The mean of the probability density for
outcomes for X even if an infinite amount of the distribution in Figure tbd.23 would be
time is allowed. Here, X is a continuous 1 * (1/6) + 2 * (1/6) + 3 * (1/6) + 4 * (1/6) +
random variable. On the other hand, for the 5 * (1/6) + 6 * (1/6)
same interval of 1 to 100, another random = 21 * (1/6) = 3.5
variable Y can be used to list all integer Here, the sample space refers to the set of all
values in the range. Here, Y is a discrete possible outcomes.
random variable.
The variance σ2 of a discrete probability
An upper-case letter, say X, will represent the model is: σ2 = (x1 – μ)2p1 + (x2 – μ)2p2 + … +
name of the random variable. Its lower-case (xk – μ)2pk. The standard deviation, σ, is the
counterpart, x, will represent the value of the square root of the variance. For the

Mathematical Foundations TBD–20 ©


IEEE – SWEBOK Guide V4
probability distribution in Figure tbd.23, the different numbers. A 32-bit location can store
variation σ2 would be any one of N = 232 ≈ 4.3 × 109 different
numbers, while a 64-bit location can store any
σ2 = [(1 – 3.5)2 * (1/6) + (2 – 3.5)2 * (1/6) +
one of N' = 264 ≈ 1.84 × 1019 different
(3 – 3.5)2 * (1/6) + (4 – 3.5)2 * (1/6) + (5 –
numbers. The question is how to distribute
3.5)2 * (1/6) + (6 – 3.5)2 * (1/6)]
those numbers for maximum efficiency and
= (6.25 + 2.25 + 0.25 + 0.5 + 2.25 + 6.25) accuracy in practical computations.
* (1/6)
One choice is to distribute the numbers
= 17.5 * (1/6) evenly, leading to fixed-point arithmetic. In
= 2.90 this system, the first bit represents the sign
and the remaining bits represent magnitude.
∴ standard deviation σ = √2.9 = 1.70 The decimal point—more appropriately, the
These numbers indeed aim to derive the binary point: the transition between whole
average value from repeated experiments. and fractional values—can be anywhere.
This is based on the single most important Integer numbers are represented by placing
phenomenon of probability, i.e., the average the binary point immediately to the right of
value from repeated experiments is likely to the least significant bit, and integer numbers
be close to the expected value of one between -2k−1-1 and 2k−1 can be stored.
experiment. Moreover, the average value is Placing the binary point to the left of the
more likely to be closer to the expected value least-significant bit allows non-integer values
of any one experiment as the number of to be represented.
experiments increases. Another choice is to space the numbers
closely together—say with a uniform gap of
2−n—and so distribute the total N numbers
10. Numerical Precision, Accuracy, and uniformly over the interval −2−n−1N < x ≤
Error 2−n−1N. Real numbers lying between the gaps
[2*, c1] are represented by either rounding (meaning
The main goal of numerical analysis is to the closest exact representative) or chopping
develop efficient algorithms for computing (meaning the exact representative
precise numerical values of functions, immediately below —or above, if negative—
solutions of algebraic and differential the number).
equations, optimization problems, etc. Numbers outside the range must be
Digital computers can only store finite represented by the largest (or largest
numbers. A digital computer cannot represent negative) number that can be represented.
any infinitely large number—be it an integer, This becomes a symbol for overflow, which
rational number, or any real or complex occurs when a computation produces a value
number [see section 7, Number Theory]. The outside of the range.
mathematics of approximation becomes When processing speed is a significant
critical to handle numbers in the finite range bottleneck, fixed-point representations can be
a computer can handle. an attractive and faster alternative to the more
Each number in a computer is assigned a cumbersome floating-point arithmetic most
location (e.g., an address or register), and commonly used in practice.
consists of a quantity of binary digits or bits. Accuracy and precision are very important
A k bit location can store any one of N = 2k terms in numerical analysis.

Mathematical Foundations TBD–21 ©


IEEE – SWEBOK Guide V4
Accuracy is the closeness with which a consists of one or two sets closed under some
measured or computed value agrees with the operations and satisfying several axioms,
true value. including none. For example, group, monoid,
ring, and lattice are examples of algebraic
Precision, on the other hand, is the closeness
structures. Group, monoid, and ring are
with which two or more measured or
defined in this section.
computed values for the same thing agree
with each other. In other words, precision is
11.1 Group
the closeness with which a number represents
A set S closed under a binary operation •
an exact value.
forms a group if the binary operation satisfies
Let x be a real number and let x* be an the following four criteria:
approximation. The absolute error in the ● Associative: ∀a, b, c ∈ S, the equation (a
approximation x* ≈ x is defined as | x* − x |. • b) • c = a • (b • c) holds
The relative error is defined as the ratio of the ● Identity: There exists an identity element
absolute error to the size of x, i.e., |x* − x| / | I ∈ S such that for all a ∈ S, I • a = a • I =
x |, which assumes x ≠ 0; otherwise, relative a
error is not defined. For example, 1000000 is ● Inverse: Every element a ∈ S, has an
an approximation of 1000001 with an inverse a' ∈ S with respect to the binary
absolute error of 1 and a relative error of 10−6, operation, i.e., a • a' = I; for example, the
while 10 is an approximation of 11 with an set of integers Z with respect to the
absolute error of 1 and a relative error of 0.1. addition operation is a group. The identity
Typically, relative error is more intuitive and element of the set is 0 for the addition
the preferred determiner of the size of the operation. ∀x ∈ Z, the inverse of x would
error. The present convention is that errors be –x, which is also included in Z
are always ≥ 0 and are = 0 if and only if the ● Closure property: ∀a, b ∈ S, the result of
approximation is exact. the operation a • b ∈ S
An approximation x* has k significant A group that is commutative, i.e., a • b = b •
decimal digits if its relative error is < 5 × a, is known as a commutative or Abelian
10−k−1. This means that the first k digits of x* group.
following its first nonzero digit are the same The set of natural numbers N (with the
as those of x. operation of addition) is not a group, since
Significant digits are the digits of a number there is no inverse for any x > 0 in the set of
that are known to be correct. In a natural numbers. Thus, the third criterion (of
measurement, one uncertain digit is included. inverse) is violated. However, the set of
For example, measurement of length with a natural number has some structure.
ruler of 15.5 mm with ±0.5 mm maximum Sets with an associative operation (the first
allowable error has 2 significant digits, criterion) are called semigroups; if they also
whereas a measurement of the same length have an identity element (the second
using a caliper and recorded as 15.47 mm criterion), then they are called monoids. The
with ±0.01 mm maximum allowable error has set of natural numbers under addition is an
3 significant digits. example of a monoid, a structure that is not
quite a group because it is missing the
requirement that every element have an
11. Algebraic Structures inverse under the operation.
This section introduces a few representations
used in higher algebra. An algebraic structure A monoid is a set S that is closed under a

Mathematical Foundations TBD–22 ©


IEEE – SWEBOK Guide V4
single associative binary operation • and has is cyclic. For example, the group G = {0, 2, 4,
an identity element I ∈ S such that for all a ∈ 6, 1, 3, 5, 7}, with respect to addition modulo
S, I • a = a • I = a. A monoid must contain at 8 operation, is cyclic. The subgroups J = {0,
least one element. The set of natural numbers 4} and H = {0, 2, 4, 6} are also cyclic.
N forms a commutative monoid under
addition with identity element 0. The same set 11.2 Ring
of natural numbers N also forms a monoid If we take an Abelian group and define a
under multiplication with identity element 1. second operation on it, a new structure is
The set of positive integers P forms a found that is different from just a group. If
commutative monoid under multiplication this second operation is associative and is
with identity element 1. distributive over the first, then we have a ring.
It may be noted that, unlike those in a group, A ring is a triple of the form (S, +, •), where
elements of a monoid need not have inverses. (S, +) is an Abelian group, (S, •) is a
A monoid can also be thought of as a semigroup, and • is distributive over +; i.e., ∀
semigroup with an identity element. a, b, c ∈ S, the equation a • (b + c) = (a • b) +
A subgroup is a group H contained within a (a • c) holds. Further, if • is commutative,
bigger one, G, such that the identity element then the ring is said to be commutative. If
of G is contained in H, and whenever h1 and there is an identity element for the •
h2 are in H, then so are h1 • h2 and h1−1. Thus, operation, then the ring is said to have an
the elements of H, equipped with the group identity.
operation on G restricted to H, indeed form a As an example, (Z, +, *), i.e., the set of
group. integers Z, with the usual addition and
multiplication operations, is a ring. As (Z, *)
Given any subset S of a group G, the is commutative, this ring is a commutative or
subgroup generated by S consists of products Abelian ring. The ring has 1 as its identity
of elements of S and their inverses. It is the element.
smallest subgroup of G containing S. For Note that the second operation may not have
example, let G be the Abelian group whose an identity element, nor do we need to find an
elements are G = {0, 2, 4, 6, 1, 3, 5, 7} and inverse for every element with respect to this
whose group operation is addition modulo 8. second operation. As for what distributive
This group has a pair of nontrivial subgroups: means, intuitively it is what we do in
J = {0, 4} and H = {0, 2, 4, 6}, where J is also elementary mathematics when performing
a subgroup of H. the following change: a * (b + c) = (a * b) +
In group theory, a cyclic group is a group that (a * c).
can be generated by a single element, in the A field is a ring for which the elements of the
sense that the group has an element a (called set, excluding 0, form an Abelian group with
the generator of the group) such that, when the second operation. A simple example of a
written multiplicatively, every element of the field is the field of rational numbers (R, +, *)
group is a power of a. with the usual addition and multiplication
operations. The numbers of the format a/b ∈
A group G is cyclic if G = {an for any integer R, where a, b are integers and b ≠ 0. The
n}. additive inverse of such a fraction is simply
Since any group generated by an element in a −a/b, and the multiplicative inverse is b/a
group is a subgroup of that group, showing provided that a ≠ 0.
that the only subgroup of a group G that
contains a is G itself suffices to show that G 12. Calculus
Mathematical Foundations TBD–23 ©
IEEE – SWEBOK Guide V4
This branch of mathematics deals with
derivatives and integrals of functions using
methods originally based on summation of
infinitesimal differences. The two elements
of calculus are differential calculus and
integral calculus.
● Differential calculus analyzes the rate of
change of one quantity in relation to the
rate of change of another. Geometrically,
it is the slope of the tangent to the graph
of the function. The rate of change of x
with respect to y is expressed as dx/dy;
● Integral calculus analyzes such concepts
as the area or volume enclosed by a
function.

Mathematical Foundations TBD–24 ©


IEEE – SWEBOK Guide V4
MATRIX OF TOPICS VS. REFERENCE MATERIAL

Cheney
Rosen and
2018 Kincaid
[1*] 2020
[2*]
1. Basic Logic c1
2. Proof techniques c1
3. Set, Relation, Function c2
4. Graph and Tree c10, c11
5. Finite State Machine c13
6. Grammar c13
7. Number Theory c4
8. Basics of Counting c6
9. Discrete Probability c7
10. Numerical Precision, c2
Accuracy, and Error
11. Algebraic Structures
12. Calculus

REFERENCES

[1*] K. Rosen, Discrete Mathematics and


its Applications, 8th ed., McGraw-Hill,
2018.
[2*] E.W. Cheney and D.R. Kincaid,
Numerical Mathematics and Computing,
7th ed., Addison Wesley, 2020.

Mathematical Foundations TBD–25 ©


IEEE – SWEBOK Guide V4
CHAPTER 18
ENGINEERING FOUNDATIONS

ACRONYMS practice of software engineering matures, it is


increasingly apparent that software
CAD Computer-Aided Design engineering is an engineering discipline that
CMMI Capability Maturity is based on skills and knowledge common to
Model Integration all engineering disciplines. This Engineering
Foundations knowledge area (KA) is
PDF Probability Density concerned with the engineering foundations
Function from other engineering disciplines that apply
to software engineering. The focus is on
PMF Probability Mass
topics that support other KAs while
Function
minimizing duplication of content covered
RCA Root Cause Analysis elsewhere in this Guide.
SDLC Software Development
Life Cycle
BREAKDOWN OF TOPICS FOR
ENGINEERING FOUNDATIONS
INTRODUCTION
The breakdown of topics for the Engineering
IEEE defines engineering as “the application Foundations KA is shown in Figure TBD.1.
of a systematic, disciplined, quantifiable
approach to structures, machines, products,
systems or processes” [1]. As the theory and
Engineering
Foundations

The Empirical Modeling,


Engineering Abstraction and Methods and Statistical Root Cause
Engineering Simulation, Measurement Standards
Design Encapsulation Experimental Analysis Analysis
Process and Prototyping
Techniques

Engineering Levels of Designed Unit of Analysis Modeling Levels (Scales) of Root Cause
Design in Abstraction Experiment (Sampling Units), Measurement Analysis
Engineering Population, and Simulation Techniques
Education Observational Sample Implications of
Encapsulation Prototyping Measurement
Study Root Cause-
Design as a Correlation and Theory on Based
Problem- Hierarchy Retrospective Regression Programming Improvement
Solving Study Languages
Activity Alternate
Abstractions Direct and
Derived
Measures

Reliability
and Validity

Assessing
Reliability

Goal-Question-
Metric Paradigm:
Why Measure?

Figure TBD.1. Breakdown of Topics for the


Engineering Foundations KA

Engineering Foundations TBD–1 ©


IEEE – SWEBOK Guide V4
The engineering process, common to all
engineering disciplines is discussed more
1. The Engineering Process fully in the Software Engineering
Economics KA, refer to that chapter for a
[2*, ch4] more complete discussion. A brief, high-
level summary is included here. Figure
TBD.2 shows the process flow.

Define the
selection criteria
Evaluate each
Understand the
alternative against
real problem
the selection criteria
Identify all
reasonable
technically feasible
solutions

Monitor the
Select the
performance of the
preferred alternative selected alternative

the Software Engineering Economics


KA, but criteria beyond pure finance can
Figure TBD.2. The Engineering Process also be relevant. be sure that all relevant
selection criteria have been identified;
● Identify all reasonable technically
feasible solutions—the best solution is
The engineering process is necessarily rarely the first solution that comes to
iterative, knowledge gained at any point in mind. Be sure to consider multiple
the process may inform earlier steps and technically feasible solutions to help
trigger iteration. These steps are briefly ensure that the optimal solution is in the
expanded below. set being considered;
● Understand the real problem— ● Evaluate each alternative against the
engineering begins when a need is selection criteria—determine how well
recognized, and no existing solution will each of the technically feasible solutions
meet that need. However, the problem satisfies the need;
that needs to be solved is not always the ● Select the preferred alternative—identify
problem engineers are asked to solve. Use which of the technically feasible
root cause techniques (later in this KA) to solutions best satisfies the selection
help discover what the real underlying criteria;
problem needing solution is; ● Monitor the performance of the selected
● Define the selection criteria— alternative—the engineering process
engineering decisions almost always necessarily depends on estimates, and
involve financial criteria as discussed in

Engineering Foundations TBD–2 ©


IEEE – SWEBOK Guide V4
those estimates might be wrong. Be sure 2.1. Engineering Design in Engineering
to evaluate the real-world performance of Education
the selected alternative and decide if, not The importance of engineering design in
too late, whether one of the other engineering education can be clearly seen by
alternatives might be better. the high expectations held by various
accreditation bodies for engineering
Much of the remainder of this KA elaborates education. Both the Canadian Engineering
on details of this higher-level engineering Accreditation Board and the Accreditation
process. Board for Engineering and Technology
(ABET) note the importance of including
engineering design in education programs.
2. Engineering Design The Canadian Engineering Accreditation
[3*, c1s2-s4] Board includes requirements for the amount
of engineering design experience/coursework
A product’s life cycle costs are largely
that is necessary for engineering students as
influenced by its design. This is true for
well as qualifications for the faculty members
manufactured products as well as for
who teach such coursework or supervise
software. The design of software is guided by
design projects. Their accreditation criteria
the features to be implemented and the
states:
quality attributes to be achieved. It is
important to note that software engineers use Design: An ability to design solutions for
“design” within their own context; while complex, open-ended engineering
there are some commonalities, there are also problems and to design systems,
many differences between engineering components or processes that meet
design as discussed in this section and specified needs with appropriate attention
software engineering design as discussed in to health and safety risks, applicable
the Software Architecture KA and Software standards, and economic, environmental,
Design KA. The scope of engineering design cultural, and societal considerations. [4,
is generally viewed as much broader than that p7]
of software design. In a similar manner, ABET defines
Many disciplines engage in problem solving engineering design as
activities where there is a single correct a process of devising a system,
solution. In engineering, most problems have component, or process to meet desired
many solutions and the focus is on finding a needs and specifications within
feasible solution (among many alternatives) constraints. It is an iterative, creative,
that best meets the needs presented. The set decision-making process in which the
of possible solutions is often constrained by basic sciences, mathematics, and
explicitly imposed limitations such as cost, engineering sciences are applied to
available resources, and the state of discipline convert resources into solutions. [5, p7]
or domain knowledge. In engineering
problems, sometimes there are also implicit Thus, it is clear that engineering design is a
constraints (such as the physical properties of vital component in the training and education
materials or laws of physics) that also restrict for all engineers. The remainder of this
the set of feasible solutions for a given section will focus on various aspects of
problem. engineering design.

Engineering Foundations TBD–3 ©


IEEE – SWEBOK Guide V4
2.2. Design as a Problem-Solving aspects of the problem and thereby generate
Activity more creative design solutions” [2*]. This is
[3*, c1s4, c2s1, c3s3] [6*, c5s1] particularly true in computer science in
general (such as hardware vs. software) and
Engineering design is primarily a problem- in software engineering in particular (data
solving activity. Design problems tend to be structure vs. data flow, and so forth).
open ended and more vaguely defined. There
are usually several alternative ways to solve According to Dijkstra, “The purpose of
the same problem. Design is generally abstracting is not to be vague, but to create a
considered to be a wicked problem—a term new semantic level in which one can be
first coined by Horst Rittel in the 1960s when absolutely precise” [7].
design methods were a subject of intense
interest. Rittel sought an alternative to the
linear, step-by-step model of the design 1.1. Levels of Abstraction
process being explored by many designers When abstracting, we concentrate on one
and design theorists and argued that most of “level” of the big picture at a time with
the problems addressed by the designers are confidence that we can then connect
wicked problems. As explained by Steve effectively with levels above and below.
McConnell, a wicked problem is one that Although we focus on one level, abstraction
could be clearly defined only by solving it or does not mean knowing nothing about the
by solving part of it. This paradox implies, neighboring levels. Abstraction levels do not
essentially, that a wicked problem has to be necessarily correspond to discrete
solved once in order to define it clearly and components in reality or in the problem
then solved again to create a solution that domain, but to well-defined standard
works. This has been an important insight for interfaces such as programming APIs. The
software designers for several decades [6*, advantages that standard interfaces provide
c5s1]. include portability, easier software/hardware
integration and wider usage.

3. Abstraction and Encapsulation


1.1. Encapsulation
[6*, c5s2–4]
Encapsulation is a mechanism used to
Abstraction is an indispensible technique implement abstraction. When we are dealing
associated with problem solving. It refers to with one level of abstraction, the information
both the process and result of generalization concerning the levels below and above that
by reducing the information of a concept, a level is encapsulated. This information can be
problem, or an observable phenomenon so the concept, problem, or observable
that one can focus on the “big picture.” One phenomenon; or it may be the permissible
of the most important skills in any operations on these relevant entities.
engineering undertaking is framing the levels Encapsulation usually comes with some
of abstraction appropriately. degree of information hiding in which some
“Through abstraction,” according to Voland, or all underlying details are hidden from the
“we view the problem and its possible level above the interface provided by the
solution paths from a higher level of abstraction. To an object, information hiding
conceptual understanding. As a result, we means we don’t need to know the details of
may become better prepared to recognize how the object is represented or how the
possible relationships between different operations on those objects are implemented.

Engineering Foundations TBD–4 ©


IEEE – SWEBOK Guide V4
diagram, a state chart, and a sequence
diagram for the same software at the same
1.1. Hierarchy
level of abstraction. These alternate
When we use abstraction in our problem abstractions do not form a hierarchy but
formulation and solution, we may use rather complement each other in helping to
different abstractions at different times—in understand the problem and its solution.
other words, we work on different levels of Though beneficial, it is as times difficult to
abstraction as the situation calls. Most of the keep alternate abstractions in sync.
time, these different levels of abstraction are
organized in a hierarchy. There are many
ways to structure a particular hierarchy and 1. Empirical Methods and Experimental
the criteria used in determining the specific Techniques
content of each layer in the hierarchy varies
depending on the individuals performing the [8*, c1]
work. The engineering process involves proposing
solutions or models of solutions and then
Sometimes, a hierarchy of abstraction is conducting experiments or tests to study
sequential, which means that each layer has those proposed solutions or models. Thus,
one and only one predecessor (lower) layer engineers must understand how to create an
and one and only one successor (upper) experiment and analyze the results to
layer—except the upmost layer (which has evaluate proposed solutions. Empirical
no successor) and the bottommost layer methods and experimental techniques help
(which has no predecessor). Sometimes, the engineer describe and understand
however, the hierarchy is organized in a tree- variability in their observations, identify the
like structure, which means each layer can sources of variability, and make decisions.
have more than one predecessor layer but
only one successor layer. Occasionally, a Three different types of empirical studies
hierarchy can have a many-to-many commonly used in engineering efforts are
structure, in which each layer can have designed experiments, observational studies,
multiple predecessors and successors. At no and retrospective studies. Brief descriptions
time, shall there be any loop in a hierarchy. of the commonly used methods are given.
A hierarchy often forms naturally in task
decomposition. Often, a task analysis can be 1.1. Designed Experiment
decomposed in a hierarchical fashion,
A designed or controlled experiment is an
starting with the larger tasks and goals of the
investigation of a testable hypothesis where
organization, and breaking each of them
one or more independent variables are
down into smaller subtasks that can again be
manipulated to measure their effect on one or
further subdivided This continuous division
more dependent variables. A precondition for
of tasks into smaller ones would produce a
conducting an experiment is the existence of
hierarchical structure of tasks-subtasks.
a clear hypothesis. It is important for an
engineer to understand how to formulate
1.1. Alternate Abstractions clear hypotheses.
Sometimes it is useful to have multiple Designed experiments allow engineers to
alternate abstractions for the same problem determine in precise terms how the variables
so that one can keep different perspectives in are related and, specifically, whether a cause-
mind. For example, we can have a class effect relationship exists between them. Each

Engineering Foundations TBD–5 ©


IEEE – SWEBOK Guide V4
combination of values of the independent Engineers often come across situations where
variables is a treatment. The simplest the relationship between different variables
experiments have just two treatments needs to be studied. An important point to
representing two levels of a single note is that most of the studies are carried out
independent variable (e.g., using a tool vs. based on samples and so the observed results
not using a tool). More complex experimental need to be understood with respect to the full
designs arise when more than two levels, population. Engineers must, therefore,
more than one independent variable, or any develop an adequate understanding of
dependent variables are used. statistical techniques for collecting reliable
data in terms of sampling and analysis to
arrive at results that can be generalized.
1.1. Observational Study These techniques are discussed.
An observational or case study is an
empirical inquiry that makes observations of
processes or phenomena within a real-world 2.1. Unit of Analysis (Sampling Units),
context. While an experiment deliberately Population, and Sample
ignores context, an observational or case Unit of analysis. While carrying out any
study includes context as part of the empirical study, observations need to be
observation. A case study is most useful made on chosen units called the units of
when the focus of the study is on how and analysis or sampling units. The unit of
why questions, when the behavior of those analysis must be identified and must be
involved in the study cannot be manipulated, appropriate for the analysis. For example, to
and when contextual conditions are relevant find the perceived usability of a software
and the boundaries between the phenomena product, the user or the software function
and context are not clear. may be the unit of analysis.
Population. The set of all respondents or
1.1. Retrospective Study items (possible sampling units) to be studied
A retrospective study involves the analysis of forms the population. As an example, in
historical data. Retrospective studies are also studying the perceived usability of a software
known as historical studies. This type of product, the set of all possible users forms the
study uses data (regarding some population.
phenomenon) that has been archived over While defining the population, care must be
time. This archived data is then analyzed to taken to understand the study and target
find relationships between variables, predict population. The population being studied and
future events, or identify trends. The quality the population for which the results are being
of the analysis results will depend on the generalized may be different. For example,
quality of the archived data. Historical data when the study population consists of only
may be incomplete, inconsistently measured, past observations and generalizations are
or incorrect. required for the future, the study population
and the target population may not be the
same.
2. Statistical Analysis
Sample. A sample is a subset of the
[8*, c9s1, c2s1] [9*, c11s3] population. The most crucial issue towards
Engineers must understand how different the selection of a sample is its
product and process characteristics vary. representativeness, including size. The

Engineering Foundations TBD–6 ©


IEEE – SWEBOK Guide V4
samples must be drawn in a manner that Distribution of a random variable. The range
ensures draws are independent, and the rules and pattern of variation of a random variable
of drawing samples must be predefined so is given by its distribution. When the
that the probability of selecting a particular distribution of a random variable is known, it
sampling unit is known beforehand. This is possible to compute the chance of any
method of selecting samples is called event. Some distributions are found to occur
probability sampling. commonly and are used to model many
random variables occurring in practice in the
Random variable. In statistical terminology,
context of engineering. A few of the more
the process of making observations or
commonly occurring distributions are given
measurements on the sampling units being
below.
studied is referred to as conducting the
experiment. For example, if the experiment is ● Binomial distribution: used to model
to toss a coin 10 times and count the number random variables that count the number
of times the coin lands on heads, each 10 of successes in n trials carried out
tosses of the coin is a sampling unit and the independently of each other, where each
number of heads for a given sample is the trial results in success or failure. We
observation or outcome for the experiment. make an assumption that the chance of
The outcome of an experiment is obtained in obtaining a success remains constant [8*,
terms of real numbers and defines the random c3s5].
variable being studied. Thus, the attribute of ● Poisson distribution: used to model the
the items being measured at the outcome of count of occurrence of some event over
the experiment represents the random time or space [8*, c3s8].
variable being studied; the observation ● Normal distribution: used to model
obtained from a particular sampling unit is a continuous random variables or discrete
particular realization of the random variable. random variables by taking a very large
In the example of the coin toss, the random number of values [8*, c4s5].
variable is the number of heads observed for
Concept of parameters. A statistical
each experiment. In statistical studies,
distribution is characterized by some
attempts are made to understand population
parameters. For example, the proportion of
characteristics on the basis of samples.
success in any given trial is the only
The set of possible values of a random parameter characterizing a binomial
variable may be finite or infinite but distribution. Similarly, the Poisson
countable (e.g., the set of all integers or the distribution is characterized by a rate of
set of all odd numbers). In such a case, the occurrence. A normal distribution is
random variable is called a discrete random characterized by two parameters: namely, its
variable. In other cases, the random variable mean and standard deviation.
under consideration may take values on a
Once the values of the parameters are known,
continuous scale and is called a continuous
the distribution of the random variable is
random variable.
completely known and the chance
Event. A subset of possible values of a (probability) of any event can be computed.
random variable is called an event. Suppose The probabilities for a discrete random
X denotes some random variable; then, for variable can be computed through the
example, we may define different events such Probability Mass Function (PMF). The PMF
as X ≥ x or X < x and so on. is defined at discrete points and gives the
point mass—i.e., the probability that the

Engineering Foundations TBD–7 ©


IEEE – SWEBOK Guide V4
random variable will take that particular use the value of a statistic to estimate a
value. Likewise, for a continuous random population parameter, we get a point
variable, we have the Probability Density estimate. As the name indicates, a point
Function (PDF). The PDF is very much like estimate gives a point value of the parameter
density and needs to be integrated over a being estimated.
range to obtain the probability that the Although point estimates are often used, they
continuous random variable lies between leave room for many questions. For instance,
certain values. Thus, if the PMF or PDF is we are not told anything about the possible
known, the chances of the random variable size of error or statistical properties of the
taking certain set of values may be computed point estimate. Thus, we might need to
theoretically. supplement a point estimate with the sample
Concept of estimation [8*, c7s1, c7s3]. The size as well as the variance of the estimate.
true values of the parameters of a distribution Alternately, we might use an interval
are usually unknown and need to be estimate. An interval estimate is a random
estimated from the sample observations. The interval with the lower and upper limits of the
estimates are functions of the sample values interval being functions of the sample
and are called statistics. For example, the observations as well as the sample size. The
sample mean is a statistic and may be used to limits are computed based on assumptions
estimate the population mean. Similarly, the regarding the sampling distribution of the
rate of occurrence of defects estimated from point estimate on which the limits are based.
the sample (rate of defects per line of code) is Properties of estimators. Various statistical
a statistic and serves as the estimate of the properties of estimators are used to decide
population rate of rate of defects per line of about the appropriateness of an estimator in a
code. The statistic used to estimate some
given situation. The most important
population parameter is often referred to as properties are that an estimator is unbiased,
the estimator of the parameter. efficient, and consistent with respect to the
A very important point is that the results of population.
the estimators themselves are random. If we Tests of hypotheses [8*, c9s1]. A hypothesis
take a different sample, we are likely to get a is a statement about the possible values of a
different estimate of the population parameter. For example, suppose it is
parameter. In the theory of estimation, we
claimed that a new method of software
need to understand different properties of development reduces the occurrence of
estimators—particularly, how much the defects. The hypothesis is that the rate of
estimates can vary across samples and how to occurrence of defects has been reduced. In
choose between different ways to obtain the tests of hypotheses, we decide—based on
estimates. For example, if we wish to sample observations—whether a proposed
estimate the mean of a population, we might hypothesis should be accepted or rejected.
use as our estimator a sample mean, a sample
median, a sample mode, or the midrange of For testing hypotheses, the null and
the sample. Each of these estimators has alternative hypotheses are formed. The null
different statistical properties that may hypothesis is the hypothesis of no change and
impact the standard error of the estimate. is denoted as H0. The alternative hypothesis
is written as H1. It is important to note that the
Types of estimates [8*, c7s3, c8s1]. There are alternative hypothesis may be one-sided or
two types of estimates: namely, point two-sided. For example, if we have the null
estimates and interval estimates. When we hypothesis that the population mean is not

Engineering Foundations TBD–8 ©


IEEE – SWEBOK Guide V4
less than some given value, the alternative (the value of α) is maintained within a
hypothesis would be that it is less than that particular value— typically 5 percent.
value and we would have a one-sided test. Also note that construction of a test of
However, if we have the null hypothesis that hypothesis includes identifying statistic(s) to
the population mean is equal to some given estimate the parameter(s) and defining a
value, the alternative hypothesis would be critical region such that if the computed value
that it is not equal and we would have a two- of the statistic falls in the critical region, the
sided test (because the true value could be null hypothesis is rejected.
either less than or greater than the given
value).
To test some hypothesis, we first compute 2.2. Correlation and Regression
some statistic. Along with the computation of [8*, c11s2, c11s8]
the statistic, a region is defined such that if A major objective of many statistical
the computed value of the statistic falls in that investigations is to establish relationships
region, the null hypothesis is rejected. This that make it possible to predict one or more
region is called the critical region (also variables in terms of others. Although it is
known as the confidence interval). In tests of desirable to predict a quantity exactly in
hypotheses, we need to accept or reject the terms of another quantity, it is seldom
null hypothesis based on the evidence possible and, in many cases, we must be
obtained. We note that, in general, the satisfied with estimating the average or
alternative hypothesis is the hypothesis of expected values.
interest. If the computed value of the statistic
The relationship between two variables is
does not fall inside the critical region, then
studied using the methods of correlation and
we cannot reject the null hypothesis. This
regression. Both these concepts are explained
indicates that there is not enough evidence to
briefly.
believe that the alternative hypothesis is true.
Correlation. The strength of linear
As the decision is being taken based on
relationship between two variables is
sample observations, errors are possible; the
measured using the correlation coefficient.
types of such errors are summarized in the
While computing the correlation coefficient
following table.
between two variables, we assume that these
Nature Statistical decision variables measure two different attributes of
the same entity. The correlation coefficient
Accept H0 Reject H0 takes a value between –1 to +1. The values –
H0 is OK Type I error 1 and +1 indicate a situation when the
true (probability association between the variables is perfect—
= α) i.e., given the value of one variable, the other
can be estimated with no error. A positive
H0 is Type II error OK correlation coefficient indicates a positive
false (probability relationship—that is, if one variable
= β) increases, so does the other. On the other
hand, when the variables are negatively
correlated, an increase of one leads to a
In test of hypotheses, we aim at maximizing decrease of the other.
the power of the test (the value of 1−β) while Always remember that correlation does not
ensuring that the probability of a type I error imply causation. Thus, if two variables are

Engineering Foundations TBD–9 ©


IEEE – SWEBOK Guide V4
correlated, we cannot conclude that one nonphysical representations, such as a CAD
causes the other. drawing of a cog or a mathematical model for
a process. Models help engineers reason and
Regression. The correlation analysis only
understand aspects of a problem. They can
measures the degree of relationship between
also help engineers understand what they do
two variables. The analysis to find the
know and what they don’t know about the
relationship between two variables is called
problem at hand.
regression analysis. The strength of the
relationship between two variables is There are three types of models: iconic,
measured using the coefficient of analogic, and symbolic. An iconic model is a
determination. This is a value between 0 and visually equivalent but incomplete 2-
1. The closer the coefficient is to 1, the dimensional or 3-dimensional
stronger the relationship between the representation—for example, maps, globes,
variables. A value of 1 indicates a perfect or built-to-scale models of structures such as
relationship. bridges or highways. An iconic model
actually resembles the artifact modeled.
In contrast, an analogic model is a
3. Modeling, Simulation, and
functionally equivalent but incomplete
Prototyping
representation. That is, the model behaves
[3*, c6] [10*, c13s3] [11*, c5] like the physical artifact even though it may
Modeling is part of the abstraction process not physically resemble it. Examples of
used to represent some aspects of a system. analogic models include a miniature airplane
Simulation uses a model of the system and for wind tunnel testing or a computer
provides a means of conducting designed simulation of a manufacturing process.
experiments with that model to better Finally, a symbolic model is a higher level of
understand the system, its behavior, and abstraction, where the model is represented
relationships between subsystems, as well as using symbols such as equations. The model
to analyze aspects of the design. Modeling captures the relevant aspects of the process or
and simulation are techniques that can be system in symbolic form. The symbols can
used to construct theories or hypotheses then be used to increase the engineer’s
about the behavior of the system; engineers understanding of the final system. An
then use those theories to make predictions example is an equation such as F = Ma. Such
about the system. Prototyping is another mathematical models can be used to describe
abstraction process where a partial and predict properties or behavior of the final
representation (that captures aspects of system or product.
interest) of the product or system is built. A
prototype may be an initial version of the 1.2. Simulation
system but lacks the full functionality of the All simulation models are a specification of
final version. reality. A central issue in simulation is to
abstract and specify an appropriate
1.1. Modeling
simplification of reality. Developing this
A model is always an abstraction of some real abstraction is of vital importance, as
or imagined artifact. Engineers use models in misspecification of the abstraction would
many ways as part of their problem solving invalidate the results of the simulation
activities. Some models are physical, such as exercise. Simulation can be used for a variety
a made-to-scale miniature construction of a of testing purposes.
bridge or building. Other models may be

Engineering Foundations TBD–10 ©


IEEE – SWEBOK Guide V4
Simulation is classified based on the type of software engineering, prototypes are also an
system under study. Thus, simulation can be abstract model of part of the software but are
either continuous or discrete. In the context usually not constructed with all of the
of software engineering, the emphasis will be architectural, performance, and other quality
primarily on discrete simulation. Discrete characteristics expected in the finished
simulations may model event scheduling or product. In either case, prototype
process interaction. The main components in construction must have a clear purpose and
such a model include entities, activities and be planned, monitored, and controlled—it is
events, resources, the state of the system, a a technique to study a specific problem
simulation clock, and a random number within a limited context [12*, c2s8].
generator. Output is generated by the In conclusion, modeling, simulation, and
simulation and must be analyzed. prototyping are powerful techniques for
An important problem in the development of studying the behavior of a system from a
a discrete simulation is that of initialization. given perspective. All can be used to perform
Before a simulation can be run, the initial designed experiments to study various
values of all the state variables must be aspects of the system. However, these are
provided. As the simulation designer may not abstractions and, as such, may not model all
know what initial values are appropriate for attributes of interest.
the state variables, these values might be
chosen somewhat arbitrarily. For instance, it
might be decided that a queue should be 4. Measurement
initialized as empty and idle. Such a choice [2*, pp442-447] [3*, c4s4] [12*, c7s5] [13*,
of initial condition can have a significant but c3s1-2]
unrecognized impact on the outcome of the
Knowing what to measure, how to measure,
simulation.
what can be done with measures, and even
1.3. Prototyping why to measure is critical in engineering
Constructing a prototype of a system is endeavors. It is important that everyone
another abstraction process. In this case, an involved in an engineering project
initial version of the system is constructed, understand the measurement methods,
often while the system is being designed. measurement results, and how those results
This helps the designers determine the can and should be used.
feasibility of their design. Measurements can be physical,
There are many uses for a prototype, environmental, economic, operational, or
including the elicitation of requirements, the some other sort of measurement that is
design and refinement of a user interface to meaningful for the project. This section
the system, validation of functional explores the theory of measurement and how
requirements, and so on. The objectives and it is fundamental to engineering.
purposes for building the prototype will Measurement starts as a conceptualization
determine its construction and the level of then moves from abstract concepts to
abstraction used. definitions of the measurement method to the
actual application of that method to obtain a
The role of prototyping is somewhat different measurement result. Each of these steps must
between physical systems and software. With be understood, communicated, and properly
physical systems, the prototype may actually employed to yield usable data. In traditional
be the first fully functional version of a engineering, direct measures are often used.
system or it may be a model of the system. In

Engineering Foundations TBD–11 ©


IEEE – SWEBOK Guide V4
In software engineering, a combination of measuring the radius has been proposed. The
both direct and derived measures (defined in operational definition specifies the exact
4.3, below) is necessary [13*, p273]. steps or method used to carry out a specific
measurement. This can also be called the
measurement method; sometimes a
The theory of measurement states that measurement procedure may be required to
measurement is an attempt to describe an be even more precise.
underlying real empirical system.
The importance of operational definitions can
Measurement methods specify activities that
hardly be overstated. Take the case of the
assign a value or symbol to an attribute of an
apparently simple measurement of height of
entity.
individuals. Unless we specify various
Attributes must then be defined in terms of factors like the time when the height will be
the operations used to identify and measure measured (it is known that the height of
them—that is, the measurement methods. In individuals varies across the day), how the
this approach, a measurement method is variability due to hair would be taken care of,
defined to be a precisely specified operation whether the measurement will be with or
that yields a symbol (called the measurement without shoes, what kind of accuracy is
result) when measuring an attribute. It expected (to the nearest inch, 1/2 inch,
follows that, to be useful, the measurement centimeter, etc.)—even this simple
method must be well defined. Arbitrariness measurement will lead to substantial
or vagueness in the method will lead to variation. Engineers must appreciate the need
ambiguity in the measurement results. to define measures from an operational
In some cases—particularly in the physical perspective.
world—the attributes we wish to measure are
easy to grasp; however, in an artificial world
4.1. Levels (Scales) of Measurement
like software engineering, defining attributes
may not be that simple. For example, the [2*, pp442-447] [12*, c7s5] [13*, c3s2]
attributes of height, weight, distance, etc. are Once the operational definitions have been
easily and uniformly understood (though they determined, actual measurements can be
may not be very easy to measure in all undertaken. Measurement may be carried out
circumstances), whereas attributes such as in one of four different scale types: nominal,
software size and complexity require clear ordinal, interval, and ratio. Brief descriptions
definitions. of each are given below.
Operational definitions. The definition of Nominal scale: This is the lowest level of
attributes, to start with, is often rather measurement and represents the most
abstract. Such definitions do not facilitate unrestricted assignment of symbols, which
measurements. For example, we may define serve only as labels. Nominal scales involve
a circle as a line forming a closed loop such only classification where measured entities
that the distance between any point on this are put into one of the mutually exclusive and
line and a fixed interior point called the collectively exhaustive categories (classes).
center is constant. We may further say that Some examples of nominal scales are:
the fixed distance from the center to any point
on the closed loop gives the radius of the • job titles in an organization;
circle. It may be noted that though the • automobile styles (like sedan, coupe,
concept has been defined, no means of hatchback, minivan, etc.);

Engineering Foundations TBD–12 ©


IEEE – SWEBOK Guide V4
• software development life cycle (SDLC) ordinal scales also support more-than and
models (like waterfall, iterative, agile, etc.). less-than comparisons. For example:
• did you finish that race before, tied with, or
after, me?
In nominal scales, no relationship between
symbols may be inferred. The only valid • is Event X the same, more, or less, probable
manipulation of measures in a nominal scale than Event Y?
are: • is Event X the same, more, or less, severe
• determining if two entities have the same or than Event Y?
different symbol (e.g., “Is your job title the • is the CMMI staged maturity level of
same or different than my job title?”); Organization A the same, higher, or lower,
• counting the number of entities having the than Organization B?
same symbol (e.g., “How many employees
have job title Software Engineer Level 2 in
this organization?”). When an ordinal scale uses numbers as
symbols—like the CMMI staged maturity
levels 1, 2, 3, 4, and 5—those numbers cannot
Statistical analyses may be carried out to be manipulated arithmetically. We cannot
understand how entities belonging to say that the difference between CMMI staged
different classes perform with respect to maturity level 5 and level 4 (i.e., 5-4)
some other response variable. compares in any meaningful way to the
difference between level 3 and level 2 (i.e., 3-
2). Neither can we say that CMMI staged
Ordinal scale: Ordinal scales extend nominal maturity level 4 is twice as good as level 2.
scales by requiring a strict ordering Ordinal scales that use numbers as symbols
relationship between the symbols. Ordinal are commonly misused in exactly this way,
scales are necessarily transitive, if A > B and for example presenting mean and standard
B > C, then A > C. Examples of ordinal scales deviation (e.g., “The average software
are: organization worldwide has a CMMI staged
• finish order in a race (e.g., 1st, 2nd, 3rd, etc.) maturity level of 1.763”). Such misuse can
easily lead to erroneous conclusions [13*,
• probabilities expressed using terms: remote, p274]. We can compute the median on an
unlikely, even, probable, and almost certain; ordinal scale as this only involves counting.
• severities expressed using terms: negligible, Using non-numeric symbols, such as initial,
marginal, serious, critical, and catastrophic; repeatable, defined, managed, and optimizing
for CMMI staged maturity levels, is preferred
• level of agreement expressed using terms: because it helps avoid such mistreatment.
strongly agree, somewhat agree, neutral, Properly chosen labels also better
somewhat disagree, strongly disagree; communicate the meaning of each label.
• Capability Maturity Model Integration
(CMMI) staged maturity levels.
Interval scale: Interval scales extend ordinal
scales by requiring that the difference
All manipulations of values on nominal between any pair of adjacent values is
scales are valid on ordinal scales, while constant. Examples of interval scales are:

Engineering Foundations TBD–13 ©


IEEE – SWEBOK Guide V4
• temperatures expressed in degrees Celsius
and Fahrenheit. The difference between -9C Ratio scale: Ratio scales extend ordinal
and -8C is the same as the difference between scales by requiring the zero point represent
26C and 27C. The difference between -9F absence of the measured attribute. Examples
and -8F is the same as the difference between of ratio scales are:
26F and 27F;
• temperature in degrees Kelvin (K);
• calendar dates. The difference between any
two consecutive dates is always one day: 24 • shoe sizes in the Mondopoint system
hours; (commonly used for athletic shoes, ski boots,
skates, and ballet shoes). A size 270/105 shoe
• shoe sizes in North America. The difference fits a foot 270mm long and 105mm wide;
between size 3 and size 4 is the same as the
difference between a size 10 and size 11, • count of decision constructs, e.g., if(), for(),
namely one third of an inch or 8.467mm. while(), in a given source code file;
• money.
All manipulations of values on ordinal scales
are valid on interval scales, while interval Ratio scales support all arithmetic and
scales also support addition and subtraction. statistical manipulations. Values in one ratio
For example: scale can often be trivially transformed into
• the difference between -9C and 0C is the corresponding values in another ratio scale
same as the difference between 0C and 9C. that measures the same attribute by using a
The difference between -50F and -0F is the multiplication factor. Distances in inches can
same as the difference between 25F and 75F; be trivially transformed into centimeters,
weights in kilograms can be trivially
• the length of time between the 6th of May transformed into pounds, speed in knots can
and the 9th of May is the same as between the be trivially transformed into kilometers per
8th of November and the 11th of November. hour, and so on.

Interval scales support most of the usual An additional measurement scale, the
statistical analyses like mean, standard absolute scale, is a ratio scale with
deviation, correlation, and regression. Any uniqueness of measure, i.e., no
manipulation involving multiplication or transformation is possible. The number of
division of values, on the other hand, is software engineers working on a project is an
meaningless because zero on an interval absolute scale because there are no other
scale, if it even exists, does not represent meaningful measures for numbers of people.
absence of the measured quantity. A zero
point on an interval scale is arbitrary with
respect to the attribute measured. Zero 1.1. Implications of Measurement
degrees both C and F do not represent the Theory on Programming Languages
absence of heat (i.e., absolute zero) and a
Common programming languages support a
North American size 0 shoe has non-zero
set of built-in data types, often including:
length. Therefore, 30C cannot be interpreted
as twice as hot as 15C, nor is a North • whole number types over varying ranges:
American size 9 shoe three times longer than int, integer, byte, short, long, etc.;
a size 3 shoe.

Engineering Foundations TBD–14 ©


IEEE – SWEBOK Guide V4
• floating point numbers over varying ranges Common programming languages allow
with varying precision: real, float, double, programmers to easily write code that is
etc.; inappropriate according to Measurement
Theory. As long as programming languages
• single characters: char;
allow it, programmers can and will—
• ordered sequences of characters: String. intentionally or unintentionally—misuse
them. A more sensible solution would be data
type semantics that explicitly enforce
Many languages, although not all, also Measurement Theory. For example, a
support type safe enumeration (e.g., Java’s language could explicitly support Nominal
“enum”). scales, such as,

Unfortunately, these languages offer no nominal enum automobile_style


support for Measurement Theory. They do = sedan, coupe, hatchback,
not prevent, nor even warn about, minivan, suv, sports_car;
inappropriate manipulations. The whole and
floating-point number data types in
programming languages operate as ratio That language could then prevent, or at least
scales and support the full range of warn against, more-than or less-than
manipulations: comparison, addition, comparisons:
subtraction, multiplication, division, and so
on. But consider CMMI staged maturity level
expressed as a number. In Measurement if( thisCarStyle >= sedan )
Theory terms, as shown above, it is an then … // not allowed
Ordinal scale so addition, subtraction,
multiplication, and division are
inappropriate. If any programmer represents If more-than or less-than comparisons are
CMMI staged maturity level using a whole needed, the language would support
number data type, nothing prevents them declaration of an Ordinal type, such as,
from inappropriately adding, subtracting,
multiplying, or dividing.
ordinal enum CMMI_staged_level
= initial, repeatable,
The same can be said for characters, strings, defined, managed, and
and enumerations. Programming languages optimizing;
implement them as Ordinal scales however
they might only be intended for representing
Nominal scaled values. More-than and less- The following statement would not trigger
than comparisons are allowed even when any error or warning:
inappropriate. The string, “minivan” is
alphabetically before the string “sedan”, but if( anOrgsCMMILevel >
it is inappropriate to draw any conclusion repeatable ) then …
other than mere alphabetical ordering of
arbitrary text strings out of that fact.
Similarly, an interval scale could be
supported as, for example:

Engineering Foundations TBD–15 ©


IEEE – SWEBOK Guide V4
highTemperature = priceOfBook;
// makes no sense but is
interval
allowed
AirTemperatureCentigrade from
-120.0 to +180.0;
AirTemperatureCentigrade On the other hand, a Measurement Theory-
yesterdaysHighTemp; aware programming language would be
AirTemperatureCentigrade expected to generate a compiler error or
todaysHighTemp; warning:

if( todaysHighTemp > ratio Money from -10000.00 to


yesterdaysHighTemp ) { … } // +10000.00;
allowed ratio TemperatureKelvin from
0.00 to 1000.00;

if( todaysHighTemp > Money priceOfBook;


yesterdaysHighTemp * 2.0 ) TemperatureKelvin
{ … } // not allowed highTemperature;

A ratio scale could be supported as, for highTemperature = priceOfBook;


example: // not allowed

ratio TemperatureKelvin from Future programming languages should


0.00 to 1000.00; enforce Measurement Theory and not allow
TemperatureKelvin developers to manipulate measurements in
previousReading; inappropriate ways. But until languages do
support Measurement Theory, software
TemperatureKelvin thisReading; engineers need to at least understand it and be
on the lookout for inappropriate
manipulations in, for example, code reviews.
if( thisReading >
previousReading * 2. ) { … } //
allowed 1.1. Direct and Derived Measures
[13*, c7s5]
Common programming languages have no Measures may be either direct or derived
problem with the following code: (sometimes called indirect measures). An
example of a direct measure would be a count
of how many times an event occurred, such
double priceOfBook; as the number of defects found in a software
double highTemperature; product. A derived measure is one that
combines direct measures in some way that is
consistent with the measurement methods.
An example of a derived measure would be

Engineering Foundations TBD–16 ©


IEEE – SWEBOK Guide V4
calculating the average effort in hours to Validity refers to whether the measurement
repair defects found in a software product. In method really measures what we intend to
both cases, the measurement method measure. Validity of a measurement method
determines how to make the measurement. may be looked at from three different
The scale types of those measures constrain perspectives: construct validity, criteria
how they can be manipulated. When different validity, and content validity.
scale types are involved:
• the scale type of the result of the 1.1. Assessing Reliability
manipulation can be no higher than the scale
type of the most primitive measurement [13*, c3s5]
scale, e.g., a manipulation involving an There are several methods for assessing
interval scale and a ratio scale can only be reliability; these include the test-retest
done as if both are interval scales and yields method, the alternative form method, the
no better than an interval scale result; split-halves method, and the internal
• investment is required to bring the most consistency method. The easiest of these is
primitive scale type up to being compatible the test-retest method. In the test-retest
with a higher scale type, e.g., effort is method, we simply apply the measurement
required to bring the interval scale up to also method to the same subjects twice. The
being a ratio scale so that the result can also correlation coefficient between the first and
be ratio scaled. second set of measurement results gives the
reliability of the measurement method.

1.1. Reliability and Validity


1.1. Goal-Question-Metric Paradigm:
[13*, c3s4-5] Why Measure?
A basic question to be asked for any The final concern about measurement is to
measurement method is whether the understand why we are measuring in the first
proposed measurement method is truly place. The Software Process KA chapter
measuring the concept with good quality. <<<TBD—should: reference the section if
Reliability and validity are the two most so>>> discuss the Goal-Question-Metric
important criteria to address this question. paradigm in more detail, but it can be
The reliability of a measurement method is summarized with the simple observation that
the extent to which the application of the a measurement should exist to support
measurement method yields consistent making one or more decisions. Some
measurement results. Essentially, reliability measurements support decisions in code.
refers to the consistency of the values Other measurements support decisions made
obtained when the same item is measured by people outside of code, e.g., process
several times. When the results agree with improvement measures. The critical point is
each other, the measurement method is said that some decision be made on that
to be reliable. Reliability usually depends on measurement. Many software metrics
the operational definition. It can be quantified programs in real-world software
by using the index of variation, which is organizations fall victim to a “measurement
computed as the ratio between the standard for the merely curious” syndrome, where
deviation and the mean. The smaller the metrics are gathered simply because they are
index, the more reliable the measurement easy to measure and interesting to look at
results. when plotted in graphs. Those measurements

Engineering Foundations TBD–17 ©


IEEE – SWEBOK Guide V4
are never used to support any decision and are such as protecting the buyer, protecting the
a waste of time and energy. They should be business, and better defining the methods and
avoided. procedures to be followed by the practice.
Standards also provide users with a common
terminology and expectations.
5. Standards
There are many internationally recognized
[3*, c9s3.2] standards-making organizations including
Moore states that a the International Telecommunications Union
(ITU), the International Electrotechnical
standard can be; (a) an object or measure
Commission (IEC), IEEE, and the
of comparison that defines or represents
International Organization for
the magnitude of a unit; (b) a
Standardization (ISO). In addition, there are
characterization that establishes
regional and governmentally recognized
allowable tolerances for categories of
organizations that generate standards for that
items; and (c) a degree or level of
region or country. For example, in the United
required excellence or attainment.
States, there are over 300 organizations that
Standards are definitional in nature,
develop standards. These include
established either to further
organizations such as the American National
understanding and interaction or to
Standards Institute (ANSI), the American
acknowledge observed (or desired)
Society for Testing and Materials (ASTM),
norms of exhibited characteristics or
the Society of Automotive Engineers (SAE),
behavior. [14, p8]
and Underwriters Laboratories, Inc. (UL), as
Standards provide requirements, well as the US government. For more detail
specifications, guidelines, or characteristics on standards used in software engineering,
that must be obeyed by engineers so that the see Appendix B on standards.
products, processes, and materials have
There is a set of commonly used principles
acceptable levels of quality. The qualities that
behind standards. Standards makers attempt
various standards provide may be those of
to have consensus around their decisions.
safety, reliability, or other product
There is usually an openness within the
characteristics. Standards are considered
community of interest so that once a standard
critical to engineers and engineers are
has been set, there is a good chance that it will
expected to be familiar with and to use the
be widely accepted. Most standards
appropriate standards in their discipline.
organizations have well-defined processes
Compliance or conformance to a standard for their efforts and adhere to those processes
allows an organization say to the public that carefully. Engineers must be aware of the
they (or their products) meet the existing standards but must also update their
requirements stated in that standard. Thus, understanding of the standards as those
standards divide organizations or their standards change over time.
products into those that conform to the
In many engineering endeavors, knowing and
standard and those that do not. For a standard
understanding the applicable standards is
to be useful, conformance must add value—
critical and the law may even require use of
real or perceived—to the product, process, or
specific standards. In these cases, the
effort.
standards often represent minimal
Apart from the organizational goals, requirements that must be met by the
standards are used for several other purposes endeavor and thus are an element in the

Engineering Foundations TBD–18 ©


IEEE – SWEBOK Guide V4
constraints imposed on any design effort. The • Cause-and-Effect diagrams, sometimes
engineer must review all current standards called Ishikawa diagrams [15] or Fishbone
related to a given endeavor and determine charts, break down, in successive levels of
which must be met. Their designs must then detail, causes that potentially contribute to an
incorporate any and all constraints imposed undesirable outcome. Causes are often
by the applicable standard. grouped into major categories such as people,
process, tools, materials, measurements, and
environment. The diagram takes the form of
6. Root Cause Analysis a tree of potential causes that can all result in
[3*, c9s3-5] [13*, c5, c3s7, c9s8] that undesirable outcome;

Root cause analysis (RCA) is a class of • Fault Tree Analysis (FTA) is a more formal
problem-solving methods aimed at approach to cause-and-effect diagramming
identifying underlying causes of undesirable which is more specific about and-or
outcomes. RCA methods identify why and relationships between causes and effects. In
how an undesirable outcome happened, some cases, any one of multiple causes can
allowing organizations to take effective drive the effect (an “or” relationship), in other
actions to prevent recurrence. Instead of cases a combination of multiple causes are
merely addressing immediately obvious required to drive the effect (an “and”
symptoms, problems can be solved by relationship). Cause-and-effect diagrams do
eliminating root causes. RCA can play not distinguish between and-or relationships,
several important roles on software projects, Fault tree analysis does;
including: • Failure Modes and Effects Analysis
• identify the real problem to be solved by an (FMEA) forward-chains, starting with
engineering effort; elements that can fail and cascades into the
undesirable effects that could result from
• expose the underlying drivers of risk when those failures. This contrasts with the
performing project risk assessments; backwards-chaining approaches above that
• reveal opportunities and actions for start from an undesirable outcome and work
software process improvement; backwards toward causes;
• discover sources of recurring defects (i.e., • Cause Map [16] is a structured map of
defect causal analysis). cause-effect relationships that includes an
undesirable outcome along with 1) chaining
backwards to driving causes and 2) chaining
6.1. Root Cause Analysis Techniques forward into effects on organizational goals.
Several RCA techniques exist, including: Cause maps demand evidence of the
occurrence of causes and the causality of
• Change Analysis compares situations where effects and are thus more rigorous than
an undesirable outcome happened with Cause-and-Effect diagrams, FTA, and
similar situations where it did not. The root FMEA;
cause is likely in the area of difference;
• Current Reality Tree [17] is a cause-effect
• 5-Whys (see, for example, [2*, c4]) starts tree bound by the rules of logic (i.e.,
with an undesirable outcome and uses Categories of Legitimate Reservation);
repeated “Why?” question-answer cycles to
isolate root cause; • Human Performance Evaluation posits that
human performance depends on 1) input

Engineering Foundations TBD–19 ©


IEEE – SWEBOK Guide V4
detection, 2) input understanding, 3) action
selection, and 4) action execution. An 3. Identify the root cause using one or more
undesirable outcome that results from human of the RCA techniques presented in X.1.
performance can be identified from a
comprehensive list of potential drivers that
includes, for example, cognitive overload, 4. Select corrective action(s) that 1) prevent
cognitive underload (i.e., boredom), memory recurrence, 2) are within the organization’s
lapse, tunnel vision or lack of a bigger ability to control, 3) meet organizational
picture, complacency, fatigue, etc. goals and objectives, 4) do not cause other
problems. More than one candidate
corrective action should be considered that
Additional techniques can be found in DOE- all either prevent the cause from happening,
NE-STD-1004-92 Root Cause Analysis reduce the probability of the cause
Guidance Document. happening, or disconnect the cause from the
effect. Selected corrective actions should
generate the greatest amount of control for
1.1. Root Cause-Based Improvement
the least cost.
RCA is often an element in a larger process
improvement effort. Why just identify a root
cause if nothing will be done about it? Why 5. Implement the selected corrective
go through the effort of identifying root cause action(s).
on low importance problems? An example of
a systematic process for a larger
improvement effort incorporating RCA is 6. Observe the selected corrective action(s) to
given below. ensure efficiency and effectiveness.

1. Select the problem to solve: techniques


such as Pareto Analysis (i.e., the “80/20
Rule”), Frequency-Severity Prioritization
(problems that happen most frequently and
consume the most resources to rectify are the
best candidates), Statistical Process Control,
etc. are used to identify a high priority
undesirable outcome to address. This step
needs to clearly define the problem and its
significance.

2. Gather evidence about that problem and its


cause(s): consider information surrounding
the selected undesirable outcome including,
for example, statements or testimony,
relevant processes or standards,
specifications, reports, historical trends,
experiments, or tests.

Engineering Foundations TBD–20 ©


IEEE – SWEBOK Guide V4
MATRIX OF TOPICS VS. REFERENCE MATERIAL
Tock Vola McC Mon Null Che Som Fair Kan
ey nd onne tgom and ney merv ley 2002
2004 2003 ll ery Lob and ille 200 [13*]
[2*] [3*] 2004 and ur Kin 2018 9
[6*] Run 200 caid [11*] [12*
ger 6 200 ]
2018 [9*] 7
[8*] [10*
]

1. The c4
Engineering
Process
2. c1s2-4
Engineering
Design
2.1 Design in
Engineering
Education
2.2 Design as c1s4, c5s1
a Problem c2s1,
Solving c3s3
Activity
3. Abstraction c5s2-4
and
Encapsulatio
n
3.1 Levels of
Abstraction
3.2
Encapsulation
3.3 Hierarchy
3.4 Alternate
Abstractions
4. Empirical c1
Methods and
Experimental
Techniques
4.1 Designed
Experiment
4.2
Observational
Study
4.3
Retrospective
Study
5. Statistical c9s1, c11s3
Analysis c2s1
5.1 Unit of c3s5,
Analysis c3s8,
(Sampling c4s5,
Units), c7s1,
c7s3,

Engineering Foundations TBD–21 ©


IEEE – SWEBOK Guide V4
Population, c8s1,
and Sample c9s1
5.2 Correlation c11s2,
and c11s8
Regression
6. Modeling, c6 c13s3 c5
Prototyping,
and
Simulation
6.1 Modeling
6.2 Simulation
6.3 c2s8
Prototyping
7. pp442- c4s4 c7s5 c3s1-2
Measurement 447
7.1 Levels p442- c7s5 c3s2
(Scales) of 447
Measurement
7.2
Implications of
Measurement
Theory on
Programming
Languages
7.3 Direct and c7s5
Derived
Measures
7.4 Reliability c3s4-5
and Validity
7.5 Assessing c3s5
Reliability
7.6 Goal- c3s5
Question-
Metric
Paradigm:
Why Measure?
8. Standards c9s3.2
9. Root Cause c9s3-5 c5,
Analysis c3s7,
c9s8
9.1 Root c4 c5
Cause
Analysis
Techniques
9.1 Root c4 c5
Cause-Based
Improvement

measurement method and measurement


FURTHER READINGS
outcome. It provides strong support material
A. Abran, Software Metrics and Software for the entire section on Measurement.
Metrology. [18]
This book provides very good information W.G. Vincenti, What Engineers Know and
on the proper use of the terms measure, How They Know It. [19]

Engineering Foundations TBD–22 ©


IEEE – SWEBOK Guide V4
This book provides an interesting [11*] I. Sommerville, Software
introduction to engineering foundations Engineering, 10th ed. New York:
through a series of case studies that show Addison-Wesley, 2018.
many of the foundational concepts as used [12*] R. E. Fairley, Managing and Leading
in real world engineering applications. Software Projects. Hoboken, NJ:
Wiley-IEEE Computer Society
Press, 2009.
REFERENCES [13*] S. H. Kan, Metrics and Models in
[1] IEEE/ISO/IEC, "IEEE/ISO/IEC Software Quality Engineering, 2nd
24765: Systems and Software ed. Boston: Addison-Wesley, 2002.
Engineering - Vocabulary," 1st ed, [14] J. W. Moore, The Road Map to
2010. Software Engineering: A Standards-
[2*] S. Tockey, Return on Software: Based Guide, 1st ed. Hoboken, NJ:
Maximizing the Return on Your Wiley-IEEE Computer Society
Software Investment, 1st ed. Boston: Press, 2006.
Addison-Wesley, 2004. [15] K. Ishikawa, Introduction to Quality
[3*] G. Voland, Engineering by Design, Control, Productivity Press, 1990.
2nd ed. Upper Saddle River, NJ: [16] D. Gano, Apollo Root Cause Analysis,
Prentice Hall, 2003. 3rd Ed., Apollonian Publications,
[4] "2021 Accreditation Criteria and 2007.
Procedures," Canadian Engineering [17] E. Goldratt, It’s Not Luck, North River
Accreditation Board, Engineers Press, 1994.
Canada, 2021. [18] A. Abran, Software Metrics and
[5] E. A. Commission, "Criteria for Software Metrology: Wiley-IEEE
Accrediting Engineering Programs, Computer Society Press, 2010.
2022-2023," ABET, 2021. [19] W. G. Vincenti, What Engineers
[6*] S. McConnell, Code Complete, 2nd Know and How they Know It: John
ed. Redmond, WA: Microsoft Press, Hopkins University Press, 1993.
2004.
[7] Edsgar W. Dijkstra, The Humble
Programmer, Communications of the
ACM, vol 15, issue 10, October,
1972.
[8*] D. C. Montgomery and G. C.
Runger, Applied Statistics and
Probability for Engineers, 7th ed.
Hoboken, NJ: Wiley, 2018.
[9*] L. Null and J. Lobur, The Essentials
of Computer Organization and
Architecture, 5th ed. Sudbury, MA:
Jones and Bartlett Publishers, 2018.
[10*] E. W. Cheney and D. R. Kincaid,
Numerical Mathematics and
Computing, 6th ed. Belmont, CA:
Brooks/Cole, 2007.

Engineering Foundations TBD–23 ©


IEEE – SWEBOK Guide V4
APPENDIX A

KNOWLEDGE AREADESCRIPTION
SPECIFICATIONS

INTRODUCTION The SWEBOK Guide is an IEEE Computer


Society flagship and structural document for
This appendix presents the specifications the IEEE Computer Society’s suite of
provided to the Knowledge Area (KA) editors software engineering products. The SWEBOK
regarding the KA Descriptions of the Guide is also more widely recognized as a
Guide to the Software Engineering Body of foundational document throughout the
Knowledge, Version 4 (SWEBOK Guide, V4). software engineering community, notably
This enables readers, reviewers and users to through the official recognition of the 2004
clearly understand what specifications were and 2014 versions as ISO/IEC Technical
used in developing this version of the Report 19759:2005 and 19759:2015,
SWEBOK Guide. respectively. The list of KAs and the
breakdown of topics within each are
This appendix begins by situating the described and detailed in this SWEBOK
SWEBOK Guide as a foundational document Guide’s introduction. Consequently, the
for the IEEE Computer Society’s suite of SWEBOK Guide is foundational to other
software engineering products and more initiatives within the IEEE Computer Society,
widely within the software engineering as follows:
community. The appendix then describes the • The list of KAs and the breakdown of
role of the baseline and the Change Control topics within each are also adopted by the
Board. Criteria and requirements are defined software engineering certification and
for the breakdowns of topics, for the rationale associated professional development
underlying these breakdowns and the succinct products offered by the IEEE Computer
description of topics, and for reference Society. (See www.
materials. Important input documents are also computer.org/certification.)
identified, and their role within the project is • The list of KAs and the breakdown of
explained. Finally, non-content issues such as topics are also foundational to the
submission format and style guidelines are software engineering curriculum
discussed. guidelines developed or endorsed by the
IEEE Computer Society. (See
THE SWEBOK GUIDE IS A www.computer.org/portal/web/educatio
FOUNDATIONAL DOCUMENT FOR n/Curricula.)
THE IEEE COMPUTER SOCIETY • The Consolidated Reference List (see
SUITE OF SOFTWARE ENGINEERING Appendix C) — meaning the list of
PRODUCTS Recommended References (to the level
of section number) that accompanies the
breakdown of topics within each KA —
BOK® Guide V3.0

is also adopted by the software • The breakdown of topics within a KA


engineering certification and associated must not presume specific application
professional development products domains, business needs, sizes of
offered by the IEEE Computer Society. organizations, organizational structures,
management philosophies, software life
BASELINE AND CHANGE CONTROL cycle models, software technologies or
software development methods.
Due to the structural nature of the SWEBOK • The breakdown of topics must, as much
Guide and its adoption by other products, a as possible, be compatible with the
baseline was developed at the outset of the various schools of thought within
project by a SWEBOK Steering Group. The software engineering.
baseline comprises the list of KAs, including • The breakdown of topics within a KA
new ones, and the breakdown of topics for must be compatible with the breakdown
each KA from the previous version. of software engineering generally found
in industry and in the software
Furthermore, a SWEBOK KA editors team engineering literature and standards.
has been put in place for the development of
• The breakdown of topics is expected to
this version to handle all major change
be as inclusive as possible.
requests to this baseline coming from the KA
• The SWEBOK Guide adopts the position
editors, arising during the review process or
that even though the following “themes”
otherwise. Change requests must be approved
are common across all KAs, they are also
both by the SWEBOK Guide editors and by
an integral part of all KAs and, therefore,
the team before being implemented. The team
must be incorporated into the proposed
is composed of members of the initiatives
breakdown of topics of each KA. These
listed above and acts under the authority of
common themes are measurement,
the Engineering Discipline Committee of the
quality (in general) and security.
IEEE Computer Society Professional and
• The breakdown of topics should be at
Educational Activities Board (PEAB).
most two or three levels deep. Even
though no upper or lower limit is imposed
CRITERIA AND REQUIREMENTS
FOR on the number of topics within each KA,
THE BREAKDOWN OF TOPICS a reasonable and manageable number of
WITHIN A KNOWLEDGE AREA topics is expected to be included in each
KA. Emphasis should also be put on the
selection of the topics themselves rather
• KA editors are instructed to refine the than on their organization in an
baseline breakdown of topics to reflect appropriate hierarchy.
the recent development in the target area • Topic names must be significant enough
for KAs that continue to exist from the to be meaningful even when cited outside
previous version. the SWEBOK Guide.
• The breakdown of topics is expected to • The Description of a KA will include a
be “reasonable,” not “perfect.” chart (in tree form) describing the
• The breakdown of topics within a KA knowledge breakdown. This chart will
must decompose the subset of the typically be the first figure in the
SWEBOK that is “generally recognized.” respective KA.
(See below for a more detailed discussion
of this point.)
Appendix A A-3

CRITERIA AND REQUIREMENTS FOR • Criteria and requirements for


DESCRIBING TOPICS recommended reference material or
Topics need only be sufficiently described so Consolidated Reference List:
readers can select the appropriate reference » Collectively, the list of Recommended
material according to their needs. Topic References should be:
descriptions must not be prescriptive. i. Complete — covering the entire
scope of the SWEBOK Guide
CRITERIA AND REQUIREMENTS FOR ii. Sufficient — providing enough
REFERENCE MATERIAL information to describe
“generally accepted”
• KA editors are instructed to use the knowledge
references (to the level of section iii. Consistent — not providing
number) allocated to their KA by the contradictory knowledge or
Consolidated Reference List as their conflicting practices
Recommended References. iv. Credible — recognized as
• There are three categories of reference providing expert treatment
material: v. Current — treating the subject
1. Recommended References. The set of in a manner that is
Recommended References (to the commensurate with current,
level of section number) is collectively generally accepted knowledge
known as the Consolidated Reference vi. Succinct — as short as possible
List. (both in the number of reference
2. Further Reading. items and in total page count)
3. Additional references cited in the KA without failing other objectives
Description (e.g., the source of a » Recommended reference material must
quotation or reference material in be identified for each topic. Each
support of a rationale behind a recommended reference item may, of
particular argument). course, cover multiple topics. Rarely, a
• The SWEBOK Guide is intended by topic may be self-descriptive and not
definition to be selective in its choice of cite a reference material item (e.g., a
topics and associated reference material. topic that is a definition or a topic for
The list of reference material should be which the description itself without any
clearly viewed as an “informed and cited reference material is sufficient for
reasonable selection” rather than as a the objectives of the SWEBOK Guide).
definitive list. » Each reference to the recommended
• Reference material can be book chapters, reference material should be as precise
refereed journal papers, refereed as possible, identifying what specific
conference papers, refereed technical or chapter or section is relevant.
industrial reports, or any other type of
» A matrix of reference material (to the
recognized artifact. References to another
level of section number) versus topics
KA, subarea or topic are also permitted.
must be provided.
• Reference material must be generally
available and must not be confidential in » The latest versions or editions should be
nature. used as the Recommended References
if there are multiple versions or
• Reference material must be in English.
editions.
BOK® Guide V3.0

» A reasonable amount of recommended why each reference was included.


reference material must be identified Further Reading could include
for each KA. The following guidelines alternative viewpoints on a KA or a
should be used in determining how seminal treatment of a KA.
much is reasonable: » A general guideline to be followed is
i. If the recommended reference 10 or fewer further readings per KA.
materials are written in a
coherent manner, follow the » There is no matrix of the reference
proposed breakdown of topics, materials listed in Further Reading
and use a consistent style (e.g., and the breakdown of topics.
list a new book based on the • Criteria and requirements regarding
proposed KA description), an additional references cited in the KA
average page number target Description:
across all KAs would be 750. » The SWEBOK Guide is not a research
However, this target may not be document, and its readership will be
attainable when selecting varied. Therefore, a delicate balance
existing reference material due must be maintained between
to differences in style and to ensuring a high level of readability
overlap and redundancy among within the document and
the selected reference maintaining its technical excellence.
materials. Additional reference material
ii. In other words, the target for should, therefore, be brought in by
the number of pages for the the KA editor only if it is necessary
entire collection of to the discussion. For example, the
Recommended References in reference material might identify the
the SWEBOK Guide is in the source of a quotation or offer support
range of 10,000 to 15,000 for the rationale behind an important
pages. argument.
iii. Another way of viewing this is
that the amount of COMMON STRUCTURE
recommended reference
material would be reasonable if KA Descriptions should use the following
it consisted of the study structure:
material for this KA for a
software engineering licensing • Abbreviations
exam that a graduate would • Introduction
pass after completing four • Breakdown of Topics of the KA
years of work experience. (including a figure describing the
breakdown)
• Additional reference material can be
included by the KA editor in a “Further • Matrix of Topics vs. Reference Material
Reading” list: • List of Further Reading
• References
» These materials must be related to the
topics in the breakdown rather than,
for example, to more advanced
WHAT DO WE MEAN BY
topics.
“GENERALLY RECOGNIZED
» The list must be annotated (one KNOWLEDGE”?
paragraph per reference) to explain
Appendix A A-5

The Software Engineering Body of KA editors are also expected to be somewhat


Knowledge is an all-inclusive term that forward-looking in their interpretation by
describes the sum of knowledge within the taking into consideration not only what is
profession of software engineering. However, “generally recognized” today but also what
the SWEBOK Guide seeks to identify and they expect will be “generally recognized” in
describe that subset of the body of knowledge a three- to five-year time frame.
that is generally recognized or, in other
words, the core body of knowledge. To better Generally Recognized
illustrate what “generally recognized” Established traditional
knowledge is relative to other types of practices recommended by
knowledge, Figure A.1 proposes a three- many
category schema for classifying knowledge. organizations
Certain Types
Practices Used of
Special Advanced and Research
Innovative practices tested
The Project Management Institute, in its
Guide and used only by some
to the Project Management Body of Knowled organizations and concepts
ge, defines “generally recognized” still being developed and
knowledge for project management as: tested in research
organizations
that subset of the project management
body of knowledge generally
recognized as good practice.
Figure A.1. Categories of Knowledge
“Generally recognized” means the
knowledge and practices described are
applicable to most projects most of the
time, and there is consensus about their LENGTH OF KA DESCRIPTION
value and usefulness. “Good practice”
means there is general agreement that KA Descriptions are to be roughly 10 to 20
the application of these skills, tools, pages using the formatting template for
and techniques can enhance the papers published in conference proceedings
chances of success over a wide range of the IEEE Computer Society. This includes
of projects. “Good practice” does not text, references, appendixes, tables, etc. This,
mean that the knowledge described of course, does not include the reference
should always be applied uniformly to materials themselves.
all projects; the organization and/or
project management team is IMPORTANT RELATED DOCUMENTS
responsible for determining what is
appropriate for any given project [1]. 1. Graduate Software Engineering 2009
(GSwE2009): Curriculum Guidelines for Gr
“Generally accepted” knowledge could also aduate Degree Programs in Software Engine
be viewed as knowledge to be included in the ering, 2009 [2].
study material of a software engineering
licensing exam (in the US) that a graduate This document “provides guidelines and
would take after completing four years of recommendations” for defining the curricula
work experience. These two definitions of a professional master’s-level program in
should be seen as complementary. software engineering. The SWEBOK Guide is
identified as a “primary reference” in
BOK® Guide V3.0

developing the body of knowledge 4. “ISO/IEC/IEEE 24765:2017 Software and


underlying these guidelines. This document Systems Engineering — Vocabulary,”
has been officially endorsed by the IEEE ISO/IEC/IEEE, 2017;
Computer Society and sponsored by the https://www.computer.org/sevocab [5].
Association for Computing Machinery.
The hierarchy of references for terminology
2. ISO/IEC/IEEE 12207- is Merriam-Webster’s Collegiate Dictionary
2017 Standard for Systems and Software En (11th ed.) [6], IEEE/ISO/IEC 24765 [5] and
gineering — Software Life Cycle Processes, newly proposed definitions, if required.
ISO/IEC/IEEE, 2017 [3].
5. “Software Professional Certification
This standard is considered the key standard Program,” IEEE Computer Society;
regarding the definition of life cycle https://www.computer.org/education/certifi
processes and has been adopted by the two cations [7].
main standardization bodies in software
engineering: ISO/IEC JTC1/SC7 and the Information on the certification and
IEEE Computer Society Software and associated professional development
Systems Engineering Standards Committees. products developed and offered by the IEEE
It also has been designated a pivotal standard Computer Society for professionals in the
by the Software and Systems Engineering field of software engineering can be found on
Standards Committee (S2ESC) of the IEEE. this website. The SWEBOK Guide is
foundational to these products.

Even though we do not intend the SWEBOK OTHER DETAILED GUIDELINES


Guide to be fully 12207-conformant, this
standard remains a key input to the SWEBOK When referencing the Guide to the
Guide, and special care will be taken Software Engineering Body of Knowledge,
throughout the SWEBOK Guide regarding the use the title SWEBOK Guide.
compatibility of the Guide with the 12207
standard. For the purpose of simplicity, avoid footnotes,
and try to include their content in the main
3. text.
“Software Engineering 2014: Curriculum Gu
idelines for Undergraduate Degree Programs Use explicit references to standards, as
in Software Engineering,” IEEE Computer opposed to simply inserting numbers
Society and Association for Computing referencing items in the bibliography. We
Machinery, 2015; believe this approach allows the reader to be
https://www.acm.org/binaries/content/assets/ better exposed to the source and scope of a
education/se2014.pdf [4]. standard.

This document describes curriculum The text accompanying figures and tables
guidelines for an undergraduate degree in should be self-explanatory or have enough
software engineering. The SWEBOK Guide is related text. This ensures that the reader
identified as “one of the primary sources” in knows what the figures and tables mean.
developing the body of knowledge
underlying these guidelines. To make sure that some information in the
SWEBOK Guide does not become rapidly
obsolete and in order to reflect its generic
Appendix A A-7

nature, please avoid directly naming tools and https://dl.acm.org/doi/book/10.1145/2593248


products. Instead, try to name their functions. .

EDITING [3] ISO/IEC/IEEE 12207-2017


Systems and Software Engineering —
Editors of the SWEBOK Guide, as well as Software Life Cycle Processes, 2017.
professional copy editors, will edit KA
Descriptions. Editing includes copy editing [4] Joint Task Force on Computing
(grammar, punctuation and capitalization), Curricula, IEEE Computer Society and
style editing (conformance to the Computer Association for Computing Machinery,
Society style guide), and content editing “Software Engineering 2014: Curriculum Gu
(flow, meaning, clarity, directness and idelines for Undergraduate Degree Programs
organization). The final editing will be a in Software Engineering, 2015”;
collaborative process in which the editors of https://www.acm.org/binaries/content/assets/
the SWEBOK Guide and the KA editors will education/se2014.pdf.
work together to achieve a concise, well-
worded and useful KA Description. [5]
ISO/IEC/IEEE 24765:2017 Systems
RELEASE OF COPYRIGHT and Software Engineering — Vocabulary,
2nd Edition, ISO/ IEC/IEEE, 2017.
All intellectual property rights associated
with the SWEBOK Guide will remain with the [6] Merriam-
IEEE. KA editors must sign a copyright Webster’s Collegiate Dictionary, 11th ed.,
release form. 2003.

It is also understood that the SWEBOK Guide [7] IEEE Computer Society,
will continue to be available free of charge in “Certification and Training for Software
the public domain in at least one format, Professionals,” 2013;
provided by the IEEE Computer Society https://www.computer.org/education/certific
through web technology or by other means. ations.

(For more information, see


www.computer.org/copyright.htm.)

REFERENCES
[1] Project Management Institute,
A Guide to the Project Management Body of
Knowledge (PMBOK® Guide), 7th ed.,
Project Management Institute, 2021.

[2] Integrated Software and Systems


Engineering Curriculum (iSSEc) Project,
Graduate Software Engineering 2009 (GSwE
2009): Curriculum Guidelines for Graduate
Degree Programs in Software Engineering,
Stevens Institute of Technology, 2009;
IEEE.org

IEEE CS Standards

Jobs Board

About Us

Subscribe to Newsletter

 0 Sign In

MEMBERSHIP  CONFERENCES  PUBLICATIONS  EDUCATION & CAREER 

JOIN US (/membership/join)
VOLUNTEER  ABOUT  

Home (/) / Volunteering (/volunteering) / Boards and Committees (/volunteering/boards-and-committees) / Professional Educational
Activities (/volunteering/boards-and-committees/professional-educational-activities) / Software Engineering Committee
(/volunteering/boards-and-committees/professional-educational-activities/software-engineering-committee)

SWEBOK Evolution

IEEE-CS SWEBOK V4 Public Review (3rd Batch)

The IEEE Computer Society Professional & Educational Activities Board (PEAB) SWEBOK
Evolution Team seeks public review comments for Version 4 of the Guide to the Software
Engineering Body of Knowledge (SWEBOK). This Guide spells out components of the
software engineering discipline, promoting a consistent view of software engineering
worldwide.

The newest version of the SWEBOK Guide includes new topic areas, updated topic
descriptions, and the retirement of no longer relevant topics. Especially, agile (and DevOps)
have been incorporated into many knowledge areas (KAs) since these models have been
widely accepted since the last publication of SWEBOK. Three new knowledge areas (i.e.,
Software Architecture, Software Engineering Operations, and Software Security) guide
foundational knowledge in software engineering. The new Guide will better integrate the
related disciplines and rename and distribute some material into different knowledge areas.
V4’s table of contents is shown in the following figure.

Software practitioners worldwide participate in the Guide’s development to ensure that it


captures established traditional practices recommended by many organizations. The
SWEBOK Guide uses a rigorous process that includes successive levels of review. Each of
the seventeen KAs will be published as they become available for review.

Drafts of the following knowledge areas are now available for review: Introduction,
Software Operations KA, Software Maintenance KA, Software Configuration Management
KA, Software Engineering Process KA, Software Engineering Models and Methods KA,
Computing Foundations KA, and Appendix A Knowledge Area Description Specifications.
Please review the drafts, and input your comments in the following form by December
13th, 2022. The input data will be used for SWEBOK V4 editing purposes only. If you have
more than five comments, please use the following form multiple times. Please note that all
chapters will be finally edited and layout consistently and adequately.

Please let us know if you have questions about this review procedure at swebok-
contact@list.waseda.jp (mailto:swebok-contact@list.waseda.jp) (Hironori Washizaki, IEEE
Computer Society 1st Vice President 2023, SWEBOK V4 Evolution Team Chair).

SWEBOK V4 Public Review Form (3rd batch): https://forms.gle/9exCgVSFh89esGTh7


(https://forms.gle/9exCgVSFh89esGTh7)
SWEBOK V4 Drafts in PDF: https://waseda.box.com/v/ieee-cs-swebok
(https://waseda.box.com/v/ieee-cs-swebok)
Reference: SWEBOK V3 https://www.computer.org/education/bodies-of-
knowledge/software-engineering (https://www.computer.org/education/bodies-of-
knowledge/software-engineering) and http://swebokwiki.org/Main_Page
(http://swebokwiki.org/Main_Page)

Sign up for our newsletter.

EMAIL ADDRESS

(https://www.facebook.com/ieeecomputersociety)
(https://www.twitter.com/computersociety)
(https://www.linkedin.com/company/8433838?
(https://www.instagram.com/ieee_computer_society/)
(http://www.youtube.com/user/ieeeComputerSociety)
trk=vsrp_companies_res_name&trkInfo=VSRPsearchId%3A33726151422570149105%2CVSRPtargetId%3A843383

IEEE COMPUTER SOCIETY

About Us (https://www.computer.org/about)

Board of Governors (/volunteering/board-of-governors)

Newsletters (https://www.computer.org/resources/newsletters)

Press Room (https://www.computer.org/press-room)

IEEE Support Center (https://supportcenter.ieee.org/)

Contact Us (https://www.computer.org/about/contact)

DIGITAL LIBRARY

Magazines (https://www.computer.org/csdl/magazines)

Journals (https://www.computer.org/csdl/journals)

Conference Proceedings (https://www.computer.org/csdl/proceedings)

Video Library (https://www.computer.org/csdl/video-library)

Librarian Resources (https://www.computer.org/digital-library/librarian-resources)

COMPUTING RESOURCES

Jobs Board (https://jobs.computer.org/)


Courses & Certifications (https://www.computer.org/education)

Webinars (https://www.computer.org/video-library)

Podcasts (https://www.computer.org/resources/podcasts)

Tech News (https://www.computer.org/publications/tech-news)

Membership (https://www.computer.org/membership/)

COMMUNITY RESOURCES

Governance (https://www.computer.org/volunteering/boards-and-committees/resources)

Conference Organizers (https://www.computer.org/conferences/organize-a-conference/organizer-resources)

Authors (https://www.computer.org/publications/author-resources)

Chapters (https://www.computer.org/communities/professional-chapters/resources)

Communities (https://www.computer.org/communities)

BUSINESS SOLUTIONS

Corporate Partnerships (https://www.computer.org/corporate-programs)

Conference Sponsorships & Exhibits (https://www.computer.org/advertising-and-sponsorship-opportunities/conference-sponsorship-and-exhibit-sales?source=advertise)

Advertising (https://www.computer.org/advertising-and-sponsorship-opportunities)

Recruiting (https://www.computer.org/advertising/recruitment)

Digital Library Institution Subscriptions (https://www.computer.org/digital-library/institutional-subscriptions)

POLICIES

Privacy (https://www.ieee.org/security-privacy.html)

Accessibility Statement (https://www.ieee.org/accessibility-statement.html)

IEEE Nondiscrimination Policy (https://www.ieee.org/nondiscrimination)

XML Sitemap (https://www.computer.org/sitemap.xml)

©IEEE — All rights reserved. Use of this website signifies your agreement to the IEEE Terms and Conditions.

A not-for-profit organization, the Institute of Electrical and Electronics Engineers (IEEE) is the world's largest technical professional organization dedicated to advancing technology for the benefit of
humanity.

You might also like