1.2.3 2003-2007: Generic UI, interchange format, scriptable visualizations
As an application of the meta-description, I started the development of a generic graphical user interface to provide basic services such as navigation, querying, and introspection (2003). The very first implementation was based on the StarBrowser framework of Roel Wuyts. This generic interface suffered several mutations over time, and it became known under the name of Moose Finder (more about it in Chapter 5).
In parallel with building the user interface, two new concepts were introduced. First, as many tools started to get created, we needed a plug-in mechanism. Based on meta-descriptions I also introduce a simple mechanism each tool can register itself to the menu attached to each entity in the meta-model. This simple mechanism allows these tools to complement each other without imposing a hard-coded dependency between them.
Second, inspired by StarBrowser, I introduced the concept of the group as a first-class entity: every query or selection in Moose yielded a group, and any group can be manipulated in the Finder (2003). This had an important role also for caching and querying.
The combination of menus and groups meant that complex analyses could be broken down into multiple steps, each of which may make use of a different tool. Combining and composing tools thereby becomes natural and transparent.
In 2006, the work on CodeCrawler and polymetric views got captured in the “Object-Oriented Metrics in Practice” book of Michele Lanza and Radu Marinescu.
Also in 2006, Meta was created by Adrian Kuhn as a self-described implementation of EMOF (Essential Meta Object Facility) and it replaced the meta-meta-model of Moose. Together with Meta, the new MSE format was created. Because Meta was self described, Moose was able for the first time to load both external models and meta-models using the same mechanism.
To provide support for fast prototyping of interactive visual tools, Mondrian was born. Mondrian was created by Michael Meyer and me and it proposed the use of Smalltalk as an underlying scripting language and adds support for graph based visualizations (see Chapter 15). Mondrian received 2nd prize at the ESUG 2006 Innovation Awards.
In 2007, a new engine, called EyeSee and written by two of my students Matthias Junker and Markus Hofstetter, grew up around Moose to allow for scripting Excel-like charts. EyeSee received 2nd prize at the ESUG 2007 Innovation Awards.
In this period, a couple of prominent satellite visual projects were created. Softwarenaut was a tool built by Mircea Lungu to interactively and visually explore the architecture of software systems. CodeCity, developed by Richard Wettel, brought the notion of 3D to software analysis and visualized software systems through a city landscape. CodeCity certainly acted as a marketing tool to capture the imagination of software developers. Chronia, a tool built by Mauricio Seeberger, offered an interactive map of the code ownership as reverse engineered from the CVS versioning system.
Also in this period, SmallDude, an engine for line based duplication detection developed by Mihai Balint and Violeta Voinescu, was added to the arsenal of Moose (see Chapter 7).