The Economics of Software Quality, a book by Capers Jones and Olivier Bonsignour, provides solutions to quantify Software Quality which can help 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 technical debt, understand what drives quality, and decide upon processes and techniques that can help to improve the quality performance of your organization.
Several measurements exist to quantifying software quality, 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, Root Cause Analysis, Six Sigma and Cost of Poor Quality). This book covers Software Quality Factors that influence the quality of software products as perceived (and believed!) by customers.
Many software development processes and techniques are covered in this book. This also includes agile methods, where a body of data is available about the effects of techniques like user stories, Test Driven Design, Scrum Sessions, Measuring Technical Debt, and Pair Programming. This kind of information can be very helpful to build a business case for adopting agile methods in your organization, to steer product quality in agile teams.
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 and reduce software maintenance.
Reviews and inspections are very effective ways to remove defects before testing (see also business benefits of reviews). They are also usable within agile methods, supporting teams in developing better quality software. 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.
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 agile retrospectives 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.
See also Book Review:The Economics of Software Quality, an extensive review of this book from me which has been published on Slashdot.