These pages are being updated to reflect the new
version of the Unified Modeling Language: UML2.0.
The Unified Modeling Language -- -- --(UML)
was created by the Three_Amigos
of the Rational
Corporation. It is intended to be a common shared language
used in medium to large scale software projects.
CORBA has adopted it as a common way to diagram
objects, classes, etc.
The Object Management Group(OMG) issues standard and is now up to
version 2.0 which links it to their metadata standard
MOF and its XML incarnation
XMI.
Many software companies support the UML and
several CASE tools use it. Rational has a particular CASE
tool called Rational Rose.
The UML has become part of the curriculum in Computer Science
at CSUSB
during the ROOT project.
As the UML has evolved people have developed ways to adapt it
to particular purposes. For example there is a way to document that
data is presented as a web page on a server and another to
show that it is held in a table in a relational database. These
rules a collected in to Profiles.
There are more than a dozen tools
[ http://modeling-languages.com/list-of-executable-uml-tools/ ]
that
execute UML models.
If you become familiar with a way to draw pictures of your ideas
you will find that you will be able to think of more ideas
and also to work out the consequences of your decisions.
The UML is such a graphic language.
It will probably become a popular and standardized way
of analysing problems and
designing solutions using objects. As a widely used standard
the UML is becoming valuable in the job market.
The UML is an important skill to survive the
Computer Science degrees here.
Here
[ uml0.html ]
is a simple overview of all the diagrams and when to use them.
The heart of an object oriented program are the types of objects and
the links between the objects. Here
[ uml1.html ]
are some notes
on how to draw diagrams of simple C++ structures and classes.
See
[ uml1b.html ]
for the more advanced C++ ideas (pointers, friends, inheritance
for example). See
[ cs320wuml.html ]
to see how the UML can be used to describe the structures
and semantics of programming language.
The development of object-oriented software starts and ends with
the study of how the system and its parts work together
to help the user:
[ uml2.html ]
These notes are a very short and incomplete summary of
the UML. The Rational UML Resource Pages (IBM) should be
consulted for definitive examples and definitions. The OMG
page has more useful and standard information on the more advanced
ways of using UML.
There is a list of WWW resources below
[ See Also ]
This set of notes leaves out several parts of the UML. They do not
cover the notations needed for industrial size problems:
. . . . . . . . . ( end of section Beginners Start Here) <<Contents | End>>
See
[ uml4.html ]
for notes on polymorphism, patterns and processes.
See the Object Constraint Language
[ ocl.html ]
to find out how to document the properties of things shown in diagrams.
Here is a quick list of diagram types in the UML with links to graphic
images that are examples of that diagram.
- General Purpose Concepts
- Use-Case Diagram
- Class Diagram
[ uml.coll0.gif ]
[ uml.coll1.jpg ]
[ uml4.jpg ]
- class,
[ uml1.gif ]
[ uml3.gif ]
[ uml.game.gif ]
[ clock2.gif ]
operations,
[ uml1.gif ]
attributes,
[ uml1.gif ]
- generalization
[ uml.gif ]
[ uml.gen2.gif ]
[ uml.gender.gif ]
[ uml.shape.gif ]
versus OMT generalisation:
[ uml2.gif ]
dynamic generalization
[ uml.dynamic.gif ]
- Links between Classes: association
[ uml.coll0.gif ]
[ uml.coll1.jpg ]
[ uml.game.gif ]
, multiplicity
[ uml.period.gif ]
[ uml.game.gif ]
[ uml.coll1.jpg ]
, composition
[ clock2.gif ]
[ uml.period.gif ]
, one-way navigation(pointers)
[ uml.link.gif ]
[ 20050502LISP.gif ]
, usage
[ usage.gif ]
, constraint
[ uml.gen.gif ]
[ uml.dynamic.gif ]
, aggregation (avoid)
[ uml.association.gif ]
- Special Classes
interface,
[ uml.interface.gif ]
[ uml.client.gif ]
abstract class.
[ uml.shape.gif ]
[ uml.find.gif ]
parameterized class(template),
[ uml.template.gif ]
[ uml.find.gif ]
- Visibility,
[ uml1.html#Privacy ]
[ uml.link.gif ]
- Object diagrams
[ 20050502objects.gif ]
- Package diagrams
[ 20050502packages.gif ]
- State-Transition Diagrams
[ uml2.html ]
- state, nesting, transition, start, stop, event, action
[ uml.states.gif ]
- Interaction Diagrams
[ uml2.html ]
- Component Diagrams
[ 20050502lollipop.gif ]
- Deployment Diagrams
Go to
[ See Also ]
for more information.
UML stands for the Unified Modelling Language
Note. In this glossary a definition is written like this
defined_term::=what_the_term_means.
or
defined_term::context=what_the_term_means.
When there are several alternative meanings they are separated
by a vertical bar symbol: "|" read as "or". This is an informal extension of
the notation John Backus and Pete Naur developed in 1960.
[ glossary.html#BNF ]
and
[ comp.text.Meta.html#BNF ]
- AKO::="A Kind Of" -- object-oriented jargon for relation between general and particular.
- APO::="A Part Of" -- object-oriented jargon for relations between pats and wholes, compare with AKO.
- abstract::constraint=indicates that a class defines an abstraction so that no objects of this
type exist except as objects of the specialized subtypes of this type. You can have pointers or
references to abstract classes but you can not have any objects or variables of an abstract type.
The pointers always refer to objects in a more specific concrete classes.
[ uml.shape.gif ]
[ uml.find.gif ]
{ abstract }
- abstract_data_type::=a collection of data with invisible attributes (the data) that is manipulated
only by operations and so hides its attributes behind an interface.
- abstraction::=indicates that something is left out of a description or definition.
- actor::=an entity that starts scenarios and gets results from them. An actor has an iconic
stick-figure form but is actually a class or type with the <<actor>> sterotype.
[ uml.usecases.gif ]
- actors::=plural of actor.
- actual_parameter::=a value supplied when generating a particular version of a parameterized
class or package. Actual parameters are listed inside diamond brackets like this <for,example>.
- aggregation::=a way that one class can refer to another class without having possession of it +
a weak form of 'has-a' / APO link + if the whole object is an aggregation then deleting it does not effect the existence of the aggregated part. This relationship is shown by an open diamond at one end of a link.
The other end may have an arrow head indicating the link can be navigated in one direction
only. Note: as a rule you can leave out the open diamond without
changing the meaning of class diagram.
- application_domain::noun=a collection of more or less similar solutions.
- association::=A kind of relationship or link between classes. Associations are further
documented by stereotypes + roles + multiplicities + constraints + descriptive names +
aggregation indicators + navigability indicators.
[ uml.coll0.gif ]
[ uml.coll1.jpg ]
[ uml.game.gif ]
[ uml.association.gif ]
[ uml.link.gif ]
- attributes::=plural of attribute.
- attribute::=a named value that an object or class is responsible for maintaining.
[ uml1.gif ]
- class::=a part of a UML class_diagram indicating a collection of objects with similar
responsibilities and/or behaviors. It can be shown as a box with a name in it or as a box with a
name, attributes and operations.
[ uml1.gif ]
[ uml3.gif ]
[ uml.game.gif ]
[ clock2.gif ]
- classes::=plural of class.
- class_diagram::=a diagram showing classes and the associations between them.
[ uml3.gif ]
[ uml.coll0.gif ]
[ uml.coll1.jpg ]
[ uml4.jpg ]
- class_utility::=A class with only static attributes and static functions, -- for example a math library.
[ umlutility.gif ]
[ umlutility.mdl ]
collaboration_diagram=a description of the collaborations between objects as they fulfil a
usecase.
[ uml.collab.gif ]
- collaboration::=an interaction between one object or class with another object or class. Typically
the first object or class invokes an operation of the other or accesses an attribute.
- collaborations::=plural of collaboration.
- communicating::=the process of sending and receiving data through a
communication_association linking an actor and an usecase.
- communication_association::an association or link in a usecase_diagram connecting an actor
to a usecase.
[ uml.usecases.gif ]
- component::class=A component is part of the run time structure of the software
that can be "unplugged" and replaced by another similar component.
- composition::= a strong form of the 'has_a' or APO relation so that deleting the whole automatically removes the parts as well.
Composition fits when objects of one class are made up of parts that are
objects of of other classes, for example when they are implemented using
fields in structures, items in records, columns in a data base, or pieces
of a document. However, in some cases, the responsibility for keeping an
object alive changes during that objects life, and so that objects class
would be shown as being parts of several different compositions.
[ clock2.gif ]
[ uml.period.gif ]
[ uml.link.gif ]
- concrete::=the opposite of abstract - a concrete class is defined in enough detail so that objects
can be constructed for it.
- constraint::=A logical formula or informal text stating something that must be true and written
inside curly braces | one of a small number of words indicating a logical constraint - for example
"complete" or frozen.
[ uml.gen.gif ]
[ uml.dynamic.gif ]
- constraints::=plural of constraint.
- constructor::stereotype=indicates that an operation creates a new object of its class. Notes.
In UML the initial values of attributes can be indicated in the specification of a class and so
constructors are optional. In many OO language like C++ and Java default attribute values are
not permitted and so constructors are effectively mandatory. Also notice that a constructor
should not be shown as returning any type of object.
- destructor::stereotype=indicates that an operator deletes an object of its class. Note a
destructor is a C++ idea where its name is always the name of the class prefixed with a tilde
symbol.
- dependencies::=plural of dependency.
- dependency::=a relationship between parts of an UML model drawn as a dashed line with an
arrow head that indicates that if one thing changes then the change may effect the other thing.
Often one thing uses the other thing(usage).
[ uml.gen.gif ]
[ usage.gif ]
- domain::= problem_domain | application_domain.
- dynamic::stereotype=a generalization can be described as dynamic if it possible for an object
to change its classification during its life. This is the opposite of the normal static form of
generalization. Also see frozen.
[ uml.dynamic.gif ]
- end::=each association has 2 ends and associated with each end is ( a class, a role the
association plays in the class at the other end, a multiplicity).
- formal_parameter::=a parameter that is used in a parameterized definition in place of an
actual_parameter that can be supplied later.
- frozen::=a property of an end of an association that no links are (added|deleted|moved) from an
object at the frozen end.
- generalization::=relationship (is_a ) between a specialized class and a more general class where
objects of the more specialized class ( the subtype) are automatically also instances of the
more general type. It is typically easier to implement static generalizations in C++ by using
inheritance than to implement dynamic forms. Dynamic generalizations need patterns
developed by the GoF
[ uml.gif ]
[ uml.gen2.gif ]
[ uml.gender.gif ]
[ uml.shape.gif ]
[ uml.dynamic.gif ]
- icon::= a symbol that appears on a computer screen that may manipulated using a mous or other
pointing device.
- icons::=plural of icon.
- interface::stereotype=indicates a set of operations that may be defined by one or more classes
and used by one or more classes. An interface is an abstraction with no implementation and no
attributes.
[ uml.interface.gif ]
[ uml.client.gif ]
- interfaces::=plural of interface.
- key::=an attribute or set of attributes of a class that uniquely identify a particular instance of
the class.
- link::=a line connecting two boxes or other icons. Often represents an association.
- mdl::extension="Ratoonal Rose Models in WinDOS systesm have extension .mdl".
- MOF::="Meta Object Facility", CORBA interface describing a UML model, also see XMI.
- multiplicities::=plural of multiplicity.
- multiplicity::=numbers or sets of numbers (using a comma or range) placed at an end of an
association indicating how many object of the closest type correspond thru the link to a single
item at the other end. If omittedd it means: an unknown number of.
[ uml.period.gif ]
[ uml.game.gif ]
[ uml.coll1.jpg ]
Note. Links that have many-to-one multiplicities are nearly always simpler to implement and
easier to understand than those with muliplicities other than one at both ends.
- navigable::=an association that can be navigated in both directions. Note. if an association is
not navigable it is simpler to implement it because storing an identifier of an object allows it to
be found.
- navigate::verb=to gain access to a object by following an association linking one object to the
other.
- navigated::=past participle of navigate..
- note::=an informal remark linked to a part of a UML diagram. The link is a dotted line and the
remark is in a rectangular box with the corner folded over. Looks a little like a stereotype and a
constraint.
[ uml.gen.gif ]
- objects::=plural of object.
- object::=following
- In analysis, an object is an instance of a class in the problem_domain.
- In design, an object is something with an unique identity that encapsulates some know-how
(operations) and some values(attibutes).
- In code, an object is a piece of storage plus some sub-programs that have privileged access to
that storage.
[ glossary.html#object ]
- operations::=things that an object in a class knows how to do, in UML these are placed in the
lowest compartment in a three compartment box.
[ uml1.gif ]
- package::=an icon in UML that looks like a folder and refers to another UML diagram that
either exists or may be in the process of creation. A package replace a
collection of things by a single thing. Packages are about the compile time
organization of a piece of software.
[ uml.gen.gif ]
- packages::=plural of package.
- parameter::=actual_parameter | formal_parameter, In mathematics this is a "constant
variable".
- parameterized::=a class or package in UML can be given a parameter and then for each
possible value of the parameters a special version of the class or package is generated. Compare
with an Ada generic and a C++ template.
[ uml.template.gif ]
[ uml.find.gif ]
- patterns::= See http://www.csci.csusb.edu/dick/samples/methods.html#patterns.
- pattern::patterns=a recurring problem which involves compromising between several forces and
which has a preffered and documented solution. See GoF.
- pointer::=a technique for implementing aggregation and linked data structures where an
attribute of one object stores the physical address of the other object. Compare key and see
navigable.
[ uml.link.gif ]
- problem_domain::=a collection of more or less similar problems selected for practical or
theoretical reasons.
- result::=the end point of a scenario.
- results::=the end points of a set of scenarios.
- roles::=plural of role.
- role::=a word or phrase written where a link meets an box indicating the part played by the class
in the relationship indicated by the link. See rolename. For example a link
from Adult to Child indicating parenthood might have parent at the
Adult end and child at the other. When the role is the same as the class
but with lower case initial letters it can be left out.
- rolename::=A name string near the end of the link indicating the role played by the class in the
association attached to end of the path near the rolename.
- scenario::=A description of how a particular actor achieves a tangible result.
- scenarios::=plural of scenario.
- sequence::diagram=a diagram showing the sequence of messages passed between objects to
achieve a given usecase.
[ uml.seq.gif ]
- state::=a particular set of values for the attributes of an object.
- statechart::diagram=a way of documenting the states of an object and the changes that can occur
to it during its life.
- state_diagram::=statechart.
[ uml.states.gif ]
- static::=something that is permanent and can't change. In UML generalizations are normally
static but there is a stereotype that allows a classification to change. See frozen.
- stereotype::UML=a special note looking like this: <<example>> that adds to the meaning of a
part of a UML diagram.
[ uml.gen.gif ]
- subtype::=One class is a subtype of another class if all the operations of the second class of
object also apply to objects of the first type - perhaps in a different way. Subtypes shown by
the generalization arrow that has an open arrow head.
- template::= C++ jargon for the UML parameterized class.
[ uml.template.gif ]
[ uml.find.gif ]
- usage::=a special kind of dependency where one piece of a program makes use of another part
of the program indicated by a dotted arrow from user to used.
[ usage.gif ]
- usecase::=a set of scenarios sharing a class of similar actors achieving similar tangible results
that is documented by a natural language text and pictured as an oval icon.
[ uml.toast.gif ]
[ uml.usecases.gif ]
- usecase_diagram::=a UML diagram that shows one or actors communicating with one or
more usecases.
- usecases::=plural of usecase.
[ uml.usecases.gif ]
- utility::=See class_utility.
- visibility::=an indicator(plus, minus, hash) indicating whether a rolename | attribute |
operation can be accessed from outside a class. Rational Rose uses some neat little icons
involving keys and locks to indicate the degree of visibility of attributes, operations, and roles.
[ uml1.html#Privacy ]
[ uml.link.gif ]
- XMI::=" A standard way to present MOF meta-data modeling objects using XML".
//ftp.pmg.org/pub/docs/ad/98-1005.pdf
- XML::= See http://www.csci.csusb.edu/dick/samples/xml.html
- Three_amigos::abbreviation={ Grady Booch, Ivar Jacobsen, James Rumbaugh }.
(See
[ JokeUML in methods ]
and
[ Unified in methods ]
)
- GoF::abbreviation=The_Gang_of_Four.
- The_Gang_of_Four::abbreviation={Erich Gamma, Richard Helm, Ralph Johnson, John
Vlissides}, Four OO thinkers who wrote an influential book of design patterns.
- OO::abbreviation=Object-Oriented.
- OMT::method=The Object Modelling Method developed by Rumbaugh et al that forms one of
UML's parents.
- TBA::="To Be Announced", indicating work that needs completing.
In this glossary I sometimes indicate the syntactic class of a word used in English as well as
UML.
- adjective::=qualifies a noun by adding properties to it.
- adverb::=qualifies a verb by adding properties to it.
- noun::=names something.
- verb::=indicates an action or relationship.
- tilde::= "~", indicates a destructor in C++, and package scope in the UML.
- plus::="+", indicates public visibility for an operation or attribute.
- minus::="-", indicates private visibility for an operation or attribute.
- hash::="#", indicates protected visibility for an operation or attribute.
- range::="..", indicates a set of numbers lying between to values.
- colon::=":", used to separate a name of a parameter or attribute or operation from a class.
- comma::=","used to separate items in a set.
. . . . . . . . . ( end of section UML Glossary) <<Contents | End>>
YouTube has some video tutorials
[ watch?v=j_0fKDSJr1U ]
for example. Take them with a grain of salt.
My glossary:
[ uml.glossary.html ]
(above).
(one_page_example): a one page example
[ UML_Tools.html ]
(databases): Links
[ Tp180.pdf ]
(PDF)
(OCL): Object Constraint Language
[ ocl.html ]
- OMG::= See http://www.omg.org/.
- OMG_UML2_specification::= See http://www.omg.org/technology/documents/formal/uml.htm.
- Profiles::= See http://www.rational.com/uml/resources/documentation/index.jsp,
Rational's UML Profiles (web, database, ...).
- ROOT::= See http://www.csci.csusb.edu/rootproj/,
This project incorporated object-oriented technology into the
core of the BS degee in computer Science at CSUSB.
(UML Jokes):
[ http://www.umljokes.com/ ]
- Courses that use the UML
- CS201::= See http://www.csci.csusb.edu/dick/cs201.
- CS202::= See http://www.csci.csusb.edu/dick/cs202.
- CS320::= See http://www.csci.csusb.edu/dick/cs320,
[ cs320wuml.html ]
- CS330::= See http://www.csci.csusb.edu/cs330.
- CS372::= See http://www.csci.csusb.edu/cs372.
- CS375::= See http://www.csci.csusb.edu/cs375.
- CORBA::="Common Object Request Broker Association"
a consortium
of companies working to make object technology accessible accross many
platforms and types of systems.
The new and improved UML Dictionary
- UMLDictionary::= See http://softdocwiz.com/UML.htm
and Master Index:
[ UMLIndex.htm ]
at
[ http://softdocwiz.com ]
- Software Development Magazine's the UML Design Center:
- SDMagazine::= See http://www.sdmagazine.com/uml/.
- UML Discussion group on the WWW
- UML_discussion::= See http://www.egroups.com/group/uml-teach/.
(training):
- FREE self-assessment quiz on the UML
[ http://www.iconixsw.com ]
and courses (not free?)
[ UMLTraining.html ]
- Tools::=following,
- Free_Tools::=following,
- Graphical Designer
[ http://www.advancedsw.com ]
- Pragmaticai by PragSoft Corporation
[ http://www.pragsoft.com ]
- Object Technologie Workbench
[ http://www.otw.de ]
- OEW demo
[ http://www.isg.de ]
- Playground
[ freegoodies.htm ]
- geda.seul.org
[ http://ww.geda.seul.org/ ]
Other:
- TRY UML IN GRAPHICAL DESIGNER FOR FREE!(Wed, 29 Jan)
[ http://www.advancedsw.com ]
- UML 1.0 Case Tool for software Engineering(Wed, 21 May)
[ http://www.microgold.com ]
Online Tutorials:
[ http://yukon.genie.uottawa.ca/~lavoie/software/uml/ ]
[ http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/rose/ ]
(Actually uses Booch not UML)
Simple Web+Data Base Design
[ http://www.jepstone.net/papers/web_uml_patterns/ ]
UML 101
[ intro_rdn.pdf ]
- Books::=following,
- (introbook): UML Distilled: Applying the Standard Object Modeling Language
by: Martin Fowler, Kendall Scott
part of the Object Technology Series
ISBN: 0-201-32563-2
(Search under
[ catalogtitle.qry ]
)
- (refbook): UML in a Nutshell (the Cat book) by Sinan Si Alhir, O'Reilly 1998
- ROOT::= See http://www.csci.csusb.edu/rootproj/,
This project incorporated object-oriented technology into the
core of the BS degee in computer Science at CSUSB.
Complete and up to date information can be found on the Internet
by following the World Wide Web links below.
UML is defined and maintained by the Three_Amigos
at Rational Web site.
- Rational::= See http://www.rational.com/.
Rational has been taken over by IBM.
- IBM::="International Business Machines", The Jolly Blue Giant, aka
Snow White, Itty Bitty Machines, etc etc.
- Rational's UML Resource Center
[ index.html ]
- Getting Started
[ http://www.rational.com/uml/start/ ]
- UML 1.1: Unified Modelling Language Documentation
[ http://www.rational.com/uml/1.1/ ]
- UML 1.1: Notation Guide (LARGE) (Sept 1997)
[ http://www.rational.com/uml/1.1/html/ ]
- Rational Rose Visual Modeling Tool
- Rose::= See http://www.rational.com/products/rose/.
- The Wikipedia's Article:
[ Unified_Modeling_Language ]
- Mailing Lists: OTUG --
- OTUG::= See http://www.rational.com/HyperMail/otug/.
- feedback::= See http://www.rational.com/HyperMail/uml_feedback/.
- A dictionary of UML:
- dictionary::= See http://softdocwiz.com/UML.htm.
- Comparison of OPEN with UML(Thu, 12 Dec)
- OPEN::= See http://www.csse.swin.edu.au/cotar/OPEN/OPEN.html.
- FREE UML self-assessment quiz etc
- Quiz::= See http://www.iconixsw.com.
- Training::= See http://www.iconixsw.com/UMLTraining.html.
- Tutorials::= See http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/rose/
(Actually uses Booch not UML)