Errata

Fundamentals of Software Architecture

Errata for Fundamentals of Software Architecture

Submit your own errata for this product.

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
Safari Books Online, 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
Safari Books Online
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
Safari Books Online
i
last paragraph in preface

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

Michael Easter  May 18, 2020  Jun 12, 2020
Safari Books Online
Many paragraphs down

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


https://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

Bahadır Konu  Feb 02, 2022 
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 
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

Table caption reads "Trade-offs between topics and queues" but table only lists trade-offs for topics.

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 
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
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
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:
Using underscore instead of hyphen.

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:
Use "incidents" instead:

[…] 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
"The link and history trail between ADRs 42 and 68 avoid the inevitable “what about using messaging?” question regarding ADR 68."

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