Sunday, June 12, 2011

Code Complete by Steve Mcconnell : Chapter 23

In this chapter, the author talks about software quality, in terms of external, the one that the end user experiences and internal, the one that programmers care about. The external characteristics are defined in terms of

  1. Correctness
  2. Usability
  3. Efficiency
  4. Reliability
  5. Integrity
  6. Adaptability
  7. Accuracy
  8. Robustness
The internal characteristics are defined in terms of
  1. Maintainability
  2. Flexibility
  3. Portability
  4. Reusability
  5. Readability
  6. Testability
  7. Understandability
The author then provides a relationship table between these characteristics. Some characteristics co-operate while some conflict with each other, e.g. focussing on efficiency may compromise correctness.

The author then lists some techniques for improving software quality including:
  1. Setting explicit quality objectives.
  2. Have explicit quality-assurance activity.
  3. Develop a testing strategy
  4. Software engineering guidelines
  5. Have informal technical reviews
  6. Have formal technical reviews
  7. External audit
  8. Have effective risk management
  9. Follow change control procedures
  10. Measure the results of a quality assurance plan
  11. Prototype
The author then cites a study to show that programmers work for the objectives specified, but they must be told what the objectives are.

The author then provides details of a study to determine the effectiveness of defect detection techniques e.g. review of design documents, code reviews, prototyping, unit-testing, functional testing, integration testing, etc... The author concludes that none of the methods has success rate in access of 65% thus it is required that a combination of these techniques is used instead of just one technique alone.

The author cites studies that shows that inspections are cheaper than testing. The author then emphasizes on introducing quality-assurance in early part of the development cycle since earlier the error is inserted into the software, the more embedded it becomes in other parts of the software and the more expensive it becomes to remove it.

The author then describes the general principle of software quality, i.e. improving quality reduces development costs. The author also provides a statistic that the average productivity for a software product is 8-20 lines of code per person per day.

The author cites two studies that confirms reduced error rate due to increased quality assurance but there were no changes in overall development cost. The author also provides results of a study showing that the error rate is unrelated to the time spent on writing code.

No comments:

Post a Comment