reverse engineering tools for simplifying programming...

7

Click here to load reader

Upload: dohanh

Post on 01-Sep-2018

212 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Reverse Engineering Tools for Simplifying Programming …ijettjournal.org/2015/volume-26/number-2/IJETT-V26P212.pdf · Reverse Engineering Tools for Simplifying Programming Environment

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

Page 2: Reverse Engineering Tools for Simplifying Programming …ijettjournal.org/2015/volume-26/number-2/IJETT-V26P212.pdf · Reverse Engineering Tools for Simplifying Programming Environment

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

user’s 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 doesn’t 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

Page 3: Reverse Engineering Tools for Simplifying Programming …ijettjournal.org/2015/volume-26/number-2/IJETT-V26P212.pdf · Reverse Engineering Tools for Simplifying Programming Environment

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

Page 4: Reverse Engineering Tools for Simplifying Programming …ijettjournal.org/2015/volume-26/number-2/IJETT-V26P212.pdf · Reverse Engineering Tools for Simplifying Programming Environment

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

with many user dialogs are written in C++ [15]. The

name C++ represents the evolution of the C language

because the two plus symbols represent the increment

operator in C. C support covers ANSI C and ISO C99.

C++ support covers C++98 and Microsoft Visual C++

extensions. Microsoft support is current up to Visual

C++ 2010. C++/CLI is supported. Visustin fully

supports C/C++ digraph and trigraph sequences: <%

%> <: :> %: %:%: ??= ??/ ??' ??( ??)

??! ??< ??> ??- Inlined assembler instructions

need to be charted separately. To flowchart assembly

language code embedded in C/C++ files, process it

in assembler mode.

2) JAVA

Java is Oracle’s object-oriented programming

language. One of the main advantages of Java is the

“Write Once Run Anywhere” concept, allowing for

Java programs to be ported to any platform that has

JVM support (in theory, if not always in practice).

There are a variety of IDEs that support Java, such as

NetBeans which has a GUI builder for the Swing

toolkit or Eclipse which has a rich variety of plugins

to support testing, version control and GUI building

[14].

V. COMPARATIVE ANALYSIS AND

DISCUSSION

Unfortunately, both tools concentrate on flowcharting

program visualization and ignore the other useful

diagrams .

TABLE 1: COMPARISON OF TOOLS

ATTRIBUTES CVF

TOOL[4]

V7 TOOL[8]

Output

Generation

Two flow charts

are generated for

a program for

supported

languages.

The single flow

chart is

generated for a

program for

supported

languages.

Main Function Main method Support Function

Declaration defined in

function (In C

programming).

& Main Method

defined in

procedure (In

JAVA

programming).

and Procedure

Call.

Concept of Classes No concept of

classes is

defined. Does

not show the

class in the

output.

Always show the

class in the

output. Flow

chart the each

and every line of

source code.

Symbol Used Notations are

different to V7 to

flow chart a

same program.

Notations are

different to CVF

tool to flow chart

a same program.

Always use the

decision symbol

for conditions in

the program.

Show the class in

the output.

Synchronization

Between Source

Code and Flow

Chart

Synchronization

between the code

and flowchart.

No

Synchronization

between the code

and flowchart

and vice versa.

Highlighting It provides. It does not.

Identification of

Language

Does not

Identify.

Does not

Identify.

LIMITATIONS OF CVF/V7 TOOL

This does not really minimize the overhead of syntax.

So the programming activity does not really focus on

problem solving. This code allows the flowchart to

program visualization, reducing poor programming

habits and removing of programs without careful

selection. Its inability to construct programs via

flowcharts, its lack of execution features and its lack

of syntax error checking leaves CVF as a poor tool. It

cannot provide a model of execution promotes a poor

image to programming and fails to solve syntactic

overheads of programs [4]. It is thus unsuitable for

novices. Numerous syntax is unsupported or only

limited support is provided. The chart may display a

normal statement, not a branch or a jump. Visustin

works at the statement level. The internal structure of

complex expressions is not visualized. The conditional

expression :? is not split, nor is any short-circuited

logic such as && or ||.

1. Identification of Programming Language

before generating the flow chart.

If we put a program in any programming language,

then v7 tool generate its corresponding flow chart

and for the same program, if we select a different

programming language, then it will also create flow

Page 5: Reverse Engineering Tools for Simplifying Programming …ijettjournal.org/2015/volume-26/number-2/IJETT-V26P212.pdf · Reverse Engineering Tools for Simplifying Programming Environment

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

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

chart without showing any notification or error

message regarding programming language.

Example:

Input->source code(C code)->select language

C->create flow chart ->Output

Input->source code(C code)->select language

JAVA->create flow chart ->Output

Input->source code(C code)->select language

.NET->create flow chart ->Output

Propose:

Input->source code(C code)->select language

C->create flow chart ->Output

Input->source code(C code)->select language

JAVA-> Display Error message ->Output

2. Does not display any kind of notification

or message for the occurrence of the error

in the given source code:

Both tools do not show any notification or

error message, if any syntax or semantic error

occurs in source code. It only generates the

flow chart either source code correct or

incorrect.

Propose:

Highlight the incorrect code in the source

code.

3. Standard Symbols are not use for flow

charting:

Both tools use a different notation for flow

charting the source code.

Propose:

Already defined that is basic flowcharting

notations are used.

4. No synchronization between source code

and flow charting:

This will lead to problems to understand the

flowchart and its corresponding source code

simultaneously.

Propose:

If we write a single statement of code, then

the tool will generate its corresponding chart.

5. No difference between the flowcharting of

different language.

Propose:

Fix the color for each language.

6. Lack of understanding in visualization of

flow charts because the tool do not

generate colorful flow charts.

Propose:

Colored flowchart should be generated.

7. Both tools do not generate multiple

diagram.

Propose:

Support more useful diagrams.

8. Operating System Limitation in V7 tool.

Propose:

Support More Operating Systems.

FEATURES TO BE ADDED

Following features would be added according to the

proposed concept and tool will design for ease of use:

1) Drag and Drop

2) Conversion of one language to another.

3) Perform compilation and decompilation both

i.e., Generate Source code from Flowchart

and flowchart to source code.

4) Provide algorithm development through

number of inputs and outputs.

5) The tool development environment

minimizes the amount of syntax you must

learn to write correct program instructions.

6) The tool development environment is visual

so that program can be executed one symbol

at a time. This will help novices follow the

flow of instruction execution in programs.

7) Tool will generate error messages to be more

readily understandable by beginning

programmers.

Our goal is to present a concept that minimizes the

number of limitations present in a existing tools.

These objectives require commercial programming

language such as C++ or Java and infomercial

flowcharting tools.

PROPOSED CONCEPT

A concept that proposes a tool that recovers all above

mentioned limitations and also provides the feathers

stated above. For this we can also propose an

algorithm that generates an editor or plug-in that

recovers limitations of the tool and provides new

features. The propose algorithm generate the TOOL

that is the combination of the following stated below:

TOOL= TEXT EDITOR +DIAGRAM EDITOR +

DIAGRAM CREATOR

Page 6: Reverse Engineering Tools for Simplifying Programming …ijettjournal.org/2015/volume-26/number-2/IJETT-V26P212.pdf · Reverse Engineering Tools for Simplifying Programming Environment

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

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

1. Examine the source code/Flow chart given as

an input to the tool.

Sometimes source code/flowchart is available for a

reverse engineer and sometimes it is not. Reverse

engineering approaches involves examine source

code. Sometimes only binary code is available, but

if you decompile a binary to get source code and

then study the code. Reverse engineering

approaches is typically very effective in finding

programming errors and implementation errors in

software. There are two types of analysis tools,

those that require source code and those that

automatically decompile the binary code and

continue from there. These tools include source

code-related problems and issues commonly

encountered in Java, C, and C++, does require

source code.

2. Verification of the source code/flowchart &

Identify the Programming Language.

Reverse engineering approaches involves analysing

and understanding given source code/flowchart.

Program failures can be analysed to determine

whether errors exist in the target software. Some

other reverse engineering approaches refers to

analysing a running program by probing it with

various inputs. This kind of approaches requires

only a running program and does not make use of

source code analysis of any kind.

3. If the input is in textual format perform

compilation i.e., software engineering.

A compiler is a tool that converts machine-readable

code into assembly language. Assembly language is

a human-readable form of machine. Compiler

reveals which machine instructions are being used

in the code. Machine code is usually specific to a

given hardware architecture. Thus, Compilers are

written expressly for the target hardware

architecture.

4. If the input is in graphical format perform

decompilation i.e., Reverse engineering.

A decompiler is a reverse engineering tool that

converts assembly code or machine code into source

code in a higher level language such as C/C++, JAVA.

Decompilers also exist to transform intermediate

languages such as Java byte code and Microsoft

Common Runtime Language (CRL) into source code

such as Java. These tools are extremely helpful in

determining higher level logic such as loops, switches,

and if-then statements.

Figure 3: Conceptual View

A good compiler/ decompiler pair can be used to run

its own collective output back into the same binary.

VI. CONCLUSION AND FUTURE WORK

After analysing some specific reverse engineering

flow charting tools, it has been concluded that the

proposed concept for flowcharting algorithm aims to

the overcome the burden of understanding and

maintaining the existing legacy systems by

implementing various features. We have compared

the results of two different tools i.e., CVF and V7

that generate flow chart from source code. We also

find limitation and benefit of individual tools.

Finally, applying flowcharting algorithm to several

legacy systems will result in building better

flowcharts to understand the system and it will be

helpful in software development projects and will

provides a clear view of Flow Chart. However,

further development is needed to extend tool for the

flowcharting algorithm.

There is no single tool that could be declared as the

best of our evaluation. The reverse engineering tools

evaluated are all quite different with varying strengths

and weaknesses. They all provide good reverse

engineering capabilities in different usage contexts.

The propose flowcharting algorithm concept raises the

flag for an urgent need for a new source code

visualization tool that overcome the major limitations

of the most well known flowcharting tools.

In near future one can proposed a flow charting

algorithm for structured/unstructured flowchart. The

algorithm can be used to generate flowchart from

source code and vice versa. It will also provide the

various algorithm developments when number of

input/output is given. Using the Proposed algorithm

one can develop a new flowcharting tool with

extended features and many advantages. As the field

matures, each new feature can be elaborated with

more fine-grained precision.

Page 7: Reverse Engineering Tools for Simplifying Programming …ijettjournal.org/2015/volume-26/number-2/IJETT-V26P212.pdf · Reverse Engineering Tools for Simplifying Programming Environment

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

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

REFERENCES

[`1] Schneider, M. and J. Gersting (1995), An Invitation to Computer Science, West Publishing Company, New York, NY, p. 9

[2] International Journal of Computer Science & Information

Technology (IJCSIT) Vol 6, No 1, February 2014 Shape-Based

Plagiarism Detection for Flowchart Figures in Texts Senosy

Arrish, Fadhil Noer Afif, Ahmadu Maidorawa and Naomie Salim

[3] B. G. Vasudevan, et al., "Flowchart knowledge extraction on image processing," in IEEE International Joint Conference on

Neural Networks, 2008. IJCNN 2008. (IEEE World Congress on

Computational Intelligence). Hong Kong, 2008, pp. 4075-4082. [4] FATESOFT (2009),Code Visual to Flowchart, FateSoft, Eden

Prairie - NM - USA, [Accessed 29/10/2009]

http://www.fatesoft.com/s2f/. [5] Andrew Scott, Mike Watkins and Duncan McPhee.,(2010), E-

Learning For Novice Programmers, A Dynamic Visualisation and

Problem Solving Tool, http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=4529966

[6] I. Nassi and B. Shneiderman, “Flowchart Techniques for

Structured Programming,” ACM SIGPLAN Notices, Vol. 8, No. 8, 1973, pp. 12-26. doi:10.1145/953349.953350

[7] J. F. Gimpel, “Contour: A Method of Preparing Struc-tured

Flowcharts,” ACM SIGPLAN Notices, Vol. 15, No. 10, 1980, pp. 35-41.

[8] Aivosto, (2003). Visustin Flow Chart Generator [online].

Aivosto.com. Available from: http://www.aivosto.com/visustin.html [Accessed 21-5-2005].

[9] Carlisle M, Wilson T, Humphries, J and Hadfield, M, 2004,

RAPTOR: Introducing Programming To Non-Majors With Flowcharts, Journal of Computing Sciences in Colleges, Consortium

for Computing Sciences in Colleges, University of Central Missouri,

USA pp: 52 – 60. [10] Nivedita Tiwari, Lalji Prasad, “ A Comparative Study: Reverse

Engineering Flowcharting tools” IJITE, Vol. 7, No. 1, 2015.

[11] Westphal B, Harris F and Fadali M, 2003,Graphical Programming: A Vehicle for Teaching Computer Problem Solving,

33rd ASEE/IEEE Frontiers in Education Conference, IEEE,

Boulder Colorado, pp: 19-23 [12] Danial Hooshyar , Ma.en T. Alrashdan , Masih Mikhak :

Flowchart-based Programming Environments Aimed at Novices.

[13] Phillips, C., Mehandjiska, D., Griffin, D., Choi, M.D., Page, D. (1998). The Usability Component of a Framework for the

Evaluation of OO CASE Tools, Proceedings of the International

Conference of Software Engineering: Education & Practice 1998, pp. 134-141

[14] W. D. Pauw, E. Jensen, N. Mitchell, G. Sevitsky, J. M.

Vlissides, and J. Yang, “Visualizing the execution of java programs,” in Revised Lectures on Software Visualization,

International Seminar. London, UK: Springer-Verlag, 2001, pp.

151–162. [15] D. B. Lange and Y. Nakamura, “Program explorer: a program

visualizer for c++,” in COOTS’95: Proceedings of the USENIX Conference on Object-Oriented Technologies on USENIX

Conference on Object-Oriented Technologies (COOTS). Berkeley,

CA, USA: USENIX Association, 1995, pp. 4–4.