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.
Représente un groupe de fonctions défini dans le métamodèle AUTOSAR pour une identification typée au moment de l'exécution.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : de9017db52cfProvenanceQuestions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Représente un groupe de fonctions défini dans le métamodèle AUTOSAR pour une identification typée au moment de l'exécution.
La classe sert de représentation à l'exécution, spécifique à l'implémentation, d'un groupe de fonctions défini dans le métamodèle AUTOSAR. Son instanciation s'effectue exclusivement par le biais d'un spécificateur d'instance du port de groupe de fonctions [SWS_EM_02586], au chemin duquel l'objet reste fermement lié tout au long de sa durée de vie. Afin d'éviter les problèmes lors de l'allocation des ressources, la classe n'est pas copiable, mais prend en charge une sémantique de déplacement (move) sécurisée vis-à-vis des exceptions [SWS_EM_02328]. Des opérateurs de comparaison permettent de déterminer si deux instances représentent le même élément du métamodèle.
Contexte
La classe ara::exec::FunctionGroup agit au sein du module exec (Execution Management) de l'Adaptive Platform en tant que représentation d'un groupe de fonctions défini dans le métamodèle AUTOSAR (ARXML). Une instance de cette classe fournit une abstraction, spécifique à l'implémentation, des informations stockées dans le métamodèle. Conformément à la spécification, la valeur interne d'un objet reste, après sa création sur la base du chemin ARXML, fermement liée à cet élément de métamodèle tout au long de sa durée de vie.
Les principaux partenaires d'interaction qui interviennent sont le composant logiciel utilisateur (State Client), le spécificateur d'instance (ara::core::InstanceSpecifier) ainsi que le métamodèle sous-jacent. La liaison avec la configuration système s'effectue de manière ciblée par l'intermédiaire d'un InstanceSpecifier, qui référence le RPortPrototype d'un StateClientInterface[SWS_EM_02586]. La classe permet ainsi aux processus et aux instances de contrôle de référencer des groupes de fonctions de manière typée et d'en vérifier l'identité, sans avoir à manipuler directement des chemins non structurés ou des descriptions de modèle.
Diagramme de contexte : intégration de la classe ara::exec::FunctionGroup entre la spécification de port et le métamodèle. Sources : [SWS_EM_02586].
Cycle de vie
La création et la gestion des objets ara::exec::FunctionGroup obéissent à des règles strictes en matière de gestion des ressources et d'intégrité de la mémoire. Un constructeur par défaut sans paramètre est explicitement supprimé (= delete) [SWS_EM_02321]. Au lieu de cela, une instance est obligatoirement instanciée par le biais du constructeur standard en lui passant une référence constante vers un ara::core::InstanceSpecifier[SWS_EM_02586]. Ce constructeur est déclaré comme sécurisé vis-à-vis des exceptions (noexcept) et thread-safe.
En ce qui concerne les relations de propriété et l'opération de copie, la classe est conçue comme un type de données déplaçable uniquement (move-only). Le constructeur de copie [SWS_EM_02322] tout comme l'opérateur d'assignation par copie [SWS_EM_02327] sont supprimés afin d'exclure d'emblée tout conflit potentiel et tout problème à l'exécution lors de l'attribution de ressources internes pendant les opérations de copie. Une transmission ou une réorganisation des instances est exclusivement possible via des opérations de déplacement : le constructeur de déplacement [SWS_EM_02328] et l'opérateur d'assignation par déplacement [SWS_EM_02329] permettent le transfert efficace de propriété vers un nouvel objet ou un objet existant. Interprétation : lors d'une opération de déplacement, l'objet cible devrait reprendre de manière transparente la liaison avec l'élément de métamodèle, tandis que l'instance source est placée dans un état valide mais non spécifié. Question Q-99b40860db69ffe6 (ouverte)
La destruction s'effectue de manière déterministe via le destructeur [SWS_EM_02266], qui est également défini comme sécurisé vis-à-vis des exceptions (noexcept). Alors que la construction par l'intermédiaire d'un InstanceSpecifier[SWS_EM_02586] est thread-safe, les opérations de déplacement [SWS_EM_02328], [SWS_EM_02329] ainsi que le destructeur [SWS_EM_02266] sont spécifiés comme non thread-safe (not thread-safe). Si plusieurs threads d'exécution accèdent simultanément à la même instance, une synchronisation côté application est donc requise.
Parcours d'utilisation
L'utilisation nominale de ara::exec::FunctionGroup comprend typiquement la séquence d'étapes de travail suivante :
Mise à disposition de l'identifiant de port : l'application identifie le port d'interface d'état souhaité à partir de son chemin de modèle sous la forme d'un ara::core::InstanceSpecifier.
Instanciation : l'instance FunctionGroup est créée via le constructeur paramétré et liée de manière fixe à l'élément de métamodèle du port cible [SWS_EM_02586].
Vérification d'identité et comparaison : dans le cadre d'interrogations d'état ou de validations, deux instances peuvent être comparées au moyen des opérateurs relationnels operator==[SWS_EM_02267] ou operator!=[SWS_EM_02268]. Une comparaison renvoie true (pour l'opérateur d'égalité) si et seulement si les deux instances représentent exactement le même élément dans le métamodèle ARXML. Les deux opérateurs sont thread-safe et sécurisés vis-à-vis des exceptions.
Déplacement ou nettoyage : si l'objet doit être transféré dans des structures de conteneurs ou transmis entre modules, cela s'effectue via la sémantique de déplacement [SWS_EM_02328], [SWS_EM_02329]. Lorsque l'objet quitte sa portée, le destructeur [SWS_EM_02266] libère toutes les liaisons associées.
Scénarios d'erreur
Dans le domaine des scénarios d'erreur, l'interface se distingue par une conception rigide axée sur la prévention des erreurs :
Opérations de copie non autorisées : les tentatives de duplication d'instances via le constructeur de copie [SWS_EM_02322] ou l'opérateur d'assignation par copie [SWS_EM_02327] entraînent immédiatement une erreur au moment de la compilation (Compile-Time-Error).
Identifiant d'instance manquant : une initialisation incomplète sans référence au métamodèle est empêchée, car le constructeur sans paramètre est supprimé [SWS_EM_02321].
Sécurité vis-à-vis des exceptions (Exception Safety) : toutes les méthodes déclarées de la classe – à savoir la construction par l'intermédiaire d'un spécificateur d'instance [SWS_EM_02586], les opérations de déplacement [SWS_EM_02328], [SWS_EM_02329], les opérateurs de comparaison [SWS_EM_02267], [SWS_EM_02268] et le destructeur [SWS_EM_02266] – sont déclarées comme noexcept et ne lèvent aucune exception C++.
Concurrence non valide : étant donné que les opérations de déplacement et le destructeur ne sont pas thread-safe, des accès parallèles non coordonnés conduisent à un comportement indéfini (conditions de concurrence), ce qui doit être évité au niveau de l'appelant par des mécanismes de synchronisation.
Ce guide a été élaboré par un assistant IA sur la base de la spécification AUTOSAR R25-11.
gemini-3.8-flash-low· 2026-10-13 · Original allemand