On teaching the rational design process

  • Terry Shepard
  • Dan Hoffman
Session 1: Software Engineering Education in the 1990s
Part of the Lecture Notes in Computer Science book series (LNCS, volume 640)


In 1986, a rational design process for software was proposed [1]. This paper reports on experience teaching a course based on this process in an undergraduate computer engineering curriculum, with a companion course at the graduate level helping to feed the undergraduate course. Because the courses are for computer engineers, the emphasis is on real-time systems. The main issue is how to simplify the details of the steps so that all the steps can be learned and applied within the bounds of a one semester course. The culmination of the two courses is a project in which all the steps are used to create a working piece of software. In this paper, the steps as taught are described, with the aid of examples, and then some of the issues influencing the particular choice of material taught are discussed.


Software Engineering Program Specification Access Program Interface Specification Concrete State 
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. [1]
    David Lorge Parnas and Paul Clements, “A Rational Design Process: How and Why to Fake It”, IEEE Transactions on Software Engineering, V. SE-12, N. 2, February 1986, pp. 251–257Google Scholar
  2. [3]
    Grady Booch, Object Oriented Development, IEEE Transactions on Software Engineering, Feb 1986Google Scholar
  3. [4]
    Bertrand Meyer, Object-oriented software construction, Prentice Hall, 1988)Google Scholar
  4. [5]
    Tom DeMarco, Structured Analysis and System Specification, Prentice-Hall, 1978Google Scholar
  5. [6]
    Peter Coad and Edward Yourdon, “Object-Oriented Analysis”, Yourdon Press Computing Series. Available from Object International in Austin, TX.Google Scholar
  6. [7]
    Paul Ward, How to Integrate Object Orientation with Structured Analysis and Design, IEEE Software, Mar. 1989, pp. 74–82Google Scholar
  7. [8]
    Derek Hatley & Imtiaz Pirbhai, Strategies for Real-Time System Specification, Dorset House, 1987Google Scholar
  8. [9]
    Paul Ward and Stephen Mellor, Structured Development for Real Time Systems, Vols. 1–3, Yourdon Press, 1985Google Scholar
  9. [2]
    Dan Hoffman, “An Undergraduate Course in Software Design”, Proc. SEI Conf. Software Eng. Education, Apr 1988, pp. 164–168Google Scholar
  10. [10]
    Glen W. Russell, “Experience with Inspection in Ultralarge-Scale Developments”, IEEE Software, January 1991, pp. 25–31Google Scholar
  11. [11]
    Fred Brooks, No Silver Bullet, IEEE Computer, Apr. 1987Google Scholar
  12. [12]
    D. Marca & C.L. McGowan, SADT: Structured Analysis and Design Technique, McGraw Hill, 1988Google Scholar
  13. [13]
    K.L. Heninger, “Specifying Software Requirements for Complex Systems: New Techniques and their Applications.”, IEEE Trans. Software Engineering, SE-6, 1 (Jan 1980), 2–13 (reprinted in IEEE Tutorial on System and Requirements Engineering, 1990, pp. 555–566).Google Scholar
  14. [14]
    A. John Van Schouwen, The A-7 Requirements Model: Re-examination for Real-Time Systems and an Application to Monitoring Systems (M.Sc. Thesis), QUCIS Tech.Rep. 90-276, Revision 3, January 1991Google Scholar
  15. [15]
    Ray Buhr, Practical Visual Techniques in System Design, Prentice Hall, 1990Google Scholar
  16. [16]
    David Lorge Parnas, “On the Criteria to be used in Decomposing Systems into Modules”, Communications of the ACM, Vol. 15, No. 12, Dec. 1972, pp. 1053–1058Google Scholar
  17. [17]
    Katherine H. Britton and David Lorge Parnas, “A-7E Software Module Guide”, Naval Research Laboratories Report 4702, Dec. 1981Google Scholar
  18. [18]
    David Lorge Parnas, “Designing Software for Ease of Extension and Contraction”, IEEE Transactions on Software Engineering, Vol. SE-5, No. 2, March 1979, pp. 128–138Google Scholar
  19. [19]
    Dan Hoffman, “Practical Interface Specification”, Software Practice and Experience, Vol. 19(2), February 1989, pp. 127–148Google Scholar
  20. [20]
    J.M. Spivey, The Z notation: A Reference ManualGoogle Scholar
  21. [21]
    Cliff Jones, Systematic Software Development using VDM, Prentice Hall, 1986Google Scholar
  22. [22]
    Ian Hayes, Specification Case Studies, Prentice Hall, 1987Google Scholar
  23. [23]
    David Lorge Parnas and Yabo Wang, The Trace Assertion Method of Module Interface Specification, QUCIS Tech Report 89-261Google Scholar
  24. [24]
    Grady Booch, Software Components with Ada, Benjamin Cummings, 1987 (components available in both Ada and C + +)Google Scholar
  25. [25]
    Dan Hoffman, “A CASE Study in Module Testing”, 1989 Conference on Software Maintenance, October 1989, Miami, FloridaGoogle Scholar
  26. [26]
    R.C. Linger, H.D. Mills and B.I. Witt, “Structured Programming: Theory and Practice”, Addison Wesley, 1979Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1992

Authors and Affiliations

  • Terry Shepard
    • 1
  • Dan Hoffman
    • 2
  1. 1.Department of Electrical and Computer EngineeringRoyal Military College of CanadaKingstonCanada
  2. 2.Department of Computer ScienceUniversity of VictoriaVictoriaCanada

Personalised recommendations