Abstract
An extensible representation for object-oriented programs is presented. It is based on the concept of a program dependency graph and elaborated to include both control flow and data flow information. The representation takes advantage of the basic incremental philosophy of the object-oriented approach to develop a more compact representation that is useful with practical programs. The basic approach reported here provides a static view of an object-oriented program. The approach can be expanded to provide dynamic information for tools such as interactive debuggers and other runtime tools. The outline of this extension is also presented.
- The common object request broker: Architecture and specification. Technical report, Object Management Group and X/Open, 1992.Google Scholar
- Hiralal Agrawal and Joseph R. Horgan. Dynamic program slicing. In Proceedings of the ACM SIGPLAN '90 Symposium on Programming Language Design and Implementation, pages 246--256, 1990. Google ScholarDigital Library
- Korel B. The program dependence graph in static program testing. Information Processing Letters, 24(2):103--108, Jan 1987. Google ScholarDigital Library
- Ryder B. G. Constructing the call graph of a program. IEEE Transactions on Software Engineering, 5(3):216--225, May 1979.Google ScholarDigital Library
- D. Binkley. Using semantic differencing to reduce the cost of regression testing. In Proceedings of the Conference on Software Maintenance '92, pages 41--50, 1992.Google ScholarCross Ref
- Callahan D. The program summary graph and flow-sensitive interprocedural data flow analysis. In Proceedings of SIGPLAN'88 Conf. Programming Language Design and Implementation, pages 47--56, 1988. Google ScholarDigital Library
- Hiralal Agrawal; Richard A. DeMillo and Eugene H. Spafford. Dynamic slicing in the presence of unconstrained pointers. In Proceedings of the Fourth Symposium on Testing, Analysis and Verification (TAV4). ACM/IEEE-CS, pages 60--73, 1991. Google ScholarDigital Library
- David Duke and Roger Duke. Towards a semantics for object-z. In VDM '90: VDM and Z, 1990. Google ScholarDigital Library
- Margaret A. Ellis and Bjarne Stroustrup. The Annotated C<sup>++</sup> Reference Manual. Addison-Wesley, Reading, MA, 1990. Google ScholarDigital Library
- E. Duesterwald; R. Gupta and M. L. Soffa. Rigorous data flow testing through output influences. In Proceedings of the 2nd Irvine Software Symposium (ISS'92), pages 131--145, 1992.Google Scholar
- Rajiv Gupta and Mary Lou Soffa. Automatic generation of a compact test suite. In Proceedings of the Twelfth IFIP World Computer Congress, 1992. Google ScholarDigital Library
- Mary Jean Harrold and Brian Malloy. A unified interprocedural program representation for a maintenance environment. IEEE Transactions on Software Engineering, 19(6):584--593, June 1993. Google ScholarDigital Library
- Mary Jean Harrold and John D. McGregor. Hierarchical incremental testing. Technical Report TR91-111, Department of Computer Science, Clemson University, 1991.Google Scholar
- Mary Jean Harrold and Mary Lou Soffa. Computation of interprocedural definition and use dependencies. In Proceedings of IEEE Computer Society 1990 Int. Conf. on Comput. Languages, New Orleans, LA, pages 297--306, 1990.Google ScholarCross Ref
- Rajiv Gupta; Mary Jean Harrold and Mary Lou Soffa. An approach to regression testing using slicing. In Proceedings of the Conference on Software Maintenance '92, pages 299--308, 1992.Google Scholar
- Ferrante J; Ottenstein K and Warren J. D. The program dependence graph and its use in optimization. ACM Transactions on Programming Languages and Systems, 9(3):319--331, July 1987. Google ScholarDigital Library
- Tim Korson and John McGregor. Object-oriented software design: A tutorial. Communications of the ACM, 33(9):40 -- 60, 1990. Google ScholarDigital Library
- Anand Krishnaswamy. Program slicing: An application of object-oriented program dependency graphs. Technical Report TR 94--108, Clemson University, 1994.Google Scholar
- Brian Malloy; John D. McGregor; Anand Krishnaswamy and Murali Medikonda. An extensible program representation for object-oriented software. Technical Report TR 94--109, Clemson University, 1994.Google Scholar
- Panos E. Livadas and Stephen Croll. Program slicing. Technical Report SERC-TR-61-F, University of Florida, Gainesville, 1992.Google Scholar
- Mary Jean Harrold; Brian Malloy and Gregg Rothermel. Efficient construction of program dependence graphs. ACM International Symposium on Software Testing and Analysis, 18(3):160--70, June 1993. Google ScholarDigital Library
- Gregg Rothermel and Mary Jean Harrold. A safe, efficient algorithm for regression test selection. In Proceedings of the Conference on Software Maintenance '93, pages 358--367, 1993. Google ScholarDigital Library
- James Rumbaugh, Michael Blaha, William Premerlani, Frederick Eddy, and William Lorensen. Object-Oriented Modeling and Design. Prentice-Hall, Englewood Cliffs, NJ, 1991. Google ScholarDigital Library
- E. Schatz and B. G. Ryder. Directed tracing to detect race conditions. Technical Report LCSR-TR-176, Laboratory for Computer Science Research, Rutgers University, 1992.Google Scholar
- Bjarne Stroustrup. The C<sup>++</sup> Programming Language. Addison-Wesley, Reading, MA, second edition, 1991. Google ScholarDigital Library
- Horwitz S; Reps T and Binkley D. Interprocedural slicing using dependence graphs. ACM Transactions on Programming Languages and Systems, 12(1):26--60, Jan 1990. Google ScholarDigital Library
Index Terms
- An extensible program representation for object-oriented software
Recommendations
What Is Object-Oriented Programming?
The meaning of the term 'object oriented' is examined in the context of the general-purpose programming language C++. This choice is made partly to introduce C++ and partly because C++ is one of the few languages that supports data abstraction, object-...
A comparison of object-oriented languages in software engineering
Object-oriented programming is still a relatively new technology in the world of web development. Object-oriented programming languages directly support the object notions of classes, inheritance, information hiding, and dynamic binding. In Object-...
Comments