« UML (informatique) » : différence entre les versions

Contenu supprimé Contenu ajouté
de: en: pt:
Parisii1976 (discuter | contributions)
 
(695 versions intermédiaires par plus de 100 utilisateurs sont masquées)
Ligne 1 :
{{voir homonymes|UML}}
[[de:UML]]
{{Infobox Architecture logicielle
[[en:UML]]
| couleur boîte = 16B2AC
[[pt:UML]]
| nom={{blanc|UML}}
| image=
| légende=Logo du langage UML
| alt =
| logo=UML logo.svg
| éditeur=[[Object Management Group]] (OMG)
| auteurs=
| genre=[[Spécification (norme technique)|Spécification]] formelle
| état=Version 2.5.1
| première publi={{Date|décembre 1997}}<!-- TODO: ajouter source -->
| dernière publi={{Date|décembre 2017}}<!-- TODO: ajouter source -->
| standard=[https://www.omg.org/spec/UML/current omg.org/spec/UML]
}}
 
<!--[[Image:UML logo.svg|vignette|Logo d'UML.|alt=|220x220px]]-->
'''UML''' (''Unified Modeling Language'') est une formalisation très aboutie et non-propriétaire, de la modélisation objet. UML est le résultat de la fusion des précédent langages de modélisation objet [[Booch]], [[OMT]] et [[OOSE]].
Le '''Langage de Modélisation Unifié''', de l'anglais {{lang|en|'''''U'''nified '''M'''odeling '''L'''anguage''}} ('''UML'''), est un [[langage]] de modélisation graphique à base de [[pictogramme]]s conçu comme une méthode normalisée de visualisation dans les domaines du [[développement logiciel]] et en [[Programmation orientée objet|conception orientée objet]].
 
L'UML est une synthèse de langages de modélisation objet antérieurs : [[Méthode Booch|Booch]], [[Object Modeling Technique|OMT]], [[OOSE]]. Principalement issu des travaux de [[Grady Booch]], [[James Rumbaugh]] et [[Ivar Jacobson]], UML est à présent un standard adopté par l'[[Object Management Group]] (OMG). UML 1.0 a été normalisé en {{date-|janvier 1997}} ; UML 2.0 a été adopté par l'OMG en {{date-|juillet 2005}}<ref>Voir la section Historique</ref>. La dernière version de la spécification validée par l'OMG est UML 2.5.1 (2017)<ref>[https://www.omg.org/spec/UML/ UML sur le site de l'OMG]</ref>.
Bien que n'étant pas un standard industriel, UML est devenu un standard de fait avec le soutien du consortium OMG ([http://www.omg.org Object Management Group]).
 
== Utilisation ==
=== Le formalisme d'UML ===
UML est destiné à faciliter la conception des documents nécessaires au développement d'un logiciel orienté objet, comme standard de modélisation de l'architecture logicielle. Les différents éléments représentables sont :
* Activité d'un objet/logiciel
* [[Acteur (UML)|Acteurs]]
* Processus
* Schéma de base de données
* Composants logiciels
* Réutilisation de composants.
 
Il est également possible de générer automatiquement tout ou partie du code, par exemple en langage [[Java (langage)|Java]], à partir des documents réalisés.
Le formalisme UML est composé de 9 types de diagrammes. UML n'étant pas une méthode, leur utilisation est laissé à l'appréciation de chacun, même si le diagramme des cas d'utilisation est généralement consideré comme l'élément central d'UML. De même, on peut se contenter de modéliser seulement partiellement un système, par exemple certaines parties critiques.
 
== Histoire ==
* Diagrammes statiques
[[Image:OO-historie.jpg|vignette|320px|centré|Historique d'UML - méthode unifiée.]]
** Diagramme des cas d'utilisation (''use-cases''): Ce diagramme décrit les possibilités d'interaction entre le système et les acteurs, c'est à dire tout ce qui peut se produire dans le fonctionnement du système.
{|class = "wikitable alternance center"
** Diagramme de classes : Ce diagramme représente les classes intervenant dans le système.
|+ Historique d'UML, du début 1990 à 2017<ref>[https://www.omg.org/spec/UML/#spec-versions-formal History - Formal versions] sur le site de l'OMG</ref>
** Diagramme d'objets : Ce diagramme sert à représenter les instances de [[classe]]s (objets) utilisées dans le système.
! scope="col" | Date
** Diagramme de composants : Ce diagramme permet de montrer les composants du système d'un point de vue physique, tel qu'ils sont mis en oeuvre ([[fichier]]s, [[bibliothèque]]s, [[base de données|bases de données]]...)
! scope="col" | Description
** Diagramme de déploiement : Ce diagramme sert à représenter les éléments matériels ([[ordinateur]]s, [[périphérique]]s, [[réseau]]x, systèmes de stockage...) et la manière dont les composants du système sont réparties sur ces éléments matériels et interagissent avec eux.
|-
| Au début des années 1980
| Les objets commencent à quitter les laboratoires de recherche et à faire leurs premiers pas dans le monde réel ; entre autres, le langage de programmation [[Smalltalk]], stabilisé, devient une plate-forme utilisable et le [[C++]] voit le jour.
Les méthodes objets commencent à émerger pour remplacer les méthodes structurée et fonctionnelle, trop liées à la machine.
|-
| 1989 à 1994
| Le nombre de méthodes orientées objet passe de dix à plus de cinquante ; toutes ces méthodes ont de nombreux points communs (objets, méthodes, paramètres, etc.).
Ces méthodes, s'orientant sur l'abstraction des composants matériels, se basent sur des notions de classe, d'association, de partition en sous-systèmes et sur l'étude de l'interaction entre l'utilisateur et le système. Les principaux auteurs de ces méthodes sont [[James Rumbaugh]], [[Grady Booch]] et [[Ivar Jacobson]]. Parmi ces méthodes, deux s'imposent : la méthode de Booch et la méthode OMT (Object Modeling Technique). Les deuxièmes versions des méthodes de Booch et OMT font leur apparition : Booch'93 et OMT-2. Ces méthodes sont assez semblables, mais Booch'93 insiste plus sur la construction tandis qu'OMT-2 insiste plus sur l'analyse et l'abstraction.
|-
| 1989 et 1991
| Publication de deux ouvrages, par {{lien|Sally Shlaer}} et [[Steve Mellor]] sur l'analyse et la conception, qui débouchent sur une approche qu'ils nomment '''conception récursive'''.
|-
| 1989 à 1990
| Développement à [[Portland (Oregon)|Portland]], par la communauté [[Smalltalk]], de la conception pilotée par les responsabilités et les cartes '''CRC''' (Class-Responsability-Collaboration).
|-
| 1991 à 1996
| [[James Rumbaugh]] dirige aux laboratoires de recherche de [[General Electric]] une équipe de recherche qui publie un ouvrage très apprécié sur OMT.
|-
| 1991
| Publication d'ouvrages, par [[Peter Coad]] et [[Ed. Yourdon]], qui développent les approches « allégées » et « orientées prototypes ».
|-
| 1992 et 1995
| Publication des livres [[Ivar Jacobson|d'Ivar Jacobson]] fondés sur son expérience des commutateurs téléphoniques chez [[Ericsson]]. Le premier introduit le concept de [[cas d'utilisation]] (use-case).
|-
| 1994 à 1996
| [[Grady Booch]] effectue un travail important chez [[Rational Software]] en développant des systèmes en [[Ada (langage)|Ada]].
|-
| 1994
| Le nombre important de méthodes et le fait que les différences entre elles se réduisent font reculer la technologie objet au point que [[James Rumbaugh]] et [[Grady Booch]] s'unissent afin d'unifier leurs travaux. Ils proposent une « méthode unifiée ».
|-
| 1994
| Les livres de [[Jim Odell]], écrits avec [[James Martin]], se fondent sur sa longue expérience des systèmes d'information et du génie logiciel et sont, parmi tous ces ouvrages, les plus conceptuels.
|-
| {{date-|octobre 1994}}
| Début des travaux de la méthode unifiée (''unified method'' ('''UM''')).
[[James Rumbaugh]] rejoint [[Grady Booch]] chez [[Rational Software]].
|-
| 1995
| [[Ivar Jacobson]], créateur des ''use cases'', rejoint [[James Rumbaugh]] et [[Grady Booch]].
|-
| 1995
| Les auteurs de la méthode unifiée ('''UM''') publient le document intitulé '''Unified Method V0.8'''.
|-
| {{date-|octobre 1995}}
| [[Ivar Jacobson]] arrive chez [[Rational Software]].
|-
| {{date-|Octobre 1995}}
| UML 0.8 inclut '''OOD'''/Booch '93 de [[Grady Booch]] et [[Object Modeling Technique|OMT]] de [[James Rumbaugh]].
|-
| 1996
| Publication d'une nouvelle révision du document, '''Unified Method V0.9''', à la suite des commentaires des utilisateurs.
La révision 0.9.1 est la version la plus aboutie de la méthode unifiée (réorientation de la portée de l'effort d'unification). La méthode change de nom et se transforme en UML (Unified Modeling Language for Object-Oriented Development). Un consortium de grandes entreprises se crée ([[Microsoft]], [[IBM]], [[Oracle (entreprise)|Oracle]], etc.) qui permettra de faire passer la méthode à sa version 1.0.
|-
| {{date-|juin 1996}}
| UML 0.9 inclut OOSE [[Ivar Jacobson|d'Ivar Jacobson]].
|-
| {{date-|octobre 1996}}
| UML 0.91
|-
| {{date-|janvier 1997}}
| Normalisation de UML 1.0 par l'[[Object Management Group]] (OMG).
|-
| {{date-|août 1997}}
| Proposition des spécifications d'UML 1.1 à l'[[Object Management Group|OMG]] par un groupe de travail d'analystes et de concepteurs dirigé par [[Cris Kobryn]] et administré par [[Ed Eykholt]].
|-
| {{date-|14 novembre 1997}}
| Adoption des spécifications d'UML 1.1 par l'[[Object Management Group|OMG]]<ref>{{lien web|url=http://www.omg.org/cgi-bin/doc?ad/97-08-11 |titre=UML Specification version 1.1 (OMG document ad/97-08-11) |périodique=Omg.org |date= |consulté le=2011-09-22}}</ref>.
Différentes améliorations continuent d'être apportées au standard UML, donnant naissance à quatre révisions : UML 1.2, 1.3, 1.4, 1.5. UML 1.5 est la dernière révision avant le passage à la version UML 2.0.
 
Les standards UML 1.x, encore largement influencés par la notation OMT, sont critiqués comme manquant d'intégration sémantique.
* Diagrammes dynamiques
|-
** Diagramme de collaboration : Ce diagramme montre les interactions entre objets, et les modifications d'états des objets provoqués par ces interactions.
| {{date-|juin 1998}}
** Diagramme de séquence : Ce diagramme est une représentation séquentielle du déroulement des traitements et des interactions entre les éléments du système et/ou des acteurs.
| Adoption de UML 1.2 par l'OMG.
** Diagramme états-transitions : Ce diagramme montre la manière dont les états se succèdent en fonction des évenements du système.
|-
** Diagramme d'activité : Ce diagramme est une variante du diagramme d'états-transition et permet de représenter le déclenchement d'évenements en fonction des états du système.
| {{date-|octobre 1998}}
| Adoption de UML 1.3 par l'OMG.
|-
| {{date-|mars 2000}}
| Publication de la spécification UML 1.3 complète.
|-
| {{date-|septembre 2001}}
| UML 1.4.
|-
| {{date-|6 mars 2003}}
| UML 1.5 (recommandations)
|-
| {{date-|août 2003}}
| UML 2.0 Superstructure Specification (recommandation)
|-
| {{date-|1 septembre 2003}}
| UML 2.0 Diagram Interchange Specification (recommandation)
|-
| {{date-|14 octobre 2003}}
| UML 2.0 OCL Specification
|-
| {{date-|décembre 2003}}
| UML 2.0 (recommandation)
|-
| {{date-|juillet 2005}}
| Adoption de UML 2.0 par l'OMG.
|-
| {{date-|4 avril 2006}}
| UML 2.0 Diagram Interchange Specification
|-
| {{date-|1 juin 2006}}
| ''{{lang|en|deployment view}}'')
|-
| {{date-|6 octobre 2006}}
| UML 2.1.1 - XMI file
|-
| {{date-|6 février 2007}}
| UML 2.1.1 Infrastructure Specification
|-
| {{date-|3 février 2007}}
| UML 2.1.1 Superstructure Specification
|-
| 2007
| UML 1.4.2 devient une spécification ISO (ISO/IEC 19501).
|-
| {{date-|novembre 2007}}
| Diffusion de UML 2.1.2 par l'OMG.
|-
| {{date-|janvier 2009}}
| Diffusion de UML 2.2 par l'OMG.
|-
| {{date-|mai 2010}}
| Diffusion d'UML 2.3 par l'OMG.
|-
| {{date-|juillet 2011}}
| Diffusion par l'OMG d'UML 2.4.1<ref>[https://www.omg.org/spec/UML/2.4.1 Specification UML 2.4.1]</ref>. Infrastructure<ref>{{en}} {{Lien web |url=https://www.omg.org/spec/UML/2.4.1/Infrastructure/PDF|titre=OMG Unified Modeling LanguageTM (OMG UML),Infrastructure |auteur=OMG |année=aout 2011 |éditeur=OMG |consulté le=20 Mai 2019}}.</ref> et Superstructure<ref>{{en}} {{Lien web |url=https://www.omg.org/spec/UML/2.4.1/Superstructure/PDF |titre=OMG Unified Modeling LanguageTM (OMG UML),Superstructure |auteur=OMG |année=aout 2011 |éditeur=OMG |consulté le=20 Mai 2019}}.</ref> sont révisés en {{date-|août 2011}}.
|-
| {{date-|décembre 2017}}
| Diffusion par l'OMG d'UML 2.5.1<ref>[https://www.omg.org/spec/UML/2.5.1/ Specification UML 2.5.1 (2017)] (Consulté le 20 mai 2019)</ref>. Le métamodèle lui-même est inchangé depuis la superstructure d'UML 2.4.1, avec quelques exceptions<ref>[https://www.omg.org/spec/UML/2.5.1/PDF Voir le chapitre "6.1 Specification Simplification" d'UML 2.5.1.] (Consulté le 20 mai 2019)</ref>.
|}
 
== Formalisme ==
Voir également:
UML est un langage de modélisation. La version actuelle, UML 2.5, propose 14 types de diagrammes dont sept structurels et sept comportementaux. À titre de comparaison, UML 1.3 comportait 25 types de diagrammes.
*[http://uml.free.fr UML en français]
 
UML n'étant pas une méthode, l'utilisation des diagrammes est laissée à l'appréciation de chacun. Le [[diagramme de classes]] est généralement considéré comme l'élément central d'UML. Des méthodes, telles que le [[processus unifié]] proposé par les créateurs originels de UML, utilisent plus systématiquement l'ensemble des diagrammes et axent l'analyse sur les [[cas d'utilisation]] (« use case ») pour développer par itérations successives un modèle d'analyse, un modèle de conception, et d'autres modèles. D'autres approches se contentent de modéliser seulement partiellement un système, par exemple certaines parties critiques qui sont difficiles à déduire du code.
Des éditeurs de logiciel proposent des outils de modélisation UML. On peut citer :
 
* [http://www.rational.com/products/rose Rose] de Rational Rose
* UML se décompose en plusieurs parties :
* [http://www.softeam.fr/produits.php Objecteering] de Softeam
** Les ''vues'' : ce sont les observables du système. Elles décrivent le système d'un point de vue donné, qui peut être organisationnel, dynamique, temporel, architectural, géographique, logique, etc. En combinant toutes ces vues, il est possible de définir (ou retrouver) le système complet.
** Les ''diagrammes'' : ce sont des ensembles d'éléments graphiques. Ils décrivent le contenu des vues, qui sont des notions abstraites. Ils peuvent faire partie de plusieurs vues.
** Les ''modèles d'élément'' : ce sont les éléments graphiques des diagrammes.
 
=== Vues ===
[[Image:UML Vues.png|vignette|Vues d'UML.]]
Une façon de mettre en œuvre UML est de considérer différentes ''vues'' qui peuvent se superposer pour collaborer à la définition du système :
* ''Vue des cas d'utilisation'' (''{{lang|en|use-case view}}'') : c'est la description du modèle vu par les acteurs du système. Elle correspond aux besoins attendus par chaque acteur (c'est le quoi et le qui).
* ''Vue logique'' (''{{lang|en|logical view}}''): c'est la définition du système vu de l'intérieur. Elle explique comment peuvent être satisfaits les besoins des acteurs (c'est le comment).
* ''Vue d'implémentation'' (''{{lang|en|implementation view}}'') : cette vue définit les dépendances entre les modules.
* ''Vue des processus''  (''{{lang|en|process view}}'') : c'est la vue temporelle et technique, qui met en œuvre les notions de tâches concurrentes, stimuli, contrôle, synchronisation…
* ''Vue de déploiement'' (''{{lang|en|deployment view}}'') : cette vue décrit la position géographique et l'architecture physique de chaque élément du système (c'est le où).
 
Le pourquoi n'est pas défini dans UML<ref>[http://www.uml-sysml.org/modelisation-objet/pourquoi-uml Pourquoi UML ?] (Consulté le 20 mai 2019)</ref>.
 
En UML 2.5, les diagrammes sont représentés sous deux types de vue : d'un point de vue statique ou structurelle du domaine avec les diagramme de structure (Structure Diagrams).
 
D'un point de vue dynamique avec les diagrammes de comportement (Behavior Diagrams) et les diagrammes d’interactions (Interaction Diagrams).
[[Fichier:DiagrammesUML.svg|vignette|Diagrammes UML.]]
 
=== Diagrammes ===
[[Image:Uml diagram-fr.png|vignette|upright=1.3|La hiérarchie des diagrammes UML 2.0 sous forme d'un diagramme de classes.]]
Les diagrammes sont dépendants hiérarchiquement et se complètent, de façon à permettre la modélisation d'un projet tout au long de son cycle de vie. Il en existe quatorze depuis UML 2.3.
 
==== Diagrammes de structure ou diagrammes statiques ====
Les ''diagrammes de structure'' (''{{lang|en|structure diagrams}}'') ou ''diagrammes statiques'' (''{{lang|en|static diagrams}}'') rassemblent :
* ''[[Diagramme de classes]]'' (''{{lang|en|class diagram}}'') : représentation des [[Classe (informatique)|classes]] intervenant dans le système.
* ''[[Diagramme d'objets]]'' (''{{lang|en|object diagram}}'') : représentation des instances de classes (objets) utilisées dans le système.
* ''[[Diagramme de composants]]'' (''{{lang|en|component diagram}}'') : représentation des composants du système d'un point de vue physique, tels qu'ils sont mis en œuvre ([[Fichier (informatique)|fichiers]], [[Bibliothèque logicielle|bibliothèques]], [[base de données|bases de données]]…)
* ''[[Diagramme de déploiement]]'' (''{{lang|en|deployment diagram}}'') : représentation des éléments matériels ([[ordinateur]]s, [[périphérique (informatique)|périphériques]], [[réseau informatique|réseaux]], systèmes de stockage…) et la manière dont les composants du système sont répartis sur ces éléments matériels et interagissent entre eux.
* [[Diagramme des paquetages|''Diagramme des paquets'']] (''{{lang|en|package diagram}}'') : représentation des dépendances entre les paquets (un paquet étant un conteneur logique permettant de regrouper et d'organiser les éléments dans le modèle UML), c'est-à-dire entre les ensembles de définitions.
* ''[[Diagramme de structure composite]]'' (''{{lang|en|composite structure diagram}}'') : représentation sous forme de [[boîte blanche]] des relations entre composants d'une classe (depuis UML 2.x).
* ''[[Diagramme de profils]]'' (''{{lang|en|profile diagram}}'') : spécialisation et personnalisation pour un domaine particulier d'un meta-modèle de référence d'UML (depuis UML 2.2).
 
==== Diagrammes de comportement ====
Les ''diagrammes de comportement'' (''{{lang|en|behavior diagrams}}'') rassemblent :
* ''[[Diagramme des cas d'utilisation]]'' (''{{lang|en|use-case diagram}}'') : représentation des possibilités d'interaction entre le système et les acteurs (intervenants extérieurs au système), c'est-à-dire de toutes les fonctionnalités que doit fournir le système.
* ''[[Diagramme états-transitions]]'' (''{{lang|en|state machine diagram}}'') : représentation sous forme de machine à états finis du comportement du système ou de ses composants.
* ''[[Diagramme d'activité]]'' (''{{lang|en|activity diagram}}'') : représentation sous forme de flux ou d'enchaînement d'activités du comportement du système ou de ses composants.
 
==== Diagrammes d'interaction ou diagrammes dynamiques ====
Les ''diagrammes d'interaction'' (''{{lang|en|interaction diagrams}}'') ou ''diagrammes dynamiques'' (''{{lang|en|dynamic diagrams}}'') rassemblent :
* ''[[Diagramme de séquence]]'' (''{{lang|en|sequence diagram}}'') : représentation de façon séquentielle du déroulement des traitements et des interactions entre les éléments du système et/ou de ses acteurs.
* ''[[Diagramme de communication]]'' (''{{lang|en|communication diagram}}'') : représentation de façon simplifiée d'un diagramme de séquence se concentrant sur les échanges de messages entre les objets (depuis UML 2.x).
* ''[[Diagramme global d'interaction]]'' (''{{lang|en|interaction overview diagram}}'') : représentation des enchaînements possibles entre les scénarios préalablement identifiés sous forme de diagrammes de séquences (variante du [[diagramme d'activité]]) (depuis UML 2.x).
* ''[[Diagramme de temps]]'' (''{{lang|en|timing diagram}}'') : représentation des variations d'une donnée au cours du temps (depuis UML 2.3).
 
=== Modèles d'éléments ===
* Un ''stéréotype'' est une marque de généralisation notée par des [[guillemet]]s, montrant que l'objet est une variété d'un modèle.
* Un ''classeur'' est une annotation qui permet de regrouper des unités ayant le même comportement ou structure. Un classeur se représente par un rectangle conteneur, en traits pleins.
* Un ''paquet'' regroupe des diagrammes ou des unités.
* Chaque classe ou objet se définit précisément avec le signe « :: ». Ainsi l'identification d'une classe X en dehors de son paquet ou de son classeur sera définie par « Paquet A::Classeur B::Classe X ».
 
==== Modèles d'éléments de type commun ====
[[Image:ModeleElementsUML.png|vignette|upright=1.3|Modèles d'éléments UML.]]
Symbolique des modèles d'éléments :
<gallery>
Image:UML Class.png|Classe (''{{lang|en|class}}'').
Image:UML Object.png|Objet (''{{lang|en|object}}'').
Image:UML Usecase.png|Cas d'utilisation (''{{lang|en|use case}}'').
Image:UML Package.png|Paquet (''{{lang|en|package}}'').
</gallery>
 
<gallery>
Image:UML Node.png|Nœud (''{{lang|en|node}}'').
</gallery>
 
* Fourche (''{{lang|en|fork}}'').
<gallery>
Image:UML Actor.png|Acteur (''{{lang|en|actor}}'').
Image:UML State.png|État (''{{lang|en|state}}'').
Image:UML Activity.png|Activité (''{{lang|en|activity}}'').
</gallery>
 
* État initial (''{{lang|en|initial state}}'').
* État final (''{{lang|en|final state}}'').
* [[Interface (informatique)|Interface]] (''{{lang|en|interface}}'').
** O←--- sens du flux de l'interface.
** O)----- est un raccourci pour la superposition de ---→O et O←---.
 
==== Modèles d'éléments de type relation ====
<gallery>
Image:UML Rel dependency.png|[[Dépendance logicielle|Dépendance]] (''{{lang|en|dependency}}'').
</gallery>
 
* [[Généralisation]] (''{{lang|en|generalisation}}'').
* [[Association (programmation)|Association]] (''{{lang|en|association}}'').
 
<gallery>
Image:UML_Rel_aggregation.jpg|[[Agrégation (programmation)|Agrégation]] (''{{lang|en|aggregation}}'').
Image:UML_Rel_composition.jpg|[[Composition (programmation)|Composition]] (''{{lang|en|composition}}'').
</gallery>
 
* [[Réalisation (programmation)|Réalisation]].
* [[Utilisation (programmation)|Utilisation]].
 
==== Autres modèles d'éléments ====
* Les [[stéréotype (UML)|stéréotypes]] peuvent dépendre du langage utilisé.
* Les [[archétype (UML)|archétypes]].
* Les [[Profil (UML)|profils]].
 
== Normalisation et certification ==
UML n'est pas une norme en droit mais un simple standard « industriel » (ou norme de fait), parce que promu par l'[[Object Management Group|OMG]] ({{date||novembre|1997}}) au même titre que [[CORBA]] et en raison de son succès. Depuis {{date||juillet|2005}}, la première version 2.x de UML est validée par l'OMG.
 
Par ailleurs, depuis 2003, l'OMG a mis en place un programme de certification à la pratique et la connaissance d'UML OCUP<ref>[https://www.omg.org/ocup-2/index.htm OCUP 2™ - OMG's UML 2.5 Certification]</ref> qui recouvre trois niveaux de maîtrise.
 
== Exemple de séquence de création des diagrammes ==
{|class="wikitable"
!Diagramme
!Étape du [[cycle en V]]
|-
|[[Diagramme des cas d'utilisation|1. Diagramme de cas d'utilisation]]
|rowspan=4 | Spécification, cahier des charges
|-
|[[Diagramme de séquence|2. Diagramme de séquence]]
|-
|[[Diagramme d'activité|3. Diagramme d'activité (processus métiers)]]
|-
|[[Diagramme d'activité|4. Diagramme d'activité (cinématique et/ou processus applicatifs)]]
|-
|[[Diagramme de classes|5. Diagramme de classes]]
|rowspan=5 | Conception architecturale
|-
|[[Diagramme d'objets|6. Diagramme d'objets]]
|-
|[[Diagramme de communication|7. Diagramme de communication]]
|-
|[[Diagramme de déploiement|8. Diagramme de déploiement]]
|-
|[[Diagramme de composants|9. Diagramme de composants]]
|}
 
== Logiciels de modélisation UML ==
 
[[Image:Umbrello KDE 4.1.png|vignette|320px|Umbrello, atelier UML de KDE.]]
S'il existe de nombreux logiciels de modélisation UML, aucun ne respecte entièrement chacune des versions de UML, particulièrement UML 2, et beaucoup introduisent des notations non conformes. En revanche, de nombreux logiciels comportent des modules de génération de code, particulièrement à partir du [[diagramme de classes]], qui est celui qui se prête le mieux à une telle automatisation.
 
== Notes et références ==
{{Références}}
 
== Voir aussi ==
{{autres projets
| commons = Category:UML
| wikibooks = Programmation UML
| wikiversity = Modélisation UML
| wikiversity titre = Modélisation UML
}}
 
=== Bibliographie ===
* Grady Booch, James Rumbaugh, Ivar Jacobson, ''Le guide de l'utilisateur UML'', 2000{{ISBN|2-212-09103-6}}
* Laurent Audibert, [http://josdblog.blogspot.com/2009/11/livre-uml-2-de-lapprentissage-la.html ''UML 2, De l'apprentissage à la pratique (cours et exercices)''], Ellipses, 2009{{ISBN|978-2729852696}}
* Franck Barbier, ''[http://www.PauWare.com/UML_2_et_MDE/ UML 2 et MDE], Ingénierie des modèles avec études de cas'', 2009{{ISBN|978-2-10-049526-9}}
* Craig Larman, ''UML 2 et les design patterns, Analyse et conception orientées objet et développement itératif'' ({{3e|édition}}), Pearson Education, 2005 {{ISBN|2-7440-7090-4}}
* Martin Fowler ''et al.'', ''UML 2.0, Initiation aux aspects essentiels de la notation'', 2004{{ISBN|2-7440-1713-2}}
* Pascal Roques, ''UML 2, Modéliser une application Web'', Eyrolles, 2007{{ISBN|2-212-12136-9}}
* Pascal Roques, ''UML 2 par la pratique, Études de cas et exercices corrigés'', Eyrolles, 2006{{ISBN|2-212-12014-1}}
* {{Ouvrage|prénom1=Jim|nom1=Conallen|titre=Concevoir des applications web avec UML|éditeur=[[Eyrolles]]|année=2000|pages totales=288|isbn=978-2-212-09172-4}}
 
=== Articles connexes ===
* [[Unified Process]]
* [[Ingénierie dirigée par les modèles]]
* [[Model Driven Architecture]]
* [[ATLAS Transformation Language]]
* [[Object Constraint Language]]
* [[Transformation de modèles]]
* [[Modeling and Analysis of Real Time and Embedded systems]]
 
=== Liens externes ===
* {{en}} [http://www.uml.org UML.org]
* {{en}} [https://www.omg.org/spec/UML Dernière version de la spécification UML]
* {{en}} [http://www.omg.org OMG (Object Management Group)]
* {{en}} [http://www.itu.int/rec/T-REC-Z.109/en Profil UML standardisé par l'ITU-T] basé sur le [[Specification and Description Language]]
 
{{Palette|Normes ISO|Unified Modeling Language}}
{{Portail|informatique|programmation informatique}}
 
[[Catégorie:Standard de l'Object Management Group]]
[[Catégorie:Unified Modeling Language|*]]