Experience with a course on architectures for software systems

  • David Garlan
  • Mary Shaw
  • Chris Okasaki
  • Curtis M. Scott
  • Roy F. Swonger
Session 1: Software Engineering Education in the 1990s
Part of the Lecture Notes in Computer Science book series (LNCS, volume 640)


As software systems grow in size and complexity their design problem extends beyond algorithms and data structures to issues of system design. This area receives little or no treatment in existing computer science curricula. Although courses about specific systems are usually available, there is no systematic treatment of the organizations used to assemble components into systems. These issues — the software architecture level of software design — are the subject of a new course that we taught for the first time in Spring 1992. This paper describes the motivation for the course, the content and structure of the current version, and our plans for improving the next version.


Software Engineer Software Architecture Homework Assignment Architectural Style Architectural Description 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [AG92]
    Robert Allen and David Garlan. A formal approach to software architectures. Submitted for publication, January 1992.Google Scholar
  2. [And91]
    Gregory R. Andrews. Paradigms for process interaction in distributed programs. ACM Computing Surveys, 23(1):49–90, March 1991.Google Scholar
  3. [Bac86]
    Maurice J. Bach. The Design of the UNIX Operating System, chapter 5.12, pages 111–119. Software Series. Prentice-Hall, 1986.Google Scholar
  4. [BAP87]
    J. M. Bishop, S. R. Adams, and D. J. Pritchard. Distributing concurrent Ada programs by source translation. Software—Practice and Experience, 17(12):859–884, December 1987.Google Scholar
  5. [Bis87]
    Judy M. Bishop. Ada profile charts in software development. Journal of Pascal, Ada and Modula-2, 8(2), October 1987.Google Scholar
  6. [BO91]
    Don Batory and Sean O'Malley. The design and implementation of hierarchical software systems using reusable components. Technical Report TR-91-22, Department of Computer Science, University of Texas, Austin, June 1991.Google Scholar
  7. [Boo86]
    Grady Booch. Object-oriented development. IEEE Transactions on Software Engineering, SE-12(2):211–221, February 1986.Google Scholar
  8. [Boo87]
    Grady Booch. Software Components with Ada: Structures, Tools and Subsystems. Benjamin/Cummings, Menlo Park, CA, 1987.Google Scholar
  9. [BWW88]
    M. R. Barbacci, C. B. Weinstock, and J. M. Wing. Programming at the processor-memory-switch level. In Proceedings of the 10th International Conference on Software Engineering, pages 19–28, Singapore, April 1988. IEEE Computer Society Press.Google Scholar
  10. [D91]
    Doubleday et al. Building distributed Ada applications from specifications and functional components. In Proceedings of TRI-Ada'91, pages 143–154, San Jose, CA, October 1991. ACM Press.Google Scholar
  11. [DK76]
    Frank DeRemer and Hans H. Kron. Programming-in-the-large versus programming-in-the-small. IEEE Transactions on Software Engineering, SE-2(2):80–86, June 1976.Google Scholar
  12. [DSS90]
    Proceedings of the Workshop on Domain-Specific Software Architectures, July 1990.Google Scholar
  13. [Ear90]
    Anthony Earl. A reference model for computer assisted software engineering environment frameworks. Technical Report HPL-SEG-TN-90-11, Hewlett Packard Laboratories, Bristol, England, August 1990.Google Scholar
  14. [Fi87]
    Bill Flinn and ib Holm Sorensen. CAVIAR: A Case Study in Specification. Prentice Hall International, 1987.Google Scholar
  15. [Fis91]
    Gary Fisher. Application portability profile-APP-The U.S. Government's open system environment profile. US Department of Commerce, April 1991. National Technical Information Service Special Report, 500-187.Google Scholar
  16. [FO85]
    Marek Fridrich and William Older. Helix: The architecture of the XMS distributed file system. IEEE Software, 2(3):21–29, May 1985.Google Scholar
  17. [GD90]
    David Garlan and Norman Delisle. Formal specifications as reusable frameworks. In VDM'90: VDM and Z — Formal Methods in Software Development, Kiel, Germany, 1990. Springer-Verlag, LNCS 428.Google Scholar
  18. [GKN88]
    David Garlan, Gail E. Kaiser, and David Notkin. On the criteria to be used in composing tools into systems. Technical Report 88-08-09, Department of Computer Science, University of Washington, August 1988.Google Scholar
  19. [GN91]
    David Garlan and David Notkin. Formalizing design spaces: Implicit invocation mechanisms. In VDM'91: Formal Software Development Methods, pages 31–44. Springer-Verlag, LNCS 551, October 1991.Google Scholar
  20. [Gro91]
    MIF Working Group. Master: A prototech module interconnection formalism. Draft of December 1991, 1991.Google Scholar
  21. [H+88]
    Robert Harper et al. Introduction to Standard ML. Technical report, Laboratory for Foundations of Computer Science, Computer Science Department, University of Edinburgh, March 1988.Google Scholar
  22. [HGN91]
    A. Nico Habermann, David Garlan, and David Notkin. Generation of integrated task-specific software environments. In Richard F. Rashid, editor, CMU Computer Science: A 25th Commemorative, Anthology Series, pages 69–98. ACM Press, 1991.Google Scholar
  23. [HK91]
    Iain Houston and Steve King. Experiences and results from the use of Z in IBM. In VDM'91: Formal Software Development Methods, number 551 in Lecture Notes in Computer Science, pages 588–595. Springer-Verlag, October 1991.Google Scholar
  24. [HR90]
    Barbara Hayes-Roth. Architectural foundations for real-time performance in intelligent agents. The Journal of Real-Time Systems, Kluwer Academic Publishers, 2:99–125, 1990.Google Scholar
  25. [I83]
    J. D. Ichbiah et al. Rationale for the design of the Ada programming language. SIGPLAN Notices, 14(16 (Part B)):8:1–16, 13:1–21, June 1983. Chapters 8 (Modules) and 13 (Generic Program Units).Google Scholar
  26. [Joh86]
    Stephen C. Johnson. YACC: yet another compiler-compiler. In UNIX Programmer's Supplementary Documents, volume PS1, pages 15:1–33. University of California, Berkeley, 1986.Google Scholar
  27. [Lam84]
    Butler W. Lampson. Hints for computer system design. IEEE Software, 1(1):11–28, January 1984.Google Scholar
  28. [Lan90]
    Thomas G. Lane. A design space and design rules for user interface software architecture. Technical Report CMU/SEI-90-TR-22 ESD-90-TR-223, Carnegie Mellon University, Software Engineering Institute, November 1990.Google Scholar
  29. [Lin87]
    Mark A. Linton. Distributed management of a software database. IEEE Software, 4(6):70–76, November 1987.Google Scholar
  30. [LS79]
    Hugh C. Lauer and Edwin H. Satterthwaite. Impact of MESA on system design. In Proceedings of the Third International Conference on Software Engineering, pages 174–175. IEEE Computer Society Press, May 1979.Google Scholar
  31. [LS86]
    M. E. Lesk and E. Schmidt. LEX—a lexical analyzer generator. In UNIX Programmer's Supplementary Documents, vol. PS1, pages 16:1–13. University of California, Berkeley, 1986.Google Scholar
  32. [Nii86a]
    H. Penny Nii. Blackboard systems Part 1: The blackboard model of problem solving and the evolution of blackboard architectures. AI Magazine, 7(3):38–53, Summer 1986. Reprinted with corrections by AI Magazine.Google Scholar
  33. [Nii86b]
    H. Penny Nii. Blackboard systems Part 2: Blackboard application systems and a knowledge engineering perspective. AI Magazine, 7(4):82–107, August 1986. Reprinted with corrections by AI Magazine.Google Scholar
  34. [Par72]
    D. L. Parnas. On the criteria to be used in decomposing systems into modules. Communications of the ACM, 15(12):1053–1058, December 1972.Google Scholar
  35. [Pau85]
    Mark C. Paulk. The arc network: A case study. IEEE Software, 2(3):61–69, May 1985.Google Scholar
  36. [PCW85]
    David L. Parnas, Paul C. Clements, and David M. Weiss. The modular structure of complex systems. IEEE Transactions on Software Engineering, SE-11(3):259–266, March 1985.Google Scholar
  37. [PDN86]
    Ruben Prieto-Diaz and James M. Neighbors. Module interconnection languages. The Journal of Systems and Software, 6(4):307–334, November 1986.Google Scholar
  38. [Per87]
    Dewayne E. Perry. Software interconnection models. In Proceedings of the Ninth International Conference on Software Engineering, pages 61–68, Monterey, CA, March 1987. IEEE Computer Society Press.Google Scholar
  39. [PW91]
    Dewayne E. Perry and Alexander L. Wolf. Software architecture. Submitted for publication, January 1991.Google Scholar
  40. [RC86]
    Sridhar A. Raghavan and Donald R. Chand. Applications generators & fourth generation languages. Technical Report TR-86-02, Wang Institute and Bentley College, February 1986.Google Scholar
  41. [S+87]
    Alfred Z. Spector et al. Camelot: A distributed transaction facility for Mach and the Internet — an interim report. Technical Report CMU-CS-87-129, Carnegie Mellon University, June 1987.Google Scholar
  42. [S+88]
    V. Seshadri et al. Semantic analysis in a concurrent compiler. In Proceedings of ACM SIGPLAN '88 Conference on Programming Language Design and Implementation. ACM SIGPLAN Notices, 1988.Google Scholar
  43. [SG86]
    Robert W. Scheifler and Jim Gettys. The X window system. ACM Transactions on Graphics, 5(2):79–109, April 1986.Google Scholar
  44. [SG90]
    Lui Sha and John B. Goodenough. Real-time scheduling theory and Ada. Computer, pages 53–62, April 1990.Google Scholar
  45. [Sha85]
    Mary Shaw. What can we specify? Questions in the domains of software specifications. In Proceedings of the Third International Workshop on Software Specification and Design, pages 214–215. IEEE Computer Society Press, August 1985.Google Scholar
  46. [Sha90a]
    Mary Shaw. Elements of a design language for software architecture. Unpublished position paper, 1990.Google Scholar
  47. [Sha90b]
    Mary Shaw. Toward higher-level abstractions for software systems. In Data & Knowledge Engineering, volume 5, pages 119–128. Elsevier Science Publishers B.V., North Holland, 1990.Google Scholar
  48. [Sha91]
    Mary Shaw. Heterogeneous design idioms for software architecture. In Proceedings of the Sixth International Workshop on Software Specification and Design, IEEE Computer Society, Software Engineering Notes, pages 158–165, Como, Italy, October 25–26 1991.Google Scholar
  49. [Spi88]
    J. Michael Spivey. The Fuzz Manual. Computing Science Consultancy, 2 Willow Close, Garsington, Oxford OX9 9AN, UK, 1988.Google Scholar
  50. [Spi89a]
    J. M. Spivey. The Z Notation: A Reference Manual. Prentice Hall, 1989.Google Scholar
  51. [Spi89b]
    J.M. Spivey. An introduction to Z and formal specification. Software Engineering Journal, 4(1):40–50, January 1989.Google Scholar
  52. [SST86]
    Steven A. Shafer, Anthony Stentz, and Charles E. Thorpe. An architecture for sensor fursion in a mobile robot. In Proceedings of the IEEE International Conference on Robotics and Automation, pages 2002–2010, San Franciso, CA, April 1986.Google Scholar
  53. [Sta88]
    John A. Stankovic. Misconceptions about real-time computing. Computer, Vol.21(10):10–19, October 1988.Google Scholar
  54. [Tan81]
    Andrew S. Tannenbaum. Network protocols. ACM Computing Surveys, 13(4):453–489, December 1981.Google Scholar
  55. [WBJ90]
    Rebecca J. Wirfs-Brock and Ralph E. Johnson. Surveying current research in object-oriented design. Communications of the ACM, 33(9):104–124, September 1990.Google Scholar
  56. [Zav91]
    Pamela Zave. An insider's evaluation of PAISLey. IEEE Transactions on Software Engineering, 17(3):212–225, March 1991.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1992

Authors and Affiliations

  • David Garlan
    • 1
  • Mary Shaw
    • 1
  • Chris Okasaki
    • 1
  • Curtis M. Scott
    • 1
  • Roy F. Swonger
    • 2
  1. 1.School of Computer ScienceCarnegie Mellon UniversityPittsburgh
  2. 2.Digital Equipment CorporationNashua

Personalised recommendations