UML est un moyen d'exprimer des modèles objet en faisant abstraction de leur implémentation, c'est-à-dire que le modèle fourni par UML est valable pour n'importe quel langage de programmation. UML est un langage qui s'appuie sur un métamodèle, un modèle de plus haut niveau qui définit les éléments d'UML (les concepts utilisables) et leur sémantique (leur signification et leur mode d'utilisation).
Le métamodèle permet de se placer à un niveau d'abstraction supérieur car il est étudié pour être plus générique que le modèle qu'il permet de construire.
Le méta-modèle d'UML en fait un langage formel possédant les caractéristiques suivantes :
UML offre une manière élégante de représenter le système selon différentes vues complémentaires grâce aux diagrammes.
Lorsqu'une entreprise désire un logiciel, elle le réalise parfois en interne, mais le fait plus généralement réaliser par une société de services.
Dans un cas comme dans l'autre il est nécessaire de définir l'ensemble des fonctionnalités que le logiciel doit possèder. Le demandeur du logiciel n'a parfois pas de compétences particulières en informatique et exprime donc ses souhaits sous forme d'un CdCF (Cahier des Charges Fonctionnelles), c'est-à-dire un document décrivant sous forme textuelle l'ensemble des particularités que le logiciel doit possèder, les conditions qu'il doit remplir (système(s) d'exploitation visé(s)), les écueils
à éviter, ainsi que les délais impartis, éventuellement des clauses sur le coût, les langages à utiliser, ...
Le CdCF est ainsi distribué à différentes sociétés de services (dans le cas d'une sous-traitance) sous forme d'un appel d'offre, auquel les sociétés vont répondre
par un coût, un délai, ...
Lorsqu'une société obtient le marché et qu'elle décide (si elle a le choix) d'opter pour un langage orienté objet, il lui faut dans un premier temps créer un modèle (c'est là qu'intervient UML) afin :
Ainsi, si le modèle ne convient pas au client, il sera "simple" à modifier, contrairement à une application directement implémentée (qui aurait mobilisé beaucoup plus de personnel, pendant une période plus longue), ce qui signifie une perte d'argent beaucoup moins importante pour la société de services, ainsi qu'une meilleure probabilité de rendre dans les temps (on parle généralement de dead line) une application conforme aux exigences du client (si l'application se conforme au modèle présenté au client, celui-ci peut difficilement contester la validité du logiciel).