Key word: Reverse Engineering, Rigi, Imagix 4D



Similar documents
An Evaluation of Reverse Engineering Tool Capabilities

Recovering Business Rules from Legacy Source Code for System Modernization

Columbus Reverse Engineering Tool and Schema for C++

REMOTE DEVELOPMENT OPTION

COCOVILA Compiler-Compiler for Visual Languages

Increasing Development Knowledge with EPFC

Visionet IT Modernization Empowering Change

An Open Framework for Reverse Engineering Graph Data Visualization. Alexandru C. Telea Eindhoven University of Technology The Netherlands.

Auditing UML Models. This booklet explains the Auditing feature of Enterprise Architect. Copyright Sparx Systems Pty Ltd

Rotorcraft Health Management System (RHMS)

An Architecture to Support Model Driven Software Visualization

Automating Requirements Management 1

NNMi120 Network Node Manager i Software 9.x Essentials

Modernized and Maintainable Code. Frank Weil, Ph.D. UniqueSoft, LLC

<Insert Picture Here> Oracle SQL Developer 3.0: Overview and New Features

Automated Modeling of Legacy Systems Using the UML

Software Analysis Visualization

Firewall Builder Architecture Overview

Embarcadero DB Change Manager 6.0 and DB Change Manager XE2

Ontario Ombudsman. Goals

Voluntary Product Accessibility Template Blackboard Learn Release 9.1 April 2014 (Published April 30, 2014)

Parsing Technology and its role in Legacy Modernization. A Metaware White Paper

A Visualization Method to Support Impacts Analysis in Program Understanding

XpoLog Center Suite Data Sheet

Component visualization methods for large legacy software in C/C++

SOFTWARE TESTING TRAINING COURSES CONTENTS

IBM Tivoli Composite Application Manager for WebSphere

Symphony: View-Driven Software Architecture Reconstruction

ER/Studio Enterprise Portal User Guide

USE OF PYTHON AS A SATELLITE OPERATIONS AND TESTING AUTOMATION LANGUAGE

Integrating TAU With Eclipse: A Performance Analysis System in an Integrated Development Environment

DATA WAREHOUSE CONCEPTS DATA WAREHOUSE DEFINITIONS

WHITE PAPER DATA GOVERNANCE ENTERPRISE MODEL MANAGEMENT

Fourth generation techniques (4GT)

MDA Overview OMG. Enterprise Architect UML 2 Case Tool by Sparx Systems by Sparx Systems

Analysis of the Specifics for a Business Rules Engine Based Projects

IBM Cognos Training: Course Brochure. Simpson Associates: SERVICE associates.co.uk

WebSphere Business Monitor

<Insert Picture Here> Introducing Data Modeling and Design with Oracle SQL Developer Data Modeler

Implementation Workflow

The Recipe for Sarbanes-Oxley Compliance using Microsoft s SharePoint 2010 platform

IFS-8000 V2.0 INFORMATION FUSION SYSTEM

VISUALIZATION APPROACH FOR SOFTWARE PROJECTS

Business Intelligence Tutorial

A Standards-Based Approach to Extracting Business Rules

A SoC design flow based on UML 2.0 and SystemC

MicroStrategy Course Catalog

Data Sheet VISUAL COBOL WHAT S NEW? COBOL JVM. Java Application Servers. Web Tools Platform PERFORMANCE. Web Services and JSP Tutorials

Axivion Bauhaus Suite Technical Factsheet

Service Oriented Architecture

A Comparative Study of Different Log Analyzer Tools to Analyze User Behaviors

DEVELOPMENT OF AN ANALYSIS AND REPORTING TOOL FOR ORACLE FORMS SOURCE CODES

Developing SOA solutions using IBM SOA Foundation

Teamcenter s manufacturing process management 8.3. Report Generator Guide. Publication Number PLM00064 E

Contents. Introduction and System Engineering 1. Introduction 2. Software Process and Methodology 16. System Engineering 53

Chapter 13: Program Development and Programming Languages

Requirements Management with Enterprise Architect

Managing Variability in Software Architectures 1 Felix Bachmann*

Vendor: Brio Software Product: Brio Performance Suite

Analytic Modeling in Python

InfoView User s Guide. BusinessObjects Enterprise XI Release 2

ENTERPRISE ARCHITECTUE OFFICE

Toad for Data Analysts, Tips n Tricks

PHP Code Design. The data structure of a relational database can be represented with a Data Model diagram, also called an Entity-Relation diagram.

Total Exploration & Production: Field Monitoring Case Study

ACCELRYS DISCOVERANT

Nesstar Server Nesstar WebView Version 3.5

Course 4 27 October Adrian Iftene adiftene@info.uaic.ro

Bachelor of Games and Virtual Worlds (Programming) Subject and Course Summaries

Using Enterprise Architect UML Modeling Tool

RTI v3.3 Lightweight Deep Diagnostics for LoadRunner

CHAPTER 20 TESING WEB APPLICATIONS. Overview

Oracle Data Integrator 11g: Integration and Administration

Software Re-Documentation Process and Tool

ANIMATION a system for animation scene and contents creation, retrieval and display

Software Development Kit

Model Driven Interoperability through Semantic Annotations using SoaML and ODM

CDC UNIFIED PROCESS PRACTICES GUIDE

JOURNAL OF OBJECT TECHNOLOGY

Development Best Practices

The Real Challenges of Configuration Management

Software Design. Design (I) Software Design Data Design. Relationships between the Analysis Model and the Design Model

Top 10 Oracle SQL Developer Tips and Tricks

tools that make every developer a quality expert

Concepts of Database Management Seventh Edition. Chapter 9 Database Management Approaches

HP Operations Agent for NonStop Software Improves the Management of Large and Cross-platform Enterprise Solutions

COGNOS 8 Business Intelligence

Transcription:

Volume 5. 5, August 2015 Study of Reverse Engineering and Assessment of RIGI and Imagix 4D 1. Jayanti Upadhyay #1, 2. Lalji Prasad #2 #1. Truba college of engineering,indore (M.P.), Dandia Bazar Vadodara,Gujrat,+91-9586800811,jayantirupad hyay @ gmail.com #2. Swamivivekanand,Indore, +91-9827661243,lalj i.reseach@ gmail.com ABSTRACT --------------------------------------------------------------------------------------------------------------------- In this paper we presented an overview of a Reverse engineering concept by studying different available reverse engineering tools. Paper consist a deep study and assessment of two very famous tool of this field that is RIGI and Imagix 4D. This assessment helped us to find out advantages and limitation of both tools. Key word: Reverse Engineering, Rigi, Imagix 4D 1. INTRODUCTION Reverse engineering concept came from the problem of legacy system. Legacy system migration encompasses many research areas. A single migration project could, quite legitimately, address the areas of reverse engineering, business re engineering, schema mapping and translation, data transformation, application development etc. Reverse engineering is the process of discovering the technological principles of device, object or system through analysis of its structure, function, and operation. Software Reverse engineering is one of the fields that allows developers and maintainers to do things easily and saves money and time both. The Reverse engineering tools help software engineers to analyzing and understanding a complex software system (fig 1.1). 54

Volume 5. 5, August 2015 Fig 1.1 Reverse and Forward Engineering Concept Reverse engineering is motivated by many things like Interfacing, Military or commercial purpose, to improve documentation short coming, obsolescence, software modernization, product security analysis, bug fixing, creation of unlicensed, unapproved, duplicated, academic or learning purpose, competitive technical intelligence, saving money. For performing reverse engineering on a system many tools are available in the market. In this paper we study reverse engineering concept and tools. After understanding Reverse engineering concept we assist some tools to understand the analyzing way of tool and study their results which help us to understand the system. The assessment of tool will help the developers to improve their mechanism of tools. 2. BRIEF INTRO OF DIFFERENT TOOLS The reverse engineering community has developed many reverse engineering tools including Bauhaus, Columbus, SNIFF++, Code Crawler, GUPRO, SolidX, Rigi, Defacto and IMAGIX 4D, Enterprise Architect, CPPX etc. We can categories tools on the basis of language, in which they can perform reverse engineering task. Importantly, most of these reverse engineering tools have similar software architecture, consisting of several components with standard functionalities: extractor, analyzer, visualizer, and repository. The extractor, analyzer, and visualizer components reflect the reverse engineering activities of extraction, analysis, and synthesis, respectively. [1] We study some famous reverse engineering tools each of which represent different category of reverse engineering tools: Bauhaus: Bauhaus offers a wide range of techniques: source code metrics, pointer analyses, side-effect analyses, data flow analyses, program slicing, code duplication techniques, static tracing, query techniques, source code navigation and visualization, object recovery, remodularization, architecture recovery techniques, Bauhaus lets you resolve the pointers statically through an automatic analysis. For large programs, it is very difficult to trace all the function calls and not to get lost. Bauhaus uncovers all side effects statically through an automatic analysis. Bauhaus analyze Uncover Side Effects, Control and Data Dependencies, Harmless pointers, Detect Code Clones, Measure Code Attributes, Lines-of-Code-per-Function Metric, Cyclomatic Complexity Metric, Nesting Metric, Detect Dead Functions, Find uninitialized variables, Static object tracing, Component mining.[3] Columbus: Columbus is able to analyze large C/C++ project sand to extract facts from them. Columbus is a frame work tool which supports project handling, data extraction, data representation, data storage, altering and visualization. All these basic tasks of the reverse engineering process are accomplished by performing. The parsing of the input source code via the C/C++ extractor plug-in of Columbus, which invokes a separate program called CAN (C++ Analyzer). CAN is a command line application for analyzing C/C++ code. This allows its integration into the user's make files and other configuration files, thus facilitating automated 55

Volume 5. 5, August 2015 execution in parallel with the regular software build process. In essence CAN accept one complete translation unit at a time (a preprocessed source file) and for files that are not preprocessed a preprocessor will be invoked. The actual results of CAN are the internal representation files, which are the binary saves of the internal representations built up by CAN during extraction. These files will be linked (merged together) by CANLink, the command line linker for CAN. CAN is able to instantiate templates at source level, which is accomplished using a two-pass technique in program analysis. The first pass only recognizes the language constructs in connection with the templates (like a "fuzzy" parser) and instantiates them. The second pass then performs the complete analysis of the source code and creates its internal representation. The C++ language processed by the analyzer meets the ISO/IEC standard of 1998 [4]. CAN supports the precompiled headers technique as well, which is widely used by compiler systems in order to decrease compilation time. This technique is efficient especially in case of large projects. The parser is fault-tolerant (it has the ability to parse incomplete, syntactically incorrect source code), which means that it can carry on with the analysis from the next parsable statement after the error. [4] Rigi: Rigi is an interactive, visual and public domain tool Developed in Rigi Research Project at the University of Victoria (Hausi A. Muller). It is designed to help you better understand and redocument your software. Rigi includes parsers to read the source code of the subject software and produce a graph of extracted artifacts such as procedures, variables, calls, and data accesses. To manage the complexity of the graph, an editor allows you to automatically or manually collapse related artifacts into subsystems. The first phase of the reverse engineering process, the extraction of software artifacts, is language-dependent and essentially involves parsing the source code and storing the artifacts in a repository. Rigi parsing system currently supports the programming languages C, COBOL, and a proprietary IBM system-programming language. It uses GRAS, a database specially designed to represent graph structures, as a central repository to store the parsed artifacts Brandes and Lewerentz, 1985. The software engineer can then manipulate the stored artifacts through an interactive graph editor. Initial resource flow graph generated by parsing system is static and unique [4].Rigi has a number of pre-defined models (e.g., for C and C++) and accompanying parsers that can extract information from the subject system and store this information in Rigi s exchange format. [5] Rigi's fact extractors target source code exclusively. Both the C (cparse) and Cobol (cobparse) parsers are based on Lex and Yacc. There is also a C++ parser (vacpp parse) that is built on top of IBM's Visual Age compiler. There are also fact extractors developed by other groups that support Rigi (e.g., Columbus's C/C++ parser and SHriMP's Java extractor).[5] Imagix 4D: Imagix 4D developed to provide a solution for C, C++ and Java developers, It helps you reverse engineer software that is large, complex, unfamiliar or old, by automating the 56

Volume 5. 5, August 2015 analysis and browsing of your code. You're able to achieve faster and more accurate program understanding by more readable representation generated by the tool. This resulting in fewer software defects while requiring less investment of precious engineering resources in development process. Tool presents this key information on software in a 3D-graphical format which enables the user to quickly focus on particular areas of interest. [2] Imagix 4D, like Refine/C, provides an excellent parser and the generation of projects is well supported by the tool (e.g. project definition by file, directory, makefile, reparse and incremental parsing, etc.). The tool has a good user interface and is easy to use. The context sensitive online help and the tutorials contributed to make the learning curve a lot steeper than in the other tools. It provides the most number of views of all the evaluated tools and it owns the best set of supporting capabilities (e.g. search engine, integrated editor with highlighting and great browsing capabilities, etc.). The generated views were sometimes too big and complex to be of real use, but because of a lot of capabilities to manipulate them (e.g. filters, scopes, groups, etc.) they could be well tailored to the task or problem at hand. Additionally the views could be saved during a session to be used for further reference or to be the starting point for a new view (the views can be used to save selections). Especially the queries for the source code that are provided proved very useful (e.g. to comprehend the program faster). Another capability that is only provided by Imagix 4D is the automatic generation of documentation from the source code. It allows generating HTML documentation which can then be browsed. Document generation is not so rich in Imagix 4D. What is also provided by Imagix 4D is the import of additional data sources (graph profile data - gprof and test coverage data - tcov) that can then be related to the views (e.g. to show the test coverage results in a call graph). Two major capabilities that are missing are a way to extend the tool and to generate graphical views that are also useful in printed form. [2] Imagix 4D tool has a powerful parsing capability including documentation generation. Enterprise Architect: EA is a scalable, multi-user, visual tool with a rich feature set. Enterprise Architect provides reverse engineering support for a number of popular programming languages. However, if the language you are using is not supported, you can write your own grammar for it, using the in-built Grammar Editor. You can then incorporate the grammar into an MDG technology to provide both reverse engineering and code synchronization support for your target language. Enterprise Architect uses a variation of Backus Naur Form (nbnf) to include processing instructions, the execution of which returns structured information from the parsed results in the form of an Abstract Syntax Tree (AST), which is used to generate a UML representation.[7] 3. ASSESSMENT CRITERIA Assessments or an evaluation needs criteria or parameters on which we can perform this task. While doing literature survey we found some authors defined criteria for the assessment of the 57

Volume 5. 5, August 2015 reverse engineering tool. We took Berndt Bellay and Harald Galldefined criteria for our assessment work which is the best suitable for our Aim. [Berndt Bellay and Harald Galldefined] A set of assessment criteria in four main categories: analysis, representation, editing/browsing and general capabilities to evaluate the capabilities of the above four tools [Bellay and Gall, 1998]. Analysis: The parser is the core subsystem of every reverse engineering tool. The results of the parsed source code, i.e. the representation from which all the views are created, depends on the abilities of the parser. Parts of the source code that are not parsed or parsed incorrectly will affect all the generated views. [2] So in these criteria we talked about the parser ability to parse the source code. Representation or Import /Export: The capability of importing existing projects and exporting to various formats of presentation. [2] Representations are divided into textual and graphical reports, and properties of these reports, and are assessed based on their usability [2] Textual (tabular, formatted, etc.): This provides a list with different textual reports, which are evaluated for each tool on their usability and completeness. Graphical (2-, 3-dimensional): This provides a list with different graphical reports, which are evaluated for each tool on their usability and completeness. Editing/browsing: The editing/browsing capabilities are essential because the user often switches the abstraction level from the generated views to the actual source code. The text editor/browser should therefore provide means to facilitate browsing the source code. [2] General capabilities: General capabilities span a wide range from supported platforms to online-help. User interface, extensibility, storing capability, multi-user support, among other things [2] 4. DETAILED STUDY OF IMAGIX 4D BASED ON CRITERIA We already mentioned basic assessment criteria categories for the reverse engineering tools. This section contains the assessment of the four tools Based on the definition of the criteria. 4.3.1 Analysis Rigi: The first phase of the reverse engineering process, the extraction of software artifacts, is language-dependent and essentially involves parsing the source code and storing the artifacts in a repository. Rigi parsing system currently supports the programming languages C, COBOL, and a proprietary IBM system-programming language. It uses GRAS, a database specially designed to represent graph structures, as a central repository to store the parsed artifacts Brandes and Lewerentz, 1985. The software engineer can then manipulate the stored artifacts through an interactive graph editor. Initial resource flow graph generated by parsing system is static and unique [4].Rigi has a number of pre-defined models (e.g., for C and C++) and accompanying parsers that can extract information from the subject system and store this information in Rigi s exchange format. [5] 58

Volume 5. 5, August 2015 Rigi's fact extractors target source code exclusively. Both the C (cparse) and COBOL (cobparse) parsers are based on Lex and Yacc. There is also a C++ parser (vacpp parse) that is built on top of IBM's Visual Age compiler. There are also fact extractors developed by other groups that support Rigi (e.g., Columbus's C/C++ parser and SHriMP's Java extractor).[5] Imagix 4D: Imagix 4D, like Refine/C, provides an excellent parser and the generation of projects is well supported by the tool (e.g. project definition by file, directory, makefile, reparse and incremental parsing, etc.). The tool has a good user interface and is easy to use. The context sensitive online help and the tutorials contributed to make the learning curve a lot steeper than in the other tools. It provides the most number of views of all the evaluated tools and it owns the best set of supporting capabilities (e.g. search engine, integrated editor with highlighting and great browsing capabilities, etc.). The generated views were sometimes too big and complex to be of real use, but because of a lot of capabilities to manipulate them (e.g. filters, scopes, groups, etc.) they could be well tailored to the task or problem at hand. Additionally the views could be saved during a session to be used for further reference or to be the starting point for a new view (the views can be used to save selections). Especially the queries for the source code that are provided proved very useful (e.g. to comprehend the program faster). Another capability that is only provided by Imagix 4D is the automatic generation of documentation from the source code: It allows generating HTML documentation which can then be browsed. Document generation is not so rich in Imagix 4D. What is also only provided by Imagix 4D is the import of additional data sources (graph profile data - gprof and test coverage data - tcov) that can then be related to the views (e.g. to show the test coverage results in a call graph).two major capabilities that are missing are a way to extend the tool and to generate graphical views that are also useful in printed form. [2] Imagix 4D tool has a powerful parsing capability including documentation generation. 4.3.2 Representation Rigi: In any reverse engineering process to analyzing large amounts of source code is firstly identify system abstractions and, in particular, to determine and recover overall structure and architectural design respectively. These subsystem composition facilities and measures supported by the Rigi systems can be used to summarize, analyze and optimize software structures such as call graphs, data dependency graphs, module graphs, include dependency graphs, and directory hierarchies. Rigi environment works on layered structure so it helps to discover, compose, explore, visualize, and analyze layered subsystem structure. [4] Rigi defines the Rigi Standard Format (RSF), which has been adopted by a number of other tools as well. RSF has inspired other tuple -based formats such as Holt s Tuple Attribute language (TA). Rigi s graph model was also inspirational for the Graph Exchange Language (GXL). [13] Imagix 4D: Imagix 4D has a good user interface and provides views to rapidly check and systematically study software at any level of abstraction ranging from high-level design to the 59

Volume 5. 5, August 2015 details of its build, class, and function dependencies. Window allows reverse engineer to visualize extracted facts in the form of charts and graphs. Imagix 4D supports both 2D and 3D representation. Imagix 4D 3D-graphical format enables the user to quickly focus on particular areas of interest. By using three dimensions the graph does not get that broad. Using the rotate and zoom functions the graph can be viewed from all sides and the entities can be identified. The disadvantage of this smaller graph is that highly connected graphs get complicated and unreadable. [2] 4.3.3 Editing/Browsing Rigi: Rigi has a visualizer that enables the reverse engineer to view the extracted information from the subject system as a directed graph. The core of Rigi is a graph editor named as Rigiedit placed in Rigi s bin. In this graph window entities are represented as nodes and relationships as arcs between two nodes. This graph can be iteratively explored and interactively manipulated by the reverse engineer by some provided functionalities like zooming, lay outing, filtering, and summarizing. The visualizer has a multi-window approach. This multi window visualizer allows the reverse engineer to create different views of the graph. These views are synchronized; for example, selecting a certain node in one view also selects the node in all the other views [5]. This synchronization allows viewer to concentrate on a particular part of system in every abstracted views. It uses a colorful, interactive, graphical interface, shorting the learning curve, and making the user more productive in less time. Imagix 4D: The graphs can either be viewed top-down or bottom-up and the views are layered according to this selection. All entities viewed in the graph are also shown in context to the files and directories in the text window. The graph can be manipulated by hiding or isolating selections made and also by grouping of the selected entities to one entity. This grouping function is very useful because functional groups can be combined to one entity and can then be observed in interaction with the rest of the graph. Another advantage is that such groupings help to make the graph smaller and more understandable. In contrast to Rigi, Imagix 4D does not provide layered views based on these groupings and these groupings cannot be saved between sessions. Selections can be made in any of the views and then used to limit the scope in the next created view (e.g. selecting a C files in the file view and hiding it creates a call graph without the functions in this file). 4.3.4 General Capabilities Rigi: Rigi is very flexible because Rigi s feature of extensibility does not limit you by using only fixed array of data gathering, organization, analysis, and presentation techniques. Rigi s approach to reverse engineering is based on end-user-programming. Rigi runs on several platforms. Supported platforms are windows 98, 2000, NT and xp, Linux 2.0 System (ix86), IBM AIX 4 System, SunOS 4 System, Solaris. Output capability of rigi is good it also provide 60

Volume 5. 5, August 2015 facility to save graphs and views to see them again and again as per needed without parsing the source code again. This functionality saves the time of analyst. Search capability. Rigi provide online help via rigi s website other then this tool doesn t provide any user guide tour but it provides demo with the explanation of the generated graphs.[6][9] Imagix 4D: once u export project in Imagix 4D, the tool store all information about your project in its database. This shows a powerful storing capability of the tools. Tool supports multiple platforms HP-UX, Linux, Solaris, and Windows XP/Vista/Win7/Win8. Output capability, file index, graph window and other tabs make searching easy. Other then online help tool provides user guidance, tour and help window for the new user. History of browser [6][8] 5. CONCLUSION Reverse engineering is very popular area of research. Most of the organizations take interest in this field only because it provides assistance to save time, manpower and money. To encapsulate what we have covered in this study on the basis of assessment criteria, we summarize our assessment result bellow. In result we mainly focused on the graphical representation. [7] Table1. Conclusion of Assessment Rigi Imagix 4D Analysis(Parser) Good Good Representation: Gives information about node, Textual: Report interface like de name, node type, and about incoming and outgoing arc and, window statistic, cyclomatic complexity. Graphical: Call graph Control flow graph Data flow graph Entity Relationship Diagram Data structure diagram State Transition graph System Architecture Other Diagram Yes Forward, Reverse Tree, Overview Of Subsystem, Neighbor, children and parent information Editing/Browsing t attractive, use node for representation and shrimp General Capabilities Acceptable Good Yes Yes Yes Collaboration, Class, Function call, file call. Very good and Easy 61

Volume 5. 5, August 2015 As we see the table to the left, Imagix 4D found more powerful tool then Rigi. But some time it s easy to understand system via Rigi. Imagix 4D have rich environment then rigi and also satisfies more assessment criteria then Rigi. But both the tool has limitations like some handmade diagram is not same as generated diagrams. We studied two tools to understand the concept of reverse engineering and finding the best tool of them. We know the reverse engineering tools are used to understand complex software system by analyzing the source code. Source code gives up to date information. So that we can also have information about the changes performed on system but somehow missed in documentation. Our study on Rigi and Imagix 4D reverse engineering tool gave us a good knowledge of reverse engineering and also helps to understand how to prepare reverse engineering documents. As we studied we found that Imagix is more understanding and easy use tool then Rigi. Most of the limitations of Rigi are removed by Imagix 4D. But in other hand Imagix 4D also has some limitations. 6. REFERANCES 1. HOLGER M. KIENLE, HAUSI A. MU LLER: The Tools Perspective on Software Reverse Engineering: Requirements, Construction, and Evaluation 2. An Evaluation of reverse engineering tool capabilities BERNDT BELLAY and HARALD GALL(1998) 3. Bauhaus toolkit guide tour, www.buhaus-stuttgart.de 4. A Reverse Engineering Approach to Subsystem Structure Identification HAUSI A. MULLER 5. Rigi-An environment for software reverse engineering, exploration, visualization, and Re documentation Holger M.Kienle, Hausi A. Müller 6. Tools (Bauhaus, Columbus, Rigi, Imagix 4D, Enterprise Architect) Interface 7. www.sparxsystems.com 8. www.imagix4d.com 9. www.rigi.csc.uvic.ca 62