Справка Business Studio
Переход на сайт нейросети Perplexity AI для поиска информации о Business Studio. Подробнее о возможности см. по ссылке

Содержание справки

Программная инженерия

Для моделирования ИТ-систем используют три основных подхода: универсальный язык UML, структурные ER-диаграммы (для баз данных) и иерархическую модель C4 с уровнями от контекста до кода. Справочники UML, ER и C4 располагаются на вкладке Программная инженерия.

Рисунок 1. Вкладка Программная инженерия

UML

Unified Modeling Language (UML) — это стандартизированный язык для визуального моделирования систем, который используется для разработки программного обеспечения и других сложных систем. UML включает в себя набор диаграмм, каждая из которых служит для отображения различных аспектов системы. Поддерживаются следующие типы диаграмм UML:

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

ER-диаграммы

Entity-Relationship (ER) диаграммы — это инструмент моделирования данных, который используется для проектирования баз данных. Они позволяют моделировать сущности данных, связи между ними, их атрибуты для дальнейшего создания таблиц реляционной СУБД.

С4

C4 (Context, Containers, Components, Code) — это нотация для визуализации и документирования архитектуры программного обеспечения через четыре уровня абстракции, от общего контекста системы до деталей реализации.

Дорожная карта (Roadmap)

Дорожная карта (Roadmap) — это инструмент стратегического планирования, который визуализирует эволюцию системы, продукта или технологического стека во времени.

UML

Unified Modeling Language (UML) — это язык моделирования, разработанный для визуализации, спецификации, конструирования и документирования программных систем. UML был разработан в 1990-х годах с целью объединения различных методов объектно-ориентированного проектирования в единый стандартный язык, который мог бы быть использован для описания как программного обеспечения, так и других систем. UML предоставляет универсальный и гибкий инструмент для моделирования и проектирования сложных систем. Он поддерживает множество аспектов, позволяя моделировать как структуру, так и поведение системы, и может быть использован на различных стадиях жизненного цикла разработки программного обеспечения.

Цели UML

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

Применение UML

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

Основные элементы UML

Основные элементы UML представлены в таблице 1.

Символ Назначение Описание
 Accept event actionAcceptEventAction — это действие, которое ожидает наступления одного или нескольких определённых событий.
 Accept time event actionAccept time event action
 ActionДействие (Action) — это базовая единица исполняемой функциональности. Выполнение действия представляет некоторое преобразование или обработку в моделируемой системе. Действия представляют исполняемые узлы (ExecutableNodes) внутри активностей (Activities) и могут также использоваться в рамках взаимодействий (Interactions).
 ActivityАктивность (Activity) — это спецификация параметризованного поведения в виде согласованной последовательности подчинённых единиц.
 Activity final nodeActivityFinalNode — это конечный узел (FinalNode), который завершает выполнение своей активности (Activity) или структурированного узла активности (StructuredActivityNode).
 Activity parameter nodeActivityParameterNode — это объектный узел (ObjectNode) для приёма значений из входных параметров или предоставления значений выходным параметрам активности.
 ActorАктор (Actor) определяет роль, которую играет пользователь или другая система, взаимодействующая с субъектом.
 ArtifactАртефакт — это спецификация физического носителя информации, который используется или создаётся в процессе разработки программного обеспечения, развёртывания или эксплуатации системы. Примеры артефактов: файлы моделей, исходные файлы, скрипты, исполняемые файлы, таблицы в системе баз данных, результаты разработки или текстовые документы, почтовые сообщения. Артефакт является источником развёртывания узла (Node).
 ClassКласс (Class) классифицирует набор объектов и определяет признаки, характеризующие структуру и поведение этих объектов. Класс может иметь внутреннюю структуру и порты (Ports).
 CollaborationCollaboration описывает структуру взаимодействующих элементов (ролей), каждый из которых выполняет специализированную функцию, а вместе они реализуют некоторую желаемую функциональность.
 ComponentКомпонент (Component) представляет модульную часть системы, которая инкапсулирует своё содержимое и чьё проявление может быть заменено в её окружении.
 Deployment specificationСпецификация развёртывания (DeploymentSpecification) определяет набор свойств, которые определяют параметры выполнения артефакта компонента, развёрнутого на узле. Спецификация развёртывания может быть нацелена на конкретный тип контейнера. Артефакт, который материализует или реализует свойства спецификации развёртывания, является дескриптором развёртывания.
 DeviceУстройство (Device) — это физический вычислительный ресурс с возможностью обработки, на котором могут быть развёрнуты артефакты для выполнения. Устройства могут быть сложными (т.е. состоять из других устройств).
 Execution environmentСреда выполнения (ExecutionEnvironment) — это узел, представляющий среду для выполнения определённых типов компонентов, развёрнутых на нём в виде исполняемых артефактов.
 Expansion nodeExpansionNode — это объектный узел (ObjectNode), используемый для указания коллекции входных или выходных данных для ExpansionRegion. Коллекция входных данных ExpansionRegion содержит коллекцию, которая распадается на отдельные элементы внутри региона, содержимое которого выполняется по одному разу для каждого элемента. Коллекция выходных данных ExpansionRegion объединяет отдельные элементы, полученные при выполнении внутри региона, в коллекцию для использования вне региона.
 Extension pointТочка расширения (ExtensionPoint) идентифицирует точку в поведении варианта использования, где это поведение может быть расширено поведением другого (расширяющего) варианта использования, как указано в отношении Extend.
 Information itemInformationItems представляют множество видов информации, которые могут передаваться от источников к целям очень абстрактным образом. Они представляют виды информации, которые могут перемещаться внутри системы, но не детализируют передаваемую информацию. Детали передаваемой информации определяются другими классификаторами, которые в конечном итоге могут определять InformationItems. Следовательно, InformationItems не могут быть созданы и сами по себе не имеют признаков, обобщений или ассоциаций. Важное использование InformationItems — представление информации на ранних этапах проектирования, возможно, до принятия детальных решений моделирования, которые в конечном итоге их определят. Другая цель InformationItems — абстрагировать части сложных моделей менее точно, но более обобщённо и понятно.
 InterfaceИнтерфейсы (Interfaces) объявляют согласованные сервисы, которые реализуются BehavioredClassifiers через InterfaceRealizations.
 ModelМодель (Model) дает представление о физической системе. Это абстракция физической системы, сформированная с определённой целью. Эта цель определяет, что должно быть включено в модель, а что несущественно. Таким образом, модель полностью описывает те аспекты физической системы, которые отвечают цели модели, на соответствующем уровне детализации.
 NodeУзел (Node) — это вычислительный ресурс, на котором могут быть развёрнуты артефакты для выполнения. Узлы могут быть соединены через пути коммуникации для определения сетевых структур.
 Object nodeObjectNode — это абстрактный узел активности (ActivityNode), который может содержать токены внутри объектного потока в активности. ObjectNodes также поддерживают выбор токенов, ограничение на количество содержащихся токенов, спецификацию состояния, требуемого для удержания токенов, и передачу управляющих значений.
 OperationОперация (Operation) — это поведенческий признак (BehavioralFeature) классификатора, который определяет имя, тип, параметры и ограничения для вызова связанного поведения. Операция может вызывать как выполнение методов, так и другие поведенческие ответы. Operation специализирует TemplateableElement для поддержки спецификации шаблонных и связанных операций. Operation специализирует ParameterableElement, чтобы указать, что операция может быть представлена как формальный параметр шаблона и предоставлена как фактический параметр в привязке шаблона.
 PackageПакет (Package) может иметь одно или несколько применений профилей (profile applications), чтобы указать, какие профили были применены. Поскольку профиль — это пакет, возможно применять профиль не только к пакетам, но и к профилям. Пакет специализирует TemplateableElement, а PackageableElement специализирует ParameterableElement, чтобы указать, что пакет может использоваться как шаблон, а PackageableElement — как параметр шаблона. Пакет используется для группировки элементов и предоставляет пространство имён для сгруппированных элементов.
 PortПорт (Port) — это свойство инкапсулированного классификатора (EncapsulatedClassifier), которое определяет отдельную точку взаимодействия между этим классификатором и его окружением или между (поведением) классификатора и его внутренними частями. Порты соединяются со свойствами EncapsulatedClassifier через коннекторы (Connectors), через которые могут быть сделаны запросы для вызова BehavioralFeatures. Порт может определять сервисы, которые EncapsulatedClassifier предоставляет (предлагает) своему окружению, а также сервисы, которые EncapsulatedClassifier ожидает (требует) от своего окружения. Порт может иметь связанный ProtocolStateMachine.
 ProfileПрофиль (Profile) определяет ограниченные расширения для эталонной метамодели с целью адаптации метамодели к конкретной платформе или домену.
 PropertyСвойство (Property) — это структурный признак (StructuralFeature). Свойство, связанное через ownedAttribute с классификатором (кроме ассоциации), представляет атрибут и может также представлять конец ассоциации. Оно связывает экземпляр классификатора со значением или набором значений типа атрибута. Свойство, связанное через memberEnd с ассоциацией, представляет конец ассоциации. Тип свойства — это тип конца ассоциации. Свойство может быть целью развёртывания (DeploymentTarget) в отношении развёртывания. Это позволяет моделировать развёртывание на иерархические узлы, имеющие свойства, функционирующие как внутренние части. Property специализирует ParameterableElement, чтобы указать, что свойство может быть представлено как формальный параметр шаблона и предоставлено как фактический параметр в привязке шаблона.
 StateСостояние (State) моделирует ситуацию, в течение которой выполняется некоторое (обычно неявное) инвариантное условие.
 StereotypeСтереотип (Stereotype) определяет, как существующий метакласс может быть расширен, и позволяет использовать платформенно- или доменно-специфичную терминологию или нотацию вместо или в дополнение к тем, которые используются для расширенного метакласса.
 Use caseВариант использования (UseCase) определяет набор действий, выполняемых его субъектами, который даёт наблюдаемый результат, имеющий ценность для одного или нескольких акторов или других заинтересованных сторон каждого субъекта.
Таблица 1. Основные элементы UML

Диаграммы UML

Язык UML включает в себя несколько ключевых элементов и типов диаграмм, которые позволяют моделировать различные аспекты системы. Основные типы диаграмм UML представлены в таблице 2.

Тип диаграммы Описание
Диаграмма классов Представляет классы, их атрибуты, методы и связи между ними, такие как ассоциации, наследование и агрегация.
Диаграмма компонентов Показывает компоненты системы и их связи, а также развертывание этих компонентов на физическом уровне.
Диаграмма развертывания Отображает развертывание программных компонентов на аппаратных узлах и связи между этими узлами.
Диаграмма активности Показывает последовательность действий, поток управления и взаимодействие между активностями в системе.
Диаграмма последовательности Показывает порядок сообщений и взаимодействий между объектами во временной последовательности.
Диаграмма состояний Отображает состояние объекта, переходы между состояниями и события, которые приводят к этим переходам.
Диаграмма коллаборации Отображает взаимодействие между объектами или компонентами в системе, акцентируя внимание на их взаимосвязях.
Диаграмма случаев использования Показывает функции или цели системы с точки зрения её пользователей и взаимодействие между ними.
Диаграмма информационных потоков Показывает, как информация перемещается между различными компонентами системы и как она используется.
Диаграмма пакетов Отображает организацию элементов модели в логические группы или пакеты, показывая их зависимости и связи.
Диаграмма профиля Позволяет определять и применять специализированные профили для расширения стандартных элементов UML.
Таблица 2. Типы диаграмм UML

ER

ER-диаграмма (Entity-Relationship Diagram) — это инструмент для моделирования данных, используемый для визуального представления сущностей, их атрибутов и связей между ними. Она служит основой для проектирования реляционных баз данных и помогает понять структуру данных и их взаимосвязи. В программе реализована нотация ER диаграммы «Crow’s foot». Основные компоненты ER-диаграммы

  • Сущности (Entities): представляют собой объекты или концепции, которые имеют значение для системы и для которых нужно хранить данные. Например, в системе управления складом сущностями могут быть: Товар, Склад, Транспортное средство.
  • Атрибуты (Attributes): описывают характеристики или свойства сущностей. Например, для сущности Товар атрибутами могут быть Артикул, Название, Вес, Габариты, Категория.
  • Связи (Relationships): показывают, как сущности взаимодействуют друг с другом. Например, связь между Товаром и Складом может обозначать, что товар хранится на складе.

Классы связей на ER-диаграмме

В ER-диаграммах связи (или отношения) между сущностями могут быть различными в зависимости от того, сколько записей одной сущности может быть связано с записями другой сущности. В таблице 3 приведено подробное описание каждого типа связи.

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

C4

Нотация C4 — это созданный Саймоном Брауном язык для моделирования архитектуры программного обеспечения, который использует идею иерархии представлений для упрощения понимания модели. Основная цель C4 — предоставить набор согласованных диаграмм, которые описывают статическую структуру системы, начиная с высокоуровневого контекста и последовательно углубляясь в детали. Нотация C4 предлагает простую, интуитивно понятную архитектуру программной системы. C4 используется на этапах проектирования, документирования и сопровождения программных систем.

Элементы нотации C4

Элементы нотации C4 представлены в таблице 3.

Символ Назначение Описание
 Blob-хранилище или хранилище контентаХранилище блобов или сеть доставки контента.
 Serverless-функцияОтдельная serverless-функция.
 Shell-скриптОдиночный shell-скрипт, написанный на Bash и т.д.
 База данныхСхема или база данных в системе управления реляционными базами данных, документоориентированное хранилище, графовая база данных и др., такие как MySQL, Microsoft SQL Server, Oracle Database, MongoDB, Riak, Cassandra, Neo4j и т.д.
 Клиентское веб-приложениеJavaScript-приложение, работающее в веб-браузере с использованием Angular, Backbone.JS, jQuery и др.
 КодКомпоненты состоят из одного или нескольких элементов кода, созданных с использованием базовых строительных блоков языка программирования, который вы используете: классов, интерфейсов, перечислений, функций, объектов и т. д.
 КомпонентКомпонент — это группа связанных функций, инкапсулированных в чётко определённом интерфейсе.
 Консольное серверное приложениеАвтономное приложение, пакетная обработка и т.д.
 КонтейнерКонтейнер представляет собой приложение или хранилище данных.
 Мобильное приложениеМобильное приложение
 Настольное клиентское приложениеНастольное приложение Windows на WPF, настольное приложение OS X на Objective-C, кроссплатформенное настольное приложение на JavaFX и др.
 ПользовательПользователь
 Программая системаПрограммная система — это высший уровень абстракции, описывающий нечто, представляющее ценность для пользователей, будь то люди или нет. Это включает в себя программную систему, которую вы моделируете, и другие программные системы, от которых она зависит (или наоборот).
 Серверное веб-приложениеВеб-приложение Java EE на Apache Tomcat, приложение ASP.NET MVC на Microsoft IIS, приложение Ruby on Rails на WEBrick, приложение Node.js и т.д.
 Файловая системаПолная локальная файловая система или часть сетевой файловой системы.
Таблица 3. Элементы нотации C4

Структура и уровни нотации C4

Нотация C4 построена вокруг четырех основных типов диаграмм, каждый из которых соответствует своему уровню детализации и предназначен для своей аудитории. Описания типов диаграмм C4 представлены в таблице 3

Тип диаграммы Целевая аудитория Описание и ключевые вопросы
Диаграмма контекста (1-й уровень) Все заинтересованные стороны Показывает систему в масштабе. Что делает система, кто её использует и с какими внешними системами она взаимодействует.
Диаграмма контейнеров (2-й уровень) Архитекторы, разработчики Раскрывает высокоуровневую технологическую архитектуру. Из каких крупных приложений (контейнеров) состоит система и как они взаимодействуют?
Диаграмма компонентов (3-й уровень) Разработчики, архитекторы Детализирует один контейнер. Из каких компонентов состоит конкретное приложение и как они между собой связаны?
Диаграмма кода (4-й уровень) Разработчики Показывает детальную реализацию компонента. Какие классы, интерфейсы используются и как они связаны?
Таблица 4. Типы диаграмм C4