Results 1 - 10
of
38
Locating Features in Source Code
, 2003
"... Understanding the implementation of a certain feature of a system requires to identify the computational units of the system that contribute to this feature. In many cases, the mapping of features to the source code is poorly documented. In this paper, we present a semi-automatic technique that reco ..."
Abstract
-
Cited by 133 (2 self)
- Add to MetaCart
Understanding the implementation of a certain feature of a system requires to identify the computational units of the system that contribute to this feature. In many cases, the mapping of features to the source code is poorly documented. In this paper, we present a semi-automatic technique that reconstructs the mapping for features that are triggered by the user and exhibit an observable behavior. The mapping is in general not injective; that is, a computational unit may contribute to several features. Our technique allows to distinguish between general and specific computational units with respect to a given set of features. For a set of features, it also identifies jointly and distinctly required computational units.
Assessing modular structure of legacy code based on mathematical concept analysis
, 1997
"... We apply mathematical concept analysis in order to modularize legacy code. By analysing the relation between procedures and global variables, a so-called concept lattice is constructed. The paper explains how module structures show up in the lattice, and how the lattice can be used to assess cohesio ..."
Abstract
-
Cited by 109 (3 self)
- Add to MetaCart
We apply mathematical concept analysis in order to modularize legacy code. By analysing the relation between procedures and global variables, a so-called concept lattice is constructed. The paper explains how module structures show up in the lattice, and how the lattice can be used to assess cohesion and coupling between module candidates. Certain algebraic decompositions of the lattice can lead to automatic generation of modularization proposals. The method is applied to several examples written in Modula-2, Fortran, and Cobol; among them a>100kloc aerodynamics program.
Identifying Modules Via Concept Analysis
- IEEE Transactions on Software Engineering
, 1997
"... We describe a general technique for identifying modules in legacy code. The method is based on concept analysis --- a branch of lattice theory that can be used to identify similarities among a set of objects based on their attributes. We discuss how concept analysis can identify potential modules u ..."
Abstract
-
Cited by 98 (1 self)
- Add to MetaCart
We describe a general technique for identifying modules in legacy code. The method is based on concept analysis --- a branch of lattice theory that can be used to identify similarities among a set of objects based on their attributes. We discuss how concept analysis can identify potential modules using both "positive" and "negative" information. We present an algorithmic framework to construct a lattice of concepts from a program, where each concept represents a potential module. 1 Introduction Many existing software systems were developed using programming languages and paradigms that do not incorporate object-oriented features and design principles. In particular, these systems often lack a modular style, making maintenance and further enhancement an arduous task. The software engineer's job would be less difficult if there were tools that could transform code that does not make explicit use of modules into functionally equivalent object-oriented code that does make use of modules...
The concept of dynamic analysis
- In ESEC / SIGSOFT FSE
, 1999
"... Abstract. Dynamic analysis is the analysis of the properties of a run-ning program. In this paper, we explore two new dynamic analyses based on program profiling:- Frequency Spectrum Analysis. We show how analyzing the frequen-cies of program entities in a single execution can help programmers to de ..."
Abstract
-
Cited by 95 (0 self)
- Add to MetaCart
Abstract. Dynamic analysis is the analysis of the properties of a run-ning program. In this paper, we explore two new dynamic analyses based on program profiling:- Frequency Spectrum Analysis. We show how analyzing the frequen-cies of program entities in a single execution can help programmers to decompose a program, identify related computations, and find computations related to specific input and output characteristics of a program.- Coverage Concept Analysis. Concept analysis of test coverage data computes dynamic analogs to static control flow relationships such as domination, postdomination, and regions. Comparison of these dynamically computed relationships to their static counterparts can point to areas of code requiring more testing and can aid program-mers in understanding how a program and its test sets relate to one another. 1
How History Justifies System Architecture (or not)
- In 6th International Workshop on Principles of Software Evolution (IWPSE 2003
, 2003
"... The revision history of a software system conveys important information about how and why the system evolved in time. The revision history can also tell us which parts of the system are coupled by common changes: "Whenever the database schema was changed, the sqlquery() method was altered, too." Thi ..."
Abstract
-
Cited by 52 (11 self)
- Add to MetaCart
The revision history of a software system conveys important information about how and why the system evolved in time. The revision history can also tell us which parts of the system are coupled by common changes: "Whenever the database schema was changed, the sqlquery() method was altered, too." This "evolutionary" coupling can be compared with the coupling as imposed by the system architecture
Aiding program comprehension by static and dynamic feature analysis
- In Proceedings of the International Conference on Software Maintenance
, 2001
"... Understanding a system’s implementation without prior knowledge is a hard task for reengineers in general. However, some degree of automatic aid is possible. In this paper, we present a technique building a mapping between the system’s externally visible behavior and the relevant parts of the source ..."
Abstract
-
Cited by 47 (4 self)
- Add to MetaCart
Understanding a system’s implementation without prior knowledge is a hard task for reengineers in general. However, some degree of automatic aid is possible. In this paper, we present a technique building a mapping between the system’s externally visible behavior and the relevant parts of the source code. Our technique combines dynamic and static analyses to rapidly focus on the system’s parts urgently required for a goal-directed process of program understanding. 1.
Understanding class hierarchies using concept analysis
- 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 33 (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 a class hierarchy in a specific context, and lead to useful restructuring proposals.
Concept analysis for module restructuring
- IEEE Transactions on Software Engineering
, 2001
"... AbstractÐLow coupling between modules and high cohesion inside each module are the key features of good software design. This is obtained by encapsulating the details about the internal structure of data and exporting only public functions with a clean interface. The only native support to encapsula ..."
Abstract
-
Cited by 31 (0 self)
- Add to MetaCart
AbstractÐLow coupling between modules and high cohesion inside each module are the key features of good software design. This is obtained by encapsulating the details about the internal structure of data and exporting only public functions with a clean interface. The only native support to encapsulation offered by procedural programming languages, such as C, is the possibility to limit the visibility of entities at the file level. Thus, modular decomposition is achieved by assigning functions and data structures to different files. This paper proposes a new approach to using concept analysis for module restructuring, based on the computation of extended concept subpartitions. Alternative modularizations, characterized by high cohesion around the internal structures that are being manipulated, can be determined by such a method. To assess the quality of the restructured modules, the trade-off between encapsulation violations and decomposition is considered and proper measures for both factors are defined. Furthermore, the cost of restructuring is evaluated through a measure of distance between original and new modularizations. Concept subpartitions were determined for a test suite of 20 programs of variable size, 10 public domain and 10 industrial applications. On the resulting module candidates, the trade-off between encapsulation and decomposition was measured, together with an estimate of the cost of restructuring. Moreover, the ability of concept analysis to determine meaningful modularizations was assessed in two ways. First, programs without encapsulation violations were used as oracles, assuming the absence of violations as an indicator of careful decomposition. Second, the suggested restructuring interventions were actually implemented in some case studies to evaluate the feasibility of restructuring and to deeply investigate the code organization before and after the intervention. Concept analysis was experienced to be a powerful tool supporting module restructuring.
A Survey of Formal Concept Analysis Support for Software Engineering Activities
- 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 26 (5 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

