Abstract
Keeping the software architecture of a system and its implementation consistent can be tough. The larger and more complex a software system is, the more likely software architecture erosion occurs. This effect can lead to a decrease of quality with respect to adaptability, maintainability, or reusability.
Refactorings can help to reverse software architecture erosion through systematically applying them to resolve architecture violations. However, it can be difficult in complex systems to manually resolve all violations in an efficient way due to the complex interdependencies between them.
In this paper, we propose a new approach to the automatic recommendation of refactorings to resolve architecture violations based on a meta-heuristic search for an efficient set of refactorings. The approach is applied to resolve architectural dependency violations using the “move class” refactoring.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Dietrich, J., McCartin, J., Tempero, E., Shah, S.M.A.: On the existence of high-impact refactoring opportunities in programs. In: Australasian Computer Science Conf., vol. 122, pp. 37–48. ACS (2012)
Eden, A., Hirshfeld, Y., Kazman, R.: Abstraction classes in software design. IEE Proc. - Softw. 153(4), 163–182 (2006)
Fowler, M.: Refactoring: Improving the Design of Existing Code. Addison-Wesley (1999)
van Gurp, J., Bosch, J.: Design erosion: Problems and causes. J. Syst. Softw. 61(2), 105–119 (2002)
Herold, S.: Architectural Compliance in Component-Based Systems. Ph.D. thesis, Clausthal University of Technology (2011)
Herold, S., Rausch, A.: Complementing model-driven development for the detection of software architecture erosion. In: 5th International Workshop on Modeling in Software Engineering (MiSE) at ICSE 2013, pp. 24–30 (2013)
Lindvall, M., Muthig, D.: Bridging the software architecture gap. IEEE Computer 41, 98–101 (2008)
Mair, M., Herold, S.: Towards extensive software architecture erosion repairs. In: Drira, K. (ed.) ECSA 2013. LNCS, vol. 7957, pp. 299–306. Springer, Heidelberg (2013)
Patel, S., Dandawate, Y., Kuriakose, J.: Architecture recovery as first step in system appreciation. In: 2nd Workshop on Empirical Studies in Reverse Engineering (WESRE) at the 13th Working Conference on Reverse Engineering, WCRE 2006 (2006)
Perry, D.E., Wolf, A.L.: Foundations for the study of software architecture. ACM SIGSOFT Softw. Eng. Notes 17, 40–52 (1992)
Russell, S.J., Norvig, P.: Artificial Intelligence: A Modern Approach. Pearson (2003)
Sarkar, S., Ramachandran, S., Kumar, G.S., Iyengar, M.K., Rangarajan, K., Sivagnanam, S.: Modularization of a large-scale business application: A case study. IEEE Softw. 26(2), 28–35 (2009)
Seng, O., Stammel, J., Burkhart, D.: Search-based determination of refactorings for improving the class structure of object-oriented systems. In: Proc. 8th Conf. on Genetic and Evolutionary Computation, pp. 1909–1916. ACM (2006)
Shah, S.M.A., Dietrich, J., McCartin, C.: Making smart moves to untangle programs. In: Proc. 16th Europ. Conf. on Software Maintenance and Reengineering, pp. 359–364. IEEE (2012)
Terra, R., Valente, M.T., Czarnecki, K., da Silva Bigonha, R.: Recommending refactorings to reverse software architecture erosion. In: Proc. 16th Europ. Conf. on Software Maintenance and Reengineering, pp. 335–340. IEEE (2012)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2014 Springer International Publishing Switzerland
About this paper
Cite this paper
Herold, S., Mair, M. (2014). Recommending Refactorings to Re-establish Architectural Consistency. In: Avgeriou, P., Zdun, U. (eds) Software Architecture. ECSA 2014. Lecture Notes in Computer Science, vol 8627. Springer, Cham. https://doi.org/10.1007/978-3-319-09970-5_33
Download citation
DOI: https://doi.org/10.1007/978-3-319-09970-5_33
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-09969-9
Online ISBN: 978-3-319-09970-5
eBook Packages: Computer ScienceComputer Science (R0)