Окончательное руководство по текстовой нотации SysML v2
Язык системного моделирования версии 2 (SysML v2) означает масштабный сдвиг в инженерии систем. Отказавшись от жестких графических ограничений на основе UML версии SysML v1, SysML v2 вводитязыковую, текстовую синтаксическую структуру. Эта синтаксическая структура рассматривает структуру, поведение, требования и анализ как глубоко интегрированные текстовые элементы.
Это всестороннее руководство разбирает основные принципы, концепции и синтаксис SysML v2, используя конкретный примерАвтономныйДрон проектирования.

1. Основная концепция: определения против использования
Самым важным архитектурным понятием в SysML v2 является строгое разделение междуопределениями (чертежами) ииспользованием (контекстными экземплярами).
-
Так
defключевое слово: указывает на повторно используемое определение, тип или чертеж элемента. Оно не существует как физический объект до момента использования. -
Нет
defключевое слово: указывает на использование. Оно представляет собой фактическое появление или экземпляр компонента в конкретной родительской системе.
// ОПРЕДЕЛЕНИЕ: Повторно используемый чертеж для любого аккумулятора
part def Battery;
// ИСПОЛЬЗОВАНИЕ: Конкретный экземпляр аккумулятора внутри нашей системы дрона
part powerSource : Battery;
Это различие позволяет инженерам определить компонент один раз и повторно использовать его в нескольких подсистемах с разными именами, конфигурациями и внутренними соединениями.
2. Структурная архитектура: части, элементы и порты
SysML v2 делит физические или логические архитектуры на компоненты, вещи, которые через них проходят, и интерфейсы, их соединяющие.
Части и элементы
-
part def(Блок / Компонент): определяет структурный, физический или логический компонент системы. -
item def(Элемент потока): Определяет нефиксированные элементы — такие как потоки данных, жидкости, сила или электричество, которые течь между частями.
Порты и интерфейсы
-
порт опр(Спецификация интерфейса): Определяет границу интерфейса, явно указывая, какие данные или элементы могут входить (вход) или выходить (выход).
Вот как эти компоненты объявляются и вложены внутри пространства имен системы:

пакет DroneSystemExample {
приватный импорт ScalarValues::*;
приватный импорт SI::*;
// Основные чертежи (определения)
элемент опр Power;
порт опр PowerOutPort {
выход элемент powerElec : Power;
}
порт опр PowerInPort {
вход элемент powerElec : Power;
}
часть опр FlightController;
часть опр PropulsionSystem;
часть опр Battery;
// Интегрированный контекст системы
часть опр AutonomousDrone {
// Атрибуты / свойства значений
атрибут enduranceActual : Реальный;
// Использование подчастей (инстанцирование определений)
часть flightController : FlightController;
часть propulsionSystem : PropulsionSystem;
часть powerSource : Battery;
// Использование портов (инстанцирование интерфейсов)
порт pBatteryOut : PowerOutPort;
порт pPropulsionIn : PowerInPort;
}
}
3. Структурный столп (проблемное пространство)
В SysML v1 требования часто представляли собой текстовые блоки, изолированные от инженерных вычислений. В SysML v2 требования являютсяпервоклассными текстовыми определениями содержащими метаданные, описательный текст и строго типизированные атрибуты для автоматической проверки.
требование опр RangeRequirement {
doc /* Дрон должен поддерживать непрерывное время полета не менее 45 минут. */
атрибут enduranceTarget : Реальный = 45.0;
}

Следуемость с удовлетворять
Чтобы замкнуть цикл между проблемным пространством (требованиями) и пространством решения (структурой), SysML v2 использует явные ключевые слова отношений, такие как удовлетворять непосредственно внутри контекста части:
часть опр AutonomousDrone {
// Инстанцирует использование требования для удовлетворения определения с чистым сопоставлением
удовлетворять требование : RangeRequirement;
}

4. Столп поведения (пространство выполнения)
SysML v1 вынуждала чёткое разделение между структурой (внутренние блочные диаграммы) и поведением (диаграммы деятельности). SysML v2 полностью устраняет эту границу, делая действия и потоки управления встроенными, доступными в рамках структурных элементов.
Последовательные действия и поток управления
Используя действиеключевое слово, вы можете объявить функции, которые принимают входные данные (вход) и передают выходные данные (выход). Потоки управления записываются линейно с использованием ключевого слова затемключевое слово, что устраняет необходимость в сложных диаграммах управления потоком.
действие executeMission {
вход targetCoordinates;
выход missionStatus;
действие sTakeoff;
затем действие sNavigate;
затем действие sLand;
}
5. Функциональное распределение: соединение поведения с архитектурой
Распределение отвечает на фундаментальный вопрос системной инженерии: Какой компонент выполняет какую функцию?
SysML v2 решает эту задачу чисто с использованием ключевого слова выполняетключевое слово в блоке использования компонентов. Используя нотацию точки (.), вы можете глубоко проникнуть в вложенные циклы действий, чтобы напрямую сопоставить операции с физическим оборудованием.
часть def AutonomousDrone {
// Подкомпоненты распределяют поведение, явно 'выполняя' свои назначенные шаги
часть flightController : FlightController {
выполняет executeMission.sNavigate;
}
часть propulsionSystem : PropulsionSystem {
выполняет executeMission.sTakeoff;
}
// Встроенное определение поведения
действие executeMission {
действие sTakeoff;
затем действие sNavigate;
затем действие sLand;
}
}

Обзор основных ключевых слов
| Ключевое слово | Пространство | Назначение |
|---|---|---|
пакет |
Структурное | Определяет контейнерное пространство имен для организации вашей модели. |
частный импорт |
Структурное | Вводит внешние стандартные библиотеки (например, Масштабные значения или СИ единицы) в область действия без их утечки вниз по потоку. |
def |
Парадигма | Обозначает повторно используемый чертеж или определение типа. |
часть / элемент |
Структурный | Объявляет физический/логический компонент или поток жидкости/данных, протекающий через систему. |
порт |
Структурный | Устанавливает границу интерфейса, определяя вход и выход потоки. |
требование |
Проблема | Определяет текстовый контракт, содержащий типизированные атрибуты и математические цели. |
удовлетворить |
Связь | Соединяет структурный элемент непосредственно с требованием, которое он выполняет. |
действие |
Выполнение | Определяет поведенческий шаг или операционную функцию. |
затем |
Выполнение | Принуждает к последовательному порядку выполнения действий. |
выполнять |
Выделение | Связывает поведенческое действие непосредственно с физической частью, ответственной за его выполнение. |
Полный пример SysML V2: Три кита

пакет DroneSystemExample {
приватный импорт ScalarValues::*;
приватный импорт SI::*;
// ==========================================
// ОСНОВНЫЕ ОПРЕДЕЛЕНИЯ ЧЕРТЕЖА
// ==========================================
элемент определить Мощность;
порт определить PowerOutPort {
выход элемент powerElec : Power;
}
порт определить PowerInPort {
вход элемент powerElec : Power;
}
часть определение FlightController;
часть определение PropulsionSystem;
часть определение Battery;
// ==========================================
// 1. ПИЛОТ ТРЕБОВАНИЙ (пространство проблемы)
// ==========================================
требование определение RangeRequirement {
документация /* Беспилотный летательный аппарат должен обеспечивать непрерывное время полета не менее 45 минут. */
атрибут enduranceTarget : Real = 45.0;
}
// ==========================================
// 2. ПИЛОТЫ СТРУКТУРЫ И ПОВЕДЕНИЯ
// ==========================================
часть определение AutonomousDrone {
атрибут enduranceActual : Реальный;
// Подкомпоненты выделяют поведение, явно «выполняя» свои назначенные шаги
часть flightController : FlightController {
выполнять executeMission.sNavigate;
}
часть propulsionSystem : PropulsionSystem {
выполнять executeMission.sTakeoff;
}
часть powerSource : Аккумулятор;
// Соединения интерфейсов
порт pBatteryOut : PowerOutPort;
порт pPropulsionIn : PowerInPort;
// ИСПРАВЛЕНИЕ 1: Создает использование требования для чистого удовлетворения сопоставления определений
удовлетворять требование : Требование диапазона;
// ==========================================
// 3. СТОЛП СОБЫТИЙ (пространство выполнения)
// ==========================================
// Чистые, последовательные определения действий нативно в области действия
действие executeMission {
в targetCoordinates;
out missionStatus;
action sTakeoff;
then action sNavigate;
then action sLand;
}
}
}














