Domanda

Sto cercando un framework che fornisce l'esecuzione di macchine a stati gerarchici (HSM).

Questi sono i requisiti per il quadro:

  • Conforme al UML stato semantica macchina (per quanto possibile)
  • supporta almeno
    • run-to-completamento semantica
    • Stati gerarchici
    • azioni
    • ingresso e di uscita
    • le azioni di transizione
    • guardie
    • eventi con parametri personalizzati
  • è orientato agli oggetti o se almeno non vieta disegni OO

La piattaforma di destinazione è un medio-grandi dimensioni sistema embedded con un sistema operativo.

Lo sai una struttura che soddisfa i requisiti di cui sopra? Quali sono i pro ei contro del vostro quadro?

È stato utile?

Soluzione

Controlla la piattaforma Quantum .

L'ho usato su diversi progetti integrati (da molto piccolo a molto grande), e supporta tutti gli elementi di proiettile si richiedono, e altro ancora.

La pagina web per la QP fa un lavoro migliore di se stesso molto spiegare quello che posso fare qui.

Attenzione, il QP non implementa il 100% della funzionalità specificata nelle specifiche UML, ma le partenze sono chiaramente spiegato, e in tutta la mia esperienza con il QP, nessuno di loro è stato un problema per il progetto.

Ci sono anche pacchetti Statechart 2 Boost, che ti sembra di conoscere.

Altri suggerimenti

Si dovrebbe andare a controllare Boost MSM , è nuovo per Boost 1,44, ma sembra abbastanza completo. Non ho ancora provato io stesso, ma sembra abbastanza promettente.

Da oggi c'è un nuovo C ++ (supporti C ++ 11 e C ++ 03 con Boost) disponibili alternative. Si chiama Yasmine (e io sono l'architetto). Esso soddisfa tutti i requisiti di cui sopra.

Alcuni pro e contro (citati dalla pagina web Yasmine):

  

I vantaggi di utilizzare Yasmine

     
      
  • Si fornisce una completa implementazione di UML statali semantica della macchina.
  •   
  • Yasmine è una moderna implementazione C ++ utilizzando C ++ 11 (C ++ 03 di supporto è disponibile, anche).
  •   
  • Perché è C ++ (e non c) il codice si integra bene in codice OO.
  •   
  • E 'ben documentato [...]
  •   
  • Perché lei è open source è possibile controllare la sua implementazione out. Anche questo garantisce la fruibilità a lungo termine e la disponibilità.
  •   
  • La libreria permette di creare macchine a stati in fase di esecuzione.
  •   
  • [...]
  •   
     

Che yasmine non è

     

Non è una biblioteca minima piede di stampa che la priorità in esecuzione su   ogni sistema non importa quanto le risorse pochi sono a disposizione. yasmine non è   affamato di risorse, ma lei non può (e non vuole) competere con   A base di switch-case di metallo nudo librerie non-astrazione.

Nota

So che questa è una vecchia questione, ma è di Google # 1 per "C ++ UML macchina dello Stato" che lo rende molto rilevante.

Se siete alla ricerca di una struttura che supporta macchine a stati gerarchici e concomitanti con la semantica di UML (entrata / uscita, transizioni, guardie, eventi con i parametri, asincrono / sincrono), hanno uno sguardo al mio codice macchina a stati e diagramma generatore .

Invece sull'attuazione della macchina a stati "mano", descrivere la macchina a stati in una semplice lettura e scrittura descrizione XML umana e lasciare che la scrittura stato generatore macchina sorgente codice C ++, C # o Java.

In realtà, per la versione C ++, il codice generato può essere facilmente cross-compilato per un sistema integrato di medie / grandi dimensioni. E 'stato già fatto.

Si può avere uno sguardo al quadro classe template STTCL cioè proposto di fornire la mappatura del mio C ++ UML 2.2 stato diagramma notazione per classi di implementazione. L'approccio STTCL è un perfezionamento della state pattern GoF e cerca di riempire il vuoto (s) alla notazione UML diagramma di stato.

Le implementazioni quadro sono configurabili per quanto riguarda le dipendenze del sistema operativo, per quanto questi sono necessari (solo per i modelli esecuzione asincrona).

C'è un documento PDF a disposizione per spiegare il concetto in modo più dettagliato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top