The effective maintenance of software requires the ability to read and understand the work products involved. Precise specifications provide abundant opportunities to teach and measure this ability; it is easy to develop exercises that clearly indicate reading ability, are easy to grade, and have answers that are easy to explain to students.
In a typical specification-reading exercise, we give the students a specification and some inputs; they must derive the exact outputs. For example, in one quiz, the students were given the requirements specification for a simple load-and-go assembler and three assembler programs. They had to derive the output produced for each of these programs. Figure 1 shows the scores for this quiz.
Figure 1: Scores for the specification reading exercise
Nearly half the students performed flawlessly. For the other half, the errors were typically strategic rather than tactical. Most of the problems resulted from not knowing the relationships between the various parts of the requirements specification. For example, some students examined only the normal-case behavior, ignoring the exception specifications.