|
36 of 38 people found the following review helpful:
1.0 out of 5 stars
We need good books on SCM. This isn't one., July 28, 2000
The software development community desperately needs a good, readable book on Software Configuration Management (SCM). SCM is poorly understood in the development community. Sometimes it seems as though there is no faster way to make the eyes of developers, project managers, and executives glaze over than to mention SCM. Yet SCM is terribly important to the process of developing and maintaining software products.I purchased the book based on a quick glance; it looked friendly, and I was particularly attracted by the authors' claim to have modeled their work after Christopher Alexander's superb book "A Pattern Language". Yet they seem to be oblivious to the all of things that make the A Pattern Language a great book. In particular, A Pattern Language is organized tidily, written concisely, and explained clearly. AntiPatterns and Patterns in Software Configuration Management is none of these. If one looks around, one can find anti-patterns in lots of bad books on computer software development. Here are some of the anti-patterns that I found in Anti-Patterns and Patterns in Software Configuration Management. Disorganization: The Patterns and AntiPatterns are subject to similar descriptive templates, which include Background, General Form, Variations, and Examples. As a result, it is often unclear as to whether the authors refer to the problem or the solution. If you read the "Background" section on page 276, one of the authors describes the inspections that he was required to perform while in the Navy. Yet this passage is intended background for an AntiPattern, so I was confused as to whether the author was praising or disparaging the practice. Misuse of Icons: AP&P contains icons to highlight the items related to a given pattern or anti-pattern. A pattern is a good thing; an anti-pattern is a bad thing. Why, then, is the icon for the General Form of an Anti-Pattern (a bomb with a lit fuse) the same as the icon for the General Form of a Pattern (also a bomb with a lit fuse)? Inflated writing style: "[System engineering is] an application of necessary effort to transform a required operational capability into a set of parameters defining performance and function, using an iterative process of analysis, synthesis, specification, design, and test to result in a final conclusion." This sentence is not one of the worst in the book -- the sentence is merely typical -- but I defy anyone to read the sentence and to comprehend it on the first go-round. (Isn't software engineering more than simply defining parameters? Isn't there some sort of product that software engineering is supposed to deliver? What form of conclusion is not final?). One of the categories in the AntiPattern template is called "Refactored Solution"; when one has just finished describing a problem, what's the difference between a solution and a refactored solution? Software projects are often called "developments" in this book -- why? Unrelenting use of the passive voice: The authors regularly use the passive voice in the book's examples. Take page 188: "After several delays due to recoding and retesting, it was decided to refine the process to cover the missing parts of the development lifecycle." Who decided? "Specification design was implemented for interface specifications for each component." Who implemented the specification design (or who designed the interface specifications, or who specificied the implementation)? Moreover, wouldn't it be just as simple to say "Interface specifications were designed for each component?" Awkward sentence construction: "Critical to the effectiveness of any software configuration management organization is a strong definition of how software configuration management is implemented within the greater organization." (page 56True. Annoying to the reader are sentences that begin in their own middles. Run-on sentences, and misrelated pronouns can be found on practically every page. Here's another example, from page 22. "Millions of lines of code have forced SCM to the forefront of the system lifecycle disciplines, because without SCM, many projects fail, or the costs become exorbitant to deploy." It is the need to manage millions of lines of code is what has forced SCM to the forefront; the lines of code don't do anything on their own. Projects are sometimes deployed, but I have yet to see a cost deployed, exorbitant or not. Shoddy copy editing: "Annecdotal (sic) evidence: Often-heard phrases and comedic material are (sic) associated with this AntiPattern." (page 9). A professionally edited book should not contain two obvious errors in a single paragraph. In this case, those errors are the misspelling of "anecdotal" and the superflous word "are" (which makes nonsense of the intended explanation). These complaints may sound like nit-picking; they aren't. The poor writing and editing in this book detract from its clarity, add to its length, and reinforce to the mistaken belief that SCM is dull or hard to understand. On top of that, there is little practical advice in the book, other than motherhood issues -- it's a good idea to plan a project; it's a good idea to plan before you implement; configuration management staff can sometimes go overboard; that development teams should keep not only source code, but all of the documents associated with a project under version control. There is a hearty thank-you to the editor of this book in the Acknowledgements section; I cringed as I read it. Beware of writers that attempt to faciliate comprehensibility by the utilization of enhanced linguistic schema (or rather, beware of writers that try to make themselves clear by using big words). By any means possible read "A Pattern Language", but wait for some future, greatly-improved edition of "AntiPatterns and Patterns in Software Configuration Management."
|