Learning to construct quality software with the Ceilidh system

This paper describes the Ceilidh software quality control environment for the teaching of computer programming. Ceilidh provides students with an integrated environment for developing programs according to specifications and quality standards defined by the teacher. The student's programs are automatically assessed from a number of perspectives including dynamic correctness, program complexity and programming style. The assessment of programs is carried out according to well established software metrics and students may repeatedly re-assess their programs, enabling them gradually to work towards a quality target. The paper gives an overview of the functionality of Ceilidh followed by a more detailed description of the software metrics used. It also discusses some of the insights gained from several years' use at Nottingham. Finally, the paper outlines plans for the future development of Ceilidh including a pilot project involving 30 UK institutes of higher education funded under the Universities Funding Council's Teaching and Learning Technology Programme (TLTP). The paper should be of particular interest to anyone involved in teaching programming, whether it be in university, in schools or in industry, who might wish to construct a similar system or who might wish to obtain and use Ceilidh directly. It should also be of interest to those looking for experiences gained from large-scale applications of software quality metrics.

[1]  Brian W. Kernighan,et al.  The elements of programming style (2. ed.) , 1978 .

[2]  Curtis R. Cook,et al.  A paradigm for programming style research , 1988, SIGP.

[3]  Maurice H. Halstead,et al.  Elements of software science , 1977 .

[4]  William F. Smyth,et al.  Evaluating Measures of Program Quality , 1987, Comput. J..

[5]  Michael J. Rees,et al.  Automatic assessment aids for Pascal programs , 1982, SIGP.

[6]  Elaine J. Weyuker,et al.  On Testing Non-Testable Programs , 1982, Comput. J..

[7]  Patricia Bylebyl Van Verth A system for automatically grading program quality (metrics, software metrics, program complexity) , 1985 .

[8]  Elaine J. Weyuker,et al.  Selecting Software Test Data Using Data Flow Information , 1985, IEEE Transactions on Software Engineering.

[9]  Sandro Morasca,et al.  Assessing software maintainability at the end of high-level design , 1993 .

[10]  Michael Coleman,et al.  Software Engineering for Students , 1986 .

[11]  William E. Howden,et al.  Methodology for the Generation of Program Test Data , 1975, IEEE Transactions on Computers.

[12]  Sallie M. Henry,et al.  The evaluation of software systems' structure using quantitative software metrics , 1984, Softw. Pract. Exp..

[13]  Stephen S. Yau,et al.  Some Stability Measures for Software Maintenance , 1980, IEEE Trans. Software Eng..

[14]  Chris F. Kemerer,et al.  Towards a metrics suite for object oriented design , 2017, OOPSLA '91.

[15]  Enrique Ivan Oviedo Control flow, data flow and program complexity , 1984 .

[16]  R. E. Berry,et al.  A style analysis of C programs , 1985, CACM.

[17]  Martin R. Woodward,et al.  Experience with Path Analysis and Testing of Programs , 1980, IEEE Transactions on Software Engineering.

[18]  Anas N. Al-Rabadi,et al.  A comparison of modified reconstructability analysis and Ashenhurst‐Curtis decomposition of Boolean functions , 2004 .