Una macchina a stati finiti gerarchici deve solo "esistere" in uno stato foglia?

3

Con le macchine a stati gerarchici e le loro controparti nei diagrammi di stato UML, tutti i riferimenti che ho trovato finora suggeriscono che uno stato attivo deve essere uno stato foglia.

Ho esaminato Samek e documenti che implementano HFSM in C ++. La maggior parte suggerisce che qualsiasi transizione verso uno stato composito (genitore letto) deve essere seguita da successive transizioni iniziali su uno stato foglia.

In primo luogo, questo è nella definizione?

Dato che questi 'programmi per differenza', sicuramente uno stato composito potrebbe avere tutto ciò di cui abbiamo bisogno per uno stato attuale!?

    
posta QtlyOptmstc 05.10.2016 - 16:32
fonte

1 risposta

4

Ci si aspetterebbe che una macchina a stato attivo, singolo, piatto sia sempre nello stesso stato.

Un diagramma gerarchico, come in Harel statecharts , (da cui deriva parte di UML) è efficacemente una composizione di due o più statecharts indipendenti, che lascia intatti i singoli statecharts originali che li collegano invece di appiattire tutte le composizioni in una singola, (potenzialmente molto) grande, piatta statechart.

Simili - che ci aspettiamo di trovare le macchine a stati individuali in uno stato - vale ancora per questi singoli statecharts anche se combinati in gerarchia, tranne che il meccanismo gerarchico consente la congiunzione (ortogonale AND-state) e disgiunzione (OR-state): qui il significato che significa che alcune delle macchine a stato composto possono o non possono essere attive.

Da Macchine a stati UML

If a system is in the nested state, ... (called the substate), it also (implicitly) is in the surrounding state ... (called the superstate).

In altre parole, e forse indicato dall'altra direzione, quando un superstato è attivo che ha un substato, anche il substate è attivo e in alcuni stati particolari. Questo si applica in modo ricorsivo, che è forse il motivo per cui sembra che ciò che è attivo sia sempre stato foglia.

Most suggest any transition to a composite (read parent) state must be followed by successive initial transitions to a leaf state.

Si noti che nel codice che si descrive, sembra che la transizione a un nuovo superstato sia seguita da una transizione nel sottostato, tuttavia, questi due insieme devono apparire a qualsiasi osservatore esterno come se fossero entrambi avvenuti atomicamente. Sarebbe invalido l'astrazione delle macchine di stato gerarchiche per rivelare, agli utenti dell'astrazione, la situazione intermedia di essere nel superstato ma non (ancora) in nessun sottostato.

Per le tue domande:

Firstly, is this in the definition?

Sì. Puoi guardarlo dal superstato al sotto-stato (o viceversa): quando un superstato diventa attivo, il suo substate diventa attivo.

surely a composite state could have all we need for an actual state!?

Sì, un po ', ma solo dentro e di se stesso e a quel livello, che è dire se lo stato non avesse uno stato secondario (ma non sarebbe un composito).

E quindi la vera risposta è no, non è sufficiente (la descrizione dello stato composito non è tutto ciò di cui abbiamo bisogno per descrivere correttamente lo stato della macchina di stato) in presenza di substate (macchine a stati nidificati) per superstati attivi (compositi), poiché i loro sottostati sono attivi e devono anche essere in uno stato valido per il bambino (ad esempio anche solo nel loro stato iniziale).

    
risposta data 05.10.2016 - 18:29
fonte

Leggi altre domande sui tag