Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Reengineering class hierarchies using concept analysis
SIGSOFT '98/FSE-6 Proceedings of the 6th ACM SIGSOFT international symposium on Foundations of software engineering
Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
Formal Concept Analysis: Mathematical Foundations
Formal Concept Analysis: Mathematical Foundations
Inference of object-oriented design patterns
Journal of Software Maintenance: Research and Practice
Object Oriented Reengineering Patterns
Object Oriented Reengineering Patterns
A Framework for Source Code Search Using Program Patterns
IEEE Transactions on Software Engineering
Declarative Reasoning about the Structure of Object-Oriented Systems
TOOLS '98 Proceedings of the Technology of Object-Oriented Languages and Systems
On finding duplication and near-duplication in large software systems
WCRE '95 Proceedings of the Second Working Conference on Reverse Engineering
Automated Support for Program Refactoring using Invariants
ICSM '01 Proceedings of the IEEE International Conference on Software Maintenance (ICSM'01)
Clone Detection Using Abstract Syntax Trees
ICSM '98 Proceedings of the International Conference on Software Maintenance
A Language Independent Approach for Detecting Duplicated Code
ICSM '99 Proceedings of the IEEE International Conference on Software Maintenance
Instantiating and Detecting Design Patterns: Putting Bits and Pieces Together
Proceedings of the 16th IEEE international conference on Automated software engineering
Identifying Refactoring Opportunities Using Logic Meta Programming
CSMR '03 Proceedings of the Seventh European Conference on Software Maintenance and Reengineering
Java Quality Assurance by Detecting Code Smells
WCRE '02 Proceedings of the Ninth Working Conference on Reverse Engineering (WCRE'02)
Revealing Class Structure with Concept Lattices
WCRE '03 Proceedings of the 10th Working Conference on Reverse Engineering
An Evaluation of Clone Detection Techniques for Identifying Crosscutting Concerns
ICSM '04 Proceedings of the 20th IEEE International Conference on Software Maintenance
Aspect Mining through the Formal Concept Analysis of Execution Traces
WCRE '04 Proceedings of the 11th Working Conference on Reverse Engineering
Identifying Aspects Using Fan-In Analysis
WCRE '04 Proceedings of the 11th Working Conference on Reverse Engineering
Unanticipated integration of development tools using the classification model
Computer Languages, Systems and Structures
Variable precision concepts and its applications for query expansion
ICIC'09 Proceedings of the Intelligent computing 5th international conference on Emerging intelligent computing technology and applications
A survey of automated code-level aspect mining techniques
Transactions on aspect-oriented software development IV
Identifying cross-cutting concerns using software repository mining
Proceedings of the Joint ERCIM Workshop on Software Evolution (EVOL) and International Workshop on Principles of Software Evolution (IWPSE)
Formal concept analysis in knowledge discovery: a survey
ICCS'10 Proceedings of the 18th international conference on Conceptual structures: from information to intelligence
Concept location using formal concept analysis and information retrieval
ACM Transactions on Software Engineering and Methodology (TOSEM)
Review: Formal concept analysis in knowledge processing: A survey on applications
Expert Systems with Applications: An International Journal
Hi-index | 0.00 |
Getting an initial understanding of the structure of a software system, whether it is for software maintenance, evolution or reengineering purposes, is a nontrivial task. We propose a lightweight approach to delve a system's source code automatically and efficiently for relevant concepts of interest: what concerns are addressed in the code, what patterns, coding idioms and conventions have been adopted, and where and how are they implemented. We use formal concept analysis to do the actual source-code mining, and then filter, classify and combine the results to present them in a format that is more convenient to a software engineer. We applied a prototype tool that implements this approach to several small to medium-sized Smalltalk applications. For each of these, the tool uncovered several design pattern instances, coding and naming conventions, refactoring opportunities and important domain concepts. Although the tool and approach can still be improved in many ways, the tool does already provides useful results when trying to get an initial understanding of a system. The obtained results also illustrate the relevance and feasibility of using formal concept analysis as an efficient technique for source-code mining.