SlideShare a Scribd company logo
Copyright Rational Software 2003 http://www.therationaledge.com/content/jun_03/f_umlintro_db.jsp 
UML basics: An introduction to the Unified 
Modeling Language 
by Donald Bell 
IBM Global Services 
Way back in the late twentieth century - 
- 1997 to be exact -- the Object 
Management Group (OMG) released 
the Unified Modeling Language (UML). 
One of the purposes of UML was to 
provide the development community 
with a stable and common design 
language that could be used to develop 
and build computer applications. UML 
brought forth a unified standard 
modeling notation that IT professionals 
had been wanting for years. Using 
UML, IT professionals could now read 
and disseminate system structure and 
design plans -- just as construction 
workers have been doing for years 
with blueprints of buildings. 
It is now the twenty-first century -- 
2003 to be precise -- and UML has 
gained traction in our profession. On 75 percent of the resumes I see, 
there is a bullet point claiming knowledge of UML. However, after speaking 
with a majority of these job candidates, it becomes clear that they do not 
truly know UML. Typically, they are either using it as a buzz word, or they 
have had a sliver of exposure to UML. This lack of understanding inspired 
me to write this quick introduction to UML 1.4. When you are finished 
reading you will not have enough knowledge to put UML on your resume, 
but you will have a starting point for digging more deeply into the 
language. 
A little background 
As I mentioned, UML was meant to be a unifying language enabling IT 
professionals to model computer applications. The primary authors were
Jim Rumbaugh, Ivar Jacobson, and Grady Booch, who originally had their 
own competing methods (OMT, OOSE, and Booch). Eventually, they joined 
forces and brought about an open standard. (Sound familiar? A similar 
phenomenon spawned J2EE, SOAP, and Linux.) One reason UML has 
become a standard modeling language is that it is programming-language 
independent. (UML modeling tools from IBM Rational are used extensively 
in J2EE shops as well in .Net shops.) Also, the UML notation set is a 
language and not a methodology. This is important, because a language, 
as opposed to a methodology, can easily fit into any company's way of 
conducting business without requiring change. 
Since UML is not a methodology, it does not require any formal work 
products (i.e., "artifacts" in IBM Rational Unified Process® lingo). Yet it 
does provide several types of diagrams that, when used within a given 
methodology, increase the ease of understanding an application under 
development. There is more to UML than these diagrams, but for my 
purposes here, the diagrams offer a good introduction to the language and 
the principles behind its use. By placing standard UML diagrams in your 
methodology's work products, you make it easier for UML-proficient people 
to join your project and quickly become productive. The most useful, 
standard UML diagrams are: use case diagram, class diagram, sequence 
diagram, statechart diagram, activity diagram, component diagram, and 
deployment diagram. 
It is beyond the scope of this introductory article to go into great detail 
about each type of diagram. Instead, I will provide you with enough 
information for a general understanding of each one and then supply more 
details in later articles. 
Use-case diagram 
A use case illustrates a unit of functionality provided by the system. The 
main purpose of the use-case diagram is to help development teams 
visualize the functional requirements of a system, including the 
relationship of "actors" (human beings who will interact with the system) 
to essential processes, as well as the relationships among different use 
cases. Use-case diagrams generally show groups of use cases -- either all 
use cases for the complete system, or a breakout of a particular group of 
use cases with related functionality (e.g., all security administration-related 
use cases). To show a use case on a use-case diagram, you draw 
an oval in the middle of the diagram and put the name of the use case in 
the center of, or below, the oval. To draw an actor (indicating a system 
user) on a use-case diagram, you draw a stick person to the left or right of 
your diagram (and just in case you're wondering, some people draw 
prettier stick people than others). Use simple lines to depict relationships 
between actors and use cases, as shown in Figure 1.
Figure 1: Sample use-case diagram 
Click to enlarge 
A use-case diagram is typically used to communicate the high-level 
functions of the system and the system's scope. By looking at our use-case 
diagram in Figure 1, you can easily tell the functions that our 
example system provides. This system lets the band manager view a sales 
statistics report and the Billboard 200 report for the band's CDs. It also 
lets the record manager view a sales statistics report and the Billboard 
200 report for a particular CD. The diagram also tells us that our system 
delivers Billboard reports from an external system called Billboard 
Reporting Service. 
In addition, the absence of use cases in this diagram shows what the 
system doesn't do. For example, it does not provide a way for a band 
manager to listen to songs from the different albums on the Billboard 200 - 
- i.e., we see no reference to a use case called Listen to Songs from 
Billboard 200. This absence is not a trivial matter. With clear and simple 
use-case descriptions provided on such a diagram, a project sponsor can 
easily see if needed functionality is present or not present in the system. 
Class diagram 
The class diagram shows how the different entities (people, things, and 
data) relate to each other; in other words, it shows the static structures of 
the system. A class diagram can be used to display logical classes, which 
are typically the kinds of things the business people in an organization talk
about -- rock bands, CDs, radio play; or loans, home mortgages, car 
loans, and interest rates. Class diagrams can also be used to show 
implementation classes, which are the things that programmers typically 
deal with. An implementation class diagram will probably show some of 
the same classes as the logical classes diagram.The implementation class 
diagram won't be drawn with the same attributes, however, because it will 
most likely have references to things like Vectors and HashMaps. 
A class is depicted on the class diagram as a rectangle with three 
horizontal sections, as shown in Figure 2. The upper section shows the 
class's name; the middle section contains the class's attributes; and the 
lower section contains the class's operations (or "methods"). 
Figure 2: Sample class object in a class diagram 
In my experience, almost every developer knows what this diagram is, yet 
I find that most programmers draw the relationship lines incorrectly. For a 
class diagram like the one in Figure 3,you should draw the inheritance 
relationship1 using a line with an arrowhead at the top pointing to the 
super class, and the arrowhead should a completed triangle. An 
association relationship should be a solid line if both classes are aware of 
each other and a line with an open arrowhead if the association is known 
by only one of the classes. 
Figure 3: A complete class diagram, 
including the class object shown in Figure 2 
Click to enlarge 
In Figure 3, we see both the inheritance relationship and two association 
relationships. The CDSalesReport class inherits from the Report class. A 
CDSalesReport is associated with one CD, but the CD class doesn't know 
anything about the CDSalesReport class. The CD and the Band classes 
both know about each other, and both classes can be associated to one or 
more of each other. 
http://bronze.rational.com:8169/content/jun_03/f_UMLintro_db.jsp (4 of 11) [6/13/2003 12:58:48 PM]
A class diagram can incorporate many more concepts, which we will cover 
later in this article series. 
Sequence diagram 
Sequence diagrams show a detailed flow for a specific use case or even 
just part of a specific use case. They are almost self explanatory; they 
show the calls between the different objects in their sequence and can 
show, at a detailed level, different calls to different objects. 
A sequence diagram has two dimensions: The vertical dimension shows 
the sequence of messages/calls in the time order that they occur; the 
horizontal dimension shows the object instances to which the messages 
are sent. 
A sequence diagram is very simple to draw. Across the top of your 
diagram, identify the class instances (objects) by putting each class 
instance inside a box (see Figure 4). In the box, put the class instance 
name and class name separated by a space/colon/space " : " (e.g., 
myReportGenerator : ReportGenerator). If a class instance sends a 
message to another class instance, draw a line with an open arrowhead 
pointing to the receiving class instance; place the name of the 
message/method above the line. Optionally, for important messages, you 
can draw a dotted line with an arrowhead pointing back to the originating 
class instance; label the return value above the dotted line. Personally, I 
always like to include the return value lines because I find the extra details 
make it easier to read. 
Reading a sequence diagram is very simple. Start at the top left corner 
with the "driver" class instance that starts the sequence. Then follow each 
message down the diagram. Remember: Even though the example 
sequence diagram in Figure 4 shows a return message for each sent 
message, this is optional. 
http://bronze.rational.com:8169/content/jun_03/f_UMLintro_db.jsp (5 of 11) [6/13/2003 12:58:48 PM]
Figure 4: A sample sequence diagram 
Click to enlarge 
By reading our sample sequence diagram in Figure 4, you can see how to 
create a CD Sales Report. The aServlet object is our example driver. 
aServlet sends a message to the ReportGenerator class instance named 
gen. The message is labeled generateCDSalesReport, which means that 
the ReportGenerator object implements this message handler. On closer 
inspection, the generateCDSalesReport message label has cdId in 
parentheses, which means that aServlet is passing a variable named cdId 
with the message. When gen instance receives a generateCDSalesReport 
message, it then makes subsequent calls to the CDSalesReport class, and 
an actual instance of a CDSalesReport called aCDReport gets returned. 
The gen instance then makes calls to the returned aCDReport instance, 
passing it parameters on each message call. At the end of the sequence, 
the gen instance returns aCDReport to its caller aServlet. 
Please note: The sequence diagram in Figure 4 is arguably too detailed for 
a typical sequence diagram. However, I believe it is simple enough to 
understand, and it shows how nested calls are drawn. Also, with junior 
developers, sometimes it is necessary to break down sequences to this 
explicit level to help them understand what they are supposed to do. 
Statechart diagram 
The statechart diagram models the different states that a class can be in 
and how that class transitions from state to state. It can be argued that 
every class has a state, but that every class shouldn't have a statechart 
diagram. Only classes with "interesting" states -- that is, classes with 
three or more potential states during system activity -- should be 
modeled. 
As shown in Figure 5, the notation set of the statechart diagram has five 
basic elements: the initial starting point, which is drawn using a solid 
circle; a transition between states, which is drawn using a line with an 
open arrowhead; a state, which is drawn using a rectangle with rounded 
corners; a decision point, which is drawn as an open circle; and one or 
more termination points, which are drawn using a circle with a solid circle 
inside it. To draw a statechart diagram, begin with a starting point and a 
transition line pointing to the initial state of the class. Draw the states 
themselves anywhere on the diagram, and then simply connect them 
using the state transition lines.
Figure 5: Statechart diagram showing the various states 
that classes pass through in a functioning system 
Click to enlarge 
The example statechart diagram in Figure 5 shows some of the potential 
information they can communicate. For instance, you can tell that loan 
processing begins in the Loan Application state. When the pre-approval 
process is done, depending on the outcome, you move to either the Loan 
Pre-approved state or the Loan Rejected state. This decision, which is 
made during the transition process, is shown with a decision point -- the 
empty circle in the transition line. By looking at the example, a person can 
tell that a loan cannot go from the Loan Pre-Approved state to the Loan in 
Maintenance state without going through the Loan Closing state. Also, by 
looking at our example diagram, a person can tell that all loans will end in 
either the Loan Rejected state or the Loan in Maintenance state. 
Activity diagram 
Activity diagrams show the procedural flow of control between two or 
more class objects while processing an activity. Activity diagrams can be 
used to model higher-level business process at the business unit level, or 
to model low-level internal class actions. In my experience, activity 
diagrams are best used to model higher-level processes, such as how the 
company is currently doing business, or how it would like to do business. 
This is because activity diagrams are "less technical" in appearance, 
compared to sequence diagrams, and business-minded people tend to 
understand them more quickly. 
An activity diagram's notation set is similar to that used in a statechart 
diagram. Like a statechart diagram, the activity diagram starts with a solid 
circle connected to the initial activity. The activity is modeled by drawing a 
rectangle with rounded edges, enclosing the activity's name. Activities can 
be connected to other activities through transition lines, or to decision 
points that connect to different activities guarded by conditions of the 
decision point. Activities that terminate the modeled process are 
connected to a termination point (just as in a statechart diagram).
Optionally, the activities can be grouped into swimlanes, which are used to 
indicate the object that actually performs the activity, as shown in Figure 
6. 
Figure 6: Activity diagram, with two swimlanes to indicate control 
of activity by two objects: the band manager, and the reporting 
tool 
In our example activity diagram, we have two swimlanes because we have 
two objects that control separate activities: a band manager and a 
reporting tool. The process starts with the band manager electing to view 
the sales report for one of his bands. The reporting tool then retrieves and 
displays all the bands that person manages and asks him to choose one. 
After the band manager selects a band, the reporting tool retrieves the 
sales information and displays the sales report. The activity diagram 
shows that displaying the report is the last step in the process. 
Component diagram 
A component diagram provides a physical view of the system. Its purpose 
is to show the dependencies that the software has on the other software 
components (e.g., software libraries) in the system. The diagram can be
shown at a very high level, with just the large-grain components, or it can 
be shown at the component package level.2 
Modeling a component diagram is best described through an example. 
Figure 7 shows four components: Reporting Tool, Billboard Service, 
Servlet 2.2 API, and JDBC API. The arrowed lines from the Reporting Tool 
component to the Billboard Service, Servlet 2.2 API, and JDBC API 
components mean that the Reporting Tool is dependent on those three 
components. 
Figure 7: A component diagram shows interdependencies of 
various software components the system comprises 
Click to enlarge 
Deployment diagram 
The deployment diagram shows how a system will be physically deployed 
in the hardware environment. Its purpose is to show where the different 
components of the system will physically run and how they will 
communicate with each other. Since the diagram models the physical 
runtime, a system's production staff will make considerable use of this 
diagram. 
The notation in a deployment diagram includes the notation elements used 
in a component diagram, with a couple of additions, including the concept 
of a node. A node represents either a physical machine or a virtual 
machine node (e.g., a mainframe node). To model a node, simply draw a 
three-dimensional cube with the name of the node at the top of the cube. 
Use the naming convention used in sequence diagrams: [instance name] : 
[instance type] (e.g., "w3reporting.myco.com : Application Server").
Figure 8: Deployment diagram. Because the Reporting Tool 
component is drawn inside of IBM WebSphere, which in turn is 
drawn inside of the node w3.reporting.myco.com, we know that 
users will access the Reporting Tool via a browser running on their 
local machine, and connecting via HTTP over their company's 
intranet. 
Click to enlarge 
The deployment diagram in Figure 8 shows that the users access the 
Reporting Tool by using a browser running on their local machine and 
connecting via HTTP over their company's intranet to the Reporting Tool. 
This tool physically runs on the Application Server named 
w3reporting.myco.com. The diagram shows the Reporting Tool component 
drawn inside of IBM WebSphere, which in turn is drawn inside of the node 
w3.reporting.myco.com. The Reporting Tool connects to its reporting 
database using the Java language to IBM DB2's JDBC interface, which then 
communicates to the actual DB2 database running on the server named 
db1.myco.com using native DB2 communication. In addition to talking to 
the reporting database, the Report Tool component communicates via 
SOAP over HTTPS to the Billboard Service. 
Conclusion 
Although this article provides only a brief introduction to Unified Modeling 
Language, I encourage you to start applying the information you have 
learned here to your own projects and to dig more deeply into UML. There 
are several software tools that help you to integrate UML diagrams into 
your software development process, but even without automated tools, 
you can use markers on a whiteboard or paper and pencils to draw your 
UML diagrams and still achieve benefits.
Notes 
1 For more information on inheritance and other object-oriented principles, see 
http://java.sun.com/docs/books/tutorial/java/concepts/inheritance.html 
2 The phrase component package level is a programming language-neutral way of referring 
to class container levels such as .Net's namespaces (e.g., System.Web.UI) or Java's 
packages (e.g., java.util). 
Resources 
http://www.uml.org -- The official UML Web site. 
http://www.rational.com/uml/resources/documentation/index.jsp --Offers 
several different versions of the actual UML specification. 
http://www.rational.com/rose --Information on IBM Rational Rose,® A 
commercial UML modeling tool. 
http://www.rational.com/xde --Information on IBM Rational XDE,® a 
commercial UML modeling tool that is integrated with IBM's Eclipse 
development platform. 
http://argouml.tigris.org --Information on Argo UML, an .open source UML 
modeling tool built in Java. 
http://uml.sourceforge.net/index.php -- Information on Umbrello UML 
Modeller, an open source UML modeling tool for KDE. 
For more information on the products or services discussed in this 
article, please click here and follow the instructions provided. 
Thank you! 
Copyright Rational Software 2003 | Privacy/Legal Information

More Related Content

PDF
Uml basics
PPTX
Unified Modeling Language
PPTX
Unified Modeling Language
PPT
Unified Modeling Language
PPTX
Ooad static diagram
PPTX
Sequence diagrams in UML
PPT
PPT
Uml in software engineering
Uml basics
Unified Modeling Language
Unified Modeling Language
Unified Modeling Language
Ooad static diagram
Sequence diagrams in UML
Uml in software engineering

What's hot (19)

PPT
08 class and sequence diagrams
PPT
UML Diagram Assignment Help, UML Diagram Homework Help
PDF
Design UML diagrams
PDF
Sequence diagram- UML diagram
DOC
MUTHOFUN Bulk Messaging Panel User_Manual_v1.6
PPT
UML- Unified Modeling Language
PDF
Documenting Software Architectural Component and Connector with UML 2
PPT
Uml Omg Fundamental Certification 1
PPT
Object Oriented Modeling and Design with UML
PDF
Diagramming the Class Diagram: Toward a Unified Modeling Methodology
PPTX
UML Diagram - Use-Case diagram, Activity Diagram, Sequence Diagram, Er Diagra...
PDF
Domain Modeling
PPTX
Introduction to UML
PPT
PPTX
ODP
Uml
PPT
4.o o design tools=uml -_lecture 4
PPT
08 class and sequence diagrams
UML Diagram Assignment Help, UML Diagram Homework Help
Design UML diagrams
Sequence diagram- UML diagram
MUTHOFUN Bulk Messaging Panel User_Manual_v1.6
UML- Unified Modeling Language
Documenting Software Architectural Component and Connector with UML 2
Uml Omg Fundamental Certification 1
Object Oriented Modeling and Design with UML
Diagramming the Class Diagram: Toward a Unified Modeling Methodology
UML Diagram - Use-Case diagram, Activity Diagram, Sequence Diagram, Er Diagra...
Domain Modeling
Introduction to UML
Uml
4.o o design tools=uml -_lecture 4
Ad

Viewers also liked (11)

PPTX
2CPP05 - Modelling an Object Oriented Program
PPTX
Sample question format
PDF
Types of UML diagrams
PPT
Lecture04- Use Case Diagrams
PPT
Use Case Diagram
PPT
Uml - An Overview
PPTX
Uml Presentation
PPT
Uml diagrams
PPT
Use Case Diagram
2CPP05 - Modelling an Object Oriented Program
Sample question format
Types of UML diagrams
Lecture04- Use Case Diagrams
Use Case Diagram
Uml - An Overview
Uml Presentation
Uml diagrams
Use Case Diagram
Ad

Similar to Object oriented modelling (20)

PDF
Uml basics
PDF
Design UML diagrams
PDF
Software Engineering Tools and Practices.pdf
PPTX
Uml Presentation
PPTX
UML tutorial
DOCX
Chapterunifiedmo 3 UML Class Diagram.docx
PPT
SDA ClassDiagram.ppt
PPT
Uml introduciton
PPT
SE UML.ppt
DOCX
UML Design
PPT
Chapter 2-Unified Modeling Languagee.ppt
PPT
Chapter 2-Unified Modeling Languagee.ppt
PPT
Uml(unified modeling language) Homework Help
PPTX
PPTX
SMD Unit ii
DOCX
Ooad unit 1
PPT
Activity Diagram
PPTX
UML (Unified Modeling Language)
DOCX
Course NumberCourse SectionCourse Name.docx
Uml basics
Design UML diagrams
Software Engineering Tools and Practices.pdf
Uml Presentation
UML tutorial
Chapterunifiedmo 3 UML Class Diagram.docx
SDA ClassDiagram.ppt
Uml introduciton
SE UML.ppt
UML Design
Chapter 2-Unified Modeling Languagee.ppt
Chapter 2-Unified Modeling Languagee.ppt
Uml(unified modeling language) Homework Help
SMD Unit ii
Ooad unit 1
Activity Diagram
UML (Unified Modeling Language)
Course NumberCourse SectionCourse Name.docx

Recently uploaded (20)

PDF
SEVA- Fashion designing-Presentation.pdf
PPTX
Entrepreneur intro, origin, process, method
PPTX
Media And Information Literacy for Grade 12
PPTX
Complete Guide to Microsoft PowerPoint 2019 – Features, Tools, and Tips"
PDF
Design Thinking - Module 1 - Introduction To Design Thinking - Dr. Rohan Dasg...
PPTX
building Planning Overview for step wise design.pptx
PPTX
BSCS lesson 3.pptxnbbjbb mnbkjbkbbkbbkjb
PDF
Interior Structure and Construction A1 NGYANQI
PDF
Emailing DDDX-MBCaEiB.pdf DDD_Europe_2022_Intro_to_Context_Mapping_pdf-165590...
PPTX
ANATOMY OF ANTERIOR CHAMBER ANGLE AND GONIOSCOPY.pptx
PDF
Urban Design Final Project-Site Analysis
PPT
pump pump is a mechanism that is used to transfer a liquid from one place to ...
PPTX
Tenders & Contracts Works _ Services Afzal.pptx
PDF
YOW2022-BNE-MinimalViableArchitecture.pdf
PPTX
Wisp Textiles: Where Comfort Meets Everyday Style
PDF
Key Trends in Website Development 2025 | B3AITS - Bow & 3 Arrows IT Solutions
PPTX
12. Community Pharmacy and How to organize it
PDF
Integrated-2D-and-3D-Animation-Bridging-Dimensions-for-Impactful-Storytelling...
PPT
EGWHermeneuticsffgggggggggggggggggggggggggggggggg.ppt
PDF
Quality Control Management for RMG, Level- 4, Certificate
SEVA- Fashion designing-Presentation.pdf
Entrepreneur intro, origin, process, method
Media And Information Literacy for Grade 12
Complete Guide to Microsoft PowerPoint 2019 – Features, Tools, and Tips"
Design Thinking - Module 1 - Introduction To Design Thinking - Dr. Rohan Dasg...
building Planning Overview for step wise design.pptx
BSCS lesson 3.pptxnbbjbb mnbkjbkbbkbbkjb
Interior Structure and Construction A1 NGYANQI
Emailing DDDX-MBCaEiB.pdf DDD_Europe_2022_Intro_to_Context_Mapping_pdf-165590...
ANATOMY OF ANTERIOR CHAMBER ANGLE AND GONIOSCOPY.pptx
Urban Design Final Project-Site Analysis
pump pump is a mechanism that is used to transfer a liquid from one place to ...
Tenders & Contracts Works _ Services Afzal.pptx
YOW2022-BNE-MinimalViableArchitecture.pdf
Wisp Textiles: Where Comfort Meets Everyday Style
Key Trends in Website Development 2025 | B3AITS - Bow & 3 Arrows IT Solutions
12. Community Pharmacy and How to organize it
Integrated-2D-and-3D-Animation-Bridging-Dimensions-for-Impactful-Storytelling...
EGWHermeneuticsffgggggggggggggggggggggggggggggggg.ppt
Quality Control Management for RMG, Level- 4, Certificate

Object oriented modelling

  • 1. Copyright Rational Software 2003 http://www.therationaledge.com/content/jun_03/f_umlintro_db.jsp UML basics: An introduction to the Unified Modeling Language by Donald Bell IBM Global Services Way back in the late twentieth century - - 1997 to be exact -- the Object Management Group (OMG) released the Unified Modeling Language (UML). One of the purposes of UML was to provide the development community with a stable and common design language that could be used to develop and build computer applications. UML brought forth a unified standard modeling notation that IT professionals had been wanting for years. Using UML, IT professionals could now read and disseminate system structure and design plans -- just as construction workers have been doing for years with blueprints of buildings. It is now the twenty-first century -- 2003 to be precise -- and UML has gained traction in our profession. On 75 percent of the resumes I see, there is a bullet point claiming knowledge of UML. However, after speaking with a majority of these job candidates, it becomes clear that they do not truly know UML. Typically, they are either using it as a buzz word, or they have had a sliver of exposure to UML. This lack of understanding inspired me to write this quick introduction to UML 1.4. When you are finished reading you will not have enough knowledge to put UML on your resume, but you will have a starting point for digging more deeply into the language. A little background As I mentioned, UML was meant to be a unifying language enabling IT professionals to model computer applications. The primary authors were
  • 2. Jim Rumbaugh, Ivar Jacobson, and Grady Booch, who originally had their own competing methods (OMT, OOSE, and Booch). Eventually, they joined forces and brought about an open standard. (Sound familiar? A similar phenomenon spawned J2EE, SOAP, and Linux.) One reason UML has become a standard modeling language is that it is programming-language independent. (UML modeling tools from IBM Rational are used extensively in J2EE shops as well in .Net shops.) Also, the UML notation set is a language and not a methodology. This is important, because a language, as opposed to a methodology, can easily fit into any company's way of conducting business without requiring change. Since UML is not a methodology, it does not require any formal work products (i.e., "artifacts" in IBM Rational Unified Process® lingo). Yet it does provide several types of diagrams that, when used within a given methodology, increase the ease of understanding an application under development. There is more to UML than these diagrams, but for my purposes here, the diagrams offer a good introduction to the language and the principles behind its use. By placing standard UML diagrams in your methodology's work products, you make it easier for UML-proficient people to join your project and quickly become productive. The most useful, standard UML diagrams are: use case diagram, class diagram, sequence diagram, statechart diagram, activity diagram, component diagram, and deployment diagram. It is beyond the scope of this introductory article to go into great detail about each type of diagram. Instead, I will provide you with enough information for a general understanding of each one and then supply more details in later articles. Use-case diagram A use case illustrates a unit of functionality provided by the system. The main purpose of the use-case diagram is to help development teams visualize the functional requirements of a system, including the relationship of "actors" (human beings who will interact with the system) to essential processes, as well as the relationships among different use cases. Use-case diagrams generally show groups of use cases -- either all use cases for the complete system, or a breakout of a particular group of use cases with related functionality (e.g., all security administration-related use cases). To show a use case on a use-case diagram, you draw an oval in the middle of the diagram and put the name of the use case in the center of, or below, the oval. To draw an actor (indicating a system user) on a use-case diagram, you draw a stick person to the left or right of your diagram (and just in case you're wondering, some people draw prettier stick people than others). Use simple lines to depict relationships between actors and use cases, as shown in Figure 1.
  • 3. Figure 1: Sample use-case diagram Click to enlarge A use-case diagram is typically used to communicate the high-level functions of the system and the system's scope. By looking at our use-case diagram in Figure 1, you can easily tell the functions that our example system provides. This system lets the band manager view a sales statistics report and the Billboard 200 report for the band's CDs. It also lets the record manager view a sales statistics report and the Billboard 200 report for a particular CD. The diagram also tells us that our system delivers Billboard reports from an external system called Billboard Reporting Service. In addition, the absence of use cases in this diagram shows what the system doesn't do. For example, it does not provide a way for a band manager to listen to songs from the different albums on the Billboard 200 - - i.e., we see no reference to a use case called Listen to Songs from Billboard 200. This absence is not a trivial matter. With clear and simple use-case descriptions provided on such a diagram, a project sponsor can easily see if needed functionality is present or not present in the system. Class diagram The class diagram shows how the different entities (people, things, and data) relate to each other; in other words, it shows the static structures of the system. A class diagram can be used to display logical classes, which are typically the kinds of things the business people in an organization talk
  • 4. about -- rock bands, CDs, radio play; or loans, home mortgages, car loans, and interest rates. Class diagrams can also be used to show implementation classes, which are the things that programmers typically deal with. An implementation class diagram will probably show some of the same classes as the logical classes diagram.The implementation class diagram won't be drawn with the same attributes, however, because it will most likely have references to things like Vectors and HashMaps. A class is depicted on the class diagram as a rectangle with three horizontal sections, as shown in Figure 2. The upper section shows the class's name; the middle section contains the class's attributes; and the lower section contains the class's operations (or "methods"). Figure 2: Sample class object in a class diagram In my experience, almost every developer knows what this diagram is, yet I find that most programmers draw the relationship lines incorrectly. For a class diagram like the one in Figure 3,you should draw the inheritance relationship1 using a line with an arrowhead at the top pointing to the super class, and the arrowhead should a completed triangle. An association relationship should be a solid line if both classes are aware of each other and a line with an open arrowhead if the association is known by only one of the classes. Figure 3: A complete class diagram, including the class object shown in Figure 2 Click to enlarge In Figure 3, we see both the inheritance relationship and two association relationships. The CDSalesReport class inherits from the Report class. A CDSalesReport is associated with one CD, but the CD class doesn't know anything about the CDSalesReport class. The CD and the Band classes both know about each other, and both classes can be associated to one or more of each other. http://bronze.rational.com:8169/content/jun_03/f_UMLintro_db.jsp (4 of 11) [6/13/2003 12:58:48 PM]
  • 5. A class diagram can incorporate many more concepts, which we will cover later in this article series. Sequence diagram Sequence diagrams show a detailed flow for a specific use case or even just part of a specific use case. They are almost self explanatory; they show the calls between the different objects in their sequence and can show, at a detailed level, different calls to different objects. A sequence diagram has two dimensions: The vertical dimension shows the sequence of messages/calls in the time order that they occur; the horizontal dimension shows the object instances to which the messages are sent. A sequence diagram is very simple to draw. Across the top of your diagram, identify the class instances (objects) by putting each class instance inside a box (see Figure 4). In the box, put the class instance name and class name separated by a space/colon/space " : " (e.g., myReportGenerator : ReportGenerator). If a class instance sends a message to another class instance, draw a line with an open arrowhead pointing to the receiving class instance; place the name of the message/method above the line. Optionally, for important messages, you can draw a dotted line with an arrowhead pointing back to the originating class instance; label the return value above the dotted line. Personally, I always like to include the return value lines because I find the extra details make it easier to read. Reading a sequence diagram is very simple. Start at the top left corner with the "driver" class instance that starts the sequence. Then follow each message down the diagram. Remember: Even though the example sequence diagram in Figure 4 shows a return message for each sent message, this is optional. http://bronze.rational.com:8169/content/jun_03/f_UMLintro_db.jsp (5 of 11) [6/13/2003 12:58:48 PM]
  • 6. Figure 4: A sample sequence diagram Click to enlarge By reading our sample sequence diagram in Figure 4, you can see how to create a CD Sales Report. The aServlet object is our example driver. aServlet sends a message to the ReportGenerator class instance named gen. The message is labeled generateCDSalesReport, which means that the ReportGenerator object implements this message handler. On closer inspection, the generateCDSalesReport message label has cdId in parentheses, which means that aServlet is passing a variable named cdId with the message. When gen instance receives a generateCDSalesReport message, it then makes subsequent calls to the CDSalesReport class, and an actual instance of a CDSalesReport called aCDReport gets returned. The gen instance then makes calls to the returned aCDReport instance, passing it parameters on each message call. At the end of the sequence, the gen instance returns aCDReport to its caller aServlet. Please note: The sequence diagram in Figure 4 is arguably too detailed for a typical sequence diagram. However, I believe it is simple enough to understand, and it shows how nested calls are drawn. Also, with junior developers, sometimes it is necessary to break down sequences to this explicit level to help them understand what they are supposed to do. Statechart diagram The statechart diagram models the different states that a class can be in and how that class transitions from state to state. It can be argued that every class has a state, but that every class shouldn't have a statechart diagram. Only classes with "interesting" states -- that is, classes with three or more potential states during system activity -- should be modeled. As shown in Figure 5, the notation set of the statechart diagram has five basic elements: the initial starting point, which is drawn using a solid circle; a transition between states, which is drawn using a line with an open arrowhead; a state, which is drawn using a rectangle with rounded corners; a decision point, which is drawn as an open circle; and one or more termination points, which are drawn using a circle with a solid circle inside it. To draw a statechart diagram, begin with a starting point and a transition line pointing to the initial state of the class. Draw the states themselves anywhere on the diagram, and then simply connect them using the state transition lines.
  • 7. Figure 5: Statechart diagram showing the various states that classes pass through in a functioning system Click to enlarge The example statechart diagram in Figure 5 shows some of the potential information they can communicate. For instance, you can tell that loan processing begins in the Loan Application state. When the pre-approval process is done, depending on the outcome, you move to either the Loan Pre-approved state or the Loan Rejected state. This decision, which is made during the transition process, is shown with a decision point -- the empty circle in the transition line. By looking at the example, a person can tell that a loan cannot go from the Loan Pre-Approved state to the Loan in Maintenance state without going through the Loan Closing state. Also, by looking at our example diagram, a person can tell that all loans will end in either the Loan Rejected state or the Loan in Maintenance state. Activity diagram Activity diagrams show the procedural flow of control between two or more class objects while processing an activity. Activity diagrams can be used to model higher-level business process at the business unit level, or to model low-level internal class actions. In my experience, activity diagrams are best used to model higher-level processes, such as how the company is currently doing business, or how it would like to do business. This is because activity diagrams are "less technical" in appearance, compared to sequence diagrams, and business-minded people tend to understand them more quickly. An activity diagram's notation set is similar to that used in a statechart diagram. Like a statechart diagram, the activity diagram starts with a solid circle connected to the initial activity. The activity is modeled by drawing a rectangle with rounded edges, enclosing the activity's name. Activities can be connected to other activities through transition lines, or to decision points that connect to different activities guarded by conditions of the decision point. Activities that terminate the modeled process are connected to a termination point (just as in a statechart diagram).
  • 8. Optionally, the activities can be grouped into swimlanes, which are used to indicate the object that actually performs the activity, as shown in Figure 6. Figure 6: Activity diagram, with two swimlanes to indicate control of activity by two objects: the band manager, and the reporting tool In our example activity diagram, we have two swimlanes because we have two objects that control separate activities: a band manager and a reporting tool. The process starts with the band manager electing to view the sales report for one of his bands. The reporting tool then retrieves and displays all the bands that person manages and asks him to choose one. After the band manager selects a band, the reporting tool retrieves the sales information and displays the sales report. The activity diagram shows that displaying the report is the last step in the process. Component diagram A component diagram provides a physical view of the system. Its purpose is to show the dependencies that the software has on the other software components (e.g., software libraries) in the system. The diagram can be
  • 9. shown at a very high level, with just the large-grain components, or it can be shown at the component package level.2 Modeling a component diagram is best described through an example. Figure 7 shows four components: Reporting Tool, Billboard Service, Servlet 2.2 API, and JDBC API. The arrowed lines from the Reporting Tool component to the Billboard Service, Servlet 2.2 API, and JDBC API components mean that the Reporting Tool is dependent on those three components. Figure 7: A component diagram shows interdependencies of various software components the system comprises Click to enlarge Deployment diagram The deployment diagram shows how a system will be physically deployed in the hardware environment. Its purpose is to show where the different components of the system will physically run and how they will communicate with each other. Since the diagram models the physical runtime, a system's production staff will make considerable use of this diagram. The notation in a deployment diagram includes the notation elements used in a component diagram, with a couple of additions, including the concept of a node. A node represents either a physical machine or a virtual machine node (e.g., a mainframe node). To model a node, simply draw a three-dimensional cube with the name of the node at the top of the cube. Use the naming convention used in sequence diagrams: [instance name] : [instance type] (e.g., "w3reporting.myco.com : Application Server").
  • 10. Figure 8: Deployment diagram. Because the Reporting Tool component is drawn inside of IBM WebSphere, which in turn is drawn inside of the node w3.reporting.myco.com, we know that users will access the Reporting Tool via a browser running on their local machine, and connecting via HTTP over their company's intranet. Click to enlarge The deployment diagram in Figure 8 shows that the users access the Reporting Tool by using a browser running on their local machine and connecting via HTTP over their company's intranet to the Reporting Tool. This tool physically runs on the Application Server named w3reporting.myco.com. The diagram shows the Reporting Tool component drawn inside of IBM WebSphere, which in turn is drawn inside of the node w3.reporting.myco.com. The Reporting Tool connects to its reporting database using the Java language to IBM DB2's JDBC interface, which then communicates to the actual DB2 database running on the server named db1.myco.com using native DB2 communication. In addition to talking to the reporting database, the Report Tool component communicates via SOAP over HTTPS to the Billboard Service. Conclusion Although this article provides only a brief introduction to Unified Modeling Language, I encourage you to start applying the information you have learned here to your own projects and to dig more deeply into UML. There are several software tools that help you to integrate UML diagrams into your software development process, but even without automated tools, you can use markers on a whiteboard or paper and pencils to draw your UML diagrams and still achieve benefits.
  • 11. Notes 1 For more information on inheritance and other object-oriented principles, see http://java.sun.com/docs/books/tutorial/java/concepts/inheritance.html 2 The phrase component package level is a programming language-neutral way of referring to class container levels such as .Net's namespaces (e.g., System.Web.UI) or Java's packages (e.g., java.util). Resources http://www.uml.org -- The official UML Web site. http://www.rational.com/uml/resources/documentation/index.jsp --Offers several different versions of the actual UML specification. http://www.rational.com/rose --Information on IBM Rational Rose,® A commercial UML modeling tool. http://www.rational.com/xde --Information on IBM Rational XDE,® a commercial UML modeling tool that is integrated with IBM's Eclipse development platform. http://argouml.tigris.org --Information on Argo UML, an .open source UML modeling tool built in Java. http://uml.sourceforge.net/index.php -- Information on Umbrello UML Modeller, an open source UML modeling tool for KDE. For more information on the products or services discussed in this article, please click here and follow the instructions provided. Thank you! Copyright Rational Software 2003 | Privacy/Legal Information