Type checking is considered an important mechanism for detecting programming errors, especially interface errors. This report describes an experiment to assess the defect-detection capabilities of static, inter-module type checking. The experiment uses Ansi C and Kernighan&Ritchie K&R C. The relevant di erence is that the Ansi C compiler checks module interfaces i.e., the parameter lists of calls to external functions, whereas K&R C does not. The experiment employs a counterbalanced design in which each of the 40 subjects, most of them CS Ph.D. students, writes two non-trivial programs that interface with a complex library Motif. Each subject writes one program in Ansi C and one in K&R C. The input to each compiler run is saved and manually analyzed for defects. Results indicate that delivered Ansi C programs contain signi cantly fewer interface defects than delivered K&R C programs. Furthermore, after subjects have gained some familiarity with the interface they are using, Ansi C programmers remove defects faster and are more productive measured in both delivery time and functionality implemented.
An early example is the evaluation of defect-detection capabilities of inter-module type checking in C by Prechelt and Tichy REF .
A Controlled Experiment to Assess the Benefits of Procedure Argument Type Checking
IEEE Trans. Software Eng.
IEEE Trans. Software Eng.
Computer Science