## Reengineering class hierarchies using concept analysis (1998)

### Cached

### Download Links

- [www.infosun.fmi.uni-passau.de]
- [www.cs.kent.edu]
- [www.fmi.uni-passau.de]
- [pp.info.uni-karlsruhe.de]
- DBLP

### Other Repositories/Bibliography

Venue: | In ACM Trans. Programming Languages and Systems |

Citations: | 125 - 6 self |

### BibTeX

@INPROCEEDINGS{Snelting98reengineeringclass,

author = {Gregor Snelting and Frank Tip},

title = {Reengineering class hierarchies using concept analysis},

booktitle = {In ACM Trans. Programming Languages and Systems},

year = {1998},

pages = {99--110},

publisher = {}

}

### Years of Citing Articles

### OpenURL

### Abstract

A new method is presented for analyzing and reengineering class hierarchies. In our approach, a class hierarchy is processed along with a set of applications that use it, and a fine-grained analysis of the access and subtype relationships between objects, variables and class members is performed. The result of this analysis is again a class hierarchy, which is guaranteed to be behaviorally equivalent to the original hierarchy, but in which each object only contains the members that are required. Our method is semantically well-founded in concept analysis: the new class hierarchy is a minimal and maximally factorized concept lattice that reflects the access and subtype relationships between variables, objects and class members. The method is primarily intended as a tool for finding imperfections in the design of class hierarchies, and can be used as the basis for tools that largely automate the process of reengineering such hierarchies. The method can also be used as a space-optimizing source-to-source transformation that removes redundant fields from objects. A prototype implementation for Java has been constructed, and used to conduct several case studies. Our results demonstrate that the method can provide valuable insights into the usage of the class hierarchy in a specific context, and lead to useful restructuring proposals.

### Citations

1176 |
Introduction to Lattices and Order
- Davey, Priestley
- 1990
(Show Context)
Citation Context ...hile meet points factor out common objects. Thus, the lattice uncovers a hierarchy of conceptional clusters that was implicit in the original table. Figure 3 shows a table and its lattice (taken from =-=[10]-=-). The element labeled far corresponds to the maximal rectangle indicated in the table. This element is the supremum of all elements with far in their intent: Pluto, Jupiter, Saturn, Uranus, Neptune a... |

905 |
Formal Concept Analysis: mathematical foundations
- Ganter, Wille
(Show Context)
Citation Context ...rmed back to the original relation, hence concept analysis is similar in spirit to Fourier analysis. Later, Wille and Ganter elaborated Birkho's result and transformed it into a data analysis method [=-=37, 13]-=-. Since then, it has found a variety of applications, including analysis of software structures [16, 28, 18, 27, 14, 29, 15]. 2.1 Relations and their lattices Concept analysis starts with a relation, ... |

631 |
Lattice Theory
- Birkhoff
- 1948
(Show Context)
Citation Context ...k are presented in Section 7. 2 Concept Analysis Concept analysis provides a way to identify groupings of objects that have common attributes. The mathematical foundation was laid by Birkhoff in 1940 =-=[3]-=-. Birkhoff proved that for every binary relation between certain objects and attributes, a lattice can be constructed that provides remarkable insight into the structure of the original relation. The ... |

553 | Points-to analysis in almost linear time
- Steensgaard
- 1996
(Show Context)
Citation Context ...uxiliary denitions For each variable v in ClassPtrVars(P) we will need a conservative approximation of the variables in ClassVars(P) variables that v may point to. Any of several existing algorithms [=-=8, 22, 31, 26-=-] can be used to compute this information, and we do not make assumptions about the particular algorithm used to compute points-to information. Denition 3 expresses the information supplied by some po... |

445 |
Restructuring lattice theory: an approach based on hierarchies of concepts
- Wille
- 1982
(Show Context)
Citation Context ... of C's members, an indication that it might be appropriate to split C into multiple classes. In this paper, we present a method for analyzing the usage of a class hierarchy based on concept analysis =-=[37]-=-. Our approach comprises the following steps. First, a table is constructed that precisely re ects the usage of a class hierarchy. In particular, the table makes explicit relationships between the typ... |

430 | Refactoring Object-Oriented Frameworks
- Opdyke
- 1992
(Show Context)
Citation Context ...overview article [7] presents 18 dierent methods, many of them process-centered or dynamic analyses. The probably most well-known method for static restructuring was introduced by Opdyke and Johnson [=-=21, 20]-=-. They present a number of behavior-preserving transformations on class hierarchies, which they refer to as refactorings. The goal of refactoring is to improve design and enable reuse by \factoring ou... |

257 | Fast static analysis of C++ virtual function calls
- Bacon, Sweeney
- 1996
(Show Context)
Citation Context ...powerful than specialization because it can only remove a member m from a class C if m is not used by any C-instance. Later, Tip and Sweeney developed Jax [34], which incorporates rapid type analysis =-=[4-=-] and some additional simplications. Jax can reduce the size of classsles up to 70%. 10.3 Techniques for restructuring class hierarchies Another category of related work is that of techniques for rest... |

225 | Efficient flow-sensitive interprocedural computation of pointer-induced aliases and side effects
- Choi, Burke, et al.
- 1993
(Show Context)
Citation Context ...ary definitions For each variable v in ClassPtrVars(7 ~) we will need a conservative approximation of the variables in ClassVars(7 p) variables that v may point to. Any of several existing algorithms =-=[4, 16, 23, 19]-=-) can be used to compute this information, and we do not make assumptions about the particular algorithm used to compute pointsto information. Definition 3 expresses the information supplied by some p... |

160 | Fast and accurate flowinsensitive points-to analysis
- Shapiro, Horwitz
- 1997
(Show Context)
Citation Context ...ary definitions For each variable v in ClassPtrVars(7 ~) we will need a conservative approximation of the variables in ClassVars(7 p) variables that v may point to. Any of several existing algorithms =-=[4, 16, 23, 19]-=-) can be used to compute this information, and we do not make assumptions about the particular algorithm used to compute pointsto information. Definition 3 expresses the information supplied by some p... |

123 | Partial online cycle elimination in inclusion constraint graphs
- Fahndrich, Foster, et al.
- 1998
(Show Context)
Citation Context ...tely. Since our iteration is a special instance of a set-based analysis (an implication a ! b corresponds to the set constraint (a) (b) resp. (a) (b)), cycles can be collapsed as described in [11]. Application of a specic assignment implication a ! b is implemented eciently by a bitstring operation: (b) := (b) OR (a). 8.3 Interactive back end From thesnal table, the lattice is computed usi... |

120 | Assessing modular structure of legacy code based on mathematical concept analysis
- Lindig, Snelting
- 1997
(Show Context)
Citation Context ...er, Wille and Ganter elaborated Birkho's result and transformed it into a data analysis method [37, 13]. Since then, it has found a variety of applications, including analysis of software structures [=-=16, 28, 18, 27, 14, 29, -=-15]. 2.1 Relations and their lattices Concept analysis starts with a relation, or boolean table, T between a set of objects O and a set of attributes A, hence T O A. For any set of objects O O, thei... |

115 | Identifying modules via concept analysis
- Siff, Reps
- 1997
(Show Context)
Citation Context ...er, Wille and Ganter elaborated Birkho's result and transformed it into a data analysis method [37, 13]. Since then, it has found a variety of applications, including analysis of software structures [=-=16, 28, 18, 27, 14, 29, -=-15]. 2.1 Relations and their lattices Concept analysis starts with a relation, or boolean table, T between a set of objects O and a set of attributes A, hence T O A. For any set of objects O O, thei... |

94 |
Creating abstract superclasses by refactoring
- Opdyke, Johnson
- 1993
(Show Context)
Citation Context ...overview article [7] presents 18 dierent methods, many of them process-centered or dynamic analyses. The probably most well-known method for static restructuring was introduced by Opdyke and Johnson [=-=21, 20]-=-. They present a number of behavior-preserving transformations on class hierarchies, which they refer to as refactorings. The goal of refactoring is to improve design and enable reuse by \factoring ou... |

88 |
Lattice Theory
- Birkho¤
- 1967
(Show Context)
Citation Context ...k are presented in Section 11. 2 Concept Analysis Concept analysis provides a way to identify groupings of objects that have common attributes. The mathematical foundation was laid by Birkho in 1940 [=-=5-=-]. Birkho proved that for every binary relation between certain objects and attributes, a lattice can be constructed that provides remarkable insight into the structure of the original relation. The l... |

85 | Building and maintaining analysis-level class hierarchies using Galois lattices
- Godin, Mili
- 1993
(Show Context)
Citation Context ...hod itself seem to prohibit an application to C++ right now. We hope that this situation will change within the next two years. 38 10 Related Work 10.1 Applications of concept analysis Godin and Mili =-=[14, 15-=-] also use concept analysis for class hierarchy (re)design. The starting point in their approach is a set of interfaces of (collection) classes. A table is constructed that species for each interface ... |

84 | Automatic inheritance hierarchy restructuring and method refactoring
- Moore
- 1996
(Show Context)
Citation Context ...s in a hierarchy, and a number of similar steps. Our techniques for analyzing the usage of a class hierarchy tosnd design problems is in our opinion complimentary to the techniques of [21, 20]. Moore =-=[19]-=- presents a tool that automatically restructures inheritance hierarchies and refactors methods in Self programs. The goal of this restructuring is to maximize the sharing of expressions between method... |

84 | Constraint-based array dependence analysis
- Pugh, Wonnacott
- 1998
(Show Context)
Citation Context ...s. 6.6 Arrays Arrays are treated as monolithic variables, and we do not distinguish between dierent array elements. One might think of integrating asne-grained array analysis, such as the Omega test [=-=2-=-3]. However,sne-grained array analysis may also reduce analysis precision in case of mixed co- and contravariance. In Java, arrays are covariant: A B implies A[] B[]. If Java would allow fully contr... |

83 | On the inference of configuration structures from source code
- KRONE, SNELTING
- 1994
(Show Context)
Citation Context ...er, Wille and Ganter elaborated Birkhoff's result and transformed it into a data analysis method [28, 6]. Since then, it has found a variety of applications, including analysis of software structures =-=[9, 21, 11, 20, 7]-=-. Concept analysis starts with a relation, or boolean table, T between a set of objects 0 and a set of attributes ,4, hence T C_ (.9 x .A. For any set of objects O _C O, their set of common attributes... |

81 |
Formale Begriffsanalyse – Mathematische Grundlagen
- GANTER, WILLE
- 1996
(Show Context)
Citation Context ...med back to the original relation, hence concept analysis is similar in spirit to Fourier analysis. Later, Wille and Ganter elaborated Birkhoff’s result and transformed it into a data analysis method =-=[28, 6]-=-. Since then, it has found a variety of applications, including analysis of software structures [9, 21, 11, 20, 7]. Concept analysis starts with a relation, or boolean table, T between a set of object... |

65 | Pratical experience with an application extractor for java, in
- Tip, Laffra, et al.
- 1999
(Show Context)
Citation Context ...turally, our analysis cannot handle such features; it has to make worst-case assumptions. In order to avoid massive loss of analysis precision another option is to rely on additional user input as in =-=[34]-=-: the reengineer might supply background knowledge about the expected outcome of dynamic constructs. Of course, if the reengineer's assumptions are false, operational equivalence is lost. 6.8 Multiple... |

58 | The relationship between slices and module cohesion
- Ott, Thuss
- 1989
(Show Context)
Citation Context ...several algorithms which may provide useful information [22] as well. For example, one might think of measuring quality factors such as cohesion and coupling by algebraic decomposition of the lattice =-=[11, 15]-=-. As we mentioned earlier, a class hierarchy may be analyzed along with any number of programs, or without any program at all. The latter case may provide insights into the "internal structure" of a c... |

55 | Reengineering of Configurations Based on Mathematical Concept Analysis
- Snelting
- 1995
(Show Context)
Citation Context ...er, Wille and Ganter elaborated Birkhoff’s result and transformed it into a data analysis method [28, 6]. Since then, it has found a variety of applications, including analysis of software structures =-=[9, 21, 11, 20, 7]-=-. Concept analysis starts with a relation, or boolean table, T between a set of objects O and a set of attributes A, hence T O A. For any set of objects O O, their set of common attributes is de... |

47 |
Slicing Class Hierarchies in C
- Tip, Choi, et al.
(Show Context)
Citation Context ... a formalization of the member lookup, as a function on subobject graphs. This framework has subsequently been used by Tip et al. as a formal basis for operations on class hierarchies such as slicing =-=[33]-=- and specialization [35]. Ramalingam and Srinivasan recently presented an ecient algorithm for member lookup [24]. For the purposes of the present paper, we will assume the availability of a function ... |

35 | Class hierarchy specialization
- Tip, Sweeney
(Show Context)
Citation Context ...estructuring the class hierarchy. One possibility would be for a tool to automatically generate restructured source code from the information provided by the lattice, similar to the approach taken in =-=[35, 36]-=-. However, from a redesign perspective, we believe that an interactive approach would be more appropriate. For example, the programmer doing the restructuring job may decide that the data member socia... |

35 | Design of class hierarchies based on concept,(Galois) lattices. Theory and Practice of Object Systems
- Godin, Mili, et al.
- 1998
(Show Context)
Citation Context ...interference analysis or block relations [22]. Such decompositions correspond to natural subsystems of the original class hierarchy. 6 Related Work 6.1 Applications of concept analysis Godin and Mill =-=[7, 8]-=- also use concept analysis for class hierarchy (re)design. The starting point in their approach is a set of interfaces of (collection) classes. A table is constructed that specifies for each interface... |

32 | Data-flow-based virtual function resolution
- Pande, Ryder
- 1996
(Show Context)
Citation Context ...ary definitions For each variable v in ClassPtrVars(7 ~) we will need a conservative approximation of the variables in ClassVars(7 p) variables that v may point to. Any of several existing algorithms =-=[4, 16, 23, 19]-=-) can be used to compute this information, and we do not make assumptions about the particular algorithm used to compute pointsto information. Definition 3 expresses the information supplied by some p... |

30 | Sifting out the gold: Delivering compact applications from an exploratory object-oriented programming environment
- AGESEN, UNGAR
- 1994
(Show Context)
Citation Context ...od f redened in A. KABA translates array accesses into predened method calls a:store(i; x) and a:access(i). 11 Thus, by contravariance for store's second argument we would obtain A = dom(store A[] )[2] dom(store B[] )[2] = B. Hence we suddenly have A B as well as B A, collapsing lattice elements and hidingsne-grained access patterns. 6.7 Dynamic Class Loading Java oers a mechanism for dynami... |

30 | A study of dead data members in C++ applications
- SWEENEY, TIP
- 1998
(Show Context)
Citation Context ...lass hierarchy w.r.t, a single client application. Several other application extraction techniques for eliminating unused components from hierarchies and objects have been presented in the literature =-=[2, 25, 24]-=-. These are primarily intended as optimizations, although they may have some value for program understanding. Tip et al. [25] present an algorithm for slicing class hierarchies that eliminates members... |

21 | Concept analysis – a new framework for program understanding
- SNELTING
- 1998
(Show Context)
Citation Context ...er, Wille and Ganter elaborated Birkho's result and transformed it into a data analysis method [37, 13]. Since then, it has found a variety of applications, including analysis of software structures [=-=16, 28, 18, 27, 14, 29, -=-15]. 2.1 Relations and their lattices Concept analysis starts with a relation, or boolean table, T between a set of objects O and a set of attributes A, hence T O A. For any set of objects O O, thei... |

18 | An algebraic semantics of subobjects
- ROSSIE, FRIEDMAN
- 1995
(Show Context)
Citation Context ...ted. This selection process is dened informally in the C++ Draft Standard [1] as a set of rules that determine when a member hides or dominates another member with the same name. Rossie and Friedman [=-=25]-=- provided a formalization of the member lookup, as a function on subobject graphs. This framework has subsequently been used by Tip et al. as a formal basis for operations on class hierarchies such as... |

15 |
Ecient interprocedural computation of pointerinduced aliases and side eects
- Choi, Burke, et al.
- 1993
(Show Context)
Citation Context ...uxiliary denitions For each variable v in ClassPtrVars(P) we will need a conservative approximation of the variables in ClassVars(P) variables that v may point to. Any of several existing algorithms [=-=8, 22, 31, 26-=-] can be used to compute this information, and we do not make assumptions about the particular algorithm used to compute points-to information. Denition 3 expresses the information supplied by some po... |

13 |
Efficient and precise modeling of exceptions for the analysis of Java programs
- Choi, Grove, et al.
- 1999
(Show Context)
Citation Context ...o not require special treatment. Note however that the abundance of (implicit or explicit) exceptions in Java complicates pointsto analysis, and one might think of adopting factored controlsow graphs =-=[9-=-] for our analysis. 6.6 Arrays Arrays are treated as monolithic variables, and we do not distinguish between dierent array elements. One might think of integrating asne-grained array analysis, such as... |

11 |
Re-engineering object-oriented legacy systems
- Casais
- 1998
(Show Context)
Citation Context ...hierarchies Another category of related work is that of techniques for restructuring class hierarchies for the sake of improving design, improving code reuse, and enabling reuse. The overview article =-=[7-=-] presents 18 dierent methods, many of them process-centered or dynamic analyses. The probably most well-known method for static restructuring was introduced by Opdyke and Johnson [21, 20]. They prese... |

11 |
A member lookup algorithm for C
- RAMALINGAM, SRINIVASAN
- 1997
(Show Context)
Citation Context ...ed by Tip et al. as a formal basis for operations on class hierarchies such as slicing [33] and specialization [35]. Ramalingam and Srinivasan recently presented an ecient algorithm for member lookup =-=[24]-=-. For the purposes of the present paper, we will assume the availability of a function static-lookup which, given a class C and a member m, determines the base class B (B is either C, or a transitive ... |

11 |
Fast and accurate points-to analysis
- Shapiro, Horwitz
- 1997
(Show Context)
Citation Context ...uxiliary denitions For each variable v in ClassPtrVars(P) we will need a conservative approximation of the variables in ClassVars(P) variables that v may point to. Any of several existing algorithms [=-=8, 22, 31, 26-=-] can be used to compute this information, and we do not make assumptions about the particular algorithm used to compute points-to information. Denition 3 expresses the information supplied by some po... |

5 |
Reengineering of con based on mathematical concept analysis
- Snelting
- 1996
(Show Context)
Citation Context |

4 | Maximizing object reuse with a biological metaphor
- Astudillo
- 1997
(Show Context)
Citation Context ...nitions, a number of complex issues related to preserving the appropriate subtype-relationships between types of variables do 40 not arise in his setting. An interesting approach is that of Astudillo =-=[3]. He-=- argues that from an evolutionary viewpoint, subclasses may not only add or redene members, but also loose or \amputate" members. This approach violates fundamental type-theoretic properties of o... |

4 |
On The Inference of Con Structures from Source Code
- Krone, Snelting
- 1994
(Show Context)
Citation Context |

4 | Identifying modules via concept analysis
- Si, Reps
- 1997
(Show Context)
Citation Context |

3 |
Analyse von Softwarevarianten
- LINDIG
- 1998
(Show Context)
Citation Context ... sourcesle, and the corresponding lattice visualizes interferences between congurations. Later, Lindig proved that the conguration space itself is isomorphic to the lattice of the inverted relation [1=-=7]. Co-=-ncept analysis was also used for modularization of old software. Si and Reps [27] investigated the relation between procedures and \features" such as usage of global variables or types. A modular... |

3 |
Data- virtual function resolution
- Pande, Ryder
- 1996
(Show Context)
Citation Context |

2 |
Anke Lewien, and Gregor Snelting. Algorithms for concept lattice decomposition and their applications
- Funk
- 1998
(Show Context)
Citation Context ...n the table. 9 Subdirect decomposition tries to construct the lattice as a (sublattice of) a cartesian product of two or more smaller lattices. Eective algorithms for subdirect decomposition exist [1=-=2]-=-. There is much more to say about concept lattices, and related algorithms and methodology. Davey and Priestley's book [10] contains a chapter on elementary concept analysis. Ganter and Wille [13] tre... |

2 |
Points-to analysis for object-oriented languages
- Streckenbach, Snelting
- 1999
(Show Context)
Citation Context ... to extend it for object-oriented languages. In particular, the treatment of virtual dispatch requires special attention. The details are { for both Andersen's and Steensgaard's method { described in =-=[32]-=-. Roughly, dynamic dispatch is modeled as follows. Whenever a method call o:m(x) is encountered during interprocedural iteration, the following steps are performed: 1. let o 7! fo 1 ; : : : ; o n g an... |

2 |
Working paper for draft proposed international standard for information systems—programming language C++. Doc. No. X3J16/97-0108. Draft of 25
- X3, S
- 1997
(Show Context)
Citation Context ...hence multiple membersCm. This implies that whenever a member m is accessed, one needs to determine which m is being selected. This selection process is defined informally in the C++ Draft Standard =-=[1]-=- as a set of rules that determine when a member hides or dominates another member with the same name. Rossie and Friedman [18] provided a formalization of the member lookup, as a function on subobject... |

2 |
Introduction to Lattices andOrder
- Davey, Priestley
- 1990
(Show Context)
Citation Context ... while meet points factor out common objects. Thus, the lattice uncovers a hierarchy ofconceptionalclusters that was implicit in the original table. Figure 3 shows a table and its lattice (taken from =-=[5]-=-). The element labeled far corresponds to the maximal rectangle indicated in the table. This element is the supremum of all elements with far in their intent: Pluto, Jupiter, Saturn, Uranus, Neptune a... |

1 |
Reengineering class hierarchies using concept lattices
- KABA
- 1999
(Show Context)
Citation Context ...erand and put into a new class, which should be the base class of the separated classes. 9.5 Additional remarks Some additional experiments are described in the Bogemann/Streckenbach master's thesis [=-=6-=-]. The preliminary experience from our experiments can be summarized as follows: The KABA prototype may need several hours for 20,000 LOC on a PC. We plan to switch to a native code compiler with a b... |

1 |
Rokia Missaoui, Amina Ar and ThuyTien Chau. Design of class hierarchies based on concept (galois) lattices. Theory and Practice of Object Systems
- Godin, Mili, et al.
- 1998
(Show Context)
Citation Context |

1 |
Sifting out file gold: Delivering compact applications from an exploratory object-oriented programming environment
- LINGAR
- 1994
(Show Context)
Citation Context ...lass hierarchy w.r.t, a single client application. Several other application extraction techniques for eliminating unused components from hierarchies and objects have been presented in the literature =-=[2, 25, 24]-=-. These are primarily intended as optimizations, although they may have some value for program understanding. Tip et al. [25] present an algorithm for slicing class hierarchies that eliminates members... |

1 |
Formale Begriffvanalyse -- Mathematische Grundlagen
- GAN'rER, WILLE
- 1996
(Show Context)
Citation Context ...med back to the original relation, hence concept analysis is similar in spirit to Fourier analysis. Later, Wille and Ganter elaborated Birkhoff's result and transformed it into a data analysis method =-=[28, 6]-=-. Since then, it has found a variety of applications, including analysis of software structures [9, 21, 11, 20, 7]. Concept analysis starts with a relation, or boolean table, T between a set of object... |

1 |
Analyse yon Softwarevailanten
- LINDIG
- 1998
(Show Context)
Citation Context ...rce file, and the corresponding lattice visualizes interferences between configurations. Later, Lindig proved that the configuration space itself is isomorphic to the lattice of the inverted relation =-=[10]-=-. Concept analysis was also used for modularization of old software. Sift and Reps [20] investigated the relation between procedures and "features" such as usage of global variables or types. A modula... |