REVERSE ENGINEERING – RECENT ADVANCES AND APPLICATIONS Edited by Alexandru C. Telea Reverse Engineering – Recent Advances and Applications Edited by Alexandru C. Telea Published by InTech Janeza Trdine 9, 51000 Rijeka, Croatia Copyright © 2012 InTech All chapters are Open Access distributed under the Creative Commons Attribution 3.0 license, which allows users to download, copy and build upon published articles even for commercial purposes, as long as the author and publisher are properly credited, which ensures maximum dissemination and a wider impact of our publications. After this work has been published by InTech, authors have the right to republish it, in whole or part, in any publication of which they are the author, and to make other personal use of the work. Any republication, referencing or personal use of the work must explicitly identify the original source. As for readers, this license allows users to download, copy and build upon published chapters even for commercial purposes, as long as the author and publisher are properly credited, which ensures maximum dissemination and a wider impact of our publications. Notice Statements and opinions expressed in the chapters are these of the individual contributors and not necessarily those of the editors or publisher. No responsibility is accepted for the accuracy of information contained in the published chapters. The publisher assumes no responsibility for any damage or injury to persons or property arising out of the use of any materials, instructions, methods or ideas contained in the book. Publishing Process Manager Danijela Duric Technical Editor Teodora Smiljanic Cover Designer InTech Design Team First published February, 2012 Printed in Croatia A free online edition of this book is available at www.intechopen.com Additional hard copies can be obtained from orders@intechweb.org Reverse Engineering – Recent Advances and Applications, Edited by Alexandru C. Telea p. cm. ISBN 978-953-51-0158-1 Contents Preface IX Part 1 Software Reverse Engineering 1 Chapter 1 Software Reverse Engineering in the Domain of Complex Embedded Systems 3 Holger M. Kienle, Johan Kraft and Hausi A. Müller Chapter 2 GUIsurfer: A Reverse Engineering Framework for User Interface Software 31 José Creissac Campos, João Saraiva, Carlos Silva and João Carlos Silva Chapter 3 MDA-Based Reverse Engineering 55 Liliana Favre Chapter 4 Reverse Engineering Platform Independent Models from Business Software Applications 83 Rama Akkiraju, Tilak Mitra and Usha Thulasiram Chapter 5 Reverse Engineering the Peer to Peer Streaming Media System 95 Chunxi Li and Changjia Chen Part 2 Reverse Engineering Shapes 115 Chapter 6 Surface Reconstruction from Unorganized 3D Point Clouds 117 Patric Keller, Martin Hering-Bertram and Hans Hagen Chapter 7 A Systematic Approach for Geometrical and Dimensional Tolerancing in Reverse Engineering 133 George J. Kaisarlis Chapter 8 A Review on Shape Engineering and Design Parameterization in Reverse Engineering 161 Kuang-Hua Chang VI Contents Chapter 9 Integrating Reverse Engineering and Design for Manufacturing and Assembly in Products Redesigns: Results of Two Action Research Studies in Brazil 187 Carlos Henrique Pereira Mello, Carlos Eduardo Sanches da Silva, José Hamilton Chaves Gorgulho Junior, Fabrício Oliveira de Toledo, Filipe Natividade Guedes, Dóris Akemi Akagi and Amanda Fernandes Xavier Part 3 Reverse Engineering in Medical and Life Sciences 215 Chapter 10 Reverse Engineering Gene Regulatory Networks by Integrating Multi-Source Biological Data 217 Yuji Zhang, Habtom W. Ressom and Jean-Pierre A. Kocher Chapter 11 Reverse-Engineering the Robustness of Mammalian Lungs 243 Michael Mayo, Peter Pfeifer and Chen Hou Chapter 12 Reverse Engineering and FEM Analysis for Mechanical Strength Evaluation of Complete Dentures: A Case Study 163 A. Cernescu, C. Bortun and N. Faur Preface Introduction In the recent decades, the amount of data produced by scientific, engineering, and life science applications has increased with several orders of magnitude. In parallel with this development, the applications themselves have become increasingly complex in terms of functionality, structure, and behaviour. In the same time, development and production cycles of such applications exhibit a tendency of becoming increasingly shorter, due to factors such as market pressure and rapid evolution of supporting and enabling technologies. As a consequence, an increasing fraction of the cost of creating new applications and manufacturing processes shifts from the creation of new artifacts to the adaption of existing ones. A key component of this activity is the understanding of the design, operation, and behavior of existing manufactured artifacts, such as software code bases, hardware systems, and mechanical assemblies. For instance, in the software industry, it is estimated that maintenance costs exceed 80% of the total costs of a software product’s lifecycle, and software understanding accounts for as much as half of these maintenance costs. Reverse engineering encompasses the set of activities aiming at (re)discovering the functional, structural, and behavioral semantics of a given artifact, with the aim of leveraging this information for the efficient usage or adaption of that artifact, or the creation of related artifacts. Rediscovery of information is important in those cases when the original information is lost, unavailable, or cannot be efficiently processed within a given application context. Discovery of new information, on the other hand, is important when new application contexts aim at reusing information which is inherently present in the original artifact, but which was not made explicitly available for reuse at the time of creating that artifact. Reverse engineering has shown increasing potential in various application fields during the last decade, due to a number of technological factors. First, advances in data analysis and data mining algorithms, coupled with an increase of cheap computing power, has made it possible to extract increasingly complex information from raw data, and to structure this information in ways that make it effective for X Preface answering specific questions on the function, structure, and behavior of the artifact under study. Secondly, new data sources, such as 3D scanners, cell microarrays, and a large variety of sensors, has made new types of data sources available from which detailed insights about mechanical and living structures can be extracted. Given the above factors, reverse engineering applications, techniques, and tools have shown a strong development and diversification. However, in the same time, the types of questions asked by end users and stakeholders have become increasingly complex. For example, while a decade ago the reverse engineering of a software application would typically imply extracting the static structure of an isolated code base of tens of thousands of lines of code written in a single programming language, current software reverse engineering aims at extracting structural, behavioral, and evolutionary patterns from enterprise applications of millions of lines of code written in several programming languages, running on several machines, and developed by hundreds of individuals over many years. Similarly, reverse engineering the geometric and mechanical properties of physical shapes has evolved from the extraction of coarse surface models to the generation of part-whole descriptions of complex articulated shapes with the submillimeter accuracy required for manufacturing processes. This has fostered the creation of new reverse engineering techniques and tools. This book gives an overview of recent advances in reverse engineering techniques, tools, and application domains. The aim of the book is, on the one hand, to provide the reader with a comprehensive sample of the possibilities that reverse engineering currently offers in various application domains, and on the other hand to highlight the current research-level and practical challenges that reverse engineering techniques and tools are faced. Structure of this book To provide a broad view on reverse engineering, the book is divided into three parts: software reverse engineering, reverse engineering shapes, and reverse engineering in medical and life sciences. Each part contains several chapters covering applications, techniques, and tools for reverse engineering relevant to specific use-cases in the respective application domain. An overview of the structure of the book is given below. Part 1: Software Reverse Engineering In part 1, we look at reverse engineering the function, structure, and behavior of large software-intensive applications. The main business driver behind software reverse engineering is the increased effort and cost related to maintainting existing software applications and designing new applications that wish to reuse existing legacy software. As this cost increases, getting detailed information on the structure, run-time behavior, and quality attributes of existing software applications becomes highly valuable. In Chapter 1, Kienle et al. Give a comprehensive overview of reverse engineering tools and techniques applied to embedded software. Apart from detailing the various pro’s . REVERSE ENGINEERING – RECENT ADVANCES AND APPLICATIONS Edited by Alexandru C. Telea Reverse Engineering – Recent Advances and Applications Edited by Alexandru. reverse engineering, reverse engineering shapes, and reverse engineering in medical and life sciences. Each part contains several chapters covering applications, techniques, and tools for reverse. Reverse Engineering – Recent Advances and Applications, Edited by Alexandru C. Telea p. cm. ISBN 978-953-51-0158-1 Contents Preface IX Part 1 Software Reverse Engineering