Abstract
Software architecture recovery is a bottom-up process that aims at building high-level views that support the understanding of existing software applications. Many approaches have been proposed to support architecture recovery using various techniques. However, very few approaches are driven by the architectural styles that were used to build the systems under analysis. In this paper, we address the problem of recovering layered views of existing software systems. We re-examine the layered style to extract a set of fundamental principles which encompass a set of constraints that a layered system must conform to at design time and during its evolution. These constraints are used to guide the recovery process of layered architectures. In particular, we translate the problem of recovering the layered architecture into a quadratic assignment problem (QAP) based on these constraints, and we solve the QAP using a heuristic search algorithm. In this paper, we introduce the QAP formulation of the layering recovery and we present and discuss the results of the experimentation with the approach on four open source software systems.
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsPreview
Unable to display preview. Download preview PDF.
References
Shaw, M., Garlan, D.: Software Architecture: Perspectives on an Emerging Discipline. Prentice Hall (1996)
Clements, P., Bachmann, F., Bass, L., Garlan, D., Ivers, J., Little, R., Nord, R., Stafford, J.: Documenting Software Architectures: Views and Beyond. Addison-Wesley (2003)
Buschmann, F., Meunier, R., Rohnert, H., Sommerlad P., Stal, M.: Pattern-Oriented Software Architecture: A System of Patterns. John Wiley & Sons (1996)
Harris, D.R., Reubenstein, H.B., Yeh, A.S.: Recognizers for Extracting Architectural Features from Source Code. The 2nd WCRE, pp. 252–261 (1995)
Ducasse, S., Pollet, D.: Software Architecture Reconstruction: A Process-Oriented Taxonomy. IEEE Trans. on Soft. Eng. 35(4), 573–591 (2009)
Mitchell, B.S., Mancoridis, S.: On the Evaluation of the Bunch Search-Based Software Modularization Algorithm. Soft Comput. 12(1), 77–93 (2007)
Maqbool, O., Babri, H.A.: Hierarchical Clustering for Software Architecture Recovery. IEEE Transactions on Software Engineering 33(11), 759–780 (2007)
Lung, C.H., Zaman, M., Nandi, A.: Applications of Clustering Techniques to Software Partitioning, Recovery and Restructuring. JSS Journal 73, 227–244 (2004)
Muller, H.A., Orgun, M.A., Tilley, S.R., Uhl, J.S.: A reverse engineering approach to subsystem structure identification. Journal of Software Maintenance 5(4), 181–204 (1993)
Sarkar, S., Maskeri, G., Ramachandran, S.: Discovery of architectural layers and measurement of layering violations in source code. JSS Journal 82(11), 1891–1905 (2009)
Laval, J., Anquetil, N., Bhatti, M.U., Ducasse, S.: OZONE: Layer Identification in the presence of Cyclic Dependencies. submitted to Science of Computer Programming (2012)
Scanniello, G., D’Amico, A., D’Amico, C., D’Amico, T.: Architectural layer recovery for software system understanding and evolution. SPE Journal 40(10), 897–916 (2010)
Andreopoulos, B., Aijun, A., Tzerpos, V., Wang, X.: Clustering large software systems at multiple layers. Information and Software Technology 49(3), 244–254 (2007)
Hassan, AE., Holt, RC.: Architecture recovery of web applications. In: The 24th International Conference on Software Engineering, pp. 349–359. ACM Press, New York (2002)
Sangal, N., Jordan, E., Sinha, V., Jackson, D.: Using dependency models to manage complex software architecture. In: Proceedings of OOPSLA 2005, pp. 167–176 (2005)
Eeles, P.: Layering Strategies. Rational Software White Paper, TP 199, 08/01 (2002)
Szyperski, C.A.: Component Software. Addison Wesley (1998)
Bourquin, F., Keller, R.K.: High-impact refactoring based on architecture violations. In: The 11th CSMR, pp. 149–158 (2007)
El-Boussaidi, G., Boaye-Belle, A., Vaucher, S., Mili, H.: Reconstructing architectural views from legacy systems. In: The 19th WCRE (2012)
Avgeriou, P., Zdun, U.: Architectural patterns revisited-a pattern language. In: EuroPlop (2005)
Pardalos, P.M., Rendl, F., Wolkowicz, H.: The quadratic assignment problem-a survey and recent developments. In: DIMACS. Americ. Mathemat. Society, vol. 16, pp. 1–42 (1994)
Skorin-Kapov, J.: Tabu search applied to the quadratic assignment problem. ORSA Journal on Computing 2(1), 33–45 (1990)
Glover, F., Laguna, M.: Tabu Search. Kluwer Academic Publishers, Boston (1997)
MoDisco site. http://www.eclipse.org/MoDisco/
OMG Specifications. http://www.omg.org/
Barros, MdO, Farzat, FdA, Travassos, G.H.: Learning from optimization: A case study with Apache Ant. Information and Software Technology 57, 684–704 (2015)
Boaye, B.A., El-Boussaidi, G., Desrosiers, C., Mili, H.: The layered architecture revisited is it an optimization problem. In: Proc. 25th Int. Conf. SEKE, pp. 344–349 (2013)
Schmidt, F., MacDonell, S.G., Connor, A.M.: An automatic architecture reconstruction and refactoring framework. In: SERA 2011, pp. 95–111 (2011)
Scanniello, G., D’Amico, A., D’Amico, C., D’Amico, T.: Using the Kleinberg algorithm and vector space model for software system clustering. In: ICPC, pp. 180–189 (2010)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2015 Springer International Publishing Switzerland
About this paper
Cite this paper
Belle, A.B., El Boussaidi, G., Desrosiers, C., Kpodjedo, S., Mili, H. (2015). The Layered Architecture Recovery as a Quadratic Assignment Problem. In: Weyns, D., Mirandola, R., Crnkovic, I. (eds) Software Architecture. ECSA 2015. Lecture Notes in Computer Science(), vol 9278. Springer, Cham. https://doi.org/10.1007/978-3-319-23727-5_28
Download citation
DOI: https://doi.org/10.1007/978-3-319-23727-5_28
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-23726-8
Online ISBN: 978-3-319-23727-5
eBook Packages: Computer ScienceComputer Science (R0)