Results 1 - 10
of
141
A survey of software refactoring
- IEEE Transactions on Software Engineering
, 2004
"... Abstract—This paper provides an extensive overview of existing research in the field of software refactoring. This research is compared and discussed based on a number of different criteria: the refactoring activities that are supported, the specific techniques and formalisms that are used for suppo ..."
Abstract
-
Cited by 299 (10 self)
- Add to MetaCart
Abstract—This paper provides an extensive overview of existing research in the field of software refactoring. This research is compared and discussed based on a number of different criteria: the refactoring activities that are supported, the specific techniques and formalisms that are used for supporting these activities, the types of software artifacts that are being refactored, the important issues that need to be taken into account when building refactoring tool support, and the effect of refactoring on the software process. A running example is used throughout the paper to explain and illustrate the main concepts. Index Terms—Coding tools and techniques, programming environments/construction tools, restructuring, reverse engineering, and reengineering. 1
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 243 (3 self)
- Add to MetaCart
(Show Context)
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.
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 130 (1 self)
- Add to MetaCart
(Show Context)
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
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 121 (3 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...
Identifying objects using cluster and concept analysis. Software Engineering,
- Proceedings of the 1999 International Conference on,
, 1999
"... ..."
(Show Context)
Computing Iceberg Concept Lattices with TITANIC
, 2002
"... We introduce the notion of iceberg concept lattices... ..."
Abstract
-
Cited by 112 (15 self)
- Add to MetaCart
We introduce the notion of iceberg concept lattices...
Aspect mining through the formal concept analysis of execution traces
- in WCRE
, 2004
"... The presence of crosscutting concerns, i.e., functional-ities that are not assigned to a single modular unit in the implementation, is one of the major problems in software understanding and evolution. In fact, they are hard to locate (scattering) and may give rise to multiple ripple effects (tan-gl ..."
Abstract
-
Cited by 98 (8 self)
- Add to MetaCart
The presence of crosscutting concerns, i.e., functional-ities that are not assigned to a single modular unit in the implementation, is one of the major problems in software understanding and evolution. In fact, they are hard to locate (scattering) and may give rise to multiple ripple effects (tan-gling). Aspect Oriented Programming offers mechanisms to factor them out into a modular unit, called an aspect. In this paper, aspect identication in existing code is supported by means of dynamic code analysis. Execution traces are generated for the use cases that exercise the main functionalities of the given application. The relationship between execution traces and executed computational units (class methods) is subjected to concept analysis. In the re-sulting lattice, potential aspects are detected by determin-ing the use-case specic concepts and examining their spe-cic computational units. When these come from multiple modules (classes) which contribute to multiple use-cases, a candidate aspect is recognized. 1
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 68 (4 self)
- Add to MetaCart
(Show Context)
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.
Mining aspectual views using formal concept analysis
- In SCAM ’04: Proceedings of the Source Code Analysis and Manipulation, Fourth IEEE International Workshop on (SCAM’04
, 2004
"... In this paper, we report upon an initial experiment using the technique of formal concept analysis for mining aspec-tual views from the source code. An aspectual view is a set of source code entities, such as class hierarchies, classes and methods, that are structurally related in some way, and ofte ..."
Abstract
-
Cited by 60 (6 self)
- Add to MetaCart
(Show Context)
In this paper, we report upon an initial experiment using the technique of formal concept analysis for mining aspec-tual views from the source code. An aspectual view is a set of source code entities, such as class hierarchies, classes and methods, that are structurally related in some way, and often crosscut a particular application. Initially, we follow a lightweight approach, where we only consider the names of classes and methods. This simplistic technique already results in the discovery of interesting and meaningful as-pectual views, leaving us confident that more complex ap-proaches will perform even better, and should be studied in the future. 1
Data Mining Library Reuse Patterns using Generalized Association Rules
, 2000
"... In this paper, we show how data mining can be used to discover library reuse patterns in existing applications. Specifically, we consider the problem of discovering library classes and member functions that are typically reused in combination by application classes. This paper improves upon our earl ..."
Abstract
-
Cited by 57 (3 self)
- Add to MetaCart
(Show Context)
In this paper, we show how data mining can be used to discover library reuse patterns in existing applications. Specifically, we consider the problem of discovering library classes and member functions that are typically reused in combination by application classes. This paper improves upon our earlier research using "association rules" [8] by taking into account the inheritance hierarchy using "generalized association rules". This turns out to be a non-trivial but worthwhile endeavor.