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 Visual to Flow chart is designed to visualize

    procedural code of any complexity. Code Visual to

    Flow Chart works even with true spaghetti code and

    unstructured jumps. It works best with executable

    code, but it can also consume non-executable

    declarations. For the best results, consider removing

    the non-procedural parts, as they sometimes result in

    clutter in the diagram. You can visualize an entire

    source code file, a single class, a single procedure or

    just a part of it.

    If the code is long and the flow chart large, it often

    makes sense to remove some code and focus on the

    crucial points of the algorithm. Code Visual to Flow

    Chart works at the statement level. It doesnt care

    about the internal parts of complex statements, such as

    the Booleans (and , or, &&, ||) in an if statement.

    By using Code Visual to Flow Chart Converter,

    programmers can easy access to get project overview,

    during the process of programming, programmers can

    preview their changed code structures at all times.

    Categories to generate flow chart in CVF:

    1. Generate flow chart for all code. 2. Generate flow chart without Comment. 3. Generate flow chart for only comment. 4. Generate flow chart for small graphic. 5. Generate flow chart for big graphic.

    Two types of flow chart is generated;

    1. Represent all codes in the program i.e., flow chart-1[1-3].

    2. Represent only terminologies used in the program i.e., flow chart-2[3-4]

    Individual flow chart can be drawn for larger

    programs. Division of flow chart according to

    following category:

    1. Class: It describes the main program. 2. Function: It describe the following in the

    Program

    Function

    Procedure

    http://www.ijettjournal.org/

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

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

    Constructor

    Destructor

    For Export flow chart to:

    Image only support BMP and PNG format.

    Word, Excel, Power Point it support MS Word, MS Excel, MS Power Point-

    2000/2002/2003.

    Figure 1: CVF Application Window

    6.2.2 Visustin V7 Flow Chart Generator

    Aivosto has released Visustin v7, an

    automated flowcharting program. Visustin is a flow

    chart generator that converts source code to flow

    charts. The new Visustin v7 creates flow charts

    from 43 programming languages .Flow chart software

    to reverse engineer code, view flow diagrams, create

    Visio flow charts, debug ,understand and improve

    algorithms[8]. Flow charts show the logic in the code:

    the decisions taken, the loops iterated.

    The most accurate documentation of any software

    application is its source code. Understanding source

    code is notoriously difficult, however. Interpreting

    source code requires in-depth knowledge of

    programming. Reading raw code is prone to errors

    even when done by expert developers. This is where

    flow charts come to help. Flow charts display code in

    a natural diagram format. They convey all the

    information in the source code in a human-friendly

    visual way. Flow charts are a super-fast method to see

    the logic in a piece of code. They are an extremely

    powerful tool for understanding what a program really

    does.

    A program performs its logic with decisions, that is

    conditional statements such as "if" and "else". In a

    flow chart these decision points are instantly visible.

    Each decision diamond clearly displays the conditions

    of the decision. It's easy to follow the alternative paths

    running from each decision forward. Understanding

    the decisions plays a key role in understanding what a

    program does.

    V7 works both interactively and bulk mode. When

    using it interactively, you just load your code and

    immediately view it as a flow chart. Flow charts are a

    helpful tool in software development, maintenance

    and evolution. They can be used in new development,

    restructuring and re- engineering various projects.

    Figure 2: V7 Application Window

    IV. REVIEW OF SUPPORTING

    PROGRAMMING ENVIRONMENTS

    A program is a set of instructions that tells a computer

    what to do in order to come up with a solution to a

    particular problem. Programs are written in a language

    that computers can understand, known as

    programming language. Each programming language

    has its own syntax, which consists of a set of rules that

    dictate how words and symbols can be put together to

    form a program. There are hundreds of different

    programming languages, each with their own logic

    and syntax. Visustin and code visual to flowchart

    both tools generates flow charts from code written in

    any of C, C++, C#, Java, PL/SQL, JSP ,PHP and

    many more programming languages. Some of the

    language description stated below:

    1) C/C++

    C is a general purpose programming language with a

    long history. C is used for many different types of

    software, but it is particularly popular for system

    software, such as operating systems, device drivers

    and telecommunications applications. C is widely used

    because it runs very fast. It can also access a computer

    system's low level functions; this means it is closer to

    the hardware than some other programming

    http://www.ijettjournal.org/

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

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

    languages. C has become an official standard of the

    American National Standards Institute, or ANSI.

    Many other programming languages borrow syntax

    from C.

    C++ is a high-level programming language that builds

    on its predecessor C by adding object-oriented

    features to it. C++ is very versatile and can be used for

    many different applications. C++ is also an official

    ANSI standard. C++ is used widely for applications

    that rely more heavily on a graphical user interface, or

    GUI. For example, many utility programs and device

    drivers are written in C, while applications software

    wit...

Recommended

View more >