Professional Documents
Culture Documents
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
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.
Introduction 0–5 ©
IEEE – SWEBOK Guide V3
CHAPTER 1
SOFTWARE REQUIREMENTS
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
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].)
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.
● 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].)
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.
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
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
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
● 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.
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].)
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
FURTHER READING
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.
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.
[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.
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.
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.)
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
● 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.
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.
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
3. Practical Considerations
3.1. Construction Design c3, c5, c24 c7
4.11. Middleware c1 c8
HIL Hardware-In-the-Loop
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.
[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]
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.
1.2.3. Prioritization/Minimization
2.2.7. Non-functional testing c8s7, c8s8, c14s2, c15, c8, c 11, c17
c17s2
3.1.10. Evidence-Based
3.6. Techniques Based on the Nature of the Application c16, c17, c18, c4s8
c20, c21
5. Test Process c8
6. Software Testing in the Development Processes and the c8, c15 c4s8, c7
Application Domains
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
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
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 Configuration
Management
Surveillance of
Software Configuration
Management
SCM Measures and
Measurement
In-Process Audits of
SCM
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
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]
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.
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.
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.
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
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 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
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
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
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 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
Organization
Security
and Processes
4.1. Security Requirements Ch. 3 Ch. 2 Ch. 20, Ch. 31 Ch. 5, Ch. 8
4.5. Security Testing Ch. 5 Ch. 24, Ch. 31 Ch. 10, Ch. 11
Tools
6. Domain-Specific Software
Security
● [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.
CHAPTER 14
INTRODUCTION
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
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
REFERENCES
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
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
Identifying and characterizing intangible assets are Figure 15.3. The Engineering Decision-Making
Process
discussed in more detail later in this KA.
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
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
• 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
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.
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.
𝟐
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
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
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
Tockey 2005
Sommerville 2016 Fairley 2009
[3*]
[10*] [22*]
Tockey 2005
Sommerville 2016 Fairley 2009
[3*]
[10*] [22*]
6. Multiple-Attribute Decision-Making
Software Engineering Economics 15-21
Tockey 2005
Sommerville 2016 Fairley 2009
[3*]
[10*] [22*]
8. Estimation
9. Practical Considerations
15-22 SWEBOK® Guide V4.0
Tockey 2005
Sommerville 2016 Fairley 2009
[3*]
[10*] [22*]
10.3. Finance
10.4. Controlling
10.9. Program
10.10. Portfolio
10.14. Prioritization
Software Engineering Economics 15-23
[27].
Acronym Definitions
AI Artificial Intelligence
ML Machine Learning
ALU
Input Devices Output Devices
Control Unit
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).
• •
Resume S3
• •
• ●
• ● Resume S1
●
● •
•
Memory Each computer has its own memory. Computers can have shared or
distributed memory.
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)
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)
Set, Finite
Basic Number Discrete Algebraic
Relation, State
Logic Theory Probability Structures
Function Machine
Numerical
Proof Graph and Basics of Precision,
Grammar Calculus
Techniques Tree Counting Accuracy,
and Error
Proof by
Induction
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.
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
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
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
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?
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
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.
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
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,
KNOWLEDGE AREADESCRIPTION
SPECIFICATIONS
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
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.
REFERENCES
[1] Project Management Institute,
A Guide to the Project Management Body of
Knowledge (PMBOK® Guide), 7th ed.,
Project Management Institute, 2021.
IEEE CS Standards
Jobs Board
About Us
Subscribe to Newsletter
0 Sign In
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
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.
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).
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
About Us (https://www.computer.org/about)
Newsletters (https://www.computer.org/resources/newsletters)
Contact Us (https://www.computer.org/about/contact)
DIGITAL LIBRARY
Magazines (https://www.computer.org/csdl/magazines)
Journals (https://www.computer.org/csdl/journals)
COMPUTING RESOURCES
Webinars (https://www.computer.org/video-library)
Podcasts (https://www.computer.org/resources/podcasts)
Membership (https://www.computer.org/membership/)
COMMUNITY RESOURCES
Governance (https://www.computer.org/volunteering/boards-and-committees/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
Advertising (https://www.computer.org/advertising-and-sponsorship-opportunities)
Recruiting (https://www.computer.org/advertising/recruitment)
POLICIES
Privacy (https://www.ieee.org/security-privacy.html)
©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.