Efficient flow-sensitive interprocedural computation of pointer-induced aliases and side effects
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Building and maintaining analysis-level class hierarchies using Galois Lattices
OOPSLA '93 Proceedings of the eighth annual conference on Object-oriented programming systems, languages, and applications
Refactoring object-oriented frameworks
Refactoring object-oriented frameworks
Creating abstract superclasses by refactoring
CSC '93 Proceedings of the 1993 ACM conference on Computer science
OOPSLA '94 Proceedings of the ninth annual conference on Object-oriented programming systems, language, and applications
An algebraic semantics of subobjects
Proceedings of the tenth annual conference on Object-oriented programming systems, languages, and applications
Reengineering of configurations based on mathematical concept analysis
ACM Transactions on Software Engineering and Methodology (TOSEM)
Slicing class hierarchies in C++
Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Automatic inheritance hierarchy restructuring and method refactoring
Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Fast static analysis of C++ virtual function calls
Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Points-to analysis in almost linear time
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Assessing modular structure of legacy code based on mathematical concept analysis
ICSE '97 Proceedings of the 19th international conference on Software engineering
On the inference of configuration structures from source code
ICSE '94 Proceedings of the 16th international conference on Software engineering
Fast and accurate flow-insensitive points-to analysis
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Class hierarchy specialization
Proceedings of the 12th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Concept analysis—a new framework for program understanding
Proceedings of the 1998 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
A study of dead data members in C++ applications
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Maximizing object reuse with a biological metaphor
Theory and Practice of Object Systems - Special issue object-oriented software evolution and re-engineering
Reengineering class hierarchies using concept analysis
SIGSOFT '98/FSE-6 Proceedings of the 6th ACM SIGSOFT international symposium on Foundations of software engineering
Design of class hierarchies based on concept (Galois) lattices
Theory and Practice of Object Systems - Special issue high availability in CORBA
Constraint-based array dependence analysis
ACM Transactions on Programming Languages and Systems (TOPLAS)
Efficient and precise modeling of exceptions for the analysis of Java programs
Proceedings of the 1999 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
The concept of dynamic analysis
ESEC/FSE-7 Proceedings of the 7th European software engineering conference held jointly with the 7th ACM SIGSOFT international symposium on Foundations of software engineering
Practical experience with an application extractor for Java
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Which pointer analysis should I use?
Proceedings of the 2000 ACM SIGSOFT international symposium on Software testing and analysis
Unification-based pointer analysis with directional assignments
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Class hierarchy specialization
Acta Informatica
Extracting library-based object-oriented applications
SIGSOFT '00/FSE-8 Proceedings of the 8th ACM SIGSOFT international symposium on Foundations of software engineering: twenty-first century applications
Formal Concept Analysis: Mathematical Foundations
Formal Concept Analysis: Mathematical Foundations
Identifying modules via concept analysis
ICSM '97 Proceedings of the International Conference on Software Maintenance
Data-Flow-Based Virtual Function Resolution
SAS '96 Proceedings of the Third International Symposium on Static Analysis
A Comparative Study of Two Whole Program Slicers for C
A Comparative Study of Two Whole Program Slicers for C
Semantics-Based Composition of Class Hierarchies
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
Obfuscation of design intent in object-oriented applications
Proceedings of the 3rd ACM workshop on Digital rights management
Refactoring for generalization using type constraints
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Visualizing class interfaces with formal concept analysis
OOPSLA '03 Companion of the 18th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Formal Concept Analysis in Software Engineering
Proceedings of the 26th International Conference on Software Engineering
Refactoring class hierarchies with KABA
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
A technique for automatic component extraction from object-oriented programs by refactoring
Science of Computer Programming - Special issue on new software composition concepts
Refactoring gcc using structure field access traces and concept analysis
WODA '05 Proceedings of the third international workshop on Dynamic analysis
Rascal: A Recommender Agent for Agile Reuse
Artificial Intelligence Review
Semantics-based reverse engineering of object-oriented data models
Proceedings of the 28th international conference on Software engineering
Decoupling classes with inferred interfaces
Proceedings of the 2006 ACM symposium on Applied computing
An operational semantics and type safety prooffor multiple inheritance in C++
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Fast factorization by similarity in formal concept analysis of data with fuzzy attributes
Journal of Computer and System Sciences
Redesigning with traits: the Nile stream trait-based library
ICDL '07 Proceedings of the 2007 international conference on Dynamic languages: in conjunction with the 15th International Smalltalk Joint Conference 2007
Refactorings of design defects using relational concept analysis
ICFCA'08 Proceedings of the 6th international conference on Formal concept analysis
Analysis of early aspects in requirements goal models: a concept-driven approach
Transactions on aspect-oriented software development III
Refactoring using type constraints
ACM Transactions on Programming Languages and Systems (TOPLAS)
Backing composite web services using formal concept analysis
ICFCA'11 Proceedings of the 9th international conference on Formal concept analysis
Supporting ontology design through large-scale FCA-based ontology restructuring
ICCS'11 Proceedings of the 19th international conference on Conceptual structures for discovering knowledge
Information Sciences: an International Journal
Building abstractions in class models: formal concept analysis in a model-driven approach
MoDELS'06 Proceedings of the 9th international conference on Model Driven Engineering Languages and Systems
Describing role models in terms of formal concept analysis
ICFCA'10 Proceedings of the 8th international conference on Formal Concept Analysis
A survey of formal concept analysis support for software engineering activities
Formal Concept Analysis
Concept lattices in software analysis
Formal Concept Analysis
Formal concept analysis used for software analysis and modelling
Formal Concept Analysis
Formal concept analysis-based class hierarchy design in object-oriented software development
Formal Concept Analysis
Formal concept analysis with constraints by closure operators
ICCS'06 Proceedings of the 14th international conference on Conceptual Structures: inspiration and Application
Navigation spaces for the conceptual analysis of software structure
ICFCA'05 Proceedings of the Third international conference on Formal Concept Analysis
Concept analysis as a formal method for menu design
DSVIS'05 Proceedings of the 12th international conference on Interactive Systems: design, specification, and verification
Using Formal Concept Analysis to support change analysis
ASE '11 Proceedings of the 2011 26th IEEE/ACM International Conference on Automated Software Engineering
Combining concept lattice with call graph for impact analysis
Advances in Engineering Software
Computing Formal Concepts by Attribute Sorting
Fundamenta Informaticae - Concept Lattices and Their Applications
Refactoring using type constraints
SAS'07 Proceedings of the 14th international conference on Static Analysis
A novel obfuscation: class hierarchy flattening
FPS'12 Proceedings of the 5th international conference on Foundations and Practice of Security
Granularity of attributes in formal concept analysis
Information Sciences: an International Journal
Hi-index | 0.00 |
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 hierachies. 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.