Unified Modeling Language (UML) is a general-purpose, developmental, modeling langauge in software engineering that is intended to provide a standard way to visualize the design of a system.
The creation of UML was originally motivated by the desire to standardize the disparate notational systems and approaches to software design.
UML is not a programming language, it is rather a visual language. UML is one of the most popular business process modeling technique. Business process modeling is the graphical representation of a company’s business processes or workflows, as a means of identifying potential improvements. This is usually done through different graphing methods, such as the flowchart, data-flow diagram, etc.
We use UML diagrams to portray the behavior and structure of a system.
- UML is a standard language for specifying, visualizing, constructing and documenting the artifacts of software system.
- It is a pictorial language used to make software blueprints.
- It can be used to model non-software systems as well as process flow in a manufacturing unit etc.
- It has a direct relation with Object Oriented Analysis and Design (OOAD).
UML Components are widely categorized into following:
Structural Things

Behavioral Things

Grouping Things

Annotational Things

Relationships
Dependency: Change in one element affects the other one

Association: Describes how many objects are taking part in that relationship

Generalization: Represents Inheritance

Realization: Exists in case of interfaces. One element describes some responsibility which is not implemented and other one implements it.

Aggregation: Special type of Association representing “part of” relationship. Class2 is a part of Class1. Represents “Has-A” relationship. For example, Person has an Address. Both Person and Address classes can exist without each other and have different lifetimes.

Composition: Special type of Aggregation where one class cannot exist by itself without the other. For example, Library cannot exist without Book but Book can exist without Library.

UML Diagrams
| Structural Diagrams | Behavioral Diagrams |
| 1. Represent static nature of the system 2. Used in forward engineering | 1. Represent dynamic nature of the system 2. Used in both forward and reverse engineering |
Structural Diagrams
Class Diagram
- Represent static view of system
- Generally used for development purpose
Object Diagram
- Represent static view of the system
- Used to build prototype of the system from practical perspective
Component Diagram
- Represent implementation view of the system
- Represent a set of components and their relationships
Deployment Diagram
- Represent deployment view of a system
- Generally used by deployment team
Behavioral Diagrams
Use Case Diagram
- Represent use case view of the system
- A use case represents a particular functionality of the system
- Describes relationships among functional activity and their internal / external controllers (Actors)
Sequence Diagram
- Represent implementation of the system
- It is an interaction diagram
- It is important from implementation and execution perspective
- Used to visualize sequence of calls in a system to perform a specific functionality
Collaboration Diagram
- Represent organization of objects and their interactions
- It is an interaction diagram
State Chart Diagram
- Represent event driven state change of the system
- Used to visualize reaction of a system by internal / external factors
Activity Diagram
- Used to visualize the flow of controls in a system
Class Diagram and Sequence Diagram are two most used UML diagrams used for development purpose, one helps understand the static view of the system and the other helps visualize the dynamic interaction between various calls in a system. Example of each is given below.


