Characterizing Software Stability via Change Propagation Simulation

Software stability means the resistance to the amplification of changes in software. It has become one of the most important attributes that affect maintenance cost. To control the maintenance cost, many approaches have been proposed to measure software stability. However, it is still a very difficult task to evaluate the software stability especially when software becomes very large and complex. In this paper, we propose to characterize software stability via change propagation simulation. First, we propose a class coupling network (CCN) to model software structure at the class level. Then, we analyze the change propagation process in the CCN by using a simulation way, and by doing so, we develop a novel metric, (software stability), to measure software stability. Our metric is validated theoretically using the widely accepted Weyuker’s properties and empirically using a set of open source Java software systems. The theoretical results show that our metric satisfies most of Weyuker’s properties with only two exceptions, and the empirical results show that our metric is an effective indicator for software quality improvement and class importance. Empirical results also show that our approach has the ability to be applied to large software systems.

[1]  Jing Liu,et al.  Class structure refactoring of object-oriented softwares using community detection in dependency networks , 2009, Frontiers of Computer Science in China.

[2]  Alan MacCormack,et al.  Exploring the Structure of Complex Software Designs: An Empirical Study of Open Source and Proprietary Code , 2006, Manag. Sci..

[3]  Gursaran,et al.  On the Applicability of Weyuker Property 9 to Object-Oriented Structural Inheritance Complexity Metrics , 2001, IEEE Trans. Software Eng..

[4]  Letha H. Etzkorn,et al.  An empirical study of object-oriented system evolution , 2000, Inf. Softw. Technol..

[5]  Kangshun Li,et al.  Identifying key classes in object-oriented software using generalized k-core decomposition , 2018, Future Gener. Comput. Syst..

[6]  Jing Liu,et al.  Multi-granularity evolution analysis of software using complex network theory , 2011, J. Syst. Sci. Complex..

[7]  Hongyu Zhang,et al.  Measuring design complexity of semantic web ontologies , 2010, J. Syst. Softw..

[8]  Michele Marchesi,et al.  Power-Laws in a Large Object-Oriented Software System , 2007, IEEE Transactions on Software Engineering.

[9]  Lionel C. Briand,et al.  A Unified Framework for Coupling Measurement in Object-Oriented Systems , 1999, IEEE Trans. Software Eng..

[10]  Lin Li,et al.  Software Stability Analysis Based on Change Impact Simulation: Software Stability Analysis Based on Change Impact Simulation , 2010 .

[11]  Alexander Chatzigeorgiou,et al.  Design Pattern Detection Using Similarity Scoring , 2006, IEEE Transactions on Software Engineering.

[12]  Stephen S. Yau,et al.  Design Stability Measures for Software Maintenance , 1985, IEEE Transactions on Software Engineering.

[13]  Carl H. Smith,et al.  On Weyuker's Axioms For Software Complexity Measures , 1991, IEEE Trans. Software Eng..

[14]  Weifeng Pan,et al.  Measuring software stability based on complex networks in software , 2019, Cluster Computing.

[15]  Stephen S. Yau,et al.  Some Stability Measures for Software Maintenance , 1980, IEEE Trans. Software Eng..

[16]  James Noble,et al.  Scale-free geometry in OO programs , 2005, CACM.

[17]  Sanjay Misra,et al.  A Framework for Evaluation and Validation of Software Complexity Measures , 2014 .

[18]  Apostolos Ampatzoglou,et al.  The Effect of GoF Design Patterns on Stability: A Case Study , 2015, IEEE Transactions on Software Engineering.

[19]  Warren Harrison,et al.  An Entropy-Based Measure of Software Complexity , 1992, IEEE Trans. Software Eng..

[20]  C. K. Michael Tse,et al.  Characterizing the Structural Quality of General Complex Software Networks , 2008, Int. J. Bifurc. Chaos.

[21]  Mohammad Alshayeb,et al.  A metrics suite for UML model stability , 2016, Software & Systems Modeling.

[22]  James E. Tomayko,et al.  The structural complexity of software an experimental test , 2005, IEEE Transactions on Software Engineering.

[23]  Bo Jiang,et al.  Recode: Software package Refactoring via Community Detection in bipartite Software Networks , 2014, Adv. Complex Syst..

[24]  Christopher R. Myers,et al.  Software systems as complex networks: structure, function, and evolvability of software collaboration graphs , 2003, Physical review. E, Statistical, nonlinear, and soft matter physics.

[25]  Mohammad Alshayeb,et al.  Towards measuring object-oriented class stability , 2011, IET Softw..