Thursday, June 24, 2010

Prevention is a Cure - A Quality Perspective

For any product (and project) based enterprise software solution organizations, a lot of time is spent on Quality Inspection (Quality Control e.g. testing) and Quality Correction (e.g. debugging and fixing issues). The cost of these two areas can be moderate to huge, depending upon the size, diversity and usage of software applications in the respective business industry.

If we need to reduce this cost of overall quality, one of the better measures is by reducing and minimizing the total cost incurred on Quality Inspection and Quality Correction. With greater focus on Quality Prevention we can reduce the cost incurred on the overall product development and maintenance lifecycle and can produce increased level of quality.

Lets understand this with an example given below:

Cost of overall Quality = Cost of Quality Prevention + (Cost of Quality Inspection + Cost of Quality Correction)

With every small unit cost increase in Prevention method, we can reduce the cost of Quality Inspection and Correction to significant levels. In other words we can say that Total Cost of Quality Prevention is inversely proportionate to Total Cost of Quality Inspection plus Total Cost of Quality Correction. In other words:

Cost of Quality Prevention α 1 / (Cost of Quality Inspection + Cost of Quality Correction)

Prevention helps in reducing the probability of finding defect in production and enables some of the following benefits for any organization and not limiting to:

    #1 Cost of prevention is much lesser then Cost of Correction as the defect is fixed at the initial phase itself
    #2 Defects are found and fixed in earlier phases of development cycles and enables high quality products
    #3 Cost of rework is reduced to a greater extent as number of defects is reduced to significant levels
    #4 Product companies can focus on implementing more new requirements and innovations in product rather than focusing energy on maintenance, hot fixes and rework. With good quality there are always positive responses from customers who are happy and can be delighted as a result in longer run
   #5 Happy and delighted customers provides return business and also are good references in market place resulting in more business opportunities to an organization


Paradigm shift

In software development life cycle, if we put more focus, energy and time on Quality Prevention area then it will significantly reduce the Total Cost of Inspection and Correction. There are few measures that we can take to make this happen. (Example below)




Investments (Preventions)




Benefits


Requirements

1. Detailed Requirements with use cases and case studies

2. Better and focused reviews

3. Involvements of customers


1. Lesser time in understanding the

requirements
2. Lesser time in architecture and design


Design

1. Detail level of architecture and design

2. Proof of Concepts (POC)

3. Multiple design considerations

4. Detail level of design reviews




1. Lesser time to complete coding
  2. Better reuse of code and integration

3. More option to build better designs
4. Higher scalability of design


Coding

1. Coding standards and guidelines
2. Reusable frameworks

3. Detailed Unit test strategy

4. Code Reviews




1. Less time to reuse

2. Person independent and lesser dependencies

3. Less time to complete Unit testing

4. Less time to complete Integration testing


Testing

1. Detailed level of test strategy, test

scenario

2. Usage of testing techniques
3. Detailed test data preparation

4. Detailed coverage of Regression test




1. Less time to complete Functional testing

2. Less time to complete System testing

3. Increased ability to find defects before customer release


Test Automation

1. Automation of repeated tasks

2. Automation of high priority modules



1. Less time to complete tests
  2. Less resources required to test


Analysis of Production Defects

1. Analysis of Key trends in defects

2. Analysis of gaps in regression scripts

3. Improvements in regression test
4. Improvement in other development processes


 
  1. Timely fixing of common issues

2. Lesser time to complete Regression testing

3. Reduction in number of defects in future product releases

Success Criteria
Though prevention is a good method to improve overall benefits to organization, there are important areas that should be in place to enable the overall success in a longer run:

    #1 Commitment of Management – Management should be committed to this goal. Management team should also provide their time to review the progress and to manage any identified risk. Without commitment from management, it is not possible to improve quality through Prevention methods as it may require significant level of investments initially.
   
    #2 Support of Management – Quality focus should be followed in a top to down approach and must be supported by management on regular basis. This support should be extended to the team so that they are motivated and get adequate resources and tools to perform their work.
   
    #3 Trainings – Everyone in the team should be trained adequately on the required processes. As the change may require significant alteration, in the way people work. Training needs should be evaluated frequently to help team understand on usage of various processes, tools and techniques.

    #4 Attitude and Discipline – Everyone in the team must understand and agree to the common goal and should be motivated to carry the same level of standards. After all it’s the attitude and discipline that makes any improvement process successful.

    #5 Continuous improvements – Prevention is part of continuous improvement process. It should be frequently evaluated by the teams and any required change should be adopted. Though change is good to follow but one also needs to be careful and should not apply changes too frequently. This may divert and distract the focus of the teams. It’s all about striking the right balance.

    #6 Feedback from Customers – Though it is good to learn from internal processes and procedures, it is equally important to collect frequent feedbacks from customer. Also analysis of all defects reported by customers can be helpful in providing a good direction on where we should focus for improvements. Most of the successful software product organizations enables customer to provide their feedbacks through various forums, regular interaction sessions, user groups meetings, seminar, webinar etc.