Software Engineering II

Solution:-Assignment #6
Reverse Engineering:-
Reverse engineering (RE) is the process of discovering the technological
principles of a mechanical application through analysis of its structure, function and
operation. It often involves taking something e.g. a mechanical device, an electronic
component, a software program apart and analyzing its workings in detail, usually with
the intention to construct a new device or program that does the same thing without
actually copying anything from the original.
Reverse Engineering Tools:-
There are too many tools availale for reverse engineering. Two of these are
!ode"urfer and
The main characteristics for this tool are as under#
1- CodeSurfer understands pointers
!ode"urfer performs pointer analysis so it knows which pointers point to which variales
and procedures. $ther rowsers are lind to pointer relationships, leaving you to figure
out their comple% effects. !ode"urfer does this for you, saving time and improving
2- CodeSurfer sows !omplete !all graps
$ne enefit of pointer analysis is that call graphs are complete, even when indirect
function calls are used.
"- CodeSurfer sows all te varia#les a fun!tion uses and all te varia#les a fun!tion
!an modif$
&unctions are passed parameters. 'ut the real (parameters) passed to a function typically
include many more variales than those e%plicitly passed in as parameters. $ften, the
names of these hidden parameters do not even occur te%tually ecause the underlying
variales are accessed via pointers. "imilarly, a function may modify many variales
during its e%ecution. !ode"urfer calculates all these effects for you. &or any function,
you can see all the variales it uses and all the variales it modifies.
%- CodeSurfer does sopisti!ated impa!t anal$sis
"elect any statement in the program. !ode"urfer will show you all the statements that
depend on the selected statement, including code in other files.
&- CodeSurfer as powerful sear!ing
Type a variale name into the &inder. Then check the appropriate o%es to specify the
search. *ou can find all uses (reads) of the variale. $r all assignments to the variale.
Include or e%clude uses and assignments though pointers, as desired. &ind what the
variale can point to, and which variales can point to it. !ontrol flow, data flow, and
program structure are taken into account to give you precise information.
6- CodeSurfer sows were a varia#le is assigned its value
"elect a variale in a particular statement. !lick a utton to see all the assignments to that
variale that can affect its value. +ssignments that cannot reach the selected statement are
automatically filtered out of the results, saving you time.
'- CodeSurfer sows w$ a statement e(e!utes
"elect a statement. !lick a utton to highlight all the control code that influences whether
or not the statement gets e%ecuted. $r (surf) the control code one step at a time using the
provided hyperlinks.
!ode!rawler is a smart, we,ased search engine specifically uilt for use y
developers for searching source code. It comines ease of use, super performance, and
intelligent search capailities in order to increase developer productivity and reduce
source code learning time.
The main characteristics are as#
• !ode!rawler is a language independent reverse engineering tool which comines
metrics and software visualization.
• !ode!rawler is ased on -oose, an implementation of the &+-I. metamodel.
!ode!rawler is written in /isual0orks "malltalk and runs on every ma1or
• !ode!rawler2s intelligent search algorithm provides the following capailities
like Intuitive we,ased search and /iewing of source code online , formatted
with line numers and syntactic highlighting.
• !ode!rawler is very fle%ile and allows most features to e configured y an