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.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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 5.J. M. Bieman and L. M. Ott. Measuring functional cohesion. IEEE Transactions on So#ware Engineering, 20(8):644-657, August 1994.]] Google Scholar
Digital Library
- 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 Scholar
Cross Ref
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 26.F. Tip. A survey of program slicing techniques. Journal of Programming Languages, 3(3):121-189, September 1995.]]Google Scholar
- 27.M. Weiser. Program slicing. IEEE Transactions on Software Engineering, 10(4):352-357, July 1984,]]Google Scholar
Digital Library
Index Terms
Slicing object-oriented software





Comments