15.02.2013 Views

reverse engineering – recent advances and applications - OpenLibra

reverse engineering – recent advances and applications - OpenLibra

reverse engineering – recent advances and applications - OpenLibra

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!