A UML, linguagem de modelagem unificada, foi projetada para ajudar as pessoas a focarem nas vantagens provenientes do uso do paradigma orientado a objetos. UML é utilizada para visualizar, especificar, construir e documentar softwares.

Visualizar: para muitos programadores, a distância entre pensar em uma solução para o problema e transformá-la em código é próxima de zero. Ele cria a solução e ele mesmo a desenvolve. Ainda assim, ele de alguma forma está modelando mentalmente o sistema que irá construir. Entretanto, existem sérios problemas com esta abordagem. Primeiro, comunicar o modelo criado mentalmente para outros desenvolvedores é uma tarefa cujo risco de perda de informação durante a comunicação é alto. E segundo, imagine que o projeto em questão é grande e a equipe envolvida não se restringe a um ou dois programadores. Teríamos sérias dificuldades na construção do sistema. Isso sem falar que não existiria documentação para o software e sua manutenção no futuro traria dor de cabeça, com certeza. Assim, o uso da UML provê uma notação comum para o entendimento compartilhado sobre o software que se está construindo.

Especificar: Os modelos criados com a linguagem UML são precisos, não ambíguos e completos.

Construir: os modelos construídos utilizando a UML podem ser conectados a uma série de linguagens de programação permitindo uma tradução entre os modelos construídos e o código. Este mapeamento permite também a engenharia reversa na qual os modelos são gerados a partir do código fonte. Vale uma ressalva aqui, UML não é uma linguagem visual de programação.

Documentar: neste caso, os modelos criados durante o desenvolvimento fazem parte da documentação do software.
A UML se mostra como parte essencial no ciclo de vida de uma aplicação. toda a funcionalidade operacional de um sistema bem como a definição de elementos internos referentes ao desenvolvimento do mesmo.

Os diagramas da UML fazem parte da documentação do sistema, e podem ser utilizados para uma apresentação da solução para o requisitante antes da implementação da mesma, visualização dos processos que o sistema irá disponibilizar definição de elementos inerentes ao desenvolvimento como estrutura de telas, procedimentos operacionais, referência para criação de objetos de persistência em um banco de dados.

Autor: Jaimerson Cabral