Jump to content

Объектно-ориентированное моделирование в реальном времени

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

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

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

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

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

[ редактировать ]

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

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

Структура

[ редактировать ]

Структурный вид в 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 [1]
  • Новое издание: Бран Селич, Гарт Галлексон, Пол Т. Уорд: «Объектно-ориентированное моделирование в реальном времени», Гамбург, MBSE4U, 2023 г., ISBN   978-3911081016
  1. ^ Jump up to: а б Краткое содержание книги «Объектно-ориентированное моделирование в реальном времени»
  2. ^ eTrice - Инструмент с открытым исходным кодом ROOM
  3. ^ Бран Селич, Гарт Галлексон, Пол Т. Уорд: «Объектно-ориентированное моделирование в реальном времени», Нью-Йорк, John Wiley & Sons Inc, 1994, ISBN   978-0-471-59917-3
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 9d6b7d1e0d689c037ba7d46f0fc09f56__1716530100
URL1:https://arc.ask3.ru/arc/aa/9d/56/9d6b7d1e0d689c037ba7d46f0fc09f56.html
Заголовок, (Title) документа по адресу, URL1:
Real-Time Object-Oriented Modeling - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)