Объектно-ориентированное моделирование в реальном времени - Википедия - Real-Time Object-Oriented Modeling

Объектно-ориентированное моделирование в реальном времени (КОМНАТА) это язык домена.

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

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

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

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

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

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]

Рекомендации