Fagan Inspections.
Notes by Dr. Tony Cowling.

Starting in the 1970's, Michael Fagan at IBM began to develop an alternative approach, in which these informal reviews and walkthroughs (but not actual testing) were replaced by more formally structured inspections. These inspections were applied throughout the development process, and were concerned with all aspects of the quality of the documents being inspected, not just whether they appeared to have errors in the logic or functionality that was being described. Thus, Gilb illustrates (figure 12.1) the process model for one system where 11 different inspections were applied, covering the high and low-level designs, the source code, the test plans and test cases, the plan for the manuals and the first and final drafts of each manual. He also gives another example (chapter 21) of a project where initially 13 inspection points were defined, and later extended to 17, although only 5 of them were mandatory: these were for inspection of the initial and full requirements documents (what they called the requirements and product specifications respectively), of the high-level design, of the module test plans and of the code itself. The common feature in both of these is the emphasis on inspecting the early documents, so as to reduce the number of errors that need to be corrected later in the development (cf figure 12.11), and hence the overall cost of the development (cf figure 12.10, which illustrates how costs of fixing a defect increase the later it is found).

Fagan developed a number of rules for the procedures to be used in carrying out these inspections, and these are listed in section 12.1: they are as follows.

* Team members of all levels of seniority are involved.
* There is a prescribed series of steps that must be followed.
* Inspection meetings must be limited to 2 hours long (except where a separate "third hour" is used, as described below).
* Inspections must be led by a trained moderator (whose role is described below).
* Each inspector must have specific roles in the inspection.
* The inspectors should use prepared checklists of questions to be asked, where the lists must not be more than one page long, and the questions will depend on the type of document being inspected.
* The rate at which material is inspected must be controlled, so as to achieve optimum detection of errors.
* Discussion is not permitted as to whether something in the document that is not clear is correct or not: lack of clarity is itself a defect.
* Discussion is not permitted as to how a defect might be corrected: the role of the inspection is to identify it, so that the moderator can subsequently assign responsibility for correcting it.
* If the inspectors feel that they need to discuss how a defect might be corrected, then they should convene a "third hour" meeting for this purpose.
* Statistics must be kept on types of defects found, and used to monitor for weak points in the development process.

In addition to these rules, the important parts of this process are the standard set of steps that must be carried out during an inspection, and the role of the moderator for an inspection. The steps that are required are as follows.

Planning - the amount of material to be inspected is determined, the members of the inspection team are appointed, and (if necessary) responsibilities for different aspects of the inspection allocated to the inspectors.
Overview - needed if the inspectors are not already familiar with the background of the project - consists of a presentation to give them than overall view of the project.
Preparation - inspectors work through the material individually, using the checklists, to identify possible defects.
Meeting - inspectors collectively report suspected defects to the meeting (which may help others to identify other defects), and these are recorded.
Rework - the list of suspected defects is assigned to a person to repair the defects.
Third hour - an optional stage, to allow the inspectors to discuss how defects might be repaired.
Follow-up - it is essential to ensure that the defects have been repaired.

Typically, the moderators role in this will be to organise the steps: that is:
* lead the planning step;
* arrange for the overview to be given if it is needed;
* lead the meeting and ensure that the defects are properly recorded (which often means they act as recorder);
* control the rate at which the meeting works through the material being inspected;
* assign the responsibilities for rework;
* lead the third hour meeting if one is held; and
* check personally that the rework has been carried out.
Thus, the moderator is responsible for ensuring that the whole inspection process is carried out as efficiently as possible, except for being responsible for checking how well the rework has been done, since that should be done by holding another inspection. However, it is the moderator's responsibility to ensure that there is a subsequent inspection of the reworked documents, so that they will not be signed off as fit for use in later stages of the development until a moderator is satisfied that they have passed an inspection.

The use of appropriate checklists is also an important part of an inspection, but the format of these is not prescribed, and in practice any organisation using these sorts of inspections will develop its own checklists for the particular kinds of documents that it is having to inspect. Thus, the checklists used for inspecting a structured requirements document will contain very different questions to checklists for inspecting program code. In general, though, for any document there will be two types of question on the checklists: one set will be concerned with the internal consistency of the documents being inspected (items that are not properly defined, or that appear to be contradictory), and the other set will be concerned with whether these documents are consistent with others that have already been approved: for instance, checking whether the implementation of some code is consistent with the design and specification for it.