Abstract
Making the right decisions is challenging for architects on all levels of seniority. Less experienced architects in particular perceive the transition from design problems to their solutions as hard; it is not always clear how to find suitable concepts and technologies, how to compare alternatives, and how to build consensus. Lack of experience makes it difficult to train software engineering students in the identification, selection, and collective evaluation of design alternatives. Moreover, human factors such as cognitive bias make “soft” topics like architecture decisions rather hard to teach. To overcome these issues and let students gain the required experience, a Spanish University ran two experiments. Undergraduate computer science students assumed different roles in collaborative decision-making tasks and design activities. They used a novel decision-modeling tool to capture and challenge the relevant design decisions. This paper describes this new teaching setup and reports on lessons learned.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Notes
- 1.
ISO/IEC/IEEE 42010 – Systems and software engineering – architecture description. Available at: https://www.iso.org/standard/50508.html.
- 2.
The IBM e-business reference architecture taught about the importance of architectural decisions; decision capturing was a recommended practice at IBM since, at least, 1998.
- 3.
References
Alkadhi, R., Nonnenmacher, M., Guzman, E., Bruegge, B.: How do developers discuss rationale? In: International Conference on Software Analysis, Evolution and Reengineering (SANER 2018). IEEE DL (2018)
Babb, J., Hoda, R., Norbjerg, J.: Embedding Reflection and Learning into Agile Software Development (2014)
Bang, J.Y., Krka, I., Medvidovic, N., Kulkarni, N.N., Padmanabhuni, S.: How software architects collaborate: insights from collaborative software design in practice. In: 6th International Workshop on Cooperative and Human Aspects of Software Engineering, pp. 41–48. IEEE (2013)
Capilla, R.: Embedded design rationale in software architecture. In: Joint Working IEEE/IFIP Conference on Software Architecture and European Conference on Software Architecture, pp. 305–308. IEEE DL (2009)
Capilla, R., Jansen, A., Tang, A., Avgeriou, P., Ali Babar, M.: A 10 years of software architecture knowledge management: practice and future. J. Syst. Softw. 116, 191–205 (2016)
Cervantes, H., Kazman, R.: Designing Software Architectures: A Practical Approach. SEI Series in Software Engineering. Addison-Wesley, Boston (2016)
Clements, P., Kazman, R., Klein, M.: Evaluating Software Architectures: Methods and Case Studies. SEI Series in Software Engineering. Addison-Wesley, Boston (2001)
van Deursen, A., et al.: A collaborative approach to teaching software architecture. In: ACM SIGCSE Technical Symposium on Computer Science Education SIGCSE, pp. 591–596. ACM (2017)
Dingsoyr, T., Lago, P., van Vliet, H.: Rationale promotes learning about architectural knowledge. In: 8th International Workshop on Learning Software Organizations (LSO), Rio de Janeiro, Brazil. ACM (2006)
Dittmar, A., Forbrig, P.: A case study on supporting teachers’ collective reflection in higher education. In: 36th European Conference on Cognitive Ergonomics ECCE 2018, pp. 4:1–4:8. ACM DL (2018)
Dorst, K.: Design problems and design paradoxes. Des. Issues 22, 4–17 (2006)
Hohpe, G., Ozkaya, I., Zdun, U., Zimmermann, O.: The software architect’s role in the digital age. IEEE Softw. 33(6), 30–39 (2016)
Hwang, W.-Y., Shadiev, R., Wang, C.-Y., Huang, Z.-H.: A pilot study of cooperative programming learning behavior and its relationship with students’ learning performance. Comput. Educ. 58(4), 1267–1281 (2012)
Kopp, O., Armbruster, A., Zimmermann, O.: Markdown architectural records: format and tool support. In: 10th Central European Workshop on Services and their Composition, pp. 55–62 (2018)
Larkin, J.H., Simon, H.A.: Why a diagram is (sometimes) worth ten thousand words. Cogn. Sci. 11(1), 65–99 (1987)
Mangano, N., LaToza, T.D., Petre, M., van der Hoek, A.: How software designers interact with sketches at the whiteboard. IEEE Trans. Softw. Eng. 41(2), 135–156 (2015)
Männistö, T., Savolainen, J., Myllärniemi, V.: Teaching software architecture design. In: Seventh Working IEEE/IFIP Conference on Software Architecture (WICSA 2008), pp. 117–124. IEEE DL (2008)
Mistrík, I., van der Hoek, A., Grundy, J., Whitehead, J.: Collaborative Software Engineering. Springer, Heidelberg (2010). https://doi.org/10.1007/978-3-642-10294-3
Nylén, A., Isomöttönen, V.: Exploring the critical incident technique to encourage reflection during project-based learning. In: Koli Calling, pp. 88–97. ACM DL (2017)
Pedraza-Garcia, G., Astudillo, H., Correal, D.: DVIA: understanding how software architects make decisions in design meetings. In: ECSA Workshops 2015, pp. 51:1–51:7. ACM DL (2015)
Razavian, M., Paech, V., Tang, A.: Empirical research for software architecture decision making. J. Syst. Softw. 149(3), 360–381 (2018)
Razavian, M., Tang, A., Capilla, R., Lago, P.: In two minds: how reflections influence software design thinking. J. Softw. Evol. Process 28(6), 394–426 (2016)
Razavian, M., Tang, A., Capilla, R., Lago, P.: Reflective approach for software design decision making. In: Qualitative Reasoning About Software Architectures, pp. 19–26. IEEE DL (2016)
Rupakheti, C.R., Chenoweth, S.V.: Teaching software architecture to undergraduate students: an experience report. In: 37th IEEE/ACM International Conference on Software Engineering, vol. 2, pp. 445–454. IEEE CS (2015)
Schön, D.A.: The Reflective Practitioner: How Professionals Think in Action. Basic Books, Nueva York (1983)
Schoormann, T., Hofer, J., Knackstedt, R.: Software tools for supporting reflection in design thinking projects. In: 53rd Hawaii International Conference on System Sciences (HICSS 2020), ScholarSpace, pp. 1–10 (2020)
Schubanz, M., Lewerentz, C.: What matters to students – a rationale management case study in agile software development. In: 17. Workshops “Software Engineering im Unterricht der Hochschulen (SEUH 2020)”, CEUR Workshop Proceedings, pp. 17–26 (2020)
Smrithi Rekha, V., Muccini, H.: Group decision-making in software architecture: a study on industrial practices. Inf. Softw. Technol. 101, 51–63 (2018)
Talby, D., Hazzan, O., Dubinsky, Y., Keren, A.: Reflections on reflection in agile software development. In: Agile Conference, pp. 11–112. IEEE (2006)
Tang, A., Aleti, A., Burge, J., van Vliet, H.: What makes software design effective? Des. Stud. 31, 614–640 (2010)
Tang, A., Lau, M.F.: Software architecture review by association. J. Syst. Softw. 88(2), 87–101 (2014)
Tang, A., van Vliet, H.: Software designers satisfice. In: Weyns, D., Mirandola, R., Crnkovic, I. (eds.) ECSA 2015. LNCS, vol. 9278, pp. 105–120. Springer, Cham (2015). https://doi.org/10.1007/978-3-319-23727-5_9
Tang, A., Bex, F., Schriek, C., van der Werf, J.M.E.M.: Improving software design reasoning - a reminder card approach. J. Syst. Softw. 144, 22–40 (2018)
Tofan, D., Galster, M., Avgeriou, P., Schuitema, W.: Past and future of software architectural decisions - a systematic mapping study. Inf. Softw. Technol. 56(8), 850–872 (2014)
Tofan, D., Galster, M., Lytra, I., Avgeriou, P., Zdun, U., Fouche, M.-A., de Boer, R.C., Solms, F.: Empirical evaluation of a process to increase consensus in group architectural decision making. Inf. Softw. Technol. 72, 31–47 (2016)
Triglianos, V., Pautasso, C., Bozzon, A., Hauff, C.: Inferring student attention with ASQ. In: Verbert, K., Sharples, M., Klobučar, T. (eds.) EC-TEL 2016. LNCS, vol. 9891, pp. 306–320. Springer, Cham (2016). https://doi.org/10.1007/978-3-319-45153-4_23
Wachenchauzer, R.: Work in progress – promoting critical thinking while learning programming language concepts and paradigms. In: Proceedings of IEEE International Conference on Frontiers in Education, Savannah, GA, USA, pp. 13–14 (2004)
Zimmermann, O., Koehler, J., Leymann, F.: Architectural decision models as micro-methodology for service-oriented analysis and design. In: Lübke, D. (ed.) Proceedings of the Workshop on Software Engineering Methods for Service-oriented Architecture 2007 (SEMSOA 2007), Hannover, Germany, vol. 244. CEUR-WS.org (2007)
Zimmermann, O., Wegmann, L., Koziolek, H., Goldschmidt, T.: Architectural decision guidance across projects. In: Proceedings of IEEE/IFIP WICSA (2015)
Acknowledgements
H. Astudillo’s work was partially funded by grant ANID PIA/APOYO AFB180002. O. Zimmermann’s work was partially funded by the Hasler Foundation (project number: 19083).
Author information
Authors and Affiliations
Corresponding authors
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2020 Springer Nature Switzerland AG
About this paper
Cite this paper
Capilla, R., Zimmermann, O., Carrillo, C., Astudillo, H. (2020). Teaching Students Software Architecture Decision Making. In: Jansen, A., Malavolta, I., Muccini, H., Ozkaya, I., Zimmermann, O. (eds) Software Architecture. ECSA 2020. Lecture Notes in Computer Science(), vol 12292. Springer, Cham. https://doi.org/10.1007/978-3-030-58923-3_16
Download citation
DOI: https://doi.org/10.1007/978-3-030-58923-3_16
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-58922-6
Online ISBN: 978-3-030-58923-3
eBook Packages: Computer ScienceComputer Science (R0)