Representation of software design using templates: impact on software quality and development effort
Keywords:detailed design, software quality, graduating students
As a practice, software design seeks to contribute to developing quality software. During this software development stage, the requirements are translated into a representation of the software (also known as design), whose quality can be evaluated and improved. For undergraduate students, the design is difficult to understand and make. In fact, building a good design seems to require a certain level of cognitive development that few students achieve.
The aim of this study is to know the effort dedicated to software detailed design and the effect on software quality when graduating students use templates to represent their design. We conducted a controlled experiment where students develop eight projects following a defined process and recording data from its execution in a software tool.
We found that the use of design templates did not improve the quality of the code, measured as the defect density in the unit test phase. Also, the use of templates did not reduce the number of code smells in the analyzed code. Regarding the effort, students who use templates dedicated greater development effort to designing than to coding. Meanwhile, students who did not use templates dedicated four times less effort to designing than to coding.
Arisholm, E., Briand, L. C., Hove, S. E., and Labiche, Y. (2006). The impact of uml documentation on software maintenance: an experimental evaluation. IEEE Transactions on Software Engineering, 32(6).
Ayewah, N., Pugh, W., Hovemeyer, D., Morgenthaler, J. D., and Penix, J. (2008). Using static analysis to find bugs. IEEE software, 25(5).
Bourque, P. and Fairley, R. E. (2014). Guide to the Software Engineering Body of Knowledge - SWEBOK v3.0. IEEE Computer Society, 2014 version edition.
Brown, W. H., Malveau, R. C., McCormick, H. W., and Mow- bray, T. J. (1998). AntiPatterns: refactoring software, architectures, and projects in crisis. John Wiley & Sons, Inc.
Budgen, D., Burn, A. J., Brereton, O. P., Kitchenham, B. A., and Pretorius, R. (2011). Empirical evidence about the uml: a systematic literature review. Software: Practice and Experience, 41(4):363–392.
Campbell, G. A. and Papapetrou, P. P. (2013). SonarQube in Action. Manning Publications Co, 2013 version edition.
Carrington, D. and K Kim, S. (2003). Teaching software design with open source software. In 33rd Annual Frontiers in Education.
Chemuturi, M. (2018). Software Design: A Comprehensive Guide to Software Development Projects. CRC Press/Taylor & Francis Group.
Chen, T.-Y., Cooper, S., McCartney, R., and Schwartzman, L. (2005). The (relative) importance of software design criteria. SIGCSE Bull., 37(3):34–38.
Eckerdal, A., McCartney, R., Moström, J. E., Ratcliffe, M., and Zander, C. (2006a). Can graduating students design software systems? In SIGCSE Bull., page 403–407. ACM, Association for Computing Machinery.
Eckerdal, A., McCartney, R., Moström, J. E., Ratcliffe, M., and Zander, C. (2006b). Categorizing student software designs:
Methods, results, and implications. Computer science education, 16(3):197–209.
Fernández-Sáez, A., Genero, M., and Chaudron, M. (2013). Empirical studies concerning the maintenance of uml diagrams and their use in the maintenance of code: A systematic mapping study. Information and Software Technology, 55:1119–1142.
Flores, P. and Medinilla, N. (2017). Conceptions of the stu- dents around object-oriented design: A case study. In XII Jornadas Iberoamericanas de Ingenieria de Software e Ingeniería del Conocimiento.
Fowler, M. (2018). Refactoring: improving the design of existing code. Addison-Wesley Professional.
Gibbon, C. A. (1997). Heuristics for object-oriented design. PhD thesis, University of Nottingham.
Gravino, C., Scanniello, G., and Tortora, G. (2015). Source- code comprehension tasks supported by uml design models: Results from a controlled experiment and a differentiated replication. Journal of Visual Languages & Computing, 28:23 – 38.
Group, S. (2015). The chaos report. The Astrophysical Journal Supplement Series.
Hu, C. (2013). The nature of software design and its teaching: an exposition. ACM Inroads, 4(2).
Humphrey, W. (2005). PSP: A Self-Improvement Process for Software Engineers. Addison Wesley Professional.
Humphrey, W. S. (1995). A discipline for software engineering. Addison-Wesley Longman Publishing Co., Inc.
Joint Task Force on Computing Curricula - ACM and IEEE Computer Society (2013). Computer Science Curricula 2013: Curriculum Guidelines for Undergraduate Degree Programs in Computer Science. Association for Computing Machinery, New York, NY, USA.
Jones, B. and Kenward, M. G. (2014). Design and Analysis of Cross-Over Trials. Chapman and Hall/CRC, 3rd edition.
Karasneh, B., Jolak, R., and Chaudron, M. R. V. (2015). Using examples for teaching software design: An experiment using a repository of uml class diagrams. In 2015 Asia- Pacific Software Engineering Conference.
Kitchenham, B. and Pfleeger, S. L. (1996). Software quality: the elusive target. IEEE Software, 13(1):12–21.
Kramer, J. (2007). Is abstraction the key to computing? Com- mun. ACM, 50(4):36–42.
Leung, F. and Bolloju, N. (2005). Analyzing the quality of domain models developed by novice systems analysts. In 38th Hawaii International Conference on System Sciences.
Linder, S. P., Abbott, D., and Fromberger, M. J. (2006). An instructional scaffolding approach to teaching software design. Journal of Computing Sciences in Colleges, 21.
Loftus, C., Thomas, L., and Zander, C. (2011). Can graduating students design: revisited. In Proceedings of the 42nd ACM technical symposium on Computer science education. ACM.
Martin, R. C. (2002). Agile software development: principles, patterns, and practices. Prentice Hall.
Moreno, S. and Vallespir, D. (2018). ¿los estudiantes de pregrado son capaces de diseñar software? estudio de la relación entre el tiempo de codificación y el tiempo de dis- eño en el desarrollo de software. In Conferencia Iberoamer- icana de Ingeniería de Software 2018.
Nistala, P., Nori, K. V., and Reddy, R. (2019). Software quality models: A systematic mapping study. In 2019 IEEE/ACM International Conference on Software and System Processes, pages 125–134.
Petre, M. (2013). Uml in practice. International Conference on Software Engineering, 35.
Pierce, K., Deneen, L., and Shute, G. (1991). Teaching software design in the freshman year. In Software Engineering Education. Springer Berlin Heidelberg.
Senn, S. (2002). Cross-over Trials In Clinical Research. John Wiley & Sons, Ltd, 2nd edition.
Siau, K. and Tan, X. (2005). Improving the quality of conceptual modeling using cognitive mapping techniques. Data & Knowledge Engineering, 55(3). Quality in conceptual modeling.
Soh, Z., Sharafi, Z., Van den Plas, B., Cepeda Porras, G., Guéhéneuc, Y.-G., and Antoniol, G. (2012). Professional status and expertise for uml class diagram comprehension: An empirical study. In IEEE International Conference on Program Comprehension.
Sommerville, I. (2016). Software Engineering. Pearson. Stevenson, J. and Wood, M. (2018). Recognizing object-oriented software design quality: a practitioner-based questionnaire survey. Software Quality Journal, 26.
Taylor, R. N., editor (2011). Proc. 33rd International Conference on Software Engineering. ACM.
Tenenberg, J. (2005). Students designing software: a multi-national, multi-institutional study. Informatics in Education, 4.
Torchiano, M., Scanniello, G., Ricca, F., Reggio, G., and Leotta, M. (2017). Do uml object diagrams affect design comprehensibility? results from a family of four controlled experiments. Journal of Visual Languages & Computing, 41.
Wohlin, C., Runeson, P., Höst, M., Ohlsson, M. C., Regnell, B., and Wesslén, A. (2012). Experimentation in software engineering. Springer Science & Business Media.
How to Cite
Copyright (c) 2021 Silvana Moreno, Diego Vallespir, Martin Solari, Vanessa Casella
This work is licensed under a Creative Commons Attribution 4.0 International License.