Unified Modelling Language

Commonly abbreviated UML, it is a language, but not a programming one.
It is used to design software and processes from the functionality and structure perspective, using diagrams in an object-oriented environment.
It is maintained and endorsed by the Object Management Group (OMG).

It can be used to model complex systems, and the graphical facilities make it easy for anyone to understand the flows and sub-systems that comprise what is being designed.

UML is based on conceptual models rather than technical ones. Using concepts, it is easy to describe how blocks interact in real life. The blocks are organized and connected using standards defined by the language.

Because it uses object-oriented concepts, it includes all the characteristics relating to them, such as attributes, methods, classes and inheritance. This enhances the power to represent complex models.

To use an object-oriented language, the system must be analyzed from this perspective, this process is called Object-Oriented (OO) Analysis and Design. There are three main steps:
- Identify the objects.
- Identify relationships between objects.
- Design the system and implement it.

After identifying which objects the system involves, relationships between them should be defined precisely, in order to determine the connections and flow of data between the blocks, after that, this design can be used to implement a solution. Although UML is not a programming language, because of its object-oriented nature, it can be easily implemented using OO languages like Java or Python.

Using this method of design and analysis, UML can be implemented. The main focus of UML is to aid in the design and implementation of object-oriented software.

UML uses four types of diagrams: class, object, collaboration and interaction. They will not be described in this article, but more info is available here. This modelling language seems like a good organization
for projects, specially if implemented correctly on a large organization. Finally, an example of an UML diagram can be seen next:

Kishorekumar 62 [GFDL (http://www.gnu.org/copyleft/fdl.html) or CC BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0)], via Wikimedia Commons