Moose is a platform for software analysis. Moose is the result of more then 100 man-years of research and development. Moose was started at Software Composition Group from the University of Berne, Switzerland, and it is currently contributed to and used by researchers in several European universities.
Moose offers a common infrastructure for various tools. Moose comes with a generic browser to navigate the contents of the loaded models. The browser can be opened from the VisualWorks launcher toolbar (via the M shaped icon).
There are two generic types of entities in a Moose model: single entity (e.g., class or method) and group entity (e.g., class group or method group). Accordingly, the browser provides a dedicated view for each of these.
The single entity view presents the properties of the entity and different navigation paths (e.g., all system classes in a model). Selecting any path spawns another view to the right with the selection.
The group view presents a table with all the entities in the group. The table can be extended with columns for wanted properties (e.g., WMC â weighted method count for a group of classes). Selecting one or more entities spawns another view to the right. The selection can either be done manually, or by using dedicated queries (e.g., !’*test*’ returns the entities that do not have test in their name).
For any entity, Moose offers a set of analysis services. These can be invoked via the contextual menu. For example, right clicking on the class group spawns a menu like the one in the picture below.
Visualization is a central part of Moose. Typically the available visualizations can be found in the Mondrian submenu. Mondrian is the main the visualization engine behind Moose.
Selecting the âScreen Filling System Complexityâ on a selected group of classes spawns a window like the in the picture below. In this visualization, each large rectangle denotes a class, and each edge represents an inheritance relationship. Furthermore, on the geometrical characteristics of the rectangles the following properties are mapped: width shows the number of attributes in the class, height shows the number of methods in the class, and the shade of gray shows the number of lines of code of the class (black means maximum).
Moose’s philosophy relies on interacting with the system to explore its different facets. For example, by hovering over a class in the System Complexity, we get a preview of the Class Blueprint, a more detailed visualization of that class.
Moose is centered around FAMIX, a family of meta-models for software analysis. The core of FAMIX consists of a language-independent meta-model. Thus, Moose can accommodate systems written in various languages like Java (how to import Java), C/C\\++ (how to import C), Smalltalk. Furthermore, other meta-models and importers also exist for analyzing historical or dynamic information.
Behind the hood, Moose offers an extensive infrastructure with several generic services for building and integrating new tools, for describing new data models, for automatic import/export, or for defining new visualizations. For example, Mondrian is a generic engine for scripting visualizations. The figure below shows the Mondrian editor with the script for System Complexity at the bottom.
The Moose distribution can be downloaded from: http://moose.unibe.ch/download.
Moose is implemented in Cicom Smalltalk. Thus you need a Cincom VisualWorks Smalltalk virtual machine (either commercial or non-commercial depending on your context) that can be downloaded from: http://www.cincomsmalltalk.com/scripts/DownloadFiles.ssp
To launch Moose, open the .image file with the appropriate virtual machine. The virtual machine executable is called ’visual’.