¿Qué máquina de estado de ejecución marcos para C ++ implementar la semántica de UML?

StackOverflow https://stackoverflow.com/questions/3750177

  •  04-10-2019
  •  | 
  •  

Pregunta

Estoy buscando un marco que ofrece la ejecución de máquinas de estados jerárquicos (HSM).

Estos son los requisitos para el marco:

  • Conforme a la semántica de máquina de estado UML (tanto como sea posible)
  • compatible con al menos
      semántica
    • -carrera hasta su finalización
    • estados jerárquicos
    • acciones
    • entrada y salida
    • acciones de transición
    • guardias
    • eventos con parámetros personalizados
  • ¿Está orientado a objetos o no, al menos no prohíbe diseños OO

La plataforma de destino es un mediano a grande de tamaño sistema embebido con un sistema operativo.

¿Conoce a un marco que cumpla los requisitos anteriores? ¿Cuáles son los pros y los contras de su marco?

¿Fue útil?

Solución

Consulte el Plataforma Quantum .

Lo he utilizado en varios proyectos integrados (desde muy pequeño a muy grande), y es compatible con todos los elementos de viñeta que se requieren, y mucho más.

La página web para el QP hace un trabajo mucho mejor de explicar en sí de lo que puedo hacer aquí.

Tenga en cuenta, la persona cualificada no implementa el 100% de la funcionalidad especificada en la especificación UML, pero las salidas se explican con claridad, y en toda mi experiencia con el QP, ninguno de ellos ha sido un problema para el proyecto.

También hay paquetes statechart 2 Boost, que parecen conocer.

Otros consejos

Hay que ir y echa un vistazo a Boost MSM , es nuevo para Boost 1.44 pero parece bastante completa. Todavía no he probado a mí mismo, pero se ve bastante prometedor.

A partir de hoy hay una nueva C ++ (soportes C ++ y C ++ 11 03 con Boost) disponibles alternativo. Se llama Yasmine (y yo soy el arquitecto). Cumple con todos los requisitos anteriores.

Algunos pros y contras (citado en la página web de Yasmine):

Ventajas del uso de Yasmine

  • Se proporciona una implementación completa de la semántica de máquina de estados UML.
  • Yasmine es una moderna aplicación C ++ usando C ++ 11 (03 C ++ soporte está disponible, también).
  • porque es C ++ (y no C) los integra de código muy bien en código OO.
  • Está bien documentado [...]
  • Debido a que es de código abierto se puede comprobar su aplicación a cabo. También esto garantiza la facilidad de uso a largo plazo y la disponibilidad.
  • La biblioteca le permite crear máquinas de estado en tiempo de ejecución.
  • [...]

¿Qué yasmine no es

No es una biblioteca de huella mínima que da prioridad sobre la ejecución de todos los sistemas no importa cuán pocos recursos están disponibles. yasmine no es ávidas de recursos, pero no puede (y no quiere) compiten con bibliotecas no-abstracción desnuda-metálicos a base de switch de los casos.

Nota:

Sé que esto es una cuestión de edad, pero es Google de # 1 para "c ++ máquina de estados UML", que hace que sea muy relevante.

Si usted está buscando un marco que soporta máquinas de estados jerárquicos y concurrentes con la semántica de UML (entrada / salida, transiciones, guardias, eventos con parámetros, síncrono / asíncrono), echar un vistazo a mi código máquina de estado y el diagrama de generador de .

En lugar de aplicación de la máquina de estado "a mano", describa la máquina de estados de una forma sencilla lectura y escritura para la descripción XML humana y dejar que el generador de máquina de estado de escritura del código fuente en C ++, C # o Java.

En realidad, para la versión de la C ++, el código generado puede ser fácilmente-compilado cruz por un sistema embebido medio / de gran tamaño. Se ha hecho ya.

Se puede echar un vistazo a mi C ++ marco de la clase de plantilla STTCL que está acordado para proporcionar el mapeo de UML diagrama de notación 2.2 estado de clases de implementación. El enfoque STTCL es un refinamiento del modelo de estado GoF y trata de llenar el hueco (s) a la notación diagrama de estado UML.

Las realizaciones de marco son configurables en relación con las dependencias del sistema operativo en la medida en que se necesitan (sólo para los modelos de ejecución asíncrono).

Hay una documento PDF disponible explicar el concepto con más detalle.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top