Языки моделирования

 

 

Метамодель (в информатике) — транзитивное отношение между двумя моделями.

Пример:

  • если модель M1 описывает язык L0, в котором формулируется модель M0, то M1 является метамоделью М0;

  • если же модель M2 описывает язык L1, в котором была сформулирована модель М1, то М2 — это метамодель M1, а M2 является тогда для M0 мета-метамоделью).

Метамодели - грамматики (описания) языков моделирования.

Примеры метамоделей:

  • UML (Unified Modeling Language, унифицированный язык моделирования)

  • ДРАКОН (Дружелюбный русский алгоритмический язык, который обеспечивает наглядность)

  • RDF/OWL (Resource Description Framework/Web Ontology Language)

  • Wolfram Language

  • Modelica.

 

 

Язык моделирования

Язык моделирования – это нотация (обычно графическая), которая используется разработчиками для описания проекта (объекта, модели).

 

Нотация - система условных обозначений:

  • словарь (алфавит, множество символов, используемых для представления понятий и их взаимоотношений, составляющее)

  • синтаксис (правила применения элементов словаря (алфавита)

  • семантика (значения (точные и однозначные)  элементов словаря (алфавита)

 

Язык моделирования предоставляет словарь и правила комбинирования слов в этом словаре с целью концептуального и физического представления системы.

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

Язык моделирования диктует (моделирует), как создать и прочитать модель, однако не содержит рекомендаций о том, какую модель системы необходимо создать

Язык моделирования это:

  • язык спецификаций и точных определений.

  • язык визуального конструирования.

  • язык документирования.

 

 

 

Model Driven Architecture

Модели разработки программного обеспечения:

  • классическая (кодо-базированная) архитектура;

  • MDA (Model Driven Architecture) - архитектура, управляемая моделью.

MDA - модельно-ориентированная парадигма (модель) разработки программного обеспечения, основанная на построении абстрактной метамодели управления и обмена метаданными (моделями) и задании способов её трансформации в поддерживаемые технологии программирования (Java, XML и др.).

Создание метамодели определяется технологией моделирования MOF (Meta Object Facility), которая определяет (моделирует) метод разработки программного обеспечения.

Для конструирования программного приложения должна быть построена подробная, формально точная модель, из которой потом может быть автоматически генерирован исполняемый программный код приложения.

Модель (структура) MDA-разработки:

  • Разрабатывается Platform Independent Model (PIM) - независимая от технологии модель предметной области проектируемого приложения

  • PIM автоматически трансформируется в PSM (Platform Specifical Model) - платформо-зависимую модель,

  • PSM переводится в исходный код на избранном языке программирования,

В основе MDA-разработки лежит UML-модель (модель, построенная на основе метамодели UML (Unified Modeling Language) — унифицированный язык моделирования.

 

 

 

Unified Modeling Language

UML (Unified Modeling Language, унифицированный язык моделирования) — язык объектного моделирования общего назначения.

UML  предложен Гради Бучом и Джимом Рамбо в 1995 году на конференции OOPSLA ’95
Актуальная версия UML 2.5 опубликована в июне 2015 года.

UML первоначально разработан для создания UML-моделей (абстрактных моделей систем) программных систем.

UML  не является языком программирования, но на основании UML-моделей возможна (авто-)генерация программного кода.

UML позволяет описать систему и аспекты ее поведения практически со всех возможных точек зрения, но критикуется как неоправданно большой и сложный.

Работа с UML основана на использовании UML-диаграмм (графического символического представления данных с применением различных приёмов техник их визуализации).

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

Диаграммы UML относительно просты для чтения (при условии освоения его синтаксисов).

UML определён комбинацией:

  • абстрактного UML-синтаксиса

  • Синтаксиса OCL (языка описания ограничений и формальной проверки правильности)

  • английского синтаксиса (подробная семантика).

Учебные материалы по  UML:

Три статьи от KSA:

06.06.2021  UML умер, а никто и не заметил?

  • Unified Modelling Language (UML), разработанный Rational Software и принятый в качестве стандарта Object Management Group (OMG) в 1997 году, призван был стандартизировать множество различных типов графических нотаций, принятых в отрасли разработки ПО.

  • С 2004 по 2015 годы я использовал UML, а 2015 перестал, как и остальные мои коллеги.
    Убийцей UML стал Agile, а его отравленными стрелами были user stories. В модели, куда на входе засовывают user stories, а на выходе получают демо (или feature production release), больше нет места для содержательного структурного анализа задач.

  • Современная парадигма заключается в том, что нам всё равно не удастся понять задачу. Мир сошёл с ума? Нет мы просто отказались от инженерного проектирования ПО. Теперь это просто авантюра с кодом.

  • UML всё равно остаётся в моём сердце...

 

 

 

Сущности UML

Основными элементами UML являются:

  • сущности (Thing) - ключевые абстракции UML,

  • отношения (Relationship) - связи сущностей UML,

  • диаграммы (Diagram) - группы (коллекции) сущностей UML.

Структурные сущности являются существительными (базовыми структурными объектами) языка UML.

К ним относятся:

  • классы (Class) — набор объектов, разделяющих одни и те же атрибуты, операции, отношения и семантику. Класс реализует один или несколько интерфейсов и изображается виде прямоугольника, включающего имя класса, имена атрибутов, операций, примечание;
    21.07.2020 UML для самых маленьких: диаграмма классов

  • интерфейсы (Interface) — набор операций, которые определяют сервис класса или компоненты. Интерфейс графически изображается в виде круга и, как правило, присоединяется к классу или к компоненту, который реализует данный интерфейс;

  • кооперации (Collaboration) — определяют взаимодействие и служат для объединения ролей и других элементов, которые взаимодействуют вместе так, что получающееся в результате поведение объекта оказывается большим, чем просто сумма всех элементов. Изображается в виде эллипса с пунктирной границей;

  • прецеденты (Use case) — описание набора последовательностей действий, которые выполняются системой и имеют значение для конкретного действующего лица (Actor). Прецеденты изображаются в виде эллипса и используются для структурирования поведенческих сущностей в модели;

  • активные классы (Active class) — классы, чьими экземплярами являются активные объекты, которые владеют процессом или потоком управления и могут инициировать управляющее воздействие. Стереотипами конкретного класса являются процесс (Process) и поток (Thread). Графически такой класс изображается как класс с жирной границей;

  • компоненты (Component) — физически заменяемые части системы, обеспечивающие реализацию ряда интерфейсов. Компонент — физическое представление таких логических элементов, как классы, интерфейсы и кооперации. Предметная область компонентов относится к реализации. Изображаются компоненты в виде прямоугольника с ярлыками слева и, как правило, имеют только имя и примечание;

  • узлы (Node) — физические объекты, которые существуют во время исполнения программы и представляют собой коммуникационный ресурс, обладающий, по крайней мере, памятью, а зачастую и процессором. На узлах могут находиться выполняемые объекты и компоненты. Изображаются узлы в виде куба, имеют имя и примечание.

Существуют также вариации данных объектов, такие как действующие лица (Actor), сигналы (Signal), утилиты (Utility — вид класса), процессы и нити (Process и Thread — виды активного класса), приложения (Application), документы (document), файлы (File), библиотеки (Library), страницы (Page), таблицы (Table).

Поведенческие сущности — динамические части (глаголы) моделей UML. К ним относятся:

взаимодействия (Interaction) — включают набор сообщений, которыми обмениваются указанные объекты с целью достижения указанной цели. Взаимодействие описывается в контексте кооперации и изображается направленной линией, маркируется именем операции сверху;

автоматы (State machine) — спецификации поведения, представляющие собой последовательности состояний, через которые проходит в течение своей жизни объект, или взаимодействие в ответ на происходящие события (а также ответные действия объекта на эти события). Автомат прикреплен к исходному элементу (классу, кооперации или методу) и служит для определения поведения его экземпляров. Изображается автомат как прямоугольник с закругленными углами.

Группирующие сущности — это организационные составляющие моделей UML.

К ним относятся пакеты (Package) — обобщенный механизм для организации элементов в группы.

 Структурные, поведенческие, группирующие сущности могут быть помещены в пакет.

Пакеты являются чисто концептуальными сущностями — в отличие от компонентов, существующих во время исполнения программы. Изображается пакет как папка с ярлыком сверху и, как правило, имеет только имя.

Аннотационные сущности — это пояснительные составляющие моделей UML, к которым относятся примечания (Note) — пояснительные элементы языка (рис. 3). Они содержат текст комментария, изображаются в виде прямоугольника с загнутым уголком страницы.

 

 

 

Отношения UML

Отношения (Relationship) - связи сущностей UML, которые позволяют строить блоки UML.

Базовые отношения  UML:

  • зависимость (Dependency) — это семантическое отношение сущностей, при котором изменение одной из них (независимой сущности) может отразиться на семантике другой (зависимой). Виды зависимостей:

  • абстракция (Abstraction) — изменение уровня абстрактности для некоторого понятия. К зависимости абстракции относятся следующие стереотипы:

    • трассировать (Trace), уточнять (Refine),

    • реализовать (есть собственная нотация)

    • выводить (Derive),

  • связывание (Binding) — связывает элемент с шаблоном. ...

  • комбинирование (Combination) — соотносит части описания элементов модели...

  • разрешение (Permission) — связывает одни пакеты и классы с другими, разрешая использовать свое содержимое...

  • использование (Usage) — описывает ситуацию, когда одному элементу для правильной реализации или функционирования требуется присутствие другого элемента. ....

  • ассоциация (Association) — структурное отношение, описывающее множество связей между объектами классификаторов, где связь (Link) — это соединение между объектами, которое описывает связи между их экземплярами ...

  • обобщение (Generalization) — отношение, при котором объекты специализированного элемента (потомка — Child) можно подставить вместо объектов обобщенного элемента (родителя, предка — Parent). ...

  • реализация (Realization) — отношение между спецификацией и ее программной реализацией; указание на то, что поведение наследуется без структуры.

В UML также существуют варианты отношений: уточнение (Refinement), трассировка (Trace), включение (Include), расширение (Extend).

 

 

 

Диаграммы UML

Диаграммы (Diagram) - группы (коллекции) сущностей UML

Диаграммы  UML дают графическое представление множества элементов, которое изображается в виде связного графа с вершинами (сущностями) и ребрами (отношениями), реализуя визуализацию представления проектируемой системы с различных точек зрения

UML имеет множество разных диаграмм.

Структурные диаграммы:

  • диаграммы классов (class diagrams) предназначены для моделирования структуры объектно-ориентированных приложений - классов, их атрибутов и заголовков методов, наследования, а также связей классов друг с другом;

  • диаграммы компонент (component diagrams) используются при моделировании компонентной структуры распределенных приложений; внутри каждая компонента может быть реализована с помощью множества классов;

  • диаграммы объектов (object diagrams) применяются для моделирования фрагментов работающей системы, отображая реально существующие в runtime экземпляры классов и значения их атрибутов;

  • диаграммы композитных структур (composite structure diagrams) используются для моделирования составных структурных элементов моделей - коопераций, композитных компонент и т.д.;

  • диаграммы развертывания (deployment diagrams) предназначены для моделирования аппаратной части системы, с которой ПО непосредственно связано (размещено или взаимодействует);

  • диаграммы пакетов (package diagrams) служат для разбиения объемных моделей на составные части, а также (традиционно) для группировки классов моделируемого ПО, когда их слишком много.

Поведенческие диаграммы:

  • диаграммы активностей (activity diagrams) используются для спецификации бизнес-процессов, которые должно автоматизировать разрабатываемое ПО, а также для задания сложных алгоритмов;

  • диаграммы случаев использования(use case diagrams) предназначены для "вытягивания" требований из пользователей, заказчика и экспертов предметной области;

  • диаграммы конечных автоматов (state machine diagrams) применяются для задания поведения реактивных систем;
    диаграммы взаимодействий (interaction diagrams):

  • диаграммы последовательностей (sequence diagrams) используются для моделирования временных аспектов внутренних и внешних протоколов ПО;

  • диаграммы схем взаимодействия (interaction overview diagrams) служат для организации иерархии диаграмм последовательностей;
    диаграммы коммуникаций (communication diagrams) являются аналогом диаграмм последовательностей, но по-другому изображаются (в привычной, графовой, манере);

  • временные диаграммы (timing diagrams) являются разновидностью диаграмм последовательностей и позволяют в наглядной форме показывать внутреннюю динамику взаимодействия некоторого набора компонент системы.

 

 

 

UML в структуре классического SDLC

 

SDLC (systems development life cycle) - жизненный цикл разработки программного обеспечения.

 

10 стадий цикла разработки ПО:

  1. Анализ проблемы (создание ее аналитической модели),

  2. Разработка (моделирование) требований к разрабатываемому программному обеспечению,

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

  • Блок-схемы;

  • ER-диаграммы;

  • UML-диаграммы;

  • Макеты – например, нарисованный в фотошопе прототип сайта,

  1. Алгоритмизация (моделирование логики работы программы),

  2. Кодинг  (написание исходного кода - программирование в самом узком понимании),

  3. Компиляция – преобразование (автоматический перевод) исходного кода  на языке высокого уровня в машинный код,

  4. Модульное тестирование (unit testing) и отладка,

  5. Документирование (проектное, техническое, пользовательское, маркетинговое...),

  6. Тестирование,

  7. Внедрение и сопровождение.

К прочтению: Как из UML диаграммы получить каркас Vue.js приложения
 

 

 

 

Языки моделирования Semantic Web

 

Этапов развития Web (метафорическая модель):

  • Web 1.0 - доступ к информации, размещенной в сети на расстоянии клика.

  • Web 2.0 – отображение внутреннего мира человека на внешнем носителе в динамике.

  • Web 3.0 (Semantic Web) – моделирование человека и социума с помощью сетевых технологий

В основе Semantic Web лежат языки описания и разметки, в том числе:

  • XML синтаксически (без семантики) определяет структуру документа, подлежащего машинной обработке.

  • XML Schema (один из языков описания структуры XML документа) определяет ограничения на структуру XML-документа в соответствии с его  схемой.

  • RDF (Resource Description Framework, язык для описания ресурсов, и метаданных о ресурсах) описывает данные в формате субъект-отношение-объект идентификаторами ресурсов и  отображает эти описания на XML-документы.

  • RDF Schema описывает набор отношений, для определения новых типов RDF-данных.

  • OWL  (Web Ontology Language, язык онтологии для Интернета на основе XML/Web стандарта) описывает новые типы данных RDF Schema в терминах существующих.

 

В основе языка OWL — представление действительности в модели данных объект — свойство. 

Каждому элементу описания в этом языке ставится в соответствие URL, связи между элементами организовывает  на базе модели объект — свойство.

OWL пригоден не только для описания web страниц, но и любых объектов действительности.

Ресурсы и их метаданные являются статической частью семантической паутины, а её динамическую часть представляют семантические Web-сервисы.

 

 

 

ДРАКОН

ДРАКОН (Дружелюбный русский алгоритмический язык, который обеспечивает наглядность) — визуальный алгоритмический язык моделирования и программирования.

ДРАКОН разрабатывался с 1986 года как часть космической программы «Буран» (Полёт «Бурана»!)

Друзья Дракона (проблемно-ориентированные языки для Бурана):  ЛАКС (язык моделирования космических систем), ПРОЛ2 (язык реального времени  для автоматизации программирования бортовых систем), ДИПОЛЬ (проблемно-ориентированный язык для разработки программ наземных испытаний).

 

ДРАКОН используется в космических программах: «Морской старт», разгонный блок космических аппаратов «Фрегат», ракета-носитель тяжёлого класса «Протон-М», ракетные комплексы «Тополь-М», разгонный блок космических аппаратов проекта «Наземный старт»); южнокорейская ракеты-носитель KSLV-1 , ракета-носитель Ангара 1.2; ракета-носитель тяжелого класса Ангара-А5 и др.

 

Дети ДРАКОНА (семейство гибридных языков моделирования и программирования на основе ДРАКОНа):

  • Дракон-Javascript, Дракон-Java, Дракон-C#, Дракон-С, Дракон-1С, Дракон-C, Дракон-Python, Дракон-Tcl, Дракон-Lua, Дракон-Erlang, Дракон-Verilog.

ДРАКОН используется в медицинском моделировании и в системе образования (от начальной до высшей школы).

ДРАКОН — графический (визуальный) язык.

ДРАКОН имеет два синтаксиса: графический и текстовый.

Основой графического синтаксиса языка ДРАКОН является алфавит из 27 икон (графических фигур).
Примеры икон

Для каждой иконы задана ориентация, однозначно показано направление соединительных линий, входов и выходов. Графический (визуальный) синтаксис охватывает алфавит икон (правила их размещения и связи)

Текстовый синтаксис задает алфавит символов, правила их комбинирования в текстоэлементы (текстовые надписи внутри или снаружи икон) и привязку к иконам для разных типов выражений).


Учебные материалы:

 

 

 

 

 

kmp