On the relationship of code-anomaly agglomerations and architectural problems
Tóm tắt
Several projects have been discontinued in the history of the software industry due to the presence of software architecture problems. The identification of such problems in source code is often required in real project settings, but it is a time-consuming and challenging task. Some authors assume that architectural problems are reflected in source code through individual code anomalies. However, each architectural problem may be realized by multiple code anomalies, which are intertwined in several program elements. The relationships of these various code anomalies and their architecture problems’ counterparts are hard to reveal and characterize. To overcome this limitation, we are studying the architecture impact of a wide range of code-anomaly agglomerations. An agglomeration is a group of code anomalies that are explicitly related to each other in the implementation – e.g. two or more anomalies affecting the same class or method in the program. In our empirical study, we analyzed a total of 5418 code anomalies and 2229 agglomerations within 7 systems. In particular, our analysis focused in understanding (i) how agglomerations and architectural problems relate to each other, and (ii) how agglomerations can support the diagnosis of well-known architectural problems. We observed that most of the anomalous code elements related to architectural problems are members of one or more agglomerations. In addition, this study revealed that, for each agglomeration related to an architectural problem, an average of 2 to 4 anomalous code elements contribute to the architectural problem. Finally, the result of our study suggests that certain types of agglomerations are better indicators of architectural problems than others.
Tài liệu tham khảo
Abbes, M, Khomh F, Gueheneuc Y, Antoniol G (2011) An empirical study of the impact of two antipatterns, blob and spaghetti code, on program comprehension In: Proceedings of the 15th European Software Engineering Conference, 181–190.. IEEE Computer Society, Oldenburg, Germany.
Apache OODT Source Code (2015). https://github.com/apache/oodt.
Baxter, G, Frean M, Noble J, Rickerby M, Smith H, Visser M, Melton H, Tempero E (2006) Understanding the shape of java software In: Proceedings of the 21st Annual ACM SIGPLAN Conference on Object-oriented Programming Systems, Languages, and Applications, 397–412.. ACM.
Booch, G, Rumbaugh J, Jacobson I (2005) The Unified Modeling Language User Guide. Addison-Wesley, Boston.
D’Ambros, M, Bacchelli A, Lanza M (2010) On the impact of design flaws on software defects In: Proceedings of the 10th International Conference on Quality Software, 23–31.. IEEE Computer Society, Zhangjiajie, China.
Eichberg, M, Kloppenburg S, Klose K, Mezini M (2008) Defining and continuous checking of structural program dependencies In: Proceedings of the 30th International Conference on Software Engineering, 391–400.. ACM, Leipzig, Germany.
Fowler, M (1999) Refactoring: Improving the Design of Existing Code. Pearson Education, India.
Garcia, J, Popescu D, Edwards G, Medvidovic N (2009) Identifying architectural bad smells In: Proceedings of the 13th European Conference on Software Maintenance and Reengineering; Kaiserslautern, Germany, 255–258.. IEEE Computer Society.
Garcia, J, Ivkovic I, Medvidovic N (2013) A comparative analysis of software architecture recovery techniques In: Proceedings of the 28th IEEE/ACM International Conference on Automated Software Engineering, 486–496.. IEEE Computer Society, Palo Alto, USA.
Health Watcher Source Code (2015). http://ptolemy.cs.iastate.edu/design-study/#healthwatcher.
Hochstein, L, Lindvall M (2005) Combating architectural degeneration: a survey. Inf Softw Technol 47: 643–656.
Khomh, K, Penta MD, Gueheneuc Y (2009) An exploratory study of the impact of code smells on software change-proneness In: Proceedings of the 16th Working Conference on Reverse Engineering, 75–84.. IEEE Computer Society, Lille, France.
Kim, M, Sazawal V, Notkin D, Murphy G (2005) An empirical study of code clone genealogies In: Proceedings of the 10th European Software Engineering Conference, 187–196.. ACM, Lisbon, Portugal.
Lanza, M, Marinescu R (2006) Object-Oriented Metrics in Practice. Springer, Heidelberg.
Louridas, P, Spinellis D, Vlachos V (2008) Power laws in software. ACM Trans Softw Eng Methodol 18: 1–26.
Lozano, A, Wermelinger M (2008) Assessing the effect of clones of changeability In: Proceedings of the 24th IEEE International Conference on Software Maintenance, 227–236.. IEEE Computer Society, Beijing, China.
Marwan, A, Aldrich J (2009) Static extraction and conformance analysis of hierarchical runtime architectural structure using annotations In: Proceedings of the 24th ACM SIGPLAN Conference Companion on Object Oriented Programming Systems Languages and Applications, 321–340.. ACM, Orlando, USA.
Macia, I, Arcoverde R, Garcia A, Chavez C, 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, 277–286.. Computer Society, Szeged, Hungary.
Macia, I (2013) On the detection of architecturally-relevant code anomalies in software systems. PhD thesis, Pontifical Catholic University of Rio de Janeiro, Informatics Department.
Macia, I, Arcoverde R, Cirilo E, Garcia A, Staa A (2012a) Supporting the identification of architecturally-relevant code anomalies In: Proceedings of the 28th IEEE International Conference on Software Maintenance, 662–665.. Computer Society, Trento, Italy.
Macia, I, Garcia J, Popescu D, Garcia A, Medvidovic N, Staa A (2012b) Are automatically-detected code anomalies relevant to architectural modularity? An exploratory analysis of evolving systems In: Proceedings of the 11st International Conference on Aspect-Oriented Software Development, 167–178.. ACM, Postdam, Germany.
Mattmann, C, Crichton D, Medvidovic N, Hughes S (2006) A software architecture-based framework for highly distributed and data intensive scientific applications In: Proceedings of the 28th International Conference on Software Engineering: Software Engineering Achievements Track, 721–730.. ACM, Shanghai, China.
Morgan, C (2007) A static aspect language of checking design rules In: Proceedings of the 6th International Conference on Aspect-oriented Software Development, 63–72.. ACM, Vancouver, Canada.
Moha, N, Gueheneuc Y, Duchien L, Meur AL (2010) Decor: A method for the specification and detection of code and design smells. IEEE Trans Softw Eng 36: 20–36.
Mobile Media Source Code (2015). http://ptolemy.cs.iastate.edu/design-study/#mobilemedia.
Oizumi, W, Garcia A, Colanzi T, Ferreira M, Staa A (2014) When code-anomaly agglomerations represent architectural problems? An exploratory study In: Proceedings of the 2014 Brazilian Symposium on Software Engineering (SBES), 91–100.. IEEE Computer Society, Maceio, Brazil.
Olbrich, SM, Cruzes DS, Sjoberg DIK (2010) Are all code smells harmful? A study of god classes and brain classes in the evolution of three open source systems In: Proceedings of the 26th IEEE International Conference on Software Maintenance, 1–10.. IEEE Computer Society, Timisoara, Romania.
Perry, DE, Wolf AL (1992) Foundations for the study of software architecture. ACM Softw Eng Notes 17: 40–52.
Sjobert, D, Yamashita A, Anda B, Mockus A, Dyba T (2013) Quantifying the effect of code smells on maintenance effort. IEEE Trans Softw Eng 39: 1144–1156.
Soares, S, Laureano E, Borba P (2002) Implementing distribution and persistence aspects with aspectj In: Proceedings of the 17th ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications, 174–190.. ACM Press, Seattle, USA.
Ubayashi, N, Nomura J, Tamai T (2010) Archface: A contract place where architectural design and code meet together In: Proceedings of the 32nd International Conference on Software Engineering, 75–84.. ACM, Cape Town, South Africa.
Understand: User Guide and Reference Manual (2015). https://scitools.com/documents/manuals/pdf/understand.pdf.
Yamashita, A, Moonen L (2013) Exploring the impact of inter-smell relations on software maintainability: an empirical study In: Proceedings of the 35th International Conference on Software Engineering, 682–691.. IEEE Press, San Francisco, USA.
Young, TJ (2005) Using aspectj to build a software product line for mobile devices, University of British Columbia.
