• Documents
  • Authors
  • Tables
  • Log in
  • Sign up
  • MetaCart
  • DMCA
  • Donate

CiteSeerX logo

Advanced Search Include Citations
Advanced Search Include Citations | Disambiguate

Building and maintaining analysis-level class hierarchies using Galois Lattices (1993)

by Robert Godin, Hafedh Mili
Venue:SIGPLAN Not
Add To MetaCart

Tools

Sorted by:
Results 1 - 10 of 95
Next 10 →

Reengineering class hierarchies using concept analysis

by Gregor Snelting, Frank Tip - In ACM Trans. Programming Languages and Systems , 1998
"... 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. Th ..."
Abstract - Cited by 141 (6 self) - Add to MetaCart
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.
(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 ...

Incremental concept formation algorithms based on Galois (concept) lattices

by Robert Godin, Rokia Missaoui, Hassan Alaoui , 1995
"... . The Galois (or concept) lattice produced from a binary relation has been proved useful for many applications. Building the Galois lattice can be considered as a conceptual clustering method since it results in a concept hierarchy. This article presents incremental algorithms for updating the Galoi ..."
Abstract - Cited by 132 (9 self) - Add to MetaCart
. The Galois (or concept) lattice produced from a binary relation has been proved useful for many applications. Building the Galois lattice can be considered as a conceptual clustering method since it results in a concept hierarchy. This article presents incremental algorithms for updating the Galois lattice and corresponding graph, resulting in an incremental concept formation method. Different strategies are considered based on a characterization of the modifications implied by such an update. Results of empirical tests are given in order to compare the performance of the incremental algorithms to three other batch algorithms. Surprisingly, when the total time for incremental generation is used, the simplest and less efficient variant of the incremental algorithms outperforms the batch algorithms in most cases. When only the incremental update time is used, the incremental algorithm outperforms all the batch algorithms. Empirical evidence shows that, on the average, the incremental u...

Extracting concepts from file names; a new file clustering criterion

by Nicolas Anquetil, Timothy Lethbridge , 1998
"... Decomposing complex software systems into conceptually independent subsystems is a signi cant software engineering activity which received considerable research attention. Most of the research in this domain considers the body of the source code; trying to cluster together les which are conceptually ..."
Abstract - Cited by 68 (6 self) - Add to MetaCart
Decomposing complex software systems into conceptually independent subsystems is a signi cant software engineering activity which received considerable research attention. Most of the research in this domain considers the body of the source code; trying to cluster together les which are conceptually related. This paper discusses techniques for extracting concepts (we call them \abbreviations") from a more informal source of information: le names. The task is di cult because nothing indicates where to split the le names into substrings. In general, nding abbreviations would require domain knowledge to identify the concepts that are referred to in a name and intuition to recognize such concepts in abbreviated forms. We show by experiment that the techniques we propose allow about 90 % of the abbreviations to be found automatically.
(Show Context)

Citation Context

...n the length of this name, whereas the total number of substrings would be quadratic in the length of the name. After extracting all n-grams from the names, we build a Galois Lattice (see for example =-=[3, 11]-=-). This structure allows us to cluster file names which share n-grams. The Galois lattice has an important property: it will find all clusters of files sharing at least one n-gram. That way we are sur...

Formal Concept Analysis in Information Science

by Uta Priss - ANNUAL REVIEW OF INFORMATION SCIENCE AND TECHNOLOGY , 1996
"... ..."
Abstract - Cited by 67 (5 self) - Add to MetaCart
Abstract not found

A fast algorithm for building lattices

by Lhouari Nourine, Olivier Raynaud - Information Processing Letters , 1999
"... This paper presents a simple, efficient algorithm to compute the covering graph of the lattice generated by a family B of subsets of a set X. The implementation of this algorithm has O..jXj C jBj / jBj / time complexity per lattice element. This improves previous algorithms of Bordat (1986), Gante ..."
Abstract - Cited by 65 (0 self) - Add to MetaCart
This paper presents a simple, efficient algorithm to compute the covering graph of the lattice generated by a family B of subsets of a set X. The implementation of this algorithm has O..jXj C jBj / jBj / time complexity per lattice element. This improves previous algorithms of Bordat (1986), Ganter and Kuznetsov (1998) and Jard et al. (1994). This algorithm can be used to compute the Galois (concept) lattice, the maximal antichains lattice or the Dedekind–MacNeille completion of a partial

A Survey of Formal Concept Analysis Support for Software Engineering Activities

by Thomas Tilley, Richard Cole, Peter Becker, Peter Eklund - In Gerd Stumme, editor, Proceedings of the First International Conference on Formal Concept Analysis - ICFCA’03 , 2003
"... Abstract. Formal Concept Analysis (FCA) has typically been applied in the field of software engineering to support software maintenance and object-oriented class identification tasks. This paper presents a broader overview by describing and classifying academic papers that report the application of ..."
Abstract - Cited by 53 (6 self) - Add to MetaCart
Abstract. Formal Concept Analysis (FCA) has typically been applied in the field of software engineering to support software maintenance and object-oriented class identification tasks. This paper presents a broader overview by describing and classifying academic papers that report the application of FCA to software engineering. The papers are classified using a framework based on the activities defined in the ISO12207 Software Engineering standard. Two alternate classification schemes based on the programming language under analysis and target application size are also discussed. In addition, the authors work to support agile methods and formal specification via FCA is introduced. 1
(Show Context)

Citation Context

... Duwel99enhancing [15] Duwel00bridging [17] Eisenbarth01aiding [18] 0 Eisenbarth01feature [19] 76 Eisenbarth03locating [20] 1,200 Fischer98specification [21] Funk95algorithms [23] 1.6 Godin93building =-=[27]-=- 0 Godin95applying [26] Godin98design [25] Huchard99from [28] 0 Huchard02when [29] 0 Krone94inference [33] 1.6 Kuipers00types [34] 100 Leblanc99environment [35] 0 0 0 0 Lindig95concept [36] Lindig97as...

Refactoring and Aggregation

by Ralph E. Johnson, William F. Opdyke - In Object Technologies for Advanced Software, First JSSST International Symposium, volume 742 of Lecture Notes in Computer Science , 1993
"... Object-oriented programs evolve by means other than just the addition of new classes. The changes to object-oriented programs that have been most studied are those based on inheritance, on reorganizing a class hierarchy. However, aggregation is a relationship between classes that is just as impor ..."
Abstract - Cited by 51 (2 self) - Add to MetaCart
Object-oriented programs evolve by means other than just the addition of new classes. The changes to object-oriented programs that have been most studied are those based on inheritance, on reorganizing a class hierarchy. However, aggregation is a relationship between classes that is just as important as inheritance, and many changes to an object-oriented design involve the aggregate/component relationship. This paper describes some common refactorings based on aggregation, including how to convert from inheritance to an aggregation, and how to reorganize an aggregate/component hierarchy just as one might reorganize a class inheritance hierarchy. 1 Introduction Object-oriented programming is advertised as leading to more extensible programs than conventional programming [Mey88]. Modifications to a system that would require many changes in conventional programming often can be carried out in an object-oriented program by simply adding new classes. Nevertheless, there are many t...

Understanding class hierarchies using concept analysis

by Gregor Snelting, FRANK TIP - ACM Transactions on Programming Languages and Systems , 2000
"... 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. T ..."
Abstract - Cited by 45 (7 self) - Add to MetaCart
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 a class hierarchy in a specific context, and lead to useful restructuring proposals.

On Automatic Class Insertion with Overloading

by H. Dicky, C. Dony, M. Huchard, T. Libourel , 1996
"... Several algorithms [Cas92, MS89, Run92, DDHL94a, DDHL95, GMM95] have been proposed to automatically insert a class into an inheritance hierarchy. But actual hierarchies all include overriden and overloaded properties that these algorithms handle either very partially or not at all. Partially handled ..."
Abstract - Cited by 38 (16 self) - Add to MetaCart
Several algorithms [Cas92, MS89, Run92, DDHL94a, DDHL95, GMM95] have been proposed to automatically insert a class into an inheritance hierarchy. But actual hierarchies all include overriden and overloaded properties that these algorithms handle either very partially or not at all. Partially handled means handled provided there is a separate given function f able to compare overloaded properties [DDHL95, GMM95]. In this paper, we describe a new version of our algorithm (named Ares) which handles automatic class insertion more efficiently using such a function f . Although impossible to fully define, this function can be computed for a number of well defined cases of overloading and overriding. We give a classification of such cases and describe the computation process for a well-defined set of nontrivial cases. The algorithm preserves these important properties: - preservation of the maximal factorization of properties - preservation of the underlying structure (Galois lattice) of t...

Recovering software architecture from the names of source files

by Nicolas Anquetil, Timothy C. Lethbridge - In Proc. Working Conf. on Reverse Engineering , 1999
"... We discuss how to extract a useful set of subsystems from a set of source-code file names. This problem is challenging because, in many legacy systems, there are thousands of files with names that are very short and cryptic. At the same time the problem is important because software engineers often ..."
Abstract - Cited by 37 (2 self) - Add to MetaCart
We discuss how to extract a useful set of subsystems from a set of source-code file names. This problem is challenging because, in many legacy systems, there are thousands of files with names that are very short and cryptic. At the same time the problem is important because software engineers often find it difficult to understand such systems. We propose a general algorithm to cluster files based on their names, and a set of alternative methods for implementing the algorithm. One of the key tasks is picking candidate words that we will try to identify in file names. We do this by a) iteratively decomposing file names, b) finding common substrings, and c) choosing words in routine names, in an English dictionary or in source code comments. In addition, we investigate generating abbreviations from the candidate words in order to find matches in file names, as well as how to split file names into components given no word markers. To compare and evaluate our approaches, we present two experiments. The first compares the "concepts " found in each file name by each method to the results of manually decomposing file names. The second experiment compares automatically generated subsystems to subsystem examples proposed by experts. We conclude that two methods are most effective: Extracting concepts using common substrings, and extracting those concepts that relate to the names of routines in the files.
Powered by: Apache Solr
  • About CiteSeerX
  • Submit and Index Documents
  • Privacy Policy
  • Help
  • Data
  • Source
  • Contact Us

Developed at and hosted by The College of Information Sciences and Technology

© 2007-2019 The Pennsylvania State University