8582728
Automatic Inference of Structural Changes for Matching across Program Versions
Mapping code elements in one version of a program to corresponding code elements in another version is a fundamental building block for many software engineering tools. Existing tools that match code elements or identify structural changes - refactorings and API changes - between two versions of a program have two limitations that we overcome. First, existing tools cannot easily disambiguate among many potential matches or refactoring candidates. Second, it is difficult to use these tools' results for various software engineering tasks due to an unstructured representation of results. To overcome these limitations, our approach represents structural changes as a set of high-level change rules, automatically infers likely change rules and determines method-level matches based on the rules. By applying our tool to several open source projects, we show that our tool identifies matches that are difficult to find using other approaches and produces more concise results than other approaches. Our representation can serve as a better basis for other software engineering tools.
12348020
Using a clone genealogy extractor for understanding and supporting evolution of code clones
Programmers often create similar code snippets or reuse existing code snippets by copying and pasting. Code clones---syntactically and semantically similar code snippets---can cause problems during software maintenance because programmers may need to locate code clones and change them consistently. In this work, we investigate (1) how code clones evolve, (2) how many code clones impose maintenance challenges, and (3) what kind of tool or engineering process would be useful for maintaining code clones.Based on a formal definition of clone evolution, we built a clone genealogy tool that automatically extracts the history of code clones from a source code repository (CVS). Our clone genealogy tool enables several analyses that reveal evolutionary characteristics of code clones. Our initial results suggest that aggressive refactoring may not be the best solution for all code clones; thus, we propose alternative tool solutions that assist in maintaining code clones using clone genealogy information.
1475409
An ethnographic study of copy and paste programming practices in OOPL
Although programmers frequently copy and paste code when they develop software, implications of common copy and paste (C&P) usage patterns have not been studied previously. We have conducted an ethnographic study in order to understand programmers' C&P programming practices and discover opportunities to assist common C&P usage patterns. We observed programmers using an instrumented Eclipse IDE and then analyzed why and how they use C&P operations. Based on our analysis, we constructed a taxonomy of C&P usage patterns. This paper presents our taxonomy of C&P usage patterns and discusses our insights with examples drawn from our observations. From our insights, we propose a set of tools that both can reduce software maintenance problems incurred by C&P and can better support the intents of commonly used C&P scenarios.
8963340
Understanding and Aiding Code Evolution by Inferring Change Patterns
Evolution continues to play an ever-increasing role in software engineering. Although changing a program is the core of software evolution, program change patterns have not been considered as a first class entity in most classic studies of software evolution. Past empirical studies of software evolution primarily relied on quantitative and statistical analyses of a program over time, but did not focus on semantic and qualitative change patterns of a program. We hypothesize that by treating change patterns as first class entities we can better understand software evolution and also aid programmers in changing software. Our goal is to infer clone evolution patterns from a set of program versions stored in a source code repository. We defined a set of common clone evolution patterns based on our insights from the copy and paste study.
7719896
A study of evolution in the presence of source-derived partial design representations
When performing evolution tasks, software engineers focus on both the low-level changes required and the effects those changes will have on the system's design. The Design Snippets Tool generates partial design representations intended to help engineers address one design criterion: ease of change. We describe a study in which participants used the Design Snippets Tool and other aids to perform a restructuring task focused on ease of change. Our findings describe how participants proceeded through the restructuring task and how they used the Design Snippets Tool. The results show that participants used the Design Snippets Tool for high-level tasks such as discovery of design problems, identification of restructuring goals, and confirmation of design improvements.
5981940
SoftGUESS: Visualization and Exploration of Code Clones in Context
We introduce SoftGUESS, a code clone exploration system. SoftGUESS is built on the more general GUESS system which provides users with a mechanism to interactively explore graph structures both through direct manipulation as well as a domain-specific language. We demonstrate SoftGUESS through a number of mini-applications to analyze evolutionary code-clone behavior in software systems. The mini-applications of SoftGUESS represent a novel way of looking at code-clones in the context of many system features. It is our hope that SoftGUESS will form the basis for other analysis tools in the software- engineering domain.
46306635
A Blind Watermarking for 3-D Dynamic Mesh Model Using Distribution of Temporal Wavelet Coefficients
In this paper, we present a watermarking method for 3-D mesh sequences with a fixed connectivity. The main idea is to transform each coordinate of vertex with the identical connectivity index along temporal axis using wavelet transform and modify the distribution of wavelet coefficients in temporally high (or middle)-frequency frames according to watermark bit to be embedded. Due to the use of the distribution, our method can retrieve the hidden watermark without any information about original mesh sequences in the process of watermark detection. To increase the watermark capacity, all vertices are divided into groups, namely bins, using the distribution of scaling coefficients in low-frequency frames. As the vertices with the identical connectivity index over whole frames belong to one bin, their wavelet coefficients are also assigned into the same bin. Then, the watermark is embedded into each axis of the wavelet coefficients. Through simulations we show that the proposed is fairly robust against various attacks that are probably concerned in copyright protection of 3-D mesh sequences.
45814871
A Multimedia Information System for Home Health-Care Support
The author describes Guardian, a knowledge based home health-care support system in the domain of childhood leukaemia. Guardian is part of a joint project between IBM Research and the New England Medical Center for building a prototype home-care system for children with leukaemia. The prototype system consists of a set of applications, including consultation and symptoms analysis, procedure guidance, emotional support, and communications, implemented in Smalltalk/OS2. This article focuses on the knowledge-based system, which helps parents better understand the symptoms or problems their child is experiencing and provides them with relevant therapeutic information.
7386649
Genetic Representations for Evolutionary Minimization of Network Coding Resources
We demonstrate how a genetic algorithm solves the problem of minimizing the resources used for network coding, subject to a throughput constraint, in a multicast scenario. A genetic algorithm avoids the computational complexity that makes the problem NP-hard and, for our experiments, greatly improves on sub-optimal solutions of established methods. We compare two different genotype encodings, which tradeoff search space size with fitness landscape, as well as the associated genetic operators. Our finding favors a smaller encoding despite its fewer intermediate solutions and demonstrates the impact of the modularity enforced by genetic operators on the performance of the algorithm.
8536996
Goal and scenario based domain requirements analysis environment
Identifying and representing domain requirements among products in a product family are crucial activities for a successful software reuse. The domain requirements should be not only identified based on the business goal, which drives marketing plan, product plan, and differences among products, but also represented as familiar notations in order to support developing a particular product in the product family. Thus, our proposal is to identify the domain requirements through goals and scenarios, and represent them as variable use cases for a product family. Especially, for identification of the domain requirements, we propose four abstraction levels of requirements in a product family, and goal and scenario modeling. For representation of them, variable use case model is suggested, and also the use case transfer rules are proposed so as to bridge the gap between the identification and representation activity. The paper illustrates the application of the approach within a supporting tool using the HIS (Home Integration System) example.
12043862
A method and tool support for variant requirements analysis: goal and scenario based approach
Identifying and representing variant requirements among products in a product family are crucial activities for a successful software reuse. The variant requirements should be not only identified based on the business goal, which drives marketing plan, product plan, and differences among products, but also represented as familiar notations in order to support developing a particular product in the product family. Thus, our proposal is to identify the variant requirements through goals and scenarios, and represent them as variable use cases for a product family. Especially, for identification of the variant requirements, we propose four abstraction levels of requirements in the product family, and goal and scenario modeling. For representation of them, variable use case model is suggested, and also the use case transfer rules are proposed so as to bridge the gap between the identification and representation activity. The paper illustrates the application of the approach within a supporting tool, namely DREAM (Domain REquirements Analysis Method) using the ATM example.