Implementation Diagrams: CSE870: UML Component Diagrams
Implementation Diagrams: CSE870: UML Component Diagrams
R
R
Implementation Diagrams
R
R Implementation Diagrams
R
R Package
Package Name
R
R Component Diagram
• Classes
• Interfaces
• Dependency, generalization, association, and
realization relationships
Example.java
R
R Interfaces
• Definition:
– Collection of operation signatures and/or attribute defns
– Defines a cohesive set of behaviors
• Realized by:
– Implemented by classes and components
– Implement operations/attributes defined by interface
• Relationships:
– A class can implement 0 or more interfaces
– An interface can be implemented by 1 or more classes
• Notation:
– Lollipop
– Dashed arrow
[Ambler, 2002-2005]
CSE870: UML Component Diagrams
R
R
R Sample interfaces
[Ambler, 2002-2005]
CSE870: UML Component Diagrams
R
R
R Example Component Diagram
[Ambler, 2002-2005]
CSE870: UML Component Diagrams
R
R
R Component Diagram
executable
find.html
Find.exe
page
Index.html
Comp1.dll Comp2.dll
library
CSE870: UML Component Diagrams
R
R
R Common Uses:
R
R Common Uses: (cont’d)
• Model Physical databases:
– database is concrete realization of schema
– schemas offer an API to persistent information
– model of physical dbases represents storage of that information
in tables of a relational dbase or pages of an OO dbase.
– Component Diagram can represent this kind of physical
database
• Model Adaptable systems:
– can model static aspects of adaptable systems
– can model dynamic aspects (in conjunction with behavioral
models)
R
R Modeling Source Code
R
R Modeling Source Code Example
Signal.h Signal.h Signal.h
{version=3.5} {version=4.0} {version=4.1}
• 5 source code files
– signal.h (header)
– used by 2 other files
(signal.cpp, interp.cpp) <<parent>> <<parent>>
Interp.cpp Signal.cpp
– interp.cpp has compilation
dependency to header file
(irq.h)
– device.cpp compilation Irq.h
dependency to interp.cpp Device.cpp
R
R Component Diagram Guidelines
• Use Descriptive Names for Architectural Components
– Use Environment-Specific Naming Conventions for Detailed Design
Components
– Apply Textual Stereotypes to Components Consistently
– Avoid Modeling Data and User Interface Components
• Interfaces
– Prefer Lollipop Notation To Indicate Realization of Interfaces By Components
– Prefer the Left-Hand Side of A Component for Interface Lollipops
– Show Only Relevant Interfaces
• Dependencies and Inheritance
– Model Dependencies From Left To Right
– Place Child Components Below Parent Components
– Components Should Only Depend on Interfaces
– Avoid Modeling Compilation Dependencies
R
R Common Stereotypes
Stereotype Indicates
<<application>> A “front-end” of your system, such as the collection of HTML pages and ASP/JSPs
that work with them for a browser-based system or the collection of screens and
controller classes for a GUI-based system.
<<database>> A hierarchical, relational, object-relational, network, or object-oriented database.
<<document>> A document. A UML standard stereotype.
<<executable>> A software component that can be executed on a node. A UML standard stereotype.
<<file>> A data file. A UML standard stereotype.
<<infrastructure>> A technical component within your system such as a persistence service or an audit
logger.
<<library>> An object or function library. A UML standard stereotype.
<<source code>> A source code file, such as a .java file or a .cpp file.
<<table>> A data table within a database. A UML standard stereotype
<<web service>> One or more web services.
<<XML DTD>> An XML DTD.
Deployment Diagrams
R
R Deployment Diagram
R
R Contents
R
R A Deployment Diagram
Internet node Modem bank
<<processor>> <<processor>>
Caching server Caching server
connection
R
R Client-Server System
R
R Sample Communication Links