This paper discusses a method for incorporating several important software engineering concepts that have been traditionally hard to teach into courses at both the undergraduate and graduate level. We have created a project template that can be instantiated in many ways to be tailored to the level of a particular course, the number of students, the quality of students, and the goals of the course. We consider a “large” software project to be one in which each programmer's contribution represents a small part of the overall project (less than 10%). Our project template is a completed software system, which, although too large for a semester project in its complete form, can be easily divided into coherent subsystems. The students are provided with some subsystems, and asked to derive requirements for, design, implement, and test the remaining subsystems. This approach allows the students to work in a large-project environment, reuse existing code, maintain old code, and perform an integration of a significant system. This project has been successfully used in undergraduate and graduate courses that have completely diverging goals and purposes.
[1]
A. Jefferson Offutt,et al.
Anatomy of a software engineering project
,
1988,
SIGCSE '88.
[2]
R.A. DeMillo,et al.
An extended overview of the Mothra software testing environment
,
1988,
[1988] Proceedings. Second Workshop on Software Testing, Verification, and Analysis.
[3]
Richard J. Lipton,et al.
Hints on Test Data Selection: Help for the Practicing Programmer
,
1978,
Computer.
[4]
A. Jefferson Offutt,et al.
An integrated automatic test data generation system
,
1991,
J. Syst. Integr..
[5]
A. Jefferson Offutt,et al.
Constraint-Based Automatic Test Data Generation
,
1991,
IEEE Trans. Software Eng..
[6]
K. N. King,et al.
A fortran language system for mutation‐based software testing
,
1991,
Softw. Pract. Exp..