Software development has been a troubling since it first started. There are seven chronic problems that have plagued it from the beginning: The first section of the book examines common software development problems that have been observed in many companies and government agencies. The data on the problems comes from consulting studies, breach of contract lawsuits, and the literature on major software failures. This section considers the factors involved with cost overruns, schedule delays, canceled projects, poor quality, and expensive maintenance after deployment. The second section shows patterns that lead to software success. The data comes from actual companies. The section’s first chapter on Corporate Software Risk Reduction in a Fortune 500 company was based on a major telecom company whose CEO was troubled by repeated software failures. The other chapters in this section deal with methods of achieving excellence, as well as measures that can prove excellence to C-level executives, and with continuing excellence through the maintenance cycle as well as for software development.
Table of contents
Preface Biography
I. WORST-CASE PATTERNS OF SOFTWARE DEVELOPMENT
1. Challenges of Software Project Management 2. Wastage: Lost Time and Money Due to Poor Software Quality 3. Root Causes of Poor Software Quality 4. Defenses against Breach of Contract Litigation 5. The Mess of Software Metrics 6. Variations in Software Costs and Quality by Application Size 7. Advancing Software from a Craft to a Profession
II. BEST-CASE PATTERNS OF SOFTWARE DEVELOPMENT
8. Corporte Software Risk Reduction in a Fortune 500 Company 9. Achieving Software Excellence 10. Early Sizing and Estimating of Software Projects 11. Optimizing Software Defect Removal Efficiency (DRE) 12. Tool Usage on Best-Case, Average, and Worst-Case Projects 13. Geraitric Care for Aging Software 14. Function Points as a Universal Metric
Capers Jones has been active measuring software productivity and identifying risk factors and cost drivers in software development since the 1980s. This is the most recent of his many books on these topics.
Unfortunately this is disappointing book due to its poor and repetitious organization. Paragraphs are copied verbatim time and again throughout the book, sometimes adding an item to a long list. It becomes very boring and I found myself repeatedly skipping over a section, until I decided to call it a day about two thirds of the way through the book. I believe the book could be advantageously pruned to about a third of its size.
Each chapter is followed by references, and most of the time they are the same references, many of which are the author's previous writings. These references should have been factored out and added as a bibliography section at the end of the book. There has been little or no attempt to update these references.
To his credit, the author has co-founded several software development consulting companies (Capers Jones & Associates, Software Productivity Research, Namcook Analytics LLC) and helped put together a database of over over 27,000 software development projects from 75 industries and 70 countries which he mines extensively for data and models on productivity, risk impact and quality. Namcook Analytics has also put together - Capers Jones asserts – an advanced parametric estimation tool, Software Risk Master (SRM™). The book provides very little detail on this proprietary database and and very little explanation about the proprietary tool -frequently it feels he is plugging the tool.
Capers Jones also claims to have been involved as an expert witness in some 15 court cases in which companies have been sued for breach of contract with regards to software development or unsatisfactory software quality. This is certainly the first time I have come across anyone with such extensive experience in this area and would have liked him to provide more information on it.
The author has always believed in function point analysis and this book is no exception to his claims about the usefulness and reliability of function points. He also strongly recommends the use of software inspections, and static analysis, as well as defect potentials and defect removal efficiency metrics. He claims, more recent variations on function points such as SNAP (for non-functional requiremnts), COSMIC function points, FISMA function points and backfired function points have yet to prove their value and robustness, and dismisses lines of code (LOC) metrics as misleading at best. As for software development methodologies he claims that, based on the cases in the databases he has access to, some heavyweight methodologies like RUP tend to be more successful, while agile methodologies and techniques such as stories and technical debt tend not to scale and provide at most a mere 10% increase in productivity and quality. He seems to focus more on very large scale software with over ten thousand function points and claims the more successful software development being carried out is in telecommunications in companies such as ITT and IBM and the least successful (at least in the US) is for software for state and local government agencies.
The title of the book is rather misleading, since he does not really use patterns in the same sense as the patterns/antipatterns community derived from Christopher Alexander's architectural patterns and the classic Gang of Four book on software patterns do.