Software Development Assignments for a Software Architecture Course

Authors: David Garlan and Mary Shaw

Software Engineering Resources: Proceedings of the ACM/IEEE International Workshop on Software Engineering Education, May, 1994.

Download the Postscript or PDF


As software systems grow in size and complexity their design problem extends beyond algorithms and data structures to issues of system design. These issues|the software architecture level of software design|are becoming increasingly important to the practicing software engineer. Consequently, it is important to nd eective ways to teach this material. To meet this need we developed a course, \Architectures for Software Systems," and have taught it four times. In this paper we describe the principal software development assignments that this course uses to develop skill at applying architectural principles to the design and implementation of software systems. The major challenges in designing such assignments are (1) making sure that students spend their time on architectural issues rather than coding, and (2) helping students establish and maintain a desired architectural style. We address these issues by providing working examples as starting points. These examples are usable in other courses.

Keywords:software engineering education, software architecture, programming assignments, software development exercises, software design

Brought to you by the Composable Software Systems Research Group in the School of Computer Science at Carnegie Mellon University.

Last modified: 8/29/2006. For comments and problems, contact