14.7. State Machines

Critics concerning state machines.

ArgoUML has the following critics in this category.

14.7.1. Reduce Transitions on <state>

Suggestion given state is involved in so many transitions it may be a maintenance bottleneck.

14.7.2. Reduce States in machine <machine>

Suggestion that the given state machine has so many states as to be confusing and should be simplified (perhaps by breaking into several machines, or using a hierarchy).

14.7.3. Add Transitions to <state>

Suggestion that the given state requires both incoming and outgoing transitions.

14.7.4. Add Incoming Transitions to <artifact>

Suggestion that the given state requires incoming transitions.

14.7.5. Add Outgoing Transitions from <artifact>

Suggestion that the given state requires outgoing transitions.

14.7.6. Remove Extra Initial States

Suggestion that there is more than one initial state in the state machine or composite state, which is not permitted in UML.

14.7.7. Place an Initial State

Suggestion that there is no initial state in the state machine or composite state.

14.7.8. Add Trigger or Guard to Transition

Suggestion that a transition is missing either a trigger or guard, one at least of which is required for it to be taken.

14.7.9. Change Join Transitions

Suggestion that the join pseudostate has an invalid number of transitions. Normally there should be one outgoing and two or more incoming.

14.7.10. Change Fork Transitions

Suggestion that the fork pseudostate has an invalid number of transitions. Normally there should be one incoming and two or more outgoing.

14.7.11. Add Choice/Junction Transitions

Suggestion that the branch (choice or junction) pseudostate has an invalid number of transitions. Normally there should be at least one incoming transition and at least one outgoing transition.

14.7.12. Add Guard to Transition

Suggestion that the transition requires a guard.

[Caution]Caution

It is not clear that this is a valid critic. It is perfectly acceptable to have a transition without a guard—the transition is always taken when the trigger is invoked.

14.7.13. Clean Up Diagram

This critic is discussed under an earlier design issues category (see Section 14.3.3, “Clean Up Diagram” ).

14.7.14. Make Edge More Visible

Suggestion that an edge artifact such as an association or abstraction is so short it may be missed. Move the connected artifacts apart to make the edge more visible.

14.7.15. Composite Association End with Multiplicity > 1

An instance may not belong by composition to more than one composite instance. You must change the multiplicity at the composite end of the association to either 0..1 or 1..1 (1) for your model to make sense.

Remember that composition is the stronger aggregation kind and aggregation is the weaker. The problem can be compared to a model where a finger can be an integral part of several hands at the same time.

This is the second well-formedness rule on AssociationEnd in UML 1.4.