Modélisation Orientée Objet / UML

Transcription

Modélisation Orientée Objet / UML
Modélisation Orientée Objet / UML
Laurent Henocque
http://laurent.henocque.free.fr/
Enseignant Chercheur ESIL/INFO France
http://laurent.henocque.perso.esil.univmed.fr/
mis à jour en Octobre 2006
Licence Creative Commons
Cette création est mise à disposition selon le Contrat
Paternité-Partage des Conditions Initiales à
l'Identique 2.0 France disponible en ligne
http://creativecommons.org/licenses/by-sa/2.0/fr/
ou par courrier postal à Creative Commons, 559
Nathan Abbott Way, Stanford, California 94305,
USA.
Références Normatives
•
•
•
•
•
•
L'infrastructure UML
http://www.omg.org/cgi-bin/doc?formal/05-07-05
La superstructure UML
http://www.omg.org/cgi-bin/doc?formal/05-07-04
OCL
http://www.omg.org/cgi-bin/doc?ptc/05-06-06
Autres références
• Ce support de cours s'appuie sur des exemples
concrets mis à disposition librement sur internet
par différentes sources
– http://www.rational.com
– http://www.visualuml.com
– http://uml.free.fr
– http://http://www.sparxsystems.com.au/resourc
es/uml2_tutorial/index.html
Objectifs
• Présenter une vision globale du problème et
des enjeux de la modélisation jusqu'à
UML2 avec des exemples visuels.
Abstractions et Modèles
Qu'est ce qu'un modèle
Modèle <> Abstraction
• Un modèle est une représentation de la
réalité faisant abstraction de larges niveaux
de détail.
• S'il n'y a pas d'abstraction, il n'y a pas de
modèle : on parle de la réalité
• Exemple de modèle : une maquette
d'architecte
Abstractions et Modèles
Modèle <> Point de vue
• Un même problème peut avoir des modèles
selon de très nombreux points de vue
• On s'intéresse alors seulement à un aspect
du problème
• Par exemple : le schéma électrique d'un
bâtiment en architecture
Abstractions et Modèles
Modèle <> Spécification
• Les modèles ont pour utilité première de
décrire, pour communiquer
• Si l'on décrit pour communiquer avant de
construire, le modèle tient lieu de document
de spécification ou de conception
Modélisation en Informatique
Pour la conception :
• diagramme d'activités décrivant un
algorithme
• diagramme décrivant des classes avec leurs
relations héritage et les associations
• un fichier ".h" déclarant des structures,
fonctions, classes et méthodes sans préciser
leur implantation
Modélisation en Informatique
Pour la spécification
• diagrammes de cas d'utilisation
• diagrammes de séquence
• diagrammes de composants
• diagrammes de déploiement
• diagrammes d'architecture
• ...
Anciennes méthodes de
Modélisation
Merise
• Une méthode conçue pour décrire des bases
de données
• Permet de voir la base d'un coup d'œil, et de
réfléchir aux optimisations à lui apporter
(mise sous forme normale par exemple)
Merise
Merise
Merise avec Windev
Avantages / Inconvénients
• Merise n'est pas orientée objet (même si des
évolutions en ce sens sont apparues en même
temps que d'autres méthodes plus populaires
aujourd'hui)
– diagrammes lourds
– manque d'abstraction
– ce n'est pas une méthode cognitive mais une méthode
technique
• Très bien adaptée aux BD conventionnelles et
encore très utilisée
La méthode OOA
Object Oriented Analysis (Analyse Orientée
Objet)
• Inventée par Grady Booch
• Une des premières méthodes
"conceptuelles" ou cognitives
• Née dans le sillage du langage ADA
• Aujourd'hui noyée dans la méthode UML
OOA
Booch
• héritage
• associations
• multiplicités
OOA
différents
types de
relations
OOA
Avantages / Inconvénients
• Prise en compte de l'héritage
• Trop incomplète pour s'intégrer dans le
processus logiciel plus loin que dans
l'analyse (spécification avancée)
La méthode OMT
• Object Modeling Technique (Technique de
Modélisation Objet)
• Inventée par Rumbaugh
• Tournée vers la conception
• Orientée Objet
OMT
Rumbaugh
• héritage
• associations
• attributs
• méthodes
• paramètres
• accès (public
privé)
OMT
• permet la
génération
de code
Avantages / Inconvénients
• A fait apparaître l'utilisation combinée de
plusieurs diagrammes : diagrammes de classes /
diagrammes d'états / diagrammes de flots
• A décrit le processus de raffinement d'un modèle
• Les diagrammes de flots de UML n'ont jamais été
bien expliquée
• La méthode est trop près du programme
La méthode OOSE
• Object Oriented Software Engineering
• Inventée par Jacobson
• Une méthode pour l'analyse intitiale des
usages de logiciel, fondée sur les "Cas
d'utilisation" (Use case)
OOSE
Jacobson
OOSE : vue objet
• entités
• contrôle
• interfaces
OOSE Messages
OOSE
Avantages / Inconvénients
• OOSE fournit la méthode permettant
d'initier le processus de spécification /
conception
• Aucun support pour faire évoluer la
spécification vers une conception
• Ses diagrammes de composants et de flots
ne sont pas convaincants
La méthode Objecteering
• Une méthode orientée objet, propriétaire (la
société française Softeam),
• Populaire car elle était associée à un outil
de "design", capable de générer du code
• En ce sens un premier vrai challenger
orienté objet à Merise
Objecteering
Objecteering
Aujourd'hui UML 2.0
• Fusion de OOA / OOSE / OMT
• Un standard de l' OMG
• Associée à des outils : Rational Rose /
Poséidon / Borland Together / ...
• Couvre tous les aspects de la spécification,
de l'analyse la plus initiale en passant par la
génération de code au déploiement
• Très riche méthode cognitive
Approche fonctionnelle vs objet
Modularité
• Une modification élémentaire du modèle ne
doit pas engendrer de modifications
globales du logiciel
Approche Fonctionnelle
• L'approche du développement logiciel centrée sur
les fonctions est non modulaire :
• Un changement dans les données se répercute en
des changements massifs et diffus dans le code
• Exemple : gestion de bibliothèque : on doit
prendre en compte un nouveau type de média
(vidéo par exemple)
Impact des changements
Vue 4 plus 1
• Point de vue moderne sur le logiciel (plus
de fonctions)
Impact sur les Processus
• Permet de mieux
séparer des
activités qui sinon
auraient été trop
interdépendantes
Les aspects : un souci moderne de
modularité
• Un exemple moderne de prise en compte de
la modularité : la programmation orientée
aspect
• Un aspect décrit des mécanismes ou des
données qui s'étendent sur des ensembles de
classes, indépendamment de la hiérarchie
• Exemple : le profiling
• Les aspects pour Java : AspectJ
Historique UML
Evolution
• 2003 : UML 1.5
• 2004 : UML 2.0