I use state machines in my work (or did, less programming these days). They're an impressively effective formalism for modeling systems at various degrees of complexity.
What state is my radio in? When I receive this message what state does it move into? When I send this message what state does it move into? Etc.
Even if our programs aren't direct translations of this model, our specification comes out this way (or is better understood if you view it this way). All of our simulators take this model directly. Our automated testing, similarly, is done by using this state machine model of the system.
What state is my radio in? When I receive this message what state does it move into? When I send this message what state does it move into? Etc.
Even if our programs aren't direct translations of this model, our specification comes out this way (or is better understood if you view it this way). All of our simulators take this model directly. Our automated testing, similarly, is done by using this state machine model of the system.