Reactive Blocks [1] — это визуальная среда разработки на основе моделей, основанная на диаграммах активности , поддерживающая формальный анализ моделей, автоматическую генерацию кода, иерархическое моделирование и обширную библиотеку готовых к использованию компонентов для платформы Java.
Основная технология возникла в результате исследований Норвежского университета науки и технологий и Института телематики. [2] Reactive Blocks — это визуальная среда разработки на основе моделей, поддерживающая формальный анализ моделей, автоматическую генерацию кода, иерархическое моделирование и обширную библиотеку готовых к использованию компонентов для платформы Java. Объединяя повторно используемые блоки, разработчик может создавать сложные приложения графически.
Эти строительные блоки определяются комбинацией графических моделей и кода Java. Графическая модель основана на диаграммах активности UML и конечных автоматах. Существующая библиотека может быть расширена пользовательскими блоками, которые могут включать в себя все возможности платформы Java. Каждый блок имеет расширенное описание интерфейса в виде входных и выходных контактов и контракта. Контракт указывает, какие состояния имеет блок, и с какими контактами можно взаимодействовать в каком состоянии.
Reactive Blocks использует графическую модель вместе с информацией из контрактов для формального анализа приложения с целью обнаружения распространенных проблем, таких как взаимоблокировки или некорректные завершения. Если анализ обнаруживает проблему, соответствующее состояние приложения может быть выделено для определения причины. Среда разработки предлагает пошаговую анимацию цепочки переходов состояний, приводящих к проблеме.
Приложение, прошедшее проверку, может быть автоматически преобразовано в код Java. Поскольку приложение строительного блока является правильным формальным определением, строитель может преобразовать его логику в код. Сгенерированный код упаковывается в стандартный проект Eclipse Java и, таким образом, может рассматриваться как любой другой код; экспорт исполняемых JAR-файлов, отладка и профилирование работают одинаково.