Moose (analysis)
Encyclopedia
Moose is a free
and open source platform for software and data analysis
built in Pharo
.
Moose offers multiple services ranging from importing and parsing data, to modeling, to measuring, querying, mining, and to building interactive and visual analysis tools. Moose was born in a research context, and it is currently supported by several research groups throughout the world. It is increasingly being adopted in industry.
To achieve this it offers multiple mechanisms and frameworks:
Free software
Free software, software libre or libre software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions that only ensure that further recipients can also do...
and open source platform for software and data analysis
Data analysis
Analysis of data is a process of inspecting, cleaning, transforming, and modeling data with the goal of highlighting useful information, suggesting conclusions, and supporting decision making...
built in Pharo
Pharo
Pharo is a fork of Squeak, an implementation of the object-oriented, dynamically typed, reflective programming language Smalltalk.Appearing in 2008, Pharo focuses on removing unessential code from Squeak and serves as the reference implementation of Seaside, a web application framework for...
.
Moose offers multiple services ranging from importing and parsing data, to modeling, to measuring, querying, mining, and to building interactive and visual analysis tools. Moose was born in a research context, and it is currently supported by several research groups throughout the world. It is increasingly being adopted in industry.
Key Features
The philosophy of Moose is to enable the analyst to produce new dedicated analysis tools, and to customize the flow of analysis. While Moose is mainly used in software analysis, it is built to work for any data.To achieve this it offers multiple mechanisms and frameworks:
- Importing and meta-meta-modeling is achieved through a generic meta-described engine. Any meta-modelMeta modelA meta-model typically defines the language and processes from which to form a model. It has many uses:-Computing:*Metamodeling a modeling methodology used in software engineering*MODAF Meta-Model...
is described in terms of a self-described meta-meta-model, and based on this description, the import/export is provided through the MSE file format. Through this file format, Moose can exchange data with external tools. - For parsing, Moose provides a novel framework that makes use of several parsing technologies (like parsing expression grammarParsing expression grammarA parsing expression grammar, or PEG, is a type of analytic formal grammar, i.e. it describes a formal language in terms of a set of rules for recognizing strings in the language...
) and that provides a fluent interfaceFluent interfaceIn software engineering, a fluent interface is an implementation of an object oriented API that aims to provide for more readable code....
for easy construction. - Software analysis is specifically supported through the FAMIX family of meta-models. The core of FAMIX is a language independent meta-model that is similar to UMLUMLUML may refer to:* Unified Modeling Language, an object modeling and specification language used in software engineering* User-mode Linux, an architectural port of the Linux kernel* University of Massachusetts Lowell, in the United States...
but it is focused on analysis. Furthermore, it provides rich interface for querying models. - VisualizationInformation visualizationInformation visualization is the interdisciplinary study of "the visual representation of large-scale collections of non-numerical information, such as files and lines of code in software systems, library and bibliographic databases, networks of relations on the internet, and so forth".- Overview...
is supported through two different engines: one for expressing graph visualizations, and one for expressing charts. They both provide a fluent interfaceFluent interfaceIn software engineering, a fluent interface is an implementation of an object oriented API that aims to provide for more readable code....
for easy construction. - Browsing is an important principle in Moose, and it is supported in multiple ways as well. A generic interface enables the analyst to browse any model. To be able to specify specific browsers, Moose offers a generic engine that eases the specification through a specific fluent interfaceFluent interfaceIn software engineering, a fluent interface is an implementation of an object oriented API that aims to provide for more readable code....
.
External links
- Moose homepage.
- The Moose Book is an open book describing the Moose platform.
- Humane assessment is a novel approach to software and data assessment enabled by Moose.