skip to main content
article
Free Access

Empirical study of optimization techniques for massive slicing

Published:01 November 2007Publication History
Skip Abstract Section

Abstract

This article presents results from a study of techniques that improve the performance of graph-based interprocedural slicing of the System Dependence Graph (SDG). This is useful in “massive slicing” where slices are required for many or all of the possible set of slicing criteria. Several different techniques are considered, including forming strongly connected components, topological sorting, and removing transitive edges.

Data collected from a test bed of just over 1,000,000 lines of code are presented. This data illustrates the impact on computation time of the techniques. Together, the best combination produces a 71% reduction in run-time (and a 64% reduction in memory usage). The complete set of techniques also illustrates the point at which faster computation is not viable due to prohibitive preprocessing costs.

References

  1. Agrawal, H. and Horgan, J. R. 1990. Dynamic program slicing. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (White Plains, NY). ACM, New York, 246--256. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Anderson, P., Binkley, D., Rosay, G., and Teitelbaum, T. 2001. Flow insensitive points-to sets. In Proceedings of the 1st IEEE Workshop on Source Code Analysis and Manipulation (Florence, Italy). IEEE Computer Society Press, Los Alamitos, CA, 79--89.Google ScholarGoogle Scholar
  3. Balmas, F. 2002. Using dependence graphs as a support to document programs. In Proceedings of the 2st IEEE International Workshop on Source Code Analysis and Manipulation (Montreal, Que, Canada). IEEE Computer Society Press, Los Alamitos, CA, 145--154. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. 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 (Montreal, Que, Canada). IEEE Computer Society Press, Los Alamitos, CA, 12--20.Google ScholarGoogle Scholar
  5. Bieman, J. M. and Ott, L. M. 1994. Measuring functional cohesion. IEEE Trans. Softw. Engin. 20, 8 (Aug.), 644--657. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. 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 (Budapest, Hungary, Sept. 30--Oct. 1). IEEE Computer Society Press, Los Alamitos, CA, 15--24. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Binkley, D. and Harman, M. 2005b. Locating dependence clusters and dependence pollution. In Proceedings of the 21st IEEE International Conference on Software Maintenance (Budapest, Hungary, Sept. 30--Oct. 1). IEEE Computer Society Press, Los Alamitos, CA, 177--186. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Binkley, D. W. 1998. The application of program slicing to regression testing. Inf. Softw. Technol. Special Issue on Program Slicing 40, 11 and 12, 583--594.Google ScholarGoogle Scholar
  9. Binkley, D. W. and Gallagher, K. B. 1996. Program slicing. In Adv. Comput. 43 Academic Press, Orlando, FL, 1--50.Google ScholarGoogle Scholar
  10. Binkley, D. W. and Harman, M. 2003a. A large-scale empirical study of forward and backward static slice size and context sensitivity. In Proceedings of the IEEE International Conference on Software Maintenance (Amsterdam, The Netherlands). IEEE Computer Society Press, Los Alamitos, CA, 44--53. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Binkley, D. W. and Harman, M. 2003b. Results from a large--scale study of performance optimization techniques for source code analyses based on graph reachability algorithms. In Proceedings of the IEEE International Workshop on Source Code Analysis and Manipulation (SCAM 2003) (Amsterdam, The Netherlands). IEEE Computer Society Press, Los Alamitos, CA, 203--212.Google ScholarGoogle Scholar
  12. Binkley, D. W. and Harman, M. 2004. Analysis and visualization of predicate dependence on formal parameters and global variables. IEEE Trans. Softw. Engineering 30, 11, 715--735. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. 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 (Limerick, Ireland). IEEE Computer Society Press, Los Alamitos, CA, 161--170. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Binkley, D. W., Horwitz, S., and Reps, T. 1995. Program integration for languages with procedure calls. ACM Trans. Softw. Engin. Meth. 4, 1, 3--35. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Black, S. E. 2001. Computing ripple effect for software maintenance. J. Softw. Maint. Evol.: Res. Pract. 13, 263--279. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Canfora, G., Cimitile, A., De Lucia, A., and Lucca, G. A. D. 1994a. Software salvaging based on conditions. In International Conference on Software Maintenance (Victoria, BC, Canada). IEEE Computer Society Press, Los Alamitos, CA, 424--433. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Canfora, G., Cimitile, A., and Munro, M. 1994b. RE2: Reverse engineering and reuse re-engineering. J. Softw. Mainten.: Res. Pract. 6, 2, 53--72.Google ScholarGoogle ScholarCross RefCross Ref
  18. Chilimbi, T., Davidson, B., Larus, J., and Hill, M. 1999. Cache-conscious structure definition. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (Atlanta, GA). ACM, New York, 13--24. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Cimitile, A., De Lucia, A., and Munro, M. 1995a. Identifying reusable functions using specification driven program slicing: A case study. In Proceedings of the IEEE International Conference on Software Maintenance (Nice, France). IEEE Computer Society Press, Los Alamitos, CA, 124--133. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Cimitile, A., De Lucia, A., and Munro, M. 1995b. Qualifying reusable functions using symbolic execution. In Proceedings of the 2nd Working Conference on Reverse Engineering (Toronto, Ont., Canada). IEEE Computer Society Press, Los Alamitos, CA, 178--187. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Danicic, S., De Lucia, A., and Harman, M. 2004. Building executable union slices using conditioned slicing. In Proceedings of the 12th International Workshop on Program Comprehension (Bari, Italy). IEEE Computer Society Press, Los Alamitos, CA, 89--97. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Eisenbarth, T., Koschke, R., and Vogel, G. 2002. Static trace extraction. In Proceedings of the IEEE Working Conference on Reverse Engineering (Richmond, VA). IEEE Computer Society Press, Los Alamitos, CA, 128--137. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Fähndrich, 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 (Montréal, Que., Canada). ACM, New York, 85--96. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Ferrante, J., Ottenstein, K. J., and Warren, J. D. 1987. The program dependence graph and its use in optimization. ACM Trans. Prog. Lang. Syst. 9, 3 (July), 319--349. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Fischer, C. N. and LeBlanc, R. J. 1988. Crafting a Compiler. Benjamin/Cummings Series in Computer Science. Benjamin/Cummings Publishing Company, Menlo Park, CA. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Fox, C., Harman, M., Hierons, R. M., and Danicic, S. 2001. Backward conditioning: a new program specialisation technique and its application to program comprehension. In Proceedings of the 9th IEEE International Workshop on Program Comprenhesion (Toronto, Ont., Canada). IEEE Computer Society Press, Los Alamitos, CA, 89--97. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Gallagher, K. B. and Lyle, J. R. 1991. Using program slicing in software maintenance. IEEE Trans. Softw. Engin. 17, 8 (Aug.), 751--761. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. 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
  29. Harman, M. and Hierons, R. M. 2001. An overview of program slicing. Softw. Focus 2, 3, 85--92.Google ScholarGoogle ScholarCross RefCross Ref
  30. Harman, M., Hierons, R. M., Danicic, S., Howroyd, J., Laurence, M., and Fox, C. 2001. Node coarsening calculi for program slicing. In Proceedings of the 8th Working Conference on Reverse Engineering (Stuttgart, Germany). IEEE Computer Society Press, Los Alamitos, CA, 25--34. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Heintze, N. and Tardieu, O. 2001. Ultra-fast aliasing analysis using CLA: A million lines of C code in a second. In Proceedings of the ACM SIGPLAN '01 Conference on Programming Language Design and Implementation, C. Norris and J. J. B. Fenwick, Eds. ACM SIGPLAN Notices, vol. 36.5. ACM, New York, 254--263. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Hierons, R. M., Harman, M., and Danicic, S. 1999. Using program slicing to assist in the detection of equivalent mutants. Softw. Test. Verif. Reliab. 9, 4, 233--262.Google ScholarGoogle ScholarCross RefCross Ref
  33. Hierons, R. M., Harman, M., Fox, C., Ouarbya, L., and Daoudi, M. 2002. Conditioned slicing supports partition testing. Softw. Test., Verif. Reliab. 12, 23--28.Google ScholarGoogle ScholarCross RefCross Ref
  34. Horwitz, S., Pfeiffer, P., and Reps, T. 1989a. Dependence analysis for pointer variables. In Proceedings of the ACM SIGPLAN 89 Conference on Programming Language Design and Implementation (Portland, OR). ACM SIGPLAN Notices, ACM, New York, 28--40. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Horwitz, S., Prins, J., and Reps, T. 1989b. Integrating non-interfering versions of programs. ACM Trans. Prog. Lang. Syst. 11, 3 (July), 345--387. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Horwitz, S., Reps, T., and Binkley, D. W. 1988. Interprocedural slicing using dependence graphs. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (Atlanta, GA). ACM, New York, 25--46. (Proceedings in SIGPLAN Notices, 23(7), 35--46, 1988.) Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. Horwitz, S., Reps, T., and Binkley, D. W. 1990. Interprocedural slicing using dependence graphs. ACM Trans. Progr. Lang. Syst. 12, 1, 26--61. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. Jackson, D. and Rollins, E. J. 1994. Chopping: A generalisation of slicing. Tech. Rep. CMU-CS-94-169, School of Computer Science, Carnegie Mellon University, Pittsburgh, PA. July. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. Koschke, R. 1999. An incremental semi-automatic method for component recovery. In Proceedings: Sixth Working Conference on Reverse Engineering (Atlanta, GA). IEEE Computer Society Press, Los Alamitos, CA, 256--269. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. Krinke, J. 2002. Evaluating context-sensitive slicing and chopping. In IEEE International Conference on Software Maintenance (Montreal, Que., Canada). IEEE Computer Society Press, Los Alamitos, CA, 22--31. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. Krinke, J. 2003. Advanced slicing of sequential and concurrent programs. Ph.D. dissertation, Universität Passau.Google ScholarGoogle Scholar
  42. Lee, Y. and Ryder, B. G. 1994. Effectively exploiting parallelism in data flow analysis. J. Supercomput. 8, 3 (Nov.), 233--262. Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. Liang, D. and Harrold, M. J. 1999. Efficient points-to analysis for whole-program analysis. In ESEC/FSE '99, O. Nierstrasz and M. Lemoine, Eds. Lecture Notes in Computer Science, vol. 1687. Springer-Verlag /ACM Press, New York, 199--215. Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. Longworth, H. D., Ott, L. M., and Smith, M. R. 1986. The relationship between program complexity and slice complexity during debugging tasks. In Proceedings of the Computer Software and Applications Conference (COMPSAC'86). 383--389.Google ScholarGoogle Scholar
  45. 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 (Delft University of Technology, the Netherlands). IEEE Computer Society Press, Los Alamitos, CA, 256--266. Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. Mock, M., Atkinson, D. C., Chambers, C., and Eggers, S. J. 2002. Improving program slicing with dynamic points-to data. In Proceedings of the 10th ACM SIGSOFT Symposium on the Foundations of Software Engineering (FSE-02), W. G. Griswold, Ed. ACM, New York, 71--80. Google ScholarGoogle ScholarDigital LibraryDigital Library
  47. Müller, H. A. and Klashinsky, K. 1988. Rigi---A system for programming-in-the-large. In Proceedings of the 10th International Conference on Software Engineering (Singapore. Apr. 11--15). IEEE Computer Society Press, Los Alamitos, CA, 80--86. Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. Ott, L. M. 1992. Using slice profiles and metrics during software maintenance. In Proceedings of the 10th Annual Software Reliability Symposium. 16--23.Google ScholarGoogle Scholar
  49. Ott, L. M. and Bieman, J. M. 1992. Effects of software changes on module cohesion. In Proceedings of the IEEE Conference on Software Maintenance. IEEE Computer Society Press, Los Alamitos, CA, 345--353.Google ScholarGoogle Scholar
  50. 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
  51. Ott, L. M. and Thuss, J. J. 1993. Slice based metrics for estimating cohesion. In Proceedings of the IEEE-CS International Metrics Symposium (Baltimore, MA). IEEE Computer Society Press, Los Alamitos, CA, 71--81.Google ScholarGoogle Scholar
  52. Ottenstein, K. J. and Ottenstein, L. M. 1984. The program dependence graph in software development environments. Proceedings of the ACM SIGSOFT/SIGPLAN Software Engineering Symposium on Practical Software Development Environmt, SIGPLAN Notices 19, 5, 177--184. Google ScholarGoogle ScholarDigital LibraryDigital Library
  53. Podgurski, A. and Clarke, L. 1990. A formal model of program dependences and its implications for software testing, debugging, and maintenance. IEEE Trans. Softw. Engin. 16, 9, 965--79. Google ScholarGoogle ScholarDigital LibraryDigital Library
  54. Reps, T. 1998. Program analysis via graph reachability. Inf. Softw. Tech. Special Issue on Program Slicing 40, 11 and 12, 701--726.Google ScholarGoogle Scholar
  55. Reps, T., Horwitz, S., Sagiv, M., and Rosay, G. 1994. Speeding up slicing. In Proceedings of the ACM Foundations of Software Engineering (New Orleans, LA). ACM SIGSOFT Software Engineering Notes 19, 5 (December 1994), 11--20. Google ScholarGoogle ScholarDigital LibraryDigital Library
  56. 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 (Orlando, FL). 312--318.Google ScholarGoogle Scholar
  57. Rountev, A. and Chandra, S. 2000. Off-line variable substitution for scaling points-to analysis. In Proceedings of the ACM SIGPLAN 2000 Conference on Programming Language Design and Implementation. ACM Sigplan Notices, vol. 35.5. ACM, New York, 47--56. Google ScholarGoogle ScholarDigital LibraryDigital Library
  58. Snelting, G., Robschink, T., and Krinke, J. 2006. Efficient path conditions in dependence graphs for software safety analysis. ACM Trans. Softw. Engin. Methodol. 15, 4, 410--457. Google ScholarGoogle ScholarDigital LibraryDigital Library
  59. Tip, F. 1995. A survey of program slicing techniques. J. Prog. Lang. 3, 3 (Sept.), 121--189.Google ScholarGoogle Scholar
  60. Weiser, M. 1979. Program slices: Formal, psychological, and practical investigations of an automatic program abstraction method. Ph.D. dissertation, University of Michigan, Ann Arbor, MI. Google ScholarGoogle ScholarDigital LibraryDigital Library
  61. Weiser, M. 1981. Program slicing. In Proceedings of the 5th International Conference on Software Engineering (San Diego, CA). 439--449. Google ScholarGoogle ScholarDigital LibraryDigital Library
  62. Weiser, M. 1982. Programmers use slices when debugging. Commun. ACM 25, 7 (July), 446--452. Google ScholarGoogle ScholarDigital LibraryDigital Library
  63. Weiser, M. 1984. Program slicing. IEEE Trans. Softw. Engin. 10, 4, 352--357.Google ScholarGoogle ScholarDigital LibraryDigital Library
  64. 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. Empirical study of optimization techniques for massive slicing

                    Recommendations

                    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

                    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!