Design principles in programming languages and their impact on software quality
DOI:
https://doi.org/10.63688/cognitivatech.v2.i1.6Keywords:
Programming languages, Software correctness, Maintainability, Performance.Abstract
This study analyzes the fundamental principles that guide the design of modern programming languages, highlighting their impact on software quality. Based on a qualitative approach and a documentary analysis of scientific literature, three essential pillars were identified: correctness, maintainability, and performance. The results show that correctness is the primary objective, as it enables the development of programs that fulfill their intended purpose while minimizing errors from early stages through mechanisms such as strict type systems, compile-time validation, and clear abstractions. Regarding maintainability, it was found that principles such as modularity, low coupling, high cohesion, encapsulation, and separation of concerns facilitate the understanding, modification, and evolution of software, especially in dynamic development environments. On the other hand, performance, although secondary to the previous aspects, remains essential, as it ensures efficient program execution through techniques such as optimized compilation and predictable execution models. Furthermore, a direct relationship among these three principles was identified, showing that correctness enhances maintainability, which in turn contributes to improved performance. The analysis of the Wybe programming language served as an example of how these principles can be integrated into a concrete design proposal. In conclusion, the study demonstrates that a balanced approach among correctness, maintainability, and performance is key to developing reliable, adaptable, and efficient software.References
Banker, R. D., Davis, G. B., & Slaughter, S. A. (1998). Software development practices, software complexity, and software maintenance performance: A field study. Management Science, 44(4), 433–450. https://doi.org/10.1287/mnsc.44.4.433 DOI: https://doi.org/10.1287/mnsc.44.4.433
Benaroch, M., & Lyytinen, K. (2023). How much does software complexity matter for maintenance productivity? IEEE Transactions on Software Engineering, 49(5), 2459–2475. https://doi.org/10.1109/TSE.2022.3153703 DOI: https://doi.org/10.1109/TSE.2022.3222119
Berrio Pacheco, Y., & Benitez Hernandez, R. M. (2024). Estudio de incidencia de lenguajes de programación y entornos de desarrollo en el mercado laboral. https://repositorio.unicordoba.edu.co/server/api/core/bitstreams/1286aa8f-6124-418c-928e-39afca743206/content
Brooks, F. P. (1975). The mythical man-month. ACM SIGPLAN Notices, 10(6), 193–200. https://doi.org/10.1145/390016.808319 DOI: https://doi.org/10.1145/390016.808439
Erlikh, L. (2000). Leveraging legacy system dollars for e-business. IT Professional, 2(3), 17–23. https://doi.org/10.1109/6294.848309 DOI: https://doi.org/10.1109/6294.846201
Espinosa, J. A., Slaughter, S. A., Kraut, R. E., & Herbsleb, J. D. (2007). Team knowledge and coordination in geographically distributed software development. Journal of Management Information Systems, 24(1), 135–169. https://doi.org/10.2753/MIS0742-1222240104 DOI: https://doi.org/10.2753/MIS0742-1222240104
Gosling, J., & McGilton, H. (1995). The Java language environment: A white paper. Sun Microsystems. https://www.oracle.com/java/technologies/javase/whitepaper.html
Herbsleb, J. D., & Mockus, A. (2003). An empirical study of speed and communication in globally distributed software development. IEEE Transactions on Software Engineering, 29(6), 481–494. https://doi.org/10.1109/TSE.2003.1205177 DOI: https://doi.org/10.1109/TSE.2003.1205177
Hofmann, M. (2000). A type system for bounded space and functional in-place update. En Programming Languages and Systems (pp. 165–179). Springer. https://doi.org/10.1007/3-540-46425-5_11 DOI: https://doi.org/10.1007/3-540-46425-5_11
Krishnan, M. S., Kriebel, C. H., Kekre, S., & Mukhopadhyay, T. (2000). An empirical analysis of productivity and quality in software products. Management Science, 46(6), 745–759. https://doi.org/10.1287/mnsc.46.6.745.12035 DOI: https://doi.org/10.1287/mnsc.46.6.745.11941
Lattner, C., & Adve, V. (2004). LLVM: A compilation framework for lifelong program analysis & transformation. En Proceedings of the International Symposium on Code Generation and Optimization. https://doi.org/10.1109/CGO.2004.1281665 DOI: https://doi.org/10.1109/CGO.2004.1281665
Lehman, M. M. (1996). Laws of software evolution revisited. En European Workshop on Software Process Technology (pp. 108–124). Springer. https://doi.org/10.1007/BFb0017026 DOI: https://doi.org/10.1007/BFb0017737
Meyer, B. (1988). Object-oriented software construction. Prentice Hall. https://books.google.com.ec/books/about/Object_oriented_Software_Construction.html?id=D6i-QgAACAAJ&redir_esc=y
Nanz, S., & Furia, C. A. (2015). A comparative study of programming languages in Rosetta Code. En Proceedings of the 37th IEEE/ACM International Conference on Software Engineering (pp. 778–788). IEEE. https://doi.org/10.1109/ICSE.2015.90 DOI: https://doi.org/10.1109/ICSE.2015.90
Parnas, D. L. (1972). On the criteria to be used in decomposing systems into modules. Communications of the ACM, 15(12), 1053–1058. https://doi.org/10.1145/361598.361623 DOI: https://doi.org/10.1145/361598.361623
Ramasubbu, N., & Balan, R. K. (2007). Globally distributed software development project performance: An empirical analysis. En Proceedings of the ACM SIGSOFT Symposium on Foundations of Software Engineering (pp. 125–134). https://doi.org/10.1145/1287624.1287643 DOI: https://doi.org/10.1145/1287624.1287643
Ray, B., Posnett, D., Filkov, V., & Devanbu, P. (2014). A large scale study of programming languages and code quality in GitHub. En Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering (pp. 155–165). ACM. https://doi.org/10.1145/2635868.2635922 DOI: https://doi.org/10.1145/2635868.2635922
Romero Aguilar, J. F., & Freire Cobo, L. E. (2024). Diseño de diagramas de componentes de software, utilizando un gran modelo de lenguaje y aplicando técnicas de optimización para lograr resultados contextualmente relevante (Doctoral dissertation, ESPOL. FIEC). https://www.dspace.espol.edu.ec/handle/123456789/67425
Stevens, W. P., Myers, G. J., & Constantine, L. L. (1974). Structured design. IBM Systems Journal, 13(2), 115–139. https://doi.org/10.1147/sj.132.0115 DOI: https://doi.org/10.1147/sj.132.0115
Published
Issue
Section
License
Copyright (c) 2025 Segundo Alexander Rosado Martínez (Author)

This work is licensed under a Creative Commons Attribution 4.0 International License.
The article is distributed under the Creative Commons Attribution 4.0 License. Unless otherwise stated, associated published material is distributed under the same licence.