Integrating research, reuse, and integration into software engineering courses
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.
Unable to display preview. Download preview PDF.
- 1.H. Agrawal, R. DeMillo, R. Hathaway, Wm. Hsu, Wynne Hsu, E. Krauser, R. J. Martin, A. Mathur, and E. Spafford. Design of mutant operators for the C programming language. Technical report SERC-TR-41-P, Software Engineering Research Center, Purdue University, West Lafayette IN, March 1989.Google Scholar
- 2.C. L. Bullard, I. Caldwell, J. Harrell, C. Hinkle, and A. J. Offutt. Anatomy of a software engineering project. In Proceedings of the 1988 SIGCSE Technical Symposium, pages 129–133, Atlanta GA, February 1988.Google Scholar
- 3.R. A. DeMillo, D. S. Guindi, K. N. King, W. M. McCracken, and A. J. Offutt. An extended overview of the Mothra software testing environment. In Proceedings of the Second Workshop on Software Testing, Verification, and Analysis, pages 142–151, Banff Alberta, July 1988. IEEE Computer Society Press.Google Scholar
- 4.R. A. DeMillo, R. J. Lipton, and F. G. Sayward. Hints on test data selection: Help for the practicing programmer. IEEE Computer, 11(4):34–41, April 1978.Google Scholar
- 5.R. A. DeMillo and A. J. Offutt. Constraint-based automatic test data generation. IEEE Transactions on Software Engineering, 17(9):900–910, September 1991.Google Scholar
- 6.K. N. King and A. J. Offutt. A Fortran language system for mutation-based software testing. Software-Practice and Experience, 21(7):685–718, July 1991.Google Scholar
- 7.A. J. Offutt. An integrated automatic test data generation system. Journal of Systems Integration, 1(3):391–409, November 1991.Google Scholar