Throwing my 2 cents into the bucket:
I'm involved in a small embedded device project, where we wanted our UI to be completely decoupled from a legacy, very heavy, single-threaded component.
We decided to model the whole UI transition flow into DFA's, using events from the touchscreen (pre-processed) as inputs. The state machine is modelled with boost::statechart, which has proven to live to it's thread-safe reputation.
The jump in development speed and the absence of flow bug is nothing short of remarkable from this experiment.
Although I pushed for it, I was a bit fearful that the formality would make developers resist the architecture, but I'm pleasantly surprised the opposite has happened!
...but, we haven't launched yet, so, fingers crossed. :)
We decided to model the whole UI transition flow into DFA's, using events from the touchscreen (pre-processed) as inputs. The state machine is modelled with boost::statechart, which has proven to live to it's thread-safe reputation.
The jump in development speed and the absence of flow bug is nothing short of remarkable from this experiment.
Although I pushed for it, I was a bit fearful that the formality would make developers resist the architecture, but I'm pleasantly surprised the opposite has happened!
...but, we haven't launched yet, so, fingers crossed. :)
EDIT: Added plug to boost. Boost is awesome.