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 |
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 |
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, 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 |
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 |
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, 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 |
|