Lab 3: Reverse Engineering the Architecture of a Java Application
The goal of this lab is to reverse engineer the architecture of your java application from
the first lab. You will need to use the scripts developed in the second lab and also install
and use two other tools, which are available from the course website. The two new tools are:
Start by running the Bunch tool. Using the Bunch GUI, specify the MDG file that was converted
from the XML/ODEM file as the "Input Graph File:". Select "Hill Climbing" as the "Clustering Method:"
(this is the default option). Select a suitable file name for the "Output Cluster File:" option,
which assigns a name to the file that stores the result produced by Bunch. Select "Text" as the
"Output File Format:" (note, this is not the default). Click on the "Clustering Options" GUI tab
on the top of the tool's GUI. Make sure you select "Generate Tree Format", which is disabled by
default. Once you do this, click on the "Basic" tab to return to the primary GUI and press the
"Run" button on the bottom right of the GUI. Bunch will cluster the MDG specified by the input
file and produce a file with a .bunch extension. The output file specifies the subsystems that
contain each of the classes of the application. This output file, along with the MDG file, will
be used as inputs to the ISF (Interconnection Style Formalism) tool.
- Bunch: is a tool that automatically partitions an MDG to suggest a subsystem-level
- ISF: is a tool that automatically infers the interfaces of the subsystem structures
created by Bunch.
Once you run the ISF tool, specify the MDG file in the "Graph file:" option, also specify the
Bunch output file name in the "Cluster file:" option of the ISF GUI. Keep the default settings
for the "ISF Style:" and "Method:" options. On the "Output" tab, unselect the "Enforce Tree
Structure" option. Finally, click on the "Start" button on the bottom left of the ISF GUI. If
you specified where the Graphviz program resides on the file system in the ISF shell script you
should see a graphical display of the result in Graphviz.
- A presentation that shows and explains the following:
- the subsystem architecture as (create by Bunch) of the application
- the subsystem interfaces (create by ISF)
- critique the quality of your java application's architecture
- A one page description and critique of the architecture of your java application, along with
descriptions of the tools and processes used to create it.