Using Software Architecture Descriptions to Detect Architectural Smells at Design Time
Resumo
Architectural smells are decisions made at the software architecture level, whether intentional or not, that may negatively impact the quality of a software system. In the literature, architectural smells are identified mainly by relying on the source code or other implementation artifacts. However, architectural smells could be detected at design time, even before employing implementation efforts and preventing them from being reflected at the system implementation. This research investigates how software architecture descriptions realized through architecture description languages (ADLs) can be used to identify architectural smells at design time. This work focuses on how architectural smells manifest and can be detected in SysADL, an ADL that allows describing both structure and behavior of software architectures using standardized diagrams from the OMG’s SysML language.
Referências
Arcelli Fontana, F., Lenarduzzi, V., Roveda, R., and Taibi, D. (2019). Are architectural smells independent from code smells? An empirical study. Journal of Systems and Software, 154:139–156.
Azadi, U., Arcelli Fontana, F., and Taibi, D. (2019). Architectural smells detected by tools: A catalogue proposal. In Proceedings of the 2019 IEEE/ACM International Conference on Technical Debt, pages 88–97, USA. IEEE.
Bass, L., Clements, P., and Kazman, R. (2022). Software Architecture in practice. Addison-Wesley/Pearson Education, Inc., USA, 4th edition.
Chondamrongkul, N., Sun, J.,Warren, I., and Lee, S. U.-J. (2020). Semantic-based architecture smell analysis. In Proceedings of the 8th International Conference on Formal Methods in Software Engineering, pages 109–118, USA. ACM.
Garcia, J., Popescu, D., Edwards, G., and Medvidovic, N. (2009a). Identifying architectural bad smells. In Proceedings of the 13th European Conference on Software Maintenance and Reengineering, pages 255–258, USA. IEEE.
Garcia, J., Popescu, D., Edwards, G., and Medvidovic, N. (2009b). Toward a catalogue of architectural bad smells. In Mirandola, R., Gorton, I., and Hofmeister, C., editors, Architectures for Adaptive Software Systems, Lecture Notes in Computer Science, vol. 5581, pages 146–162. Springer-Verlag Berlin Heidelberg, Germany.
Gomaa, H. (2011). Software modeling and design: UML, use cases, patterns, and software architectures. Cambridge University Press, USA.
Le, D., Link, D., Shahbazian, A., Zhao, Y., Mattmann, C., and Medvidovic, N. (2017). Toward a classification framework for software architectural smells. Technical report, Center for Systems and Software Engineering, University of Southern California, USA.
Leite, J., Batista, T., Oquendo, F., Silva, E., Santos, L., and Cortez, V. (2018). Designing and executing software architecture models using SysADL Studio. In 2018 IEEE International Conference on Software Architecture Companion, pages 81–84, USA. IEEE.
Macia, I., Arcoverde, R., Garcia, A., Chavez, C., and von Staa, A. (2012). On the relevance of code anomalies for identifying architecture degradation symptoms. In Proceedings of the 16th European Conference on Software Maintenance and Reengineering, pages 277–286, USA. IEEE.
Malavolta, I., Lago, P., Muccini, H., Pelliccione, P., and Tang, A. (2013). What industry needs from architectural languages: A survey. IEEE Transactions on Software Engineering, 39(6):869–891.
Mumtaz, H., Singh, P., and Blincoe, K. (2021). A systematic mapping study on architectural smells detection. Journal of Systems and Software, 173.
Oquendo, F., Leite, J., and Batista, T. (2016). Software Architecture in Action: Designing and executing architectural models with SysADL grounded on the OMG SysML Standard. Springer International Publishing, Swizerland.
Ozkaya, M. (2018). The analysis of architectural languages for the needs of practitioners. Software: Practice and Experience, 48(5):985–1018.
Sanchez, A., Barbosa, L. S., and Madeira, A. (2015). Modelling and verifying smell-free architectures with the Archery language. In Canal, C. and Idani, A., editors, Software Engineering and Formal Methods, Lecture Notes in Computer Science, vol. 8938, pages 147–163. Springer International Publishing, Switzerland.
Stafford, J. A. and Wolf, A. L. (2001). Architecture-level dependence analysis for software systems. International Journal of Software Engineering and Knowledge Engineering, 11(4):431–451.