Skip to main content

An undergraduate course in software design

  • Conference paper
  • First Online:

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 327))

Abstract

While there are many software engineering courses being offered today, there are few that successfully teach software design in a large system context. Many of the courses present good ideas but neglect concrete design techniques and leave the students ill-equipped to actually do software design. We describe a course whose focus is the design and use of software modules. The course emphasizes practical module specification methods and provides students with experience in the roles of module designer, implementor, tester, and user. We describe the course content and format in detail and summarize our teaching experience. We conclude with recommendations for standardization in software engineering education.

Research supported by the Natural Sciences and Engineering Research Council of Canada under grant A8067.

This is a preview of subscription content, log in via an institution.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. K.H. Britton et al. A procedure for designing abstract interfaces for device interface modules. In Proc. of the Fifth Intl. Conf. on Software Engineering, IEEE, March 1978.

    Google Scholar 

  2. B.W. Boehm. Software engineering. IEEE Trans. Computers, c-25(12), December 1976.

    Google Scholar 

  3. W. Bartussek and D.L. Parnas. Using assertions about traces to write abstract specifications for software modules. In Second Conference of the European Cooperation in Informatics, Springer-Verlag, 1978.

    Google Scholar 

  4. F.P. Brooks. The Mythical Man-Month. Addison-Wesley, 1975.

    Google Scholar 

  5. F.B. Brooks. No silver bullet — essence and accidents of software engineering. IEEE Computer, 20(4), April 1987.

    Google Scholar 

  6. E.W. Dijkstra. The structure of ‘THE'-multiprogramming system. Commun. ACM, 11(5):341–346, May 1968.

    Article  MATH  Google Scholar 

  7. E.W. Dijkstra. A Discipline of Programming. Prentice-Hall, Inc., 1976.

    Google Scholar 

  8. S. Feldman. Make — a program for maintaining computer programs. Software — Practice and Experience, 9(3), March 1979.

    Google Scholar 

  9. P. Freeman. Essential elements of software engineering education revisited. IEEE Trans. Soft. Eng., SE-13(11), November 1987.

    Google Scholar 

  10. K.L. Heninger. Specifying software requirements for complex systems: new techniques and their applications. IEEE Trans. Soft. Eng., SE-6(1):2–13, January 1980.

    Google Scholar 

  11. D.M. Hoffman. Practical Interface Specifications. Technical Report DCS-75-IR, University of Victoria, Department of Computer Science, 1988.

    Google Scholar 

  12. R.N. Horspool. C Programming in the Berkeley Unix Environment. Prentice-Hall Canada, 1986.

    Google Scholar 

  13. D.M. Hoffman and R. Snodgrass. Trace specifications: methodology and models (accepted for publication). IEEE Trans. Soft. Eng., 1986.

    Google Scholar 

  14. B.W. Kernighan and P.J. Plauger. Software Tools In Pascal. Addison-Wesley, 1981.

    Google Scholar 

  15. M.J. King and J.P. Pardoe. Program Design Using JSP — a Practical Introduction. Macmillan Publishers Ltd., 1985.

    Google Scholar 

  16. D.L. Parnas. On the criteria to be used in decomposing systems into modules. Commun. ACM, 15(12):1053–1058, December 1972.

    Article  Google Scholar 

  17. D.L. Parnas. On a ‘buzzword': hierarchical structure. In Proceedings of the IFIP Congress 1974, North Holland Publishing Co., 1974.

    Google Scholar 

  18. D.L. Parnas. Use of Abstract Interfaces in the Development of Software for Embedded Computer Systems. NRL Report 8047, Naval Research Laboratory, 1977.

    Google Scholar 

  19. D.L. Parnas. Designing software for ease of extension and contraction. In Proc. of the Third Intl. Conf. on Software Engineering, pages 264–277, IEEE, 1978.

    Google Scholar 

  20. D.L. Parnas and P.C. Clements. A rational design process: how and why to fake it. IEEE Trans. Soft. Eng., SE-12(2):251–257, February 1986.

    Google Scholar 

  21. W.W. Royce. Managing the development of large software systems. In Proc. of the Ninth Intl. Conf. on Software Engineering, IEEE, 1987.

    Google Scholar 

  22. D.M. Weiss. Teaching a software design methodology. IEEE Trans. Soft. Eng., SE-13(11), November 1987.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Gary A. Ford

Rights and permissions

Reprints and permissions

Copyright information

© 1988 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Hoffman, D. (1988). An undergraduate course in software design. In: Ford, G.A. (eds) Software Engineering Education. SEI 1988. Lecture Notes in Computer Science, vol 327. Springer, New York, NY. https://doi.org/10.1007/BFb0043597

Download citation

  • DOI: https://doi.org/10.1007/BFb0043597

  • Published:

  • Publisher Name: Springer, New York, NY

  • Print ISBN: 978-0-387-96854-4

  • Online ISBN: 978-0-387-34779-0

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics