Formal concept analysis model for static code analysis (original) (raw)
Related papers
Delving source code with formal concept analysis
Computer Languages, Systems & Structures, 2005
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.
Formal Concept Analysis Enhances Fault Localization in Software
Lecture Notes in Computer Science, 2008
Recent work in fault localization crosschecks traces of correct and failing execution traces. The implicit underlying technique is to search for association rules which indicate that executing a particular source line will cause the whole execution to fail. This technique, however, has limitations. In this article, we first propose to consider more expressive association rules where several lines imply failure. We then propose to use Formal Concept Analysis (FCA) to analyze the resulting numerous rules in order to improve the readability of the information contained in the rules. The main contribution of this article is to show that applying two data mining techniques, association rules and FCA, produces better results than existing fault localization techniques.
Formal Concept Analysis-Based Class Hierarchy Design in Object-Oriented Software Development
Lecture Notes in Computer Science, 2005
The class hierarchy is an important aspect of object-oriented software development. Design and maintenance of such a hierarchy is a difficult task that is often accomplished without any clear guidance or tool support. Formal concept analysis provides a natural theoretical framework for this problem because it can guarantee maximal factorization while preserving specialization relationships. The framework can be useful for several software development scenarios within the class hierarchy life-cycle such as design from scratch using a set of class specifications, or a set of object examples, refactoring/reengineering from existing object code or from the observation of the actual use of the classes in applications and hierarchy evolution by incrementally adding new classes. The framework can take into account different levels of specification details and suggests a number of well-defined alternative designs. These alternatives can be viewed as normal forms for class hierarchies where each normal form addresses particular design goals. An overview of work in the area is presented by highlighting the formal concept analysis notions that are involved. One particularly difficult problem arises when taking associations between classes into account. Basic scaling has to be extended because the scales used for building the concept lattice are dependent on it. An approach is needed to treat this circularity in a well-defined manner. Possible solutions are discussed. See the website at
Formal concept analysis applications to requirements engineering and design
School of Information Technology and Electrical …, 2004
Currently, the bulk of applications of Formal Concept Analysis (FCA) in software engineering have focussed on software maintenance and re-engineering. In this thesis we broaden the approach by applying FCA to a number of early-phase activities within the software engineering life-cycle.
Generation of high level views in reverse engineering using formal concept analysis
Proceedings of First International Conference on Networks & Soft Computing (ICNSC), 2014 , 2014
Object oriented systems are hard to comprehend because of different dependencies existing at different stages in the system. Inferring these dependencies among the components of object oriented systems is an essential requirement before performing any modifications in the system. So the maintenance of object oriented systems is a difficult process for software maintainers in software re-engineering. Here we present an approach for finding these dependencies by applying the conceptual clustering technique known as Formal Concept Analysis (FCA). In this paper, we show the results which are obtained by applying the approach. We generate the formal concepts and views at two different stages namely class and class hierarchy which shows different dependencies existed in the Java systems. Finally we present the experimental results of three Java applications on which we have tested our proposed approach.
Visualizing Variability Management in Requirements Engineering through Formal Concept Analysis
2013
While research on the visualization and documentation of variability in software artefacts by means of e.g. feature diagrams is well established, most of these documentation methods in the field of variability management assume the presence of variability as a given fact. The decision whether variability within the requirements should actually give rise to variability in the envisaged software artefact is often taken unconsciously and as a result techniques to visualize and document the amount, the structure and the impact of requirements evolution on variability are scarce. This paper provides a real life proof of concept that formal concept analysis (FCA) can be used for the visualization and documentation of variability related decisions during (early) requirements engineering. FCA is used in a real-life case study to check the usability of FCA as a visualization method to support variability management during requirements engineering. The real-life case study also provides initial proof that useful documentation can be obtained by representing the requirements in a FCA concept lattice.
A Catalog of Patterns for Concept Lattice Interpretation in Software Reengineering
2012
Formal Concept Analysis (FCA) provides an important approach in software reengineering for software understanding, design anomalies detection and correction. However, FCA-based approaches have two problems: (i) they produce lattices that must be interpreted by the user according to his/her understanding of the technique and different elements of the graph; and, (ii) the lattice can rapidly become so big that one is overwhelmed by the mass of information and possibilities. In this paper, we present a catalogue of important patterns in concept lattices, which can allow automating the task of lattice interpretation. The approach helps the reengineer to concentrate on the task of reengineering rather than understanding a complex lattice. We provide interpretation of these patterns in a generalized manner and illustrate them on various contexts constructed from program information of different open-source systems. We also present a tool that allows automated extraction of the patterns from concept lattices.