Encyclopedia of Education and Information Technologies

2020 Edition
| Editors: Arthur Tatnall

Teaching Software Design Techniques in University Courses

  • Jonathan D. Holmes
  • Kevin R. ParkerEmail author
  • Bill Davey
  • Joseph T. Chao
Reference work entry
DOI: https://doi.org/10.1007/978-3-030-10576-1_132



Software design techniques focus on reusable software architectural structures such as frameworks and design patterns used to facilitate software development. Software design techniques go well beyond both programming best practices and software design guidelines like cohesion and coupling.


Large scale reuse of software architectures and detailed design are made possible through the use of design patterns and frameworks, respectively. Design patterns support reuse of software architecture and design, while frameworks support reuse of detailed design and code (Crawford et al. 2006).

Any academic program responsible for teaching software design concepts must continually seek approaches by which to improve the ways in which students are prepared for the work force. Software design concepts...

This is a preview of subscription content, log in to check access.


  1. ACM/IEEE-CS Joint Task Force on Computing Curricula (2013) Computer Science Curricula 2013. ACM Press and IEEE Computer Society Press.  https://doi.org/10.1145/2534860
  2. Alexander C, Ishikawa S, Silverstein M (1977) A pattern language. Oxford University Press, OxfordGoogle Scholar
  3. Ali Z, Bolinger J, Herold M, Lynch T, Ramanathan J, Ramnath, R (2011) Teaching object-oriented software design within the context of software frameworks. In: Proceedings of the 41st annual ASEE/IEEE frontiers in education conference, pp 1–5. http://citeseerx.ist.psu.edu/viewdoc/download?doi=
  4. Astrachan O, Berry G, Cox L, Mitchener G (1998) Design patterns: An essential component of CS curricula. In: Proceedings of the twenty-ninth SIGCSE Technical symposium on Computer science education, pp 153–160. http://www.cs.duke.edu/~ola/papers/patterns.pdf
  5. Caspersen ME, Christensen HB (2008) Frameworks in teaching. In: Bennedsen J, Caspersen ME, Kölling M (eds) Reflections on the teaching of programming methods and implementations. Springer-Verlag, Heidelberg, pp 190–205CrossRefGoogle Scholar
  6. Chao JC, Parker KR, Davey B (2013) Navigating the framework jungle for teaching web application development. J Issues Inf Sci Inf Technol 10:95–109.  https://doi.org/10.28945/1798. http://iisit.org/Vol10/IISITv10p095-109Chao0092.pdfCrossRefGoogle Scholar
  7. Christensen HB (2004) Frameworks: putting design patterns into perspective. In: Proceedings of the 9th annual SIGCSE conference on innovation and technology in Computer science education, pp 142–145. http://www.daimi.au.dk/~hbc/publication/iticse2004.pdf
  8. Christensen HB, Caspersen ME (2002) Frameworks in CS1 – a different way of introducing event-driven programming. In: Proceedings of the 7th annual conference on innovation and technology in Computer science education, pp 75–79. http://cs.au.dk/~mec/publications/conference/03%2D%2Diticse2002.pdfGoogle Scholar
  9. Colesky M, Futcher L, Van Niekerk J (2013) Design patterns for secure software development: demonstrating security through the MVC pattern. In: Proceedings of the 15th annual conference on WWW applications. Cape Town, pp 10–13Google Scholar
  10. Crawford B, Castro C, Monfroy E (2006) Knowledge management in different software development approaches. In: Yakhno T, Neuhold EJ (eds) Advances in information systems. ADVIS 2006. Lecture notes in computer science, vol 4243. Springer, Berlin, pp 304–313Google Scholar
  11. Cunningham W, Beck K (1988) Using a pattern language for programming. Addendum to the Proceedings of OOPSLA’87, ACM SIGPLAN Notices, 23, 5Google Scholar
  12. Esakia A, McCrickard DS (2016) An adaptable model for teaching mobile app development. 2016 IEEE frontiers in education conference. Erie, 2016, pp 1–9.  https://doi.org/10.1109/FIE.2016.7757478
  13. Gacimartín C, Hernández J, Larrabeiti D (2011) A middleware architecture for designing TV-based adapted applications for the elderly. In: Jacko J (ed) Human-computer interaction. Design and development approaches, vol 6761. Springer-Verlag, Heidelberg, pp 443–449CrossRefGoogle Scholar
  14. Gamma E, Helm R, Johnson R, Vlissides J (1993) Design patterns: abstraction and reuse of object-oriented design. In: Proceedings of the 7th European conference on object-oriented programming, pp 406–431. http://www.cs.pitt.edu/~mock/cs1530/lectures2/ecoop93-patterns.pdf
  15. Gamma E, Helm R, Johnson R, Vlissides J (1995) Design patterns: elements of reusable object-oriented software. Addison-Wesley Professional, IndianapoliszbMATHGoogle Scholar
  16. Gravino C, Risi M (2017) How the use of design patterns affects the quality of software systems: a preliminary investigation. In: 2017 43rd Euromicro conference on software engineering and advanced applications (SEAA) IEEE, pp 274–277.  https://doi.org/10.1109/SEAA.2017.32
  17. Hanson S, Fossum TV (2005) Refactoring model-view-controller. J Comput Sci Coll 21(1):120–129. http://www.cs.uwp.edu/staff/hansen/publications/StopWatch/mvc.ccsc.pdfGoogle Scholar
  18. Hundley J (2008) A review of using design patterns in CS1. In: Proceedings of the 46th. Annual southeast regional conference on XX, pp 30–33Google Scholar
  19. Hussain S, Keuung J, Khan AA (2017) The effect of Gang-of-Four design patterns usage on design quality attributes. In: 2017 IEEE international conference on software quality, reliability and security (QRS). IEEE, pp 263–273.  https://doi.org/10.1109/QRS.2017.37
  20. IEEE (1986) IEEE standard for software unit testing. http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=27763
  21. Kasik V, Stankus M (2010) Graphical development system design for creating the FPGA-based applications in biomedicine. In: Bamidis PD, Pallikarakis N (eds) XII Mediterranean conference on medical and biological engineering and computing 2010, vol 29. Springer-Verlag, Heidelberg, pp 879–882CrossRefGoogle Scholar
  22. Khwaja S, Alshayeb M (2015) Survey on software design-pattern specification languages. ACM Comput Surv 49(1):1–35.  https://doi.org/10.1145/2926966CrossRefGoogle Scholar
  23. Morse SF, Anderson CL (2004) Introducing application design and software engineering principles in introductory CS courses: model-view-controller Java application framework. J Comput Sci Coll 20(2):190–201. http://www.wou.edu/~andersc/pubs/CCSC-NW_2004.pdfGoogle Scholar
  24. Prabhakar NP, Rani D, Hari Narayanan AG, Judy MV (2017) Analyzing the impact of software design patterns in data mining application. In: Dash S, Vijayakumar K, Panigrahi B, Das S (eds) Artificial intelligence and evolutionary computations in engineering systems. advances in intelligent systems and computing, vol 517. Springer, Singapore.  https://doi.org/10.1007/978-981-10-3174-8_7CrossRefGoogle Scholar
  25. Reiss SP (1999) A practical introduction to software design with C++. Wiley, HobokenGoogle Scholar
  26. Suphakul T, Senivongse T (2017) Development of privacy design patterns based on privacy principles and UML. In: 2017 18th IEEE/ACIS international conference on software engineering, artificial intelligence, networking and parallel/distributed computing (SNPD). IEEE, pp 369–375.  https://doi.org/10.1109/SEAA.2017.32
  27. Tao Y (2002) Component- vs. application-level MVC architecture. Frontiers in Education, T2G-7-T2G-10. http://citeseerx.ist.psu.edu/viewdoc/download?doi=
  28. Tao Y, Liu G, Mottok J, Hackenberg R, Hagel G (2015) Just-in-time-teaching experience in a software design pattern course. In: 2015 IEEE global engineering education conference (EDUCON), pp 915–919.  https://doi.org/10.1109/EDUCON.2015.7096082
  29. Topi H et al (2010) IS 2010: Curriculum guidelines for undergraduate degree programs in information systems. Report from the joint IS 2010 curriculum task force. https://www.acm.org/binaries/content/assets/education/curricula-recommendations/is-2010-acm-final.pdf
  30. Van Niekerk J, Futcher L (2015) The use of software design patterns to teach secure software design: an integrated approach. In: Bishop M, Miloslavskaya N, Theocharidou M (eds) Information security education across the curriculum. WISE 2015. IFIP advances in information and communication technology, vol 453. Springer, Cham, pp 75–83.  https://doi.org/10.1007/978-3-319-18500-2CrossRefGoogle Scholar
  31. Vuksanovic IP, Sudarevic B (2011) Use of web application frameworks in the development of small applications. In: Proceedings of the 34th international convention on information and communication technology, electronics and microelectronics (MIPRO), pp 458–462Google Scholar
  32. Wallingford E (2002) Functional programming patterns and their role in instruction. In: Proceedings of the international conference on functional programming, pp 151–163. http://www.cs.uni.edu/~wallingf/patterns/papers/fdpe2002/fdpe2002.pdf
  33. Wick MR (2001) Kaleidoscope: using design patterns in CS1. In: Proceedings of the 32nd SIGCSE technical symposium on computer science education, pp 258–262Google Scholar

Copyright information

© Springer Nature Switzerland AG 2020

Authors and Affiliations

  • Jonathan D. Holmes
    • 1
  • Kevin R. Parker
    • 1
    Email author
  • Bill Davey
    • 2
  • Joseph T. Chao
    • 3
  1. 1.Department of Informatics and Computer Science, Idaho State UniversityPocatelloUSA
  2. 2.School of Business IT and LogisticsRMIT UniversityMelbourneAustralia
  3. 3.Department of Computer Science, Bowling Green State UniversityBowling GreenUSA

Section editors and affiliations

  • Bill Davey
    • 1
  1. 1.School of Business IT and Logistics, RMIT UniversityMelbourneAustralia