Computer Science (CS) and Software Engineering (SE) students learn various concepts and practical skills in academia that prepares them for challenges in software industry. Academic institutions are thriving to reduce the gap between industry and academia by employing various practical training approaches (e.g., capstone experience). On that end, inspections (introduced by Fagan at IBM in 1976) are an important verification technique that are widely used by software organizations at all phases (e.g., requirements, design, coding) to detect and fix problems early in software development lifecycle. During an inspection process, group of skilled individuals review a software artifact (e.g., requirements specification document) and report faults present in the artifact that are then used to improve the quality of software being produced.
While there are established courses in software verification that focus heavily on software testing, inspections receive very little focus in academia despite its importance within the software industry (improving quality, minimizing effort and cost). Therefore, it is important to train students on inspection process which can improve their ability to inspect a software artifact to find faults and also help them learn from the common mistakes committed during the software development.
At North Dakota State University (NDSU), we introduced a teaching module that trained CS and SE students on using a fault based checklist method (used in published industrial studies) to inspect the Loan Arranger System (LAS) requirements specification document (that was seeded with 30 realistic faults by Microsoft researchers) to detect and report faults. At the conclusion of this training, the students were provided the actual list of faults present in the document and were asked to reflect based on which fault they detected, the faults they had missed and if they agree or disagree if the fault (actually represents a problem in the specification) is true or not. The goal of this training exercise was to help students understand the nature of true faults and improve their inspection performance by reflecting upon the fault they had missed during the inspection.
Based on the lessons learned from the training exercise, the students used the same inspection technique (fault-checklist) to inspect a new Parking Garage Control System (PGCS) requirements document that was also seeded with faults (by Microsoft researchers). Similar to the training exercise, students reported their faults which were then evaluated for true and false positive for analysis. The results from inspection exercises and post-hoc interview showed that reflection helped students to understand their weakness by reviewing faults that were not detected during inspection. This resulted in improved inspection performance, as students were able to find a larger percentage of faults during the second inspection. The students also reported better insights into the requirements engineering process and the common faults that were committed during the development of both requirements documents. Overall, this approach helped students understand (through practice) the importance of inspection process in improving software quality and also helped improve the ability of students to uncover a larger number of faults present in a software artifact being inspected.
Are you a researcher? Would you like to cite this paper? Visit the ASEE document repository at peer.asee.org for more tools and easy citations.