Académique Documents
Professionnel Documents
Culture Documents
N de la fusion des mthodes objet dominantes (OMT, Booch et OOSE), puis normalis par l'OMG en 1997, UML est rapidement devenu un standard incontournable. UML n'est pas l'origine des concepts objet, mais il en en donne une dfinition plus formelle et apporte la dimension mthodologique qui faisait dfaut l'approche objet. Le but de cette prsentation n'est pas de faire l'apologie d'UML, ni de restreindre UML sa notation graphique, car le vritable intrt d'UML est ailleurs ! En effet, matriser la notation graphique d'UML n'est pas une fin en soi. Ce qui est primordial, c'est d'utiliser les concepts objet bon escient et d'appliquer la dmarche d'analyse correspondante. Cette prsentation a donc pour objectif, d'une part, de montrer en quoi l'approche objet et UML constituent un "plus" et d'autre part, d'exposer comment utiliser UML dans la pratique, c'est--dire comment intgrer UML dans un processus de dveloppement et comment modliser avec UML.
Avertissement : Les textes qui composent la prsentation sont (volontairement) trs synthtiques, la manire de transparents qu'on projette au cours d'une formation. Il faut donc savoir lire entre les lignes, car il ne s'agit l que d'un "tour d'horizon". Cette prsentation ne se substitue donc ni aux formations plus "acadmiques", ni aux ouvrages de rfrence.
I - PRESENTATION D'UML I-A - Un peu d'Histoire... I-A-1 - Approche fonctionnelle vs. approche objet I-A-1-a - La dcoupe fonctionnelle d'un problme informatique : une approche intuitive I-A-1-b - Le "plus" de l'approche fonctionnelle : la factorisation des comportements I-A-1-c - Le revers de la mdaille : maintenance complexe en cas d'volution I-A-1-d - La sparation des donnes et des traitements : le pige ! I-A-1-e - 1re amlioration : rassembler les valeurs qui caractrisent un type, dans le type I-A-1-f - 2me amlioration : centraliser les traitements associs un type, auprs du type I-A-1-g - Rcapitulons... I-A-1-h - Objet ? I-A-2 - Quels sont les autres concepts importants de l'approche objet ? I-A-2-a - Encapsulation I-A-2-b - Hritage (et polymorphisme) I-A-2-c - Agrgation I-A-2-d - Rsum sur les concepts fondateurs de l'approche objet I-A-2-e - L'approche objet, hier et aujourd'hui I-A-2-f - L'approche objet : une solution parfaite ? I-A-2-g - Quels sont les remdes aux inconvnients de l'approche objet ? I-B - Les mthodes objet et la gense d'UML I-B-1 - Mthodes ? I-B-2 - A quoi sert UML ? I-C - Avantages et inconvnients d'UML I-C-1 - Les points forts d'UML I-C-2 - Les points faibles d'UML II - MODELISER AVEC UML II-A - Qu'est-ce qu'un modle ? II-B - Comment modliser avec UML ? II-B-1 - Une dmarche itrative et incrmentale ? II-B-2 - Une dmarche pilote par les besoins des utilisateurs ? II-B-3 - Une dmarche centre sur l'architecture ? II-B-4 - Dfinir une architecture avec UML (dtail de la "vue 4+1") II-B-5 - Rsumons la dmarche... II-B-6 - Elaboration plutt que transformation II-B-7 - Dtail des diffrents niveaux d'abstraction (phases du macro-processus) II-B-8 - Activits des micro-processus d'analyse (niveau d'abstraction constant) II-B-9 - Synthse de la dmarche II-B-10 - Les diagrammes UML II-B-10-a - Comment "rdiger" un modle avec UML ? II-B-10-b - Quelques caractristiques des diagrammes UML II-B-10-c - Les diffrents types de diagrammes UML II-C - Les vues statiques d'UML II-C-1 - LES CAS D'UTILISATION II-C-1-a - La conceptualisation : rappel II-C-1-b - Cas d'utilisation (use cases) II-C-1-c - Elments de base des cas d'utilisation II-C-1-d - Exemples II-C-2 - LES PAQUETAGES II-C-2-a - Paquetages (packages) II-C-2-b - Paquetages : relations entre paquetages II-C-2-c - Paquetages : interfaces II-C-2-d - Paquetages : strotypes II-C-3 - LA COLLABORATION II-C-3-a - Symbole de modlisation "collaboration"
-2Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
II-C-4 - INSTANCES ET DIAGRAMME D'OBJETS II-C-4-a - Exemples d'instances II-C-4-b - Objets composites II-C-4-c - Diagramme d'objets II-C-5 - LES CLASSES II-C-5-a - Classe : smantique et notation II-C-6 - DIAGRAMME DE CLASSES II-C-6-a - Diagramme de classes : smantique II-C-6-b - Associations entre classes II-C-6-c - Documentation d'une association et types d'associations II-C-6-d - Hritage II-C-6-e - Agrgation II-C-6-f - Composition II-C-6-g - Agrgation et composition : rappel II-C-6-h - Interfaces II-C-6-i - Association drive II-C-6-j - Contrainte sur une association II-C-6-k - OCL II-C-6-l - Strotypes II-C-7 - DIAGRAMMES DE COMPOSANTS ET DE DEPLOIEMENT II-C-7-a - Diagramme de composants II-C-7-b - Diagramme de dploiement II-D - Les vues dynamiques d'UML II-D-1 - COLLABORATION ET MESSAGES II-D-1-a - Synchronisation des messages II-D-1-b - Objets actifs (threads) II-D-2 - DIAGRAMME DE SEQUENCE II-D-2-a - Diagramme de squence : smantique II-D-2-b - Types de messages II-D-2-c - Activation d'un objet II-D-2-d - Exemple complet II-D-3 - DIAGRAMME D'ETATS-TRANSITIONS II-D-3-a - Diagramme d'tats-transitions : smantique II-D-3-b - Super-Etat, historique et souches II-D-3-c - Actions dans un tat II-D-3-d - Etats concurrents et barre de synchronisation II-D-3-e - Evnement paramtr II-D-3-f - Echange de messages entre automates II-D-4 - DIAGRAMME D'ACTIVITES II-D-4-a - Diagramme d'activits : smantique II-D-4-b - Synchronisation II-D-4-c - Couloirs d'activits II-E - Conclusion II-E-1 - Programmer objet ? II-E-2 - Utiliser UML ?
-3Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
I-A-1 - Approche fonctionnelle vs. approche objet I-A-1-a - La dcoupe fonctionnelle d'un problme informatique : une approche intuitive
Exemple de dcoupe fonctionnelle d'un logiciel ddi la gestion d'une bibliothque :
Le logiciel est compos d'une hirarchie de fonctions, qui ensemble, fournissent les services dsirs, ainsi que de donnes qui reprsentent les lments manipuls (livres, etc#). Logique, cohrent et intuitif.
-4Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
Une dcoupe fonctionnelle "intelligente" consiste factoriser certains comportements communs du logiciel. En d'autres termes : pour raliser une fonction du logiciel, on peut utiliser un ensemble d'autres fonctions, dj disponibles, pour peu qu'on rende ces dernires un tant soit peu gnriques. Gnial !
-5Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
Il faudra donc modifier toutes les portions de code qui utilisent la base documentaire, pour grer les donnes et les actions propres aux diffrents types de documents. Il faudra par exemple modifier la fonction qui ralise l'dition des "lettres de rappel" (une lettre de rappel est une mise en demeure, qu'on envoie automatiquement aux personnes qui tardent rendre un ouvrage emprunt). Si l'on dsire que le dlai avant rappel varie selon le type de document emprunt, il faut prvoir une rgle de calcul pour chaque type de document. En fait, c'est la quasi-totalit de l'application qui devra tre adapte, pour grer les nouvelles donnes et raliser les traitements correspondants. Et cela, chaque fois qu'on dcidera de grer un nouveau type de document !
struct Document { char nom_doc[50]; Type_doc type; Bool est_emprunte; char emprunteur[50]; struct tm date_emprunt; } DOC[MAX_DOCS]; void lettres_de_rappel() -6Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
{ /* ... */ for (i = 0; i < NB_DOCS; i++) { if (DOC[i].est_emprunte) { switch(DOC[i].type) { case LIVRE: delai_avant_rappel = 20; break; case CASSETTE_VIDEO: delai_avant_rappel = 7; break; case CD_ROM: delai_avant_rappel = 5; break; } } } /* ... */ } void mettre_a_jour(int ref) { /* ... */ switch(DOC[ref].type) { case LIVRE: maj_livre(DOC[ref]); break; case CASSETTE_VIDEO: maj_k7(DOC[ref]); break; case CD_ROM: maj_cd(DOC[ref]); break; } /* ... */ }
I-A-1-e - 1re amlioration : rassembler les valeurs qui caractrisent un type, dans le type
Une solution relativement lgante la multiplication des branches conditionnelles et des redondances dans le code (consquence logique d'une trop grande ouverture des donnes), consiste tout simplement centraliser dans les structures de donnes, les valeurs qui leurs sont propres :
struct Document { char nom_doc[50]; Type_doc type; Bool est_emprunte; char emprunteur[50]; struct tm date_emprunt; int delai_avant_rappel; } DOC[MAX_DOCS]; void lettres_de_rappel() { /* ... */ for (i = 0; i < NB_DOCS; i++) { if (DOC[i].est_emprunte) /* SI LE DOC EST EMPRUNTE */ { /* IMPRIME UNE LETTRE SI SON DELAI DE RAPPEL EST DEPASSE */
-7Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
Quoi de plus logique ? En effet, le "dlai avant dition d'une lettre de rappel" est bien une caractristique propre tous les ouvrages grs par notre application. Mais cette solution n'est pas encore optimale !
I-A-1-f - 2me amlioration : centraliser les traitements associs un type, auprs du type
Pourquoi ne pas aussi rassembler dans une mme unit physique les types de donnes et tous les traitements associs ? Que se passerait-il par exemple si l'on centralisait dans un mme fichier, la structure de donnes qui dcrit les documents et la fonction de calcul du dlai avant rappel ? Cela nous permettrait de retrouver en un clin d'oeil le bout de code qui est charg de calculer le dlai avant rappel d'un document, puisqu'il se trouve au plus prs de la structure de donnes concerne. Ainsi, si notre mdiathque devait grer un nouveau type d'ouvrage, il suffirait de modifier une seule fonction (qu'on sait retrouver instannment), pour assurer la prise en compte de ce nouveau type de document dans le calcul du dlai avant rappel. Plus besoin de fouiller partout dans le code...
struct Document { char nom_doc[50]; Type_doc type; Bool est_emprunte; char emprunteur[50]; struct tm date_emprunt; int delai_avant_rappel; } DOC[MAX_DOCS];
int calculer_delai_rappel(Type_doc type) { switch(type) { case LIVRE: return 20; case CASSETTE_VIDEO: return 7; case CD_ROM: return 5; /* autres "case" bienvenus ici ! */ } }
Ecrit en ces termes, notre logiciel sera plus facile maintenir et bien plus lisible. Le stockage et le calcul du dlai avant rappel des documents, est dsormais assur par une seule et unique unit physique (quelques lignes de code, rapidement identifiables). Pour accder la caractristique "dlai avant rappel" d'un document, il suffit de rcuprer la valeur correspondante parmi les champs qui dcrivent le document. Pour assurer la prise en compte d'un nouveau type de document dans
-8Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
le calcul du dlai avant rappel, il suffit de modifier une seule fonction, situe au mme endroit que la structure de donnes qui dcrit les documents :
void ajouter_document(int ref) { DOC[ref].est_emprunte = FAUX; DOC[ref].nom_doc = saisir_nom(); DOC[ref].type = saisir_type(); DOC[ref].delai_avant_rappel = calculer_delai_rappel(DOC[ref].type); } void afficher_document(int ref) { printf("Nom du document: %s\n",DOC[ref].nom_doc); /* ... */ printf("Delai avant rappel: %d jours\n",DOC[ref].delai_avant_rappel); /* ... */ }
I-A-1-g - Rcapitulons...
En rsum : centraliser les donnes d'un type et les traitements associs, dans une mme unit physique, permet de limiter les points de maintenance dans le code et facilite l'accs l'information en cas d'volution du logiciel :
I-A-1-h - Objet ?
Les modifications que nous avons apport notre logiciel de gestion de mdiathque, nous ont amen transformer ce qui tait l'origine une structure de donnes, manipule par des fonctions, en une entit autonome, qui regroupe un ensemble de proprits cohrentes et de traitements associs. Une telle entit s'appelle... un objet et constitue le concept fondateur de l'approche du mme nom ! Un objet est une entit aux frontires prcises qui possde une identit (un nom). Un ensemble d'attributs caractrise l'tat de l'objet. Un ensemble d'oprations (mthodes) en dfinissent le comportement. Un objet est une instance de classe (une occurrence d'un type abstrait).
-9Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
Une classe est un type de donnes abstrait, caractris par des proprits (attributs et mthodes) communes des objets et permettant de crer des objets possdant ces proprits.
Exemple :
I-A-2 - Quels sont les autres concepts importants de l'approche objet ? I-A-2-a - Encapsulation
Consiste masquer les dtails d'implmentation d'un objet, en dfinissant une interface. L'interface est la vue externe d'un objet, elle dfinit les services accessibles (offerts) aux utilisateurs de l'objet. L'encapsulation facilite l'volution d'une application car elle stabilise l'utilisation des objets : on peut modifier l'implmentation des attributs d'un objet sans modifier son interface. L'encapsulation garantit l'intgrit des donnes, car elle permet d'interdire l'accs direct aux attributs des objets (utilisation d'accesseurs).
Polymorphisme, exemple :
Vehicule convoi[3] = { Train("TGV"), Voiture("twingo"), Bateau("Titanic") }; for (int i = 0; i < 3; i++) { convoi[i].seDeplacer(); }
- 11 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
I-A-2-c - Agrgation
Il s'agit d'une relation entre deux classes, spcifiant que les objets d'une classe sont des composants de l'autre classe. Une relation d'agrgation permet donc de dfinir des objets composs d'autres objets. L'agrgation permet d'assembler des objets de base, afin de construire des objets plus complexes.
Agrgation, exemple :
- 12 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
l'agrgation (la construction d'objets l'aide d'objets) Remarque : Les langages orients objet fournissent de nombreux autres mcanismes qui affinent ces concepts de base, favorisent la gnricit du code ou amliorent sa robustesse.
De nombreux langages orients objets acadmiques ont tays les concepts objets : Eiffel, Objective C, Loops... Les concepts objet sont anciens, mais ils n'ont jamais t autant d'actualit L'approche fonctionnelle n'est pas adapte au dveloppement d'applications qui voluent sans cesse et dont la complexit croit continuellement. L'approche objet a t invente pour faciliter l'volution d'applications complexes. De nos jours, les outils orients objet sont fiables et performants Les compilateurs C++ produisent un code robuste et optimis. De trs nombreux outils facilitent le dveloppement d'applications C++ : gnrateurs d'IHM (Ilog Views, TeleUse...) bibliothques (STL, USL, Rogue Wave, MFC...) environnements de dveloppement intgrs (Developper Studio, Sniff+...) outils de qualimtrie et de tests (Cantata++, Insure++, Logiscope...) bases de donnes orientes objet (O2, ObjectStore, Versant...)
I-A-2-f - L'approche objet : une solution parfaite ? En rsum, l'approche objet c'est :
Un ensemble de concepts stables, prouvs et normaliss. Une solution destine faciliter l'volution d'applications complexes. Une panoplie d'outils et de langages performants pour le dveloppement
Oui, MAIS.. Malgr les apparences, il est plus naturel pour nos esprits cartsiens, de dcomposer un problme informatique sous forme d'une hirarchie de fonctions atomiques et de donnes, qu'en terme d'objets et d'interaction entre ces objets. De plus, le vocabulaire prcis est un facteur d'chec important dans la mise en oeuvre d'une approche objet.
- 13 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
L'approche objet est moins intuitive que l'approche fonctionnelle ! Quels moyens utiliser pour faciliter l'analyse objet ? Quels critres identifient une conception objet pertinente ? Comment comparer deux solutions de dcoupe objet d'un systme ? L'application des concepts objets ncessite une grande rigueur ! Le vocabulaire est prcis (risques d'ambiguts, d'incomprhensions). Comment dcrire la structure objet d'un systme de manire pertinente ?
Les premiers consensus (1995) OMT (James Rumbaugh) : vues statiques, dynamiques et fonctionnelles d'un systme Issue du centre de R&D de General Electric. Notation graphique riche et lisible.
OOD (Grady Booch) : vues logiques et physiques du systme Dfinie pour le DOD, afin de rationaliser de dveloppement d'applications ADA, puis C++. Ne couvre pas la phase d'analyse dans ses 1res versions (prconise SADT). Introduit le concept de package (lment d'organisation des modles)
- 14 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
OOSE (Ivar Jacobson) : couvre tout le cycle de dveloppement Issue d'un centre de dveloppement d'Ericsson, en Sude. La mthodologie repose sur l'analyse des besoins des utilisateurs.
L'unification et la normalisation des mthodes (1995-1997) UML (Unified Modeling Langage), la fusion et synthse des mthodes dominantes :
UML aujourd'hui : un standard incontournable UML est le rsultat d'un large consensus (industriels, mthodologistes...). UML est le fruit d'un travail d'experts reconnus. UML est issu du terrain. UML est riche (il couvre toutes les phases d'un cycle de dveloppement). UML est ouvert (il est indpendant du domaine d'application et des langages d'implmentation). Aprs l'unification et la standardisation, bientt l'industrialisation d'UML : les outils qui supportent UML se multiplient (GDPro, ObjectTeam, Objecteering, OpenTool, Rational Rose, Rhapsody, STP, Visio, Visual Modeler, WithClass...). XMI (format d'change standard de modles UML).
UML volue mais reste stable ! L'OMG RTF (nombreux acteurs industriels) centralise et normalise les volutions d'UML au niveau international. Les groupes d'utilisateurs UML favorisent le partage des expriences. De version en version, UML gagne en maturit et prcision, tout en restant stable. UML inclut des mcanismes standards d'auto-extension. La description du mtamodle d'UML est standardise (OMG-MOF).
- 15 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
I-C - Avantages et inconvnients d'UML I-C-1 - Les points forts d'UML UML est un langage formel et normalis
gain de prcision gage de stabilit encourage l'utilisation d'outils
- 16 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
- 17 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
- 18 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
Caractristiques fondamentales des modles Le caractre abstrait d'un modle doit notamment permettre : de faciliter la comprhension du systme tudi > Un modle rduit la complexit du systme tudi. de simuler le systme tudi > Un modle reprsente le systme tudi et reproduit ses comportements. Un modle rduit (dcompose) la ralit, dans le but de disposer d'lments de travail exploitables par des moyens mathmatiques ou informatiques : modle / ralit ~ digital / analogique
D'aprs les auteurs d'UML, un processus de dveloppement qui possde ces qualits devrait favoriser la russite d'un projet.
Le but est de mieux matriser la part d'inconnu et d'incertitudes qui caractrisent les systmes complexes.
II-B-2 - Une dmarche pilote par les besoins des utilisateurs ? Avec UML, ce sont les utilisateurs qui guident la dfinition des modles :
Le primtre du systme modliser est dfini par les besoins des utilisateurs (les utilisateurs dfinissent ce que doit tre le systme). Le but du systme modliser est de rpondre aux besoins de ses utilisateurs (les utilisateurs sont les clients du systme).
Les besoins des utilisateurs servent aussi de fil rouge, tout au long du cycle de dveloppement (itratif et incrmental) :
A chaque itration de la phase d'analyse, on clarifie, affine et valide les besoins des utilisateurs.
- 19 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
A chaque itration de la phase de conception et de ralisation, on veille la prise en compte des besoins des utilisateurs. A chaque itration de la phase de test, on vrifie que les besoins des utilisateurs sont satisfaits.
II-B-4 - Dfinir une architecture avec UML (dtail de la "vue 4+1") La vue logique
Cette vue de haut niveau se concentre sur l'abstraction et l'encapsulation, elle modlise les lments et mcanismes principaux du systme. Elle identifie les lments du domaine, ainsi que les relations et interactions entre ces lments : les lments du domaine sont lis au(x) mtier(s) de l'entreprise, ils sont indispensables la mission du systme, ils gagnent tre rutiliss (ils reprsentent un savoir-faire). Cette vue organise aussi (selon des critres purement logiques), les lments du domaine en "catgories" : pour rpartir les tches dans les quipes, regrouper ce qui peut tre gnrique, isoler ce qui est propre une version donne, etc...
- 20 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
La vue de dploiement
Cette vue trs importante dans les environnements distribus, dcrit les ressources matrielles et la rpartition du logiciel dans ces ressources := La disposition et nature physique des matriels, ainsi que leurs performances. L'implantation des modules principaux sur les noeuds du rseau. Les exigences en terme de performances (temps de rponse, tolrance aux fautes et pannes...).
OK OK , mais en pratique ?
Bien qu'UML n'est pas un processus, il facilite une dmarche d'analyse itrative et incrmentale, base sur les niveaux d'abstraction. Les niveaux d'abstraction permettent de structurer les modles. Un micro-processus rgit les itrations niveau d'abstraction constant. Un macro-processus rgit le passage de niveau niveau. Une dmarche incrmentale consiste construire les modles de spcification et de conception en plusieurs tapes (cible = catgories).
- 21 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
Le schma ci-dessous montre les niveaux d'abstraction principaux, qu'on peut identifier dans un processus de dveloppement logiciel :
II-B-6 - Elaboration plutt que transformation UML opte pour l'laboration des modles, plutt que pour une approche qui impose une barrire stricte entre analyse et conception :
Les modles d'analyse et de conception ne diffrent que par leur niveau de dtail, il n'y a pas de diffrence dans les concepts utiliss. UML n'introduit pas d'lments de modlisation propres une activit (analyse, conception...) ; le langage reste le mme tous les niveaux d'abstraction.
- 22 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
Il ne faut pas chercher l'exhaustivit, mais clarifier, filtrer et organiser les besoins ! Le but de la conceptualisation est : de dfinir le contour du systme modliser (de spcifier le "quoi"), de capturer les fonctionnalits principales du systme, afin d'en fournir une meilleure comprhension (le modle produit sert d'interface entre les acteurs du projet), de fournir une base la planification du projet.
Analyse du domaine
L'entre de l'analyse ce niveau, est le modle des besoins clients (les "cas d'utilisation" UML). Il s'agit de modliser les lments et mcanismes principaux du systme. On identifie les lments du domaine, ainsi que les relations et interactions entre ces lments : les lments du domaine sont lis au(x) mtier(s) de l'entreprise, ils sont indispensables la mission du systme, ils gagnent tre rutiliss (ils reprsentent un savoir-faire). A ce stade, on organise aussi (selon des critres purement logiques), les lments du domaine en "catgories" : pour rpartir les tches dans les quipes, regrouper ce qui peut tre gnrique, etc...
Analyse applicative
A ce niveau, on modlise les aspects informatiques du systme, sans pour autant rentrer dans les dtails d'implmentation. Les interfaces des lments de modlisation sont dfinis (cf. encapsulation). Les relations entre les lments des modles sont dfinies. Les lments de modlisation utiliss peuvent tre propres une version du systme.
Conception
On y modlise tous les rouages d'implmentation et on dtaille tous les lments de modlisation issus des niveaux suprieurs. Les modles sont optimiss, car destins tre implments.
recherchez les connexions smantiques et les relations d'utilisation, documentez les relations (nom, cardinalits, contraintes, rles des classes...), en spcification, filtrez les relations instables ou d'implmentation, dfinissez la dynamique des relations entre objets (les interactions entre instances de classes et les activits associes).
- 24 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
Un type de diagramme UML vhicule une smantique prcise (un type de diagramme offre toujours la mme vue d'un systme). Combins, les diffrents types de diagrammes UML offrent une vue complte des aspects statiques et dynamiques d'un systme. Par extension et abus de langage, un diagramme UML est aussi un modle (un diagramme modlise un aspect du modle global).
Vues statiques du systme : diagrammes de cas d'utilisation diagrammes d'objets diagrammes de classes diagrammes de composants diagrammes de dploiement
- 25 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
Vues dynamiques du systme : diagrammes de collaboration diagrammes de squence diagrammes d'tats-transitions diagrammes d'activits
II-C - Les vues statiques d'UML II-C-1 - LES CAS D'UTILISATION II-C-1-a - La conceptualisation : rappel
Le but de la conceptualisation est de comprendre et structurer les besoins du client. Il ne faut pas chercher l'exhaustivit, mais clarifier, filtrer et organiser les besoins ! Une fois identifis et structurs, ces besoins : dfinissent le contour du systme modliser (ils prcisent le but atteindre), permettent d'identifier les fonctionnalits principales (critiques) du systme. Le modle conceptuel doit permettre une meilleure comprhension du systme. Le modle conceptuel doit servir d'interface entre tous les acteurs du projet. Les besoins des clients sont des lments de traabilit dans un processus intgrant UML.
- 26 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
Ils servent de base la traabilit des exigences d'un systme dans un processus de dveloppement intgrant UML.
Il tait une fois... Le modle conceptuel est le type de diagramme UML qui possde la notation la plus simple ; mais paradoxalement c'est aussi celui qui est le plus mal compris ! Au dbut des annes 90, Ivar Jacobson (inventeur de OOSE, une des mthodes fondatrices d'UML) a t nomm chef d'un norme projet informatique chez Ericsson. Le hic, c'est que ce projet tait rapidement devenu ingrable, les ingnieurs d'Ericsson avaient accouch d'un monstre. Personne ne savait vraiment quelles taient les fonctionnalits du produit, ni comment elles taient assures, ni comment les faire voluer... Classique lorsque les commerciaux promettent monts et merveilles tous les clients qu'ils dmarchent, sans se soucier des contraintes techniques, que les clients ne savent pas exprimer leurs besoins et que les ingnieurs n'ont pas les ressources pour dvelopper le mouton cinq pattes qui rsulte de ce chaos. Pour viter de foncer droit dans un mur et mener bien ce projet critique pour Ericsson, Jacobson a eu une ide. Plutt que de continuer construire une tour de Babel, pourquoi ne pas remettre plat les objectifs rels du projet ? En d'autres termes : quels sont les besoins rels des clients, ceux qui conditionneront la russite du projet ? Ces besoins critiques, une fois identifis et structurs, permettront enfin de cerner "ce qui est important pour la russite du projet". Le bnfice de cette dmarche simplificatrice est double. D'une part, tous les acteurs du projet ont une meilleure comprhension du systme dvelopper, d'autre part, les besoins des utilisateurs, une fois clarifis, serviront de fil rouge, tout au long du cycle de dveloppement. A chaque itration de la phase d'analyse, on clarifie, affine et valide les besoins des utilisateurs ; chaque itration de la phase de conception et de ralisation, on veille la prise en compte des besoins des utilisateurs et chaque itration de la phase de test, on vrifie que les besoins des utilisateurs sont satisfaits. Simple mais gnial. Pour la petite histoire, sachez que grce cette dmarche initie par Jacobson, Ericsson a russi mener bien son projet et a gagn une notorit internationale dans le march de la commutation. Morale de cette histoire : La dtermination et la comprhension des besoins sont souvent difficiles car les intervenants sont noys sous de trop grandes quantits d'informations. Or, comment mener bien un projet si l'on ne sait pas o l'on va ? Conclusion : il faut clarifier et organiser les besoins des clients (les modliser).
Les use cases, permettent de modliser les besoins des clients d'un systme et doivent aussi possder ces caractristiques. Ils ne doivent pas chercher l'exhaustivit, mais clarifier, filtrer et organiser les besoins !
- 27 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
Les use cases ne doivent donc en aucun cas dcrire des solutions d'implmentation. Leur but est justement d'viter de tomber dans la drive d'une approche fonctionnelle, o l'on liste une litanie de fonctions que le systme doit raliser. Bien entendu, rien n'interdit de grer l'aide d'outils (Doors, Requisite Pro, etc...) les exigences systmes un niveau plus fin et d'en assurer la traabilit, bien au contraire. Mais un modle conceptuel qui identifie les besoins avec un plus grand niveau d'abstraction reste indispensable. Avec des systmes complexes, filtrer l'information, la simplifier et mieux l'organiser, c'est rendre l'information exploitable. Produisez de l'information phmre, complexe et confuse, vous obtiendrez un joyeux "dsordre" (pour rester poli). Dernire remarque : Utilisez les use cases tels qu'ils ont t pens par leurs crateurs ! UML est issu du terrain. Si vous utilisez les use cases sans avoir en tte la dmarche sous-jacente, vous n'en tirerez aucun bnfice.
II-C-1-c - Elments de base des cas d'utilisation Acteur : entit externe qui agit sur le systme (oprateur, autre systme...).
L'acteur peut consulter ou modifier l'tat du systme. En rponse l'action d'un acteur, le systme fournit un service qui correspond son besoin. Les acteurs peuvent tre classs (hirarchiss).
Use case : ensemble d'actions ralises par le systme, en rponse une action d'un acteur.
Les uses cases peuvent tre structurs. Les uses cases peuvent tre organiss en paquetages (packages). L'ensemble des use cases dcrit les objectifs (le but) du systme.
II-C-1-d - Exemples
Cas d'utilisation standard :
- 28 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
Relation d'utilisation :
- 29 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
Relation d'extension :
- 30 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
- 31 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
- 33 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
Attention : ne confondez pas l'lment de modlisation "collaboration" avec le diagramme de collaboration, qui reprsente des interactions entre instances de classes.
- 34 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
- 35 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
Exemple :
- 36 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
- 37 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
- 38 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
- 39 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
Rles : spcifie la fonction d'une classe pour une association donne (indispensable pour les associations rflexives).
- 40 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
Relation de dpendance : relation d'utilisation unidirectionnelle et d'obsolescence (une modification de l'lment dont on dpend, peut ncessiter une mise jour de l'lment dpendant).
Association navigabilit restreinte Par dfaut, une association est navigable dans les deux sens. La rduction de la porte de l'association est souvent ralise en phase d'implmentation, mais peut aussi tre exprime dans un modle pour indiquer que les instances d'une classe ne "connaissent" pas les instances d'une autre.
- 41 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
Association n-aire : il s'agit d'une association qui relie plus de deux classes... Note : de telles associations sont difficiles dchiffrer et peuvent induire en erreur. Il vaut mieux limiter leur utilisation, en dfinissant de nouvelles catgories d'associations.
Classe d'association : il s'agit d'une classe qui ralise la navigation entre les instances d'autres classes.
- 42 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
Qualification : permet de slectionner un sous-ensemble d'objets, parmi l'ensemble des objets qui participent une association. La restriction de l'association est dfinie par une cl, qui permet de slectionner les objets cibls.
II-C-6-d - Hritage
Les hirarchies de classes permettent de grer la complexit, en ordonnant les objets au sein d'arborescences de classes, d'abstraction croissante.
Spcialisation
Dmarche descendante, qui consiste capturer les particularits d'un ensemble d'objets, non discrimins par les classes dj identifies. Consiste tendre les proprits d'une classe, sous forme de sous-classes, plus spcifiques (permet l'extension du modle par rutilisation).
Gnralisation
Dmarche ascendante, qui consiste capturer les particularits communes d'un ensemble d'objets, issus de classes diffrentes. Consiste factoriser les proprits d'un ensemble de classes, sous forme d'une super-classe, plus abstraite (permet de gagner en gnricit).
- 43 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
Classification
L'hritage (spcialisation et gnralisation) permet la classification des objets. Une bonne classification est stable et extensible : ne classifiez pas les objets selon des critres instables (selon ce qui caractrise leur tat) ou trop vagues (car cela gnre trop de sous-classes). Les critres de classification sont subjectifs. Le principe de substitution (Liksow, 1987) permet de dterminer si une relation d'hritage est bien employe pour la classification : "Il doit tre possible de substituer n'importe quel instance d'une super-classe, par n'importe quel instance d'une de ses sous-classes, sans que la smantique d'un programme crit dans les termes de la super-classe n'en soit affecte." Si Y hrite de X, cela signifie que "Y est une sorte de X" (analogies entre classification et thorie des ensembles).
II-C-6-e - Agrgation
L'agrgation est une association non symtrique, qui exprime un couplage fort et une relation de subordination. Elle reprsente une relation de type "ensemble / lment". UML ne dfinit pas ce qu'est une relation de type "ensemble / lment", mais il permet cependant d'exprimer cette vue subjective de manire explicite. Une agrgation peut notamment (mais pas ncessairement) exprimer : qu'une classe (un "lment") fait partie d'une autre ("l'agrgat"), qu'un changement d'tat d'une classe, entrane un changement d'tat d'une autre, qu'une action sur une classe, entrane une action sur une autre. A un mme moment, une instance d'lment agrg peut tre lie plusieurs instances d'autres classes (l'lment agrg peut tre partag). Une instance d'lment agrg peut exister sans agrgat (et inversement) : les cycles de vies de l'agrgat et de ses lments agrgs peuvent tre indpendants.
- 44 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
II-C-6-f - Composition
La composition est une agrgation forte (agrgation par valeur). Les cycles de vies des lments (les "composants") et de l'agrgat sont lis : si l'agrgat est dtruit (ou copi), ses composants le sont aussi. A un mme moment, une instance de composant ne peut tre lie qu' un seul agrgat. Les "objets composites" sont des instances de classes composes.
- 45 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
II-C-6-h - Interfaces
Une interface fournit une vue totale ou partielle d'un ensemble de services offerts par une classe, un paquetage ou un composant. Les lments qui utilisent l'interface peuvent exploiter tout ou partie de l'interface. Dans un modle UML, le symbole "interface" sert identifier de manire explicite et symbolique les services offerts par un lment et l'utilisation qui en est faite par les autres lments.
- 46 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
- 47 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
- 48 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
II-C-6-k - OCL
UML formalise l'expression des contraintes avec OCL (Object Constraint Language). OCL est une contribution d'IBM UML 1.1.
- 49 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
Ce langage formel est volontairement simple d'accs et possde une grammaire lmentaire (OCL peut tre interprt par des outils). Il reprsente un juste milieu, entre langage naturel et langage mathmatique. OCL permet ainsi de limiter les ambiguts, tout en restant accessible. OCL permet de dcrire des invariants dans un modle, sous forme de pseudo-code : pr et post-conditions pour une opration, expressions de navigation, expressions boolennes, etc... OCL est largement utilis dans la dfinition du mtamodle UML.
Nous allons nous baser sur une tude de cas, pour introduire brivement OCL. Monsieur Formulain, directeur d'une chane d'htels, vous demande de concevoir une application de gestion pour ses htels. Voici ce que vous devez modliser : Un htel Formulain est constitu d'un certain nombre de chambres. Un responsable de l'htel gre la location des chambres. Chaque chambre se loue un prix donn (suivant ses prestations). L'accs aux salles de bain est compris dans le prix de la location d'une chambre. Certaines chambres comportent une salle de bain, mais pas toutes. Les htes de chambres sans salle de bain peuvent utiliser une salle de bain sur le palier. Ces dernires peuvent tre utilises par plusieurs htes. Les pices de l'htel qui ne sont ni des chambres, ni des salles de bain (hall d'accueil, cuisine...) ne font pas partie de l'tude (hors sujet). Des personnes peuvent louer une ou plusieurs chambres de l'htel, afin d'y rsider. En d'autre termes : l'htel hberge un certain nombre de personnes, ses htes (il s'agit des personnes qui louent au moins une chambre de l'htel...). Le diagramme UML ci-dessous prsente les classes qui interviennent dans la modlisation d'un htel Formulain, ainsi que les relations entre ces classes. Attention : le modle a t rduit une vue purement statique. La dynamique de l'interaction entre instances n'est pas donne ici, pour simplifier l'exemple. Lors d'une modlisation complte, les vues dynamiques complmentaires ne devraient pas tre omises (tout comme la conceptualisation pralable par des use cases)... Remarque : cet exemple est inspir d'un article paru dans JOOP (Journal of Object Oriented Programming), en mai 99.
- 50 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
OCL permet d'enrichir ce diagramme, en dcrivant toutes les contraintes et tous les invariants du modle prsent, de manire normalise et explicite ( l'intrieur d'une note rattache un lment de modlisation du diagramme). Voici quelques exemples de contraintes qu'on pourrait dfinir sur ce diagramme, avec la syntaxe OCL correspondante. Attention ! Les exemples de syntaxe OCL ci-dessous ne sont pas dtaills, rfrez-vous au document de la norme UML adquat ("OCL spcification"). Il ne s'agit l que d'un trs rapide aperu du pouvoir d'abstraction d'OCL... Un htel Formulain ne contient jamais d'tage numro 13 (superstition oblige)
context Chambre inv: self._tage <> 13 context SalleDeBain inv: self._tage <> 13
Le nombre de personnes par chambre doit tre infrieur ou gal au nombre de lits dans la chambre loue. Les enfants (accompagns) de moins de 4 ans ne 'comptent pas' dans cette rgle de calcul ( hauteur d'un enfant de moins de 4 ans maximum par chambre)
context Chambre inv: client->size <= _nbDeLits or (client->size = _nbDeLits + 1 and client->exists(p : Personne | p._ge < 4)) - 51 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
L'tage de chaque chambre est compris entre le premier et le dernier tage de l'htel
context Htel inv: self.chambre->forAll(c : Chambre | c._tage <= self._tageMax and c._tage >= self._tageMin)
Chaque tage possde au moins une chambre (sauf l'tage 13, qui n'existe pas...)
context Htel inv: Sequence{_tageMin.._tageMax}->forAll(i : Integer | if i <> 13 then self.chambre->select(c : Chambre | c._tage = i)->notEmpty) endif)
On ne peut repeindre une chambre que si elle n'est pas loue. Une fois repeinte, une chambre cote 10% de plus
context Chambre::repeindre(c : Couleur) pre: client->isEmpty post: _prix = _prix@pre * 1.1
Une salle de bain privative ne peut tre utilise que par les personnes qui louent la chambre contenant la salle de bain et une salle de bain sur le palier ne peut tre utilise que par les clients qui logent sur le mme palier
context SalleDeBain::utiliser(p : Personne) pre: if chambre->notEmpty then chambre.client->includes(p) else p.chambre._tage = self._tage endif post: _nbUtilisateurs = _nbUtilisateurs@pre + 1
Le loyer de l'htel est gal la somme du prix de toutes les chambres loues
context Htel::calculerLoyer() : rel pre: post: result = self.chambre->select(client->notEmpty)._prix->sum
II-C-6-l - Strotypes
Les strotypes permettent d'tendre la smantique des lments de modlisation : il s'agit d'un mcanisme d'extensibilit du mtamodle d'UML. Les strotypes permettent de dfinir de nouvelles classes d'lments de modlisation, en plus du noyau prdfini par UML. Utilisez les strotypes avec modration et de manire concerte (notez aussi qu'UML propose de nombreux strotypes standards).
- 52 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
- 53 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
Les dpendances entre composants permettent notamment d'identifier les contraintes de compilation et de mettre en vidence la rutilisation de composants. Le composants peuvent tre organiss en paquetages, qui dfinissent des sous-systmes. Les sous-systmes organisent la vue des composants (de ralisation) d'un systme. Ils permettent de grer la complexit, par encapsulation des dtails d'implmentation.
Modules (notation) :
- 54 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
- 55 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
Les diagrammes de dploiement correspondent la vue de dploiement d'une architecture logicielle (vue "4+1").
- 56 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
Exemples :
- 57 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
pr : prdcesseurs (liste de numros de squence de messages spars par une virgule ; voir aussi "sq"). Indique que le message courant ne sera envoy que lorsque tous ses prdcesseurs le seront aussi (permet de synchroniser l'envoi de messages). cond : garde, expression boolenne. Permet de conditionner l'envoi du message, l'aide d'une clause exprime en langage naturel.
- 58 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
sq : numro de squence du message. Indique le rang du message, c'est--dire son numro d'ordre par rapport aux autres messages. Les messages sont numrots la faon de chapitres dans un document, l'aide de chiffres spars par des points. Ainsi, il est possible de reprsenter le niveau d'embotement des messages et leur prcdence. Exemple : l'envoi du message 1.3.5 suit immdiatement celui du message 1.3.4 et ces deux messages font partie du flot (de la famille de messages) 1.3. Pour reprsenter l'envoi simultan de deux messages, il suffit de les indexer par une lettre. Exemple : l'envoi des messages 1.3.a et 1.3.b est simultan. iter : rcurrence du message. Permet de spcifier en langage naturel l'envoi squentiel (ou en parallle, avec "||") de messages. Notez qu'il est aussi possible de spcifier qu'un message est rcurrent en omettant la clause d'itration (en n'utilisant que "*" ou "*||"). r : valeur de retour du message. Permet d'affecter la valeur de retour d'un message, pour par exemple la retransmettre dans un autre message, en tant que paramtre. msg : nom du message. par : paramtres (optionnels) du message.
Reprsente l'envoi en parallle de 5 messages. Ces messages ne seront envoys qu'aprs l'envoi du message 3
3 / *||[i := 1..5] : fermer()
Ce message (numro 2.5) ne sera envoy qu'aprs les messages 1.3 et 2.1, et que si 't < 10s'
1.3,2.1 / [t < 10s] 2.5 : age := demanderAge(nom,prenom)
Ces messages ne seront envoys qu'aprs l'envoi du message 1.3 et si la condition 'disk full' est ralise. Si cela est le cas, les messages 1.7.a et 1.7.b seront envoys simultanment. Plusieurs messages 1.7.a peuvent tre envoys.
1.3 / [disk full] 1.7.a * : deleteTempFiles() 1.3 / [disk full] 1.7.b : reduceSwapFile(20%)
- 59 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
Cette extension des diagrammes de collaboration permet notamment de reprsenter des communications entre processus ou l'excution de threads.
Exemple :
- 60 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
- 61 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
N'interrompt pas l'excution de l'expditeur. Le message envoy peut tre pris en compte par le rcepteur tout moment ou ignor (jamais trait). message drobant N'interrompt pas l'excution de l'expditeur et ne dclenche une opration chez le rcepteur que s'il s'est pralablement mis en attente de ce message.
- 62 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
Commentaires :
Ne confondez la priode d'activation d'un objet avec sa cration ou sa destruction. Un objet peut tre actif plusieurs fois au cours de son existence (voir exemple ci-dessus). Le pseudo-code peut aussi tre utilis pour indiquer des itrations (avec incrmentation d'un paramtre d'un message par exemple). Le retour des messages asynchrones devrait toujours tre matrialis, lorsqu'il existe. Notez qu'il est fortement recommand de synchroniser vos messages, comme sur l'exemple qui suit... L'exemple qui suit prsente aussi une alternative intressante pour la reprsentation des branchements conditionnels. Cette notation est moins lourde que celle utilise dans l'exemple ci-dessus. Prfrez aussi l'utilisation de contraintes celle de pseudo-code, comme dans l'exemple qui suit.
- 63 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
- 64 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
Commentaire : Un message rflexif ne reprsente pas l'envoi d'un message, il reprsente une activit interne l'objet (qui peut tre dtaille dans un diagramme d'activits) ou une abstraction d'une autre interaction (qu'on peut dtailler dans un autre diagramme de squence).
transition conditionnelle :
- 65 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
En phase de lustrage ou de lavage, le client peut appuyer sur le bouton d'arrt d'urgence. S'il appuie sur ce bouton, la machine se met en attente. Il a alors deux minutes pour reprendre le lavage ou le lustrage (la machine continue en phase de lavage ou de lustrage, suivant l'tat dans lequel elle a t interrompue), sans quoi la machine s'arrte. En phase de schage, le client peut aussi interrompre la machine. Mais dans ce cas, la machine s'arrtera dfinitivement (avant de reprendre un autre cycle entier).
souches : afin d'introduire plus d'abstraction dans un diagramme d'tats-transitions complexe, il est possible de rduire la charge d'information, tout en matrialisant la prsence de sous-tats, l'aide de souches, comme dans l'exemple ci-dessous.
- 66 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
- 67 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
Remarque : Attention, les actions attaches aux clauses "entry" et "exit" ne sont pas excutes si l'vnement spcifi dans la clause "on" survient. Pour indiquer qu'elles peuvent tre excutes plusieurs fois l'arrive d'un vnement, reprsentez l'arrive d'un vnement rflexif, comme suit :
- 68 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
Dans l'exemple ci-dessus, l'automate K est compos des sous-automates L et M. L et M s'activent simultanment et voluent en parallle. Au dpart, l'objet dont on modlise les tats par l'automate K est dans l'tat composite (E-L1, E-M1). Aprs l'vnement Tr1, K passe dans l'tat composite (E-L2, E-M2). Par la suite, si l'vnement Tr2 survient, K passe dans l'tat composite (E-L3, E-M2). Si c'est Tr4 qui survient, M ne passe pas dans l'tat E-M1, car cette transition est contrainte par l'tat de L ("[in E-L3]"). Dans l'tat composite (E-L3, E-M2), si Tr3 survient, K passe dans l'tat composite (E-L2, E-M2). Si c'est Tr4 qui survient, K passe dans l'tat composite (E-L3, E-M1). Et ainsi de suite... Attention : la numrotation des vnements n'est pas significative. Pour synchroniser les sous-automates d'une agrgation d'tats, il faut contraindre les transitions, comme dans l'exemple ci-dessus ("[in E-L3]").
- 69 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
- 70 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
Il est aussi possible de reprsenter l'change de messages entre automates dans un diagramme d'tats-transitions. Cette notation particulire n'est pas prsente ici. Veuillez vous rfrer "l'UML notation guide".
Pour reprsenter des transitions conditionnelles, utilisez des gardes (expressions boolennes exprimes en langage naturel), comme dans l'exemple suivant :
II-D-4-b - Synchronisation
Il est possible de synchroniser les transitions l'aide des "barres de synchronisation" (comme dans les diagrammes d'tats-transitions).
- 71 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
Une barre de synchronisation permet d'ouvrir et de fermer des branches parallles au sein d'un flot d'excution :
Les transitions qui partent d'une barre de synchronisation ont lieu en mme temps. On ne franchit une barre de synchronisation qu'aprs ralisation de toutes les transitions qui s'y rattachent.
- 72 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
- 73 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
>> Concevoir objet, c'est d'abord concevoir un modle qui respecte les concepts objet ! >> Le langage et UML ne sont que des outils.
- 74 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/
- 75 Copyright 2007 - Laurent Piechocki. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://laurent-piechocki.developpez.com/uml/tutoriel/lp/cours/