Class representing Function Group defined in meta-model (ARXML). An instance of this class will represent Function Group defined inside meta-model (ARXML). This class is intended to be an implementation specific representation, of information inside meta-model. Once created based on ARXML path, its internal value stays bounded to it for entire lifetime of a object.
Представляет функциональную группу, определенную в метамодели AUTOSAR, для типизированной идентификации во время выполнения.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: de9017db52cfПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Представляет функциональную группу, определенную в метамодели AUTOSAR, для типизированной идентификации во время выполнения.
Класс служит специфичным для реализации представлением времени выполнения функциональной группы, определенной в метамодели AUTOSAR. Его инстанцирование осуществляется исключительно через спецификатор экземпляра порта функциональной группы [SWS_EM_02586], к пути которого объект остается жестко привязанным на протяжении всего времени своей жизни. Во избежание проблем при выделении ресурсов класс не поддерживает копирование, однако поддерживает безопасную относительно исключений семантику перемещения [SWS_EM_02328]. С помощью операторов сравнения можно определить, отображают ли два экземпляра один и тот же элемент метамодели.
Контекст
Класс ara::exec::FunctionGroup выступает в модуле Adaptive Platform exec (Execution Management) в качестве представления функциональной группы, определенной в метамодели AUTOSAR (ARXML). Экземпляр этого класса предоставляет специфичную для реализации абстракцию информации, заложенной в метамодели. Согласно спецификации, внутреннее значение объекта после его создания на основе пути ARXML остается жестко привязанным к этому элементу метамодели на протяжении всего времени его жизни.
В качестве основных партнеров по взаимодействию выступают использующий программный компонент (клиент состояния), спецификатор экземпляра (ara::core::InstanceSpecifier), а также лежащая в основе метамодель. Связывание с конфигурацией системы целенаправленно осуществляется через InstanceSpecifier, который ссылается на RPortPrototypeStateClientInterface[SWS_EM_02586]. Таким образом, класс позволяет процессам и контролирующим экземплярам типизированно ссылаться на функциональные группы и проверять их на идентичность без необходимости напрямую работать с неструктурированными путями или описаниями моделей.
Контекстная диаграмма: интеграция класса ara::exec::FunctionGroup между спецификацией порта и метамоделью. Источники: [SWS_EM_02586].
Жизненный цикл
Создание объектов ara::exec::FunctionGroup и управление ими подчиняются строгим правилам в отношении управления ресурсами и целостности памяти. Конструктор по умолчанию без параметров явно удален (= delete) [SWS_EM_02321]. Вместо этого экземпляр обязательно инстанцируется через обычный конструктор с передачей константной ссылки на ara::core::InstanceSpecifier[SWS_EM_02586]. Этот конструктор объявлен как безопасный относительно исключений (noexcept) и потокобезопасный.
С точки зрения отношений владения и процесса копирования класс спроектирован как тип данных только для перемещения (move-only). Как конструктор копирования [SWS_EM_02322], так и оператор присваивания с копированием [SWS_EM_02327] удалены, чтобы изначально исключить потенциальные конфликты и проблемы времени выполнения при выделении внутренних ресурсов в процессе копирования. Передача или реорганизация экземпляров возможна исключительно через операции перемещения: конструктор перемещения [SWS_EM_02328] и оператор присваивания с перемещением [SWS_EM_02329] обеспечивают эффективную передачу владения новому или существующему объекту. Интерпретация: при операции перемещения целевой объект, по-видимому, беспрепятственно принимает привязку к элементу метамодели, в то время как исходный экземпляр переводится в допустимое, но неопределенное состояние. Вопрос Q-99b40860db69ffe6 (открытый)
Уничтожение происходит детерминированно через деструктор [SWS_EM_02266], который также определен как безопасный относительно исключений (noexcept). В то время как конструирование через InstanceSpecifier[SWS_EM_02586] является потокобезопасным, операции перемещения [SWS_EM_02328], [SWS_EM_02329], а также деструктор [SWS_EM_02266] специфицированы как непотокобезопасные (not thread-safe). Поэтому, если несколько потоков выполнения конкурентно обращаются к одному и тому же экземпляру, требуется синхронизация на стороне приложения.
Путь использования
Штатное использование ara::exec::FunctionGroup обычно включает следующую последовательность рабочих шагов:
Предоставление идентификатора порта: приложение идентифицирует требуемый порт интерфейса состояния по его пути модели в форме ara::core::InstanceSpecifier.
Инстанцирование: через параметризованный конструктор создается экземпляр FunctionGroup и жестко привязывается к элементу метамодели целевого порта [SWS_EM_02586].
Проверка идентичности и сравнение: в рамках запросов состояния или валидаций два экземпляра можно сравнивать с помощью операторов отношения operator==[SWS_EM_02267] и operator!=[SWS_EM_02268]. Сравнение возвращает true (при операторе равенства) тогда и только тогда, когда оба экземпляра представляют в точности один и тот же элемент в метамодели ARXML. Оба оператора являются потокобезопасными и безопасными относительно исключений.
Перемещение или очистка: если объект необходимо перенести в структуры контейнеров или передать между модулями, это выполняется с помощью семантики перемещения [SWS_EM_02328], [SWS_EM_02329]. Когда объект выходит из своей области видимости, деструктор [SWS_EM_02266] освобождает все связанные привязки.
Сценарии ошибок
В части сценариев ошибок интерфейс отличается строгим дизайном, ориентированным на предотвращение ошибок:
Недопустимые операции копирования: попытки продублировать экземпляры через конструктор копирования [SWS_EM_02322] или оператор присваивания с копированием [SWS_EM_02327] непосредственно приводят к ошибке компиляции (Compile-Time-Error).
Отсутствие идентификатора экземпляра: неполная инициализация без привязки к метамодели предотвращается, поскольку конструктор без параметров удален [SWS_EM_02321].
Безопасность относительно исключений (Exception Safety): все объявленные методы класса — в частности, конструирование через спецификатор экземпляра [SWS_EM_02586], операции перемещения [SWS_EM_02328], [SWS_EM_02329], операторы сравнения [SWS_EM_02267], [SWS_EM_02268] и деструктор [SWS_EM_02266] — объявлены как noexcept и не генерируют исключений C++.
Недопустимая конкурентность: поскольку операции перемещения и деструктор не являются потокобезопасными, некоординированный параллельный доступ приводит к неопределенному поведению (Race Conditions), что должно предотвращаться на уровне вызывающей стороны с помощью механизмов синхронизации.
Настоящее руководство составлено ИИ-ассистентом на основе спецификации AUTOSAR R25-11.
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал