Catch up on stories from the past week (and beyond) at the Slashdot story archive

 



Forgot your password?
typodupeerror
×
Image

Book Review: The Economics of Software Quality 83

First time accepted submitter BenLinders writes "The Economics of Software Quality provides solutions to quantify software quality, helping you to manage software development and maintenance. It contains software quality data that you can use to build a business case to improve the quality of your software, and decide upon processes and techniques that can help to implement the needed improvements in your organization." Read below for the rest of Ben's review.
The Economics of Software Quality
author Capers Jones and Olivier Bonsignour
pages 587
publisher Addison-Wesley
rating 8/10
reviewer Ben Linders
ISBN 978-0-13-258220-9
summary To build your Business Case for Software Quality Improvement
Quantifying software quality is not an easy thing. Several measurements exist, for instance estimating and tracking the number of defects that are found (both within development/maintenance and from customers), measuring software quality with static analysis tools (complexity, fan in/fan out), or measuring the effectiveness of software development methods and techniques (like inspections, test, and Cost of Poor Quality). This book covers software quality factors that influence the quality of software products as perceived (and believed!) by customers. An extensive list of factors is provided, where the authors have selected those factors that they consider most significant to achieve quality.

Many software development processes and techniques are covered in this book, from a quality and economic point of view. This also includes agile methods, where a body of data is available about the effects of agile techniques like user stories, Test Driven Design, Scrum Sessions, Measuring Technical Debt, and Pair Programming. For instance, about agile user stories the book states "... the user story method seems to be concise and fairly trouble-free, User stories average below 0.5 pages per function point and seem to contain fewer than 0.5 defects per function point`. This kind of information can be very helpful to build a business case for using agile methods in your organization.

Most of the data on software quality that the book provides is in "Defects per Function Point". A backfiring table is also provided, to translate language statements/lines to function points. So if you are not using function point, but programming in Java, Ruby, C++ or any other popular programming language, the data can still be used.

There is a full chapter covering defect prevention. Methods like Reuse, Formal Inspections and Quality Function Deployment are the most effective in preventing defects, and also techniques like Root Cause Analysis and PSP/TSP are claimed to be very effective. Given that the top ten techniques reduce defects with 40% — 85%, makes it interesting for many organizations to investigate the business case to improve the quality of their products, using these methods and techniques.

Additional information is provided on how to measure the effects on quality from a given method or technique. The book also provides warning for quality measurements that can be unreliable. An example is measuring cost-per-defect. When the quality of your development activities increases, for instance by improving requirements practices and implementing defect prevention for design and coding, the number of defects that testing finds will go down. Since test case preparation is a fixed cost, the cost per defect for testing will go up when the software has fewer defects. This makes such a measurement potentially unreliable. I believe that the main benefits will come when you can reduce your testing activities, based upon measurements that quantify the quality of your products before testing starts. Techniques like risk based testing can also reduce your testing hours, thus saving time and money on tests that are not needed.

Defects measurements and tracking are used in more then 55% of the military and defense software applications (using CMMI, TSP, QFD, etc), but in less then 15% of IT, commercial, web or embedded applications. Given their prevention effectiveness of -35%, and removal effectiveness of 25%, it is still surprising to me that this is not used more often. The data needed for these kinds of measurements is usually available in the defect management systems, though some addition effort is needed to classify defects and to do Root Cause Analysis. The benefits of using these kinds of measurements, combined with estimations of the expected quality at release, to decide and steer software development and prevent defects during the development and before release are significant.

The book also gets into methods to quantify structural quality issues that are not exactly "defects" but have an important impact – "Technical Debt" being one of these methods of quantification. These kind of measurements help to manage the quality of your code base, being able to see the impact on quality from changes, and take action to get quality back on the desired level when needed.

Reviews and inspections are very effective ways to remove defects before testing. Several techniques are described, both informal and formal techniques. Several of them are also usable within agile methods, supporting teams in developing better quality software. Applying these techniques effectively requires training, and arrangements within your company that enable employees to use them. The book makes clear that if you want to reduce post release defects and lower your maintenance costs, the work needs to start with early software development activities, like using better techniques for managing requirements, software modeling and design, reviews and inspections, and automatic code analysis. Testing alone is not sufficient to improve quality, and is also very costly.

The relationship between quality and risks is also explored. Many major software problems are related to the quality of the software products, e.g. outages, data loss, security issues or regulatory non compliances. Investigating such issues, for instance with Audit or Root Cause Analyses, and taking action to prevent similar problems in the future can be essential for your business. Measuring the losses and estimating potential benefits from preventive actions helps you to select the right improvements, and acquire commitment and funding to implement them.

The capabilities and skills of the staff that develops the software have significant impact on the quality. The benefits of training, skill development, and sharing of experiences to develop a learning organization can be huge. Software methods like Agile and RUP include mechanisms to continuously evaluate, learn and improve the capabilities of your staff. E.g. using retrospectives and scrum boards, to identify and follow up with improvement actions.

Overall the book covers the economic perspective of quality. The information provided can be overwhelming for some readers. If you need to improve your product quality, and are limited in time and money to do it, this book helps you to select effective quality methods and techniques, and to measure and track your progress when implementing improvements.

Ben Linders is a specialist in quality, process improvement and organizational development.

You can purchase The Economics of Software Quality from amazon.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.

*

This discussion has been archived. No new comments can be posted.

Book Review: The Economics of Software Quality

Comments Filter:
  • Correlary (Score:5, Insightful)

    by RingDev ( 879105 ) on Wednesday December 14, 2011 @05:57PM (#38376298) Homepage Journal

    Everyong knows: Fast, Cheap, or Good - pick two.

    But not everyone knows its correlary:

    Slow, Expensive, or Wrong - pick one.

    -Rick

  • by scamper_22 ( 1073470 ) on Wednesday December 14, 2011 @06:08PM (#38376426)

    A typical software process innovation happens like this:
    1. Group of highly skilled and motivated developers create a new process (agile, code review, team programming...)
    2. They see the results are great and start writing about it.
    3. Other skilled and motivated developers take note of the new developers and start implementing it. The new process gains acceptance.
    4. Consultants and the general software community picks up on the idea and starts implementing it.
    5. Projects fail as usual as unskilled and unmotivated developers and organization can't execute it.

    The key to software development is that is starts with the people. Success in software is 95% people, 5% process.
    http://slashdot.org/comments.pl?sid=2560806&cid=38280588# [slashdot.org]

    The team of highly skilled and highly motivated developers that create the new and cool processes would have been able to build a successful project using almost any process... or even no process.

    Software processes can enhance a highly skilled team and highly motivated team. They can't do much if you don't have the talent or motivation across the organization.

  • Re:Correlary (Score:4, Insightful)

    by darkwing_bmf ( 178021 ) on Wednesday December 14, 2011 @06:09PM (#38376444)

    Counterpoint: Non-trivial software is never cheap. It will either cost more up front for quality or more after delivery when it doesn't work the way it's supposed to.

  • by Anonymous Coward on Wednesday December 14, 2011 @07:30PM (#38377586)

    Unfortunately, while Agile may formalize good work habits, it does not magically turn poor or mediocre programmers into good ones. No matter how much Agile you throw at a problem, if you have average developers, you still get average software.

  • Yikes! (Score:5, Insightful)

    by Un pobre guey ( 593801 ) on Wednesday December 14, 2011 @07:32PM (#38377622) Homepage
    It contains software quality data that you can use to build a business case to improve the quality of your software

    If you have to "build a business case to improve the quality of your software," you are in deep shit. Don't buy the book, change jobs instead.

To do nothing is to be nothing.

Working...