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. |
|