Prev - Next - Down | SDMetrics - the UML design measurement tool |
Rule: NoIncoming | Category: Completeness |
Severity: 1-high | Applies to: all areas |
State has no incoming transitions. Without incoming transitions, the state can never be reached. Add one or more transitions to the state.
|
Rule: NoOutgoing | Category: Completeness |
Severity: 1-high | Applies to: all areas |
State has no outgoing transitions. Without outgoing transitions, the state can never be left. Check if this is merely an oversight or the actually intended behavior. In the former case, add the missing outgoing transition(s). In the latter case, consider adding an outgoing transition to a final state.
|
Rule: IllegalJoin | Category: Correctness |
Severity: 1-high | Applies to: all areas |
Join states must have two or more incoming and exactly one outgoing transition.
|
Rule: IllegalFork | Category: Correctness |
Severity: 1-high | Applies to: all areas |
Fork states must have exactly one incoming and two or more outgoing transitions.
|
Rule: IllegalChoice | Category: Correctness |
Severity: 1-high | Applies to: all areas |
A choice or junction state must have at least one incoming and one outgoing transition.
|
Rule: MissingGuard | Category: Correctness |
Severity: 1-high | Applies to: all areas |
If there are two or more transitions from a choice state, they all must have guards. A choice state realizes a dynamic conditional branch; the guards are required to evaluate the branch conditions. Check the outgoing transitions and add the missing guard(s).
|
Rule: IllegalInitial | Category: Correctness |
Severity: 1-high | Applies to: all areas |
An initial state must have no incoming and exactly one outgoing transition.
|
Rule: IllegalFinal1 | Category: Correctness |
Severity: 1-high | Applies to: all areas |
A final state cannot have any outgoing transitions. Remove the outgoing transitions from the model.
|
Rule: IllegalFinal2 | Category: Correctness |
Severity: 1-high | Applies to: all areas |
A final state cannot have any regions or entry/exit/state behavior. Check the state and remove all regions, entry, exit, and do activities.
|
Rule: IllegalEntryExit | Category: Correctness |
Severity: 1-high | Applies to: all areas |
Entry or exit point is not owned by a top-level region. Move the entry or exit point to the top-level region of the state machine.
|
Rule: IllegalHistory | Category: Correctness |
Severity: 1-high | Applies to: all areas |
The history state has two or more outgoing transitions. A history state can have at most one outgoing transition. Check the history state and remove the surplus outgoing transitions.
|
Rule: Unnamed | Category: Completeness |
Severity: 3-low | Applies to: all areas |
State has no name. While the UML allows for anonymous states, adding a descriptive name to the state increases the readability and understandability of the diagram.
|
Rule: BadForkOutgoing | Category: Correctness |
Severity: 1-high | Applies to: all areas |
Transitions from fork states must not have a guard or triggers. Check the outgoing transitions and remove the guards and triggers.
|
Rule: ForkTargetStates1 | Category: Correctness |
Severity: 1-high | Applies to: all areas |
Fork state has transitions to states in identical regions. The transitions from a fork state must target states of different regions of a concurrent state. Check the outgoing transitions and make sure they all target different regions.
|
Rule: ForkTargetStates2 | Category: Correctness |
Severity: 1-high | Applies to: all areas |
Fork state has transitions to states in different concurrent states. The transitions from a fork state in a state machine must target regions of the same concurrent state. Check the outgoing transitions and make sure they all target the same concurrent state.
|
Rule: JoinSourceStates1 | Category: Correctness |
Severity: 1-high | Applies to: all areas |
Join state has transitions from states in identical regions. The transitions to a join state must originate from states of different regions of a concurrent state. Check the incoming transitions and make sure they all come from different regions.
|
Rule: JoinSourceStates2 | Category: Correctness |
Severity: 1-high | Applies to: all areas |
Join state has transitions from states in different concurrent states. The transitions to a join state in a state machine must originate from regions of the same concurrent state. Check the incoming transitions and make sure they all come from the same concurrent state.
|
Rule: BadForkTarget | Category: Correctness |
Severity: 1-high | Applies to: all areas |
Transitions from fork states in a state machine must not target a pseudo state. Check the outgoing transitions and make sure they do not point to any pseudo states.
|
Rule: BadJoinSource | Category: Correctness |
Severity: 1-high | Applies to: all areas |
Transitions to join states in a state machine must not originate from a pseudo state. Check the incoming transitions and make sure they do not come from pseudo states.
|
Rule: BadIncoming | Category: Correctness |
Severity: 1-high | Applies to: all areas |
Transitions to join states must not have triggers or guards. Check the incoming transitions and remove all triggers and guards.
|
Rule: BadOutgoing | Category: Correctness |
Severity: 1-high | Applies to: all areas |
Transitions from pseudo states must not have any triggers. Check the outgoing transitions and remove all triggers and guards.
|
Rule: MissingTarget | Category: Correctness |
Severity: 1-high | Applies to: all areas |
State has an outgoing transition not attached to a target state. Check the outgoing transitions of the state and attach any loose ends to the proper target states.
|
Rule: MissingSource | Category: Correctness |
Severity: 1-high | Applies to: all areas |
State has an incoming transition not attached to a source state. Check the incoming transitions of the state and attach any loose ends to the proper source states.
|
Prev | Up | Next |
Appendix C.17 "Region Rules" | Contents | Appendix C.19 "Activitygroup Rules" |