La metodologia UML è il prodotto finale di una serie di metodologie di anilisi e progettazione orientate agli oggetti apparse tra la fine degli anni Ottanta e primi anni Novanta.
Standarizzata dall' OMG (Object Management Group), è attualmente riconosciuta come lo standard di fatto tra le metodologie di analisi e progettazione a oggetti.
L'UML è il linguaggio particolarmente adatto per la specifica, la costruzione e la documentazione di sistemi software complessi. Consente di costruire una serie di diagrammi che rappresentano diverse astrazioni del sistema.
I diagrammi standard di UML si possono suddividere in:
1) Diagrammi per gli aspetti statici:
- diagrammi dei casi d'uso (use case diagram);
- diagrammi delle classi (class diagram);
- diagrammi degli oggetti (object diagram);

2) Diagrammi per gli aspetti dinamici:
1. diagrammi di interazione:
- diagrammi di sequenza (sequence diagram);
- diagrammi di collaborazione (collaboration diagram);
- diagrammi di stato (statechart diagram);
- diagrammi di attività (activity diagram);
2. diagrammi di implementazione:
- diagrammi dei componenti (component diagram);
- diagrammi di allocazione (deployement diagram);
3. diagrammi di gestione del modello:
- diagrammi di package;
- diagrammi dei sottoinsiemi;
- diagrammi dei modelli.

Questi diagrammi descrivono e documentano gli aspetti legati a un progetto software anche molto complesso.

Vantaggi dell'utilizzo dell' UML
La metodologia UML è utilizzata nei progetti dei software per i seuenti motivi:
1. Comunicare con il team di sviluppo. Il linguaggio naturale è troppo vario per essere interpretato dal computer. Il codice permette di essere interpretato meglio, ma è troppo dettagliato. Usando l'UML si raggiunge un buon grado di precisione senza perdersi in dettagli, evidenziando solamente gli oggetti importanti;
2. Imparare a programmare object-oriented. Non è difficile imparare a programmare con un linguaggio OO. Più difficile è imparare a sfruttare i vantaggi offerti da questo tipo di linguaggio.
3. Comunicare con i clienti. Una delle più grandi difficoltà nello sviluppo di software è ottenere un buon grado di comunicazione tra cliente e sviluppatori per costruire il sistema giusto, ovvero quello che soddisfa i requisiti del cliente a un costo accettabile.