Design Stability Measures for Software Maintenance
IEEE Transactions on Software Engineering - Special issue on COMPSAC 1982 and 1983
The program dependence graph and its use in optimization
ACM Transactions on Programming Languages and Systems (TOPLAS)
Interprocedural slicing using dependence graphs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Using Program Slicing in Software Maintenance
IEEE Transactions on Software Engineering
Seesoft-A Tool for Visualizing Line Oriented Software Statistics
IEEE Transactions on Software Engineering - Special issue on software measurement principles, techniques, and environments
Static slicing of threaded programs
Proceedings of the 1998 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Computing ripple effect for software maintenance
Journal of Software Maintenance: Research and Practice
Locating Features in Source Code
IEEE Transactions on Software Engineering
The program dependence graph in a software development environment
SDE 1 Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
Using a Concept Lattice of Decomposition Slices for Program Understanding and Impact Analysis
IEEE Transactions on Software Engineering
On the Automatic Modularization of Software Systems Using the Bunch Tool
IEEE Transactions on Software Engineering
A novel approach to optimize clone refactoring activity
Proceedings of the 8th annual conference on Genetic and evolutionary computation
Identifying Failure Causes in Java Programs: An Application of Change Impact Analysis
IEEE Transactions on Software Engineering
Verifying the Concept of Union Slices on Java Programs
CSMR '07 Proceedings of the 11th European Conference on Software Maintenance and Reengineering
Empirical study of optimization techniques for massive slicing
ACM Transactions on Programming Languages and Systems (TOPLAS)
Comparison and Evaluation of Clone Detection Tools
IEEE Transactions on Software Engineering
"Cloning considered harmful" considered harmful: patterns of cloning in software
Empirical Software Engineering
Dependence clusters in source code
ACM Transactions on Programming Languages and Systems (TOPLAS)
Identifying 'Linchpin Vertices' That Cause Large Dependence Clusters
SCAM '09 Proceedings of the 2009 Ninth IEEE International Working Conference on Source Code Analysis and Manipulation
Assessing the impact of global variables on program dependence and dependence clusters
Journal of Systems and Software
IEEE Transactions on Software Engineering
Practical change impact analysis based on static program slicing for industrial software systems
Proceedings of the 33rd International Conference on Software Engineering
Dependence communities in source code
ICSM '12 Proceedings of the 2012 IEEE International Conference on Software Maintenance (ICSM)
Hi-index | 0.00 |
This paper presents the results of a large scale empirical study of coherent dependence clusters. All statements in a coherent dependence cluster depend upon the same set of statements and affect the same set of statements; a coherent cluster's statements have 'coherent' shared backward and forward dependence. We introduce an approximation to efficiently locate coherent clusters and show that it has a minimum precision of 97.76%. Our empirical study also finds that, despite their tight coherence constraints, coherent dependence clusters are in abundance: 23 of the 30 programs studied have coherent clusters that contain at least 10% of the whole program. Studying patterns of clustering in these programs reveals that most programs contain multiple substantial coherent clusters. A series of subsequent case studies uncover that all clusters of significant size map to a logical functionality and correspond to a program structure. For example, we show that for the program acct, the top five coherent clusters all map to specific, yet otherwise non-obvious, functionality. Cluster visualization also brings out subtle deficiencies in program structure and identifies potential refactoring candidates. A study of inter-cluster dependence is used to highlight how coherent clusters are connected to each other, revealing higher-level structures, which can be used in reverse engineering. Finally, studies are presented to illustrate how clusters are not correlated with program faults as they remain stable during most system evolution.