Hoang Huu Hanh, PhD hhhanh@hueuni.edu.vn UML UNIFIED MODELING LANGUAGE based on online courses and presentations DEFINITION Unified Modeling Language is the successor to the wave of ObjectOriented Analysis and Design methods that appear in the late `80s and early `90s. Most directly unifies the methods of Booch, Rumbaugh (OMT), and Jacobson, but its reach is wider than that. UML went through a standardization process with the OMG (Object Management Group) and is now an OMG standard. Introduction to UML 2 UML History UML 2.0 Publication circa ´05 Industrialization UML 1.4 Publication ´01 Publication of UML 1.1 September ´97 UML 1.1 Publication of UML 1.0, Jan ´97 Standardization UML 1.0 public feedback June ´96 & Oct ´96 OOPSLA ´95 Unified Method 0.8 Booch ´93 Other methods Booch ´91 Unification UML 0.9 & 0.91 UML Partners’ Expertise OMT - 2 OMT - 1 OOSE Fragmentation Introduction to UML 3 WHAT IT IS UML is a modeling language, not a method Most methods consist, at least in principle, of both a modeling language and a process. Modelling Language is the (mainly graphical) notation that methods use to express designs. Process is their advice on what steps to take in doing a design. Modeling Language is the most important part of the method, which is the key part of communication. Introduction to UML 4 WHY USE UML Helps Analysis and Design Used for communication Use the advantages of OO Documentation As stated in The Unified Modeling Language User Guide; UML is a language for: • Visualizing • Specifying • Constructing • Documenting Introduction to UML 5 Visualizing It makes it easier to understand and work through problem Since it is a formal language, it enables other developers familiar with the language to more easily interpret our drawings. Introduction to UML 6 Specifying We must communicate our software system using some common, precise, and unambiguous communication mechanism. Again the formal nature of the UML facilitates this specification quite nicely. Introduction to UML 7 Constructing We know that the UML is a formal language with its own set of syntactical rules. Because of this formality, we can create tools that interpret our models. They can map the elements to a programming language, such as Java, C++. Many tools such as Rational Rose, supports this forward engineering. In fact this is one of the advantages of using a formal modeling tool. Introduction to UML 8 Documenting The models we create are just one of the articats produced throughout the development lifecycle. Using the UML in a consistent fashion produces a set of documentation that can serve as a blueprint of our system. Introduction to UML 9 USAGES Define the boundaries of a system & its major functions ◦ use cases and actors Illustrate use cases ◦ interaction diagrams Define the static structure of a system ◦ class diagrams Model the behavior of objects ◦ state transition diagrams Document the physical implementation architecture ◦ component & deployment diagrams Provide for growth ◦ stereotypes Introduction to UML 10 FUNDAMENTAL UML Models and Views Core Diagrams Fundamental Elements Introduction to UML 11 Model Views Class Diagrams Sequence Diagrams Class Diagrams (Packages) Individual Diagrams «utility» utility1 «interface» Interface3 UseCase1 Class3 UseCase2 Actor1 Fundamental Elements «uses» Interface2 * -End1 * -End2 Actor2 UseCase3 {} Introduction to UML 12 Models and Views UML is more than disjointed diagrams Turn attention to an illustration of the UML from three different perspectives Further insight into these divisions enables us to realize one of the greatest benefits of modeling, which is creating different views of our software system. Introduction to UML 13 Core Elements Construct Description Syntax a description of a set of objects that share the same attributes, operations, methods, relationships and semantics. a named set of operations that interface characterize the behavior of an element. component a modular, replaceable and significant part of a system that packages implementation and exposes a set of interfaces. a run-time physical object that node represents a computational resource. class Introduction to UML «interface» 14 Core Elements (cont’d) Construct Description constraint¹ Syntax a semantic condition or restriction. {constraint} ¹ An extension mechanism useful for specifying structural elements. Introduction to UML 15 DIAGRAMS Individual diagrams contribute more to the specification of a software system. They are composition of many of the fundamental elements. Are mechanism that developers use to communicate and solve problems in the complex aspects of the system. The most common diagram is the Class Diagram, which describe the structural relationships that exist among the classes, can guide developers in understanding our software system’s class structure. Introduction to UML 17 VIEWS As we become more proficient in modeling, we begin to realize that using a combination of diagrams to communicate is most effective. We may need to combine class diagram with a diagram whose intent is to give systems dynamics. By combining these called views. View is a depiction of our system from a particular perspective. By making different views, we can represent our system from different perspectives. Introduction to UML 18 VIEWS (cont’d) There are five main views, ◦ ◦ ◦ ◦ ◦ Use case Design Development Process Physical They must be consistent with each other, because all of them are representing the same system. Can be used to validate each other. Introduction to UML 19 USE CASE VIEW This view documents the system from the customer’s perspective. Terminology used in this view should be domain specific. Depending on the technical nature of our audience, we should avoid obscure technical terms. Diagrams most common in this view are the use case diagrams and, less common, activity diagrams. Organizations transitioning to the UML may wish to work only with use case diagrams early and experiment with activity diagrams over time. Introduction to UML 20 Design VIEW This view documents the system from designer’s and architect’s perspective. Diagrams most common in this view are class and interaction diagrams (either sequence or collaboration), as well as package diagrams illustrating the package structure of our Java application. Introduction to UML 21 Development VIEW This view documents the components that the system is composed of. This view typically contains component diagrams. Except for the most complex Java applications, this view is optional. Introduction to UML 22 Process VIEW This view documents the processes and threads that compose our application. These processes and threads typically are captured on class diagrams using an active class. Because of the advanced nature of active classes, coupled with the volume of use, active classes are beyond the scope of this discussion. Introduction to UML 23 Physical VIEW This view documents the system topology. Deployment diagrams that compose this view illustrate the physical nodes and devices that make up the application, as well as the connections that exist between them. Introduction to UML 24 VIEWS (cont.) We are not limited with the listed views. If there is something that architecturally important, for example security, then we may create a new view (ex: security view) into the system from that perspective. Introduction to UML 25 Modeling Elements Structural elements ◦ class, interface, collaboration, use case, active class, component, node Behavioral elements ◦ interaction, state machine Grouping elements ◦ package, subsystem Other elements ◦ note Introduction to UML 26 Diagrams - The foundation of UML Use Case Diagrams ◦ Requirements Activity Diagrams ◦ Generally what, not who - good to detect parallelism Interaction Diagrams ◦ Collaboration/Communication Diagrams (object centered) ◦ Sequence Diagrams (timeline) Static Structure Diagrams ◦ Objects/Classes/Packages Statechart Diagrams ◦ States of objects with interesting lifecycles Implementation Diagrams ◦ Component Diagrams ◦ Deployment Diagrams Introduction to UML 27 DIAGRAMS As we’ve seen, we can combine diagrams that form models and that can serve as views into our system. If an advantage in modeling is to combine diagrams to form views into our system, then it only makes sense that each diagram has a different focus on what it communicates. Each falls into one of two categories: behavioral, and structural. Most commonly used are use case, sequence, and class diagrams. Introduction to UML 28 Behavioral diagrams Behavioral diagrams depict the dynamic aspects of our system.They are most useful for specifying the collaborations among elements that satisfy the behavior of our system’s requirements. Five diagrams that fall into this category are; ◦ Use case ◦ Activity ◦ State ◦ Sequence ◦ Collaboration (Communication) Mostly used are use case, sequence, and collaboration. Activity and state diagrams are used on an as-needed basis. Activity diagrams visually represent behaviors captured by use cases. State diagrams, on the other hand, are used to illustrate complex transitions in behavior for a single class. Introduction to UML 29 Core Relationships Construct Description Syntax a relationship between two or more classifiers that involves connections among their instances. A special form of association that aggregation specifies a whole-part relationship between the aggregate (whole) and the component part. generalization a taxonomic relationship between a more general and a more specific element. a relationship between two modeling dependency elements, in which a change to one modeling element (the independent element) will affect the other modeling element (the dependent element). association Introduction to UML 30 Core Relationships (cont’d) Construct Description Syntax realization a relationship between a specification and its implementation. Introduction to UML 31 Relationships ScheduleAlgorithm RegistrationForm RegistrationManager addStudent(Course, StudentInfo) Course name numberCredits Student open() addStudent(StudentInfo) name major Professor name tenureStatus CourseOffering location open() addStudent(StudentInfo) Introduction to UML 35 Associations Job Company employer employee Job salary Person boss worker 0..1 Manages Person Account {X or} Corporation Introduction to UML 36 Association Ends 1 Polygon +vertex 3.. Contains {ordered} Point 1 1 -bundle GraphicsBundle color texture density Introduction to UML 37 Relationship Notation 1 - one and only one 4 - four and only 4 0..1 - zero or 1 5..10 - five to and including 10 0..* - zero or more 4..* - four or more Introduction to UML 38 Composition Window scrollbar [2]: Slider title: Header body: Panel Window 1 scrollbar Slider 2 1 1 title 1 Header body 1 Panel Introduction to UML 40 Generalization Shape Separate Target Style Polygon Ellipse Spline . .. Shape Polygon Ellipse Shared Target Style Spline ... Introduction to UML 42 Generalization Vehicle venue power power {overlapping} WindPowered Vehicle Truck venue MotorPowered Vehicle {overlapping} Land Vehicle Water Vehicle Sailboat Introduction to UML 43 Dependencies ClassA ClassD ClassB «friend» «friend» operationZ() «instantiate» «call» ClassC «refine» ClassD ClassC combines two logical classes ClassE Introduction to UML 44 Dependencies Controller «access» «access» «access» Diagram Elements «access» «access» Domain Elements Graphics Core Introduction to UML 45 Derived Attributes and Associations Person birthdate /age {age = currentDate - birthdate} 1 Company 1 Department employer 1 employer department WorksForDepartment Person /WorksForCompany { Person.employer=Person.department.employer } Introduction to UML 46 Links officer Jill:Person treasurer downhillSkiClub:Club president member member Joe:Person member Chris:Person officer Introduction to UML 47 Constraints and Comments Member-of Person Committee {subset} 1 Person 0..1 boss Chair-of Represents an incorporated entity. employee employer 0..1 Company {Person.employer = Person.boss.employer} Introduction to UML 48 Actors An actor is someone or some thing that interacts with the system External Forces ◦ Human interaction ◦ Automated System Driver User Keyboard Operator Traffic Control System <<Backup System>> <<toll booth>> Introduction to UML 49 Use Cases A use case is a pattern of behavior the system exhibits A flow of events document is created for each use case ◦ Each use case is a sequence of related transactions performed by an actor and the system in a dialogue ◦ Details what the system must provide to the actor when the use cases is executed ◦ Written from an actor point of view ◦ Actors are examined to determine their how they interact with the system Break down into the most atomic actions possible Typical contents ◦ ◦ ◦ ◦ How the use case starts and ends Normal flow of events Alternate flow of events Exceptional flow of events Introduction to UML 50 Use Case Diagram Captures system functionality as seen by users Built in early stages of development Purpose ◦ ◦ ◦ ◦ Specify the context of a system Capture the requirements of a system Validate a system’s architecture Drive implementation and generate test cases Developed by analysts and domain experts Introduction to UML 52 Use Case Diagram Use case diagrams are created to visualize the relationships between actors and use cases Pay toll Driver Passager Lost Luggage Customer Service Agent Ramp Maintenance Mechanic Introduction to UML 53 Use Case Diagram Captures system functionality as seen by users Introduction to UML 54 Collaboration Diagrams A type of interaction diagram that describes the organizational layout of the objects that send and receive messages. Semantically equivalent to a sequence diagram. It uses class diagrams layout, and can be used to make more cohesive and less coupled classes. Introduction to UML 55 Collaboration Diagram A collaboration diagram displays object interactions organized around objects and their links to one another 1: set course info 2: process course form : CourseForm 3: add course : Registrar theManager : CurriculumManager aCourse : Course 4: new course Introduction to UML 56 Sequence Diagrams Semantically equivalent to a collaboration diagram. sequence diagram is a type of interaction diagram that describes time ordering of messages sent between objects. Almost in all software development activity, this diagram is used. Introduction to UML 57 Sequence Diagram A sequence diagram displays object interactions arranged in a time sequence Passenger Counter Agent Ticket Gate Agent Plane 1: Give Info 2: Questions 3: Answer 5: Safeguard 4: Print 6:Present 7: Board 8: Overbook 9: Return Introduction to UML 58 The State of an Object A state transition diagram shows ◦ The life history of a given class ◦ The events that cause a transition from one state to another ◦ The actions that result from a state change State transition diagrams are created for objects with significant dynamic behavior Introduction to UML 59 State Transition Diagrams Illustrates internal state-related behavior of an object. Transitions between states help identify, and validate, complex behavior. A class can have at most a single state diagram. Introduction to UML 60 State Transition Diagram Add student[ count < 10 ] Initialization Add Student / Set count = 0 do: Initialize course Open entry: Register student exit: Increment count Cancel Cancel [ count = 10 ] Canceled do: Notify registered students Cancel Closed do: Finalize course Introduction to UML 61 Activity Diagrams Models the flow of activity between processes. These diagrams are most useful in detailing use case behavior. An activity diagram doesn’t show collaboration among objects. Introduction to UML 62 STRUCTURAL DIAGRAMS Diagrams in this category are focused on specifying the static aspects of our system. Of these four diagrams, the class diagram is most often used. when transitioning to the UML, most organizations tend to use class diagrams first because they are excellent mechanisms for communication among developers, as well as tools that can be used for problem solving. There are two forms of class diagrams. The first is the most commonly understood and consists of the classes that compose our system and of the structure among these classes. Unfortunately, the second is not often used but is of equal importance and can be most effective in helping developers understand our system from a high level. A type of class diagram, called a package diagram, often represents the Java packages and the dependencies between them that our application consists of. Introduction to UML 63 Class Diagrams Illustrates a set of classes, packages, and relationships detailing a particular aspect of a system. This diagram is likely the most common one used in modeling. Introduction to UML 64 Class Diagrams A class diagram shows the existence of classes and their relationships in the logical view of a system UML modeling elements in class diagrams ◦ ◦ ◦ ◦ Classes and their structure and behavior Association, aggregation, dependency, and inheritance relationships Multiplicity and navigation indicators Role names Attributes ◦ The structure of a class is represented by its attributes ◦ Attributes may be found by examining class definitions, the problem requirements, and by applying domain knowledge Operations ◦ The behavior of a class is represented by its operations ◦ Operations may be found by examining interaction diagrams Introduction to UML 65 Class Diagram Captures the vocabulary of a system Introduction to UML 66 Multiplicity and Navigation Multiplicity defines how many objects participate in a relationships ◦ Multiplicity is the number of instances of one class related to ONE instance of the other class ◦ For each association and aggregation, there are two multiplicity decisions to make: one for each end of the relationship Although associations and aggregations are bidirectional by default, it is often desirable to restrict navigation to one direction If navigation is restricted, an arrowhead is added to indicate the direction of the navigation Introduction to UML 69 Multiplicity and Navigation ScheduleAlgorithm RegistrationForm 0..* 1 RegistrationManager addStudent(Course, StudentInfo) Course 1 0..* Student name numberCredits open() addStudent(StudentInfo) major 1 3..10 Professor 4 tenureStatus 1 1..* CourseOffering location 0..4 open() addStudent(StudentInfo) Introduction to UML 70 Inheritance Inheritance is a relationships between a superclass and its subclasses There are two ways to find inheritance: ◦ Generalization ◦ Specialization Common attributes, operations, and/or relationships are shown at the highest applicable level in the hierarchy Introduction to UML 71 Inheritance ScheduleAlgorithm RegistrationForm RegistrationManager addStudent(Course, StudentInfo) Course name numberCredits RegistrationUser name Student open() addStudent(StudentInfo) major Professor tenureStatus CourseOffering location open() addStudent(StudentInfo) Introduction to UML 72 The Physical World Component diagrams illustrate the organizations and dependencies among software components A component may be ◦ A source code component ◦ A run time components or ◦ An executable component Introduction to UML 73 Component Diagrams Addresses the static relationships existing between the deployable software components. Examples of components may be .exe, .dll, .ocx, jar files, and/or Enterprise JavaBeans. Component diagrams might be used to show the software components within our application. Components aren’t equivalent to classes. Introduction to UML 74 Component Diagram Captures the physical structure of the implementation Introduction to UML 75 Deploying the System The deployment diagram shows the configuration of run-time processing elements and the software processes living on them The deployment diagram visualizes the distribution of components across the enterprise. Introduction to UML 76 Deployment Diagram Captures the topology of a system’s hardware Introduction to UML 77 Extensibility Mechanisms Stereotype Tagged value Constraint Introduction to UML 78 Extending the UML Stereotypes can be used to extend the UML notational elements Stereotypes may be used to classify and extend associations, inheritance relationships, classes, and components Examples: ◦ Class stereotypes: boundary, control, entity, utility, exception ◦ Inheritance stereotypes: uses and extends ◦ Component stereotypes: subsystem Introduction to UML 79 Deployment Diagrams Describes the physical topology of a system. Typically includes various processing nodes, realized in the form of a device (for example, a printer or modem) or a processor (for example, a server). Deployment diagrams are most useful when we have a complex configuration environment. If our application is to be deployed to multiple servers, across locations, a deployment diagram might be useful. Introduction to UML 80 Q &A … time to ask questions Introduction to UML 81 Thank you! … take a break Introduction to UML 82