October 22, 2009

Bug fix release:

  • Fix a concurrency bug rendering minimap.

Note:  If your machine has integrated graphics card, the minimap  may not work and show up with “texture missing”. This is a visual bug, other functionality remains.



October 13, 2009

Bug fix release:

  • null pointer error when generating model
    • java.lang.NullPointerException
      at codstruction.model.ProjectModel.removePackage(ProjectModel.java:63)
  • speed up minimap
  • minimum requirement reduced to Java 1.5

1.0.2a release

October 12, 2009

New release:

  • Added minimap
    • Shows camera frustum
    • Camera will look at selected view point on minimap
    • Toggle minimap on/off with button at view window
  • Text background is now colored
  • Number of methods in interface is mapped to pyramid size

> Download

I am researching on whether a 3d environment presenting multiple properties of a software is helpful.

The background idea is that having more properties helps to construct a unified mental model rather than multiple mental models with multiple relationships with other.

We first look at the visualization generated by some tools on a example project.

2D visualization


UML view of parital class heirarchy of the example project.


Like the above UML diagram but with the methods included


This is a screenshot of visualization generated by X-ray. It is a fit-screen view that shows all classes in the example project with their hierarchies as lines connecting boxes and lines of code as length of boxes.

X-ray can be downloaded here.

3D visualization


My current prototype inspired by CodeCity. This is a screen-shot of visualization on the same project the one visualized by X-ray above. Each colored box represent a class and class hierarchy is represented by box stacking. Height of box is proportional to number of methods of the class.

This prototype is developed as a eclipse plugin which can be downloaded here.

To install, unzip content and paste them into plugin folder under your eclipse program, that is


Restart eclipse if it is running. To visualize any project, right click and select “Visualize with Codstruction”.


I need to verify whether doing such a visualization tool is useful before proceeding further so give me your views by answering the following questions:

1. Does a multiple properties representation helps more than a single property representation? If so, what software properties do you think is useful to be visualized together?

To give an idea on what a multiple properties representation is, take a look at the example above. X-ray tool is representing two properties at the same time, the length of code as the length of the box representing a box and the hierarchical structure of the classes.

2. Will 3d be better than 2d is doing the job of representing multiple properties?

3. Will you prefer to use a 2d or 3d visualization tool to do visualize multiple properties?

4. Do you use software visualization tools? Why so?

5. Rate your experience in programming ( 1 – 10 )


September 23, 2009

Codstruction is a 3D interactive software visualization tool built as eclipse plugin using jMonkey engine, inspired by Codecity. Codstruction is still in early-stage of development a try-out version is available for download.


Click here to download prototype.

To install, unzip content and paste them into plugin folder under your eclipse program, that is


Restart eclipse if it is running. To visualize any project(s), right click and select “Visualize with Codstruction”. Multiple projects may be selected.


Zoom in/out – Mouse wheel

Pan – Hold  down left mouse button and drag

Rotate – Hold down (middle mouse / mouse wheel) and drag

Go to particular source code – Double-click on class block

Current Features

Mouse over to display object name.

– Classes hierarchy viewed as blocks .

– Height of building is proportional to number of methods of class. Width is a indication of how many subclasses there are.

– Packages arranged as district.

Planned Feature List

– Methods form floors of class building block. Able to view which method is a overridden method. eg. Super class block becomes translucent and method which is overridden by the selected subclass is highlighted.

– Selective views, able to bookmark this view for later viewing.

– Layered customization. Eg. different profile of customization and priority.

– Representing call hierarchy as pipes from floor of building to another floor of another/same building.

– View interfaces that a class extend as a different type of building at base of class building.

– Building positioned based on dependencies between them.

– Searching. Matching objects will be highlighted.

– Overview, mini-map of current visualization.

– Multiple views

Your views

Your view is important for the continual development and improvement of this project. Let me know about the usefulness of the additional feature list or the tool in general by leaving your views as comments below.


Screenshot of prototype