Présentation UML
|
Introduction à UML UML (Unified Modeling Language) est né de la fusion des trois méthodes qui ont le plus influencé la modélisation objet au milieu des années 90 : OMT, Booch et OOSE. Issu "du terrain" et fruit d'un travail d'experts reconnus, UML est le résultat d'un large consensus. De très nombreux acteurs industriels de renom ont adopté UML et participent à son développement. L'approche objet est pourtant loin d'être une idée récente. Simula, premier langage de programmation à implémenter le concept de type abstrait à l'aide de classes, date de 1967 ! En 1976 déjà, Smalltalk implémente les concepts fondateurs de l'approche objet : encapsulation, agrégation, héritage. Les premiers compilateurs C++ datent du début des années 80 et de nombreux langages orientés objets "académiques" ont étayés les concepts objets (Eiffel, Objective C, Loops...). Il y donc déjà longtemps que l'approche objet est devenue une réalité. Les concepts de base de l'approche objet sont stables et largement éprouvés. De nos jours, programmer "objet", c'est bénéficier d'une panoplie d'outils et de langages performants. L'approche objet est une solution technologique incontournable. Ce n'est plus une mode, mais un réflexe quasi-automatique dès lors qu'on cherche à concevoir des logiciels complexes qui doivent "résister" à des changements constants. Lorsqu'il faut approcher un problème informatique, l'approche intuitive est de le découper en aspects fonctionnels. En effet, cette approche semble être la plus naturelle puisque lorsqu'on programme, il est tout aussi naturel de représenter les fonctions de l'application que l'on veut modéliser. Prenons l'exemple d'un logiciel de gestion de bibliothèque (figure 1). Ainsi, le logiciel est composé d'une hiérarchie de fonctions, qui ensemble, fournissent les services désirés, ainsi que de données qui représentent les éléments manipulés (livres, etc…). |
Figure 1
|
Problèmes avec l'approche fonctionnelle En découpant le logiciel en fonctions, il devient difficile de faire une simple mise à jour. En effet, un changement effectué sur une des fonctions peut impliquer des changements majeurs dans une multitude d'autres fonctions. On pourrait contourner ce problème en utilisant des fonctions plus génériques, mais ensuite l'écriture du logiciel devient beaucoup plus difficile. Vers une approche objet Pourquoi utiliser une approche orientée objet? Pourquoi ne pas rester avec l'approche fonctionnelle? Un objet, en génie logiciel, constitue une entité autonome, qui regroupe un ensemble de propriétés cohérentes et de traitements associés. Nous définissons un objet par les caractéristiques suivantes:
Exemple:
Une approche objet permet d'obtenir entre autres:
Exemple de l'héritage:
Exemple de polymorphisme:
Exemple d'agrégation:
Les objets et l'utilisation d'UML L'approche objet c'est:
Les obstacles de l'approche objet:
Il nous faut donc un "langage" pour exprimer de façon claire et précise les concepts objets du système que l'on veut modéliser. Ce "langage" est UML (Unified Modeling Language). L'utilisation d'UML permet de:
Avantages et inconvénients d'UML Points forts:
Point faible:
Qu'est-ce que modéliser? Modéliser consiste à identifier les caractéristiques intéressantes d'une entité, en vue d'une utilisation précise. Une bonne modélisation d'un système devrait permettre de faciliter la compréhension du système en question. En effet, un bon modèle devrait réduire la complexité du système et non de le complexifier. Également, un bon modèle devrait permettre de simuler le système en question. Un bon modèle devrait reproduire les comportements importants du système étudié. Étapes de modélisation avec UML? Il existe plusieurs approches pour modéliser un système avec UML. Nous allons vous proposer une méthode générale pour construire le modèle d'un système. Voici les grandes lignes:
Comment modéliser avec UML? La partie la plus importante dans l'élaboration d'un modèle avec UML est de définir et visualiser le modèle à l'aide de diagrammes.
Nous allons voir, par la suite, que UML encourage l'utilisation des outils comme TogetherJ afin de faciliter la rédaction des diagrammes UML. L'emploi de tels outils permet de:
Modéliser les aspects statiques
Modéliser les aspects dynamiques |