Errors in book: 'Software Metrics: A Rigorous and Practical Approach (2^{nd} Edition)
Published by PWS ISBN (0534-95429-1), 1998 (originally published by International Thomson Computer Press, 1996)
Last updated:20 March 2006
First an important warning
In the first print run of this book (some 3,000 copies) the publishers ITP actually managed to print an old incorrect version despite having been supplied with the correct version. It contained so many mistakes (including a completely wrong index, several completely wrong figures, and many hundreds of typos). Despite a promise to the contrary, ITP (and their US partners PWS) failed to 'pulp' the print run and all copies were sold. Buyers who knew about the problems were told they could get the new (i.e. corrected) version in exchange free of charge as soon as it was printed. Unfortunately, many buyers never knew of this offer.
There is a simple way of telling if you have the original print-run version: the title on the inside cover is wrong (it says 'Software Metrics: A Practical and Rigorous Approach' instead of 'Software Metrics: A Rigorous and Practical Approach'). If you have this version, you should contact ITP and exchange it for the proper version. There are far too many mistakes to list here. The book should be thrown in the bin.
Errors in the re-printed version
Special thanks due to: Christof Ebert , Pim van den Broek, Rachel Harrison, Alexander Chatzigeorgiou, Cem Kaner, Robin Laney, P. van der Straaten, Metin Turan for pointing out some of the errors below.
p. 57 Figure 2.12: The mean value is 8.3 not 9.1.
p. 63, table 2.11: the values 20 and 30 in the table should be switched.
p.202 line 11: the formula u- 1.5d should be l- 1.5d
p-252 The program in Figure 7.2 is wrong in a number of places. The correct version is:
SUBROUTINE SORT (A,N)
INTEGER A(100),N,I,J,SAVE,M
C ROUTINE SORTS ARRAY A INTO DESCENDING ORDER
IF (N.LT.2) GO TO 30
DO 30 I=2,N
M=I-1
DO 20 J=1,M
IF (A(I).GE.A(J)) GO TO 10
SAVE=A(I)
A(I)=A(J)
A(J)=SAVE
10 CONTINUE
20 CONTINUE
30 RETURN
END
Also the formula for Ss refers to Lc without actually defining it. In fact Lc is a lnaguage dependent constant. For FORTRAN (the language of the example) the constant is believed to be approximately 7.
p. 260: the FP example 7.15 is not correct. It should say:
UFC=4A+5B+4C+10D+7E=58
p. 262 Onvlee's claims is that 50%-60% of fixed price software contracts in the Netherlands costs are tied to FP-specifications (the words fixed price were wrongly omitted).
p.283, Figure 8.2. In the flowgraph P_{n} the X_{i}'s are all NODE labels (not arc labels) so X_{1} is the label of the first node, X_{2} the second etc. The last (stop) node has no label.
p. 291, Example 8.13. The calculation of v(F) near the bottom of the page contains an error. The value of v(D_{0}) should be 2 NOT 3 as stated. Hence the final value of v(F) should be 9 not 10. (Thanks to Alexander Chatzigeorgiou for pointing this out). Also, in this example in the definition of M3 the number of F_{i}'s should be "m" not "n" as it is independent of the number defined in M2 (thanks to Cem Kaner for pointing this out) - the same is true for all the definitions of M2 and M3 in Table 8.1 (page 292).
p. 292 Table 8.1: In the the number of nodes measure, the following are wrong (thanks to Cem Kaner for pointing this out :
M2: n(F_{1};...;F_{n}) should be n(F_{1};...;F_{k}) - the k in the right hand side of the formula refers to the number of F_{i}'s.
M3: n(F(F_{1};...;F_{n)}) should be n(F(F_{1};...;F_{k})) - the k in the right hand side of the formula refers to the number of F_{i}'s
Strictly speaking (as pointed out above for p.291) the number of Fi's in M2 and M3 are independent so I should have used a different variable name (rather than k in each case). Same applies to the other metrics in this table.
Page 300, Figure 8.15: The number of Linearly Independent Paths is correctly given as 6 but 7 paths are listed. The last of these should be removed, since the first six is a basis set.
Page 367, example 10.5: the distribution function F(t) should be
1 - e- l ^{t}
and not
- e- l ^{t}
p. 383, Table 10.3
The column "Predicted mean .. " should start on the third line, not on the second line. As it stands, t(i) is not predicted from t(i-1) and t(i-2), as it should, but from t(i) and t(i-1). Note the difference between tables 10.3 and 10.4. In table 10.4 the mistake does not occur.
p. 393. The formula for Gi(x) is wrong because of an error in the formula two lines above.
p. 471: SPICE is a meta standard framework and not "similar to the CMM"
page 496 line 8: ‘communicating sequential processes’ should be replaced by ‘calculus of communicating sequences’
Page 567, line 18 should be 'Chapter 8' not 'Chapter 10'
Page 611, line 20 should be 'Chapter 8' not 'Chapter 9'