SlideShare a Scribd company logo
Module 3 – Advanced Features: Part I - Structural Diagrams
3 basic building blocks of UML   -  Diagrams Graphical representation of a set of elements. Represented by a connected graph: Vertices are things; Arcs are relationships/behaviors. 5 most common views built from  UML 1.x: 9 diagram types . UML 2.0: 12 diagram types Behavioral Diagrams Represent the  dynamic  aspects. Use case Sequence;  Collaboration Statechart Activity Structural Diagrams Represent the  static  aspects  of a system. Class;  Object Component Deployment Behavioral Diagrams Use case Statechart Activity Structural Diagrams Class;  Object Component Deployment Composite Structure Package Interaction Diagrams Sequence;  Communication Interaction Overview Timing
Class Diagrams Structural Diagrams Class ;  Object Component Deployment Composite Structure Package
Class Diagram Three modeling perspectives for Class Diagram Conceptual :   the diagram reflects the domain Specification :   focus on interfaces of the software  (Java supports interfaces) Implementation :   class (logical database schema) definition to be implemented in code and database. The basis for all object modeling All things lead to this Most users of OO methods take an implementation perspective, which is a shame because the other perspectives are often more useful.  --  Martin Fowler Most common diagram. Shows a set of classes, interfaces, and collaborations and their relationships  (dependency, generalization, association and realization);  notes too . Represents the static view of a system ( With active classes, static  process  view)
Names may cause object to change state Customer Account Bank Java::awt::Polygon simple name - start w. upper case path name = package name ::package name::name only the name compartment, ok Attributes short noun - start w. lower case balance: Real = 0 type/class default value <<constructor>>   +addAccount() <<process>>   +setBalance( a : Account) +getBalance(a: Account): Amount … <<query>> isValid( loginID : String): Boolean signature Operations Classes ellipsis for additional  attributes or operations stereotypes to categorize
Responsibilities A collaborator is also a class which the (current) class interacts with to fulfill a responsibility Responsibilities -- handles deposits -- reports fraud to managers Account anything that a class knows or does   (Contract or obligation) An optional 4 th  item carried out by attributes and operations. Free-form text; one phrase per responsibility. Technique - CRC cards (Class-Responsibility-Collaborator);  Kent Beck and Ward Cunningham’89 Customer Account Opens account Knows name Knows address Account Manager Knows interest rate Knows balance Handles deposits Reports fraud to  manager
Scope & Visibility Public  - access allowed for any outside classifier (+). Protected  - access allowed for any descendant of the classifier (#). Private  - access restricted to the classifier itself (-). ( using adornments in JBuilder ) +   addMessage( m : Message ) : Status #   setCheckSum() -   encrypt() header : FrameHeader uniqueID : Long Frame class scope public protected private Instance scope Instance  Scope — each instance of the classifier holds its own value. Class  Scope — one value is held for all instances of the classifier   (underlined). -   getClassName() Public class Private class Protected class Public method Public attribute
Multiplicity consolePort [ 2..* ] : Port NetworkController 1 ControlRod 3 multiplicity singleton public class Singleton {    private static Singleton instance = null; private Singleton() {}     public static Singleton getInstance() {       if (instance == null) {          instance = new Singleton();       }       return instance;    } }  Singleton - instance + getInstance():Singleton consolePort [ 2..* ] : Port NetworkController Using Design Pattern
Relationships ConsoleWindow DialogBox Control Event association dependency generalization PowerManager ChannelIterator Controller EmbeddedAgent <<friend>> generalization  (multiple inheritance) association navigation stereotyped dependency realization Window open() close() SetTopController authorizationLevel startUp() shutDown() Connect() <<interface>> URLStreamHandler openConnection() parseURL() setURL() toExternalForm()
Dependency A change in one thing may affect another . AudioClip record(m: Microphone ) start() stop() Microphone name dependency The most common dependency between two classes is one where one class <<use>>s another as a  parameter to an operation . CourseSchedule addCourse(c : Course) removeCourse(c : Course Course Usually initial class diagrams will not have any significant number of dependencies in the beginning of analysis  but will as more details are identified. Using relationship
Dependency – Among Classes AbstractClass {abstract} attribute concreteOperation() abstractOperation() <<metaclass>> MetaClassName <<interface>> InterfaceName operation() ClassName -simpleAttribute: Type = Default #classAttribute: Type + / derivedAttribute: Type +operation(in arg: Type = Default): ReturnType objectName: ClassName Attribute = value simpleAttribute: Type = Default classAttribute: Type /derivedAttribute: Type ClientClass <<use>> <<instanceOf>> <<instanceOf>> realization generalization
Dependency –Among Classes Eight Stereotypes of Dependency Among  Classes bind :  the source instantiates the target template using the given actual parameters derive :  the source may be computed from the target friend :  the source is given special visibility into the target instanceOf  :  the source object is an instance of the target classifier instantiate :  the source creates instances of the target powertype :  the target is a powertype of the source; a powertype is a classifier whose objects are all the children of a given parent refine :  the source is at a finer degree of abstraction than the target use :  the semantics of the source element depends on the semantics of the public part of the target
Dependency –Among Use Cases Two Stereotypes of Dependency Among  Use Cases : extend :   the target use case extends the behavior of the source include :   the source use case explicitly incorporates the behavior of another use case  at a location  specified by the source Use Case A Use Case B Use Case C <<extend>> <<include>> System Actor <<actor>> Actor Supply Customer Info. Request Catalog <<extend>> <<include>> Order Processing System SalesPerson Order Item Make Payment <<include>> <<include>> The sales person  asks for the catalog Place Order Extension points   Additional requests: after creation of  the order 1 *
Generalization Four Standard Constraints complete :  all children in the generalization have been specified; no more children are permitted incomplete :  not all children have been specified; additional children are permitted disjoint :  objects of the parent have no more than one of the children as a type overlapping :  objects of the parent may have more than one of the children as a type One Stereotype  implementation : the child inherits the implementation of the parent but does not make public nor support its interfaces
Generalization – Along Roles
Generalization –Among Actors SalesPerson Place Order Extension points   Additional requests: after creation of the order 1 * SalesManager Grant Credit 1 * Sales person can do only “Place Order”; Sales manager can do both “Place Order”  and “Grant Credit”
Associations teaches relationship name direction indicator: how to read relation name teacher class role names Multiplicity defines the number of objects associated with an instance of the association. Default of 1 ;  Zero or more (*);   n..m; range from n to m inclusive 1..* * Represent conceptual relationships between classes (cf. dependency with no communication/message passing) navigability {visibility} {/} role name {: interface name} Professor Course
Associations – A Question How would you model the following situation? “ You have two files, say homework1 and myPet, where homework1 is read-accessible only by you, but myPet is write-accessible by anybody.”   You could create two classes, File and User.  Homework1 and MyPet are files, and you are a user. File User Approach 1 : Now, would you associate the file access right with File?  Approach 2 : Or, would you associate the file access right with User? homework1:File myPet:File <<instanceOf>> u:User <<instanceOf>> anyoneElse: User
Association generalization is not automatic, but should be explicit in UML Associations – Links link is a semantic connection among objects.  A link is an instance of an association. Company 1..* * employee employer : Company assign(development) w : Worker link named object anonymous object class association class works for   association name <<instanceOf>> <<instanceOf>> ? Worker +setSalary( s : Salary) +setDept( d : Dept)
Associations – Link Attributes Link Attributes The most compelling reason for having link attributes is for-many-to-many relationships File User access permission File User access permission Association Class AccessRight * 1..* link attribute association class With a refactoring File User * 1..* access permission AccessRight 1 1 visual tie
Modeling Structural Relationships   The model above is from Rational Rose. How did the composite symbol (  )get loaded versus the aggregation?   Use the Role Detail and select aggregation and then the “by value” radio button. School Instructor Course Department Student * 1..* 1..* 1 has  member * * attends   * 1..*  teaches 1..* 1..* 1..* 1..* 0..1 1 chairperson  assigned to Considering a bunch of classes and their association relationships
Modeling Structural Relationships   Composite is a stronger form of aggregation.  Composite parts live and die with the whole. Composite parts may belong to only one composite. Liver Body Heart Wheel Car Engine Composite Company Department 1..* association multiplicity aggregation part whole - structural association representing “whole/part” relationship. “ has-a”  relationship . Aggregation Part -> whole? Body Liver Heart Can aggregations of objects be cyclic?
WorkDesk jobId : int returnedItem * 0..1 Qualifier ,  cannot access person without knowing the account #  Bank account # Person Square * 0..1 1 1 Association – Qualification Chessboard rank:Rank file:File
Association  – Interface Specifier worker : IEmployee supervisor : IManager * 1 Person Interface Specifier association  Realization A semantic relationship between classifiers in which one classifier specifies a contract that another guarantees to carry out. In the context of  interfaces  and  collaborations An interface can be realized by many classes/components A class/component may realize many interfaces IManager getProject() getSchedule() Person
Modeling a Logical Database Class diagrams to provide more semantics From a general class diagram, first identify classes whose state must be  persistent  (e.g. after you turn off the computer, the data survives, although the program doesn’t). Create a class diagram using standard tagged value, (e.g.  {persistent}  ). Include attributes and associations. Use tools, if available, to transform logical design (e.g., tables and attributes) into physical design (e.g., layout of data on disk and indexing mechanisms for fast access to the data). 1..* School { persistent} name : Name address : String phone : Number addStudent() removeStudent() getStudent() getAllStudents() addDepartment() removeDepartment() getDepartment() getAllDepartments() Student { persistent} name : Name studentId : Number Instructor { persistent} name : Name Department { persistent} name : Name addInstructor() removeInstructor() getInstructor() getAllInstructors() Course { persistent} name : Name courseId : Number 1..* 1..* 1..* 1..* 1..* 1..* * 0..1 0..1 chairperson * * *
Forward/  Reverse   Engineering translate a collaboration into a logical database schema/operations transform a model into code through a mapping to an implementation language. Steps Selectively use UML to match language semantics (e.g. mapping multiple inheritance in a collaboration diagram into a programming language with only single inheritance mechanism). Use  tagged values  to identify language.. public abstract class EventHandler { private EventHandler successor; private Integer currentEventId; private String source; EventHandler() {} public void handleRequest() {} } successor EventHandler { Java} currentEventId : Integer source : Strings handleRequest () : void Client { Java} translate a logical database schema/operations into a collaboration transform code into a model through mapping from a specific implementation language.
Object Diagrams Structural Diagrams Class;  Object Component Deployment Composite Structure Package
Instances & Object Diagrams “ instance” and “object” are largely synonymous;  used interchangeably. difference:  instances of a  class  are called  objects or instances ; but  instances of other abstractions (components, nodes, use cases, and associations) are not called objects but only  instances .  What is an instance of an association called? Object Diagrams very useful in debugging process. walk through a scenario (e.g., according to use case flows). Identify the set of  objects  that collaborate in that scenario (e.g., from use case flows). Expose these object’s  states, attribute values and links  among these objects.
Instances & Objects   - Visual Representation : keyCode : Multimedia :: AudioStream t : Transaction myCustomer r : FrameRenderThread c : Phone  [WaitingForAnswer] named instance instance with current state instance with attribute values active object (with a thicker border; owns a thread or process and can initiate control activity) multiobject orphan instance (type unknown) anonymous instance myCustomer id : SSN = “432-89-1738” active = True agent :
Instances & Objects   - Modeling Concrete Instances Expose the stereotypes, tagged values, and attributes. Show these instances and their relationships in an  object  diagram. current: Transaction primaryAgent  [searching] : Transaction LoanOfficer <<instanceOf>> current := retrieve() Instances & Objects   - Modeling Prototypical Instances Show these instances and their relationships in an  interaction  diagram or an activity diagram. a: CallingAgent c: Connection 1 : create 2: enableConnection 2.1 : startBilling
Instances & Objects   – More Examples client servers 1: aServer := find(criteria) d: Directory 1: sort() list() contents: File d: Directory 1: addElement(f) addFile(f:File) contents: File :Server aServer:Server 2: process(request) c : Company s : Department name = “Sales” uss : Department name = “US Sales” erin : Person name = “Erin” employeeID = 4362 title = “VP of Sales” rd : Department name = “R&D” : ContactInfomation address = “1472 Miller St.” manager call ::= label [guard] [“*”] [return-val-list “:=“] msg-name “(“ arg-list “)” d: Directory 1*: changeMode(readOnly) secureAll() f: File *
Component Diagrams Structural Diagrams Class;  Object Component Deployment Composite Structure Package
Component Diagram Shows a set of components and their relationships. Represents the static  implementation  view of a system. Components map to one or more classes, interfaces, or collaborations. classes loanOfficer.dll component LoanOfficer LoanPolicy CreditSearch Registrar.exe Course.dll Student.dll Components and their Relationships Mapping of Components into Classes UML1.x – implementation view
Component Diagram Short history behind architecture Architecture still an emerging discipline Challenges, a bumpy road ahead UML and architecture evolving in parallel  Component diagram in need of better formalization and experimentation UML2.0  – architectural view Big demand, hmm…
Component Diagram – another example (www.cs.tut.fi/tapahtumat/olio2004/richardson.pdf)
Component Diagram – another example (www.cs.tut.fi/tapahtumat/olio2004/richardson.pdf)
Component Diagram – another example (www.cs.tut.fi/tapahtumat/olio2004/richardson.pdf)
Component Diagram An interface is a collection of 1..* methods, and 0..* attributes Interfaces can consist of synchronous and / or asynchronous operations A  port  ( square ) is an interaction point between the component and its environment.  Can be named; Can support uni-directional  (either provide or require)  or bi-directional  (both provide and require)  communication; Can support multiple interfaces.  possibly concurrent interactions fully isolate an object’s internals from its environment UML2.0  – architectural view Component Component lollipop socket Student StudentAdministration StudentSchedule AccessControl Encription Persistence DataAccess security Data[1..*] Incoming signals/calls   Outgoing signals/calls  caller or callee? Explicit description of  interfaces : provided services to other components requested services from other components
Component Diagram:   UML 1.x  and UML 2.0 (http://www.agilemodeling.com/artifacts/componentDiagram.htm)
Component Diagram :   UML 1.x and   UML 2.0 (http://www.agilemodeling.com/artifacts/componentDiagram.htm) So, how many different conventions for components in UML2.0?
Building a Component simplified the ports to either provide or require a single interface relationships between ports and internal classes in three different ways:  i) as  stereotyped delegates  (flow), as  delegates , and as  realize s (logical->physical) relationships Cohesive reuse and change of classes; acyclic component dependency  ??? .
Component Diagram   – Connector & Another Example  delegation Left delegation: direction of arrowhead indicates  “ provides” delegation assembly connector a connector: just a link between two or more connectable elements (e.g., ports or interfaces) 2 kinds of connectors:  assembly  and  delegation . For  “wiring” An  assembly  connector: a binding between a provided interface and a required interface (or ports) that indicates that one component provides the services required by another;  simple line/ball-and-socket/lollipop-socket notation A  delegation  connector binds a component’s external behavior (as specified at a port) to an internal realization of that behavior by one of its parts  (provide-provide, request-request). Right delegation: direction of arrowhead indicates  “ requests” store So, what levels of abstractions for connections?
Structured Class A  structured class(ifier)  is defined, in whole or in part, in terms of a number of  parts  - contained instances owned or referenced by the structured class(ifier).  With a similar meaning to a  composition  relation A structured classifier’s parts are created within the containing classifier (either when the structured classifier is created or later) and are destroyed when the containing classifier is destroyed. Like classes and components, combine the descriptive capabilities of structured classifiers with  ports and interfaces Components extend classes   with additional features such as the ability to  own more types of elements  than classes can; e.g., packages, constraints, use cases, and artifacts deployment specifications that define the execution parameters of a component deployed to a node label /roleName : type connector Any difference? component or class?
Classifier—mechanism that describes structural (e.g. class attributes) and behavioral (e.g. class operations) features.  In general, those  modeling elements  that can have  instances  are called classifiers.  cf. Packages and generalization relationships do not have instances.   move() resize() display() origin Shape <<type>> Int { values range from -2**31 to +2**31 - 1 } <<signal>> OffHook Process loan <<subsystem>> Customer Service membership_server kernel32.dll class interface data type signal use case node component an asynchronous stimulus communicated between instances Classifiers Generalizable Element, Classifier, Class, Component? move() resize() display() origin Shape IUnknown <<type>> Int { values range from -2**31 to +2**31 - 1 } <<signal>> OffHook Process loan <<subsystem>> Customer Service egb_server kernel32.dll class interface data type signal use case subsystem node component
Structured Class   – Another Example what kind?
Deployment Diagrams Structural Diagrams Class;  Object Component Deployment Composite Structure Package
Deployment Diagram J2EE Server Membership Server IIS + PhP Server Tomcat Server TCP/IP TCP/IP DecNet Shows a set of  processing  nodes and their relationships. Represents the static deployment view of an  architecture . Nodes typically enclose one or more  components .
Structural Diagrams   -  Deployment Diagram ( http://www.agilemodeling.com/artifacts/deploymentDiagram.htm) Student administration application Physical nodes - stereotype  device WebServer  - physical device or software artifact  RMI / message bus : connection type  Nodes can contain other nodes  or software artifacts recursively      Deployment specs: configuration files:  name and properties
Structural Diagrams - Deployment Diagram ( http://www.agilemodeling.com/artifacts/deploymentDiagram.htm) Is this better? More concrete Implementation-oriented
Composite Structure Diagrams Structural Diagrams Class;  Object Component Deployment Composite Structure Package
Composite Structure Diagrams (http://www.agilemodeling.com/artifacts/compositeStructureDiagram.htm) Depicts the internal structure of a classifier (such as a class, component, or  collaboration ),  including the interaction points of the classifier to other parts of the system .   Enroll in Seminar Enroll Student prereq: Seminar Enrollment Seminar seats: Integer waitList: Student Course req: Course constrainer desired seminar applicant registration Add to Wait list Determine eligibility Determine Seat availability applicant seminar existing students desired course structured class, structured component, structured use case, structured node, structured interface, … Enroll in Seminar Enroll Student prereq: Seminar Enrollment Seminar seats: Integer waitList: Student Course req: Course constrainer desired seminar applicant registration <<refine>>
Variations  [Rumbaugh – UML 2.0 Reference: p234] Sale buyer: Agent item: Property seller: Agent role name role type role collaboration name Collaboration definition ShiloPurchase: Sale Shilo: Land item Edward: Architect Bala: Analyst buyer seller role name Collaboration use in object diagram collaborating object collaboration name use name
 
Structural Diagrams Class;  Object Component Deployment Composite Structure Package
Packages Package —  general-purpose mechanism for organizing elements into groups. Business rules Client Sensors::Vision { version = 2.24 } simple names enclosing package name package name path names + OrderForm + TrackingForm - Order Client Client +OrderForm +TrackingForm -Order graphical nesting textual nesting visibility Nested Elements: Composite relationship (When the whole dies, its parts die as well, but not necessarily vice versa) (C++ namespace; specialization means “derived”) Visibility Packages that are friends to another may see all the elements of that package, no matter what their visibility. If an element is visible within a package, it is visible within all packages nested inside the package.
Dependency –Among Packages Two Stereotypes of Dependency Among  Packages : access :  the source package is granted the right to reference the elements of the target package  (:: convention) import :  a kind of access; the  public  contents of the target package enter the flat namespace of the source as if they had been declared in the source packageName packageName subPackageName packageName PackageClass <<import>> <<access>> + OrderForm + TrackingForm - Order Client +OrderRules -GUI:Window Policies <<import>> +Window +Form #EventHandler GUI <<import>> imports exports
Modeling Groups of Elements Look for “clumps” of elements that are semantically close to one another. Surround “clumps” with a package. Identify public elements of each package. Identify import dependencies. utd.administration Tools.db registration db interfaces Cloudscape Oracle Java.awt Use Case package Diagram Included and extending use cases belong in the same  package as the parent/base use case Cohesive, and goal-oriented packaging Actors could be inside or outside each package
Class Package Diagrams (http://www.agilemodeling.com/artifacts/packageDiagram.htm) Classes related through inheritance, composition or communication often belong in the same package Seminar Registration <<application>> Schedule Student Professor Java Infrastructure <<technical>> <<import>> Contact Point <<import>> <<import>> <<import>> <<import>> A  frame  depicts the contents of a package (or components, classes, operations, etc.) Heading: rectangle with a cut-off bottom-right corner, [kind] name [parameter] Seminar Course Enrollment Location Time 1 0..* 1..* 1 1..* 1 held at Package Schedule A frame encapsulates  a collection of collaborating instances or  refers to another representation of such
Common Mechanisms Adornments Notes & Compartments Extensibility Mechanisms Stereotypes -  Extension of the UML metaclasses. Tagged Values -  Extension of the properties of a UML element. Constraints -  Extension of the semantics of a UML element.
Adornments T extual or graphical items added to an element’s basic notation. Notes  - Graphical symbol for rendering constraints or comments attached to an element or collection of elements; No Semantic Impact Rendered as a rectangle with a dog-eared corner. See smartCard.doc for details about this routine. May contain combination of text and graphics. May contain URLs linking to external documents. See  http://www.rational.com  for related info. Additional Adornments Placed near the element as Text Graphic Special compartments for adornments in Classes Components Nodes Transaction Exceptions addAction() Resource Locked named compartment anonymous compartment Client bill.exe report.exe contacts.exe
Stereotypes Allow controlled extension of metamodel  classes .  [ UML11_Metamodel_Diagrams.pdf ] Graphically rendered as Name enclosed in guillemets  ( << >>  ) <<stereotype>> New icon « metaclass » ModelElement Internet The new building block can have  its own special properties through a set of tagged values its own semantics through constraints Mechanisms for extending the UML vocabulary. Allows for new modeling building blocks or parts.
Tagged Values Server {channels = 3} <<library>> accounts.dll {customerOnly} tagged values a (name, value) pair describes a  property  of a model element.  Properties allow the extension of “ metamodel ” element  attributes .  modifies the semantics of the element to which it relates. Rendered as a text string enclosed in braces  { } Placed below the name of another element. « subsystem » AccountsPayable { dueDate = 12/30/2002 status = unpaid }
Constraints Portfolio BankAccount {secure} A simple constraint Extension of the  semantics  of a UML element. Allows new or modified rules Rendered in braces  {} . Informally as free-form text, or Formally in UML’s Object Constraint Language (OCL): E.g., {self.wife.gender = female and self.husband.gender = male} Constraint across multiple elements Corporation BankAccount {or} Person id : {SSN, passport} Department Person * * 1..* 1 member manager {subset} Person age: Integer Company employers employees 0..* 0..* Company self.employees.forAll(Person p | p.age >= 18  and  p.age <= 65)
Appendix Some Additional Material
Classes: Notation and Semantics Class - Name attribute-name-1 : data-type-1 = default-value-1 attribute-name-2 : data-type-2 = default-value-2 operation-name-1 ( argument-list-1) : result-type-1 operation-name-2 ( argument-list-2) : result-type-2 responsibilities To model the <<semantics>> (meaning) of a class: Specify the body of each method (pre-/post-conditions and invariants) Specify the state machine for the class Specify the collaboration for the class Specify the responsibilities (contract)
Attributes Syntax [ visibility ] name [ multiplicity ] [ : type ] [ = initial-value ] [ {property-string } ] Visibility   +  public;  -  private;  #  protected; {default = +} type There are several defined in Rational Rose. You can define your own. property-string Built-in property-strings: changeable —no restrictions (default) addOnly —values may not be removed or altered, but may be added frozen —may not be changed after initialization Or you can define your own: e.g.  {leaf} Name and property id : Integer { frozen } Name, type, and initial value origin : Point = { 0, 0 } Name, multiplicity, and type name [ 0..1 ] : String Name and complex type head : *Item Name and type origin : Point Visibility and name + origin Name only origin
Operations Syntax [ visibility ] name [ (parameter-list ) ] [ : return-type ] [ (property-string) ] Visibility +  public;  -  private;  #  protected; {default = +} parameter-list syntax [ direction ] name : type [ = default-value ] direction in —input parameter; may not be modified out —output parameter; may be modified inout —input parameter; may be modified property-string leaf isQuery —state is not affected sequential —not thread safe guarded —thread safe (Java synchronized) concurrent —typically atomic; safe for multiple flows of control
Template Classes ;  Primitive Types A template class is a parameterized element  and defines a family of classes  In order to use a template class, it has to be instantiated  Instantiation involves binding formal template parameters to actual ones, resulting in a concrete class + bind( in i : Item; in v : Value ) : Boolean + isBound( in i : Item ) : Boolean {isQuery} Map Item Value Buckets : int Map< Customer, Order, 3  > OrderMap <<bind>> ( Customer, Order, 3 ) explicit binding implicit binding template class template parameters Uses <<bind>>   Item Value Buckets Primitive Types using a class notation <<enumeration>> Boolean false true <<dataType>> Int { value range   –2**31 to +2**31-1 } constraint stereotype
Interface: A Java Example public interface SoundFromSpaceListener extends EventListener { void handleSoundFromSpace(SoundFromSpaceEventObject sfseo); } public class SpaceObservatory implements SoundFromSpaceListener public void handleSoundFromSpace(SoundFromSpaceEventObject sfseo) { soundDetected = true; callForPressConference(); }  Can you draw a UML diagram corresponding to this?
Package Diagrams:  Standard Elements Façade   — only a view on some other package. Framework   — package consisting mainly of patterns. Stub   — a package that serves as a proxy for the public contents of another package. Subsystem   — a package representing an independent part of the system being modeled. System   — a package representing the entire system being modeled. Is <<import>> transitive? Is visibility transitive? Does <<friend>> apply to all types of visibility: +, -, #?
Dependency –Among Objects 3 Stereotypes of Dependency in Interactions among  Objects : become : the target is the same object as the source but at a later point in time and with possibly different values, state, or roles call : the source operation invokes the target operation copy : the target object is an exact, but independent, copy of the source

More Related Content

PPT
Classes2
PPTX
C# interview
PPT
PPTX
Top 20 c# interview Question and answers
DOC
DOCX
C# interview quesions
PDF
java-06inheritance
PPT
Interface in java By Dheeraj Kumar Singh
Classes2
C# interview
Top 20 c# interview Question and answers
C# interview quesions
java-06inheritance
Interface in java By Dheeraj Kumar Singh

What's hot (20)

DOCX
Object oriented basics
DOCX
C# concepts
PPTX
Interface java
PPT
PPTX
Java interface
DOC
My c++
DOC
C# interview questions
PPTX
Vb ch 3-object-oriented_fundamentals_in_vb.net
DOC
Delphi qa
PPTX
Interface in java ,multiple inheritance in java, interface implementation
PPTX
Lecture 12
PPT
Java interface
PDF
Java OOP Programming language (Part 6) - Abstract Class & Interface
PDF
8 abstract classes and interfaces
PDF
Abap Objects for BW
PPTX
Java interfaces
PPT
Jedi slides 2.1 object-oriented concepts
PDF
javainterface
PPS
Interface
PPTX
Lecture 17
Object oriented basics
C# concepts
Interface java
Java interface
My c++
C# interview questions
Vb ch 3-object-oriented_fundamentals_in_vb.net
Delphi qa
Interface in java ,multiple inheritance in java, interface implementation
Lecture 12
Java interface
Java OOP Programming language (Part 6) - Abstract Class & Interface
8 abstract classes and interfaces
Abap Objects for BW
Java interfaces
Jedi slides 2.1 object-oriented concepts
javainterface
Interface
Lecture 17
Ad

Viewers also liked (20)

PPT
UML diagrams and symbols
PPT
OOAD UNIT I UML DIAGRAMS
PPTX
Ooad unit – 1 introduction
PPT
UML Diagrams
PPT
Uml diagrams
PDF
UML TUTORIALS
PPTX
Unit 1- OOAD ppt
PDF
SE_Lec 02_Software Life Cycle Models
PDF
SE_Lec 09_ UML Behaviour Diagrams
PDF
SE_Lec 01_ Introduction to Software Enginerring
PDF
SE_Lec 08_UML Use Cases
PDF
SE_Lec 04_Agile Software Development
PDF
SE_Lec 03_Requirements Analysis and Specification
PDF
SE_Lec 00_ Software Engineering 1
PPT
Uml report
PDF
SE_Lec 06_Object Oriented Analysis and Design
PDF
Se2 lec 13 uml state machines
PDF
SE_Lec 11_ Project Management
PDF
SE_Lec 07_UML CLASS DIAGRAM
UML diagrams and symbols
OOAD UNIT I UML DIAGRAMS
Ooad unit – 1 introduction
UML Diagrams
Uml diagrams
UML TUTORIALS
Unit 1- OOAD ppt
SE_Lec 02_Software Life Cycle Models
SE_Lec 09_ UML Behaviour Diagrams
SE_Lec 01_ Introduction to Software Enginerring
SE_Lec 08_UML Use Cases
SE_Lec 04_Agile Software Development
SE_Lec 03_Requirements Analysis and Specification
SE_Lec 00_ Software Engineering 1
Uml report
SE_Lec 06_Object Oriented Analysis and Design
Se2 lec 13 uml state machines
SE_Lec 11_ Project Management
SE_Lec 07_UML CLASS DIAGRAM
Ad

Similar to M03 1 Structuraldiagrams (20)

PPT
M03_1_Structur alDiagrams.ppt
PPT
M03_1_StructuralDiagrams in unified modeling language
PPT
08 class and sequence diagrams
PPT
Basic Class Diagrams in fundamental computing.ppt
PPT
Department of Computer science and engineering
PPT
Basic Class Diagrams in software engineering
PPT
Uml - An Overview
PPT
uml2-1214558329929112-8.ppt
PPTX
Basic structural modelling in unified modelling language
PPTX
Fundamentals of Software Engineering
PPT
Lecture12 software design class diagram
PPT
Umldiagram
PPTX
unit-1 &2 important questions to be noted
PPTX
PDF
Software Engineering :UML class diagrams
PPT
Uml Omg Fundamental Certification 2
PDF
UML_Class_Diagram_Software_Engineering.pdf
PPT
Descriptions of class diagrams in software
PPTX
Unified Modeling Language and Examples .pptx
DOC
Uml Interview Questions
M03_1_Structur alDiagrams.ppt
M03_1_StructuralDiagrams in unified modeling language
08 class and sequence diagrams
Basic Class Diagrams in fundamental computing.ppt
Department of Computer science and engineering
Basic Class Diagrams in software engineering
Uml - An Overview
uml2-1214558329929112-8.ppt
Basic structural modelling in unified modelling language
Fundamentals of Software Engineering
Lecture12 software design class diagram
Umldiagram
unit-1 &2 important questions to be noted
Software Engineering :UML class diagrams
Uml Omg Fundamental Certification 2
UML_Class_Diagram_Software_Engineering.pdf
Descriptions of class diagrams in software
Unified Modeling Language and Examples .pptx
Uml Interview Questions

More from Dang Tuan (20)

PDF
Javascript for php developer
PDF
Power your web skills
PDF
Ube Databases
PPT
Chapter1
PPT
Chapter9
PPT
Chapter3
PPT
Chapter7
PPT
Chapter5
PPT
Session02 Part Ii
PPT
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UML
PPT
Ooad Uml
PPT
M02 Uml Overview
PPT
UML for OOAD
PPT
Object-Oriented Analysis & Design (OOAD) Domain Modeling Introduction
PPT
Introduction to Modeling Java and UML
PPT
Information Systems Analysis and Design Overview of OOAD, UML, and RUP
PPT
Ooad Overview
PPT
M03 2 Behavioral Diagrams
PPT
M05 Metamodel
PPT
M04 Design Patterns
Javascript for php developer
Power your web skills
Ube Databases
Chapter1
Chapter9
Chapter3
Chapter7
Chapter5
Session02 Part Ii
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UML
Ooad Uml
M02 Uml Overview
UML for OOAD
Object-Oriented Analysis & Design (OOAD) Domain Modeling Introduction
Introduction to Modeling Java and UML
Information Systems Analysis and Design Overview of OOAD, UML, and RUP
Ooad Overview
M03 2 Behavioral Diagrams
M05 Metamodel
M04 Design Patterns

Recently uploaded (20)

PPT
Teaching material agriculture food technology
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Encapsulation_ Review paper, used for researhc scholars
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Approach and Philosophy of On baking technology
PDF
KodekX | Application Modernization Development
PPTX
Big Data Technologies - Introduction.pptx
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PPTX
Spectroscopy.pptx food analysis technology
PDF
cuic standard and advanced reporting.pdf
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
Teaching material agriculture food technology
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Spectral efficient network and resource selection model in 5G networks
Encapsulation_ Review paper, used for researhc scholars
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
NewMind AI Weekly Chronicles - August'25 Week I
Network Security Unit 5.pdf for BCA BBA.
MIND Revenue Release Quarter 2 2025 Press Release
Building Integrated photovoltaic BIPV_UPV.pdf
Approach and Philosophy of On baking technology
KodekX | Application Modernization Development
Big Data Technologies - Introduction.pptx
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Chapter 3 Spatial Domain Image Processing.pdf
Spectroscopy.pptx food analysis technology
cuic standard and advanced reporting.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
The Rise and Fall of 3GPP – Time for a Sabbatical?
Digital-Transformation-Roadmap-for-Companies.pptx

M03 1 Structuraldiagrams

  • 1. Module 3 – Advanced Features: Part I - Structural Diagrams
  • 2. 3 basic building blocks of UML - Diagrams Graphical representation of a set of elements. Represented by a connected graph: Vertices are things; Arcs are relationships/behaviors. 5 most common views built from UML 1.x: 9 diagram types . UML 2.0: 12 diagram types Behavioral Diagrams Represent the dynamic aspects. Use case Sequence; Collaboration Statechart Activity Structural Diagrams Represent the static aspects of a system. Class; Object Component Deployment Behavioral Diagrams Use case Statechart Activity Structural Diagrams Class; Object Component Deployment Composite Structure Package Interaction Diagrams Sequence; Communication Interaction Overview Timing
  • 3. Class Diagrams Structural Diagrams Class ; Object Component Deployment Composite Structure Package
  • 4. Class Diagram Three modeling perspectives for Class Diagram Conceptual : the diagram reflects the domain Specification : focus on interfaces of the software (Java supports interfaces) Implementation : class (logical database schema) definition to be implemented in code and database. The basis for all object modeling All things lead to this Most users of OO methods take an implementation perspective, which is a shame because the other perspectives are often more useful. -- Martin Fowler Most common diagram. Shows a set of classes, interfaces, and collaborations and their relationships (dependency, generalization, association and realization); notes too . Represents the static view of a system ( With active classes, static process view)
  • 5. Names may cause object to change state Customer Account Bank Java::awt::Polygon simple name - start w. upper case path name = package name ::package name::name only the name compartment, ok Attributes short noun - start w. lower case balance: Real = 0 type/class default value <<constructor>> +addAccount() <<process>> +setBalance( a : Account) +getBalance(a: Account): Amount … <<query>> isValid( loginID : String): Boolean signature Operations Classes ellipsis for additional attributes or operations stereotypes to categorize
  • 6. Responsibilities A collaborator is also a class which the (current) class interacts with to fulfill a responsibility Responsibilities -- handles deposits -- reports fraud to managers Account anything that a class knows or does (Contract or obligation) An optional 4 th item carried out by attributes and operations. Free-form text; one phrase per responsibility. Technique - CRC cards (Class-Responsibility-Collaborator); Kent Beck and Ward Cunningham’89 Customer Account Opens account Knows name Knows address Account Manager Knows interest rate Knows balance Handles deposits Reports fraud to manager
  • 7. Scope & Visibility Public - access allowed for any outside classifier (+). Protected - access allowed for any descendant of the classifier (#). Private - access restricted to the classifier itself (-). ( using adornments in JBuilder ) + addMessage( m : Message ) : Status # setCheckSum() - encrypt() header : FrameHeader uniqueID : Long Frame class scope public protected private Instance scope Instance Scope — each instance of the classifier holds its own value. Class Scope — one value is held for all instances of the classifier (underlined). - getClassName() Public class Private class Protected class Public method Public attribute
  • 8. Multiplicity consolePort [ 2..* ] : Port NetworkController 1 ControlRod 3 multiplicity singleton public class Singleton {    private static Singleton instance = null; private Singleton() {}    public static Singleton getInstance() {       if (instance == null) {          instance = new Singleton();       }       return instance;    } } Singleton - instance + getInstance():Singleton consolePort [ 2..* ] : Port NetworkController Using Design Pattern
  • 9. Relationships ConsoleWindow DialogBox Control Event association dependency generalization PowerManager ChannelIterator Controller EmbeddedAgent <<friend>> generalization (multiple inheritance) association navigation stereotyped dependency realization Window open() close() SetTopController authorizationLevel startUp() shutDown() Connect() <<interface>> URLStreamHandler openConnection() parseURL() setURL() toExternalForm()
  • 10. Dependency A change in one thing may affect another . AudioClip record(m: Microphone ) start() stop() Microphone name dependency The most common dependency between two classes is one where one class <<use>>s another as a parameter to an operation . CourseSchedule addCourse(c : Course) removeCourse(c : Course Course Usually initial class diagrams will not have any significant number of dependencies in the beginning of analysis but will as more details are identified. Using relationship
  • 11. Dependency – Among Classes AbstractClass {abstract} attribute concreteOperation() abstractOperation() <<metaclass>> MetaClassName <<interface>> InterfaceName operation() ClassName -simpleAttribute: Type = Default #classAttribute: Type + / derivedAttribute: Type +operation(in arg: Type = Default): ReturnType objectName: ClassName Attribute = value simpleAttribute: Type = Default classAttribute: Type /derivedAttribute: Type ClientClass <<use>> <<instanceOf>> <<instanceOf>> realization generalization
  • 12. Dependency –Among Classes Eight Stereotypes of Dependency Among Classes bind : the source instantiates the target template using the given actual parameters derive : the source may be computed from the target friend : the source is given special visibility into the target instanceOf : the source object is an instance of the target classifier instantiate : the source creates instances of the target powertype : the target is a powertype of the source; a powertype is a classifier whose objects are all the children of a given parent refine : the source is at a finer degree of abstraction than the target use : the semantics of the source element depends on the semantics of the public part of the target
  • 13. Dependency –Among Use Cases Two Stereotypes of Dependency Among Use Cases : extend : the target use case extends the behavior of the source include : the source use case explicitly incorporates the behavior of another use case at a location specified by the source Use Case A Use Case B Use Case C <<extend>> <<include>> System Actor <<actor>> Actor Supply Customer Info. Request Catalog <<extend>> <<include>> Order Processing System SalesPerson Order Item Make Payment <<include>> <<include>> The sales person asks for the catalog Place Order Extension points Additional requests: after creation of the order 1 *
  • 14. Generalization Four Standard Constraints complete : all children in the generalization have been specified; no more children are permitted incomplete : not all children have been specified; additional children are permitted disjoint : objects of the parent have no more than one of the children as a type overlapping : objects of the parent may have more than one of the children as a type One Stereotype implementation : the child inherits the implementation of the parent but does not make public nor support its interfaces
  • 16. Generalization –Among Actors SalesPerson Place Order Extension points Additional requests: after creation of the order 1 * SalesManager Grant Credit 1 * Sales person can do only “Place Order”; Sales manager can do both “Place Order” and “Grant Credit”
  • 17. Associations teaches relationship name direction indicator: how to read relation name teacher class role names Multiplicity defines the number of objects associated with an instance of the association. Default of 1 ; Zero or more (*); n..m; range from n to m inclusive 1..* * Represent conceptual relationships between classes (cf. dependency with no communication/message passing) navigability {visibility} {/} role name {: interface name} Professor Course
  • 18. Associations – A Question How would you model the following situation? “ You have two files, say homework1 and myPet, where homework1 is read-accessible only by you, but myPet is write-accessible by anybody.” You could create two classes, File and User. Homework1 and MyPet are files, and you are a user. File User Approach 1 : Now, would you associate the file access right with File? Approach 2 : Or, would you associate the file access right with User? homework1:File myPet:File <<instanceOf>> u:User <<instanceOf>> anyoneElse: User
  • 19. Association generalization is not automatic, but should be explicit in UML Associations – Links link is a semantic connection among objects. A link is an instance of an association. Company 1..* * employee employer : Company assign(development) w : Worker link named object anonymous object class association class works for association name <<instanceOf>> <<instanceOf>> ? Worker +setSalary( s : Salary) +setDept( d : Dept)
  • 20. Associations – Link Attributes Link Attributes The most compelling reason for having link attributes is for-many-to-many relationships File User access permission File User access permission Association Class AccessRight * 1..* link attribute association class With a refactoring File User * 1..* access permission AccessRight 1 1 visual tie
  • 21. Modeling Structural Relationships The model above is from Rational Rose. How did the composite symbol ( )get loaded versus the aggregation? Use the Role Detail and select aggregation and then the “by value” radio button. School Instructor Course Department Student * 1..* 1..* 1 has  member * * attends  * 1..*  teaches 1..* 1..* 1..* 1..* 0..1 1 chairperson  assigned to Considering a bunch of classes and their association relationships
  • 22. Modeling Structural Relationships Composite is a stronger form of aggregation. Composite parts live and die with the whole. Composite parts may belong to only one composite. Liver Body Heart Wheel Car Engine Composite Company Department 1..* association multiplicity aggregation part whole - structural association representing “whole/part” relationship. “ has-a” relationship . Aggregation Part -> whole? Body Liver Heart Can aggregations of objects be cyclic?
  • 23. WorkDesk jobId : int returnedItem * 0..1 Qualifier , cannot access person without knowing the account # Bank account # Person Square * 0..1 1 1 Association – Qualification Chessboard rank:Rank file:File
  • 24. Association – Interface Specifier worker : IEmployee supervisor : IManager * 1 Person Interface Specifier association Realization A semantic relationship between classifiers in which one classifier specifies a contract that another guarantees to carry out. In the context of interfaces and collaborations An interface can be realized by many classes/components A class/component may realize many interfaces IManager getProject() getSchedule() Person
  • 25. Modeling a Logical Database Class diagrams to provide more semantics From a general class diagram, first identify classes whose state must be persistent (e.g. after you turn off the computer, the data survives, although the program doesn’t). Create a class diagram using standard tagged value, (e.g. {persistent} ). Include attributes and associations. Use tools, if available, to transform logical design (e.g., tables and attributes) into physical design (e.g., layout of data on disk and indexing mechanisms for fast access to the data). 1..* School { persistent} name : Name address : String phone : Number addStudent() removeStudent() getStudent() getAllStudents() addDepartment() removeDepartment() getDepartment() getAllDepartments() Student { persistent} name : Name studentId : Number Instructor { persistent} name : Name Department { persistent} name : Name addInstructor() removeInstructor() getInstructor() getAllInstructors() Course { persistent} name : Name courseId : Number 1..* 1..* 1..* 1..* 1..* 1..* * 0..1 0..1 chairperson * * *
  • 26. Forward/ Reverse Engineering translate a collaboration into a logical database schema/operations transform a model into code through a mapping to an implementation language. Steps Selectively use UML to match language semantics (e.g. mapping multiple inheritance in a collaboration diagram into a programming language with only single inheritance mechanism). Use tagged values to identify language.. public abstract class EventHandler { private EventHandler successor; private Integer currentEventId; private String source; EventHandler() {} public void handleRequest() {} } successor EventHandler { Java} currentEventId : Integer source : Strings handleRequest () : void Client { Java} translate a logical database schema/operations into a collaboration transform code into a model through mapping from a specific implementation language.
  • 27. Object Diagrams Structural Diagrams Class; Object Component Deployment Composite Structure Package
  • 28. Instances & Object Diagrams “ instance” and “object” are largely synonymous; used interchangeably. difference: instances of a class are called objects or instances ; but instances of other abstractions (components, nodes, use cases, and associations) are not called objects but only instances . What is an instance of an association called? Object Diagrams very useful in debugging process. walk through a scenario (e.g., according to use case flows). Identify the set of objects that collaborate in that scenario (e.g., from use case flows). Expose these object’s states, attribute values and links among these objects.
  • 29. Instances & Objects - Visual Representation : keyCode : Multimedia :: AudioStream t : Transaction myCustomer r : FrameRenderThread c : Phone [WaitingForAnswer] named instance instance with current state instance with attribute values active object (with a thicker border; owns a thread or process and can initiate control activity) multiobject orphan instance (type unknown) anonymous instance myCustomer id : SSN = “432-89-1738” active = True agent :
  • 30. Instances & Objects - Modeling Concrete Instances Expose the stereotypes, tagged values, and attributes. Show these instances and their relationships in an object diagram. current: Transaction primaryAgent [searching] : Transaction LoanOfficer <<instanceOf>> current := retrieve() Instances & Objects - Modeling Prototypical Instances Show these instances and their relationships in an interaction diagram or an activity diagram. a: CallingAgent c: Connection 1 : create 2: enableConnection 2.1 : startBilling
  • 31. Instances & Objects – More Examples client servers 1: aServer := find(criteria) d: Directory 1: sort() list() contents: File d: Directory 1: addElement(f) addFile(f:File) contents: File :Server aServer:Server 2: process(request) c : Company s : Department name = “Sales” uss : Department name = “US Sales” erin : Person name = “Erin” employeeID = 4362 title = “VP of Sales” rd : Department name = “R&D” : ContactInfomation address = “1472 Miller St.” manager call ::= label [guard] [“*”] [return-val-list “:=“] msg-name “(“ arg-list “)” d: Directory 1*: changeMode(readOnly) secureAll() f: File *
  • 32. Component Diagrams Structural Diagrams Class; Object Component Deployment Composite Structure Package
  • 33. Component Diagram Shows a set of components and their relationships. Represents the static implementation view of a system. Components map to one or more classes, interfaces, or collaborations. classes loanOfficer.dll component LoanOfficer LoanPolicy CreditSearch Registrar.exe Course.dll Student.dll Components and their Relationships Mapping of Components into Classes UML1.x – implementation view
  • 34. Component Diagram Short history behind architecture Architecture still an emerging discipline Challenges, a bumpy road ahead UML and architecture evolving in parallel Component diagram in need of better formalization and experimentation UML2.0 – architectural view Big demand, hmm…
  • 35. Component Diagram – another example (www.cs.tut.fi/tapahtumat/olio2004/richardson.pdf)
  • 36. Component Diagram – another example (www.cs.tut.fi/tapahtumat/olio2004/richardson.pdf)
  • 37. Component Diagram – another example (www.cs.tut.fi/tapahtumat/olio2004/richardson.pdf)
  • 38. Component Diagram An interface is a collection of 1..* methods, and 0..* attributes Interfaces can consist of synchronous and / or asynchronous operations A port ( square ) is an interaction point between the component and its environment. Can be named; Can support uni-directional (either provide or require) or bi-directional (both provide and require) communication; Can support multiple interfaces. possibly concurrent interactions fully isolate an object’s internals from its environment UML2.0 – architectural view Component Component lollipop socket Student StudentAdministration StudentSchedule AccessControl Encription Persistence DataAccess security Data[1..*] Incoming signals/calls Outgoing signals/calls caller or callee? Explicit description of interfaces : provided services to other components requested services from other components
  • 39. Component Diagram: UML 1.x and UML 2.0 (http://www.agilemodeling.com/artifacts/componentDiagram.htm)
  • 40. Component Diagram : UML 1.x and UML 2.0 (http://www.agilemodeling.com/artifacts/componentDiagram.htm) So, how many different conventions for components in UML2.0?
  • 41. Building a Component simplified the ports to either provide or require a single interface relationships between ports and internal classes in three different ways: i) as stereotyped delegates (flow), as delegates , and as realize s (logical->physical) relationships Cohesive reuse and change of classes; acyclic component dependency ??? .
  • 42. Component Diagram – Connector & Another Example delegation Left delegation: direction of arrowhead indicates “ provides” delegation assembly connector a connector: just a link between two or more connectable elements (e.g., ports or interfaces) 2 kinds of connectors: assembly and delegation . For “wiring” An assembly connector: a binding between a provided interface and a required interface (or ports) that indicates that one component provides the services required by another; simple line/ball-and-socket/lollipop-socket notation A delegation connector binds a component’s external behavior (as specified at a port) to an internal realization of that behavior by one of its parts (provide-provide, request-request). Right delegation: direction of arrowhead indicates “ requests” store So, what levels of abstractions for connections?
  • 43. Structured Class A structured class(ifier) is defined, in whole or in part, in terms of a number of parts - contained instances owned or referenced by the structured class(ifier). With a similar meaning to a composition relation A structured classifier’s parts are created within the containing classifier (either when the structured classifier is created or later) and are destroyed when the containing classifier is destroyed. Like classes and components, combine the descriptive capabilities of structured classifiers with ports and interfaces Components extend classes with additional features such as the ability to own more types of elements than classes can; e.g., packages, constraints, use cases, and artifacts deployment specifications that define the execution parameters of a component deployed to a node label /roleName : type connector Any difference? component or class?
  • 44. Classifier—mechanism that describes structural (e.g. class attributes) and behavioral (e.g. class operations) features. In general, those modeling elements that can have instances are called classifiers. cf. Packages and generalization relationships do not have instances. move() resize() display() origin Shape <<type>> Int { values range from -2**31 to +2**31 - 1 } <<signal>> OffHook Process loan <<subsystem>> Customer Service membership_server kernel32.dll class interface data type signal use case node component an asynchronous stimulus communicated between instances Classifiers Generalizable Element, Classifier, Class, Component? move() resize() display() origin Shape IUnknown <<type>> Int { values range from -2**31 to +2**31 - 1 } <<signal>> OffHook Process loan <<subsystem>> Customer Service egb_server kernel32.dll class interface data type signal use case subsystem node component
  • 45. Structured Class – Another Example what kind?
  • 46. Deployment Diagrams Structural Diagrams Class; Object Component Deployment Composite Structure Package
  • 47. Deployment Diagram J2EE Server Membership Server IIS + PhP Server Tomcat Server TCP/IP TCP/IP DecNet Shows a set of processing nodes and their relationships. Represents the static deployment view of an architecture . Nodes typically enclose one or more components .
  • 48. Structural Diagrams - Deployment Diagram ( http://www.agilemodeling.com/artifacts/deploymentDiagram.htm) Student administration application Physical nodes - stereotype device WebServer - physical device or software artifact RMI / message bus : connection type  Nodes can contain other nodes or software artifacts recursively    Deployment specs: configuration files: name and properties
  • 49. Structural Diagrams - Deployment Diagram ( http://www.agilemodeling.com/artifacts/deploymentDiagram.htm) Is this better? More concrete Implementation-oriented
  • 50. Composite Structure Diagrams Structural Diagrams Class; Object Component Deployment Composite Structure Package
  • 51. Composite Structure Diagrams (http://www.agilemodeling.com/artifacts/compositeStructureDiagram.htm) Depicts the internal structure of a classifier (such as a class, component, or collaboration ), including the interaction points of the classifier to other parts of the system . Enroll in Seminar Enroll Student prereq: Seminar Enrollment Seminar seats: Integer waitList: Student Course req: Course constrainer desired seminar applicant registration Add to Wait list Determine eligibility Determine Seat availability applicant seminar existing students desired course structured class, structured component, structured use case, structured node, structured interface, … Enroll in Seminar Enroll Student prereq: Seminar Enrollment Seminar seats: Integer waitList: Student Course req: Course constrainer desired seminar applicant registration <<refine>>
  • 52. Variations [Rumbaugh – UML 2.0 Reference: p234] Sale buyer: Agent item: Property seller: Agent role name role type role collaboration name Collaboration definition ShiloPurchase: Sale Shilo: Land item Edward: Architect Bala: Analyst buyer seller role name Collaboration use in object diagram collaborating object collaboration name use name
  • 53.  
  • 54. Structural Diagrams Class; Object Component Deployment Composite Structure Package
  • 55. Packages Package — general-purpose mechanism for organizing elements into groups. Business rules Client Sensors::Vision { version = 2.24 } simple names enclosing package name package name path names + OrderForm + TrackingForm - Order Client Client +OrderForm +TrackingForm -Order graphical nesting textual nesting visibility Nested Elements: Composite relationship (When the whole dies, its parts die as well, but not necessarily vice versa) (C++ namespace; specialization means “derived”) Visibility Packages that are friends to another may see all the elements of that package, no matter what their visibility. If an element is visible within a package, it is visible within all packages nested inside the package.
  • 56. Dependency –Among Packages Two Stereotypes of Dependency Among Packages : access : the source package is granted the right to reference the elements of the target package (:: convention) import : a kind of access; the public contents of the target package enter the flat namespace of the source as if they had been declared in the source packageName packageName subPackageName packageName PackageClass <<import>> <<access>> + OrderForm + TrackingForm - Order Client +OrderRules -GUI:Window Policies <<import>> +Window +Form #EventHandler GUI <<import>> imports exports
  • 57. Modeling Groups of Elements Look for “clumps” of elements that are semantically close to one another. Surround “clumps” with a package. Identify public elements of each package. Identify import dependencies. utd.administration Tools.db registration db interfaces Cloudscape Oracle Java.awt Use Case package Diagram Included and extending use cases belong in the same package as the parent/base use case Cohesive, and goal-oriented packaging Actors could be inside or outside each package
  • 58. Class Package Diagrams (http://www.agilemodeling.com/artifacts/packageDiagram.htm) Classes related through inheritance, composition or communication often belong in the same package Seminar Registration <<application>> Schedule Student Professor Java Infrastructure <<technical>> <<import>> Contact Point <<import>> <<import>> <<import>> <<import>> A frame depicts the contents of a package (or components, classes, operations, etc.) Heading: rectangle with a cut-off bottom-right corner, [kind] name [parameter] Seminar Course Enrollment Location Time 1 0..* 1..* 1 1..* 1 held at Package Schedule A frame encapsulates a collection of collaborating instances or refers to another representation of such
  • 59. Common Mechanisms Adornments Notes & Compartments Extensibility Mechanisms Stereotypes - Extension of the UML metaclasses. Tagged Values - Extension of the properties of a UML element. Constraints - Extension of the semantics of a UML element.
  • 60. Adornments T extual or graphical items added to an element’s basic notation. Notes - Graphical symbol for rendering constraints or comments attached to an element or collection of elements; No Semantic Impact Rendered as a rectangle with a dog-eared corner. See smartCard.doc for details about this routine. May contain combination of text and graphics. May contain URLs linking to external documents. See http://www.rational.com for related info. Additional Adornments Placed near the element as Text Graphic Special compartments for adornments in Classes Components Nodes Transaction Exceptions addAction() Resource Locked named compartment anonymous compartment Client bill.exe report.exe contacts.exe
  • 61. Stereotypes Allow controlled extension of metamodel classes . [ UML11_Metamodel_Diagrams.pdf ] Graphically rendered as Name enclosed in guillemets ( << >> ) <<stereotype>> New icon « metaclass » ModelElement Internet The new building block can have its own special properties through a set of tagged values its own semantics through constraints Mechanisms for extending the UML vocabulary. Allows for new modeling building blocks or parts.
  • 62. Tagged Values Server {channels = 3} <<library>> accounts.dll {customerOnly} tagged values a (name, value) pair describes a property of a model element. Properties allow the extension of “ metamodel ” element attributes . modifies the semantics of the element to which it relates. Rendered as a text string enclosed in braces { } Placed below the name of another element. « subsystem » AccountsPayable { dueDate = 12/30/2002 status = unpaid }
  • 63. Constraints Portfolio BankAccount {secure} A simple constraint Extension of the semantics of a UML element. Allows new or modified rules Rendered in braces {} . Informally as free-form text, or Formally in UML’s Object Constraint Language (OCL): E.g., {self.wife.gender = female and self.husband.gender = male} Constraint across multiple elements Corporation BankAccount {or} Person id : {SSN, passport} Department Person * * 1..* 1 member manager {subset} Person age: Integer Company employers employees 0..* 0..* Company self.employees.forAll(Person p | p.age >= 18 and p.age <= 65)
  • 65. Classes: Notation and Semantics Class - Name attribute-name-1 : data-type-1 = default-value-1 attribute-name-2 : data-type-2 = default-value-2 operation-name-1 ( argument-list-1) : result-type-1 operation-name-2 ( argument-list-2) : result-type-2 responsibilities To model the <<semantics>> (meaning) of a class: Specify the body of each method (pre-/post-conditions and invariants) Specify the state machine for the class Specify the collaboration for the class Specify the responsibilities (contract)
  • 66. Attributes Syntax [ visibility ] name [ multiplicity ] [ : type ] [ = initial-value ] [ {property-string } ] Visibility + public; - private; # protected; {default = +} type There are several defined in Rational Rose. You can define your own. property-string Built-in property-strings: changeable —no restrictions (default) addOnly —values may not be removed or altered, but may be added frozen —may not be changed after initialization Or you can define your own: e.g. {leaf} Name and property id : Integer { frozen } Name, type, and initial value origin : Point = { 0, 0 } Name, multiplicity, and type name [ 0..1 ] : String Name and complex type head : *Item Name and type origin : Point Visibility and name + origin Name only origin
  • 67. Operations Syntax [ visibility ] name [ (parameter-list ) ] [ : return-type ] [ (property-string) ] Visibility + public; - private; # protected; {default = +} parameter-list syntax [ direction ] name : type [ = default-value ] direction in —input parameter; may not be modified out —output parameter; may be modified inout —input parameter; may be modified property-string leaf isQuery —state is not affected sequential —not thread safe guarded —thread safe (Java synchronized) concurrent —typically atomic; safe for multiple flows of control
  • 68. Template Classes ; Primitive Types A template class is a parameterized element and defines a family of classes In order to use a template class, it has to be instantiated Instantiation involves binding formal template parameters to actual ones, resulting in a concrete class + bind( in i : Item; in v : Value ) : Boolean + isBound( in i : Item ) : Boolean {isQuery} Map Item Value Buckets : int Map< Customer, Order, 3 > OrderMap <<bind>> ( Customer, Order, 3 ) explicit binding implicit binding template class template parameters Uses <<bind>> Item Value Buckets Primitive Types using a class notation <<enumeration>> Boolean false true <<dataType>> Int { value range –2**31 to +2**31-1 } constraint stereotype
  • 69. Interface: A Java Example public interface SoundFromSpaceListener extends EventListener { void handleSoundFromSpace(SoundFromSpaceEventObject sfseo); } public class SpaceObservatory implements SoundFromSpaceListener public void handleSoundFromSpace(SoundFromSpaceEventObject sfseo) { soundDetected = true; callForPressConference(); } Can you draw a UML diagram corresponding to this?
  • 70. Package Diagrams: Standard Elements Façade — only a view on some other package. Framework — package consisting mainly of patterns. Stub — a package that serves as a proxy for the public contents of another package. Subsystem — a package representing an independent part of the system being modeled. System — a package representing the entire system being modeled. Is <<import>> transitive? Is visibility transitive? Does <<friend>> apply to all types of visibility: +, -, #?
  • 71. Dependency –Among Objects 3 Stereotypes of Dependency in Interactions among Objects : become : the target is the same object as the source but at a later point in time and with possibly different values, state, or roles call : the source operation invokes the target operation copy : the target object is an exact, but independent, copy of the source