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.
  1. Classes
  2. Object
  3. Interface
  4. Collaboration
  5. Use case
  6. Active classes
  7. Components
  8. 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

Popular Posts