Fagan inspection
Encyclopedia
Fagan inspection refers to a structured process of trying to find defects in development documents such as programming code
, specifications, designs and others during various phases of the software development process
. It is named after Michael Fagan who is credited with being the inventor of formal software inspection
s.
Fagan Inspection defines a process as a certain activity with a pre-specified entry and exit criteria
. In every activity or operation for which entry and exit criteria are specified Fagan Inspections can be used to validate if the output of the process complies with the exit criteria specified for the process.
Examples of activities for which Fagan Inspection can be used are:
is a typical application of Fagan Inspection; software development process is a series of operations which will deliver a certain end product and consists of operations like requirements definition, design, coding up to testing and maintenance. As the costs to remedy a defect are up to 10-100 times less in the early operations compared to fixing a defect in the maintenance phase it is essential to find defects as close to the point of insertion as possible. This is done by inspecting the output of each operation and comparing that to the output requirements, or exit-criteria
of that operation.
Exit criteria are the criteria or requirements which must be met to complete a specific process. For example for Fagan inspections the low-level document must comply with specific exit-criteria (as specified in the high-level document) before the development process can be taken to the next phase.
The exit-criteria are specified in a high-level document, which is then used as the standard to compare the operation result (low-level document) to during the inspections. Deviations of the low-level document from the requirements specified in the high-level document are called defects and can be categorized in Major Defects and Minor Defects.
In the process of software inspection the defects which are found are categorized in two categories: major and minor defects (often many more categories are used). The defects which are incorrect or even missing functionality or specifications can be classified as major defects: the software will not function correctly when these defects are not being solved.
In contrast to major defects, minor defects do not threaten the correct functioning of the software, but are mostly small errors like spelling mistakes in documents or optical issues like incorrect positioning of controls in a program interface.
If verification fails, go back to the rework process.
Together with the qualitative benefits mentioned above major "cost improvements" can be reached as the avoidance and earlier detection of errors will reduce the amount of resources needed for debugging in later phases of the project.
In practice very positive results have been reported by large corporations like IBM indicating that 80-90% of defects can be found and savings in resources up to 25% can be reached [Fagan, 1986]...
(EMS) to improve the productivity of the meetings with positive results [Genuchten, 1997].
Other researchers propose the usage of software that keeps a database of detected errors and automatically scans program code for these common errors [Doolan,1992]. This again should result in improved productivity.
As can be seen in the high-level document for this project is specified that in all software code produced variables should be declared ‘strong typed’. On the basis of this requirement the low-level document is checked for defects. Unfortunately a defect is found on line 1, as a variable is not declared ‘strong typed’. The defect found is then reported in the list of defects found and categorized according to the categorizations specified in the high-level document.
Source code
In computer science, source code is text written using the format and syntax of the programming language that it is being written in. Such a language is specially designed to facilitate the work of computer programmers, who specify the actions to be performed by a computer mostly by writing source...
, specifications, designs and others during various phases of the software development process
Software development process
A software development process, also known as a software development life cycle , is a structure imposed on the development of a software product. Similar terms include software life cycle and software process. It is often considered a subset of systems development life cycle...
. It is named after Michael Fagan who is credited with being the inventor of formal software inspection
Software inspection
Inspection in software engineering, refers to peer review of any work product by trained individuals who look for defects using a well defined process...
s.
Definition
Fagan Inspection is a group review method used to evaluate output of a given process.Fagan Inspection defines a process as a certain activity with a pre-specified entry and exit criteria
Exit-criteria
Exit criteria are the criteria or requirements which must be met to complete a specific process.For example for Fagan Inspection the low-level document must comply with specific exit-criteria before the development process can be taken to the next phase.In telecommunications, when testing new...
. In every activity or operation for which entry and exit criteria are specified Fagan Inspections can be used to validate if the output of the process complies with the exit criteria specified for the process.
Examples of activities for which Fagan Inspection can be used are:
- Requirement specification
- Software/Information System architecture (for example DYA)
- Programming (for example for iterations in XPExtreme ProgrammingExtreme programming is a software development methodology which is intended to improve software quality and responsiveness to changing customer requirements...
or DSDMDynamic Systems Development MethodDynamic systems development method is an agile project delivery framework, primarily used as a software development method. DSDM was originally based upon the rapid application development method. In 2007 DSDM became a generic approach to project management and solution delivery...
) - Software testing (for example when creating test scripts)
Usage
The software development processSoftware development process
A software development process, also known as a software development life cycle , is a structure imposed on the development of a software product. Similar terms include software life cycle and software process. It is often considered a subset of systems development life cycle...
is a typical application of Fagan Inspection; software development process is a series of operations which will deliver a certain end product and consists of operations like requirements definition, design, coding up to testing and maintenance. As the costs to remedy a defect are up to 10-100 times less in the early operations compared to fixing a defect in the maintenance phase it is essential to find defects as close to the point of insertion as possible. This is done by inspecting the output of each operation and comparing that to the output requirements, or exit-criteria
Exit-criteria
Exit criteria are the criteria or requirements which must be met to complete a specific process.For example for Fagan Inspection the low-level document must comply with specific exit-criteria before the development process can be taken to the next phase.In telecommunications, when testing new...
of that operation.
Criteria
Entry criteria are the criteria or requirements which must be met to enter a specific process. For example for Fagan inspections the high- and low-level documents must comply with specific entry-criteria before they can be used for a formal inspection process.Exit criteria are the criteria or requirements which must be met to complete a specific process. For example for Fagan inspections the low-level document must comply with specific exit-criteria (as specified in the high-level document) before the development process can be taken to the next phase.
The exit-criteria are specified in a high-level document, which is then used as the standard to compare the operation result (low-level document) to during the inspections. Deviations of the low-level document from the requirements specified in the high-level document are called defects and can be categorized in Major Defects and Minor Defects.
Defects
According to M.E. Fagan, “A defect is an instance in which a requirement is not satisfied.”In the process of software inspection the defects which are found are categorized in two categories: major and minor defects (often many more categories are used). The defects which are incorrect or even missing functionality or specifications can be classified as major defects: the software will not function correctly when these defects are not being solved.
In contrast to major defects, minor defects do not threaten the correct functioning of the software, but are mostly small errors like spelling mistakes in documents or optical issues like incorrect positioning of controls in a program interface.
Typical operations
In a typical Fagan inspection the inspection process consists of the following operations:- Planning
- Preparation of materials
- Arranging of participants
- Arranging of meeting place
- Overview
- Group education of participants on the materials under review
- Assignment of roles
- Preparation
- The participants review the item to be inspected and supporting material to prepare for the meeting noting any questions or possible defects
- The participants prepare their roles
- Inspection meeting
- Actual finding of defect
- Rework
- Rework is the step in software inspection in which the defects found during the inspection meeting are resolved by the author, designer or programmer. On the basis of the list of defects the low-level document is corrected until the requirements in the high-level document are met.
- Follow-up
- In the follow-up phase of software inspections all defects found in the inspection meeting should be corrected (as they have been fixed in the rework phase). The moderator is responsible for verifying that this is indeed the case. He should verify if all defects are fixed and no new defects are inserted while trying to fix the initial defects. It is crucial that all defects are corrected as the costs of fixing them in a later phase of the project will be 10 to 100 times higher compared to the current costs.
Follow-up
In the follow-up phase of a Fagan Inspection, defects fixed in the rework phase should be verified. The moderator is usually responsible for verifying rework. Sometimes fixed work can be accepted without being verified, such as when the defect was trivial. In non-trivial cases, a full re-inspection is performed by the inspection team (not only the moderator).If verification fails, go back to the rework process.
Roles
The participants of the inspection process are normally just members of the team that is performing the project. The participants fulfill different roles within the inspection process:- Author/Designer/Coder: the person who wrote the low-level document
- Reader: paraphrases the document
- Reviewers: reviews the document from a testing standpoint
- Moderator: responsible for the inspection session, functions as a coach
Benefits and results
By using inspections the number of errors in the final product can significantly decrease, creating a higher quality product. In the future the team will even be able to avoid errors as the inspection sessions give them insight in the most frequently made errors in both design and coding providing avoidance of error at the root of their occurrence. By continuously improving the inspection process these insights can even further be used [Fagan, 1986].Together with the qualitative benefits mentioned above major "cost improvements" can be reached as the avoidance and earlier detection of errors will reduce the amount of resources needed for debugging in later phases of the project.
In practice very positive results have been reported by large corporations like IBM indicating that 80-90% of defects can be found and savings in resources up to 25% can be reached [Fagan, 1986]...
Improvements
Although the Fagan Inspection method has proved to be very effective, improvements have been suggested by multiple researchers. Genuchten for example has been researching the usage of an Electronic Meeting SystemElectronic meeting system
An electronic meeting system is a type of computer software that facilitates creative problem solving and decision-making of groups within or across organizations. The term was coined by Jay Nunamaker et al. in 1991. The term is synonymous with Group Support Systems and essentially synonymous...
(EMS) to improve the productivity of the meetings with positive results [Genuchten, 1997].
Other researchers propose the usage of software that keeps a database of detected errors and automatically scans program code for these common errors [Doolan,1992]. This again should result in improved productivity.
Example
In the diagram a very simple example is given of an inspection process in which a two-line piece of code is inspected on the basis on a high-level document with a single requirement.As can be seen in the high-level document for this project is specified that in all software code produced variables should be declared ‘strong typed’. On the basis of this requirement the low-level document is checked for defects. Unfortunately a defect is found on line 1, as a variable is not declared ‘strong typed’. The defect found is then reported in the list of defects found and categorized according to the categorizations specified in the high-level document.