Mellor, S. J. (2007). Embedded systems in UML. Object Management Group, Tech. Rep.
Технология исполняемого UML позволяет разделить логику работы приложения и архитектуру системы, для которой приложение разрабатывается. Модели исполняемого UML можно верифицировать до написания кода, а трансляция модели в приложение осуществляется по набору правил, специфичных для конкретной архитектуры.
UML используется как для первичного наброска системы, так и для создания точных спецификаций. В этих случаях возникает проблема в поддержании соответствия между кодом программы и UML-диаграммой. Соответствие в одну сторону (из диаграммы в код) можно обеспечить с помощью исполняемых моделей, однако при изменении кода вручную это соответствие теряется. Следующий шаг состоит в создании транслируемых моделей, частью которых является исполняемый язык действий. Этот язык можно транслировать под любую конкретную реализацию программной системы. Данный подход позволяет не задумываться о поддержании соответствия между моделью и ее реализацией.
Сравним данный подход с традиционным процессом разработки. Первым этапом традиционной разработки является составление описания требуемой программной системы и верификация этого описания клиентами или экспертами в предметной области. Опыт показывает, что в подавляющем большинстве случаев данный этап не позволяет избавиться от критических ошибок – они появляются только на стадии разработки. Кроме этого, при таком подходе некоторые компоненты системы могут быть протестированы не сразу, а только спустя некоторое (часто – достаточно продолжительное) время после начала разработки. Эти проблемы можно решить с помощью исполняемых моделей, снабженных набором тестов. При этом, транслируемость модели обеспечивает независимость логики работы приложения от конкретной реализации, что облегчает тестирование и верификацию.
Исполняемая модель состоит из трех основных компонент:
Верификация модели осуществляется путем ее исполнения. Язык действий позволяет инстанцировать объекты и задать им начальные условия. Каждый тест реализуется в виде последовательности состояний. По достижении финального состояния теста, с помощью языка действий можно сравнить полученное состояние с ожидаемым и принять решение о том, пройден тест или нет. Покрытие модели тестами можно оценить по количеству посещенных состояний и совершенных переходов. При верификации модели необходимо учитывать два обстоятельства:
Трансляция исполняемой модели осуществляется с помощью компилятора, который состоит из набора переиспользуемых компонент (определяющих, например, способы хранения данных и доступа к ним) и совокупности формальных правил (задающих соответствие между элементами модели и данными компонентами). Концепция использования переиспользуемых компонент заключается в том, что архитектура системы задается структурой составляющих ее простых компонент и способами взаимодействия между ними. Основные этапы компиляции следующие:
Важно, что правила трансляции можно менять независимо от модели. Чаще всего это требуется для повышения производительности программы для некоторой архитектуры. При изменении правил трансляции необходимо убедиться, что логика работы программы сохраняется. Для этого проводится тест на одной и той же исполняемой модели, скомпилированной по новым и старым правилам.
Ключевая особенность технологии трансляции состоит в разделении логики приложения и архитектуры системы, на которой приложение запускается. Логика работы приложение описывается подмножеством UML, имеющим точную семантику и, как следствие, допускающим однозначное представление с помощью программного кода. Верификацию модели можно осуществить до ее компиляции под конкретную платформу, а правила компиляции можно менять для оптимизации производительности приложения.