Reverse Engineering Tools for Simplifying Programming ?· Reverse Engineering Tools for Simplifying…

Download Reverse Engineering Tools for Simplifying Programming ?· Reverse Engineering Tools for Simplifying…

Post on 01-Sep-2018

212 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

  • International Journal of Engineering Trends and Technology (IJETT) Volume 26 Number 2- August 2015

    ISSN: 2231-5381 http://www.ijettjournal.org Page 65

    Reverse Engineering Tools for Simplifying Programming

    Environment through Flowcharting

    Ms. Nivedita Tiwari1, Mr. Lalji Prasad

    2

    1 PG Student, Department of Computer Science Engineering, TCET, Indore, INDIA

    2 Professor, Department of Computer Science Engineering, TCET, Indore, INDIA

    Abstract Software developers use algorithms to

    communicate programming techniques. An algorithm

    is a step-by-step recipe for processing data. These

    algorithms can be designed though the use of

    flowcharts. A flowchart graphically represents the

    steps a program or set of programs takes to process

    data. Algorithms and flowcharts are two tools, a

    software developer uses when creating new programs.

    A major problem in software engineering is the lack of

    well-documented source code software applications.

    This paper proposes the flowcharting concept that

    recovers the limitations occurred in already existing

    tools for the flowchart generator from the source

    code. Furthermore, the ability of identifying basic

    programming problems from which syntactically

    correct program code and its corresponding flowchart

    are generated. We also add several advanced features

    in flowchart-based programming environments for

    improving the performance of existing flowcharting

    tools. Proposals for research on this field and

    opportunities for a better flowcharting tool for

    software engineering and Reverse Engineering are

    presented.

    Keywords Software Engineering, Reverse

    Engineering, Flowcharting Tool, Automatic

    generation of flow charts.

    I. INTRODUCTION

    Much of the study of computer science is dedicated to

    discovering efficient algorithms and representing them

    so that they can be understood by computers.

    According to the Schneider and Gersting 1995, An

    algorithm is a well-ordered collection of

    unambiguous and effectively computable operations

    that when executed, produces a result and halts in a

    finite amount of time [1]. While programming

    languages avoid the problems of being wordy and

    ambiguous, they have some other disadvantages that

    make them undesirable for writing algorithms.

    Before writing a complex program, a software

    developer usually plans it out by creating a flowchart.

    A flowchart shows different steps a program takes,

    using different shapes to describe the various actions

    the program carries out [7]. Flowcharts serve as

    important pieces of documentation for individual

    programs and for systems of programs in a larger

    system. Because a flowchart accurately summarizes a

    program's functions, and because it uses clear English

    and easy-to-understand, standard symbols, it takes

    much less effort to read it than it does the program

    itself [12]. If the program develops problems, a

    programmer may save time by checking the flowchart

    before examining the program. Though flowcharts are

    technically-oriented, non-technical users can easily

    follow them, making them useful documents for

    project management and auditing.

    In this paper, we choose two reverse engineering

    flowcharting tools on the basis of their capabilities and

    features that captures the functionality of the system

    and the design at an abstraction level that removes the

    need of language implementation. Our current

    research effort focuses on a analysis of these tools that

    will be useful in maintaining the consistency of design

    document with its code and for understanding large

    systems.

    The remainder of this paper is organized as follows. In

    the section 2 we describe the works that are previously

    done as literature survey. In the section 3 brief

    introduction to both tools are given; focus on the

    generation of flow charts from the source code.

    Section 4 describes the supporting languages. The

    main part of this paper is section 5 which will present

    the analysis of both tools that generate the flow chart

    through source code and benefits /shortcomings of

    both tools.

    II. LITERATURE SURVEY

    Flowcharts become a significant issue to explain

    different kinds of information based on figure types.

    In some documents, flowcharts are so important to

    illustrate a lot of details and make it easier to

    understand. Some of complex problems cannot be

    solved directly without explain these problems in

    flowcharts [3]. The most significant role of using

    flowcharts is in the designing part of projects. In many

    projects, methodology of structured design is one of

    primary steps to build entire system and solving

    engineering problems that can be explained by using

    flowcharts and other types of figures. In addition to

    previous points, using flowchart in design helps to

    divide problem into smaller parts and manage

    problems easily [2].

    Phillips et al. describe modern tools as highly

    interactive graphics intensive environments designed

    to support the development of computer based

    http://www.ijettjournal.org/http://courses.cs.vt.edu/~csonline/Algorithms/Lessons/DefinitionOfAlgorithm/Lesson.html#refshttp://courses.cs.vt.edu/~csonline/Algorithms/Lessons/DefinitionOfAlgorithm/Lesson.html#refs

  • International Journal of Engineering Trends and Technology (IJETT) Volume 26 Number 2- August 2015

    ISSN: 2231-5381 http://www.ijettjournal.org Page 66

    systems (Phillips et al., 1998). While the standard

    ISO 9126 regards software quality to consist of

    functionality, usability, reliability, efficiency,

    maintainability and portability (Brown,1994), Phillips

    et al. emphasise usability in particular [13]. They point

    to Apperley and Duncan, who noted that from the

    users point-of-view, for a modern application with a

    graphical user interface, the interface is the system.

    (Apperley and Duncan, 1994) So for a tool to be good,

    it should have a usable graphical user interface.

    Flowchart plays an important role in system analysis,

    preparatory design of algorithm and system

    maintenance aspects.. So, automatic generation of a

    flowchart from specific language code will be a very

    important practical significance, it allows the designer

    to design the system from high-level functions without

    concerning for complicated code [12]. Code visual to

    flow chart [4] can be used to introduce its flowcharts

    to Microsoft Office application including Visio. This

    tool shows how the flowchart and code relate to one

    another and is a useful indicator.

    According to the Andrew Scott [5], The use of the tool

    focuses on using flowcharts to develop visual

    solutions to basic programming problems from which

    syntactically correct program code is generated.

    According to Carlisle M, Wilson T, Humphries J and

    Hadfield M [9] Raptor is a tool for flow chart based

    visual programming Environments was expanded for

    the United State Air force Academy as introduction

    and computing course. It is an MS Windows based

    application. Westphal et al [11] define that without the

    use of diagrams or flow charts, it is difficult for

    beginners, even with pseudo code to communicate the

    flow of a program., While flowcharts are not well

    suited for large and complex programs.

    III. INFOMERCIAL FLOWCHARTING

    TOOLS

    In the field of reverse engineering, code visual to flowchart and Visutin [4, 8] are the most well known

    and commonly used infomercial flowcharting tools.

    Both tools are so powerful to support source code

    visualization of several programming languages such

    as: C, C++, C#, VB, Java, PL/ SQL and much more.

    But, they also share the some limitations.

    The underlying operational principle of both tools is

    identical. They rely on the system user to define the

    physical location of the target source code to analyse

    and visualize. However, they differ in the way they

    present their output and how they integrate with other

    external systems such as: VISIO and MS Word [4, 8].

    In that, Visustin seems to show more powerful

    integration with external systems.

    A. Code Visual to Flowchart

    This system is a commercial product, Code Visual to

    Flowchart (CVF) by Fatesoft. With the aim of aiding

    programmers understand and document source code,

    CVF converts program codes into flowcharts. The

    flowchart view auto up-dates representing the program

    visually as each line of code is entered into CVF text

    editor [4]. CVF presents its flowcharts and code side

    by side which are synchronized via highlighting.

    Clicking a line of code will cause a relevant flowchart

    component to highlight and vice versa. This shows

    how the flowchart and code relate to one another and

    is a useful indicator. CVF can be used to introduce its

    flowcharts to Microsoft Office application including

    Visio. So it is really a useful documentation tool.

    Code