Capstone Project Description

a paper for

SWEN 6837 - Software Engineering Capstone Project

by

Gary Allison, Debora Byrne, and Carlton Mason

June 14, 1997

Abstract

This capstone projects seeks to define, architect, and deliver a software project which assists in the automation of the software inspection process. We will define here the software inspection process, discuss motivation for automating the process, and describe at a high level the goal of project in assisting this automation.

Introduction

The software inspection is defined by Humphrey as a "detailed technical peer review of software designs or implementations." [1] While software inspection is an essential part of the software process and is effective in removing defects early in the cycle, at least three other benefits are accrued. First, the inspection ensures that any code change is in keeping with the original intent of the system, not merely a bug fix. Second, expertise is developed in the team which builds skills necessary later in maintenance activities. Third, knowing that their efforts are going to be formally inspected, the programmer is apt to do a better job in producing easier to read, better documented, and thus more maintainable code. While this project primarily focuses on the inspection of software source code, it is relevant to note that the inspection process is applicable across the range of software process activities and to their respective artifacts.

Unfortunately, software inspection is not often an activity looked on with great fondness by most programmers in spite of its many benefits. The are many reasons for which to attribute this lack of enthusiasm. Programmers are typically under time pressures for completion of software deliverables and through inspections are intensive in time needed for preparation. The results of a successful inspection are real, but intangible. Defects are removed earlier in the cycle at a lower cost, but often the exact numbers and classification of errors found by inspection are recorded by hand and filed away in a drawer. The benefits actually accrued then are not measured, and management does not recognize neither the time devoted to the review nor the precise benefits realized.

The purpose of this project is to develop automation of software inspection as a beneficial part of the software engineering process. The inspection process itself will be discussed to provide a common ground for understanding. Motivation for automation of the process will be discussed. Finally, the high-level goal for the project will be presented.

The Software Inspection

The acknowledged father of the software inspection is Michael Fagan who introduced inspections at IBM in the mid 1970's [2]. The purpose of the inspection is to identify defects in the inspected artifact, not to judge the performance of the producers of the artifact. This fine distinction is key to a successful inspection process. Since its introduction, the inspection has been adapted by many, but many of the core principles are common:

The review may be facilitated by a checklist of items that the inspectors use in reviewing the artifact. Portions of this checklist may even be assigned to specific inspectors to further focus their review efforts.

Motivation

Software inspections work to identify and correct defects early in the cycle, and increase expertise in the team, but why do inspections need help of the technology? An answer to this can be seen in the difficulties mentioned earlier which provide ample motivation for automation of the inspection process. In resolving these difficulties, certain benefits of automating the inspection process expected are:

Keeping these expected benefits in mind, in the next section we will establish the goals for this capstone project.

Capstone Project Goal

The goal of this capstone project is to produce the benefits listed previously by developing a software project which improves the inspection process. Given limits of resources and time, the project will not seek to automate the entire process, but will instead focus on the area which should result in the most gain from automation. This area is the inspection preparation phase where the inspectors of the software are reviewing the source and recording their comments in preparation for the inspection meeting.

A follow-on document will address the specific requirements for automating the inspection preparation phase.

References

[1]

W. Humphrey, Managing the Software Process, p. 463, Addison-Wesley, 1990.

[2]

Fagan, M., "Design and Code Inspections to Reduce Errors in Program Development." IBM Systems Journal 15, pp 182-211, Vol 3 1976.