Perhaps the idea of desk checking the quality of the specification is no longer cool in the brave new e-world we now find ourselves. The new development models appear to sacrifice quality in an attempt to grab market opportunity.
Inspection is one of several review techniques that companies can use to improve software quality. They are applied early in the project life cycle both to find faults and to provide information about the likely quality of the finished product.
There is a common misconception that inspection and review techniques will replace testing. All of the recognised stages of testing are still required (unit, integration, system, user acceptance) but the time and effort spent on them will be more effective. One of the reasons for this is that testers have a relatively more stable product on which to carry out their tests.
It is now accepted that testing activities must start as soon as possible on a software development project. However, in the early stages of a project the deliverables might include requirements, functional specifications, designs, plans etc. In other words, documents. The actual code does not yet exist.
Therefore, although it is desirable to start planning and designing tests for later execution, the only proven techniques available at any early stage to find faults in project documents are inspection and reviews.
Characteristics of reviews
A review brings together a group of peers in order to formally evaluate technical documentation (e.g. requirement specifications, designs, code, test plans). In addition to finding faults, the group can also determine the likely quality of the finished product.
The review team is typically four to six people and each team member tends to have a specialist role within the team. The responsibility for the review report is shared by the team who use standards, rules and checklists to identify inaccuracies in the document under review.
It is vitally important that all team members prepare in advance of the review meeting and everyone must remember to review the product (i.e. document), and not the person (i.e. the author who produced the document). The review team leader ensures proper planning so that a fair and useful review takes place.
Inspection is a special kind of review technique that finds faults by checking a product document against its sources, and the rules for producing it. It also helps identify improvements to the development process.
A trained inspection leader plans and controls the meetings. Entry and exit criteria ensure that time spent in inspection is effective. The key difference between inspection and other review methods is that inspection uses statistical process control techniques in order to improve the entire development process.
The major phases of the inspection technique are:
All inspection team members are expected to check the document against the source information, rules, standards and so on to try and find faults. They may also make process improvement suggestions. The key point here is that team members do this first stage of checking on their own.
In order to explain how this should be done, the inspection team leader may decide to hold a kick-off meeting with the team to assign roles and responsibilities, set targets and so on.
During this two hour logging meeting, the inspection team attempts to write down all of the issues found during individual checking. They also identify further faults in the document. After the logging meeting, a process brainstorming meeting may be scheduled to identify the root cause of some of the major faults found.
The author corrects and improves the product document by referring to the issue log created during the logging meeting. The inspection leader feeds all of the metrics into the inspection database and can estimate the remaining faults in the document.
By applying exit criteria the leader either releases the document or re-schedules an inspection. Process improvement suggestions are also followed up.
Investment in the inspection technique is crucial in order to achieve long-term savings. This includes proper training, mentoring, as well as designing and maintaining standards, rule sets, checklists and procedures.
Inspection has been shown to have improved development productivity and reduced the overall development timescale. Time taken for testing and therefore the costs of testing have also been reduced by using inspection. Overall software reliability has been shown to improve.
Managers have better information about their development process and products are more easy to maintain. Your staff should experience reduced stress levels as deadline pressures are less intense.
Implementing inspection and reviews is not that complicated but it takes some time, patience and effort. Here are some key recommendations for success:
- Obtain senior management commitment to the process and find an internal champion who is enthusiastic about its successful implementation.
- Adapt the process to suit your organisation's requirements.
- Ensure proper training and mentoring for inspection and review leaders.
- Protect the authors.
- Maintain discipline in recording and analysing results.
- Always use static analysis tools first if you inspect or review code.
- Accept incremental improvements - do not attempt too much at once.
Steve Allott, Imago QA
Copyright 2000 Imago QA Ltd