Friday, August 17, 2007

Tools

Having the proper tools when working certainly makes one's job easier. Some of the most difficult tasks when developing software is debugging and load testing. On any significant application this is difficult enough when you're one of the original authors of the application. When faced with debugging or load testing someone else's application it can be excruciatingly difficult. Part of difficulty is certainly visualizing the structure and the behavior of the application at the macro, micro and any level in between. Better tools for quickly and correctly understanding the structure and dependencies in any given application would be a great boon to both individuals and to teams. For example a tool that allows browsing of a software library in totality perhaps presenting the view as a sort of three-dimensional landscape. A workable implementation for Java (will have to find link later)uses a modified treemap algorithm for mapping packages and classes. That implementation displays Java classes as pseudo buildings whose height and width depends on the number of member variables and methods in a city scape of nested elevated platforms which depict the package hierarchy. This gives a quick visual cue about the classes' complexity and to the overall package structure. It does not display inheritance or interface implementation. A good visual metaphor for inheritance and its complexities may be at odds with the cityscape representation for package structure. Will have to revisit this at a later time.

No comments: