UML ACTIVITY DIAGRAMS Dr. Hoang Huu Hanh, OST – Hue University hanh-at-hueuni.edu.vn 1 Objectives To read and write UML activity diagrams To know when and how to use activity diagrams 2 Topics Processes and process descriptions Activity diagram notation Activity diagram execution model Making activity diagrams 3 Processes and Their Description A process is a collection of related tasks that transforms a set of inputs into a set of outputs. Process description notations describe design processes as well as computational processes we design. An activity diagram shows actions and the flow of control and data between them. 4 Activities and Actions An activity is a non-atomic task or procedure decomposable into actions. An action is a task or procedure that cannot be broken into parts. 5 Activity Graph Elements initial node Do Laundry Sort Clothes Wash Whites action node Wash Darks activity symbol Dry Clothes Fold Clothes activity edge activity final node 6 Execution Model Execution is modeled by tokens that are produced by action nodes, travel over action edges, and are consumed by action nodes. When there is a token on every incoming edge of an action node, it consumes them and begins execution. When an action node completes execution, it produces tokens on each of its outgoing edges. An initial node produces a token on each outgoing edge when an activity begins. An activity final node consumes a token available on any incoming edge and terminates the activity. 7 Branching Nodes Dry Clothes merge node Run Drier [still wet] decision node [else] guards Fold Clothes 8 Branching Execution If a token is made available on the incoming edge of a decision node, the token is made available on the outgoing edge whose guard is true. If a token is available on any incoming edge of a merge node, it is made available on its outgoing edge. Guards must be mutually exclusive. 9 Deadlock Try to Dry Clothes Run Drier [still wet] [else] Fold Clothes RunDrier cannot execute: when the activity begins, there is a token on the edge from the initial node but not on the other incoming edge. 10 Forking and Joining Nodes Do Laundry fork node Sort Clothes Wash Whites Wash Darks Dry Clothes join node Fold Clothes 11 Forking and Joining Execution A token available on the incoming edge of a fork node is reproduced and made available on all its outgoing edges. When tokens are available on every incoming edge of a join node, a token is made available on its outgoing edge. Concurrency can be modeled without these nodes. 12 Object Nodes Data and objects are shown as object nodes. Cruiser Battleship [damaged] Battlegroup Destroyer [captured] object node state object node 13 Control and Data Flows Control tokens do not contain data, object tokens do. A control flow is an activity edge that is a conduit for control tokens. A object flow is an activity edge that is a conduit for object tokens. Rules for token flow through nodes apply to both control and object tokens, except that object is extracted from consumed tokens and added to produced tokens. 14 Control and Data Flow Example Wash and Dry Clothes control flow Wash Clothes Clothes [wet] data flows Run Drier Clothes [still wet] [else] Fold Clothes control flow 15 Activity Parameters Activity parameters are object nodes placed on activity symbol boundaries to indicate data or object inputs or outputs. Activity parameters contain the data or object name. Activity parameter types are specified in the activity symbol beneath the activity name. 16 Activity Parameter Example activity parameter types input activity parameter FindMax a : int[1..*] max : int a max = a[0] i=1 [else] [i < a.length] [else] [max < a.[i]] max = a[i] i++ max output activity parameter 17 Activity Diagram Heuristics Flow control and objects down the page and left to right. Name activities and actions with verb phrases. Name object nodes with noun phrases. Don’t use both control and data flows when a data flow alone can do the job. Make sure that all nodes entering an action node can provide tokens concurrently. Use the [else] guard at every branch. 18 When to Use Activity Diagrams When making a dynamic model of any process. ◦ Design processes (what designers do) ◦ Designed processes (what designers create) During analysis During resolution 19 Summary A process is a collection of related tasks that transforms a set of inputs to a set of outputs. UML activity diagrams model processes by depicting actions and the flow of control and data between them. Activity symbols contain activity graphs consisting of ◦ ◦ ◦ ◦ action nodes action edges data nodes special nodes for starting and stopping activities, branching, forking, and joining Activity diagrams can represent any process and are useful throughout software design. 20