# Errata

## Errata for Fundamentals of Software Architecture

The errata list is a list of errors and their corrections that were found after the product was released. If the error was corrected in a later version or reprint the date of the correction will be displayed in the column titled "Date Corrected".

The following errata were submitted by our customers and approved as valid errors by the author or editor.

Color key: Serious technical mistake Minor technical mistake Language or formatting error Typo Question Note Update

Version Location Description Submitted By Date submitted Date corrected
, Other Digital Version
Page chapter 6
Cyclomatic Complexity sidebar

The number of nodes and edges in Figure 6-1 doesn't match up with the equations in the Cyclomatic Complexity sidebar.

In Chapter 6 in the Cyclomatic Complexity sidebar in Figure 6-1 there are 5 nodes identified and 4 edges identified (N = 5, E = 4). If you plug that into the given formula CC=E−N+2 you get:
CC = 4 - 5 + 2
which equals 1. A Cyclomatic Complexity of 1 is not correct.

The text before Figure 6-1 swaps E and N (if you get E and N from the figure) and as a result the correct Cyclomatic Complexity of 3 is arrived at:
"The cyclomatic complexity for Example 6-1 is 3 (=5 – 4 + 2); the graph appears in Figure 6-1."

I'm not sure exactly how the diagram and equation should be changed, but using this definition from Wikipedia makes more sense to me than trying to use the equation CC=E−N+2:
"The cyclomatic complexity of a section of source code is the number of linearly independent paths within it—where "linearly independent" means that each path has at least one edge that is not in one of the other paths. "

There are three linearly independent paths in the code provided, so the Cyclomatic Complexity is 3.

I noticed this by using Figure 6-1 to count the edges and nodes and then plugging that into the equation.

Note from the Author or Editor:
The Errata is correct—the math is correct for the code shown, the graph is incorrect. It shows several lines of code (nodes) broken up as return statements, which artificially inflates the number of nodes.

Steve Taggart  Feb 18, 2020  Jun 12, 2020
chapter 17
Choreography and Orchestration

"microkernal" should be "microkernel".

Note from the Author or Editor:
Good catch! It's a common misspelling that I'm surprised no one caught.

Chris Mann  Apr 25, 2020  Jun 12, 2020
Printed, PDF
Page all images
all images

Majority of the text items shown in the print and PDF titles images are so small, even zooming in does not help in the readability of said images, and look to be in color when printed black and white. Can we either upload the images used somewhere so we can download and blow them up to original sizes intended for viewing in a legible format? Strong examples of this are figures 1-1 and 1-2

Anonymous  May 12, 2020  Jun 12, 2020
i
last paragraph in preface

"This book won’t make someone a software architecture overnight"

Michael Easter  May 18, 2020  Jun 12, 2020
Many paragraphs down

"Yet consider the internet protocol UDP, which underlies TCP". Not true. UDP and TCP are independent protocols at the transport layer.

learning.oreilly.com/library/view/fundamentals-of-software/9781492043447/ch04.xhtml#ch-architecture-characteristics-defined

Note from the Author or Editor:
Corrected (wrong acronym)

Anonymous  May 06, 2021
Page Introduction
Toward that end, we’re going assume a baseline of Agile methodologies

The word "to" is missing between "going" and "assume". Should be "...we're going to assume a baseline..."

Note from the Author or Editor:
repaired in Atlas

Milla Zagorski  Nov 13, 2021
Page Under section: Choosing the Appropriate Architecture Style
In the paragraph of: What communication styles between services

Synchronous communication is more convenient in most cases, but it can lead to scalability, reliability, and other undesirable characteristics.

Scalability and reliability are not undesirable. The sentence could be:

... it can lead to *lack of* scalability, reliability, and other *desirable* characteristics.

Note from the Author or Editor:
reworded (in Atlas) to make it clearer

Page Throughout the text
various pages

There are a variety of Typos, redundancies and missing words. Please review the following:

1.
Current Copy
example, an architect may identify page load time as an importance characteristic of the architecture. To allow the system to change

Suggested
"an importance characteristic of the architecture." should be "an important characteristic of the architecture."

2.
Current Copy
it’s only a matter of time. Toward that end, we’re going assume a baseline of Agile methodologies throughout and call out exceptions

Suggested
"we’re going assume a baseline of Agile" should be "we’re going to assume a baseline of Agile"

3.
Current Copy
Functions”. Notice that the previously mentioned book by Edward Yourdon and and Larry Constantine (Structured Design: Fundamentals of a Discipline of Computer

Suggested
"book by Edward Yourdon and and Larry Constantine" should be "book by Edward Yourdon and Larry Constantine"

4.
Current Copy
Don’t obsess over the number of charateristics, but rather the motivation to keep design simple.

Suggested
"over the number of charateristics," should be "over the number of characteristics,"

5.
Current Copy
exists for documenting software architecture. That’s where ADRs come in. Architecture Decision Records can be used an an effective means to document a software architecture. The Context section of an

Suggested
"Architecture Decision Records can be used an an effective means" should be "Architecture Decision Records can be used as an effective means"

6.
Current Copy
Use of pub/sub between services The ADR for this architecture decision might look simliar to Figure 19-5: Figure 19-5.

Suggested
"architecture decision might look simliar" should be "architecture decision might look similar"

Note from the Author or Editor:
fixed in Atlas

Anonymous  Mar 17, 2022
Page Page 270 - Chapter 18, Decision Criteria
Page 270 - 2rd paragraph, last sentence

Page 270 - 2nd paragraph, last sentence:
"This is a highly coupled problem that will present ... in a decoupled architecture; a less coupled architecture like service-based architecture would suit this problem better."
Should the word "less" be replaced by "more" here?
Thanks for clarification.

Note from the Author or Editor:
fixed.

Siqi Dong  Sep 23, 2022
Page Chapter 12. Microkernel Architecture Style
'Core System' section, second codelet box

```
public void assessDevice(String deviceID) {
...
DevicePlugin devicePlugin =
(DevicePlugin)constructor.newInstance();
DevicePlugin.assess();
}
```

last statement is `DevicePlugin.access();`, like it calls class static method, but I think it should be `devicePlugin.access();`, which calls instance method.

Note from the Author or Editor:
confirmed; fixed.

Jeongsoo Park  Nov 23, 2022
Printed
Page 18
2nd paragraph last line

“Chapter 3” reference should be Chapter 7 - where architectural quantum is defined (page 92)

Anonymous  Sep 07, 2020  Nov 06, 2020
PDF
Page 35
table 2-1

Are the trad-offs for queues missing?

Note from the Author or Editor:
fixed

Jørgen Lang  Apr 17, 2020  Nov 06, 2020
Printed
Page 46
Par. 4

The text claims that all ratios are between zero and one!
5/2, 14/3, 152/7 and so on are all surprised to hear this.

Note from the Author or Editor:
Fixed.

Gene Callahan   Dec 13, 2020  Feb 12, 2021
Printed
Page 48
Chapter 3, below 'Limitation of metrics' square

Edward Yourdon AND AND Larry...
‘and’ is doubled.

Note from the Author or Editor:
fixed

Istvan  Nov 23, 2020  Feb 12, 2021
Printed, PDF
Page 52
2nd para, 1st sentence

Original: Multiple *entities* must agree on the order of values.
Fix: Multiple *components* must agree on the order of values.

Jørgen Lang  Jul 05, 2020  Nov 06, 2020
Printed
Page 52
Paragraph 6, 2nd line (Dynamic connascence section, first paragraph)

In the line containing
...which analyses calls at runtime...

I think that "analyses" should be "analyzes"

Anonymous  Sep 11, 2020  Nov 06, 2020
Printed
Page 53
Fourth paragraph, first line.

Description of Connascence of Identity is same as description of Connascence of Value. What is correct description.

Note from the Author or Editor:
Connascence of Identity occurs when multiple components must reference the same entity.

Anonymous  Sep 11, 2020  Nov 06, 2020
Page 57
1st para

'... cases surrounding payment in a example system:' to ' ... cases surrounding payment in an example system:'

Note from the Author or Editor:
fixed in Atlas

Ding Fei  Dec 26, 2021
Printed
Page 60
Box

The text says “what happens if we loose Italy?” instead of “lose.”

Note from the Author or Editor:
Fixed.

Gene Callahan  Dec 13, 2020  Feb 12, 2021
Printed
Page 60
1st paragraph

The architecture characteristic "Supportability" is included two times: under the category "Structural Architecture Characteristics" and under the category "Cross-Cutting Architecture Characteristics".

Note from the Author or Editor:
removed first duplicate

Fabiano Sardei  Jun 01, 2021
PDF
Page 66
First line

"characteristics" is misspelled "charateristics"

Wes Reynolds  Mar 27, 2024
Printed, PDF
Page 102
Last paragraph, 1st sentence + illustration above

Figure 8-3 names left architecture style "layered architecture" and right "modular monolith".

In the following text they are called "Layered monolith" and "modular monolith". At this point (in chapter 8) is not (yet) clear, that a layered architecture implies a monolithic structure (as explained in ch 9).

Note from the Author or Editor:
fixed

Jørgen W. Lang  May 01, 2020  Nov 06, 2020
Printed, PDF
Page 108
2nd bullet list, 2nd buller

Original:

Developers may have to **duplication** domain concepts in both common and local layers.

Fix:

Developers may have to **duplicate** domain concepts in both common and local layers.

Jørgen Lang  May 01, 2020  Jun 12, 2020
Printed, PDF
Page 114
List below Fig 8-10

Inconsistent naming of components, e.g.:

Video streamer (in figure)
VideoStreamer (in definition term [aka dt in HTML])
Video Streamer (in definition [aka dd in HTML])

These should probably unified into one format (CamelCase?).

Jørgen Lang  May 01, 2020  Jun 12, 2020
Page 126
paras 2 and 3

Data transfer rates (bandwidth) is in bits per second.

replace
"At 500 kb for each request, the amount of bandwidth used for that one interservice call (out of hundreds being made that second) is 1 Gb!
... If the customer profile service were to only pass back the data needed by the wish list service (in this case 200 bytes), the total bandwidth used to transmit the data is only 400 kb."

with
"At 500 kb for each request, the amount of bandwidth used for that one interservice call (out of hundreds being made that second) is 1 Gbps!
... If the customer profile service were to only pass back the data needed by the wish list service (in this case 200 bytes), the total bandwidth used to transmit the data is only 400 kbps."

Note from the Author or Editor:
fixed.

chrisH  Sep 14, 2022
Page 131
para 1

"Most companies have multiple network hardware vendors in their infrastructure, if not more."
more than multiple ? I think it should be
"Most companies have multiple network hardware vendors in their infrastructure."

Note from the Author or Editor:
fixed.

chrisH  Sep 14, 2022
Printed
Page 158
1st paragraph

"... In such cases, it is common to create an adapter between the plug-in contact and your standard contract..."

I think contact should be contract.

Note from the Author or Editor:
Fixed.

Davy  Jan 16, 2021  Feb 12, 2021
Page 161
3rd paragraph

"Modularity and extensibility ..." should be "Modularity and evolutionary ...". Same as the last paragraph on page 160: "... scalabitliy, fault tolerance, and extensibility ...", "extensibility" should be "elasticity".

Note from the Author or Editor:
fixed in Atlas

Ding Fei  Nov 16, 2021
Printed, PDF
Page 168
2nd para, 2nd sentence

Original:
[…] transaction technique known as BASE transactions (basic availability, soft state, eventual consistency) transactions that rely […]

Issue:
"transactions" before *and* after parentheses

Fix:
Remove one occurence of "transactions"

Note from the Author or Editor:
Good catch--repaired.

Jørgen Lang  May 11, 2020  Jun 12, 2020
Page 172
3rd paragraph

In the 3rd paragraph, 8th line, starting, it indicates _denoted by the "vertical line"_ while the diagram on page 173 shows an horizontal line

Note from the Author or Editor:
fixed.

Pepe Fabra Valverde  Mar 25, 2023
Page 179
2nd paragraph

"action are send to a request orchestrator"

Change "send" to "sent".

Michael Cook  Aug 05, 2022
Page 184
2nd para

payment-applied and payment-denied events are mutually exclusive.
"Notice in Figure 14-4 that two events are generated as a result of the actions taken by the Payment event processor: one to notify the rest of the system that the payment was applied (payment-applied) and one processing event to notify the rest of the system that the payment was denied (payment-denied)."
should be something like
"Notice in Figure 14-4 that ONE OF two POSSIBLE events IS generated as a result of the actions taken by the Payment event processor: one to notify the rest of the system IF the payment was applied (payment-applied) OR one processing event to notify the rest of the system IF the payment was denied (payment-denied)."

chrisH  Sep 14, 2022
Printed, PDF
Page 185
2nd para, 4th sentence

Original:
Concurrently, the Notification event notifies […]

Problem:
"Notification" is not an event, but an event processor.

Fix:
Concurrently, the Notification event processor notifies […]

Note from the Author or Editor:
fixed

Jørgen Lang  May 13, 2020  Nov 06, 2020
Page 188
1st paragraph

However, notice that when the initiating event coming into the Simple Event Mediator is classified as either hard or complex, it forwards the original initiating event to the corresponding mediators (BPEL or BMP).

BMP in the parentheses should be BPM.

Note from the Author or Editor:
fixed in Atlas

Anonymous  Feb 07, 2022
Printed, PDF
Page 193
2nd para, 1st sentence

Original:
[…] generates another contextual email_customer event […]

Problem:

Fix:
[…] generates another contextual email-customer event […]

Note from the Author or Editor:
changed

Jørgen Lang  May 14, 2020  Nov 06, 2020
Printed, PDF
Page 194
2nd para, 2nd last sentence

Original:
[…] events such as […] are commands (things that need to happen) as opposed to events (things that have already happened).

Issue:
Usage of "events" with two meanings in one sentence. This might be misleading since it seems to redefine the well-established term "event" just for this context.

Suggested Fix:

[…] events such as […] are commands (things that need to happen) as opposed to incidents (things that have already happened).

Note from the Author or Editor:
clarified by changing term and next sentence.

Jørgen Lang  May 14, 2020  Nov 06, 2020
Printed, PDF
Page 201
last para, 1nd sentence

Original:
[…] is easily solved by leveraging persisted message queues […]

Issue:
AFAIK, usual term is "persistent message queue

Possible fix:
[…] is easily solved by leveraging persistent message queues […]

Note from the Author or Editor:
fixed

Jørgen Lang  May 15, 2020  Nov 06, 2020
Printed, PDF
Page 269
3rd paragraph

Original: "Architects must discover and elucidate the architecture characteristics needed to support the domain and other eternal factors."

Issue: Wouldn't that be great? Never-changing domains… ? My favourite typo in this book so far. ;)

Fix: "Architects must discover and elucidate the architecture characteristics needed to support the domain and other external factors."

Jørgen Lang  May 29, 2020  Jun 12, 2020
Printed, PDF
Page 287
first sentence on page

Original: "The title of an ADR is usually numbered sequentially and contains a short phase…"

Issue: Should probable "phrase"

Fix: "The title of an ADR is usually numbered sequentially and contains a short phrase…"

Jørgen Lang  Jun 02, 2020  Jun 12, 2020
Printed, PDF
Page 287
last paragraph, 1st sentence + illustration above

Issue: The sentence

is formatted as part of the quoted ADR status while it is actually part of the normal prose.

Fix: Format the sentence as not being part of the quoted status entry for ADR 68.

Jørgen Lang  Jun 02, 2020  Jun 12, 2020
Printed, PDF
Page 328
first line

Original: “However, in the transaction from developer to architect, …“

Issue: Most likely "transition" instead of "transaction"

Fix: "However, in the transition from developer to architect, …"

Jørgen Lang  Jun 10, 2020  Nov 06, 2020
Printed
Page 334
second paragraph and also in the table 22-2

Original:

"In this case, the accumulated score comes out to -20".

Fix:
"In this case, the accumulated score comes out to +20".

Note In table 22-2, the accumulated score should be +20 as well

Note from the Author or Editor:
Fixed in repo

darren liu  May 08, 2021
Printed, PDF
Page 348
2nd last paragraph, 1st word

Orig: Phases such as “we must have zero downtime”…
Issue: Missing "r"
Fix: Phrases such as “we must have zero downtime”…

Jørgen Lang  Jun 15, 2020  Nov 06, 2020