Moose — это платформа для анализа программного обеспечения и данных, разработанная в среде Pharo Smalltalk. Она представляет собой набор инструментов и библиотек для импорта, моделирования, измерения, запросов, майнинга и визуализации информации о программных системах и связанных артефактах. Moose ориентирован на исследовательские и инженерные задачи в области обратного проектирования, анализа эволюции кода, метрик качества и построения кастомных инструментов анализа.
Проект включает средства для конструирования метамоделей, представления исходного кода и метаданных в виде удобных моделей, выполнения сложных запросов по моделям и последующей визуализации результатов. Moose поддерживает интеграцию с различными источниками данных (репозитории кода, исходные файлы, артефакты сборки) через механизмы импорта и преобразования в внутренние представления, что позволяет исследователям и разработчикам создавать на его базе адаптированные аналитические решения.
- Моделирование: гибкие метамодели и представления кода для анализа структурных и семантических свойств программных систем.
- Импорт данных: конвертеры и адаптеры для загрузки исходного кода, истории версий и других артефактов в единую модель.
- Запросы и навигация: поддержка выразительных языков запросов и API для обхода и фильтрации моделей.
- Измерения и метрики: наборы готовых метрик и инструменты для определения пользовательских показателей качества и сложности.
- Майнинг исторических данных: анализ эволюции проекта на основе информации из систем контроля версий и других журналов изменений.
- Визуализация: средства построения диаграмм, графов и других визуальных представлений результатов анализа.
- Расширяемость: модульная архитектура, позволяющая добавлять плагины и адаптировать платформу под специфические задачи.
- Инструментальная интеграция: возможности для создания интерактивных инструментов и пользовательских интерфейсов на базе платформы Pharo.
- Исследовательское применение: использование в академических и прикладных исследованиях по программной инженерии и добыче знаний из артефактов разработки.