article

Inter-class def-use analysis with partial class representations

Abstract

Object-oriented program design promotes the reuse of code not only through inheritance and polymorphism, but also through building server classes which can be used by many different client classes. Research on static analysis of object-oriented software has focused on addressing the new features of classes, inheritance, polymorphism, and dynamic binding. This paper demonstrates how exploiting the nature of object-oriented design principles can enable development of scalable static analyses. We present an algorithm for computing def-use information for a single class's manipulation of objects of other classes, which requires that only partial representations of server classes be constructed. This information is useful for data flow testing and debugging.

References

  1. 1 David F. Bacon and Peter F. Sweeney. Fast Static Analysis of C-i-+ Virtual Function Calls. In Proceede'ngs of Object-Oriented Programming Systems, Languages and Applications, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. 2 Grady Booth. Object-Oriented Analysis and Design with Applications. Benjamin/Cummings, 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. 3 Ramkrishna Chatterjee and Barbara Ryder. Data-flowbased Testing of Object-Oriented Libraries. Technical Report 382, Rutgers University, March 1999.Google ScholarGoogle Scholar
  4. 4 Ramkrishna Chatterjee, Barbara G. Ryder, and William A. Landi. Relevant Context Inference. In Proceedings of Principles of Programming Languages, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. 5 Amer Diwan, J. Eliot B. Moss, and Kathryn S. McKinley. Simple and Effective Analysis of Statically-Typed Object-Oriented Programs. In Proceedings of Object- Oriented Programming Systems, Languages and Applications, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. 6 R. Gupta, M.J. Harrold, and M.L. Soffa. An Approach to Regression Testing using Slicing. In Proceedings of Software Maintenance, pages 299-308, 1992.Google ScholarGoogle ScholarCross RefCross Ref
  7. 7 Mary Jean Harrold and Gregg Rothermel. Performing Data Flow Testing on Classes. In Second ACM SIGSOFT Symposium on the Foundations of Software Engineering, 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. 8 M.J. Harrold and M.L. Soffa. Interprocedural Data Flow Testing. In Proceedings of the ACM Symposium on Testing, Analysis, and Verification, pages 158-167, 1989. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. 9 S. Horwitz, T. Reps, and D. Binkley. Intergrating Noninterfering Version of Programs. ACM !Pransactions on Programming Languages and Systems, 11(3):345-387, 1989. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. 10 Loren Larsen and Mary Jean Harrold. Slicing Object- Oriented Software. In Proceedings of the International Conference on Software Engineering, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. 11 Donglin Liang and Mary Jean Harrold. Slicing Objects Using System Dependence Graphs. In Proceedings of the International Conference on Software Maintence, pages 358-367, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. 12 James Martin. Prinicples of Object-Oriented Analysis and Design. Prentice Hall, 1993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. 13 John D. McGregor, Brian A. Malloy, and Rebecca L. Siegmund. A Comprehensible Program Representation of Object-Oriented Software. Annals of Software Engineering, 2, 1996.Google ScholarGoogle Scholar
  14. 14 Steven S. Muchnick. Advanced Compiler Design and Implementation. Morgan Kaufmann, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. 15 H. Pande, W. Landi, and B.G. Ryder. Interprocedural Def-Use Associations in C Programs. IEEE Z+ansactions on Software Engineering, 20(5):385-403, May 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. 16 T. Reps, T. Teitelbaum, and A. Demers. Incremental Context-Dependent Analysis for Language Based Editors. ACM Transactions on Programming Languages and Systems, 5(3):449-477, July 1983. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. 17 Frank Tip, Jong-Deok Choi, John Field, and G. Ramalingam. Slicing Class Hierarchies in C++. In Proceedings of Object-Oriented Programming Systems, Languages and Applications, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. 18 M. Weiser. Program Slicing. IEEE Transactions on Software Engineering, SE-10(4):352-357, July 1984.Google ScholarGoogle Scholar

Index Terms

  1. Inter-class def-use analysis with partial class representations

        Comments

        Login options

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

        Sign in

        Full Access

        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!