|
Is the activity diagram used appropriately?
| Activity diagrams should be used for code generation or algorithmically-complex methods and functions or as non-code
generation documentation of algorithmically complex methods or functions. |
Does the activity diagram represent flow of control?
| Activity diagrams are best at representing algorithms not state-based behavior; that is they should not use incoming events
extensively. |
Does the Activity diagram represent the behavior of appropriate elements?
| Activity diagrams usually represent the behavior of a function or class method but may also depict the behavior of an
algorithmically-complex use case. |
Are the activities indicated with an initial pseudostate?
Are the terminal activities indicated with a terminal pseudostate?
Do forks and joins show independence of execution?
| Forks and joins do not necessarily indicate OS thread but rather they indicate the independence between two or more
sequences of actions. |
Are guards only used at conditional pseudostates?
Are guard conditions orthogonal?
| Guard conditions should be non-overlapping, so that it is clear which path is taken; for example [x>0] and <x <=)]
are orthogonal, but [x>0] and [x>10] are not. |
Is the extent of the guards complete?
| There should be some path taken from a conditional pseudostate. It may be necessary to add an [else] guard on a
branch is the extent is not completely covered by existing guards. For example, the extent of x is not covered by the
guards [x<0] and [x>0} since the case of x ==0 is not covered. |
Is the overall flow primarily top-down and left-right?
| This is not always achievable but when possible it simplifies reading the diagram. |
Are all activities reachable?
Is there proper termination of the diagrams?
| Most algorithms complete and this should be shown with a terminal pseudostate. Avoid black hold activities that have
incoming transitions but not exits. |
Do the diagrams use swimlanes to group and allocate activities to structural elements?
| Swimlanes are an clear means by which the allocation of activities to classes, objects, and actors can be shown. |
|