skip to main content
research-article
Free Access

Dependence clusters in source code

Published:04 November 2009Publication History
Skip Abstract Section

Abstract

A dependence cluster is a set of program statements, all of which are mutually inter-dependent. This article reports a large scale empirical study of dependence clusters in C program source code. The study reveals that large dependence clusters are surprisingly commonplace. Most of the 45 programs studied have clusters of dependence that consume more than 10% of the whole program. Some even have clusters consuming 80% or more. The widespread existence of clusters has implications for source code analyses such as program comprehension, software maintenance, software testing, reverse engineering, reuse, and parallelization.

References

  1. 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 Computer Society Press, Los Alamitos, CA, 145--154. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Baresel, A., Sthamer, H., and Schmidt, M. 2002. Fitness function design to improve evolutionary structural testing. In GECCO 2002: Proceedings of the Genetic and Evolutionary Computation Conference. Morgan Kaufmann, San Francisco, CA, 1329--1336. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Bates, S. and Horwitz, S. 1993. Incremental program testing using program dependence graphs. In Conference Record of the 20th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. ACM, New York, 384--396. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Beck, J. and Eichmann, D. 1993. Program and interface slicing for reverse engineering. In IEEE/ACM 15th Conference on Software Engineering (ICSE'93). IEEE Computer Society Press, Los Alamitos, CA, 509--518. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Beszédes, A., Gergely, T., Szabó, Z. M., Csirik, J. and Gyimóthy, T. 2001. Dynamic slicing method for maintenance of large C programs. In Proceedings of the 5th European Conference on Software Maintenance and Reengineering (CSMR 2001). IEEE Computer Society Press, Los Alamitos, CA, 105--113. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Beszédes, A. and Gyimóthy, T. 2002. Union slices for the approximation of the precise slice. In Proceedings of the IEEE International Conference on Software Maintenance. IEEE Computer Society Press, Los Alamitos, CA, 12--20.Google ScholarGoogle Scholar
  7. Bieman, J. M. and Ott, L. M. 1994. Measuring functional cohesion. IEEE Trans. Softw. Eng. 20, 8 (Aug.), 644--657. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Binder, R. V. 1994. Design for testability in object--oriented systems. Commun. ACM 37, 9, 87--101. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Binkley, D. and Harman, M. 2005a. Forward slices are smaller than backward slices. In Proceedings of the 5th IEEE International Workshop on Source Code Analysis and Manipulation. IEEE Computer Society Press, Los Alamitos, CA, 15--24. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Binkley, D. and Harman, M. 2005b. Locating dependence clusters and dependence pollution. In Proceedings of the 21st IEEE International Conference on Software Maintenance. IEEE Computer Society Press, Los Alamitos, CA, 177--186. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Binkley, D., Harman, M., and Krinke, J. 2006. Animated visualisation of static analysis: Characterising, explaining and exploiting the approximate nature of static analysis. In Proceedings of the 6th International Workshop on Source Code Analysis and Manipulation (SCAM 06). 43--52. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Binkley, D. W. 1997. Semantics guided regression test cost reduction. IEEE Trans. Softw. Eng. 23, 8 (Aug.), 498--516. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Binkley, D. W. 1998. The application of program slicing to regression testing. Inf. Softw. Tech. Special Issue on Program Slicing 40, 11 and 12, 583--594.Google ScholarGoogle Scholar
  14. Binkley, D. W. and Gallagher, K. B. 1996. Program slicing. In Advances in Computing, Volume 43, Academic Press, Orlando, FL, 1--50.Google ScholarGoogle Scholar
  15. Binkley, D. W. and Harman, M. 2004a. Analysis and visualization of predicate dependence on formal parameters and global variables. IEEE Trans. Softw. Eng. 30, 11, 715--735. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Binkley, D. W. and Harman, M. 2004b. A survey of empirical results on program slicing. Adv. Comput. 62, 105--178.Google ScholarGoogle ScholarCross RefCross Ref
  17. Binkley, D. W., Harman, M., and Krinke, J. 2007. Empirical study of optimization techniques for massive slicing. ACM Trans. Prog. Lang. Syst. 30, 3:1--3:33. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Binkley, D. W., Harman, M., Raszewski, L. R., and Smith, C. 2000. An empirical study of amorphous slicing as a program comprehension support tool. In Proceedings of the 8th IEEE International Workshop on Program Comprehension. IEEE Computer Society Press, Los Alamitos, CA, 161--170. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Binkley, D. W., Horwitz, S., and Reps, T. 1995. Program integration for languages with procedure calls. ACM Trans. Softw. Eng. Method. 4, 1, 3--35. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Black, S. E. 2001. Computing ripple effect for software maintenance. J. Softw. Mainten. Evolut. Res. Pract. 13, 263--279. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Canfora, G. and Cerulo, L. 2005. Impact analysis by mining software and change request repositories. In Proceedings of the IEEE Metrics Symposium. IEEE Computer Society Press, Los Alamitos, CA, 29. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Canfora, G., Cimitile, A., De Lucia, A., and Lucca, G. A. D. 1994a. Software salvaging based on conditions. In Proceedings of the International Conference on Software Maintenance IEEE Computer Society Press, Los Alamitos, CA, 424--433. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Canfora, G., Cimitile, A., and Munro, M. 1994b. RE2: Reverse engineering and reuse re-engineering. J. Softw. Maint. Res. Pract. 6, 2, 53--72.Google ScholarGoogle ScholarCross RefCross Ref
  24. Canfora, G., De Lucia, A., and Munro, M. 1998. An integrated environment for reuse reengineering C code. J. Syst. Softw. 42, 153--164. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Cimitile, A., De Lucia, A., and Munro, M. 1995. Identifying reusable functions using specification driven program slicing: a case study. In Proceedings of the IEEE International Conference on Software Maintenance. IEEE Computer Society Press, Los Alamitos, CA, 124--133. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Cimitile, A., De Lucia, A., and Munro, M. 1996. A specification driven slicing process for identifying reusable functions. Software maintenance: Res. Pract. 8, 145--178. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Colin, S., Legeard, B., and Peureux, F. 2004. Preamble computation in automated test case generation using constraint logic programming. Softw. Test. Verif. Reliab. 14, 3 (Sept.), 213--235. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. De Lucia, A. 2001. Program slicing: Methods and applications. In Proceedings of the 1st IEEE International Workshop on Source Code Analysis and Manipulation. IEEE Computer Society Press, Los Alamitos, CA, 142--149.Google ScholarGoogle ScholarCross RefCross Ref
  29. De Lucia, A., Fasolino, A. R., and Munro, M. 1996. Understanding function behaviours through program slicing. In Proceedings of the 4th IEEE Workshop on Program Comprehension. IEEE Computer Society Press, Los Alamitos, CA, 9--18. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. De Lucia, A., Harman, M., Hierons, R., and Krinke, J. 2003. Unions of slices are not slices. In Proceedings of the 7th IEEE European Conference on Software Maintenance and Reengineering (CSMR 2003). IEEE Computer Society Press, Los Alamitos, CA, 363--367. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Deng, Y., Kothari, S., and Namara, Y. 2001. Program slice browser. In Proceedings of the 9th IEEE International Workshop on Program Comprenhesion. IEEE Computer Society Press, Los Alamitos, CA, 50--59. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Eisenbarth, T., Koschke, R., and Simon, D. 2003. Locating features in source code. IEEE Trans. Softw. Eng. 29, 3. (Special issue on ICSM 2001.) Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. 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 '98 Conference on Programming Language Design and Implementation. ACM, New York, 85--96. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Ferguson, R. and Korel, B. 1996. The chaining approach for software test data generation. ACM Trans. Softw. Eng. Method. 5, 1 (Jan.), 63--86. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Gallagher, K. and Binkley, D. 2003. An empirical study of computation equivalence as determined by decomposition slice equivalence. In Proceedings of the 10th Working Conference on Reverse Engineering, WCRE--03. IEEE Computer Society Press, Los Alamitos, CA, 316--322. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Gallagher, K. and Layman, L. 2003. Are decomposition slices clones? In Proceedings of the 11th International Workshop on Program Comprehension. IEEE Computer Society Press, Los Alamitos, CA. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. Gallagher, K. and O'Brien, L. 2001. Analyzing programs via decomposition slicing. In Proceedings of International Workshop on Empirical Studies of Software Maintenance, WESS. IEEE Computer Society Press, Los Alamitos, CA.Google ScholarGoogle Scholar
  38. Gallagher, K. B. 1992. Evaluating the surgeon's assistant: Results of a pilot study. In Proceedings of the International Conference on Software Maintenance. IEEE Computer Society Press, Los Alamitos, CA, 236--244.Google ScholarGoogle ScholarCross RefCross Ref
  39. Gallagher, K. B. 1996. Visual impact analysis. In Proceedings of the Conference on Software Maintenance - 1996. IEEE Computer Society Press, Los Alamitos, CA. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. Gallagher, K. B., Harman, M., and Danicic, S. 2003. Guaranteed inconsistency avoidance during software evolution. J. Softw. Maint. Evolut. 15, 6 (Nov/Dec), 393--416. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. Gallagher, K. B. and Lyle, J. R. 1991. Using program slicing in software maintenance. IEEE Trans. Softw. Eng. 17, 8 (Aug.), 751--761. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. Grammatech Inc. 2002. The codesurfer slicing system.Google ScholarGoogle Scholar
  43. Gupta, R., Harrold, M. J., and Soffa, M. L. 1992. An approach to regression testing using slicing. In Proceedings of the IEEE Conference on Software Maintenance. IEEE Computer Society Press, Los Alamitos, CA, 299--308.Google ScholarGoogle Scholar
  44. Hall, T., Rainer, A., and Jagielska, D. 2005. Using software development progress data to understand threats to project outcomes. In Proceedings of the 11th International Software Metrics Symposium (METRICS 2005). IEEE Computer Society Press, Los Alamitos, CA, 18. Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. Harman, M., Binkley, D., Singh, R., and Hierons, R. 2004a. Amorphous procedure extraction. In Proceedings of the 4th International Workshop on Source Code Analysis and Manipulation (SCAM 04). IEEE Computer Society Press, Los Alamitos, CA, 85--94. Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. Harman, M., Binkley, D. W., and Danicic, S. 2003. Amorphous program slicing. J. Syst. Softw. 68, 1 (Oct.), 45--64. Google ScholarGoogle ScholarDigital LibraryDigital Library
  47. Harman, M. and Danicic, S. 1995. Using program slicing to simplify testing. Softw. Test. Verif. Reliab. 5, 3 (Sept.), 143--162.Google ScholarGoogle ScholarCross RefCross Ref
  48. Harman, M., Hassoun, Y., Lakhotia, K., McMinn, P., and Wegener, J. 2007. The impact of input domain reduction on search-based test data generation. In Proceedings of the ACM Symposium on the Foundations of Software Engineering (FSE '07). ACM, New York, 155--164. Google ScholarGoogle ScholarDigital LibraryDigital Library
  49. Harman, M. and Hierons, R. M. 2001. An overview of program slicing. Softw. Focus 2, 3, 85--92.Google ScholarGoogle ScholarCross RefCross Ref
  50. Harman, M., Hu, L., Hierons, R. M., Wegener, J., Sthamer, H., Baresel, A., and Roper, M. 2004b. Testability transformation. IEEE Trans. Softw. Eng. 30, 1 (Jan.), 3--16. Google ScholarGoogle ScholarDigital LibraryDigital Library
  51. Harman, M., Swift, S., and Mahdavi, K. 2005. An empirical study of the robustness of two module clustering fitness functions. In Proceedings of the Genetic and Evolutionary Computation Conference (GECCO 2005). ACM, New York, 1029--1036. Google ScholarGoogle ScholarDigital LibraryDigital Library
  52. Horwitz, S., Prins, J., and Reps, T. 1989. Integrating non--interfering versions of programs. ACM Trans. Prog. Lang. Syst. 11, 3 (July), 345--387. Google ScholarGoogle ScholarDigital LibraryDigital Library
  53. Horwitz, S., Reps, T., and Binkley, D. W. 1990. Interprocedural slicing using dependence graphs. ACM Trans. Prog. Lang. Syst. 12, 1, 26--61. Google ScholarGoogle ScholarDigital LibraryDigital Library
  54. Hutchens, D. and Basili, V. 1985. System structure analysis: clustering with data bindings. IEEE Trans. Softw. Eng. SE-11, 8, 749--757. Google ScholarGoogle ScholarDigital LibraryDigital Library
  55. Hutchens, M. and Gallagher, K. 1998. Improving visual impact analysis. In Proceedings of the 1998 International Conference on Software Maintenance--98. IEEE Computer Society Press, Los Alamitos, CA. Google ScholarGoogle ScholarDigital LibraryDigital Library
  56. Jackson, D. and Rollins, E. J. 1994. A new model of program dependences for reverse engineering. In Proceedings of the ACM SIGSOFT '94 Symposium on the Foundations of Software Engineering. ACM, New York, 2--10. Google ScholarGoogle ScholarDigital LibraryDigital Library
  57. Kamiya, T., Kusumoto, S., and Inoue, K. 2002. CCFinder: A multi-linguistic token-based code clone detection system for large scale source code. IEEE Trans. Softw. Eng. 28, 6, 654--670. Google ScholarGoogle ScholarDigital LibraryDigital Library
  58. Kiczales, G. 1997. Aspect oriented programming. ACM SIGPLAN Notices 32, 10 (Oct.), 162.Google ScholarGoogle Scholar
  59. Komondoor, R. and Horwitz, S. 2000. Semantics-preserving procedure extraction. In Proceedings of the 27th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL-00). ACM, New York, 155--169. Google ScholarGoogle ScholarDigital LibraryDigital Library
  60. Komondoor, R. and Horwitz, S. 2003. Effective automatic procedure extraction. In Proceedings of the 11th IEEE International Workshop on Program Comprehension. IEEE Computer Society Press, Los Alamitos, CA, 33--43. Google ScholarGoogle ScholarDigital LibraryDigital Library
  61. Korel, B. 1990. Automated software test data generation. IEEE Transactions on Software Engineering 16, 8, 870--879. Google ScholarGoogle ScholarDigital LibraryDigital Library
  62. Korel, B. and Rilling, J. 1997. Dynamic program slicing in understanding of program execution. In Proceedings of the 5th IEEE International Workshop on Program Comprenhesion (IWPC'97). IEEE Computer Society Press, Los Alamitos, CA, 80--89. Google ScholarGoogle ScholarDigital LibraryDigital Library
  63. Korel, B. and Rilling, J. 1998. Program slicing in understanding of large programs. In Proceedings of the 6th IEEE International Workshop on Program Comprenhesion (IWPC'98). IEEE Computer Society Press, Los Alamitos, CA, 145--152. Google ScholarGoogle ScholarDigital LibraryDigital Library
  64. Krinke, J. and Snelting, G. 1998. Validation of measurement software as an application of slicing and constraint solving. Inf. Softw. Tech. (Special Issue on Program Slicing) 40, 11 and 12, 661--675.Google ScholarGoogle Scholar
  65. Kusumoto, S., Nishimatsu, A., Nishie, K., and Inoue, K. 2002. Experimental evaluation of program slicing for fault localization. Empir. Softw. Eng. 7, 49--76. Google ScholarGoogle ScholarDigital LibraryDigital Library
  66. Lakhotia, A. 1993. Rule--based approach to computing module cohesion. In Proceedings of the 15th Conference on Software Engineering (ICSE-15). ACM, New York, 34--44. Google ScholarGoogle ScholarDigital LibraryDigital Library
  67. Lakhotia, A. and Deprez, J.-C. 1998. Restructuring programs by tucking statements into functions. Inf. Softw. Tech. (Special Issue on Program Slicing) 40, 11 and 12, 677--689.Google ScholarGoogle Scholar
  68. Lakhotia, A. and Singh, P. 2003. Challenges in getting formal with viruses. Virus Bulletin. Sept. 2003.Google ScholarGoogle Scholar
  69. Lehman, M. M. 1980. On understanding laws, evolution and conservation in the large program life cycle. J. Syst. Softw. 1, 3, 213--221.Google ScholarGoogle ScholarDigital LibraryDigital Library
  70. Lehman, M. M. 1998. Software's future: Managing evolution. IEEE Softw. 15, 1 (Jan./Feb.), 40--44. Google ScholarGoogle ScholarDigital LibraryDigital Library
  71. Li, K. and Wu, M. 2004. Effective Software Test Automation: Developing an Automated Software Testing Tool. Sybex. Google ScholarGoogle ScholarDigital LibraryDigital Library
  72. Lyle, J. R. and Weiser, M. 1987. Automatic program bug location by program slicing. In Proceedings of the 2nd International Conference on Computers and Applications (Peking) . IEEE Computer Society Press, Los Alamitos, CA, 877--882.Google ScholarGoogle Scholar
  73. Mahdavi, K., Harman, M., and Hierons, R. M. 2003. A multiple hill climbing approach to software module clustering. In Proceedings of the IEEE International Conference on Software Maintenance. (Amsterdam, Netherlands). IEEE Computer Society Press, Los Alamitos, CA, 315--324. Google ScholarGoogle ScholarDigital LibraryDigital Library
  74. Mancoridis, S., Mitchell, B. S., Chen, Y.-F., and Gansner, E. R. 1999. Bunch: A clustering tool for the recovery and maintenance of software system structures. In Proceedings of the IEEE International Conference on Software Maintenance. IEEE Computer Society Press, Los Alamitos, CA, 50--59. Google ScholarGoogle ScholarDigital LibraryDigital Library
  75. Meyers, T. and Binkley, D. W. 2004. Slice-based cohesion metrics and software intervention. In Proceedings of the 11th IEEE Working Conference on Reverse Engineering. IEEE Computer Society Press, Los Alamitos, CA, 256--266. Google ScholarGoogle ScholarDigital LibraryDigital Library
  76. Mitchell, B. S. and Mancoridis, S. 2002. Using heuristic search techniques to extract design abstractions from source code. In GECCO 2002: Proceedings of the Genetic and Evolutionary Computation Conference. Morgan-Kaufmann, San Francisco, CA, 1375--1382. Google ScholarGoogle ScholarDigital LibraryDigital Library
  77. Mitchell, B. S. and Mancoridis, S. 2006. On the automatic modularization of software systems using the bunch tool. IEEE Trans. Softw. Eng. 32, 3, 193--208. Google ScholarGoogle ScholarDigital LibraryDigital Library
  78. Ning, J., Engberts, A., and Kozaczynski, V. 1994. Automated support for legacy code understanding. Commun. ACM 37, 5, 50--57. Google ScholarGoogle ScholarDigital LibraryDigital Library
  79. Ott, L. M. and Thuss, J. J. 1989. The relationship between slices and module cohesion. In Proceedings of the 11th ACM Conference on Software Engineering. ACM, New York, 198--204. Google ScholarGoogle ScholarDigital LibraryDigital Library
  80. Ren, X., Chesley, O., and Ryder, B. G. 2006. Identifying failure causes in java programs: An application of change impact analysis. IEEE Trans. Softw. Eng. 32, 9, 718--732. Google ScholarGoogle ScholarDigital LibraryDigital Library
  81. Ren, X., Ryder, B. G., Störzer, M., and Tip, F. 2005. Chianti: a change impact analysis tool for java programs. In Proceedings of the 27th International Conference on Software Engineering (ICSE 2005). ACM, New York, 664--665. Google ScholarGoogle ScholarDigital LibraryDigital Library
  82. Rilling, J., Seffah, A., and Lukas. J. 2001. MOOSE--A software comprehension framework. In Proceedings of the 5th World Multi-Conference on Systemics, Cybernetics and Informatics (SCI'01). (Software Quality: Standards, Metrics, Models, Tools and Human Aspects Session).Google ScholarGoogle Scholar
  83. Rilling, J. and Mudur, S. P. 2002. On the use of metaballs to visually map source code structures and analysis results onto 3d space. In Proceedings of the 10th Working Conference on Reverse Engineering (Richmond, Virginia). IEEE Computer Society Press, Los Alamitos, CA, 42--52. Google ScholarGoogle ScholarDigital LibraryDigital Library
  84. Ryan, C. 2000. Automatic re-engineering of software using genetic programming. Kluwer Academic Publishers. Google ScholarGoogle ScholarDigital LibraryDigital Library
  85. Sherriff, M. and Williams, L. 2008. Empirical software change impact analysis using singular value decomposition. In Proceedings of the 1st IEEE International Conference on Software Testing. IEEE Computer Society Press, Los Alamitos, CA, 268--277. Google ScholarGoogle ScholarDigital LibraryDigital Library
  86. Tip, F. 1995. A survey of program slicing techniques. J. Prog. Lang. 3, 3 (Sept.), 121--189.Google ScholarGoogle Scholar
  87. Tonella, P. 2003. Using a concept lattice of decomposition slices for program understanding and impact analysis. IEEE Trans. Softw. Eng. 29, 6, 495--509. Google ScholarGoogle ScholarDigital LibraryDigital Library
  88. Tracey, N., Clark, J., Mander, K., and McDermid, J. 2000. Automated test-data generation for exception conditions. Softw. Pract. Exper. 30, 1, 61--79. Google ScholarGoogle ScholarDigital LibraryDigital Library
  89. Voas, J. M. and Miller, K. W. 1995. Software testability: The new verification. IEEE Software 12, 3 (May), 17--28. Google ScholarGoogle ScholarDigital LibraryDigital Library
  90. Weiser, M. 1982. Programmers use slices when debugging. Commun. ACM 25, 7 (July), 446--452. Google ScholarGoogle ScholarDigital LibraryDigital Library
  91. Wheeler, D. A. 2005. SLOC count user's guide. http://www.dwheeler.com/sloccount/sloccount.html.Google ScholarGoogle Scholar
  92. Yau, S. S. and Collofello, J. S. 1985. Design stability measures for software maintenance. IEEE Trans. Softw. Eng. 11, 9 (Sept.), 849--856. Google ScholarGoogle ScholarDigital LibraryDigital Library
  93. Zhao, J. 2002. Slicing aspect-oriented software. In Proceedings of the 10th IEEE International Workshop on Program Comprehension (Paris, France). IEEE Computer Society Press, Los Alamitos, CA, 351--260. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Dependence clusters in source code

          Recommendations

          Reviews

          Timothy R. Hopkins

          In this paper, a dependence cluster is defined to be a set of program statements, all of which are mutually interdependent. While dependence clusters have been studied at higher levels of abstraction (for example, at the function and module levels), this is the first attempt to study them at the statement level. In order to provide an efficient means of computing dependence clusters, the authors postulate that these can be approximated by considering all program slices of the same size as representing components of a cluster. The size of the cluster is measured in terms of nodes of the system dependence graph (SDG) of the program. This approach is conservative in that, at worst, it will admit false negatives. By visualizing the slice sizes as a monotonically increasing profile, a group of slices of similar size appears as a clear plateau. Forty-five C programs from a variety of application areas and totaling around 900,000 noncomment, nonblank lines were used as a test bed for study. The results presented support the use of slice sizes to construct good approximations to dependence clusters. In addition, close to 90 percent of the programs used included clusters consisting of between 10 and 70 percent of the program. Further analysis showed that, for many of the programs considered, a small number of nodes of the SDG exerted a strong effect on the size of the dependence cluster. These nodes were all predicate nodes. Identification of these nodes could provide a good pointer to how the software might be refactored to reduce cluster size. Finally, there is a discussion of how the detection of large dependence clusters may impact areas such as program comprehension, testing, maintenance, reuse, and parallelization. The paper contains a large number of graphs and a detailed discussion of the analysis of the accuracy of using program slice sizes to approximate the construction of the dependence clusters. There is also an assumption that the reader is familiar with program slicing. For these reasons, the paper is most suited to researchers in the area of practical program analysis. Online Computing Reviews Service

          Access critical reviews of Computing literature here

          Become a reviewer for Computing Reviews.

          Comments

          Login options

          Check if you have access through your login credentials or your institution to get full access on this article.

          Sign in

          Full Access

          • Published in

            cover image ACM Transactions on Programming Languages and Systems
            ACM Transactions on Programming Languages and Systems  Volume 32, Issue 1
            October 2009
            142 pages
            ISSN:0164-0925
            EISSN:1558-4593
            DOI:10.1145/1596527
            Issue’s Table of Contents

            Copyright © 2009 ACM

            Publisher

            Association for Computing Machinery

            New York, NY, United States

            Publication History

            • Published: 4 November 2009
            • Accepted: 1 February 2009
            • Revised: 1 July 2008
            • Received: 1 October 2007
            Published in toplas Volume 32, Issue 1

            Permissions

            Request permissions about this article.

            Request Permissions

            Check for updates

            Qualifiers

            • research-article
            • Research
            • Refereed

          PDF Format

          View or Download as a PDF file.

          PDF

          eReader

          View online with eReader.

          eReader
          About Cookies On This Site

          We use cookies to ensure that we give you the best experience on our website.

          Learn more

          Got it!