Из Википедии, свободной энциклопедии
Перейти к навигацииПерейти к поиску

Объектно-ориентированное моделирование в реальном времени ( ROOM ) - это язык, специфичный для предметной области .

ROOM был разработан в начале 1990-х годов для моделирования систем реального времени . [1] Изначально основное внимание уделялось телекоммуникациям , хотя ROOM можно применить к любой управляемой событиями системе реального времени.

ROOM поддерживался ObjecTime Developer (коммерческий) и теперь реализуется официальным проектом Eclipse eTrice [2]

Когда был определен UML2 (версия 2 UML с расширениями в реальном времени), многие элементы ROOM были приняты.

Концепции и ключевые понятия ROOM

ROOM - это язык моделирования для определения программных систем. Это позволяет полностью генерировать код для всей системы из модели. ROOM поставляется как с текстовыми, так и с графическими обозначениями. Обычно сгенерированный код сопровождается кодом, написанным вручную, например, для графических пользовательских интерфейсов ( GUI ). Код компилируется и связывается с библиотекой времени выполнения, которая предоставляет базовые классы и базовые службы (например, обмен сообщениями).

ROOM описывает программную систему в трех измерениях: структура, поведение и наследование. В следующих разделах эти три аспекта объясняются более подробно.

Структура

Структурный вид в ROOM состоит из актеров или капсул . Актеры могут общаться друг с другом через порты . Эти порты связаны привязками . Акторы действительно обмениваются сообщениями асинхронно через порты и привязки. Каждому порту назначается уникальный протокол . Протокол в ROOM определяет набор исходящих и набор входящих сообщений. Порты могут быть связаны привязкой, если они принадлежат одному протоколу и сопряжены друг с другом. Это означает, что один порт отправляет исходящие сообщения протокола и принимает входящие. Этот порт называется обычным портом. Его одноранговый порт, сопряженныйпорт, принимает исходящие сообщения и отправляет входящие сообщения протокола. Другими словами, порт - это комбинация требуемого и предоставленного интерфейсов в роли (поскольку один и тот же протокол может использоваться несколькими портами субъекта).

Пример структурной схемы

Актер может содержать других актеров (как композицию ). В ROOM они называются ссылками на актеров или для краткости ссылками на актеров . Это позволяет создавать структурные иерархии произвольной глубины.

Порты актера могут быть частью его интерфейса (видимого снаружи) или частью его структуры (используемой им самим) или и тем, и другим. Порты, которые являются только частью интерфейса, называются портами ретрансляции . Они напрямую подключены к порту подчиненного актора (они делегируют подчиненному актору). Порты, которые являются только частью структуры, называются внутренними конечными портами . Порты, которые принадлежат как структуре, так и интерфейсу, называются внешними оконечными портами .

Поведение

Каждый субъект в ROOM имеет поведение, которое определяется с помощью иерархического конечного автомата , или просто конечного автомата для краткости. Конечный автомат - это ориентированный граф, состоящий из узлов, называемых состояниями, и ребер, называемых переходами . Переходы между состояниями инициируются входящими сообщениями от внутреннего или внешнего конечного порта. В этом контексте сообщения иногда также называют событиями или сигналами . Если в переходе указан определенный триггер , говорят, что он срабатывает.если конечный автомат находится в исходном состоянии перехода и приходит сообщение типа, указанного триггером. После этого состояние меняется на целевое состояние перехода.

Диаграмма поведения КОМНАТЫ (конечный автомат как диаграмма состояний)

Во время изменения состояния выполняются определенные фрагменты кода. Программист (или разработчик моделей) может прикрепить их к состояниям и переходам. В ROOM этот код написан на так называемом языке уровня детализации , обычно на целевом языке генерации кода. Государство может иметь код входа и выхода кода . Во время изменения состояния сначала выполняется код выхода из исходного состояния. Затем выполняется код действия перехода срабатывания и, наконец, код входа целевого состояния. Типичная часть этих кодов - отправка сообщений через порты актера.

Конечные автоматы в ROOM также имеют графическое обозначение, подобное диаграммам состояний UML . Пример показан на схеме в этом разделе.

Конечный автомат также может иметь иерархию в том смысле, что состояния могут иметь вспомогательные конечные автоматы. Подобно структуре это может быть расширено на произвольную глубину. Подробнее о семантике иерархических конечных автоматов мы отсылаем к оригинальной книге. [3]

Важным понятием в контексте конечных автоматов является модель выполнения от выполнения до завершения.. Это означает, что актер полностью обрабатывает сообщение, прежде чем примет следующее сообщение. Поскольку семантика от выполнения до завершения гарантируется средой выполнения, программист / разработчик моделей не должен иметь дело с классической синхронизацией потоков. И это несмотря на то, что типичные ROOM-системы работают с высокой степенью одновременности из-за асинхронной связи. И, возможно, стоит подчеркнуть, что асинхронная природа ROOM-систем не случайна, а отражает присущую асинхронность, например, машине, управляемой программным обеспечением. Определенно, это требует другого мышления, чем тот, который необходим для функционального программирования синхронных систем. Но после непродолжительного привыкания станет очевидно, что конечные автоматы с асинхронным обменом данными идеально подходят для управляющего программного обеспечения.

Наследование

Как и другие объектно-ориентированные языки программирования, ROOM использует концепцию классов . Акторы - это классы, которые могут быть созданы как объекты в системе несколько раз. Конечно, каждый экземпляр класса актора находится в собственном состоянии и может взаимодействовать с другими экземплярами того же (и других) классов.

Подобно другим современным языкам программирования, ROOM позволяет наследовать классы акторов. Это единственное наследование, поскольку класс актора может быть производным от другого класса актора (его базового класса ). Он наследует все функции базового класса, такие как порты и ссылки на акторы, но также и конечный автомат. Производный класс актора может добавлять дополнительные состояния и переходы к унаследованному.

Наслоение

Последняя мощная концепция ROOM - наслоение . Это понятие относится к вертикальным уровням программной системы, состоящей из служб и их клиентов. ROOM вводит понятия точки доступа к услугам (SAP) для стороны клиента и точки предоставления услуг (SPP) для стороны сервера. С точки зрения реализации актора SAP и SPP работают как порты. Как и порты, они связаны с протоколом. Но кроме портов, они не должны (и даже не могут) быть привязаны явно. Скорее, субъект привязан к конкретной службе через соединение уровня, и эта привязка службы рекурсивно распространяется на все субакторы этого субъекта. Эта концепция очень похожа на внедрение зависимостей .

Литература

  • Бран Селик, Гарт Гуллексон, Пол Т. Уорд: «Объектно-ориентированное моделирование в реальном времени», Нью-Йорк, John Wiley & Sons Inc, 1994, ISBN  978-0-471-59917-3 [4]

Ссылки