Abstract
Several authors have found evidence of large dependence clusters in the source code of a diverse range of systems, domains, and programming languages. This raises the question of how we might efficiently locate the fragments of code that give rise to large dependence clusters. We introduce an algorithm for the identification of linchpin vertices, which hold together large dependence clusters, and prove correctness properties for the algorithm’s primary innovations. We also report the results of an empirical study concerning the reduction in analysis time that our algorithm yields over its predecessor using a collection of 38 programs containing almost half a million lines of code. Our empirical findings indicate improvements of almost two orders of magnitude, making it possible to process larger programs for which it would have previously been impractical.
- Acharya, M. and Robinson, B. 2011. Practical change impact analysis based on static program slicing for industrial software systems. In Proceedings of the 33rd International Conference on Software Engineering (ICSE’11). R. N. Taylor, H. Gall, and N. Medvidovic Eds., ACM, 746--755. Google Scholar
Digital Library
- Andersen, L. O. 1994. Program analysis and specialization for the C programming language. Ph.D. thesis, (DIKU report 94/19) DIKU, University of Copenhagen.Google Scholar
- Balmas, F. 2002. Using dependence graphs as a support to document programs. In Proceedings of the 2nd IEEE International Workshop on Source Code Analysis and Manipulation. IEEE, 145--154. Google Scholar
Digital Library
- Beszédes, Á., Gergely, T., Jász, J., Toth, G., Gyimóthy, T., and Rajlich, V. 2007. Computation of static execute after relation with applications to software maintenance. In Proceedings of the 23rd IEEE International Conference on Software Maintenance (ICSM’07). IEEE, 295--304.Google Scholar
- Binkley, D. and Harman, M. 2005. Locating dependence clusters and dependence pollution. In Proceedings of the 21st IEEE International Conference on Software Maintenance. IEEE, 177--186. Google Scholar
Digital Library
- Binkley, D. and Harman, M. 2009. Identifying ‘linchpin vertices’ that cause large dependence clusters. In Proceedings of the 9th International Working Conference on Source Code Analysis and Manipulation (SCAM’09). IEEE. Google Scholar
Digital Library
- Binkley, D., Gold, N., Harman, M., Li, Z., Mahdavi, K., and Wegener, J. 2008. Dependence anti patterns. In Proceedings of the 4th International ERCIM Workshop on Software Evolution and Evolvability (Evol’08). 25--34.Google Scholar
- Binkley, D., Harman, M., Hassoun, Y., Islam, S., and Li, Z. 2009. Assessing the impact of global variables on program dependence and dependence clusters. J. Syst. Software 83, 1, 96--107. Google Scholar
Digital Library
- Binkley, D. W. 1993. Precise executable interprocedural slices. ACM Lett. Program. Lang. Syst. 3, 1--4, 31--45. Google Scholar
Digital Library
- Binkley, D. W. 2007. Source code analysis: A road map. In Future of Software Engineering 2007, L. Briand and A. Wolf Eds., IEEE, 104--119. Google Scholar
Digital Library
- Black, S., Counsell, S., Hall, T., and Wernick, P. 2006. Using program slicing to identify faults in software. In Beyond Program Slicing, D. W. Binkley, M. Harman, and J. Krinke Eds., Dagstuhl Seminar Proceedings, Number 05451, Internationales Begegnungs- und Forschungszentrum für Informatik (IBFI), Schloss Dagstuhl, Germany.Google Scholar
- Black, S., Counsell, S., Hall, T., and Bowes, D. 2009. Fault analysis in OSS based on program slicing metrics. In Proceedings of the EUROMICRO Conference on Software Engineering and Advanced Applications. IEEE, 3--10. Google Scholar
Digital Library
- Black, S. E. 2001. Computing ripple effect for software maintenance. J. Softw. Maintenance Evol. Res. Pract. 13, 263--279. Google Scholar
Digital Library
- Deng, Y., Kothari, S., and Namara, Y. 2001. Program slice browser. In Proceedings of the 9th IEEE International Workshop on Program Comprenhesion. IEEE, 50--59. Google Scholar
Digital Library
- Eberle, W. and Holder, L. 2009. Graph-based approaches to insider threat detection. In Proceedings of the 5th Annual Workshop on Cyber Security and Information Intelligence Research Cyber Security and Information Intelligence Challenges and Strategies (CSIIRW’09). Google Scholar
Digital Library
- Eisenbarth, T., Koschke, R., and Simon, D. 2003. Locating features in source code. IEEE Trans. Software Eng. 29, 3. Google Scholar
Digital Library
- Fahndrich, M., Foster, J. S., Su, Z., and Aiken, A. 1998. Partial online cycle elimination in inclusion constraint graphs. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation. ACM, 85--96. Google Scholar
Digital Library
- Gallagher, K. B. and Lyle, J. R. 1991. Using program slicing in software maintenance. IEEE Trans. Software Eng. 17, 8, 751--761. Google Scholar
Digital Library
- Grammatech Inc. 2002. The codesurfer slicing system.Google Scholar
- Hajnal, Á. and Forgács, I. 2012. A demand-driven approach to slicing legacy COBOL systems. J. Softw. Maintenance Evol. Res. Pract. 24, 1, 67--82. Wiley Online Library. DOI:10.1002/smr.533.Google Scholar
Cross Ref
- Harman, M., Binkley, D., Gallagher, K., Gold, N., and Krinke, J. 2009. Dependence clusters in source code. ACM Trans. Program. Lang. Syst. 32, 1, Article 1. Google Scholar
Digital Library
- Horwitz, S., Reps, T., and Binkley, D. W. 1990. Interprocedural slicing using dependence graphs. ACM Trans. Program. Lang. Syst. 12, 1, 26--61. Google Scholar
Digital Library
- Islam, S., Krinke, J., and Binkley, D. 2010a. Dependence cluster visualization. In Proceedings of the 5th International Symposium on Software Visualization (SOFTVIS’10). ACM, 53--60. Google Scholar
Digital Library
- Islam, S., Krinke, J., Binkley, D., and Harman, M. 2010b. Coherent dependence clusters. In Proceedings of the 9th ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering (PASTE’10). ACM. Google Scholar
Digital Library
- Korel, B. and Laski, J. 1988. Dynamic program slicing. Inf. Process. Lett. 29, 3, 155--163. Google Scholar
Digital Library
- Lin, S. and Chlupsky, H. 2003. Unsupervised link discovery in multi-relational data via rarity analysis. In Proceedings of the IEEE ICDM Conference on Data Mining. 171--178. Google Scholar
Digital Library
- Madey, G., Freeh, V., Tynan, R., and Hoffman, C. 2003. An analysis of open source software development using social network theory and agent-based modeling. In Proceedings of the Arrowhead Conference on Human Complex Systems.Google Scholar
- Mitchell, B. S. and Mancoridis, S. 2006. On the automatic modularization of software systems using the bunch tool. IEEE Trans. Software Eng. 32, 3, 193--208. Google Scholar
Digital Library
- Praditwong, K., Harman, M., and Yao, X. 2011. Software module clustering as a multi-objective search problem. IEEE Trans. Software Eng. 37, 2, 264--282. Google Scholar
Digital Library
- Rattigan, M. and Jensen, D. 2005. The case for anomalous link discovery. ACM SIGKDD Expl. News 7, 2. Google Scholar
Digital Library
- Reps, T. and Yang, W. 1988. The semantics of program slicing. Tech. rep. 777, University of Wisconsin.Google Scholar
- Reps, T. and Rosay, G. 1995. Precise interprocedural chopping. In Proceedings of the 3rd ACM SIGSOFT Symposium on the Foundations of Software Engineering (SIGSOFT’95). G. E. Kaiser Ed., ACM Press, 41--52. Google Scholar
Digital Library
- Reps, T., Horwitz, S., and Sagiv, M. 1995. Precise interprocedural dataflow analysis via graph reachability. In Proceedings of the ACM Symposium on Principles of Programming Languages. 49--61. Google Scholar
Digital Library
- Savernik, L. 2007. Entwicklung eines automatischen Verfahrens zur Auflösung statischer zyklischer Abhängigkeiten in Softwaresystemen (in German). In Software Engineering 2007 - Beiträge zu den Workshops, Fachtagung des GIFachbereichs Softwaretechnik, W.-G. Bleek, H. Schwentner, and H. Züllighoven Eds., LNI Series, vol. 106. GI, 357--360.Google Scholar
- Sharir, M. and Pnueli, A. 1981. Two Approaches to Interprocedural Data Flow Analysis. Prentice-Hall, Englewood Cliffs, NJ.Google Scholar
- Szegedi, A., Gergely, T., Beszédes, Á., Gyimóthy, T., and Tóth, G. 2007. Verifying the concept of union slices on Java programs. In Proceedings of the 11th European Conference on Software Maintenance and Reengineering (CSMR’07). 233--242. Google Scholar
Digital Library
- Tonella, P. 2003. Using a concept lattice of decomposition slices for program understanding and impact analysis. IEEE Trans. Software Eng. 29, 6, 495--509. Google Scholar
Digital Library
- Weiser, M. 1984. Program slicing. IEEE Trans. Software Eng. 10, 4, 352--357. Google Scholar
Digital Library
- Yong, S. H., Horwitz, S., and Reps, T. 1999. Pointer analysis for programs with structures and casting. In Proceedings of the SIGPLAN Conference on Programming Language Design and Implementation. 91--103. Google Scholar
Digital Library
- Yoo, S., Harman, M., Tonella, P., and Susi, A. 2009. Clustering test cases to achieve effective and scalable prioritisation incorporating expert knowledge. In Proceedings of the ACM International Conference on Software Testing and Analysis (ISSTA’09). 201--212. Google Scholar
Digital Library
Index Terms
Efficient Identification of Linchpin Vertices in Dependence Clusters
Recommendations
Identifying 'Linchpin Vertices' That Cause Large Dependence Clusters
SCAM '09: Proceedings of the 2009 Ninth IEEE International Working Conference on Source Code Analysis and ManipulationA dependence cluster is a maximal set of program components that all depend upon one another. Previous work has highlighted the prevalence of large dependence clusters in source code, presenting potential problems for comprehension, testing, and ...
Uncovering dependence clusters and linchpin functions
ICSME '15: Proceedings of the 2015 IEEE International Conference on Software Maintenance and Evolution (ICSME)Dependence clusters are (maximal) collections of mutually dependent source code entities according to some dependence relation. Their presence in software complicates many maintenance activities including testing, refactoring, and feature extraction. ...
Locating Dependence Clusters and Dependence Pollution
ICSM '05: Proceedings of the 21st IEEE International Conference on Software MaintenanceA dependence cluster is a set of program statements all of which are mutually inter-dependent. Such clusters can cause problems for maintenance, because a change to any statement in the cluster will have a potential impact on all statements in the ...






Comments