Method and apparatus for slicing class hierarchies

Reexamination Certificate

Rate now

  [ 0.00 ] – not rated yet Voters 0   Comments 0

Details

Reexamination Certificate

active

06179491

ABSTRACT:

BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention generally relates to object oriented programming (OOP) systems, and, more particularly, to OOP systems supporting the C++ programming language.
2. Background Description
The C++ programming language provides a number of features such as classes, inheritance, multiple inheritance, and virtual inheritance. These object oriented features have several advantages. Most importantly they enable the creation of class libraries that can be reused in several different applications. However, such code reuse comes at a price. To enable reusability, object oriented programming encourages the use of classes that incorporate a high degree of functionality. Programs that use such classes, however, may pay a penalty for functions they do not use. One of the resulting penalties is that of increased code size resulting from linking unused functions. The prior art has focused on addressing this penalty. An example of such prior art is A. Srivastava, “Unreachable procedures in object oriented programming”, ACM Letters on Programming Languages and Systems, 1(4), pp. 355-364, December 1992.
Other prior art has focused on determining unused code at the statement level. In particular, program slicing techniques have been developed for isolating computational threads in programs. A program slice is generally defined as the set of statements that either contribute to, or are affected by, the values computed at some designated point of interest in the program. A more detailed description of program slicing may be found in F. Tip, “A Survey of Program Slicing Techniques”, Journal of Programming Languages 3, 3 (1995), pp. 121-189. The combination of a program point and a set of variables of interest at that point is referred to as the slicing criterion. In particular, previous work on program slicing has focused on eliminating from a program those executable statements that are unnecessary with respect to the given slicing criterion.
However, a less obvious penalty of the use of class libraries in object oriented programming is that objects may contain unnecessary data members and subjects. Larger objects can not only increase the space requirements of the program, but also decrease its execution speed, due to the extra time required for object construction and destruction, and the effects of paging and caching. The presence of unused or unnecessary data members and inheritance relations in a program has another disadvantage as well. It makes it unnecessarily more difficult for programmers to understand the code.
SUMMARY OF THE INVENTION
The problems presented above and the related problems of the prior art are solved by the present invention, method and apparatus for slicing class hierarchies. The present invention computes a slice of a given class hierarchy of a program P by eliminating from the hierarchy those data members, member functions, classes, and inheritance relations that are unnecessary for ensuring that the semantics of P is maintained. The invention may be used in optimization by reducing the space and time requirements of a program. In the alternative, the invention may be used in program understanding and debugging. The invention is preferably used subsequent to program slicing.


REFERENCES:
patent: 5652899 (1997-07-01), Mays et al.
Chen, Xiaoping; Tsai, Wei-Tek; Huang, Hai; Poonawala, Mustafa; Rayadurgam, Sanjai; Wang, Yamin; Omega—an Integrated Environment for C + + Program Maintenance; Proceedings of the 1996 IEEE Conference on Software Maintenance; pp. 114-123, 1996.
ACM Transactions on Programming Languages and Systems, vol. 12, No. 1, Jan. 1990, pp.26-60 “Interprocedural Slicing Using Dependence Graphs”, S. Horwitz, T. Reps and D. Brinkley, University of Wisconsin-Madison.
IEEE Transactions on Software Engineering, vol. SE-10, No. 4, Jul. 1984, pp. 352-357,“Programming Slicing”, Mark Weiser.
SIGPLAN 94-6/94 Orlando, Florida, pp. 302-312, On Slicing Programs with Jump Statements, H. Agrawal, Bellcore, Morristown, NJ.
Journal of Programming Languages 3 (1995) 121-189, pp. 121-189 “A Survey of Program Slicing Techniques”, Frank Tip, IBM, T.J. Watson Research Center, Yorktown Heights, NY.
OOPSLA 94-10/94 Portland, Oregon USA, Sifting Out the Gold, Delivering Compact Applications from an Exploratory Object-Oriented Programming Environment, Ole Agesen, David Ungar, pp. 355-369.
Proceedings of ICSE-18, Mar. 1996, Berlin, pp. 495-505 “Slicing Object-Oriented Software”, L. Larsen and M. J. Harrold, Clemson University.
Computer Sciences Dept. University of Wisconsin, pp. 206-222, Slicing Programs with Arbitrary Control-Flow T. Ball and S. Horwitz.
POPL '95 1/95 San Francisco, CA, pp. 379-392, “Parametric Program Slicing”, J. Field, G. Ramalingam, IBM, T.J. Watson Research Center, Yorktown Heights, NY.
Proceedings of the ACM Fourth Symposium on Testing, Analysis, and Verification (TAV4), Victoria, British Columbia, Canada, Oct. 8-9, 1991, pp. 60-73, “Dynamic Slicing in the Presence of Unconstrained Pointers”, H. Agrawal, Bellcore; R. DeMillo, E. Spafford, Purdue University.
Microsoft Research Advanced Technology Division, Technical Report MSR-TR-94-14, Jul. 26, 1994, “Practical Fine-Grained Static Slicing of Optimized Code”, Michael Ernst.
“Program Slicing”, pp. 1-31, Panos Livadas, Stephen Croll, Computer and Information Sciences Dept., University of Florida.
Thomas Reps, Susan Horwitz and Mooly Sagiv, University of Copenhagen; Genevieve Rosay, University of Wisconsin-Madison, pp. 1-13, “Speeding up Slicing”.
ACM Letters on Programming Languages and Systems, vol. 1, No. 4, Dec. 1992, pp. 355-364 “Unreachable Procedures in Object-Oriented Programing”, Amitabh Srivastava, Digital Equipment Western Research Laboratory.
Dept. of Computer Science, Clemson University , pp. 1-38, “Program Slicing: An Application of Object-Oriented Program Dependency Graphs”, A. Krishnaswamy.
OOPSLA '96 CA, “Slicing Class Hierarchies in C++”, F. Tip, J-D. Choi, J. Field, G. Ramalingam, IBM T.J. Watson Research Center, Yorktown Heights, NY, PP. 179-197.

LandOfFree

Say what you really think

Search LandOfFree.com for the USA inventors and patents. Rate them and share your experience with other people.

Rating

Method and apparatus for slicing class hierarchies does not yet have a rating. At this time, there are no reviews or comments for this patent.

If you have personal experience with Method and apparatus for slicing class hierarchies, we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Method and apparatus for slicing class hierarchies will most certainly appreciate the feedback.

Rate now

     

Profile ID: LFUS-PAI-O-2498964

  Search
All data on this website is collected from public sources. Our data reflects the most accurate information available at the time of publication.