394 research outputs found
Code extraction algorithms which unify slicing and concept assignment
One approach to reverse engineering is to partially automate subcomponent extraction, improvement and subsequent recombination. Two previously proposed automated techniques for supporting this activity are slicing and concept assignment. However, neither is directly applicable in isolation; slicing criteria (sets of program variables) are simply too low level in many cases, while concept assignment typically fails to produce executable subcomponents. This paper introduces a unification of slicing and concept assignment which exploits their combined advantages, while overcoming their individual weaknesses. Our 'concept slices' are extracted using high level criteria, while producing executable subprograms. The paper introduces three ways of combining slicing, and concept assignment and algorithms for each. The application of the concept slicing algorithms is illustrated with a case study from a large financial organisation
Potential programming plan and domain concept detection supported by slicing technique
Little has been written about the component provision problem (programming plans and domain concepts) for the repositories of knowledge in program understanding systems and reports that specifically address this issue are unknown. Model-driven and plan-driven approaches use repositories where construction and evolution are informal and depend on the experts. In domains where the expert is not available the only valid source of information is the source code. But, domain concept design and programming plans from the source code by non-expert professionals is not a trivial task.
In this paper, a hybrid top-down/bottom-up approach based on algorithmic pattern matching and slicing techniques has begun to be defined in order to provide plans or concepts (termed activities in the model-driven approaches) to the knowledge base. Initially, the exploration area is restricted by slicing techniques, and then, software inspection tools are used to further limit the relevant areas. Finally, the initially hypothesized pattern is matched with these segments.Eje: V - Workshop de agentes y sistemas inteligentesRed de Universidades con Carreras en Informática (RedUNCI
An Introduction to Slice-Based Cohesion and Coupling Metrics
This report provides an overview of slice-based software metrics. It brings together information about the development of the metrics from Weiser’s original idea that program slices may be used in the measurement of program complexity, with alternative slice-based measures proposed by other researchers. In particular, it details two aspects of slice-based metric calculation not covered elsewhere in the literature: output variables and worked examples of the calculations. First, output variables are explained, their use explored and standard reference terms and usage proposed. Calculating slice-based metrics requires a clear understanding of ‘output variables’ because they form the basis for extracting the program slices on which the calculations depend. This report includes a survey of the variation in the definition of output variables used by different research groups and suggests standard terms of reference for these variables. Our study identifies four elements which are combined in the definition of output variables. These are the function return value, modified global variables, modified reference parameters and variables printed or otherwise output by the module. Second, slice-based metric calculations are explained with the aid of worked examples, to assist newcomers to the field. Step-by-step calculations of slice-based cohesion and coupling metrics based on the vertices output by the static analysis tool CodeSurfer (R) are presented and compared with line-based calculations
An Extended Stable Marriage Problem Algorithm for Clone Detection
Code cloning negatively affects industrial software and threatens
intellectual property. This paper presents a novel approach to detecting cloned
software by using a bijective matching technique. The proposed approach focuses
on increasing the range of similarity measures and thus enhancing the precision
of the detection. This is achieved by extending a well-known stable-marriage
problem (SMP) and demonstrating how matches between code fragments of different
files can be expressed. A prototype of the proposed approach is provided using
a proper scenario, which shows a noticeable improvement in several features of
clone detection such as scalability and accuracy.Comment: 20 pages, 10 figures, 6 table
Allowing Overlapping Boundaries in Source Code using a Search Based Approach to Concept Binding
One approach to supporting program comprehension involves
binding concepts to source code. Previously proposed
approaches to concept binding have enforced nonoverlapping
boundaries. However, real-world programs
may contain overlapping concepts. This paper presents
techniques to allow boundary overlap in the binding of
concepts to source code. In order to allow boundaries to
overlap, the concept binding problem is reformulated as a
search problem.
It is shown that the search space of overlapping concept
bindings is exponentially large, indicating the suitability of
sampling-based search algorithms. Hill climbing and genetic
algorithms are introduced for sampling the space. The
paper reports on experiments that apply these algorithms to
21 COBOL II programs taken from the commercial financial
services sector. The results show that the genetic algorithm
produces significantly better solutions than both the
hill climber and random search
06302 Abstracts Collection -- Aspects For Legacy Applications
From 26.07.06 to 29.07.06, the Dagstuhl Seminar 06302 ``Aspects For Legacy Applications\u27\u27 was held in the International Conference and Research Center (IBFI), Schloss Dagstuhl.
During the seminar, several participants presented their current
research, and ongoing work and open problems were discussed. Abstracts of
the presentations given during the seminar as well as abstracts of
seminar results and ideas are put together in this paper. The first section
describes the seminar topics and goals in general.
Links to extended abstracts or full papers are provided, if available
The Java system dependence graph
The Program Dependence Graph was introduced by Ottenstein and Ottenstein in 1984 [14]. It was suggested to be a suitable internal program representation for monolithic programs, for the purpose of carrying out certain software engineering operations such as slicing and the computation of program metrics. Since then, Horwitz et al. have introduced the multi-procedural equivalent System Dependence Graph [9]. Many authors have proposed object-oriented dependence graph construction approaches [11, 10, 20, 12]. Every approach provides its own benefits, some of which are language specific. This paper is based on Java and combines the most important benefits from a range of approaches. The result is a Java System Dependence Graph, which summarises the key benefits offered by different approaches and adapts them (if necessary) to the Java language
Potential programming plan and domain concept detection supported by slicing technique
Little has been written about the component provision problem (programming plans and domain concepts) for the repositories of knowledge in program understanding systems and reports that specifically address this issue are unknown. Model-driven and plan-driven approaches use repositories where construction and evolution are informal and depend on the experts. In domains where the expert is not available the only valid source of information is the source code. But, domain concept design and programming plans from the source code by non-expert professionals is not a trivial task.
In this paper, a hybrid top-down/bottom-up approach based on algorithmic pattern matching and slicing techniques has begun to be defined in order to provide plans or concepts (termed activities in the model-driven approaches) to the knowledge base. Initially, the exploration area is restricted by slicing techniques, and then, software inspection tools are used to further limit the relevant areas. Finally, the initially hypothesized pattern is matched with these segments.Eje: V - Workshop de agentes y sistemas inteligentesRed de Universidades con Carreras en Informática (RedUNCI
A Case Study in Matching Service Descriptions to Implementations in an Existing System
A number of companies are trying to migrate large monolithic software systems
to Service Oriented Architectures. A common approach to do this is to first
identify and describe desired services (i.e., create a model), and then to
locate portions of code within the existing system that implement the described
services. In this paper we describe a detailed case study we undertook to match
a model to an open-source business application. We describe the systematic
methodology we used, the results of the exercise, as well as several
observations that throw light on the nature of this problem. We also suggest
and validate heuristics that are likely to be useful in partially automating
the process of matching service descriptions to implementations.Comment: 20 pages, 19 pdf figure
- …