Annals of Software Engineering

, Volume 2, Issue 1, pp 51–91 | Cite as

A comprehensive program representation of object-oriented software

  • John D. McGregor
  • Brian A. Malloy
  • Rebecca L. Siegmund


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.


Flow Analysis Reverse Engineering Data Dependence Specific Tool Complete Representation 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 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.Google Scholar
  2. Aho, A.V., R. Sethi and J.D. Ullman (1986),Compilers, Principles, Techniques, and Tools, Addison-Wesley Publishing Company, Reading, MA.Google Scholar
  3. Baxter, W. and J.R. Bauer (1989), “The program dependence graph in vectorization,” InSixteenth ACM Principles of Programming Languages Symposium, pp. 1–11.Google Scholar
  4. Bates, S. and S. Horwitz (1993), “Incremental program testing using program dependence graphs,”ACM Transactions on Programming Languages and Systems, 384–396.Google Scholar
  5. Binkley, D. (1992), “Using semantic differencing to reduce the cost of regression testing,” InProceedings of the Conference on Software Maintenance '92, pp. 41–50.Google Scholar
  6. Booch, G. (1991),Object-Oriented Design with Applications, Benjamin Cummings, Redwood City, CA.Google Scholar
  7. 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.Google Scholar
  8. Cargill, T. (1992),C++ Programming Style, Addison-Wesley Publishing Company, Inc., Massechusetts, USA.Google Scholar
  9. Chidamber, S.R. and C.F. Kemerer (1991), “Towards a metric suite for object-oriented design,” InProceedings of OOPSLA '91, pp. 197–211.Google Scholar
  10. 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.Google Scholar
  11. 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
  12. 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.Google Scholar
  13. 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
  14. Gupta, R. and M.L. Soffa (1992), “Automatic generation of a compact test suite,” InProceedings of the Twelfth IFIP World Computer Congress.Google Scholar
  15. 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
  16. 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
  17. 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.Google Scholar
  18. 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
  19. Korel, B. (1987), “The program dependence graph in static program testing,”Information Processing Letters 24, 103–108.Google Scholar
  20. Korel, B. and J. Laski (1988), “Dynamic program slicing,”Information Processing Letters 29, 6, 155–163.Google Scholar
  21. Korsen, T. and J. McGregor (1990), “Object-oriented software design: A tutorial,”Communications of the ACM 33, 9, 40–60.Google Scholar
  22. Lorenz, M. and J. Kidd (1994),Object-Oriented Software Metrics, Prentice-Hall.Google Scholar
  23. Livadas, P.E. and P.K. Roy (1992), “Program dependence analysis,” InIEEE Conference on Software Maintenance 1992, pp. 356–365.Google Scholar
  24. 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.Google Scholar
  25. Malloy, B., J.D. McGregor, A. Krishnaswamy and M. Medikonda (1994), “An extensible program representation for object-oriented software,” Technical Report, Clemson University.Google Scholar
  26. 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.Google Scholar
  27. McGregor, J.D. and D.A. Sykes (1992),Object-Oriented Software Development: Engineering Software for Reuse, Van Nostrand Reinhold.Google Scholar
  28. Norris, C. and L.L. Pollock (1994), “Register allocation over the program dependence graph,” InConference on Programming Language Design and Implementation, pp. 266–277.Google Scholar
  29. 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.Google Scholar
  30. 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.Google Scholar
  31. Rumbaugh, J., M. Blaha, W. Premerlani, F. Eddy and W. Lorensen (1991),Object-Oriented Modeling and Design, Prentice-Hall, Englewood Cliffs, NJ.Google Scholar
  32. Ryder, B.G. (1979), “Constructing the call graph of a program,”IEEE Transactions on Software Engineering 5, 3, 216–225.Google Scholar
  33. Weiser, M. (1984), “Program slicing,”IEEE Transactions on Software Engineering 10, 4, 352–357.Google Scholar

Copyright information

© J.C. Baltzer AG, Science Publishers 1996

Authors and Affiliations

  • John D. McGregor
    • 1
  • Brian A. Malloy
    • 1
  • Rebecca L. Siegmund
    • 1
  1. 1.Department of Computer ScienceClemson UniversityClemsonUSA

Personalised recommendations