Using Statecharts decouples behaviour from components

When a statechart drives the behaviour of a component, it makes it possible to separate the code into two separate modules. The code of the component can be much more focused on how things are executed rather than the why of things are the way they are. This means that the behaviour (when things happen, encoded in the statechart) can more easily be separated from the how (what happens, encoded in the component).

This in itself can be beneficial, since it follows a separation of concerns; one component embodies how business logic is executed, while the other component encodes the rules as to what happens when, i.e. which sequence of events cause that business logic to happen.

This separation has a few desirable properties: