Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Rainer Koschke is active.

Publication


Featured researches published by Rainer Koschke.


Science of Computer Programming | 2009

Comparison and evaluation of code clone detection techniques and tools: A qualitative approach

Chanchal K. Roy; James R. Cordy; Rainer Koschke

Over the last decade many techniques and tools for software clone detection have been proposed. In this paper, we provide a qualitative comparison and evaluation of the current state-of-the-art in clone detection techniques and tools, and organize the large amount of information into a coherent conceptual framework. We begin with background concepts, a generic clone detection process and an overall taxonomy of current techniques and tools. We then classify, compare and evaluate the techniques and tools in two different dimensions. First, we classify and compare approaches based on a number of facets, each of which has a set of (possibly overlapping) attributes. Second, we qualitatively evaluate the classified techniques and tools with respect to a taxonomy of editing scenarios designed to model the creation of Type-1, Type-2, Type-3 and Type-4 clones. Finally, we provide examples of how one might use the results of this study to choose the most appropriate clone detection tool or technique in the context of a particular set of goals and constraints. The primary contributions of this paper are: (1) a schema for classifying clone detection techniques and tools and a classification of current clone detectors based on this schema, and (2) a taxonomy of editing scenarios that produce different clone types and a qualitative evaluation of current clone detectors based on this taxonomy.


IEEE Transactions on Software Engineering | 2007

Comparison and Evaluation of Clone Detection Tools

Stefan Bellon; Rainer Koschke; Giuliano Antoniol; Jens Krinke; Ettore Merlo

Many techniques for detecting duplicated source code (software clones) have been proposed in the past. However, it is not yet clear how these techniques compare in terms of recall and precision as well as space and time requirements. This paper presents an experiment that evaluates six clone detectors based on eight large C and Java programs (altogether almost 850 KLOC). Their clone candidates were evaluated by one of the authors as an independent third party. The selected techniques cover the whole spectrum of the state-of-the-art in clone detection. The techniques work on text, lexical and syntactic information, software metrics, and program dependency graphs.


working conference on reverse engineering | 2006

Clone Detection Using Abstract Syntax Suffix Trees

Rainer Koschke; Raimar Falke; Pierre Frenzel

Reusing software through copying and pasting is a continuous plague in software development despite the fact that it creates serious maintenance problems. Various techniques have been proposed to find duplicated redundant code (also known as software clones). A recent study has compared these techniques and shown that token-based clone detection based on suffix trees is extremely fast but yields clone candidates that are often no syntactic units. Current techniques based on abstract syntax trees-on the other hand-find syntactic clones but are considerably less efficient. This paper describes how we can make use of suffix trees to find clones in abstract syntax trees. This new approach is able to find syntactic clones in linear time and space. The paper reports the results of several large case studies in which we empirically compare the new technique to other techniques using the Bellon benchmark for clone detectors


international conference on software maintenance | 2002

Atomic architectural component recovery for program understanding and evolution

Rainer Koschke

Component recovery and remodularization is a means to get back control on large and complex legacy systems suffering from ad-hoc changes by recovering logical components and restructuring the physical components accordingly to decrease coupling among components and increase cohesion of components. This thesis is on unifying, quantitatively and qualitatively evaluating, improving, and integrating automatic and semi-automatic methods for component recovery.


international conference on software maintenance | 2001

Aiding program comprehension by static and dynamic feature analysis

Thomas Eisenbarth; Rainer Koschke; Daniel Simon

Understanding a systems implementation without prior knowledge is a hard task for reengineers in general. However, some degree of automatic aid is possible. The authors present a technique for building a mapping between the systems externally visible behavior and the relevant parts of the source code. The technique combines dynamic and static analyses to rapidly focus on the systems parts urgently required for a goal-directed process of program understanding.


conference on software maintenance and reengineering | 2009

Incremental Clone Detection

Nils Göde; Rainer Koschke

Finding, understanding and managing software clones - passages of duplicated source code - is of large interest in research and practice. There is an abundance of techniques to detect clones. However, all these techniques are limited to a single revision of a program. When the code changes, the analysis must be run again from scratch even though only small parts may have changed. In this paper, we present an incremental clone detection algorithm, which detects clones based on the results of the previous revisions analysis. Moreover, it creates a mapping between clones of one revision to the next, supplying information about the addition and deletion of clones. Our empirical results demonstrate that the incremental technique requires considerably less time than a non-incremental approach if the changes do not exceed a certain fraction of the source code. An incremental analysis is useful for on-the-fly detection and evolutionary clone analysis. On-the-fly detection may be integrated in an IDE and allows to re-run clone detection immediately when a programmer saves his changes or even while he/she is typing. In evolutionary clone analysis, many revisions of a system need to be analyzed in order to understand how clones evolve.


working ieee/ifip conference on software architecture | 2004

Symphony: view-driven software architecture reconstruction

A. Van Deursen; Christine Hofmeister; Rainer Koschke; Leon Moonen; Claudio de la Riva

Authentic descriptions of a software architecture are required as a reliable foundation for any but trivial changes to a system. Far too often, architecture descriptions of existing systems are out of sync with the implementation. If they are, they must be reconstructed. There are many existing techniques for reconstructing individual architecture views, but no information about how to select views for reconstruction, or about process aspects of architecture reconstruction in general. In this paper we describe view-driven process for reconstructing software architecture that fills this gap. To describe Symphony, we present and compare different case studies, thus serving a secondary goal of sharing real-life reconstruction experience. The Symphony process incorporates the state of the practice, where reconstruction is problem-driven and uses a rich set of architecture views. Symphony provides a common framework for reporting reconstruction experiences and for comparing reconstruction approaches. Finally, it is a vehicle for exposing and demarcating research problems in software architecture reconstruction.


international conference on software engineering | 2012

How do professional developers comprehend software

Tobias Roehm; Rebecca Tiarks; Rainer Koschke; Walid Maalej

Research in program comprehension has considerably evolved over the past two decades. However, only little is known about how developers practice program comprehension under time and project pressure, and which methods and tools proposed by researchers are used in industry. This paper reports on an observational study of 28 professional developers from seven companies, investigating how developers comprehend software. In particular we focus on the strategies followed, information needed, and tools used. We found that developers put themselves in the role of end users by inspecting user interfaces. They try to avoid program comprehension, and employ recurring, structured comprehension strategies depending on work context. Further, we found that standards and experience facilitate comprehension. Program comprehension was considered a subtask of other maintenance tasks rather than a task by itself. We also found that face-to-face communication is preferred to documentation. Overall, our results show a gap between program comprehension research and practice as we did not observe any use of state of the art comprehension tools and developers seem to be unaware of them. Our findings call for further careful analysis and for reconsidering research agendas.


working conference on reverse engineering | 2003

Hierarchical reflexion models

Rainer Koschke; Daniel Simon

The reflexion model originally proposed by Murphyand Notkin allows one to structurally validate a descriptiveor prescriptive architecture model against asource model.First, the entities in the source modelare mapped onto the architectural model, then discrepanciesbetween the architecture model and source modelare computed automatically.The original reflexion model allows an analyst tospecify only non-hierarchical models, whichis insufficient for larger systems that are decomposedinto hierarchical subsystems.This paper extends theoriginal reflexion model to hierarchical architecturemodels, describes a method to apply this technique, andreports on case studies conducted on two large-scale andcomplex applications (namely, the C compiler sdcc for8-bit microprocessors and the GNU C compiler gcc).


workshop on program comprehension | 2000

A framework for experimental evaluation of clustering techniques

Rainer Koschke; Thomas Eisenbarth

Experimental evaluation of clustering techniques for component recovery is necessary in order to analyze their strengths and weaknesses in comparison to other techniques. For comparable evaluations of automatic clustering techniques, a common reference corpus of freely available systems is needed for which the actual components are known. The reference corpus is used to measure recall and precision of automatic techniques. For this measurement, a standard scheme for comparing the components recovered by a clustering technique to components in the reference corpus is required. This paper describes both the process of setting up reference corpora and ways of measuring recall and precision of automatic clustering techniques. For methods with human intervention, controlled experiments should be conducted. This paper additionally proposes a controlled experiment as a standard for evaluating manual and semi-automatic component recovery methods that can be conducted cost-effectively.

Collaboration


Dive into the Rainer Koschke's collaboration.

Top Co-Authors

Avatar
Top Co-Authors

Avatar

Daniel Simon

University of Stuttgart

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Andrew Walenstein

University of Louisiana at Lafayette

View shared research outputs
Top Co-Authors

Avatar
Researchain Logo
Decentralizing Knowledge