About Manhattan

Manhattan is an Eclipse plugin, that allows to visualize projects in the workspace.
The visualization has two goals:

  • represent projects in a way that facilitates the comprehension of their architecture
  • increase individual awareness of team activity in a group of developers
The first goal has been achieved by creating a basic port for Eclipse of CodeCity, the visualization tool by Richard Wettel.

Team activity is the set of code changes performed by each developer. Knowing what other developers are working on reduces the chances of conflicting modifications and allows a better understanding on how a project is evolving.
Lile Hattori created Syde, a plugin which notifies every developer about the code changes performed by the other members. Notifications are done via SWT views.

Through a few simple visualization techniques, Manhattan highlights the changes reported by Syde.

I'm writing Manhattan as my master project under the supervision of Prof. Michele Lanza, Alberto Bacchelli and Lile Hattori.

Installing Manhattan

Manhattan depends on LWJGL and Syde. To install Manhattan, follow these steps:

  • Add the update site for LWJGL and install its feature: http://lwjgl.org/update/
  • Add the update site for Syde and install its feature: http://syde.inf.usi.ch/update/
  • Add Manhattan's update site: http://atelier.inf.usi.ch/~rigottifr/manhattan/update/
  • Install both features in the update site and give Manhattan a try!

Using the plugin

A tutorial on Manhattan from Francesco Rigotti on Vimeo.

I reccommend watching the tutorial, as the textual description is not complete

To visualize a project

  • Select it in the package explorer
  • Right-Click->Manhattan->VisualizeProejct
After creating the meta-model for the code artifacts, Manhattan will visualize the project.
For projects with hundreds of classes, this will take some time.

My old MacBookPro needs more than one minute to build the model for ArgoUML (2000+ classes)

The screenshot below shows the view when visualizing CommonsMath from Apache. Commons Math Plugin View

Explaining the city metaphor

The city base represents the project itself. Packages and namespaces are represented as city islands.
Containment relations are represented by stacking sub-packages on top of their parent package.
Classes and interfaces are represented as city buildings: classes are blue cuboids and interfaces are purple cylinders. The width of a building represents the number of fields, while the height represents the number of methods.
Since complex classes (many fields and many methods) will be represented as large buildings, this metaphor works very well in exposing complexity.

Interacting with the visualization

The view is made of two components: an OpenGL canvas and a status bar. The latter shows the selected navigation mode on the left and, on the right, information about the code artifact under the cursor.

There are two navigation modes:

  • First Person:
    Move around using WASD keys and rotate the camera with the arrow keys
  • Orbital:
    Orbit around the center of the city using the WASD keys

If a building picks your interest, right-click on it to open the corresponding file in Eclipse's editor.

Design downloaded from free website templates.