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.
Representa un grupo de funciones definido en el metamodelo AUTOSAR para la identificación tipificada en tiempo de ejecución.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: de9017db52cfProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Representa un grupo de funciones definido en el metamodelo AUTOSAR para la identificación tipificada en tiempo de ejecución.
La clase sirve como representación en tiempo de ejecución específica de la implementación de un grupo de funciones definido en el metamodelo AUTOSAR. Su instanciación se realiza exclusivamente a través de un especificador de instancia del puerto de grupo de funciones [SWS_EM_02586], a cuya ruta permanece firmemente vinculado el objeto durante toda su vida útil. Para evitar problemas en la asignación de recursos, la clase no es copiable, pero admite una semántica de movimiento segura ante excepciones [SWS_EM_02328]. A través de operadores de comparación se puede determinar si dos instancias representan el mismo elemento del metamodelo.
Contexto
La clase ara::exec::FunctionGroup actúa en el módulo exec de Adaptive Platform (Execution Management) como representación de un FunctionGroup definido en el metamodelo AUTOSAR (ARXML). Una instancia de esta clase proporciona una abstracción específica de la implementación de la información registrada en el metamodelo. Según la especificación, el valor interno de un objeto, tras su creación basada en la ruta ARXML, permanece firmemente vinculado a este elemento del metamodelo a lo largo de toda su vida útil.
Como interlocutores esenciales aparecen el componente de software de aplicación (State Client), el especificador de instancia (ara::core::InstanceSpecifier) y el metamodelo subyacente. La vinculación con la configuración del sistema se realiza de forma dirigida a través de un InstanceSpecifier, el cual hace referencia al RPortPrototype de un StateClientInterface[SWS_EM_02586]. De este modo, la clase permite a los procesos e instancias de control referenciar grupos de funciones de forma tipificada y verificar su identidad sin tener que manipular directamente rutas o descripciones de modelo no estructuradas.
Diagrama de contexto: integración de la clase ara::exec::FunctionGroup entre la especificación de puerto y el metamodelo. Fuentes: [SWS_EM_02586].
Ciclo de vida
La creación y gestión de objetos ara::exec::FunctionGroup sigue reglas estrictas respecto a la gestión de recursos y la integridad de la memoria. Un constructor predeterminado sin parámetros está explícitamente eliminado (= delete) [SWS_EM_02321]. En su lugar, una instancia se instancia obligatoriamente a través del constructor regular pasando una referencia constante a un ara::core::InstanceSpecifier[SWS_EM_02586]. Este constructor está declarado como seguro ante excepciones (noexcept) y seguro para subprocesos.
En cuanto a las relaciones de propiedad y el proceso de copia, la clase está diseñada como un tipo de datos move-only. Tanto el constructor de copia [SWS_EM_02322] como el operador de asignación por copia [SWS_EM_02327] están eliminados para descartar desde el principio posibles conflictos y problemas en tiempo de ejecución al asignar recursos internos durante las operaciones de copia. La transferencia o reorganización de instancias solo es posible mediante operaciones de movimiento: el constructor de movimiento [SWS_EM_02328] y el operador de asignación por movimiento [SWS_EM_02329] permiten la transferencia eficiente de propiedad a un objeto nuevo o existente. Interpretación: en una operación de movimiento, el objeto de destino asumiría sin problemas la vinculación con el elemento del metamodelo, mientras que la instancia de origen se situaría en un estado válido pero no especificado. Pregunta Q-99b40860db69ffe6 (abierta)
La destrucción se produce de forma determinista a través del destructor [SWS_EM_02266], el cual también está definido como seguro ante excepciones (noexcept). Mientras que la construcción a través de un InstanceSpecifier[SWS_EM_02586] es segura para subprocesos, las operaciones de movimiento [SWS_EM_02328], [SWS_EM_02329] y el destructor [SWS_EM_02266] están especificados como no seguros para subprocesos (not thread-safe). Por lo tanto, si varios hilos de ejecución acceden de forma concurrente a la misma instancia, se requiere una sincronización por parte de la aplicación.
Ruta de uso
El uso regular de ara::exec::FunctionGroup incluye típicamente la siguiente secuencia de pasos de trabajo:
Provisión del identificador de puerto: la aplicación identifica el puerto de interfaz de estado deseado en función de su ruta de modelo en forma de un ara::core::InstanceSpecifier.
Instanciación: mediante el constructor parametrizado, se crea la instancia de FunctionGroup y se vincula firmemente al elemento del metamodelo del puerto de destino [SWS_EM_02586].
Comprobación de identidad y comparación: En el marco de consultas de estado o validaciones, se pueden comparar dos instancias mediante los operadores relacionales operator==[SWS_EM_02267] o bien operator!=[SWS_EM_02268]. Una comparación devuelve true (con el operador de igualdad) si y solo si ambas instancias representan exactamente el mismo elemento en el metamodelo ARXML. Ambos operadores son seguros para hilos (thread-safe) y seguros frente a excepciones.
Traslado o limpieza: Si el objeto se va a transferir a estructuras de contenedor o a transmitir entre módulos, esto se realiza mediante semántica de movimiento [SWS_EM_02328], [SWS_EM_02329]. Si el objeto sale de su ámbito de validez, el destructor [SWS_EM_02266] libera todos los enlaces asignados.
Escenarios de error
En el ámbito de los escenarios de fallo, la interfaz destaca por un diseño rígido orientado a la prevención de errores:
Operaciones de copia no permitidas: Los intentos de duplicar instancias mediante el constructor de copia [SWS_EM_02322] o el operador de asignación por copia [SWS_EM_02327] provocan de inmediato un error en tiempo de compilación (Compile-Time-Error).
Identificador de instancia ausente: Se impide una inicialización incompleta sin referencia al metamodelo, ya que el constructor sin parámetros está eliminado [SWS_EM_02321].
Seguridad frente a excepciones (Exception Safety): Todos los métodos declarados de la clase —en concreto, la construcción mediante un especificador de instancia [SWS_EM_02586], las operaciones de movimiento [SWS_EM_02328], [SWS_EM_02329], los operadores de comparación [SWS_EM_02267], [SWS_EM_02268] y el destructor [SWS_EM_02266]— están declarados como noexcept y no lanzan excepciones de C++.
Concurrencia no válida: Dado que las operaciones de movimiento y el destructor no son seguros para hilos, los accesos paralelos no coordinados dan lugar a un comportamiento indefinido (Race Conditions), lo cual debe evitarse a nivel de llamador mediante mecanismos de sincronización.
Esta guía ha sido curada por un asistente de IA sobre la base de la especificación AUTOSAR R25-11.
gemini-3.8-flash-low· 2026-10-13 · Original en alemán