By Topic

Reverse Engineering, 2004. Proceedings. 11th Working Conference on

Date 8-12 Nov. 2004

Filter Results

Displaying Results 1 - 25 of 45
  • Proceedings. 11th Working Conference on Reverse Engineering

    Save to Project icon | Request Permissions | PDF file iconPDF (119 KB)  
    Freely Available from IEEE
  • 11th Working Conference on Reverse Engineering - Title Page

    Page(s): i - iii
    Save to Project icon | Request Permissions | PDF file iconPDF (40 KB)  
    Freely Available from IEEE
  • 11th Working Conference on Reverse Engineering - Copyright Page

    Page(s): iv
    Save to Project icon | Request Permissions | PDF file iconPDF (41 KB)  
    Freely Available from IEEE
  • 11th Working Conference on Reverse Engineering - Table of contents

    Page(s): v - vii
    Save to Project icon | Request Permissions | PDF file iconPDF (42 KB)  
    Freely Available from IEEE
  • Message from the Program Chairs

    Page(s): viii
    Save to Project icon | Request Permissions | PDF file iconPDF (26 KB)  
    Freely Available from IEEE
  • Committees

    Page(s): ix
    Save to Project icon | Request Permissions | PDF file iconPDF (25 KB)  
    Freely Available from IEEE
  • Virus analysis: techniques, tools, and research issues tutorial

    Save to Project icon | Request Permissions | Click to expandQuick Abstract | PDF file iconPDF (43 KB)  

    The tutorial covers techniques, tools, and research issues in analyzing computer viruses. It provides participants the background needed to initiate research in reverse engineering computer viruses. View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Full text access may be available. Click article title to sign in or learn about subscription options.
  • Full text access may be available. Click article title to sign in or learn about subscription options.
  • Experiences with an industrial long-term reengineering project

    Page(s): 8 - 16
    Save to Project icon | Request Permissions | Click to expandQuick Abstract | PDF file iconPDF (144 KB) |  | HTML iconHTML  

    We discuss the experiences gained in a large-scale industrial reengineering project. The subject system is a medical data management software that has been continuously developed and maintained for about twenty years. About four years ago, it has been decided to subsequently reimplement the entire system in Java, while continuing maintenance of the legacy system. The focus of This work is less on technical details concerning reverse engineering tools, but rather on the overall approach for reengineering a large and complex legacy system. Central issues are the identification and definition of a suitable software development process, training for the developers, as well as the ongoing reverse engineering of the existing system. The latter has been carried out in parallel to continuous maintenance of both the legacy system and the reimplementation. View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Reengineering reports

    Page(s): 17 - 26
    Save to Project icon | Request Permissions | Click to expandQuick Abstract | PDF file iconPDF (120 KB) |  | HTML iconHTML  

    This contribution to the subject of software reengineering is focused on the reengineering of legacy system reports. The object is to extract the contents of existing print files for the purpose of creating new system interface files in XML. These new XML files can then be used both for system testing and system integration. The XML Schema Language XSD and a subset of the XML Transformation Language XSLT are used as a basis for describing and processing the existing reports. The conversion tool Repo2XML was developed within the context of an IBM mainframe to MS-DotNet migration project at the Austrian Chamber of Commerce in Vienna. There, the main use of the converted XML files was to act as a test baseline for the XML reports produced by the new system. View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Using a decompiler for real-world source recovery

    Page(s): 27 - 36
    Save to Project icon | Request Permissions | Click to expandQuick Abstract | PDF file iconPDF (160 KB) |  | HTML iconHTML  

    Despite their 40 year history, native executable decompilers have found very limited practical application in commercial projects. The success of Java decompilers is well known, and a few decompilers perform well by recognising patterns from specific compilers. This work describes the experience gained from applying a native executable decompiler, assisted by a commercial disassembler and hand editing, to a real-world Windows-based application. The clients had source code for a prototype version of the program, and an executable that performed better, for which the source code was not available. The project was to recover the algorithm at the core of the program, and if time permitted, the recovery of other pieces of source code. Despite the difficulties, the core algorithm was successfully decompiled, and a portion of the rest of the program as well. There were surprises, including the ability to recover almost all original class names, and the complete class hierarchy. View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Toward seamless migration of Java AWT-based applications to personal wireless devices

    Page(s): 38 - 47
    Save to Project icon | Request Permissions | Click to expandQuick Abstract | PDF file iconPDF (376 KB) |  | HTML iconHTML  

    The spread of personal wireless devices (PWDs) has raised the need to port into this new environment existing (legacy) desktop applications. Unfortunately, these applications are often too large and resource demanding to be executed on devices with limited resources without changing existing code. Consequently, desktop applications should be decomposed in different components to distribute between a PWD and one or more servers. Although the refactoring could be performed by changing the code in order to use specific APIs for client/server computing, the changes could be tedious and time consuming. So, the paper presents an approach based on the thin client model implemented through a framework which enables the seamless migration of Java desktop applications to mobile devices with limited resources. View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • TUAnalyzer - analyzing templates in C++ code

    Page(s): 48 - 57
    Save to Project icon | Request Permissions | Click to expandQuick Abstract | PDF file iconPDF (144 KB) |  | HTML iconHTML  

    We present TUAnalyzer, a novel tool that extracts the template structure of C++ programs on the basis of the GNU C/C++ compiler's internal representation of a C/C++ translation unit. In comparison to other such tools, our tool is capable of supporting the extraction of function invocations that depend on the particular instantiation of C++ templates and to relate them to their particular template instantiation. TUAnalyzer produces RSF format output that can be easily fed into existing visualization and analysis tools such as Rigi or Graphviz. We motivate why this kind of template analysis information is essential to understand real-world legacy C++ applications. We present how our tool extracts this kind of information to allow others to build on our results and further use the template information. The applicability of our tool has been validated on real code as proof of concept. The results obtained with TUAnalyzer enable us and other approaches and tools to perform detailed studies of large (open source) C/C++ projects in the near future. View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Updating legacy databases through wrappers: data consistency management

    Page(s): 58 - 67
    Save to Project icon | Request Permissions | Click to expandQuick Abstract | PDF file iconPDF (288 KB) |  | HTML iconHTML  

    Wrapping databases allows them to be reused in earlier unforeseen contexts, such as Web-based applications or federated systems. Data wrappers, and more specifically updating wrappers (that not only access legacy data but also update them), can provide external clients of an existing (legacy) database with a neutral interface and augmented capabilities. For instance, a collection of COBOL files can be wrapped in order to allow external application programs to access them through a relational, object-oriented or XML interface, while providing referential integrity control. We explore the principles of a wrapper architecture that addresses the problems of legacy data consistency management. The transformational paradigm is used as a rigorous formalism to define schema mappings as well as to generate as much as possible of the code of the wrappers. The generation is supported by an operational CASE tool. View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • A novel software visualisation model to support software comprehension

    Page(s): 70 - 79
    Save to Project icon | Request Permissions | Click to expandQuick Abstract | PDF file iconPDF (280 KB) |  | HTML iconHTML  

    Current software visualisation tools do not address the full range of software comprehension requirements. This paper proposes a novel software visualisation model for supporting object-oriented software comprehension that is intended to address the shortcomings of existing tools. We discuss the previous work that prompted us to develop this model. An initial model is then presented, based on multiple levels of abstraction, multiple perspectives of the software system, and the integration of statically and dynamically extracted information. We review the evaluation tasks used in our previous work and those from the software visualisation and comprehension literature to produce a refined set of evaluation tasks. We then use these tasks to perform an initial assessment of the proposed model. The refined model is then defined more formally. Finally, a concrete example of the use of the model to generate abstraction hierarchies is discussed. We conclude that a visualisation model incorporating a hierarchy of interrelated abstraction levels, combined with structural and behavioural perspectives of the software, will provide effective support for software comprehension. View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Exploring software evolution using spectrographs

    Page(s): 80 - 89
    Save to Project icon | Request Permissions | Click to expandQuick Abstract | PDF file iconPDF (192 KB) |  | HTML iconHTML  

    Software systems become progressively more complex and difficult to maintain. To facilitate maintenance tasks, project managers and developers often turn to the evolution history of the system to recover various kinds of useful information, such as anomalous phenomena and lost design decisions. An informative visualization of the evolution history can help cope with this complexity by highlighting conspicuous evolution events using strong visual cues. We present a scalable visualization technique called evolution spectrographs (ESG). An evolution spectrograph portrays the evolution of a spectrum of components based on a particular property measurement. We describe several special-purpose spectrographs and discuss their use in understanding and supporting software evolution through the case studies of three large software systems (OpenSSH, KOffice and FreeBSD). View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • A reverse engineering approach to support software maintenance: version control knowledge extraction

    Page(s): 90 - 99
    Save to Project icon | Request Permissions | Click to expandQuick Abstract | PDF file iconPDF (256 KB) |  | HTML iconHTML  

    Most traditional reverse engineering tools focus on abstraction and analysis of source code, presenting a visual representation of the software architecture. This approach can be both helpful and cost effective in software maintenance tasks. However, where large software teams are concerned, with moderate levels of employee turnover, traditional reverse engineering tools can be inadequate. To address this issue, we examine the use of software process data, such as software artifact change history and developer activities. We propose the application of this data confers additional information developers need to better understand, maintain and develop software in large team settings. To explore this hypothesis, we evaluate the use of a tool, Xia, in the navigation of both software artifacts and their version history. This work introduces Xia, reveals the results of our evaluation and proposes directions for future research in this area. View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Insights into system-wide code duplication

    Page(s): 100 - 109
    Save to Project icon | Request Permissions | Click to expandQuick Abstract | PDF file iconPDF (936 KB) |  | HTML iconHTML  

    Duplication of code is a common phenomenon in the development and maintenance of large software systems. The detection and removal of duplicated code has become a standard activity during the refactoring phases of a software life-cycle. However, code duplication identification tends to produce large amounts of data making the understanding of the duplication situation as a whole difficult. Reengineers can easily lose sight of the forest for the trees. There is a need to support a qualitative analysis of the duplicated code. We propose a number of visualizations of duplicated source elements that support reengineers in answering questions, e.g., which parts of the system are connected by copied code or which parts of the system are copied the most. View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Aspect mining through the formal concept analysis of execution traces

    Page(s): 112 - 121
    Save to Project icon | Request Permissions | Click to expandQuick Abstract | PDF file iconPDF (432 KB) |  | HTML iconHTML  

    The presence of crosscutting concerns, i.e., functionalities 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 (tangling). Aspect oriented programming offers mechanisms to factor them out into a modular unit, called an aspect. Aspect identification 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 resulting lattice, potential aspects are detected by determining the use-case specific concepts and examining their specific computational units. When these come from multiple modules (classes) which contribute to multiple use-cases, a candidate aspect is recognized. View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Detecting implicit collaboration patterns

    Page(s): 122 - 131
    Save to Project icon | Request Permissions | Click to expandQuick Abstract | PDF file iconPDF (240 KB) |  | HTML iconHTML  

    A key problem during software development and maintenance is to detect and recognize recurring collaborations among software artifacts that are implicit in the code. These collaboration patterns are typically signs of applied idioms, conventions and design patterns during the development of the system, and may entail implicit contracts that should be respected during maintenance, but are not documented explicitly. We apply formal concept analysis to detect implicit collaboration patterns. Our approach generalizes Antoniol and Tonella one for detecting classical design patterns. We introduce a variation to their algorithm to reduce the computation time of the concepts, a language-independent approach for object-oriented languages, and a post-processing phase in which pattern candidates are filtered out. We identify collaboration patterns in the analyzed applications, match them against libraries of known design patterns, and establish relationships between detected patterns and their nearest neighbours. View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Identifying aspects using fan-in analysis

    Page(s): 132 - 141
    Save to Project icon | Request Permissions | Click to expandQuick Abstract | PDF file iconPDF (168 KB) |  | HTML iconHTML  

    The issues of code scattering and tangling, thus of achieving a better modularity for a system's concerns, are addressed by the paradigm of aspect orientation. Aspect mining is a reverse engineering process that aims at finding crosscutting concerns in existing systems. This work describes a technique based on determining methods that are called from many different places (and hence have a high fan-in) to identify candidate aspects in a number of open-source Java systems. The most interesting aspects identified are discussed in detail, which includes several concerns not previously discussed in the aspect-oriented literature. The results show that a significant number of aspects can be recognized using fan-in analysis, and that the technique is suitable for a high degree of automation. View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Refactoring - improving coupling and cohesion of existing code

    Page(s): 144 - 151
    Save to Project icon | Request Permissions | Click to expandQuick Abstract | PDF file iconPDF (120 KB) |  | HTML iconHTML  

    Refactorings are widely recognised as ways to improve the internal structure of object-oriented software while maintaining its external behaviour. Unfortunately, refactorings concentrate on the treatment of symptoms (the so called code-smells), thus improvements depend a lot on the skills of the maintained coupling and cohesion on the other hand are quality attributes which are generally recognized as being among the most likely quantifiable indicators for software maintainability. Therefore, this paper analyzes how refactorings manipulate coupling/cohesion characteristics, and how to identify refactoring opportunities that improve these characteristics. As such we provide practical guidelines for the optimal usage of refactoring in a software maintenance process. View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Loop squashing transformations for amorphous slicing

    Page(s): 152 - 160
    Save to Project icon | Request Permissions | Click to expandQuick Abstract | PDF file iconPDF (176 KB) |  | HTML iconHTML  

    Program slicing is a source code extraction technique that can be used to support reverse engineering by automatically extracting executable subprograms that preserve some aspect of the original program's semantics. Although minimal slices are not generally computable, safe approximate algorithms can be used to good effect. However, the precision of such slicing algorithms is a major factor in determining the value of slicing for reverse engineering. Amorphous slicing has been proposed as a way of reducing the size of a slice. Amorphous slices preserve the aspect of semantic interest, but not the syntax that denotes it, making them generally smaller than their syntactically restricted counterparts. Amorphous slicing is suitable for many reverse engineering applications, since reverse engineering typically abandons the existing syntax to facilitate structural improvements. Previous work on amorphous slicing has not attempted to exploit its potential to apply loop-squashing transformations. This paper presents an algorithm for amorphous slicing of loops, which identifies induction variables, transformation rule templates and iteration-determining compile-time expressions. The algorithm uses these to squash certain loops into conditional assignments. The paper also presents an inductive proof of the rule templates and illustrates the application of the algorithm with a detailed example of loop squashing. View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Imposing order on program statements to assist anti-virus scanners

    Page(s): 161 - 170
    Save to Project icon | Request Permissions | Click to expandQuick Abstract | PDF file iconPDF (208 KB) |  | HTML iconHTML  

    A metamorphic virus applies semantics preserving transformations on itself to create a different variant before propagation. Metamorphic computer viruses thwart current anti-virus technologies that use signatures - a fixed sequence of bytes from a sample of a virus - since two variants of a metamorphic virus may not share the same signature. A method to impose an order on the statements and components of expressions of a program is presented. The method, called a "zeroing transformation," reduces the number of possible variants of a program created by reordering statement, reshaping expression, and renaming variable. On a collection of C program used for evaluation, the zeroing transformation reduced the space of program variants due to statement reordering from 10183 to 1020. Further reduction can be expected by undoing other transformations. Anti-virus technologies may be improved by extracting signatures from zero form of a virus, and not the original version. View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.