reverse engineering – recent advances and applications - OpenLibra
reverse engineering – recent advances and applications - OpenLibra
reverse engineering – recent advances and applications - OpenLibra
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Preface XI<br />
<strong>and</strong> con’s related to the applicability of existing <strong>reverse</strong> <strong>engineering</strong> technology to<br />
embedded software, they also discuss the specific challenges that embedded software<br />
poses to classical <strong>reverse</strong> <strong>engineering</strong>, <strong>and</strong> outline potential directions for improvement.<br />
In Chapter 2, Campos et al. Present an example of <strong>reverse</strong> <strong>engineering</strong> aimed at<br />
facilitating the development <strong>and</strong> maintenance of software <strong>applications</strong> that include a<br />
substantial user interface source code. Starting from the observation that<br />
underst<strong>and</strong>ing (<strong>and</strong> thus maintenance) of user interface code is highly challenging due<br />
to the typically non-modular structure of such code <strong>and</strong> its interactions with the<br />
remainder of the application, they present a technique <strong>and</strong> tool that is able to extract<br />
user interface behavioral models from the source code of Java <strong>applications</strong>, <strong>and</strong> show<br />
how these models can be used to reason about the application’s usability <strong>and</strong><br />
implementation quality.<br />
In Chapter 3, Favre presents a model-driven architecture approach aimed at<br />
supporting program underst<strong>and</strong>ing during the evolution <strong>and</strong> maintenance of large<br />
software systems <strong>and</strong> modernization of legacy systems. Using a combination of static<br />
<strong>and</strong> dynamic analysis, augmented with formal specification techniques, <strong>and</strong> a new<br />
metamodeling language, they show how platform-independent models can be<br />
extracted from object-oriented (Java) source code <strong>and</strong> refined up to the level that they<br />
can be reused in different development contexts.<br />
In Chapter 4, Rama et al. Show how platform-independent models can be extracted from<br />
large, complex business <strong>applications</strong>. Given that such <strong>applications</strong> are typically highly<br />
heterogeneous, e.g. involve several programming languages <strong>and</strong> systems interacting in a<br />
distributed manner, fine-grained <strong>reverse</strong> <strong>engineering</strong> as usually done for desktop or<br />
embedded <strong>applications</strong> may not be optimal. The proposed approach focuses on<br />
information at the service level. By reusing the platform-independent models extracted,<br />
the authors show how substantial cost savings can be done in the development of new<br />
<strong>applications</strong> on the IBM WebSphere <strong>and</strong> SAP NetWeaver platforms.<br />
In Chapter 5, Li et al. present a different aspect of software <strong>reverse</strong> <strong>engineering</strong>. Rather<br />
than aiming to recover information from source code, they analyze the behavior of<br />
several peer-to-peer (P2P) protocols, as implemented by current P2P <strong>applications</strong>. The<br />
aim is to <strong>reverse</strong> engineer the high-level behavior of such protocols, <strong>and</strong> how this<br />
behavior depends on various parameters such as user behavior <strong>and</strong> application<br />
settings, in order to optimize the protocols for video streaming purposes. As compared<br />
to the previous chapters, the target of <strong>reverse</strong> <strong>engineering</strong> is here the behavior of an<br />
entire set of distributed P2P <strong>applications</strong>, rather than the structure or behavior of a<br />
single program.<br />
Part 2: Reverse Engineering Shapes<br />
In part 2, our focus changes from software artifacts to physical shapes. Two main usecases<br />
are discussed here. First, methods <strong>and</strong> techniques for the <strong>reverse</strong>-<strong>engineering</strong> of