10.5555/227726.227837acmconferencesArticle/Chapter ViewAbstractPublication PagesicseConference Proceedings
Article

Slicing object-oriented software

ABSTRACT

Describes the construction of system dependence graphs for object-oriented software on which efficient slicing algorithms can be applied. We construct these system dependence graphs for individual classes, groups of interacting classes and complete object-oriented programs. For an incomplete system consisting of a single class or a number of interacting classes, we construct a procedure dependence graph that simulates all possible calls to public methods in the class. For a complete system, we construct a procedure dependence graph from the main program in the system. Using these system dependence graphs, we show how to compute slices for individual classes, groups of interacting classes and complete programs. One advantage of our approach is that the system dependence graphs can be constructed incrementally because representations of classes can be reused. Another advantage of our approach is that slices can be computed for incomplete object-oriented programs such as classes or class libraries. We present our results for C++, but our techniques can be applied to other statically typed object-oriented languages such as Ada-95.

References

  1. 1.O. Agesen and Urs Holzle. Type feedback vs. concrete type inference: A comparison of optimization techniques for object-oriented languages. In Proceedings o.f Object-Oriented Programming Systems, Languages and Applications, pages 91-107, October 1995.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. 2.H. Agrawal. On slicing programs with jump statements. In Proceedings of SIGPLA N'94 Conference on Programming Language Design and Implementation, pages 60-73, June 1994.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. 3.H. Agrawal, R. DeMiUo, and E. Spafford. Dynamic slicing in the presence of unconstrained pointers. In Proceedings of the Fourth Symposium on Software Testing, Anaiysis, and Verification, pages 60-73, 1991.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. 4.S. Bates and S. Horwitz. Incremental program testing using program dependence graphs. In Proceedings of the Twentieth ACM Symposium on Principles of Programming Languages, pages 384-396, January 1993,]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. 5.J. M. Bieman and L. M. Ott. Measuring functional cohesion. IEEE Transactions on So#ware Engineering, 20(8):644-657, August 1994.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. 6.D. Binkley. Using semantic differencing to reduce the cost of regression testing. In Proceedings of Conference on Software Maintenance, pages 41-50, November 1992.]]Google ScholarGoogle ScholarCross RefCross Ref
  7. 7.B. Calder and D. Grunwald. Reducing indirect function call overhead in C++ programs. In Conference Record of POPL '94: 21st A CM SIGPLAN-SIGACT Symposium on Priracipies of Progarnrning Languages, pages 397-408, January 1994.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. 8.J.-D. Choi, M. Burke, and P. Carini, Efficient flow-sensitive interprocedural computation of pointerinduced aliases and side effects. In Proceedings of Twentieth A nnua! ACM Symposium on Principles of Programming Languages, pages 232-245. ACM, 1993.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. 9.J.-D. Choi and J. Ferrante. Static slicing in the presence of goto statements. ACM Transactions on Programming Languages and Systems, 16(4):1097-1113, July 1994.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. 10.J. Ferrante, K. J. Ottenstein, and J. D. Warren. The program dependence graph and its use in optimization. ACM Transactions on Programming Languages and Systems, 9(3):319-349, July 1987.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. 11.K. B. Gallagher and J. R. Lyle. Using program slicing in software maintenance. IEEE Transactions on Software Engineering, 17(8):751-761, August 1991.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. 12.M. J. Harrold and G. Rothermel. Performing dat aflow testing on classes. In Proceedings of the Second A CM SIGSOFT Symposium on the Foundations of Software Engineering, pages 154-163, December 1994.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. 13.S. Horwitz, P. Pfeiffer, and T. Reps. Dependence analysis for pointer variables. In Proceedings of SIG- PLAN'89 Conference on Programming Language Design and Implementation, pages 28-40, June 1989.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. 14.S. Horwitz, T. Reps, and D. Binkley. Interprocedural slicing using dependence graphs. ACM Transactions on Programming Languages and Systems, 12(1) :26- 60, January 1990.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. 15.D. Jackson and E. J. Rollins. A new model of program dependence for reverse engineering. In Proceedings of the Second ACM SIGSOFT Conference on Foundations of Software Engineering, pages 2-10, December 1994.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. 16.W. Landl and B. Ryder. A safe approximate algorithm for interprocedural pointer sJiasing. In Proceedings of the ACM SIGPLA N '92 Conference on Programming Language Design and Implementation, pages 235-248, June 1992.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. 17.W. Landi, B. G. Ryder, and S. Zhang. Interprocedural modification side effect analysis with pointer aliasing. In Proceedings of SIGPLAN'93 Conference on Programming Language Design and Implementation, pages 56-67, June 1993.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. 18.P. E. Lividas and S. Croll. Static program slicing. Technical Report SERC-55F, University of Florida, Software Engineering Research Center, Computer and Information Sciences Department, January 1992.]]Google ScholarGoogle Scholar
  19. 19.B. A. Malloy, J. D. McGregor, A. Krishnaswamy, and M. Medikonda. An extensible program representation for object-oriented software. ACM Sigplan Notices, 29(12):38-47, December 1994.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. 20.K. J. Ottenstein and L. M. Ottenstein. The program dependence graph in a software development environment. In Proceedings of the ACM SIG-SOFT/ SIGPLAN Sofiware Engineering Symposium on Practical Soflware Development Environments, pages 177-184, April 1984.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. 21.H. Pande and B. G. Ryder. Static t ype determination in C++. In Proceedings of the Sixth USENIX + Technical Conference, pages 85-97, April 1994.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. 22.H. D. Pande and B. G. Ryder. Static t ype determination and aliasing for C++. Technical Report LCSR-TR- 250, Rutgers Univiversity, July 1995.]]Google ScholarGoogle Scholar
  23. 23.T. Reps, S. Horwitz, M. Sagiv, and G. Resay. Speeding up slicing. In Proceedings of Second A CM Conference on Foundations of [email protected] Engineering, pages 11-20, December 1994.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. 24.G. Rothermel and M. J. Harrold. Selecting regression tests for object-oriented software. In Proceedings of Conference on Software Maintenance, pages 14-25, September 1994.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. 25.G. Rothermel and M. J. Harrold. Selecting tests and identifying test coverage requirements for modified software. In Proceedings of the ACM International Symposium on Software Testing and Analysis, pages 169-184, August 1994.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. 26.F. Tip. A survey of program slicing techniques. Journal of Programming Languages, 3(3):121-189, September 1995.]]Google ScholarGoogle Scholar
  27. 27.M. Weiser. Program slicing. IEEE Transactions on Software Engineering, 10(4):352-357, July 1984,]]Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Slicing object-oriented software

              Comments

              Login options

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

              Sign in

              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!