Moose es una plataforma gratuita y de código abierto para software y análisis de datos, desarrollada en Pharo .
Moose ofrece múltiples servicios que abarcan desde la importación y el análisis de datos hasta el modelado, la medición, la consulta, la minería y la creación de herramientas de análisis interactivas y visuales. Moose nació en un contexto de investigación [ 1 ] y actualmente cuenta con el apoyo de varios grupos de investigación en todo el mundo. Su adopción en la industria está aumentando .
Características principales
La filosofía de Moose consiste en permitir al analista crear nuevas herramientas de análisis específicas y personalizar el flujo de análisis. Si bien Moose se utiliza principalmente en el análisis de software, está diseñado para funcionar con cualquier tipo de datos.
Para lograrlo, ofrece múltiples mecanismos y marcos de trabajo:
- La importación y el meta-metamodelado se logran mediante un motor meta-descrito genérico. [ 2 ] [ 3 ] Cualquier metamodelo se describe en términos de un meta-metamodelo autodescrito, y con base en esta descripción, la importación/exportación se proporciona a través del formato de archivo MSE. Mediante este formato de archivo, Moose puede intercambiar datos con herramientas externas.
- Para el análisis sintáctico, Moose proporciona un marco novedoso [ 4 ] que utiliza varias tecnologías de análisis sintáctico (como la gramática de expresiones de análisis sintáctico ) y que proporciona una interfaz fluida para una construcción sencilla.
- El análisis de software se apoya específicamente en la familia de metamodelos FAMIX. El núcleo de FAMIX es un metamodelo independiente del lenguaje, similar a UML pero enfocado en el análisis. Además, proporciona una interfaz completa para consultar los modelos.
- La visualización se admite mediante dos motores diferentes: uno para expresar visualizaciones gráficas [ 5 ] y otro para expresar diagramas. Ambos proporcionan una interfaz fluida para una construcción sencilla.
- La navegación es un principio fundamental en Moose, y se ofrece soporte de diversas maneras. Una interfaz genérica permite al analista explorar cualquier modelo. Para especificar navegadores concretos, Moose ofrece un motor genérico que facilita la especificación mediante una interfaz fluida y específica .
Historia
1996-1999: Primera infraestructura, metamodelo
Moose nació en la Universidad de Berna en el contexto de FAMOOS, un proyecto europeo que se desarrolló entre septiembre de 1996 y septiembre de 1999. FAMOOS se centró en métodos y herramientas para analizar y detectar problemas de diseño en sistemas heredados orientados a objetos, y para migrar estos sistemas hacia arquitecturas más flexibles. Los principales resultados de FAMOOS se resumen en el Manual de FAMOOS y en el libro Patrones de Reingeniería Orientada a Objetos [ 6 ] .
Al principio del proyecto FAMOOS, Moose era simplemente la implementación de un metamodelo independiente del lenguaje conocido como FAMIX. El análisis del código C/C++ se realizaba mediante Sniff+, y los modelos generados se importaban a través del estándar CDIF. Inicialmente, Moose proporcionaba un importador predefinido y servía de base para una visualización sencilla y un extractor de datos del programa (1997). Posteriormente, comenzó a utilizarse para calcular métricas.
Posteriormente, a medida que el metamodelo evolucionaba, se hizo evidente que el servicio de importación/exportación debía ser independiente del metamodelo y, sobre todo, que el entorno debía admitir la extensión del mismo. En consecuencia, se implementó un primer meta-metamodelo extremadamente simple que, en aquel momento, podía representar entidades y relaciones (1998).
1999-2003: Formatos de intercambio, visualizaciones
Con la introducción del estándar XMI, se implementó un primer metamodelo de Meta-Object Facility y los metamodelos CDIF se transformaron en metamodelos MOF para la generación de modelos XMI. Sin embargo, MOF no se utilizó como metamodelo subyacente de Moose.
Paralelamente, el desarrollo de la visualización conllevó la ampliación del conjunto de métricas calculadas. En aquel entonces, CodeCrawler era la aplicación estrella de Moose, y durante un periodo considerable influyó en la arquitectura de Moose (1999). Por ejemplo, era necesario calcular las métricas para todas las entidades antes de generar las vistas.
El interés por investigar la evolución de los sistemas condujo a la implementación del repositorio de metamodelos. De este modo, la primera aplicación fue la Matriz de Evolución (2001). Posteriormente, se invirtió más investigación en la comprensión de la evolución de los sistemas, lo que dio como resultado el desarrollo de Van (2002).
Dado que el análisis de evolución requiere el procesamiento de grandes cantidades de datos, ya no era factible manipular toda la información del modelo de forma continua. Además, el cálculo previo de las métricas para todas las entidades del modelo representaba otro cuello de botella. En consecuencia, se implementaron varios servicios: carga parcial de los modelos, cálculo diferido de las propiedades y almacenamiento en caché de los resultados.
Se hizo evidente que las metadescripciones constituyen una herramienta poderosa para separar la representación de datos (es decir, el metamodelo) de las diferentes técnicas para manipular dichos datos. En consecuencia, el equipo comenzó a implementar un meta-metamodelo similar a MOF (2002) y reemplazó el original. Este ofrece una arquitectura similar a la del Eclipse Modeling Framework (EMF).
2003-2007: Interfaz de usuario genérica, formato de intercambio personalizado, visualizaciones programables.
Como aplicación de la metadescripción, se inició el desarrollo de una interfaz gráfica de usuario genérica para proporcionar servicios básicos como navegación, consultas e introspección (2003). Un papel importante en el mecanismo de almacenamiento en caché y en las consultas lo desempeña la noción de grupo como entidad de primera clase: cada consulta o selección en Moose produce un grupo, y cualquier grupo puede ser manipulado en el navegador (2003).
Para facilitar el desarrollo de herramientas, se requería un mecanismo de complementos. De esta forma, basándose en la metadescripción, cada herramienta puede registrarse en el menú asociado a cada entidad del metamodelo. Este sencillo mecanismo permite que estas herramientas se complementen entre sí sin imponer una dependencia rígida entre ellas.
La combinación de menús y grupos permite desglosar análisis complejos en múltiples pasos, cada uno de los cuales puede utilizar una herramienta diferente. De este modo, combinar y componer herramientas resulta natural y transparente.
En 2006, Meta se creó como una implementación autodescriptiva de EMOF (Essential Meta Object Facility) y reemplazó al meta-meta-modelo de Moose. Junto con Meta, se creó el nuevo formato de archivo MSE. Gracias a que Meta es autodescriptivo, Moose ahora puede cargar tanto modelos externos como meta-modelos utilizando el mismo mecanismo. Al mismo tiempo, se eliminó la compatibilidad con XMI y CDIF.
Para facilitar la creación rápida de prototipos de herramientas visuales interactivas, se desarrolló Mondrian. Mondrian utiliza Smalltalk como lenguaje de scripting subyacente y añade soporte para visualizaciones basadas en gráficos. Mondrian obtuvo el segundo premio en los ESUG Innovation Awards 2006.
En 2007, se desarrolló un nuevo motor, llamado EyeSee, basado en Moose, para permitir la creación de gráficos similares a los de Excel mediante scripts. EyeSee recibió el segundo premio en los Premios a la Innovación ESUG 2007.
2008-2011: FAMIX 3.0, navegadores programables y el paso a Pharo.
En 2008, Meta fue reemplazado por Fame, que implementa un nuevo meta-metamodelo (FM3) más simple y flexible que EMOF. El desarrollo de Fame está relacionado con el de FAMIX 3.0, una familia de metamodelos para el análisis de software.
A finales de 2008, se inició un gran esfuerzo para migrar Moose de VisualWorks a Pharo, un lenguaje Smalltalk de código abierto. La primera versión alfa de Pharo se lanzó en agosto de 2009.
Durante este periodo se desarrolló Glamour, un motor para la programación de navegadores interactivos. Glamour recibió el tercer premio en los ESUG Innovation Awards de 2009.
PetitParser se ha añadido a Moose Suite. PetitParser es un motor innovador para la creación de analizadores sintácticos especializados.
Referencias
- ↑ Oscar Nierstrasz, Stéphane Ducasse y Tudor Gîrba. La historia de Moose: un entorno de reingeniería ágil. En Actas de la Conferencia Europea de Ingeniería de Software (ESEC/FSE'05), págs. 1-10, ACM Press, Nueva York, NY, 2005. Artículo por invitación.
- ↑ Stéphane Ducasse, Tudor Gîrba, Adrian Kuhn y Lukas Renggli. Meta-entorno y metalenguaje ejecutable con Smalltalk: un informe de experiencia. En Journal of Software and Systems Modeling (SOSYM) 8(1), págs. 5-19, febrero de 2009.
- ↑ Adrian Kuhn y Toon Verwaest. FAME, una biblioteca políglota para metamodelado en tiempo de ejecución. En Workshop on Models at Runtime, págs. 57-66, 2008.
- ↑ Lukas Renggli, Stéphane Ducasse, Tudor Gîrba y Oscar Nierstrasz. Gramáticas dinámicas prácticas para lenguajes dinámicos. En el 4.º Taller sobre Lenguajes Dinámicos y Aplicaciones (DYLA 2010), Málaga, España, junio de 2010.
- ↑ Michael Meyer, Tudor Gîrba y Mircea Lungu. Mondrian: Un marco de visualización ágil. En ACM Symposium on Software Visualization (SoftVis'06), págs. 135-144, ACM Press, Nueva York, NY, EE. UU., 2006.
- ↑ Serge Demeyer, Stéphane Ducasse y Oscar Nierstrasz. Patrones de reingeniería orientada a objetos, Square Bracket Associates, 2008. URL
Enlaces externos
- Sitio web oficial
- Sitio web de Prior Moose
- El Libro del Alce : un libro abierto que describe la plataforma del Alce.
- Evaluación humanitaria : un enfoque novedoso para la evaluación de software y datos, posible gracias a Moose.
- Glamorous Toolkit : un entorno de desarrollo moldeable que evolucionó a partir de algunas ideas de Moose y comparte algunos de sus creadores.
- Familia de lenguajes de programación Smalltalk
- Software de análisis de datos
- Infografías