Slashdot Mirror


Book Review: The Economics of Software Quality

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.

24 of 83 comments (clear)

  1. Agile programming is a lie by elrous0 · · Score: 4, Informative

    There, I said it.

    "This programming philosophy will allow you to develop high quality software really quickly, and on the cheap" is the equivalent of a politician promising to fix every problem in the country with no sacrifices required, and put chocolate milk in all the water fountains to boot.

    It's always the old thing: fast, cheap, or quick--pick any two.

    --
    SJW: Someone who has run out of real oppression, and has to fake it.
    1. Re:Agile programming is a lie by Desler · · Score: 4, Informative

      Aren't fast and quick the same thing?

    2. Re:Agile programming is a lie by Anonymous Coward · · Score: 3, Informative

      Should be:

      Fast, Cheap, or Good - pick two.

    3. Re:Agile programming is a lie by elrous0 · · Score: 5, Funny

      My post was fast and cheap. If you wanted me to proof it better, you should have given up one of those two.

      --
      SJW: Someone who has run out of real oppression, and has to fake it.
    4. Re:Agile programming is a lie by Eil · · Score: 2

      Agile programming is not a lie. It works, and the company I work for has the customers, profits, and happy non-burnt-out engineers to prove it. But it's not easy to do right, and certainly isn't cheap if you're hiring the right people.

    5. Re:Agile programming is a lie by scamper_22 · · Score: 5, Insightful

      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#

      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.

    6. Re:Agile programming is a lie by forkfail · · Score: 2

      It would appear that you don't understand agile.

      When done right, agile is the formalization of good work habits (realizable short term goals with something to show at the end of each sprint in order to reach the overall long term goal). It also eliminates a lot of overhead time spent in planning that gets thrown away, unnecessary gant charts, etc.

      The long and the short of it is that agile saves time by making the process that a good dev would impose upon himself the formal process for the product.

      If you think agile means shipping the prototype, or that because you're agile you can just halve the time to ship, you are looking for a magic wand that doesn't exist.

      --
      Check your premises.
    7. Re:Agile programming is a lie by jd2112 · · Score: 3, Informative

      Should be:

      Fast, Cheap, or Good - pick two.

      And expect at most one.

      --
      Any insufficiently advanced magic is indistinguishable from technology.
    8. Re:Agile programming is a lie by Hillgiant · · Score: 3, Funny

      After consulting my MBA decoder ring, I will pick "cheap". Twice.

      --
      -
    9. Re:Agile programming is a lie by Anonymous Coward · · Score: 3, Insightful

      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.

    10. Re:Agile programming is a lie by DragonWriter · · Score: 2

      Not needed you say? Okay, can you find the error i made in the paragraph
      above? (I'm not joking, start a timer, how long did it take you to find? It's
      there!).

      Which error? Are you referring to the "then/than" error, the sentence fragment, or the doubled comma, or the complete mess that the last sentence becomes after "approaches,"?

      I mean, that's all I found in 30 seconds, there might be more.

    11. Re:Agile programming is a lie by shutdown+-p+now · · Score: 2

      Agile is not really a lie. As originally formulated, it was really just a rehash of the common sense approach that was practiced by many in any case, just without all the fancy labels. But, as with any brand, consultants hopped on the train selling "the Agile" as a silver bullet. Many of the same people also write the books, so in the end it ended up as yet another snake oil. But it doesn't mean that basic tenets such as having relatively small iterations with specific deliverables don't work.

      As with any other technology or business method, apply your common sense filter. If something screams "bullshit!", then it probably is. Get rid of that and all its hard dependencies, and use the rest.

    12. Re:Agile programming is a lie by forkfail · · Score: 2

      However, if you have great programmers, but saddle them with a really badly implemented waterfall approach, by way of example, you'll also wind up with poor to average software in all likelihood.

      Unless your devs manage to overcome the methodology. But you don't want your devs to be battling both the problems of the code and the management approach at the same time, now do you?

      --
      Check your premises.
    13. Re:Agile programming is a lie by Maxmin · · Score: 2

      Agile is the interruptor the business side has always wanted: a leash for engineers.

      But it gets much abused, resulting in needless rewrites, and scattered or stunted architectures - seen it at three tech-centric companies now.

      "Refactor" is a banished term in Agileland. And you never really get to refactor, to design patterns or anything else, because you're too busy replacing hand-wired code to fit the latest redesign or business strategy change.

      Tech management everywhere have lost their collective spines, caving in to "get it done cheaply and quickly" every time. Even when the resources are available to develop maintainable, well-thought-out code.

      --
      O lord, bless this thy holy hand grenade, that with it thou mayest blow thine enemies to tiny bits, in thy mercy.
  2. don't forget the organization itself by Trepidity · · Score: 4, Informative

    While it's popular to focus on code metrics (defect count, test-based metrics, etc.), when it comes to how to improve software quality, don't forget that it's strongly related to organizational characteristics. Whether you look at it via Conway's Law, via Fred Brooks's analysis, or via recent empirical research [pdf], it's pretty clear that software developed in an organization isn't independent of the organization itself, and sometimes the way the company is structured/managed is the problem.

    1. Re:don't forget the organization itself by shutdown+-p+now · · Score: 2

      So long as we stick to capitalism, the only ultimate code quality metric is "how well does it sell?" - since that's the only thing actually relevant to the company (note, this includes side effects such as customer dissatisfaction from shipping crap once leading to dwindling sales on later releases).

    2. Re:don't forget the organization itself by bladesinger · · Score: 2

      This is an excellent point that is widely ignored today. There is almost fanatical appreciation of Agile and rebuking of waterfall, based on "code metrics" and organizational culture that are internal to the development process and are largely subjective ("software quality" alone is so ridiculously convoluted at this point). The only metric that should be used to determine success is how well the product sold. I'm interested in finding studies that conclude positive or negative correlation between the various software design approaches and net income or units sold.

  3. Peopel dont buy quality, they buy Brand by Gothmolly · · Score: 2, Informative

    "If it compiles, ship it. If it sells, patch it."
    "Nobody ever got fired for buying IBM."

    THAT is the software sales model. That, and having people who know braindead CTOs who buy from their golf buddies, creating a giant naked Emperor.

    --
    I want to delete my account but Slashdot doesn't allow it.
  4. Correlary by RingDev · · Score: 5, Insightful

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

    But not everyone knows its correlary:

    Slow, Expensive, or Wrong - pick one.

    -Rick

    --
    "Most people in the U.S. wouldn't know they live in a tyrannical state if it walked up and grabbed their junk." - MyFirs
    1. Re:Correlary by darkwing_bmf · · Score: 3, Insightful

      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.

    2. Re:Correlary by Stirling+Newberry · · Score: 4, Funny

      Slow, expensive, or wrong. Why compromise, you can have them all.

  5. Re:Actually sounds interesting... by Jonathan+C.+Patschke · · Score: 3, Informative

    Have you heard of the Software Engineering Radio podcast? I've been listening to it for a few years, and I really enjoy it—even if I don't share Markus' enthusiasm for model-driven software. The web site is at http://www.se-radio.net/, and even the back issues are worth listening to (processes don't get dated nearly as rapidly as tools).

    --
    Pining for the days when The Glorious MEEPT!!! graced SlapDash with his wisdom.
  6. Bullshit. Agile programming is a manifesto. by Anonymous Coward · · Score: 2, Informative

    The Agile Manifesto doesn't make any promises about quality, speed or price. The only lie here is that your claim that it does.

    www.agilemanifesto.org

    Manifesto for Agile Software Development

    We are uncovering better ways of developing
    software by doing it and helping others do it.
    Through this work we have come to value:

    Individuals and interactions over processes and tools
    Working software over comprehensive documentation
    Customer collaboration over contract negotiation
    Responding to change over following a plan

    That is, while there is value in the items on
    the right, we value the items on the left more.

  7. Yikes! by Un+pobre+guey · · Score: 5, Insightful
    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.