Definition
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.
Introduction
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 such as...
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
References
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
Alexander C, Ishikawa S, Silverstein M (1977) A pattern language. Oxford University Press, Oxford
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=10.1.1.300.7477&rep=rep1&type=pdf
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
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–205
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.pdf
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
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.pdf
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–13
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–313
Cunningham W, Beck K (1988) Using a pattern language for programming. Addendum to the Proceedings of OOPSLA’87, ACM SIGPLAN Notices, 23, 5
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
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–449
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
Gamma E, Helm R, Johnson R, Vlissides J (1995) Design patterns: elements of reusable object-oriented software. Addison-Wesley Professional, Indianapolis
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
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.pdf
Hundley J (2008) A review of using design patterns in CS1. In: Proceedings of the 46th. Annual southeast regional conference on XX, pp 30–33
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
IEEE (1986) IEEE standard for software unit testing. http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=27763
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–882
Khwaja S, Alshayeb M (2015) Survey on software design-pattern specification languages. ACM Comput Surv 49(1):1–35. https://doi.org/10.1145/2926966
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.pdf
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_7
Reiss SP (1999) A practical introduction to software design with C++. Wiley, Hoboken
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
Tao Y (2002) Component- vs. application-level MVC architecture. Frontiers in Education, T2G-7-T2G-10. http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.20.5508&rep=rep1&type=pdf
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
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
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-2
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–462
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
Wick MR (2001) Kaleidoscope: using design patterns in CS1. In: Proceedings of the 32nd SIGCSE technical symposium on computer science education, pp 258–262
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Section Editor information
Rights and permissions
Copyright information
© 2020 Springer Nature Switzerland AG
About this entry
Cite this entry
Holmes, J.D., Parker, K.R., Davey, ., Chao, J.T. (2020). Teaching Software Design Techniques in University Courses. In: Tatnall, A. (eds) Encyclopedia of Education and Information Technologies. Springer, Cham. https://doi.org/10.1007/978-3-030-10576-1_132
Download citation
DOI: https://doi.org/10.1007/978-3-030-10576-1_132
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-10575-4
Online ISBN: 978-3-030-10576-1
eBook Packages: Computer ScienceReference Module Computer Science and Engineering