Architectural stability and evolution measurement for software reuse

Software reuse has been established as a development practice due to several benefits like development cost reduction. However, successful reuse depends on several factors, including high level attributes of the reused software. Architectural stability is an important factor for software reuse, either during the reusable asset selection or library upgrades. In this paper, we introduce two sets of metrics that measure the architectural stability and the evolution of software projects in the context of software reuse. The first set of architectural stability metrics measures the degree of consistency between consecutive versions of the same system and considers the common architectural elements. The second set of architectural evolution metrics quantifies the architectural evolution between consecutive versions of the same system and considers the newly introduced architectural elements, as well as how they interact with the remaining elements of the system. Finally, we present the application of the proposed metrics to two categories of software projects: (1) projects developed for reuse and (2) projects that were not originally intended for reuse.

[1]  Jens Dietrich,et al.  Broken promises: An empirical study into evolution problems in Java programs caused by library upgrades , 2014, 2014 Software Evolution Week - IEEE Conference on Software Maintenance, Reengineering, and Reverse Engineering (CSMR-WCRE).

[2]  Lerina Aversano,et al.  Evaluating architecture stability of software projects , 2013, 2013 20th Working Conference on Reverse Engineering (WCRE).

[3]  Stéphane Ducasse,et al.  Modeling history to analyze software evolution , 2006, J. Softw. Maintenance Res. Pract..

[4]  Stéphane Ducasse,et al.  Software Architecture Reconstruction: A Process-Oriented Taxonomy , 2009, IEEE Transactions on Software Engineering.

[5]  Tao Xie,et al.  Improving software quality via code searching and mining , 2009, 2009 ICSE Workshop on Search-Driven Development-Users, Infrastructure, Tools and Evaluation.

[6]  Mario Gleirscher,et al.  On the Extent and Nature of Software Reuse in Open Source Java Projects , 2011, ICSR.

[7]  William B. Frakes,et al.  Software reuse research: status and future , 2005, IEEE Transactions on Software Engineering.

[8]  Heiko Koziolek,et al.  Sustainability evaluation of software architectures: a systematic review , 2011, QoSA-ISARCS '11.

[9]  Rick Kazman,et al.  An approach to software architecture analysis for evolution and reusability , 1997, CASCON.

[10]  Jan Bosch,et al.  Assessing optimal software architecture maintainability , 2001, Proceedings Fifth European Conference on Software Maintenance and Reengineering.

[11]  Yana Momchilova Mileva,et al.  Mining Evolution of Object Usage , 2011, ECOOP.

[12]  Ralph Johnson,et al.  How do APIs evolveq A story of refactoring: Research Articles , 2006 .

[13]  Mark Shtern,et al.  Clustering Methodologies for Software Engineering , 2012, Adv. Softw. Eng..

[14]  Stéphane Ducasse,et al.  Modeling history to analyze software evolution: Research Articles , 2006 .

[15]  Alessandro F. Garcia,et al.  On the Modularity Assessment of Software Architectures: Do my architectural concerns count? , 2007 .

[16]  Ralph E. Johnson,et al.  How do APIs evolve? A story of refactoring , 2006, J. Softw. Maintenance Res. Pract..

[17]  Charles W. Krueger,et al.  Software reuse , 1992, CSUR.

[18]  Mehdi Jazayeri On Architectural Stability and Evolution , 2002, Ada-Europe.