Skip to main content
Log in

A comprehensive program representation of object-oriented software

  • Published:
Annals of Software Engineering

Abstract

An extensible representation for object-oriented programs, the Object-oriented Program Dependence Graph (OPDG), is presented. The representation is divided into three layers: a first layer that presents the class inheritance structure, a second layer that combines a traditional control dependence subgraph and a data dependence subgraph with objects, and a third layer that presents the dynamic, runtime aspects of an object-oriented program as an Object Dependence Subgraph. The representation is modular allowing specific tools to only use the portion required for the tool's operation. The complete representation provides information sufficient for most program analysis techniques including data flow analysis, reverse engineering, interactive debuggers and other tools.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  • Agrawal, H. and J.R. Horgan (1990), “Dynamic program slicing,” InProceedings of the ACM SIGPLAN'90 Conference on Programming Language and Design and Implementation, pp. 20–22.

  • Aho, A.V., R. Sethi and J.D. Ullman (1986),Compilers, Principles, Techniques, and Tools, Addison-Wesley Publishing Company, Reading, MA.

    Google Scholar 

  • Baxter, W. and J.R. Bauer (1989), “The program dependence graph in vectorization,” InSixteenth ACM Principles of Programming Languages Symposium, pp. 1–11.

  • Bates, S. and S. Horwitz (1993), “Incremental program testing using program dependence graphs,”ACM Transactions on Programming Languages and Systems, 384–396.

  • Binkley, D. (1992), “Using semantic differencing to reduce the cost of regression testing,” InProceedings of the Conference on Software Maintenance '92, pp. 41–50.

  • Booch, G. (1991),Object-Oriented Design with Applications, Benjamin Cummings, Redwood City, CA.

    Google Scholar 

  • Callahan, D. (1988), “The program summary graph and flow-sensitive interprocedural data flow analysis,” InProceedings of SIGPLAN'88 Conf. Programming Language Design and Implementation, pp. 47–56.

  • Cargill, T. (1992),C++ Programming Style, Addison-Wesley Publishing Company, Inc., Massechusetts, USA.

    Google Scholar 

  • Chidamber, S.R. and C.F. Kemerer (1991), “Towards a metric suite for object-oriented design,” InProceedings of OOPSLA '91, pp. 197–211.

  • Duesterwald, E., R. Gupta and M.L. Soffa (1992), “Rigorous data flow testing through output influences,” InProceedings of the 2nd Irvine Software Symposium (ISS'92), pp. 131–145.

  • Ferrante, J., K. Ottenstein and J.D. Warren (1994), “The program dependence graph and its use in optimization,”ACM Transactions on Programming Languages and Systems 9, 10, 319–331.

    Google Scholar 

  • Gupta, R., M.J. Harrold and M.L. Soffa (1992), “An approach to regression testing using slicing,” InProceedings of the Conference on Software Maintenance '92, pp. 299–308.

  • Gupta, R. and M.L. Soffa (1990), “Region scheduling: An approach for detecting and redistributing parallelism,”IEEE Transactions on Software Engineering 16, 4, 421–431.

    Google Scholar 

  • Gupta, R. and M.L. Soffa (1992), “Automatic generation of a compact test suite,” InProceedings of the Twelfth IFIP World Computer Congress.

  • Harrold, M.J. and B. Malloy (1993), “A unified interprocedural program representation for a maintenance environment,”IEEE Transactions on Software Engineering 19, 6, 584–593.

    Google Scholar 

  • Harrold, M.J., B. Malloy and G. Rothermel (1993), “Efficient construction of program dependence graphs,” InACM International Symposium on Software Testing and Analysis 18, 3, 160–170.

    Google Scholar 

  • Harrold, M.J. and M.L. Soffa (1990), “Computation of interprocedural definition and use dependencies,” InProceedings of IEEE Computer Society 1990 International Conference on Computer Languages, pp. 297–306.

  • Horwitz, S., T. Reps and D. Binkley (1990), “Interprocedural slicing using dependence graphs,”ACM Transactions on Programming Languages and Systems 12, 1, 26–60.

    Google Scholar 

  • Korel, B. (1987), “The program dependence graph in static program testing,”Information Processing Letters 24, 103–108.

    Google Scholar 

  • Korel, B. and J. Laski (1988), “Dynamic program slicing,”Information Processing Letters 29, 6, 155–163.

    Google Scholar 

  • Korsen, T. and J. McGregor (1990), “Object-oriented software design: A tutorial,”Communications of the ACM 33, 9, 40–60.

    Google Scholar 

  • Lorenz, M. and J. Kidd (1994),Object-Oriented Software Metrics, Prentice-Hall.

  • Livadas, P.E. and P.K. Roy (1992), “Program dependence analysis,” InIEEE Conference on Software Maintenance 1992, pp. 356–365.

  • Malloy, B.A., R. Gupta and M.L. Soffa (1992), “A shape matching approach for scheduling fine-grained parallelism,” InProceedings of MICRO-25, The 25th Annual International Symposium on Microarchitecture, pp. 131–135.

  • Malloy, B., J.D. McGregor, A. Krishnaswamy and M. Medikonda (1994), “An extensible program representation for object-oriented software,” Technical Report, Clemson University.

  • McGregor, J.D. and S. Kamath (1995) “A psychological complexity measure at the domain analysis level for an object-oriented system,” Technical Report, Dept. of Computer Science, Clemson University.

  • McGregor, J.D. and D.A. Sykes (1992),Object-Oriented Software Development: Engineering Software for Reuse, Van Nostrand Reinhold.

  • Norris, C. and L.L. Pollock (1994), “Register allocation over the program dependence graph,” InConference on Programming Language Design and Implementation, pp. 266–277.

  • Ojha, N. and J.D. McGregor (1994), “Object-oriented metrics for early system characterization: A crc card-based approach,” Technical Report TR94-107, Dept. of Computer Science, Clemson University.

  • Rothermel, G. and M.J. Harrold (1993), “A safe, efficient algorithm for regression test selection.” InProceedings of the Conference on Software Maintenance, pp. 358–367.

  • Rumbaugh, J., M. Blaha, W. Premerlani, F. Eddy and W. Lorensen (1991),Object-Oriented Modeling and Design, Prentice-Hall, Englewood Cliffs, NJ.

    Google Scholar 

  • Ryder, B.G. (1979), “Constructing the call graph of a program,”IEEE Transactions on Software Engineering 5, 3, 216–225.

    Google Scholar 

  • Weiser, M. (1984), “Program slicing,”IEEE Transactions on Software Engineering 10, 4, 352–357.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Rights and permissions

Reprints and permissions

About this article

Cite this article

McGregor, J.D., Malloy, B.A. & Siegmund, R.L. A comprehensive program representation of object-oriented software. Ann Software Eng 2, 51–91 (1996). https://doi.org/10.1007/BF02063806

Download citation

  • Issue Date:

  • DOI: https://doi.org/10.1007/BF02063806

Keywords

Navigation