[IGSTK-Developers] State Machine requirements

David Gobbi dgobbi at atamai.com
Wed Dec 14 19:31:28 EST 2005


Hi Kevin,

I have added a wiki page on State Machine Design Guidelines:
http://public.kitware.com/IGSTKWIKI/index.php/State_Machine_Design_Guidelines

It includes the method naming conventions that were discussed at the 
meeting.  I promised to put those on the wiki a month ago, and finally, 
there they are!

Soon I will add a complete diagram for the Attempt pattern including not 
only the states and inputs, but the methods and transition-table entries 
as well, and a couple examples to go along with it.

Your info about transition tables is interesting.  The number unique 
paths is actually going to be much lower than that, since most 
input/state combinations will result in the same "NoAction" or 
"InvalidRequest" non-transitions as a lot of other input/state combinations.

Plus there are some Input/State combinations which can never occur 
because some Inputs are generated internal to a object, and due to the 
state machine of the object those inputs can only occur when in certain 
states.  The success/failure input generated by an Attempt method fall 
into this category, since they only occur in the Attempt state.

Then there are Input/State combinations that can never occur for a the 
particular multi-component SM.

In fact, it would be very useful for analysis purposes to tag certain 
input/state combinations with warnings, so that if our SM analysis shows 
that input/state comination is possible for our application, a warning 
is generated so that we know that we should redesign our application so 
that it can't occur.  This is similar to something you mentioned at the 
meeting, about certain input/state combinations being not valid.

Does this make sense?  Maybe I'm going into a bit too much depth, here.

 - David

Kevin Gary wrote:

> At the 1-year review meeting with came away with some decisions w.r.t.
> state machines that I do not see documented in the requirements. 
> Specifically,
> moving all appropriate component state machines to the "AttemptTo" 
> pattern,
> and ensuring all state machine transition tables are fully populated. 
> I do
> not see this in the requirements list - may I add them? Luis, should 
> it be
> you?
>
> I'm asking because we are working through our requirements for a 
> validation
> tool that includes static structural analysis of IGSTK state machines,
> and these would be two things we check for.
>
> The fully populated state transition table is a particularly 
> interesting one,
> as to do exhaustive testing, here are some of the numbers for some of 
> our SMs:
>
> Class        #States        #Inputs        Node    Edge    Path
> View        2        15        1    15    225
> Tracker        10        9        9    90    9^10
> PulseGenerator    4        7        3    28    7^4 (2401)
> Spatial Object    4        10        3    40    10^4 (10k)
> Landmark3DReg.    9        7        8    63    7^9 (> 40M)
> SerialCommun.    11        11        10    121    11^11 (>285M)
>
> The numbers for node, edge, and path indicate number of test cases 
> required,
> with some assumptions (no loops, path length = #nodes). In practice path
> tests could be much higher. Then if we do scenarios across multiple 
> component
> SMs...
>
> Thanks,
> Kevin G.
>
>
>------------------------------------------------------------------------
>
>_______________________________________________
>IGSTK-Developers mailing list
>IGSTK-Developers at public.kitware.com
>http://public.kitware.com/cgi-bin/mailman/listinfo/igstk-developers
>  
>




More information about the IGSTK-Developers mailing list