Unified Modeling Language
Definition:
UML is a standard language for specifying, visualizing,
constructing, and documenting the artifacts of software systems.
The Unified Modeling Language (UML) is a
general-purpose modeling language in the field of software
engineering, which is designed to provide a standard way to visualize the
design of a system.
UML was created and developed by Grady Booch, Ivar
Jacobson and James
Rumbaugh at Rational
Software during 1994–95 with further development led by them
through 1996.In 1997 it was adopted as
a standard by the Object Management Group (OMG),
and has been managed by this organization ever since. In 2000 the Unified
Modeling Language was also accepted by the International
Organization for Standardization (ISO) as
an approved ISO standard. Since then it has been periodically revised to cover
the latest revision of UML.
History:
UML has been evolving since the second half of the 1990s and has its roots in the object-oriented methods developed in the late 1980s and early 1990s. The timeline (see image) shows the highlights of the history of object-oriented modeling methods and notation.
It is originally based on the notations of the Booch
method, the Object-modeling technique (OMT) and Object-oriented
software engineering (OOSE), which it has integrated into a single
language.
Before UML 1.x :
Rational Software Corporation hired James Rumbaugh from General
Electric in 1994 and after that the company became the source for two of
the most popular object-oriented modeling approaches of the day:Rumbaugh's Object-modeling
technique (OMT) and Grady Booch's method. They were soon assisted in
their efforts by Ivar Jacobson, the creator of the object-oriented
software engineering (OOSE) method, who joined them at Rational in 1995.
Under the technical leadership of those three (Rumbaugh,
Jacobson and Booch), a consortium called the UML Partners was
organized in 1996 to complete the Unified Modeling Language (UML) specification,
and propose it to the Object Management Group (OMG) for standardisation. The
partnership also contained additional interested parties (for example HP, DEC, IBM and Microsoft).
The UML Partners' UML 1.0 draft was proposed to the OMG in January 1997 by the
consortium. During the same month the UML Partners formed a group, designed to
define the exact meaning of language constructs, chaired by Cris Kobryn and
administered by Ed Eykholt, to finalize the specification and integrate it
with other standardization efforts. The result of this work, UML 1.1, was
submitted to the OMG in August 1997 and adopted by the OMG in November 1997.
UML 1.x :
After the first release a task force was formed to improve
the language, which released several minor revisions, 1.3, 1.4, and 1.5.
The standards it produced (as well as the original standard)
have been noted as being ambiguous and inconsistent.
UML 2.x :
The UML 2.0 major revision replaced version 1.5 in 2005,
which was developed with an enlarged consortium to improve the language further
to reflect new experience on usage of its features.
Although UML 2.1 was never released as a formal
specification, versions 2.1.1 and 2.1.2 appeared in 2007, followed by UML 2.2
in February 2009. UML 2.3 was formally released in May 2010. UML 2.4.1 was
formally released in August 2011. UML 2.5 was released in October 2012 as
an "In process" version and has yet to become formally released.
Diagrams:
UML2 has many types of diagrams which are divided into two
categories. Some types represent structural information, and the
rest represent general types of behavior, including a few that represent
different aspects of interactions. These diagrams can be categorized
hierarchically as shown in the following class diagram.
UML notations:
UML notations are the most
important elements in modeling. Efficient and appropriate use of notations is
very important for making a complete and meaningful model. The model is useless
unless its purpose is depicted properly.
So learning notations should be
emphasized from the very beginning. Different notations are available for
things and relationships. And the UML diagrams are made using the notations of
things and relationships. Extensibility is another important feature which
makes UML more powerful and flexible.
UML
Diagrams:
Diagrams
are the heart of UML. These diagrams are broadly categorized as structural and
behavioral diagrams.
Structural
diagrams are consists of static diagrams like class diagram, object diagram
etc.
Behavioral
diagrams are consists of dynamic diagrams like sequence diagram, collaboration
diagram etc.
The
static and dynamic nature of a system is visualized by using these diagrams.
Object Diagram:
An object diagram is an instance of a class diagram. So the basic elements are similar to a class diagram. Object diagrams are consists of objects and links. It captures the instance of the system at a particular moment.
Object diagrams are used for prototyping, reverse engineering and modeling practical scenarios.
Class
diagrams:
Class
diagrams are the most popular UML diagrams used by the object oriented
community. It describes the objects in a system and their relationships. Class
diagram consists of attributes and functions.
A
single class diagram describes a specific aspect of the system and the
collection of class diagrams represents the whole system. Basically the class
diagram represents the static view of a system.
Class
diagrams are the only UML diagrams which can be mapped directly with object
oriented languages. So it is widely used by the developer community.
Component
Diagram:
Component
diagrams are special kind of UML diagram to describe static implementation view
of a system. Component diagrams consist of physical components like libraries,
files, folders etc.
This
diagram is used from implementation perspective. More than one component
diagrams are used to represent the entire system. Forward and reverse
engineering techniques are used to make executables from component diagrams.
Use Case Diagram:
Use case diagram is used to capture the dynamic nature of a system. It consists of use cases, actors and their relationships. Use case diagram is used at a high level design to capture the requirements of a system.
So it represents the system functionalities and their flow. Although the use case diagrams are not a good candidate for forward and reverse engineering but still they are used in a slightly differently way to model it.
Deployment
Diagram:
Component
diagrams are used to describe the static deployment view of a system. These
diagrams are mainly used by system engineers.
Deployment
diagrams are consists of nodes and their relationships. An efficient deployment
diagram is an integral part of software application development.
Statechart
Diagram:
Statechart
diagrams are one of the five diagrams used for modeling dynamic nature of a
system. These diagrams are used to model the entire life cycle of an object.
Activity diagram is a special kind of Statechart diagram.
State
of an object is defined as the condition where an object resides for a
particular time and the object again moves to other states when some events
occur. Statechart diagrams are also used for forward and reverse engineering.
Interaction Diagram:
Interaction diagrams are used for capturing dynamic nature of a system. Sequence and collaboration diagrams are the interaction diagrams used for this purpose.
Sequence diagrams are used to capture time ordering of message flow and collaboration diagrams are used to understand the structural organization of the system. Generally a set of sequence and collaboration diagrams are used to model an entire system.
Activity
Diagram:
Activity
diagram is another important diagram to describe dynamic behaviour. Activity
diagram consists of activities, links, relationships etc. It models all types
of flows like parallel, single, concurrent etc.
Activity
diagram describes the flow control from one activity to another without any
messages. These diagrams are used to model high level view of business
requirements.
Structural Things:
Graphical notations used in structural things are the most
widely used in UML. These are considered as the nouns of UML models. Following
are the list of structural things.
- Classes
- Object
- Interface
- Collaboration
- Use case
- Active classes
- Components
- Nodes
Class Notation:
UML class is represented by the diagram shown
below. The diagram is divided into four parts.
- The top section is used to name the class.
- The second one is used to show the attributes of the class.
- The third section is used to describe the operations performed by the class.
- The fourth section is optional to show any additional components
Classes are used to represent objects. Objects can be
anything having properties and responsibility.
Object Notation:
- The object is represented in the same way as the class. The only difference is the name which is underlined as shown below.
- As object is the actual implementation of a class which is known as the instance of a class. So it has the same usage as the class.
Interface Notation:
- Interface is represented by a circle as shown below. It has a name which is generally written below the circle.
- Interface is used to describe functionality without implementation. Interface is the just like a template where you define different functions not the implementation. When a class implements the interface it also implements the functionality as per the requirement.
Collaboration Notation:
- Collaboration is represented by a dotted eclipse as shown below. It has a name written inside the eclipse.
- Collaboration represents responsibilities. Generally responsibilities are in a group.
Use case Notation:
- Use case is represented as an eclipse with a name inside it. It may contain additional responsibilities.
- Use case is used to capture high level functionalities of a system.
Active class Notation:
- Active class looks similar to a class with a solid border. Active class is generally used to describe concurrent behaviour of a system.
- Active class is used to represent concurrency in a system.
Component Notation:
- A component in UML is shown as below with a name inside. Additional elements can be added wherever required.
- Component is used to represent any part of a system for which UML diagrams are made.
Node Notation:
- A node in UML is represented by a square box as shown below with a name. A node represents a physical component of the system.
- Node is used to represent physical part of a system like server, network etc.
Comments