Building Reverse Engineering Tools with Software Components

Building Reverse Engineering Tools with Software Components

Building Reverse Engineering Tools with Software Components by Holger Michael Kienle Dipl.-Inf., University of Stuttgart, 1999 M.Sc., University of Massachusetts at Dartmouth, 1996 A Dissertation Submitted in Partial Fulfillment of the Requirements for the Degree of DOCTOR OF PHILOSOPHY in the Department of Computer Science c Holger Michael Kienle, 2006 University of Victoria All rights reserved. This dissertation may not be reproduced in whole or in part, by photocopying or other means, without the permission of the author. Supervisory Committee ii Building Reverse Engineering Tools with Software Components by Holger Michael Kienle Dipl.-Inf., University of Stuttgart, 1999 M.Sc., University of Massachusetts at Dartmouth, 1996 Supervisory Committee Dr. Hausi A. Muller,¨ (Department of Computer Science) Supervisor Dr. R. Nigel Horspool, (Department of Computer Science) Departmental Member Dr. Yvonne Coady, (Department of Computer Science) Departmental Member Dr. Issa Traore,´ (Department of Electrical & Computer Engineering) Outside Member Dr. Dennis B. Smith, (Carnegie Mellon Software Engineering Institute) External Examiner Abstract iii Supervisory Committee Dr. Hausi A. Muller,¨ (Department of Computer Science) Supervisor Dr. R. Nigel Horspool, (Department of Computer Science) Departmental Member Dr. Yvonne Coady, (Department of Computer Science) Departmental Member Dr. Issa Traore,´ (Department of Electrical & Computer Engineering) Outside Member Dr. Dennis B. Smith, (Carnegie Mellon Software Engineering Institute) External Examiner Abstract This dissertation explores a new approach to construct tools in the domain of reverse engi- neering. The approach uses already available software components—such as off-the-shelf components and integrated development environments—as building blocks, combining and customizing them programmatically to realize the desired functional and non-functional requirements. This approach can be characterized as component-based tool-building, as opposed to traditional tool-building, which typically develops most of the tool’s function- alities from scratch. The dissertation focuses on research tools that are constructed in a university or research lab (and then possibly evaluated in an industrial setting). Often the motivation to build a research tool is a proof-of-concept implementation. Tool-building is a necessary part of research—but it is a costly one. Traditional approaches to tool building have resulted in tools that have a high degree of custom code and exhibit little reuse. This approach offers the most flexibility, but can be costly and can result in highly idiosyncratic tools that are difficult to use. To compensate for the drawbacks of building tools from scratch, researchers have started to reuse existing functionality, leading towards an approach that leverages components as building blocks. However, this emerging approach is pursued in an ad hoc manner reminiscent of craftsmanship rather than professional engineering. The goal of this dissertation is to advance the current state of component-based tool- building towards a more disciplined, predictable approach. To achieve this goal, the disser- tation first summarizes and evaluates relevant tool-building experiences and case studies, and then distills these into practical advice in the form of lessons learned, and a process Abstract iv framework for tool builders to follow. The dissertation uniquely combines two areas, reverse engineering and software com- ponents. The former addresses the constructed tool’s application domain, the latter forms the foundation of the tool-building approach. Since this dissertation mostly focuses on tools for reverse engineering, a thorough understanding of this application domain is necessary to elicit its requirements. This is accomplished with an in-depth literature survey, which synthesizes five major requirements. The elicited requirements are used as a yardstick for the evaluation of component-based tools and the proposed process framework. There are diverse kinds of software components that can be leveraged for component-based tool building. However, not all of these components are suitable for the proposed tool-building approach. To characterize the kinds of applicable components, the dissertation introduces a taxonomy to classify components. The taxonomy also makes it possible to reason about characteristics of components and how these characteristics affect the construction of tools. This dissertation introduces a catalog of components that are applicable for the pro- posed tool-building approach in the reverse engineering domain. Furthermore, it provides a detailed account of several case studies that pursue component-based tool-building. Six of these case studies represent the author’s own tool-building experiences. They have been performed over a period of five years within the Adoption-Centric Reverse Engineering project at the University of Victoria. These case studies, along with relevant experiences reported by other researchers, constitute a body of valuable tool-building knowledge. This knowledge base provides the foundation for this dissertation’s two most important con- tributions. First, it distills the various experiences—the author’s as well as others—into ten lessons learned. The lessons cover important requirements for tools as uncovered by the literature survey. Addressing these requirements promises to result in better tools that are more likely to meet the needs of tool users. Second, the dissertation proposes a suit- able process framework for component-based tool development that can be instantiated by tool builders. The process framework encodes desirable properties of a process for tool- building, while providing the necessary flexibility to account for the variations of individual tool-building projects. Contents v Contents Supervisory Committee ii Abstract iii Contents v List of Tables ix List of Figures x Acknowledgments xii Dedication xiii 1 Introduction 1 1.1 Motivation . 1 1.2 Problem . 3 1.3 Approach . 4 1.4 Validation . 5 1.5 Outline . 5 2 Reverse Engineering 7 2.1 Background . 7 2.2 Process . 10 2.3 Tools . 12 2.3.1 Repository . 15 2.3.2 Extractors . 16 2.3.3 Analyzers . 18 2.3.4 Visualizers . 20 2.3.5 Tool Architecture . 22 2.4 Summary . 26 3 Requirements for Reverse Engineering 27 3.1 Requirements . 27 3.2 Requirements for Tools . 29 3.2.1 Scalability . 31 3.2.2 Interoperability . 38 3.2.3 Customizability . 46 3.2.4 Usability . 52 3.2.5 Adoptability . 58 3.2.6 Other Quality Attributes . 68 3.2.7 Functional Requirements . 71 Contents vi 3.2.8 Discussion . 80 3.2.9 Contributions . 81 3.3 Requirements for Tool Development Processes . 82 3.3.1 Feedback-Based . 84 3.3.2 Iterative . 86 3.3.3 Prototype-Based . 88 3.3.4 Other Requirements . 89 3.3.5 Discussion . 91 3.4 Research Approach to Identify Requirements . 92 3.5 Summary . 96 4 Software Components 97 4.1 Background . 97 4.1.1 Component Definitions . 98 4.1.2 Component Types . 99 4.1.3 Software Reuse . 106 4.1.4 Component Markets . 107 4.1.5 Product Lines . 108 4.1.6 Component-Based Software Engineering . 109 4.2 Component Taxonomy . 113 4.2.1 Origin . 114 4.2.2 Distribution Form . 114 4.2.3 Customization Mechanisms . 115 4.2.4 Interoperability Mechanisms . 118 4.2.5 Packaging . 121 4.2.6 Number of Components . 122 4.2.7 Other Taxonomies . 125 4.2.8 Discussion . 126 4.3 Summary . 127 5 Building Reverse Engineering Tools with Components 129 5.1 Characteristics of Targeted Components . 130 5.2 Catalog of Targeted Components . 137 5.2.1 Visualizer Host Components . 138 5.2.2 Extractor Host Components . 150 5.3 Sample Tool-Building Experiences . 156 5.3.1 Visual Design Editor . 157 5.3.2 Desert . 162 5.3.3 Galileo . 166 5.4 Discussion . 172 5.5 Summary . 174 Contents vii 6 Own Tool-Building Experiences 175 6.1 Rigi as Reference Tool . 177 6.2 REOffice . 178 6.2.1 Excel and PowerPoint . 179 6.2.2 REOffice Case Study . 181 6.2.3 Conclusions . 183 6.3 SVG Graph Editor . 184 6.3.1 SVG for Reverse Engineering . 184 6.3.2 SVG Integration in Rigi . 187 6.3.3 SVG Experiences . 190 6.3.4 Conclusions and Future Work . 192 6.4 REVisio . 192 6.4.1 Microsoft Visio . 193 6.4.2 REVisio Case Study . 194 6.4.3 Related Work . 198 6.4.4 Conclusion . 200 6.5 RENotes . 200 6.5.1 Background . 201 6.5.2 Rigi . 204 6.5.3 Lotus Notes/Domino . 204 6.5.4 RENotes Case Study . 206 6.5.5 Conclusions . 209 6.6 REGoLive . 211 6.6.1 Related Research Tools . 212 6.6.2 Adobe GoLive as a Host Product . 213 6.6.3 REGoLive Case Study . ..

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    360 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us