[1]
MISSION D’EVANGELISATION PROTESTANTE AU CONGO
UNIVERSITE REVEREND KIM
FACULTE D’INFORMATIQUE DE GESTION
B.P. 171 KINSHASA XX
KINSHASA/NDJILI-LINGWALA
SUPPORT DE CONCEPTION DES
SYSTEMES D’INFORMATION
PROF. Richard KITONDUA L.N.N
ASS. Deack KINKONKO
PLAN
Chapitre I Courant systémique
Notions et définitions du système ;
Le système d’information.
Chapitre II Les Outils de développement d’un système informatique
Les modèles ;
Les approches;
Les méthodes.
Chapitre III Conception orientée-objet d’un système informatique
Approche fonctionnelle vs. approche objet ;
Concepts importants de l’approche objet ;
Historique la programmation par objets ;
L’approche orientée objet.
Chapitre IV la Modélisation avec UML
Introduction ;
Les objectifs d’UML ;
UML est la modélisation par objets.
Chapitre V les méthodes Agiles
Introduction ;
UP ;
RAD.
[1]
INTRODUCTION
Méthodes pédagogiques
Cours magistral, étude de cas, projets
Contrôle des connaissances
Contrôle continu au travers des travaux pratiques et des interrogations.
Examen final.
Projet final.
Durée
60 heures dont 45 heures de cours, et 15 heures de travaux pratiques.
Objectifs :
Après un rappel de la démarche UML (1.X et 2.X) les objectifs seront :
Comprendre la représentation et l’intérêt d’utilisation de chaque
diagramme ;
Positionner des méthodes et des méthodologies dans une
démarche de production de logiciel ;
Savoir progresser de l’analyse à la conception et assimiler un
raisonnement itératif et incrémental basé sur les cas d’utilisation ;
Analyser et concevoir un projet Objet avec une méthode agile.
[2]
CHAPITRE I COURANT SYSTEMIQUE
[Link] et définitions du système
I.1.1. Définitions
Le concept « système » relève du courant systémique qui
consiste à aborder tout phénomène comme faisant de l’unité, c'est-à-dire
la vision « tout dans un ».
Le courant systémique a révolutionné l’analyse des phénomènes
dans tous les secteurs de la vie ; le domaine de la gestion n’étant du
reste.
Il est polysémique, du fait de son utilisation dans plusieurs
secteurs de la vie.
Ainsi, il n’existe pas une définition classique du concept
« système », mais des approches définitionnelles orientées vers un
secteur d’activités.
Dans le domaine de gestion, l’approche définitionnelle du
concept système est orientée vers le point de vue de LEIBNIZ, complétés
par BERTANLAFFY et enrichi par ROSNAY, partant Jean-Louis
LEMOIGNE.
Selon LEMOIGNE, le système c’est quelque chose qui fait quelque
chose dotée d’une structure, évoluant dans le temps dans
quelque chose pour quelque chose.
Jean-Louis LEMOIGNE (né le 22 mars 1931 à Casablanca) est
un spécialiste français de la systémique et de l’épistémologie
constructiviste. Ses domaines de recherche théorique
privilégiés sont les sciences des systèmes, de l'ingénierie, de
l'intelligence artificielle. La thématique parcourt les sujets de
l'organisation, l'information, la décision. Au niveau humain, la
cognition et la communication sont au cœur de ses intérêts.
Globalement, on peut le qualifier, aux côtés d'Edgar Morin,
comme un chercheur des sciences de la complexité. Il fut
d'abord ingénieur, puis professeur d’université, jusqu’à devenir
Professeur Emérite à l’Université d'Aix-Marseille.
Selon LEIBNIZ, un système est un ensemble d’éléments.
Gottfried Leibniz est plus qu'un grand scientifique allemand. Tout
à tour philosophe, juriste, historien, diplomate, c'est un grand
homme universel de son temps, pacifiste, rêvant de réunifier les
églises catholiques et protestantes, et de rapprocher les peuples
d'Europe.
Il est né le 1er juillet 1646 à Leipzig, dans une Allemagne qui peine
à panser ses plaies de la guerre de 30 ans. Très vite, il montre des
aptitudes exceptionnelles à l'apprentissage, d'ailleurs en grande
partie autodidacte : à 15 ans, il connait la littérature grecque et
latine, et a lu Descartes. Il rentre à l'université de Leipzig où il
étudie la philosophie, les mathématiques (assez pauvrement
enseignés), le droit. En 1666, le titre de docteur lui est refusé,
probablement en raison de son trop jeune âge. Leibniz quitte alors
l'Université de Leipzig pour celle d'Altdorf, où il devient docteur en
1667. Il ne cherche pas à trouver un poste universitaire, et préfère
rentrer au service du baron von Boyne burg, à Francfort.
Selon VON BERTANLAFFY, un système est un ensemble des
parties qui interagissent entre eux.
Karl Ludwig von Bertalanffy (Né le 19 septembre 1901 à
Atzgersdorf maintenant liesing près de Vienne, Autriche et
mort le 12 juin1972 à Buffalo, New York aux États-Unis) était
un médecin, neurophysiologiste et biologiste d'origine
autrichienne connu comme le fondateur de la Théorie
systémique grâce à son ouvrage General System Theory.
Il a été un chercheur brillant abordant de multiples domaines :
biologie expérimentale et théorique, épistémologie,
philosophie, psychiatrie, etc.
Il a d'abord travaillé à Vienne puis à Londres, et enfin au
Canada et aux États-Unis.
Selon Joël de ROSNAY, un système est un ensemble d’éléments
vivant en interactions mutuelles et poursuivant un but commun.
Joël de Rosnay, Docteur en Sciences, est Directeur de la
Prospective et de l'Evaluation de la Cité des Sciences et de
l'Industrie de la Villette. Entre 1975 et 1984, il a été Directeur
des Applications de la Recherche à l'Institut Pasteur.
Ancien chercheur et enseignant au Massachusetts Institute of
Technology (MIT) dans le domaine de la biologie et de
l'informatique, il a été successivement Attaché Scientifique
auprès de l'Ambassade de France aux Etats-Unis et Directeur
Scientifique à la Société Européenne pour le Développement
des Entreprises (société de "Venture capital").
Joël de Rosnay est lauréat du Prix de l'Information Scientifique
1990 de l'Académie des Sciences et du prix Benjamin Constant
des Arts de la Communication 1994 de la Société
d'Encouragement de l'Industrie Nationale.
Selon MOINE CAMILE, un système est un phénomène identifiable
pratiquant la régulation, composé des sous-systèmes reliés entre
eux permettant l’action, la prise de décision et la mémorisation
des informations.
Ancien élève de l'ENSET, agrégé d'économie et gestion.
Professeur détaché à l'Université Grenoble II (en 1996). Membre
du jury de l'agrégation externe économie et gestion (en 2003).
Livres dont Camille Moine est l'auteur :
Informatique de Gestion, enseignement supérieur, BTS, DUT
tertiaires, Construire le système d'information de l'entreprise,
Informatique de gestion, processus 10, corrigé, organisation du
système d'information de gestion,
Informatique appliquée à la gestion, 1re et 2e ...
I.1.2. Types des systèmes
On peut distinguer les systèmes selon le mode de
fonctionnement et selon le domaine d’exploitation.
A. Selon le mode de fonctionnement
On distingue les systèmes ouverts et fermés.
Un système est dit « ouvert » lorsqu’il peut agir sur
l’environnement ou être influencé par l’environnement. Tandis qu’il est
dit « fermé » au cas contraire.
B. Selon le domaine d’exploitation
On distingue le système de gestion, les systèmes sociaux, les
systèmes politiques, les systèmes thermiques ou thermodynamiques.
C. Dans le domaine de gestion
Dans le domaine de gestion, nous distinguons trois types de
systèmes :
Le microsystème,
Le système,
Le supra système
a. Le micro système
C’est l’activité qui nécessite l’implication d’au moins deux
acteurs, il s’agit généralement des procédures de gestion.
b. Le système
C’est l’entreprise ou l’organisation localisé en un seul site et
dans laquelle on assiste aux interactions entre services, départements ou
directions et dont l’objectif est la recherche de la rentabilité.
c. Le supra système
Il peut être illustré par une entreprise à succursales multiples ou
organisation ayant des antennes, des représentations géographiquement
dispersées.
I.1.3. Caractéristiques d’un système
Les caractéristiques d’un système sont les suivantes :
a. Identification
Un système doit être identifiable, doit exister, on peut
facilement le séparer (ou le distinguer) des autres.
b. Information
Le système a besoin des matières, doit s’informer des
connaissances venant de quelque part.
c. Mémorisation
Un système doit stocker les connaissances.
d. Décision
Le système pose des actes par rapport à lui-même ou par
rapport à l’extérieur.
e. Agissement (réaction)
Le système agit.
f. Régulation
Le système se régule par les entrées fournies.
L’environnement agit sur le système, lui impose des contraintes, influe
sur ses objectifs et peut produire un changement d’état du système,
c'est-à-dire un changement des propriétés qui le caractérise.
I.1.4. Structuration d’un système
Du point de vue organisationnel, la structure d’un système se
présente de la manière suivante :
Décideurs
Directives SP Rapport
(Ordres) d’activités
SI
SO
Exécutants
a. Le système de pilotage
Il concerne toutes les opérations de gestion. Il définit la
politique de l’entreprise, les objectifs à atteindre et procède au contrôle
et à la régulation à travers des flux d’information.
b. Le système opérant
Il concerne les activités du système. Il exécute les ordres
provenant du système de pilotage.
c. Le système d’information
C’est le trait d’union entre le système de pilotage et le système
opérant et prend contact de ce qui vient de l’extérieur.
Il est donc constitué du flux informationnel circulant au sein de
l’entreprise ou organisation et peut recevoir les informations externes ou
communiquer les informations à l’environnement extérieur. Compte tenu
du caractère stratégique du système d’information, une étude
approfondie à ce sujet est présentée ci-après.
I.2. LE SYSTEME D’INFORMATION
I.2.1. Rôle
Dans la pratique, le rôle d’un système d’information peut être
schématisé comme suit :
INFORMATIONS INTERNES INFORMATIONS EXTERNES
ECRITES ECRITES
ORALES ORALES
PICTURALES PICTURALES
APPROBATION
TRAITEMENT BRUT
STRUCTURATION
TRAITEMENT PROPREMENT DITE
RESULTAT
DIFFUSION
UTILISATEURS
Nous pouvons donc conclure qu’un système d’information a
pour rôle de traiter, stocker, diffuser les informations mais en tenant
compte de valeur ajoutée.
I.2.2. Types
En fonction du type, il existe trois critères de classification des
systèmes d’information :
Les moyens utilisés,
Le nombre d’intervenants, et
Le niveau hiérarchique.
Selon les moyens utilisés, on distingue :
Le système manuel, lorsque la procédure est mise en charge
totalement par les hommes,
Le système mécanique, lorsqu’il y a usage des machines,
Le système automatique, lorsqu’il y a recours aux machines
programmables,
Le système informatique, lorsqu’il y a intervention des ordinateurs.
Selon le nombre d’intervenants, on distingue :
Le système individuel, lorsque la procédure et centrée autour d’une
seule personne,
Le système organisationnel, lorsque la procédure est déclenchée et
clôturée au sein de la même organisation,
Le système inter-organisationnel, lorsque la procédure est
déclenchée ailleurs pour se clôturer à l’intérieur de l’organisation et
vice-versa.
Selon le niveau hiérarchique, on distingue :
Le système stratégique, lorsque le traitement se fait au niveau des
décideurs,
Le système tactique, lorsque le traitement se fait au niveau des
cadres de collaboration,
Le système opérationnel, lorsque le traitement se fait au niveau des
exécutants.
II. le système informatique
II.1. Notions et Définition
Un système informatique est un ensemble des moyens
informatiques et de télécommunication ayant pour finalité d'élaborer,
traiter, stocker, acheminer, présenter ou détruire des données.
Il est la partie informatique du système d’information,
composée de matériels, logiciels, réseaux et procédures d’utilisation.
II.2. Qualités d’un système informatique
Un bon système informatique doit répondre aux qualités ci-
après :
a. La fiabilité, c'est-à-dire fournir les informations sans erreur,
autrement dit contenir le moins d’erreur possible.
b. La rapidité, c'est-à-dire doit mettre à temps ou dans un délai
court les informations ou résultats à la disposition des utilisateurs.
c. La pertinence, c'est-à-dire le système doit répondre aux attentes
des utilisateurs. Autrement dit, le traitement réalisé et le résultat
produit doivent être cohérents, au besoin exprimé par les
utilisateurs.
d. La sécurité, c’est à dire la protection des options car en dehors de
l’utilisation, la mise à jour du système ne peut être assurée que par
son concepteur.
II.3. Types de système informatique
On peut distinguer les systèmes informatiques soit selon le
degré d’organisation, soit selon l’architecture de traitement sachant que
le deuxième critère traduit la conséquence logique du premier.
Ainsi selon le degré d’organisation, on peut trouver le système
indépendant d’une part et le système intégré d’autre part.
Dans un système indépendant, chaque activité ou procédure
informatisé possède ses propres ressources matérielles et logicielles.
Tandis que dans un système intégré, les différentes activités dans un
service ou dans un département sont reliés entr’elles comme s’il s’agissait
d’un seul site de traitement.
Un système indépendant a comme avantage l’autonomie de
gestion mais présente comme inconvénient la multiplicité des matériels.
Selon l’architecture de traitement, on distingue le système
centralisé ou monoposte ainsi que le système multiposte ou
décentralisé, pouvant être réparti ou distribué.
Par conséquent, les systèmes décentralisés font appel à
l’architecture en réseau.
Note : Pour certains cas, il ya des entreprises qui utilisent l’architecture
mixte, c'est-à-dire certaines ressources jouissent d’une autonomie tandis
que d’autres sont distribuées.
II.4. Les composants d’un système informatique
Lorsque vous constituez un système informatique, il faut
impérativement les éléments suivants :
Les matériels,
Les logiciels,
Les procédures,
Les intervenants ou description des intervenants.
II.4.1. Les matériels
Par matériel, on entend toute la quincaillerie de l’ordinateur ou
la partie physique ainsi que la technologie utilisée.
II.4.2. Les logiciels
Par logiciel, on entend le logiciel de base, le langage de
programmation (environnement de développement des progiciels) et les
utilitaires (Word, Excel, SGBD, Photoshop, etc.).
II.4.3. Les procédures
Par procédure, on entend la présentation de la nouvelle solution
informatique, autrement dit la narration.
II.4.4. Les intervenants
Par intervenant, on entend les ressources humaines qualifiées
pour la manipulation du système installé (ou nouveau système).
II.5. Types de technologies utilisées
La technologie détermine le degré de rapprochement des
ordinateurs ainsi que le mode d’administration des informations dans
l’entreprise.
La technologie est déterminée en d’autres termes, en tenant
compte des notions de « concentration » et de « centralisation ».
Par concentration, on entend la manière dont les ordinateurs
sont disposés. Ainsi, un système informatique concentré est celui dont
tous les ordinateurs sont localisés au même endroit ; Au cas contraire, il
est déconcentré.
Par centralisation, on entend la manière dont les traitements
sont activés. Ainsi, un système informatique centralisé est celui dont tous
les traitements ont un même centre d’impulsion.
On parle généralement de l’architecture « client-serveur ».
Autrement, est un système décentralisé ; généralement appelé
« architecture monoposte ».
CHAPITRE II LES OUTILS DE DEVELOPPEMENT D’UN
SYSTEME INFORMATIQUE
La qualité du processus de fabrication est garante de la qualité
du produit. Pour obtenir un logiciel de qualité, il faut en maîtriser le
processus d'élaboration.
La vie d'un logiciel est composée de différentes étapes.
La succession de ces étapes forme le cycle de vie du logiciel. Il faut
contrôler la succession de ces différentes étapes.
Le rôle des outils est primordial pour l'utilisabilité en pratique
des langages de modélisation.
1. Les modèles
Comme dans tout domaine, le choix d'un processus de
développement est fonction des caractéristiques du futur produit ainsi
que du contexte de développement, car il faut prendre en compte des
aspects techniques, des aspects liés à l'organisation et des aspects
humains.
Ainsi les modèles décrivent les enchainements et les
interactions entre activités et permettent de définir les processus de
développement pour des projets en précisant les méthodes, outils et
autres modalités associées à chacune des activités.
Il existe donc plusieurs modèles qu’on peut retenir dans
l'histoire de développement des logiciels à savoir :
- Le modèle de la cascade,
- Le modèle en V,
- Le modèle en spirale,
- Le modèle en Y,
- Le modèle du cycle RAD
1.1. le modèle en « cascade »
Désigné également par "modèle de la chute d'eau" ou encore
en anglais « watter fall model », le modèle de la cascade est très simple
car il obéit au principe selon lequel "une étape doit se terminer à une
certaine date par la production de certains documents ou logiciels; et les
résultats de l'étape sont soumis à une revue approfondie tel qu'on ne
passe à l'étape suivante que quand ils sont jugés satisfaisants.
L'interaction entre étapes et activités sert de base pour définir
les résultats requis de chaque étape.
Faisabilité
Analyse besoins,
Planification
Conception du produit
Conception détaillée
Codage
Intégration
Installation
Exploitation et
maintenance
Dans sa première version, le modèle ne comportait que les
flèches descendantes, qui matérialisent l’enchaînement des étapes, et ne
prévoyait pas d’itérations. Les flèches ascendantes ont été rajoutées par
la suite et expriment le principe qu’une étape ne remet en cause que
l’étape précédente. Dans les faits, ce principe reste souvent un vœu pieux
et il a toujours des problèmes qui se propagent de bas en haut.
Les versions actuelles de ce modèle font apparaître la
validation-vérification dans chaque étape. On trouve donc
successivement :
- avec la faisabilité et l’analyse des besoins de la validation ;
- avec la conception du produit et la conception détaillée, de la
vérification ;
- avec le codage, du test unitaire ;
- avec l’intégration, du test d’intégration, puis du test d’acceptation ;
- avec l’installation, du test système.
1.2. le modèle en « V»
Le modèle prend en charge le plus rapidement possible une
erreur et l'ensemble de ses conséquences. Il part d'une conception
générale et décompose systématiquement le système en sous-ensemble
(dé coupage structurel) qui seront développés et testés séparément Son
schéma se présente de la manière suivante :
1.3. Le modèle en spirale.
Le modèle en spirale, proposé par [Link] en 1988, est
beaucoup plus général que les précédents et peut les inclure.
Il met l’accent sur une activité particulière, l’analyse des risques : chaque
cycle de la spirale se déroule en quatre phases représentées par des
quadrants :
1. détermination des objectifs du cycle, des alternatives pour les
atteindre, des contraintes, à partir des résultats des cycles
précédents, ou, si il n’y en a pas, d’une analyse préliminaire des
besoins ;
2. Analyse des risques, évaluation des alternatives, éventuellement
maquettage ;
3. Développement et vérification de la solution retenue ;
4. Revue des résultats et planification de cycle suivant.
Le quadrant 3 correspond à un développement ou à une
portion de développement classique, et un des modèles précédents (de
la cascade ou en V) peut s’appliquer : son choix peut faire partie des
alternatives à évaluer.
L’originalité de ce « super » modèle est d’encadrer le
développement proprement dit par des phases consacrées à la
détermination des objectifs et à l’analyse de risque.
a. Les risques majeurs du développement de logiciel
Un des intérêts du modèle en spirale est de fournir des listes
des risques encourus lors d’un développement de logiciel et de suggérer
des solutions.
b. La mise en œuvre du modèle
Un développement selon ce modèle commence par une
analyse préliminaire de besoins qui est affinée au cours des premiers
cycles, en prenant en compte les contraintes et l’analyse des risques.
Le modèle utilise systématiquement des maquettes, qui durant
ces cycles sont de nature exploratoire. Les troisièmes quadrants des
cycles suivants correspondent à de la conception, les choix étant guidés
par des maquettes expérimentales. Le dernier cycle se termine par la fin
d'un processus de développement classique.
La mise en œuvre de ce modèle demande des compétences et
un effort importants. De plus, ce modèle à été moins expérimenté que les
précédents et est moins documenté.
Du fait qu'il fait abondamment appel à l'analyse de risques, il
parait à priori raisonnable de limiter son utilisation complète à des
projets innovants, à risques, et dont les enjeux sont importants. Dans les
autres cas, l'analyse de risque garde néanmoins tout son intérêt et on
peut l’introduire dans les modèles classiques, dans une ou plusieurs
étapes.
1.4. Le modèle du cycle RAD.
Le modèle du cycle RAD comprend un découpage en trois
étapes dont le cadrage, la conception et la construction qu’on peut
présenter comme suit :
Ce modèle n’a pas connu du succès à cause de son
rapprochement ou son orientation à la méthode classique et ne tient
compte que des applications simples.
1.5. Le modèle en « Y »
Ce modèle déduit les branches ci-dessous:
La branche gauche (fonctionnelle) comporte :
• la capture des besoins fonctionnels, qui produit un modèle des besoins
focalisé sur le métier des utilisateurs. Elle qualifie au plus tôt le risque de
produire un système inadapté aux utilisateurs. De son côté, la maîtrise
d’œuvre consolide les spécifications et en vérifie la cohérence et
l’exhaustivité l’analyse, qui consiste à étudier précisément la spécification
fonctionnelle de manière à obtenir une idée de ce que va réaliser le
système en termes de métier. Les résultats de l’analyse ne dépendent
d’aucune technologie particulière.
La branche droite (architecture technique) comporte :
• la capture des besoins techniques, qui recense toutes les contraintes et
les choix dimensionnant la conception du système. Les outils et les
matériels sélectionnés ainsi que la prise en compte de contraintes
d’intégration avec l’existant conditionnent généralement des prérequis
d’architecture technique ;
• la conception générique, qui définit ensuite les composants nécessaires
à la construction de l’architecture technique. Cette conception est la
moins dépendante possible des aspects fonctionnels. Elle a pour objectif
d’uniformiser et de réutiliser les mêmes mécanismes pour tout un
système.
L’architecture technique construit le squelette du système informatique
et écarte la plupart des risques de niveau technique. L’importance de sa
réussite est telle qu’il est conseillé de réaliser un prototype pour assurer
sa validité.
La branche du milieu comporte :
• la conception préliminaire, qui représente une étape délicate, car elle
intègre le modèle d’analyse dans l’architecture technique de manière à
tracer la cartographie des composants du système à développer ;
• la conception détaillée, qui étudie ensuite comment réaliser chaque
composant ;
• l’étape de codage, qui produit ces composants et teste au fur et à
mesure les unités de code réalisées ;
• l’étape de recette, qui consiste enfin à valider les fonctions du système
développé.
2. Les approches
Par approche, nous entendons l’organisation des opérations dans une
démarche méthodologique pour parvenir à un but. L’approche détermine
l’ordre dans lequel les opérations doivent être effectuées. Nous pouvons
citer parmi les approches : l’approche par données, par besoins des
utilisateurs, par traitement et les sources de données.
Nota : les modèles et les approches engendrent les méthodes d’analyse
et conception des systèmes informatisés.
3. Les méthodes
Les méthodes associées aux activités d’analyse et de conception
des logiciels se sont développées pour répondre à l'évolution des
matériels, des systèmes, des langages de programmation, et surtout à la
complexité toujours croissante des logiciels. Elles reposent sur un
ensemble des techniques qui sont souvent communes à ces activités
surtout pour la spécification, tels que les énoncés informels, les
présentations formatées et les techniques graphiques ou semi –
formelles.
En effet, les méthodes d'analyse et de conception ayant suivi
l'évolution des langages et des techniques, il existe différentes manières
de les classer. L’une d'entre elles permet de distinguer d'une part les
approches descendantes et d'autre part les approches ascendantes :
- dans une méthode descendante, on décompose le système de base
en sous - systèmes, chacun d'eux pouvant être ensuite
redécomposé jusqu'à l'obtention de modules programmables
« simplement ».
- dans une approche ascendante, on part des modules déjà existants
que l'on essaie de recomposer.
- Certaines méthodes insistent beaucoup sur une conception en vue
d'une réutilisation, et d'autres sont un compromis entre les deux
approches précitées.
Mais en général on s'appuie sur l'un des critères ci - après :
Selon les étapes du cycle de vie qu'elles supportent, on distingue :
- les méthodes de conception,
- les méthodes de développement,
- les méthodes de test et de maintenance,
- les méthodes de conduite de projet.
Selon la technologie visée, on les regroupe en fonction de :
- types de langage de programmation,
- système de fichiers,
- types de SGBD,
- types d'outils temps réel.
Selon le type d’applications visées, on retrouve :
- Les méthodes pour applications de gestion,
- Les méthodes pour applications temps réel,
- Les méthodes pour application CAO, etc.
L'autre optique, parmi celles développées dans le travail, est de
regrouper les méthodes selon la démarche de conception préconisée et
selon la manière dont le système est perçu.
Selon la démarche de conception préconisée, on distingue :
- les méthodes fonctionnelles,
- la méthode MERISE,
- les méthodes orientées objet.
Selon la manière dont le système est perçu, on les regroupe en :
- méthodes d'analyse et de décomposition hiérarchique (première
génération),
- méthodes d'analyse et de représentation systémique (deuxième
génération).
- méthodes d’analyse et conception orientées objet (troisième
génération).
Ainsi, dans le cadre de cette étude, nous avons choisi une
approche combinée de classification récemment utilisée, à savoir :
- les méthodes fonctionnelles (basées sur les traitements),
- la méthode MERISE (car c’est la méthode la plus utilisée dans
l’espace francophone pour l’informatique de gestion),
- les méthodes orientées objet (suite à l’émergence des logiciels
basés sur la programmation événementielle).
3.1. Les méthodes fonctionnelles
Les méthodes fonctionnelles ont leur origine dans le
développement des langages procéduraux.
Plus orientées vers le trainement que vers les données, elles mettent en
évidence la ou les fonctions à assurer et proposent une approche
hiérarchique, descendante et modulaire, en précisant les liens entre les
différents modules.
Elles utilisent souvent des notations de type DFD (Diagrammes
à Flots des Données). Avec l'évolution des langages de programmation et
des systèmes, ces méthodes ont pris en compte la modification des
données et les problèmes posés par le temps réel.
Parmi elles, on peut citer :
- la méthode SADT,
- l’analyse structurée,
- la conception structurée,
- l’analyse et la conception « temps réel ».
3.1.1. La méthode SADT
SADT (Structured Analysis and Desing Technique) est une
méthode d'analyse qui couvre essentiellement la première partie du cycle
de vie du logiciel. Les auteurs la présentent comme une méthode pour
« communiquer des problèmes ». [Marca&Govan, 97].
Elle propose une suite cohérente et hiérarchisée de diagrammes
(datagrammes et actigrammes), obtenus par raffinements successifs :
- un datagramme permet de représenter les données, représentées par
des boîtes, et montre les activités qui les créent ou les utilisent ; celles-ci
sont représentées par des flèches ;
- un actigramme décrit l'enchainement des activités, qui sont cette fois
représentées par des boites ; les données qu'elles manipulent sont
représentées par des flèches.
Chaque boite peut être décomposée en un diagramme plus
détaillé. La vérification de chaque étape de décomposition peut se baser
sur le respect des informations liées aux flèches : toutes les flèches d'un
niveau doivent être conservées au niveau inférieur de décomposition.
Plusieurs modèles SADT correspondant à différents points de
vue du système, sont souvent établis pour une meilleure compréhension.
Il est nécessaire alors de vérifier la cohérence entre les différents
modèles.
Dans tous les cas, il faut contrôler systématiquement la cohérence entre
données et traitements par contrôle croisé des actigrammes et
datagrammes.
Activités
DATAGRAMME de contrôle
Activités DONNEE Activités
productrices consommatrices
Données
de contrôle
Unité
de stockage
ACTIVITE Données de sortie
ACTIGRAMME Données d’entrée
Unité de traitement
3.1.2. L’analyse structurée.
L’analyse structurée de De Marco (SA : Structured Analysis) est
une méthode descendante par raffinements successifs des traitements ou
processus. A chaque niveau de décomposition, la notation graphique
utilisée est celle des diagrammes à flots des données.
Le niveau le plus haut représente l’ensemble du problème (diagramme
de contexte).
Chaque diagramme de niveau inférieur décompose en plusieurs
processus les processus définis au niveau juste supérieur, en respectant
les flots des données entrants et sortants.
A chaque processus non décomposé, est attachée une "mini-
spécification" sous une forme plus au moins formelle, ayant pour but de
préciser comment, pour chaque processus, les sorties sont produites à
partir des entrées.
Diagramme de contexte
Niveau 0
1 2
3
4
Niveau 1 1.2 2.2
1.1
2.1
1.3
3.1 3.2 4.3
Un dictionnaire précise également la définition des données,
des processus et des fichiers (ou zones de stockage).
3.1.3. La conception structurée.
La conception structurée de Yourdon et Consntine (SD :
Structured Desing) repend les mêmes principes de décomposition
fonctionnelle de l'analyse structurée, en précisant les liens (simple,
itératifs, alternatifs) ainsi que les passages de paramètres, entre différents
modules.
La notation utilisée est celle des diagrammes de structure, et un
modèle d’information, similaire au modèle entité-association, complète
souvent cette méthode.
3.1.4. L'analyse et la conception "temps réel".
Les outils de base de l'analyse structurée n'étant pas suffisants
pour spécifier les contraintes de temps et de synchronisation, des
extensions ont été apportées dans deux méthodes.
Hatley et Pirbhai ont ajouté des diagrammes de flots de
contrôle (CFD : Control Flow Diagram) et des spécifications de contrôle
(Control Specification) permettant de représenter les informations qui
activent ou désactivent les processus représentés dans les diagrammes
de flots des données. [Hatley&Pirbhai,2001].
Ward et Mellor préconisent l’utilisation de diagrammes états-
transitions pour mettre en relief les événements déclenchant les
processus.
3.2. La méthode MERISE/2 (version2)
Le projet MERISE/2 a été lancé par Sema Group pour prendre
en compte des extensions et des améliorations liées aux évolutions
organisationnelles et techniques des années 1990. [Panet&Letouche,94].
Le modèle entité-association utilisé pour la modélisation des
données de la première version présentait quelques carences.
Un groupe de travail de l'AFCET a apporté en novembre 1990,
des extensions au modèle, telles que les notions de généralisation et de
spécialisation pour traduire des concepts d'héritage, les contraintes
d'intégrité, et la notion d'identifiant relatif qui permet d'identifier une
entité par rapport à une autre. [Nanci&Espinasse, 2003].
Les traitements ont été enrichis au niveau conceptuel par
l’introduction :
- De diagrammes de flots des données ;
- D’un Modèle Conceptuel des Traitements Analytique (MCTA) qui
permet, dès la phase de conception de s’intéresser aux données qui s’y
rattachent, préparant ainsi la phase de validation ;
- De la notion de Cycle de Vie d’un Objet (utilisé ici dans le sens d’entité)-
CVO, pour prendre en compte tous les états par lequel passe un objet au
cours de sa vie, en fonction d’événements qui peuvent se produire.
Le CVO permet également de traduire les effets annexes sur les objets
différents de celui qui est en cours d’étude.
Après le niveau conceptuel, il faut préciser le niveau
organisationnel, où sont pris en compte les structures, les moyens
matériels et humains à mettre en place.
Puis au niveau logique, sont définis les interfaces avec les
utilisateurs, les ressources logiques de traitements et de stockage ainsi
que la répartition des données. Le niveau physique reste inchangé.
3.2.1. La Méthode OOM : Orientation Objet dans MERISE
La troisième version de MERISE, OOM, date de 1992.
Elle est totalement marquée par l’orientation objet, et on trouve
les trois dimensions caractéristiques des méthodes orientées objet : la
dimension statique, la dimension dynamique et la dimension
fonctionnelle. [Booch, 2001].
3.3. Les méthodes orientées objet
Les méthodes d'analyse et de conception orientées objet ont
été influencées par le développement du langage ADA et des langages
de programmation événementielle qui reposent sur les concepts
d'objets, classes, héritage et de messages.
L'analyse orientée objet permet d'examiner un problème en
mettant en évidence les classes et objets correspondants, sous forme des
composants indépendants qui interagissent selon des modalités bien
définies; car seuls les résultats d'une telle analyse peuvent servir de base
à une conception orientée objet [Nanci&Espinasse, 2003].
Le choix d'une méthode orientée objet n’est pas simple car
celles-ci sont nombreuses et toutes n’ont pas été testées sur des
applications suffisamment importantes pour pouvoir être évaluées.
On peut cependant remarquer, dans la plupart de ces
méthodes, que l'étude d’un problème est réalisée en se basant sur trois
dimensions :
- la dimension statique ou descriptive, où on identifie les propriétés des
objets et leurs liaisons avec les autres objets,
- la dimension dynamique, où on précise le comportement des objets, les
différents états par lesquels ils passent et les événements qui
déclenchent ces changements d’états. C’est à ce niveau qu’on peut parler
de cycle de vie d’un objet.
- la dimension fonctionnelle, dans lequel on précise les fonctions réalisées
par les objets par l'intermédiaire des méthodes.
Dimension fonctionnelle
Dimension dynamique
Dimension
statique
Parmi les méthodes orientées objet, on peut citer :
- La méthode de Coad et Yourdon,
- La méthode de Grady Booch,
- La méthode de Shlaer et Mellor,
- La méthode OMT.
3.3.1. La méthode de Coad et Yourdon
La méthode OOA (Objet Oriented Analysis) de Coad et Yourdon
est l'une des premières méthodes d'analyse orientée objet qui ait été
bien définie.[Coad&Yourdon,2002].
Sa démarche globale est constituée de cinq activités :
- Définition des classes et objets,
- Identification des structures (d’héritage et de composition),
- Identification des sujets (domaines) suivant la complexité du
problème,
- Définition des attributs,
- Définition des services (appelés communément méthodes).
A chaque activité est associée une représentation graphique ; et
le modèle général de la méthode est présenté comme la superposition
de cinq couches, chaque couche apportant des détails complémentaires
sur la couche précédente (l'ordre des couches ne reflète pas l'ordre dans
lequel les activités sont abordées): couche Sujet, couche Classe & Objets,
couche Structure, couche Attribut, couche Service.
Bien que définie, souvent après l'identification des classes &
objets et des structures, la couche sujet qui regroupe dans une même
représentation graphique les objets se rapportant au même domaine
d'application, est naturellement présentée au premier niveau dans le
modèle. Dans le cas d’un problème simple (une seule application), peut
ne pas figurer.
La démarche de la méthode OOA repose essentiellement sur
l'aspect descriptif de l'ensemble des objets, conduisant à une
représentation graphique similaire à celle du modèle entité - association.
En effet elle prend en compte les concepts d'héritage
(généralisation / spécialisation) et distingue d'une part les associations
de composition (composé / composant) et d'autre part, les associations
entre objets appelés connexions d'instances.
Les aspects dynamiques et fonctionnels objets sont abordés
avec la définition des services en partant de la description des états des
objets.
Les échanges entre les différents objets sont traduits par des
connexions de massage que l'on peut représenter graphiquement par
superposition au modèle des données.
Cette partie de la méthode semble un peu faible dans la mesure où le
cycle de vie d'un objet n'est que partiellement exploité.
Le cycle de vie du logiciel est totalement couvert par la méthode de Coad
et Yourdon puisque les auteurs complètent l’analyse orientée objet par
une méthode de conception (OOD : Object Oriented Design), une
méthode de programmation et une méthode de test.
3.3.2. La méthode de Grady Booch
La méthode proposée par G. Booch est une méthode de
conception, définie à l'origine pour une programmation ADA, puis
généralisée à d'autres langages.
Sans préciser un ordre strict dans l'enchainement des
opérations, elle propose quatre étapes :
- Identifier les classes et les objets à un niveau d'abstraction donné,
- Identifier la sémantique de ces classes et de ces objets en précisant
pour chaque classe son interface,
- Identifier les relations entre ces classes, en distinguant d'une part les
aspects statiques, d'autre part les aspects dynamiques,
- implémenter les classes et les objets.
L'approche n'est ni ascendante, ni descendante, mais relève
plutôt d'une démarche de conception incrémentale (l'identification de
nouvelles classes peut conduire à modifier les relations déjà existantes) et
itérative (l'implémentation d'une classe peut amener à en créer de
nouvelles).
3.3.3. La méthode de Shlaer et Mellor
La méthode d'analyse de Shlaer et mellor, OOA (Objet Oriented
Analysis), repose sur la représentation des systèmes suivant les trois axes,
exprimés en termes de modèles, tels que définis dans la figure ci-après :
- l'axe de la statique pour les données et leurs structures ;
- l'axe de la dynamique pour les états, les transitions et les
synchronisations ;
- l'axe de l'algorithmique pour les traitements et les processus.
Le système à analyser est découpé en plusieurs sous - systèmes.
On associe à chacun d'eux dans l'ordre précisé sur la figure ci-avant :
- Un modèle d'information (information model) suivant l'axe de la
statique, de type entité - association, pour décrire les objets ; il
traduit un point de vue global du système.
- un modèle d’information (Information Model) suivant l’axe de la
statique, de type entité-association, pour décrire les objets ; il
traduit un point de vue global du système.
- Un modèle d'état - transition (state model) suivant l'axe de la
dynamique, pour caractériser le cycle de vie d'un objet. Entre sa
création et sa destruction, un objet passe par différents états ; le
changement d'état étant généralement provoqué par un
événement.
L’arrivée dans un état occasionne toujours le déclenchement
d’une action liée à cet état. Cette étude permet de trouver quels sont les
accès (messages) aux autres objets et quelles sont les opérations
(méthodes) qui leur sont associées ; on a alors une vision locale du
système. Il est à noter qu’il n’est pas indispensable d’étudier le cycle de
vie de tous les objets ; seuls les objets « actifs » dont le cycle de vie ne se
limite pas à une création et à une destruction, doivent être examinés.
- un modèle de traitement (process model) suivant l'axe fonctionnel,
pour chaque action détectée précédemment.
L’algorithme associé à chaque action permet de préciser les
processus qui s’enchainent.
Il est nécessaire alors de valider les liens entre les processus et
les objets utilisés par ces processus. Cette étape de validation permet de
revenir sur une vision globale du système.
Shlaer et Mellor proposent une méthode de conception appelé
"recursive design", qui se présente en en sept étapes :
- Découper en domaines : le domaine d'application, des domaines
plus généraux (l'interface utilisateur, un système de capteur et
d'autres mécanismes de commande), le domaine d'architecture et
des domaines d'implémentation, tels que système d'exploitation et
langage de programmation.
- Analyser le domaine d’application en suivant la méthode OOA ;
- Extraire les besoins qui doivent être remplis par d’autres domaines ;
- Analyser ces autres domaines en recommençant éventuellement
l’étape précédente ;
- Spécifier le domaine d'architecture qui fournit les règles et
mécanismes de gestion des données et des contrôles ;
- Implémenter les mécanismes sous forme de tâches, interfaces,
fonctions et comme les squelettes de programmes ;
- Compléter les squelettes de programmes.
Comme la méthode de G. Booch, cette méthode n'est ni
ascendante, ni descendante, mais met l'accent sur l'aspect interactif du
développement d'un logiciel.
3.3.4. La méthode OMT
La méthode OMT (Object Modeling Technique) permet de
couvrir l'ensemble des processus d'analyse et de conception en utilisant
le même formalisme.
L'analyse repose sur les trois points de vue : statistique,
dynamique et fonctionnel ; donnant lieu à trois sous - modèles.
Les autres insistent sur le fait que chacun de ces sous - modèles
n'a pas la même importance suivant le type de problème étudié ; on
établira donc ces sous - modèles dans l'ordre d'importance au sein de
l'analyse.
Par exemple dans un système interactif pour lequel le point vue
de la dynamique est le plus important, il faut commencer par
l'élaboration de scénarios correspondant à des séquences typiques. Cette
étape précédera la réalisation des diagrammes d’états semblables à ceux
que l’on trouve dans la méthode de Shlaer et Mellor.
Le modèle statique de cette méthode est très riche et permet
de prendre en compte pratiquement tout ce qui est modélisé dans
l’ensemble des autres méthodes.
En plus de la conception du système, la méthode OMT présente
la conception des objets, phase au cours de laquelle on précise des
détails d'implémentation.
Cette méthode peut être employée pour des applications très
diverses, et c'est sans doute un de ses points forts parmi les autres
méthodes orientées objet.
Un projet d'unification de la méthode OMT et de la méthode de
Grady Booch (Unified Method) a été annoncé en 1995.
CHAPITRE III CONCEPTION ORIENTEE-OBJET D’UN
SYSTEME INFORMATIQUE
La Conception Orientée Objet (COO) est la méthode qui
conduit à des architectures logicielles fondées sur les objets du système,
plutôt que sur une décomposition fonctionnelle.
C'est la structure du système lui donne sa forme.
On peut partir des objets du domaine (briques de base) et remonter vers
le système global : approche ascendante.
Nota : l'approche objet n'est pas seulement ascendante.
III.1. L’approche orientée objet
L’approche orientée objet considère le logiciel comme une
collection d’objets dissociés, identifiés et possédant des caractéristiques.
Une caractéristique est soit un attribut (i.e. une donnée caractérisant
l’état de l’objet), soit une entité comportementale de l’objet (i.e. une
fonction). La fonctionnalité du logiciel émerge alors de l’interaction entre
les différents objets qui le constituent. L’une des particularités de cette
approche est qu’elle rapproche les données et leurs traitements associés
au sein d’un unique objet.
Comme nous venons de le dire, un objet est caractérisé par
plusieurs notions :
L’identité
L’objet possède une identité, qui permet de le distinguer des
autres objets, indépendamment de son état. On construit généralement
cette identité grâce à un identifiant découlant naturellement du
problème (par exemple un produit pourra être repéré par un code, une
voiture par un numéro de série, etc.)
Les attributs
Il s’agit des données caractérisant l’objet. Ce sont des variables
stockant des informations sur l’état de l’objet.
Les méthodes
Les méthodes d’un objet caractérisent son comportement, c’est-
à-dire l’ensemble des actions (appelées opérations) que l’objet est à
même de réaliser. Ces opérations permettent de faire réagir l’objet aux
sollicitations extérieures (ou d’agir sur les autres objets). De plus, les
opérations sont étroitement liées aux attributs, car leurs actions peuvent
dépendre des valeurs des attributs, ou bien les modifier.
La difficulté de cette modélisation consiste à créer une
représentation abstraite, sous forme d’objets, d’entités ayant une
existence matérielle (chien, voiture, ampoule, personne, …) ou bien
virtuelle (client, temps, …).
La Conception Orientée Objet (COO) est la méthode qui conduit
à des architectures logicielles fondées sur les objets du système, plutôt
que sur la fonction qu’il est censé réaliser.
III.2. Approche fonctionnelle vs Approche objet
Selon la thèse de Church-Turing, tout langage de
programmation non trivial équivaut à une machine de Turing. Il en
résulte que tout programme qu’il est possible d’écrire dans un langage
pourrait également être écrit dans n’importe quel autre langage. Ainsi,
tout ce que l’on fait avec un langage de programmation par objets
pourrait être fait en programmation impérative. La différence entre une
approche fonctionnelle et une approche objet n’est donc pas d’ordre
logique, mais pratique.
L’approche structurée privilégie la fonction comme moyen
d’organisation du logiciel. Ce n’est pas pour cette raison que l’approche
objet est une approche non fonctionnelle. En effet, les méthodes d’un
objet sont des fonctions. Ce qui différencie sur le fond l’approche objet
de l’approche fonctionnelle, c’est que les fonctions obtenues à l’issue de
la mise en œuvre de l’une ou l’autre méthode sont distinctes. L’approche
objet est une approche orientée donnée. Dans cette approche, les
fonctions se déduisent d’un regroupement de champs de données
formant une entité cohérente, logique, tangible et surtout stable quant
au problème traité. L’approche structurée classique privilégie une
organisation des données postérieure à la découverte des grandes, puis
petites fonctions qui les décomposent, l’ensemble constituant les services
qui répondent aux besoins.
En approche objet, l’évolution des besoins aura le plus souvent
tendance à se présenter comme un changement de l’interaction des
objets. S’il faut apporter une modification aux données, seul l’objet
incriminé (encapsulant cette donnée) sera modifié. Toutes les fonctions à
modifier sont bien identifiées : elles se trouvent dans ce même objet : ce
sont ses méthodes. Dans une approche structurée, l’évolution des
besoins entraîne souvent une dégénérescence, ou une profonde remise
en question, de la topologie typique car la décomposition des unités de
traitement (du programme principal aux sous-fonctions) est directement
dictée par ces besoins. D’autre part, une modification des données
entraîne généralement une modification d’un nombre important de
fonctions éparpillées et difficiles à identifier dans la hiérarchie de cette
décomposition.
En fait, la modularité n’est pas antinomique de l’approche
structurée. Les modules résultant de la décomposition objet sont tout
simplement différents de ceux émanant de l’approche structurée. Les
unités de traitement, et surtout leur dépendance dans la topologie sont
initialement bons. C’est leur résistance au temps, contrairement aux
modules objet, qui est source de problème. La structure d’un logiciel
issue d’une approche structurée est beaucoup moins malléable,
adaptable, que celle issue d’une approche objet.
Ainsi la technologie objet est la conséquence ultime de la
modularisation du logiciel, démarche qui vise à maîtriser sa production et
son évolution. Mais malgré cette continuité logique les langages objet
ont apporté en pratique un profond changement dans l’art de la
programmation : ils impliquent en effet un changement de l’attitude
mentale du programmeur.
III.3. Concepts importants de l’approche objet
L’approche objet rapproche les données et leurs traitements.
Mais cette approche ne fait pas que ça, d’autres concepts importants
sont spécifiques à cette approche et participent à la qualité du logiciel.
3.3.1. Notion de classe
Tout d’abord, introduisons la notion de classe. Une classe est un
type de données abstrait qui précise des caractéristiques (attributs et
méthodes) communes à toute une famille d’objets et qui permet de créer
(instancier) des objets possédant ces caractéristiques. Les autres concepts
importants qu’il nous faut maintenant introduire sont l’encapsulation,
l’héritage et l’agrégation.
3.3.2. Encapsulation
L’encapsulation consiste à masquer les détails d’implémentation
d’un objet, en définissant une interface. L’interface est la vue externe d’un
objet, elle définit les services accessibles (offerts) aux utilisateurs de
l’objet.
L’encapsulation garantit l’intégrité des données, car elle permet
d’interdire, ou de restreindre, l’accès direct aux attributs des objets.
Elle est un principe de conception consistant à protéger le cœur
d'un système des accès intempestifs venant de l'extérieur.
En UML, utilisation de modificateurs d'accès sur les attributs ou
les classes :
Public ou « + » : propriété ou classe visible partout
Protected ou « # » : propriété ou classe visible dans la classe et par tous
ses descendants.
Private ou « - » : propriété ou classe visible uniquement dans la classe
Package, ou « ~ »: propriété ou classe visible uniquement dans le
paquetage
Nota : Il n'y a pas de visibilité _ par défaut _.
3.3.3. Héritage, Spécialisation, Généralisation et Polymorphisme
L’héritage est un mécanisme de transmission des
caractéristiques d’une classe (ses attributs et méthodes) vers une sous-
classe. Une classe peut être spécialisée en d’autres classes, afin d’y
ajouter des caractéristiques spécifiques ou d’en adapter certaines.
Plusieurs classes peuvent être généralisées en une classe qui les factorise,
afin de regrouper les caractéristiques communes d’un ensemble de
classes.
Ainsi, la spécialisation et la généralisation permettent de
construire des hiérarchies de classes. L’héritage peut être simple ou
multiple. L’héritage évite la duplication et encourage la réutilisation.
La classe enfant possède toutes les propriétés de ses classes
parents (attributs et opérations)
La classe enfant est la classe spécialisée ;
La classe parent est la classe générale.
Toutefois, elle n'a pas accès aux propriétés privées.
Une classe enfant peut redéfinir (même signature) une ou
plusieurs méthodes de la classe parent. Sauf indications contraires, un
objet utilise les opérations les plus spécialisées dans la hiérarchie des
classes.
La surcharge d'opérations (même nom, mais signatures des
opérations différentes) est possible dans toutes les classes.
Le polymorphisme représente la faculté d’une méthode à
pouvoir s’appliquer à des objets de classes différentes. Le polymorphisme
augmente la généricité, et donc la qualité, du code.
3.3.4. Agrégation et composition
Il s’agit d’une relation entre deux classes, spécifiant que les
objets d’une classe sont des composants de l’autre classe.
Une agrégation est une forme particulière d'association. Elle
représente la relation d'inclusion d'un élément dans un ensemble.
On représente l'agrégation par l'ajout d'un losange vide du côté de
l'agrégat.
Une agrégation dénote une relation d'un ensemble à ses parties.
L'ensemble est l'agrégat et la partie l'agrégé.
La relation de composition décrit une contenance structurelle
entre instances. On utilise un losange plein.
La destruction et la copie de l'objet composite (l'ensemble) impliquent
respectivement la destruction ou la copie de ses composants (les parties).
Une instance de la partie n'appartient jamais à plus d'une instance de
l'élément composite.
Dès lors que l'on a une relation du tout à sa partie, on a une
relation d'agrégation ou de composition.
La composition est aussi dite « agrégation forte ».
Pour décider de mettre une composition plutôt qu'une
agrégation, on doit se poser les questions suivantes :
Est-ce que la destruction de l'objet composite (du tout) implique
nécessairement la destruction des objets composants (les parties) ?
C'est le cas si les composants n'ont pas d'autonomie vis-à-vis des
composites.
Lorsque l'on copie le composite, doit-on aussi copier les
composants, ou est-ce qu'on peut les « réutiliser », auquel cas un
composant peut faire partie de plusieurs composites ?
Si on répond par l'affirmative à ces deux questions, on doit utiliser une
composition.
3.4. Historique la programmation par objets
Les premiers langages de programmation qui ont utilisé des
objets sont Simula I (1961-64) et Simula 67 (1967), conçus par les
informaticiens norvégiens Ole-Johan Dahl et Kristan Nygaard. Simula 67
contenait déjà les objets, les classes, l’héritage, l’encapsulation, etc.
Alan Kay, du PARC de Xerox, avait utilisé Simula dans les années
1960. Il réalisa en 1976 Smalltalk qui reste, aux yeux de certains
programmeurs, le meilleur langage de programmation par objets.
Bjarne Stroustrup a mis au point C++, une extension du langage
C permettant la programmation orientée objets, aux Bell Labs d’AT&T en
1982. C++ deviendra le langage le plus utilisé par les programmeurs
professionnels. Il arrivera à maturation en 1986, sa standardisation ANSI /
ISO date de 1997.
Java est lancée par Sun en 1995. Comme il présente plus de sécurité que
C++, il deviendra le langage favori de certains programmeurs
professionnels.
CHAPITRE IV LA MODELISATION AVEC UML
IV.1. Introduction
L’approche par objets forme la base d’UML. Elle est constituée
de concepts (objets, classes, spécialisation, composition) et de principes
(abstraction, encapsulation). Cet ensemble fait de l’approche par objets
un véritable support pour la modélisation de systèmes complexes, et au-
delà d’UML, pour leur programmation.
Nous verrons dans les points suivants comment les différents
diagrammes d’UML s’appuient sur les concepts et principes de
l’approche par objets.
La description de la programmation par objets a fait ressortir
l’étendue du travail conceptuel nécessaire : définition des classes, de
leurs relations, des attributs et méthodes, des interfaces etc.
Pour programmer une application, il ne convient pas de se
lancer tête baissée dans l’écriture du code : il faut d’abord organiser ses
idées, les documenter, puis organiser la réalisation en définissant les
modules et étapes de la réalisation. C’est cette démarche antérieure à
l’écriture que l’on appelle modélisation ; son produit est un modèle.
Les spécifications fournies par la maîtrise d’ouvrage en
programmation impérative étaient souvent floues : les articulations
conceptuelles (structures de données, algorithmes de traitement)
s’exprimant dans le vocabulaire de l’informatique, le modèle devait
souvent être élaboré par celle-ci.
L’approche objet permet en principe à la maîtrise d’ouvrage de
s’exprimer de façon précise selon un vocabulaire qui, tout en transcrivant
les besoins du métier, pourra être immédiatement compris par les
informaticiens. En principe seulement, car la modélisation demande aux
maîtrises d’ouvrage une compétence et un professionnalisme qui ne sont
pas aujourd’hui répandus.
Mot-clé : Modéliser
Un modèle est une représentation artificielle de ce que l'on
pense avoir compris du monde environnant. Il :
possède trois propriétés :
- la figuration : les figures sont mises à la place de concepts
généraux
- l'imitation : il copie sur un support des relations perçues sur
l'environnement
- la formalisation : il propose de mettre de l'ordre dans la
diversité observée ;
sert :
- à communiquer : voir si on a bien compris la même chose que
les utilisateurs
- à préparer la réalisation. Un modèle peut dire deux choses :
- ce que l'application devra faire (une
spécification)
- comment elle est organisée du point de vue
de l'ordinateur(une réalisation).
Un modèle est une abstraction de la réalité. L'abstraction est
l’un des piliers de l'approche objet. Il s'agit d'un processus qui consiste à
identifier les caractéristiques intéressantes d'une entité, en vue d'une
utilisation précise.
Bien qu'un modèle ne représente pas une réalité absolue, un
modèle reflète des aspects importants de la réalité, il en donne donc une
vue juste et pertinente.
Modéliser, c'est comme faire de la géométrie
- disposer des figures, étudier des propriétés et raisonner au moyen
de définitions.
Ce qu'il faut aimer pour y arriver :
- être à l'écoute du monde extérieur
- dialoguer et donc communiquer avec les gens (qui utiliseront le
système informatique)
- observer et expérimenter : une conception n'est jamais bonne du
premier coup
- travailler sans filet : créer quelque chose avec très peu de recettes
toutes prêtes
- l'abstraction : une carte routière est un modèle du territoire ; ce
n'est pas le territoire lui-même
- le travail à plusieurs : contribuer à l'intérieur d'un projet collectif
- aller au résultat : en plus il faut que ça marche !
Caractéristiques fondamentales des modèles
Le caractère abstrait d'un modèle doit notamment permettre :
de faciliter la compréhension du système étudié
Un modèle réduit la complexité du système étudié.
de simuler le système étudié
Un modèle représente le système étudié et reproduit ses
comportements.
Un modèle réduit (décompose) la réalité, dans le but de disposer
d'éléments
de travail exploitables par des moyens mathématiques ou informatiques :
modèle / réalité ~ digital / analogique
Pourquoi modéliser ?
Modéliser un système avant sa réalisation permet de mieux
comprendre le fonctionnement du système.
C’est également un bon moyen de maîtriser sa complexité et d’assurer sa
cohérence. Un modèle est un langage commun, précis,
qui est connu par tous les membres de l’équipe et il est donc, à ce
titre, un vecteur privilégié pour communiquer. Cette communication
est essentielle pour aboutir à une compréhension commune aux
différentes parties prenantes (notamment entre la maîtrise d’ouvrage et
la maîtrise d’œuvre informatique) et précise d’un problème donné.
IV.2. PRESETANTION GENERALE D’UML
IV.2.1 Historique
Regardons tout d’abord ce qui s’est passé au début des années
90. Par rapport à la cinquantaine de méthodes d’analyse et de
conception objet qui existaient au début des années 90, seulement trois
d’entre elles se sont détachées nettement au bout de quelques années.
En effet, la volonté de converger vers une méthode unifiée était déjà bien
réelle et c’est pour cette raison que les méthodes OMT, BOOCH et OOSE
se sont démarquées des autres.
OMT (Object Modeling Technique) de James Rumbaugh et
BOOCH de Grady Booch ont été les deux méthodes les plus diffusées en
France durant les années 90. Par ailleurs, OOSE de Ivar Jacobson s’est
aussi imposée dans le monde objet pour la partie formalisation des
besoins.
Pour aller plus loin dans le rapprochement, James Rumbaugh et
Grady Booch se sont retrouvés au sein de la société Rational Software et
ont été ensuite rejoints par Ivar Jacobson en se donnant comme objectif
de fusionner leur méthode et créer UML (Unified Methode Language).
Il est important de noter que contrairement à ce qui avait été
envisagé au départ, le processus de développement a été sorti du champ
couvert par le projet de norme. UML est donc une norme du langage de
modélisation objet qui a été publiée, dans sa première version, en
novembre 1997 par l’OMG (Object Management Group), instance de
normalisation internationale du domaine de l’objet.
En quelques années, UML s’est imposée comme standard à
utiliser en tant que langage de modélisation objet.
Aujourd’hui, le standard industriel de modélisation objet est
UML.
Notre étude des nombreux ouvrages déjà publiés sur UML 2,
nous a permis de constater qu’il en existait déjà un certain nombre qui
s’était attaché à une présentation relativement exhaustive et détaillée de
la norme.
Cependant, nous n’avons pas trouvé de livres traitant à la
fois l’aspect normatif d’UML 2 et la démarche d’élaboration des
diagrammes couvrant l’analyse et la conception des systèmes
d’information.
Nous avons donc décidé de répondre à ce besoin en essayant
de traiter le plus efficacement possible les treize diagrammes d’UML 2
conformément à la norme et en accompagnant le lecteur dans un
apprentissage progressif fondé sur de nombreux
exemples, des exercices corrigés et de véritables études de cas se
rapprochant de projets réels d’entreprise.
IV.2.2. LES BASE D’UML
UML se définit comme un langage de modélisation graphique
et textuel destiné à comprendre et décrire des besoins, spécifier et
documenter des systèmes, esquisser des architectures logicielles,
concevoir des solutions et communiquer des points de vue.
UML unifie à la fois les notations et les concepts orientés objet
(voir l’historique d’UML sur la figure ci-dessous). Il ne s’agit pas d’une
simple notation graphique, car les concepts transmis par un diagramme
ont une sémantique précise et sont porteurs de sens au même titre que
les mots d’un langage.
UML unifie également les notations nécessaires aux différentes
activités d’un processus de développement et offre, par ce biais, le
moyen d’établir le suivi des décisions prises, depuis l’expression de
besoin jusqu’au codage. Dans ce cadre, un concept appartenant aux
exigences des utilisateurs projette sa réalité dans le modèle de
conception et dans le codage.
Le fil tendu entre les différentes étapes de construction permet
alors de remonter du code aux besoins et d’en comprendre les tenants et
les aboutissants. En d’autres termes, on peut retrouver la nécessité d’un
bloc de code en se référant à son origine dans le modèle des besoins.
Présentation générale des diagrammes
UML dans sa version 2 propose treize diagrammes qui peuvent
être utilisés dans la description d’un système. Ces diagrammes sont
regroupés dans deux grands ensembles.
• Les diagrammes structurels – Ces diagrammes, au nombre de six, ont
vocation à représenter l’aspect statique d’un système (classes, objets,
composants…).
– Diagramme de classe – Ce diagramme représente la description
statique du système en intégrant dans chaque classe la partie dédiée aux
données et celle consacrée aux traitements. C’est le diagramme pivot de
l’ensemble de la modélisation d’un système.
– Diagramme d’objet – Le diagramme d’objet permet la représentation
d’instances des classes et des liens entre instances.
– Diagramme de composant (modifié dans UML 2) – Ce diagramme
représente les différents constituants du logiciel au niveau de
l’implémentation d’un système.
– Diagramme de déploiement (modifié dans UML 2) – Ce diagramme
décrit l’architecture technique d’un système avec une vue centrée sur la
répartition des composants dans la configuration d’exploitation.
– Diagramme de paquetage (nouveau dans UML 2) – Ce diagramme
donne une vue d’ensemble du système structuré en paquetage. Chaque
paquetage représente un ensemble homogène d’éléments du système
(classes, composants…).
– Diagramme de structure composite (nouveau dans UML 2) – Ce
diagramme permet de décrire la structure interne d’un ensemble
complexe composé par exemple de classes ou d’objets et de composants
techniques. Ce diagramme met aussi l’accent sur les liens entre les sous-
ensembles qui collaborent.
• Les diagrammes de comportement – Ces diagrammes représentent la
partie dynamique d’un système réagissant aux événements et permettant
de produire les résultats attendus par les utilisateurs. Sept diagrammes
sont proposés par UML :
– Diagramme des cas d’utilisation – Ce diagramme est destiné à
représenter les besoins des utilisateurs par rapport au système. Il
constitue un des diagrammes les plus structurants dans l’analyse d’un
système.
– Diagramme d’état-transition (machine d’état) – Ce diagramme
montre les différents états des objets en réaction aux événements.
– Diagramme d’activités (modifié dans UML 2) – Ce diagramme donne
une vision des enchaînements des activités propres à une opération ou à
un cas d’utilisation. Il permet aussi de représenter les flots de contrôle et
les flots de données.
– Diagramme de séquence (modifié dans UML 2) – Ce diagramme
permet de décrire les scénarios de chaque cas d’utilisation en mettant
l’accent sur la chronologie des opérations en interaction avec les objets.
– Diagramme de communication (anciennement appelé collaboration) –
Ce diagramme est une autre représentation des scénarios des cas
d’utilisation qui met plus l’accent sur les objets et les messages échangés.
– Diagramme global d’interaction (nouveau dans UML 2) – Ce
diagramme fournit une vue générale des interactions décrites dans le
diagramme de séquence et des flots de contrôle décrits dans le
diagramme d’activités.
– Diagramme de temps (nouveau dans UML 2) – Ce diagramme permet
de représenter les états et les interactions d’objets dans un contexte où
le temps a une forte influence sur le comportement du système à gérer.
Nota : Aujourd’hui UML 2 décrit les concepts et le formalisme de ces
treize diagrammes mais ne propose pas de démarche de construction
couvrant l’analyse et la conception d’un système. Ce qui a pour
conséquence par exemple de ne pas disposer d’une vision des
interactions entre les diagrammes.
Formalisme et exemple
Afin de donner un premier aperçu des principaux diagrammes
tant sur l’aspect du formalisme que sur leur usage, nous proposons à
titre introductif un petit exemple très simple.
Considérons une nouvelle société de formation qui souhaite
développer un premier niveau de site web dans lequel elle présente
succinctement les formations proposées et enregistre en ligne les
demandes de catalogue.
Nous pouvons dès ce stade de l’analyse représenter le diagramme des
cas d’utilisation ci-après :
Le diagramme de classe va nous permettre de décrire les concepts
manipulés, à savoir : Client, Catalogue et Formation.
Le diagramme de séquence va nous permettre de décrire les scénarios
des cas d’utilisation du diagramme des cas d’utilisation. À titre d’exemple
nous montrons le scénario correspondant à la consultation du catalogue.
Cette première illustration de trois diagrammes donne déjà un
éclairage sur les concepts importants que sont la classe, le cas
d’utilisation et l’objet.
IV.2.3. Schéma d’ensemble des treize diagrammes d’UML 2
Afin de donner quelques points de repères sur le
positionnement et les liens entre tous les diagrammes d’UML, nous
donnons ici notre propre vision en proposant un regroupement des
diagrammes en quatre ensembles suivant leur finalité :
• description du système : huit diagrammes ;
• architecture technique : deux diagrammes ;
• vues globales ou spécialisées : deux diagrammes ;
• partition d’éléments de la modélisation : un diagramme.
Le schéma proposé reprend les treize diagrammes en les
répartissant sur les quatre ensembles définis. Nous avons adopté, les
abréviations suivantes pour les treize diagrammes :
DAC : Diagramme d’activité
DCL : Diagramme de classe
DOB : Diagramme d’objet
DCP : Diagramme de composant
DCU : Diagramme des cas d’utilisation
DCO : Diagramme de communication
DET : Diagramme d’état-transition
DGI : Diagramme global d’interaction
DPA : Diagramme de paquetage
DPL : Diagramme de déploiement
DSC : Diagramme de structure composite
DSE : Diagramme de séquence
DTP : Diagramme de temps
Nota : Schéma d’ensemble des treize diagrammes d’UML 2. Les noms en
italiques représentent les diagrammes de comportement
IV.2.3.1. Les diagrammes comportementaux
Les diagrammes comportementaux sont focalisés sur la
description de la partie dynamique du système à modéliser. Sept
diagrammes sont proposés par UML 2 pour assurer cette description :
• le diagramme des cas d’utilisation (DCU),
• le diagramme d’état-transition (machine d’état, DET),
• le diagramme d’activité (DAC),
• le diagramme de séquence (DSE),
• le diagramme de communication (DCO),
• le diagramme global d’interaction (DGI),
• le diagramme de temps (DTP).
A. Diagramme des cas d’utilisation (DCU)
A.1 Présentation générale et concepts de base
Les cas d’utilisation ont été définis initialement par ivar
jacobson en 1992 dans sa méthode oose. Les cas d’utilisation constituent
un moyen de recueillir et de décrire les besoins des acteurs du système.
Ils peuvent être aussi utilises ensuite comme moyen d’organisation du
développement du logiciel, notamment pour la structuration et le
déroulement des tests du logiciel.
Un cas d’utilisation permet de décrire l’interaction entre les
acteurs (utilisateurs du cas) et le système. La description de l’interaction
est réalisée suivant le point de vue de l’utilisateur.
La représentation d’un cas d’utilisation met en jeu trois
concepts : l’acteur, le cas d’utilisation et l’interaction entre l’acteur et le
cas d’utilisation.
Acteur
Un acteur est un utilisateur type qui a toujours le même
comportement vis-à-vis d’un cas d’utilisation. Ainsi les utilisateurs d’un
système appartiennent à une ou plusieurs classes d’acteurs selon les
rôles qu’ils tiennent par rapport au système.
Une même personne physique peut se comporter en autant
d’acteurs différents que le nombre de rôles qu’elle joue vis-à-vis du
système.
Ainsi par exemple, l’administrateur d’un système de messagerie
peut être aussi utilisateur de cette même messagerie. Il sera considéré,
en tant qu’acteur du système, dans le rôle d’administrateur d’une part et
dans celui d’utilisateur d’autre part.
Un acteur peut aussi être un système externe avec lequel le cas
d’utilisation va interagir.
Formalisme et exemple
Un acteur peut se représenter symboliquement par un « bonhomme » et
être identifié par son nom. Il peut aussi être formalisé par une classe
stéréotypée « acteur »
Cas d’utilisation et interaction
Un cas d’utilisation correspond à un certain nombre d’actions
que le système devra exécuter en réponse à un besoin d’un acteur. Un
cas d’utilisation doit produire un résultat observable pour un ou plusieurs
acteurs ou parties prenantes du système.
Une interaction permet de décrire les échanges entre un acteur
et un cas d’utilisation.
Formalisme et exemple
Un cas d’utilisation se représente par un ovale dans lequel
figure son intitulé.
L’interaction entre un acteur et un cas d’utilisation se représente
comme une association. Elle peut comporter des multiplicités comme
toute association entre classes.
Le formalisme de base de représentation d’un cas d’utilisation
est donné ci-dessous :
Chaque cas d’utilisation doit être décrit sous forme textuelle
afin de bien identifier les traitements à réaliser par le système en vue de
la satisfaction du besoin exprimé par l’acteur.
A.2. Représentation du diagramme des cas d’utilisation
Tout système peut être décrit par un certain nombre de cas
d’utilisation correspondant aux besoins exprimés par l’ensemble des
utilisateurs. À chaque utilisateur, vu comme acteur, correspondra un
certain nombre de cas d’utilisation du système.
L’ensemble de ces cas d’utilisation se représente sous forme
d’un diagramme.
Nous verrons, dans la suite de la présentation d’UML, qu’un cas d’utilisation
peut avoir une ou plusieurs instances représentées par des scénarios. Chaque
scénario fait l’objet lui-même d’un diagramme de séquence ou de
communication.
En conclusion, nous dirons qu’un système est caractérisé par son
comportement vis-à-vis de ses utilisateurs. Ce comportement se représente
sous forme d’un ensemble de cas d’utilisation qui correspond aux besoins
des acteurs de ce système.
Un exemple d’un système de messagerie comportant quatre cas
d’utilisation.
A.3 Relations entre cas d’utilisation
Afin d’optimiser la formalisation des besoins en ayant recours
notamment à la réutilisation de cas d’utilisation, trois relations peuvent
être décrites entre cas d’utilisation : une relation d’inclusion (« include »),
une relation d’extension (« extend ») et une relation de généralisation.
Relation d’inclusion
Une relation d’inclusion d’un cas d’utilisation A par rapport à
un cas d’utilisation B signifie qu’une instance de A contient le
comportement décrit dans B.
Formalisme et exemple
Le croquis suivant donne le formalisme et un exemple d’une relation
d’inclusion entre cas d’utilisation.
Relation d’extension
Une relation d’extension d’un cas d’utilisation A par un cas
d’utilisation B signifie qu’une instance de A peut être étendue par le
comportement décrit dans B. Deux caractéristiques sont à noter :
• le caractère optionnel de l’extension dans le déroulement du cas
d’utilisation standard (A) ;
• la mention explicite du point d’extension dans le cas d’utilisation
standard.
Formalisme et exemple
Le croquis suivant donne un exemple d’une relation d’extension
entre cas d’utilisation.
Une note peut être ajoutée à la représentation du cas
d’utilisation permettant d’expliciter la condition.
Relation de généralisation
Une relation de généralisation de cas d’utilisation peut être
définie conformément au principe de la spécialisation-généralisation déjà
présentée pour les classes.
Formalisme et exemple
Le croquis donne un exemple d’une relation de généralisation
de cas d’utilisation.
A.4. Description textuelle d’un cas d’utilisation
À chaque cas d’utilisation doit être associée une description
textuelle des interactions entre l’acteur et le système et les actions que le
système doit réaliser en vue de produire les résultats attendus par les
acteurs.
UML ne propose pas de présentation type de cette description
textuelle. Cependant, les travaux menés par Alistair Cockburn
[Cockburn2001] sur ce sujet constituent une référence en la matière et
tout naturellement nous reprenons ici l’essentiel de cette présentation.
La description textuelle d’un cas d’utilisation est articulée en six points :
• Objectif – Décrire succinctement le contexte et les résultats attendus
du cas d’utilisation.
• Acteurs concernés – Le ou les acteurs concernés par le cas doivent être
identifiés en précisant globalement leur rôle.
• Pré conditions – Si certaines conditions particulières sont requises
avant l’exécution du cas, elles sont à exprimer à ce niveau.
• Post conditions – Par symétrie, si certaines conditions particulières
doivent être réunies après l’exécution du cas, elles sont à exprimer à ce
niveau. Pour notre part, par souci de simplification nous n’avons pas
traité ce point dans les exercices et études de cas présentés.
• Scénario nominal – Il s’agit là du scénario principal qui doit se dérouler
sans incident et qui permet d’aboutir au résultat souhaité.
• Scénarios alternatifs – Les autres scénarios, secondaires ou
correspondants à la résolution d’anomalies, sont à décrire à ce niveau. Le
lien avec le scénario principal se fait à l’aide d’une numérotation
hiérarchisée (1.1a, 1.1b…) rappelant le numéro de l’action concernée.
A.5. Exercices
Exercice 1
Énoncé
Une bibliothèque universitaire souhaite automatiser sa gestion.
Cette bibliothèque est gérée par un gestionnaire chargé des inscriptions
et des relances des lecteurs quand ceux-ci n’ont pas rendu leurs
ouvrages au-delà du délai autorisé. Les bibliothécaires sont chargés de
gérer les emprunts et la restitution des ouvrages ainsi que l’acquisition
de nouveaux ouvrages.
Il existe trois catégories d’abonné. Tout d’abord les étudiants
qui doivent seulement s’acquitter d’une somme forfaitaire pour une
année afin d’avoir droit à tous les services de la bibliothèque. L’accès à la
bibliothèque est libre pour tous les enseignants.
Enfin, il est possible d’autoriser des étudiants d’une autre
université à s’inscrire exceptionnellement comme abonné moyennant le
versement d’une cotisation.
Le nombre d’abonné externe est limité chaque année à environ
10 % des inscrits. Un nouveau service de consultation du catalogue
général des ouvrages doit être mis en place.
Les ouvrages, souvent acquis en plusieurs exemplaires, sont rangés dans
des rayons de la bibliothèque. Chaque exemplaire est repéré par une
référence gérée dans le catalogue et le code du rayon où il est rangé.
Chaque abonné ne peut emprunter plus de trois ouvrages. Le délai
d’emprunt d’un ouvrage est de trois semaines, il peut cependant être
prolongé exceptionnellement à cinq semaines.
Travail demandé : Il est demandé d’élaborer le diagramme des cas
d’utilisation (DCU).
Corrigé
Représentation du DCU – ci-dessous nous proposons un corrigé-type
de cet exercice. Six cas d’utilisation peuvent être identifiés :
• inscription à la bibliothèque,
• consultation du catalogue,
• emprunt d’ouvrages,
• restitution d’ouvrages,
• approvisionnement d’ouvrages,
• relance emprunteur.
Nous pouvons identifier cinq types d’acteurs :
• étudiant,
• externe,
• emprunteur,
• gestionnaire,
• bibliothécaire.
Exercice de synthèse
En reprenant l’énoncé de l’exercice de synthèse Locagite, nous
allons élaborer le diagramme des cas d’utilisation des quatre activités
décrites :
• Catalogue, cette activité se décompose en trois cas d’utilisation :
– cas d’utilisation 1.1 : Gestion annuelle du catalogue
– cas d’utilisation 1.2 : Publication du catalogue
– cas d’utilisation 1.3 : Contrôle annuel de l’état du gîte
• Propriétaire, cette activité se décompose en deux cas d’utilisation :
– cas d’utilisation 2.1 : Gestion propriétaire
– cas d’utilisation 2.2 : Authentification propriétaire
• Réservation, cette activité décompose en deux cas d’utilisation :
– cas d’utilisation 3.1 : Gestion des réservations
– cas d’utilisation 3.2 : Authentification client
• Location, cette activité se décompose en deux cas d’utilisation :
– cas d’utilisation 4.1 : Gestion des locations
– cas d’utilisation 4.2 : Gestion des annulations
Pour ces cas d’utilisation considérés, quatre acteurs types
externes peuvent être identifiés :
• le propriétaire,
• le propriétaire adhérent (qui met en location son gîte),
• le client réservataire,
• le client locataire.
Deux acteurs internes peuvent être identifiés :
• le gestionnaire Catalogue-Propriétaire,
• le gestionnaire Réservation-Location.
Le diagramme de ces cas d’utilisation est donné ci-dessous :
Nota : Dans le cadre de cet exercice de synthèse, nous nous limiterons à
donner la description textuelle des scénarios des cas d’utilisation de
l’activité catalogue (cas 1.1, 1.2 et 1.3).
Cas d’utilisation 1.1 : Gestion annuelle du catalogue
Deux scénarios peuvent être considérés : la création du gîte et
la modification du gîte.
Scénario 1.1.1 « Création gîte »
• Objectif – Permettre l’ajout d’un gîte dans le catalogue.
• Acteurs concernés – Gestionnaire catalogue.
• Pré conditions – Aucune.
• Scénario nominal
– 1. Créer un nouveau propriétaire s’il n’existe pas.
– 2. Créer un gîte.
– 3. Ajouter le gîte créé au catalogue.
• Scénarios alternatifs
– 1-a : Erreurs détectées dans la saisie du propriétaire :
– Le système réaffiche le formulaire de saisie en indiquant les erreurs
détectées.
– Le coordonnateur corrige les erreurs.
– Le cas d’utilisation reprend à l’action 1 du scénario nominal.
– 2-a : Erreurs détectées dans la saisie du gîte :
– Le système réaffiche le formulaire de saisie en indiquant les erreurs
détectées.
– Le coordonnateur corrige les erreurs.
– Le cas d’utilisation reprend à l’action 2 du scénario nominal.
Scénario 1.1.2 « Modification gîte »
• Objectif – Permettre la modification d’un gîte déjà présent dans le
catalogue.
• Acteurs concernés – Gestionnaire catalogue.
• Pré conditions – Aucune.
• Scénario nominal
– 1. Saisie et contrôle d’existence du gîte.
– 2. Saisie et contrôle d’existence du propriétaire.
– 3. Modification des données du gîte.
– 4. Modification éventuelle des activités du gîte,
• Scénarios alternatifs
– 1-a : Erreur de saisie du gîte :
– Le système réaffiche le formulaire de saisie en indiquant l’erreur
détectée.
– Le coordonnateur corrige les erreurs.
– Le cas d’utilisation reprend à l’action 1 du scénario nominal.
– 2-a : Erreurs de saisie du propriétaire :
– Le système réaffiche le formulaire de saisie en indiquant les erreurs
détectées.
– Le coordonnateur corrige les erreurs.
– Le cas d’utilisation reprend à l’action 2 du scénario nominal.
Cas d’utilisation 1.2 : Publication du catalogue
Ce cas d’utilisation ne comporte qu’un seul scénario.
Scénario « Publication du catalogue »
• Objectif – Permettre l’édition du catalogue.
• Acteurs concernés – Gestionnaire catalogue.
• Pré conditions – Aucune.
• Scénario nominal – Pour chaque gîte :
– 1. Rechercher les informations sur le propriétaire.
– 2. Afficher les tarifs de location à la semaine.
– 3. Afficher les activités disponibles.
• Scénarios alternatifs – Aucun.
Cas d’utilisation 1.3 : Mise à jour annuelle du gîte
Ce cas d’utilisation ne comporte qu’un seul scénario.
Scénario « Mise à jour annuelle du gîte »
• Objectif – Permettre la mise à jour du nombre d’étoile d’un gîte donné.
• Acteurs concernés – Gestionnaire catalogue.
• Pré conditions – Aucune.
• Scénario nominal :
– 1. Saisir le code propriétaire, le code du gîte et le nombre d’étoile.
– 2. Mettre à jour le nombre d’étoile.
• Scénarios alternatifs :
– 1-a : le propriétaire ou le gîte n’existe pas :
– Le système réaffiche le formulaire de saisie en indiquant l’erreur
détectée.
– Le gestionnaire corrige les erreurs.
– Le cas d’utilisation reprend à l’action 1 du scénario nominal.
B. DIAGRAMME D’ÉTAT-TRANSITION (DET)
B.1 Présentation générale et concepts de base
État-transition et événement
L’état d’un objet est défini, à un instant donné, par l’ensemble des
valeurs de ses propriétés. Seuls certains états caractéristiques du
domaine étudié sont considérés.
Le passage d’un état à un autre état s’appelle transition.
Un événement est un fait survenu qui déclenche une transition.
Il existe quatre types d’événements :
• Type appel de méthode (call) – C’est le type le plus courant que nous
traiterons dans la suite de la présentation.
• Type signal – Exemple : clic de souris, interruption d’entrées-sorties…
La modélisation de la réception ou l’émission d’un signal est traitée dans
le diagramme d’activité.
• Type changement de valeur (vrai/faux) – C’est le cas de l’évaluation
d’une expression booléenne.
• Type écoulement du temps – C’est un événement lié à une condition
de type after (durée) ou when (date).
Formalisme et exemple
Un objet reste dans un état pendant une certaine durée. La durée d’un
état correspond au temps qui s’écoule entre le début d’un état déclenché
par une transition i et la fin de l’état déclenché par la transition i+1. Une
condition, appelée « garde », peut être associée à une transition.
Le formalisme de représentation d’état-transition est donné en bas :
La figure suivante donne un premier exemple d’état-transition. Dans cet
exemple, pour un employé donné d’une entreprise, nous pouvons
considérer les deux états significatifs suivants : état recruté, état en
activité.
Action et activité
Une action est une opération instantanée qui ne peut être interrompue ;
elle est associée à une transition.
Une activité est une opération d’une certaine durée qui peut être
interrompue, elle est associée à un état d’un objet.
Formalisme et exemple
Le formalisme de représentation d’état-transition comprenant la
représentation d’action et/ou activité est donné à la figure ci-après :
La figure suivante montre un exemple des actions et activités d’états ainsi
que la description complète d’une transition.
B.2 Représentation du diagramme d’état-transition d’un objet
L’enchaînement de tous les états caractéristiques d’un objet constitue le
diagramme d’état. Un diagramme d’états débute toujours par un état
initial et se termine par un ou plusieurs états finaux sauf dans le cas où le
diagramme d’états représente une boucle. À un événement peut être
associé un message composé d’attributs.
Formalisme et exemple
Le formalisme de représentation des états initial et final est donné ci-
dessous :
Afin de nous rapprocher des situations réelles, nous proposons à la
figure suivante un premier exemple tiré d’une gestion commerciale qui
montre le diagramme d’état-transition de l’objet client.
Nous proposons comme second exemple, à la figure ci-après, le
diagramme d’état-transition de l’objet « personnel » qui se caractérise
par trois états :
• En prévision d’arrivée : si la date prévisionnelle est postérieure à la
date du jour.
• En activité : état qui correspond à un personnel ayant une date
d’arrivée renseignée.
• Parti : état qui correspond à un personnel ayant une date de départ
renseignée.
B.3 Compléments sur le diagramme d’état-transition
Composition et décomposition d’état
Il est possible de décrire un diagramme d’état-transition à plusieurs
niveaux. Ainsi, à un premier niveau, le diagramme comprendra des états
élémentaires et des états composites. Les états composites seront
ensuite décrits à un niveau élémentaire dans un autre diagramme. On
peut aussi parler d’état composé et d’état composant.
Formalisme et exemple
Le formalisme de représentation d’états composites est donné à la figure
suivante :
Dans cet exemple, l’état contrôlé est un état composite qui fait l’objet
d’une description individualisée à un second niveau que l’on appelle
aussi sous-machine d’état.
Point d’entrée et de sortie
Sur une sous-machine d’état, il est possible de repérer un point d’entrée
et un point de sortie particuliers.
Formalisme et exemple
Le formalisme de représentation d’une sous-machine d’état avec point
d’entrée et de sortie est donné à la figure ci-dessous :
Point de jonction
Lorsque l’on veut relier plusieurs états vers d’autres états, un point de
jonction permet de décomposer une transition en deux parties en
indiquant si nécessaire les gardes propres à chaque segment de la
transition.
À l’exécution, un seul parcours sera emprunté, c’est celui pour lequel
toutes les conditions de garde seront satisfaites.
Formalisme et exemple
Le formalisme de représentation d’états-transitions avec point de
jonction est donné à la figure ci-dessous.
Point de choix
Le point de choix se comporte comme un test de type : si condition faire
action1 sinon faire action2.
Formalisme et exemple
Le formalisme de représentation d’états composites est donné à la figure
ci-dessous.
État historique
La mention de l’historisation d’un état composite permet de pouvoir
indiquer la réutilisation du dernier état historisé en cas de besoin.
Formalisme et exemple
Le formalisme de représentation d’états historisés est donné à la figure
ci-dessous :
B.4 Exercices
Exercice 1
Énoncé
Soit à représenter le diagramme d’état-transition d’un objet personnel en
suivant les événements de gestion depuis le recrutement jusqu’à la mise
en retraite.
Après le recrutement, une personne est considérée en activité dès sa
prise de fonction dans l’entreprise. Au cours de sa carrière, nous
retiendrons seulement les événements : congé de maladie et prise de
congé annuel. En fin de carrière, nous retiendrons deux situations : la
démission et la retraite.
Corrigé
Nous proposons un corrigé type à la figure suivante. Ce corrigé ne
représente qu’une solution parmi d’autres variantes possibles suivant la
lecture faite de l’énoncé. Pour notre part, nous avons retenu les états
caractéristiques : recruté, activité, en congé, en arrêt, parti et retraite.
Exercice de synthèse
En se replaçant dans l’exercice de synthèse Locagite, nous allons retenir
l’objet « Gîtes gérés » comme support d’application du diagramme
d’état-transition. Quatre états permettent de caractériser son
comportement :
• État 1 : Gîte à louer
• État 2 : Gîte réservé
• État 3 : Gîte réservé ferme
• État 4 : Gîte réservé loué
La figure suivante représente le diagramme d’état-transition de cet objet.
C. DIAGRAMME D’ACTIVITÉ (DAC)
C.1 Présentation générale et concepts de base
Le diagramme d’activité présente un certain nombre de points
communs avec le diagramme d’état-transition puisqu’il concerne le
comportement interne des opérations ou des cas d’utilisation. Cependant
le comportement visé ici s’applique aux flots de contrôle et aux flots de
données propres à un ensemble d’activités et non plus relativement à
une seule classe.
Les concepts communs ou très proches entre le diagramme d’activité et
le diagramme d’état-transition sont :
• transition,
• nœud initial (état initial),
• nœud final (état final),
• ⊗ nœud de fin flot (état de sortie),
• ◊ nœud de décision (choix).
Le formalisme reste identique pour ces nœuds de contrôle.
Les concepts spécifiques au diagramme d’activité sont :
• nœud de bifurcation,
• nœud de jonction,
• nœud de fusion,
• pin d’entrée et de sortie,
• flot d’objet,
• partition.
Nous avons par ailleurs réservé un traitement particulier pour les concepts
action et activité. En effet, étant donné que ces concepts sont au cœur du
diagramme d’activité, nous avons préféré les traiter de manière détaillée à ce
niveau alors qu’ils sont déjà évoqués dans le diagramme d’état-transition.
Action
Une action correspond à un traitement qui modifie l’état du système.
Cette action peut être appréhendée soit à un niveau élémentaire proche
d’une instruction en termes de programmation soit à un niveau plus
global correspondant à une ou plusieurs opérations.
Formalisme et exemple
Une action est représentée par un rectangle dont les coins sont arrondis
comme pour les états du diagramme d’état-transition.
Transition et flot de contrôle
Dès qu’une action est achevée, une transition automatique est
déclenchée vers l’action suivante. Il n’y a donc pas d’événement associé à
la transition.
L’enchaînement des actions constitue le flot de contrôle.
Formalisme et exemple
Le formalisme de représentation d’une transition est donné à la figure
suivante :
Activité
Une activité représente le comportement d’une partie du système en
termes d’actions et de transitions. Une activité est composée de trois
types de nœuds :
• nœud d’exécution (action, transition),
• nœud de contrôle (nœud initial, nœud final, flux de sortie, nœud de
bifurcation, nœud de jonction, nœud de fusion-test, nœud de test-
décision, pin d’entrée et de sortie),
• nœud d’objet.
Une activité peut recevoir des paramètres en entrée et en produire en
sortie.
Formalisme et exemple
Nous donnons une première représentation simple à la figure ci-après :
Nœud de bifurcation (fourche)
Un nœud de bifurcation (fourche) permet à partir d’un flot unique
entrant de créer plusieurs flots concurrents en sortie de la barre de
synchronisation.
Formalisme et exemple
Le formalisme de représentation de nœud de bifurcation ainsi qu’un
premier exemple sont donnés à la figure ci-dessous. Un second exemple
avec nœud de bifurcation est donné aussi.
Nœud de jonction (synchronisation)
Un Nœud de jonction (synchronisation) permet, à partir de plusieurs
flots concurrents en entrée de la synchronisation, de produire un flot
unique sortant. Le nœud de jonction est le symétrique du nœud de
bifurcation.
Formalisme et exemple
Le formalisme de représentation d’un nœud de jonction est donné à la
figure suivante.
Nœud de test-décision
Un Nœud de test-décision permet de faire un choix entre plusieurs flots
sortants en fonction des conditions de garde de chaque flot. Un nœud
de test-décision n’a qu’un seul flot en entrée. On peut aussi utiliser
seulement deux flots de sortie : le premier correspondant à la condition
vérifiée et l’autre traitant le cas sinon.
Formalisme et exemple
Le formalisme de représentation d’un nœud de test-décision ainsi qu’un
premier exemple sont donnés à la figure suivante. Un second exemple
avec nœud de test-décision est donné également.
Nœud de fusion-test
Un nœud de fusion-test permet d’avoir plusieurs flots entrants possibles
et un seul flot sortant. Le flot sortant est donc exécuté dès qu’un des flots
entrants est activé.
Formalisme et exemple
Le formalisme de représentation d’un nœud de fusion-test ainsi qu’un
exemple sont donnés à la figure ci-dessous !
Pin d’entrée et de sortie
Un pin d’entrée ou de sortie représente un paramètre que l’on peut
spécifier en entrée ou en sortie d’une action. Un nom de donnée et un
type de donnée peuvent être associés au pin. Un paramètre peut être de
type objet.
Formalisme et exemple
Chaque paramètre se représente dans un petit rectangle. Le nom du
paramètre ainsi que son type sont aussi à indiquer. Le formalisme de
représentation de pin d’entrée ou de sortie ainsi qu’un exemple sont
donnés à la figure suivante :
Flot de données et nœud d’objet
Un nœud d’objet permet de représenter le flot de données véhiculé
entre les actions. Les objets peuvent se représenter de deux manières
différentes : soit en utilisant le pin d’objet soit en représentant
explicitement un objet.
Formalisme et exemple
Le formalisme de représentation de flot de données et nœud d’objet est
donné directement au travers cet exemple :
Partition
UML permet aussi d’organiser la présentation du diagramme d’activité en
couloir d’activités. Chaque couloir correspond à un domaine de
responsabilité d’un certain nombre d’actions.
Les flots d’objets sont aussi représentés dans le diagramme. L’ordre
relatif des couloirs de responsabilité n’est pas significatif.
C.2 Représentation du diagramme d’activité
Un exemple général de diagramme d’activité est donné à la figure ci-
après :
Représentation d’actions de communication
Dans un diagramme d’activité, comme dans un diagramme de temps,
des interactions de communication liées à certains types d’événement
peuvent se représenter.
Les types d’événement concernés sont :
• signal,
• écoulement du temps.
Formalisme et exemple
Le formalisme de représentation ainsi qu’un exemple d’actions de
communication sont donnés à la figure ci-dessous :
C.3 Exercices
Exercice 1
En reprenant l’exercice relatif à la gestion de la bibliothèque traité dans
les cas d’utilisation nous pouvons élaborer le diagramme d’activité
correspondant.
Deux acteurs ont été identifiés :
• Bibliothécaire chargé de l’approvisionnement des ouvrages, de la
gestion du catalogue et de l’enregistrement des emprunts et retours
d’ouvrages ;
• Gestionnaire, chargé de l’inscription des adhérents et de la relance des
adhérents ayant dépassé le délai de restitution des ouvrages.
La représentation du diagramme d’activité est donnée à la figure ci-
dessous :
Exercice de synthèse
La figure ci-dessous représente le diagramme d’activité de Locagite. Ce
diagramme nous permet de montrer, par couloir de responsabilité des
acteurs internes à Locagite, les états-actions exécutés.
D. DIAGRAMME DE SÉQUENCE (DSE)
D.1 Présentation générale et concepts de base
L’objectif du diagramme de séquence est de représenter les interactions
entre objets en indiquant la chronologie des échanges. Cette
représentation peut se réaliser par cas d’utilisation en considérant les
différents scénarios associés.
Un diagramme de séquence se représente globalement dans un grand
rectangle avec indication du nom du diagramme en haut à gauche
comme indiqué à la figure suivante :
Ligne de vie
Une ligne de vie représente l’ensemble des opérations exécutées par un
objet. Un message reçu par un objet déclenche l’exécution d’une
opération. Le retour d’information peut être implicite (cas général) ou
explicite à l’aide d’un message de retour.
Message synchrone et asynchrone
Dans un diagramme de séquence, deux types de messages peuvent être
distingués :
• Message synchrone – Dans ce cas l’émetteur reste en attente de la
réponse à son message avant de poursuivre ses actions. La flèche avec
extrémité pleine symbolise ce type de message. Le message retour peut
ne pas être représenté car il est inclus dans la fin d’exécution de
l’opération de l’objet destinataire du message. Voir le message 1 de la
figure ci-dessous.
• Message asynchrone – Dans ce cas, l’émetteur n’attend pas la réponse
à son message, il poursuit l’exécution de ses opérations. C’est une flèche
avec une extrémité non pleine qui symbolise ce type de message. Voir le
message 2 de la figure ci-dessous.
Formalisme et exemple
Le formalisme est donné dans l’exemple type présenté à la figure aussi.
D.2 Opérations particulières
Création et destruction d’objet
Si un objet est créé par une opération, celui-ci n’apparaît qu’au moment
où il est créé. Si l’objet est détruit par une opération, la destruction se
représente par « X ».
Un exemple type est donné à la figure
Nota : Il est aussi possible dans certains outils de modélisation d’indiquer
plus simplement la création d’une nouvelle instance d’objet en utilisant le
mot-clé « create »
Contrainte temporelle
Des contraintes de chronologie entre les messages peuvent être
spécifiées. De plus lorsque l’émission d’un message requiert une certaine
durée, il se représente sous la forme d’un trait oblique. Un exemple
général de contrainte temporelle est donné à la figure ci-dessous.
Lorsque le diagramme de séquence est utilisé pour représenter un sous-
ensemble du logiciel à réaliser, il est possible d’indiquer le pseudo-code
exécuté par un objet pendant le déroulement d’une opération.
D.3 Fragment d’interaction
Types de fragments d’interaction
Dans un diagramme de séquence, il est possible de distinguer des sous-
ensembles d’interactions qui constituent des fragments.
Un fragment d’interaction se représente globalement comme un
diagramme de séquence dans un rectangle avec indication dans le coin à
gauche du nom du fragment.
Un port d’entrée et un port de sortie peuvent être indiqués pour
connaître la manière dont ce fragment peut être relié au reste du
diagramme comme le montre la figure suivante. Dans le cas où aucun
port n’est indiqué c’est l’ensemble du fragment qui est appelé pour
exécution.
Formalisme et exemple
Dans l’exemple proposé, le fragment « Contrôler Produit » est représenté
avec un port d’entrée et un port de sortie.
Un fragment d’interaction dit combiner correspond à un ensemble
d’interaction auquel on applique un opérateur. Un fragment combiné se
représente globalement comme un diagramme de séquence avec
indication dans le coin à gauche du nom de l’opérateur.
Treize opérateurs ont été définis dans UML : alt, opt, loop, par, strict/weak,
break, ignore/consider, critical, negative, assertion et ref.
Opérateur alt
L’opérateur alt correspond à une instruction de test avec une ou
plusieurs alternatives possibles. Il est aussi permis d’utiliser les clauses de
type sinon.
Formalisme et exemple
L’opérateur alt se représente dans un fragment possédant au moins deux
parties séparées par des pointillés. L’exemple donné ci-dessous montre
l’équivalent d’un test à deux conditions explicites (sans clause sinon).
Opérateur opt
L’opérateur opt (optional) correspond à une instruction de test sans
alternative (sinon).
Formalisme et exemple
L’opérateur opt se représente dans un fragment possédant une seule
partie.
Opérateur loop
L’opérateur loop correspond à une instruction de boucle qui permet
d’exécuter une séquence d’interaction tant qu’une condition est
satisfaite.
Il est possible aussi d’utiliser une condition portant sur un nombre
minimum et maximum d’exécution de la boucle en écrivant : loop min,
max. Dans ce cas, la boucle s’exécutera au minimum min fois et au
maximum max fois. Il est aussi possible de combiner l’option min/max
avec la condition associée à la boucle.
Formalisme et exemple
L’opérateur loop se représente dans un fragment possédant une seule
partie et englobant toutes les interactions faisant partie de la boucle. Un
exemple est donné à la figure ci-dessous :
Opérateur par
L’opérateur par (parallel) permet de représenter deux séries
d’interactions qui se déroulent en parallèle.
Formalisme et exemple
L’opérateur par se représente dans un fragment possédant deux parties
séparées par une ligne en pointillé. C’est un opérateur qui est à notre avis
plutôt utilisé dans l’informatique temps réel et c’est pour cela que nous
ne donnerons qu’un exemple type :
Opérateurs strict et weak sequencing
Les opérateurs srict et weak permettent de représenter une série
d’interactions dont certaines s’opèrent sur des objets indépendants :
• L’opérateur strict est utilisé quand l’ordre d’exécution des opérations
doit être strictement respecté.
• L’opérateur weak est utilisé quand l’ordre d’exécution des opérations
n’a pas d’importance.
Formalisme et exemple
L’exemple présenté figure ci-dessous montre que les opérations A1, A2,
B1, B2 et A3 doivent être exécutées dans cet ordre puisqu’elles font
partie du fragment d’interaction comportant l’opérateur strict.
Opérateur break
L’opérateur break permet de représenter une situation exceptionnelle
correspondant à un scénario de rupture par rapport au scénario général.
Le scénario de rupture s’exécute si la condition de garde est satisfaite.
Formalisme et exemple
L’exemple présenté figure ci-dessous montre que les opérations
annulerOp1( ), annulerOp2( ) et afficherAide( ) ne seront exécutées que si
la touche F1 est activée sinon le fragment est ignoré et la séquence de
traitement passe directement de l’opération Op2( ) à l’opération Op3( ).
Opérateurs ignore et consider
Les opérateurs ignore et consider sont utilisés pour des fragments
d’interactions dans lesquels on veut montrer que certains messages
peuvent être soit absents sans avoir d’incidence sur le déroulement des
interactions (ignore), soit obligatoirement présents (consider).
Formalisme et exemple
L’exemple présenté figure ci-dessous montre que :
• dans le fragment consider, les messages Op1, Op2 et Op5 doivent être
obligatoirement présents lors de l’exécution du fragment sinon le
fragment n’est pas exécuté,
• dans le fragment ignore, les messages Op2 et Op3 peuvent être
absents lors de l’exécution du fragment.
Opérateur critical
L’opérateur critical permet d’indiquer qu’une séquence d’interactions ne
peut être interrompue compte tenu du caractère critique des opérations
traitées. On considère que le traitement des interactions comprises dans
la séquence critique est atomique.
Formalisme et exemple
L’exemple présenté figure ci-dessous montre que les opérations Op1( ),
Op2( ) et Op3( ) du fragment critical doivent s’exécuter sans interruption.
Opérateur negative
L’opérateur neg (negative) permet d’indiquer qu’une séquence
d’interactions est invalide.
Formalisme et exemple
L’exemple présenté figure ci-dessous montre que les opérations Op1( ) et
Op2( ) du fragment neg sont invalides. Une erreur sera déclenchée dans
ce cas à l’exécution du fragment.
Opérateur assertion
L’opérateur assert (assertion) permet d’indiquer qu’une séquence
d’interactions est l’unique séquence possible en considérant les
messages échangés dans le fragment.
Toute autre configuration de message est invalide.
Formalisme et exemple
L’exemple présenté figure ci-dessous montre que le fragment assert ne
s’exécutera que si l’unique séquence de traitement Op1( ), Op2( ) et Op3(
) se réalise en respectant l’ensemble des caractéristiques de ces
opérations (paramètre d’entrée, type de résultat…). Toute autre situation
sera considérée invalide.
Opérateur ref
L’opérateur ref permet d’appeler une séquence d’interactions décrite par
ailleurs constituant ainsi une sorte de sous-diagramme de séquence.
Formalisme et exemple
L’exemple présenté figure ci-dessous montre que l’on fait appel à un
fragment « Contrôle des droits » qui est décrit par ailleurs.
D.4 Autre utilisation du diagramme de séquence
Le diagramme de séquence peut être aussi utilisé pour
documenter un cas d’utilisation.
Les interactions entre objets représentent, dans ce cas, des flux
d’informations échangés et non pas de véritables messages entre les
opérations des objets. Un exemple de cette utilisation du diagramme de
séquence est donné à la figure dessous :
D.5 Exercices
Exercice 1
En se référant au sujet de l’exercice 3 du diagramme de classe,
nous donnons à titre d’exemple, le diagramme de séquence. Ce scénario
correspond à la création d’une agence intégrant la création d’une
personne.
Exercice de synthèse
Nous reprenons ici les cas d’utilisation décrits dans l’exercice de synthèse
du DCU ci-haut.
La figure ci-dessous représente le DSE du cas d’utilisation Gestion
annuelle du catalogue.
La figure ci-après représente le DSE du cas d’utilisation Publication du
catalogue.
E. DIAGRAMME DE COMMUNICATION (DCO)
E.1 Présentation générale et concepts de base
Le diagramme de communication constitue une autre
représentation des interactions que celle du diagramme de séquence. En
effet, le diagramme de communication met plus l’accent sur l’aspect
spatial des échanges que l’aspect temporel.
Rôle
Chaque participant à un échange de message correspondant à
une ligne de vie dans le diagramme de séquence se représente sous
forme d’un rôle dans le diagramme de communication. Un rôle est
identifié par :
<nom de rôle> : <nom du type>
Une des deux parties de cette identification est obligatoire ainsi
que le séparateur « : ». Le nom du rôle correspond au nom de l’objet
dans le cas où l’acteur ou la classe ont un rôle unique par rapport au
système. Le nom du type correspond au nom de la classe lorsque l’on
manipule des objets.
Exemple
administrateur : utilisateur
Pour un utilisateur qui est vu au travers de son rôle d’administrateur.
Message
Un message correspond à un appel d’opération effectué par un
rôle émetteur vers un rôle récepteur. Le sens du message est donné par
une flèche portée au-dessus du lien reliant les participants au message
(origine et destinataire). Chaque message est identifié par :
<numéro> : nom ( )
Plus précisément l’identification d’un message doit respecter la
syntaxe suivante :
[n° du message préc. reçu] « . » n° du message [clause d’itération]
[condition]
« : » nom du message.
• Numéro du message précédent reçu : permet d’indiquer la chronologie
des messages.
• Numéro du message : numéro hiérarchique du message de type 1.1,
1.2… avec utilisation de lettre pour indiquer la simultanéité d’envoi de
message.
• Clause d’itération : indique si l’envoi du message est répété. La syntaxe
est * [spécification de l’itération].
• Condition : indique si l’envoi du message est soumis à une condition à
satisfaire.
Exemples
1.2.1 * [3 fois] pour un message à adresser trois fois de suite.
1.2a et 1.2b pour deux messages envoyés en même temps.
Exemple récapitulatif de désignation de message :
1.2a.1.1[si t > 100] : lancer( )
Ce message signifie :
• 1.2a : numéro du message reçu avant l’envoi du message courant.
• 1.1 : numéro de message courant à envoyer.
• [si t > 100] : message à envoyer si t > 100.
• lancer( ) : nom du message à envoyer.
E.2 Formalisme et exemple
Les rôles correspondent à des objets. Le lien entre les rôles est
représenté par un trait matérialisant le support des messages échangés.
La figure ci-dessous donne le formalisme de base du diagramme de
communication.
Un exemple de diagramme de communication est donné ici :
E.3 Exercices
Exercice 1
En reprenant le sujet de l’exercice 1 du diagramme de séquence, nous
donnons ci-dessous son équivalent en diagramme de communication.
F. DIAGRAMME GLOBAL D’INTERACTION (DGI)
F.1 Présentation générale et concepts de base
Le diagramme global d’interaction permet de représenter une
vue générale des interactions décrites dans le diagramme de séquence et
des flots de contrôle décrits dans le diagramme d’activité.
Le diagramme global d’interaction privilégie la vue générale des
flux de contrôle dans lesquels les nœuds sont des interactions ou des
utilisations d’interactions (opérateur ref).
Autrement dit, le diagramme global d’interaction est un
diagramme d’activité dans lequel on représente des fragments
d’interaction ou des utilisations d’interactions.
Ainsi, il est possible de représenter :
des choix de fragments d’interactions (fusion) ;
des déroulements parallèles de fragments d’interactions
(débranchement et jonction) ;
des boucles de fragments d’interaction.
Les lignes de vie concernées par le diagramme global
d’interaction peuvent être citées dans l’en-tête du diagramme mais ne
sont pas à représenter graphiquement.
Concepts manipulés
Le diagramme global d’interaction utilise les concepts du
diagramme d’activité auquel on ajoute deux compléments :
• Les fragments d’interaction du diagramme de séquence – Il s’agit
comme le montre la figure ci-dessous de la notion de fragment
d’interaction vue dans le diagramme de séquence mais qui ne doit pas
être détaillé à ce niveau.
• Les utilisations de fragments d’interaction – Il est aussi possible de
faire appel à des fragments d’interaction à l’aide de l’opérateur ref
comme le montre la figure suivante :
F.2 Représentation et exemple
La figure ci-dessous donne un exemple de diagramme global
d’interaction.
G. DIAGRAMME DE TEMPS (DTP)
G.1 Présentation générale et concepts de base
Le diagramme de temps permet de représenter les états et les
interactions d’objets dans un contexte où le temps a une forte influence
sur le comportement du système à gérer.
Autrement dit, le diagramme de temps permet de mieux
représenter des changements d’états et des interactions entre objets liés
à des contraintes de temps.
Pour cela, le diagramme de temps utilise en plus des lignes de
vie, les concepts suivants :
• Des états ou des lignes de temps conditionnées avec deux
représentations graphiques possibles.
• Des représentations propres aux aspects temporels : échelle de temps,
contrainte de durée, événements…
Concepts manipulés
Le diagramme de temps utilise trois concepts de base :
• Ligne de vie – Elle représente l’objet que l’on veut décrire. Elle se
dessine de manière horizontale. Plusieurs lignes de vie peuvent figurer
dans un diagramme de temps.
• État ou ligne de temps conditionnée – Les différents états que peut
prendre l’objet d’étude sont listés en colonne permettant ainsi de suivre
le comportement de l’objet ligne par ligne (une ligne pour un état).
• États linéaires – Il s’agit du même concept que le précédent, mais la
représentation de la succession des états est faite de manière linéaire à
l’aide d’un graphisme particulier.
G.2 Représentation et exemples
Soit à représenter le dispositif de chauffe d’un fer à repasser à
vapeur au moment de sa mise en service selon les règles suivantes :
• la pompe à eau qui remplit la chambre de chauffe s’active dès que le
témoin d’eau interne la demande ;
• la pompe à eau se désactive dès que le niveau d’eau nécessaire est
atteint ;
• le chauffage de l’eau, permettant de produire la vapeur, se met en
action à la première mise en service du fer à repasser dès que le niveau
d’eau de la chambre de chauffe est suffisant ;
• le chauffage initial de l’eau dure 3 mm permettant ainsi de produire la
vapeur.
Dans cet exemple, nous avons deux objets à étudier : pompe à
eau et chauffage de l’eau. Nous allons considérer pour chacun d’entre
eux deux états significatifs : activé et désactivé.
La figure 1 donne la représentation du diagramme de temps en
utilisant le formalisme des états « en escalier » et la figure 2 fournit la
représentation linéaire des états.
IV.2.3.2. Les diagrammes structurels
Les diagrammes structures ces derniers sont basés sur la
description de la partie statique du système à modéliser. Six diagrammes
sont proposés par UML 2 pour assurer cette description :
le diagramme de classe(DCL),
le diagramme d’objet (DOB),
le diagramme de composant (DCP),
le diagramme de déploiement (DPL),
le diagramme de paquetage (DPA),
le diagramme de structure composite (DSC)
A. DIAGRAMME DE CLASSE (DCL) ET DIAGRAMME D’OBJET (DOB)
Le diagramme de classe constitue l’un des pivots essentiels de
la modélisation avec UML. En effet, ce diagramme permet de donner la
représentation statique du système à développer.
Cette représentation est centrée sur les concepts de classe et
d’association. Chaque classe se décrit par les données et les traitements
dont elle est responsable pour elle-même et vis-à-vis des autres classes.
Les traitements sont matérialisés par des opérations.
Le détail des traitements n’est pas représenté directement dans
le diagramme de classe ; seul l’algorithme général et le pseudo-code
correspondant peuvent être associés à la modélisation.
La description du diagramme de classe est fondée sur :
• le concept d’objet,
• le concept de classe comprenant les attributs et les opérations,
• les différents types d’association entre classes.
A.1 Objet
Nous allons donner une première définition du concept d’objet
avant de traiter le concept de classe. La description d’un objet sera
complétée simultanément à la présentation du concept de classe.
Un objet est un concept, une abstraction ou une chose qui a un
sens dans le contexte du système à modéliser. Chaque objet a une
identité et peut être distingué des autres sans considérer a priori les
valeurs de ses propriétés.
Exemple
La figure ci-dessous montre des exemples d’objets physiques
(une chaise, une voiture, une personne, un vélo) et d’objets de gestion (la
Commande n° 12, le Client Durand).
Autres caractéristiques
Un objet est caractérisé par les valeurs de ses propriétés qui lui
confèrent des états significatifs suivant les instants considérés. Le
formalisme de représentation d’un objet est donné après celui d’une
classe.
A.2 Classe, attribut et opération
Classe
Une classe décrit un groupe d’objets ayant les mêmes
propriétés (attributs), un même comportement (opérations), et une
sémantique commune (domaine de définition).
Un objet est une instance d’une classe. La classe représente
l’abstraction de ses objets. Au niveau de l’implémentation, c’est-à-dire au
cours de l’exécution d’un programme, l’identificateur d’un objet
correspond une adresse mémoire.
Formalisme général et exemple
Une classe se représente à l’aide d’un rectangle comportant
plusieurs compartiments.
Les trois compartiments de base sont :
• la désignation de la classe,
• la description des attributs,
• la description des opérations.
Deux autres compartiments peuvent être aussi indiqués :
• la description des responsabilités de la classe,
• la description des exceptions traitées par la classe.
Il est possible de manipuler les classes en limitant le niveau de
description à un nombre réduit de compartiments selon les objectifs
poursuivis par le modélisateur.
Ainsi les situations suivantes sont possibles pour la
manipulation d’une description restreinte de classe :
• description uniquement du nom et des caractéristiques générales de la
classe,
• description du nom de la classe et de la liste d’attributs.
Le croquis ci-après montre le formalisme général des compartiments
d’une classe et des premiers exemples.
Attribut
Un attribut est une propriété élémentaire d’une classe. Pour
chaque objet d’une classe, l’attribut prend une valeur (sauf cas d’attributs
multivalués).
Formalisme et exemple
Le croquis ci-dessous montre le formalisme et un exemple de
représentation des attributs de classe.
Caractéristiques
Le nom de la classe peut être qualifié par un « stéréotype ». La
description complète des attributs d’une classe comporte un certain
nombre de caractéristiques qui doivent respecter le formalisme suivant :
• Visibilité/Nom attribut : type [= valeur initiale {propriétés}]
– Visibilité : se reporter aux explications données plus loin sur ce point.
– Nom d’attribut : nom unique dans sa classe.
– Type : type primitif (entier, chaîne de caractères…) dépendant des types
disponibles dans le langage d’implémentation ou type classe
matérialisant un lien avec une autre classe.
– Valeur initiale : valeur facultative donnée à l’initialisation d’un objet de
la classe.
– {propriétés} : valeurs marquées facultatives (ex. : « interdit » pour mise à
jour interdite).
Un attribut peut avoir des valeurs multiples. Dans ce cas, cette
caractéristique est indiquée après le nom de l’attribut (ex. : prénom [3]
pour une personne qui peut avoir trois prénoms).
Un attribut dont la valeur peut être calculée à partir d’autres
attributs de la classe est un attribut dérivé qui se note « /nom de
l’attribut dérivé ». Un exemple d’attribut dérivé est donné à la figure plus
loin.
Opération
Une opération est une fonction applicable aux objets d’une
classe. Une opération permet de décrire le comportement d’un objet.
Une méthode est l’implémentation d’une opération.
Formalisme et exemple
Chaque opération est désignée soit seulement par son nom soit
par son nom, sa liste de paramètres et son type de résultat. La signature
d’une méthode correspond au nom de la méthode et la liste des
paramètres en entrée. La figure ci-dessous montre le formalisme et un
exemple de représentation d’opérations de classe.
Caractéristiques
La description complète des opérations d’une classe comporte
un certain nombre de caractéristiques qui doivent respecter le
formalisme suivant :
• Visibilité Nom d’opération (paramètres) [:[type résultat]
{propriétés}]
– Visibilité : se reporter aux explications données plus loin sur ce point.
– Nom d’opération : utiliser un verbe représentant l’action à réaliser.
– Paramètres : liste de paramètres (chaque paramètre peut être décrit, en
plus de son nom, par son type et sa valeur par défaut). L’absence de
paramètre est indiquée par ( ).
– Type résultat : type de (s) valeur(s) retourné(s) dépendant des types
disponibles dans le langage d’implémentation. Par défaut, une opération
ne retourne pas de valeur, ceci est indiqué par exemple par le mot
réservé « void » dans le langage C++, Java ou C#.
– {propriétés} : valeurs facultatives applicables (ex. : {query} pour un
comportement sans influence sur l’état du système).
Exemples de classes et représentation d’objets
La figure 2.5 présente l’exemple d’une classe « Voiture ». La figure 2.6
donne le formalisme d’un objet.
Nota : (1) Le nom d’un objet peut être désigné sous trois formes : nom
de l’objet, désignation directe et explicite d’un objet ; nom de l’objet :
nom de la classe, désignation incluant le nom de la classe; : nom de la
classe, désignation anonyme d’un objet d’une classe donnée.
Il est utile de préciser que la représentation des objets sera
utilisée dans plusieurs autres diagrammes importants d’UML. C’est le cas
notamment du diagramme de séquence ou encore du diagramme d’état-
transition. La figure 2.7 présente des exemples d’objets.
Visibilité des attributs et opérations
Chaque attribut ou opération d’une classe peut être de type
public, protégé, privé ou paquetage. Les symboles + (public), # (protégé),
- (privé) et ~ (paquetage) sont indiqués devant chaque attribut ou
opération pour signifier le type de visibilité autorisé pour les autres
classes.
Les droits associés à chaque niveau de confidentialité sont :
• Public (+) – Attribut ou opération visible par tous.
• Protégé (#) – Attribut ou opération visible seulement à l’intérieur de la
classe et pour toutes les sous-classes de la classe.
• Privé (-) – Attribut ou opération seulement visible à l’intérieur de la
classe.
• Paquetage (~) – Attribut ou opération ou classe seulement visible à
l’intérieur du paquetage où se trouve la classe.
Exemple
La figure ci-dessous montre un exemple d’utilisation des
symboles de la visibilité des éléments d’une classe.
Dans cet exemple, tous les attributs sont déclarés de type privé, les
opérations « démarrer » et « freiner » sont de type public, l’opération «
rouler » est de type privé et l’opération « arrêter » est de type protégé.
Attribut ou opération de niveau classe
Caractéristiques
Un attribut ou une opération peut être défini non pas au
niveau des instances d’une classe, mais au niveau de la classe. Il s’agit
soit d’un attribut qui est une constante pour toutes les instances d’une
classe soit d’une opération d’une classe abstraite ou soit par exemple
d’une opération « créer » qui peut être définie au niveau de la classe et
applicable à la classe elle-même.
Formalisme et exemple
C’est le soulignement de l’attribut ou de l’opération qui
caractérise cette propriété.
Dans l’exemple de la figure ci-dessous, l’attribut « ristourne »
est de type classe et l’opération « créer » est une opération exécutable au
niveau de la classe.
A.3 Association, multiplicité, navigabilité et contraintes
Lien et association
Un lien est une connexion physique ou conceptuelle entre
instances de classes donc entre objets.
Une association décrit un groupe de liens ayant une même
structure et une même sémantique. Un lien est une instance d’une
association. Chaque association peut être identifiée par son nom.
Une association entre classes représente les liens qui existent
entre les instances de ces classes.
Formalisme et exemple
La figure ci-dessous donne le formalisme de l’association. Le
symbole (facultatif) indique le sens de lecture de l’association. Dans cette
figure est donné aussi un exemple de représentation d’une association.
Rôle d’association
Le rôle tenu par une classe vis-à-vis d’une association peut être
précisé sur l’association.
Exemple
Multiplicité
La multiplicité indique un domaine de valeurs pour préciser le
nombre d’instance d’une classe vis-à-vis d’une autre classe pour une
association donnée. La multiplicité peut aussi être utilisée pour d’autres
usages comme par exemple un attribut multivalué.
Le domaine de valeurs est décrit selon plusieurs formes :
• Intervalle fermé – Exemple : 2, 3 ..15.
• Valeurs exactes – Exemple : 3, 5, 8.
• Valeur indéterminée notée * – Exemple : 1..*.
– Dans le cas où l’on utilise seulement *, cela traduit une multiplicité 0..*.
– Dans le cas de multiplicité d’associations, il faut indiquer les valeurs
minimale et maximale d’instances d’une classe vis-à-vis d’une instance
d’une autre classe.
Formalisme et exemple
Nous donnons, à la figure ci-dessous, quelques exemples des
principales multiplicités définies dans UML.
Navigabilité
La navigabilité indique si l’association fonctionne de manière
unidirectionnelle ou bidirectionnelle, elle est matérialisée par une ou
deux extrémités fléchées. La non-navigabilité se représente par un « X »
Les situations possibles de navigabilité sont représentées à la
figure suivante :
Par défaut, on admet qu’une navigabilité non définie
correspond à une navigabilité implicite.
Dans l’exemple donné à la figure ci-dessous, à une personne
sont associées ses copies d’examen mais l’inverse n’est pas possible
(retrouver directement l’auteur de la copie d’examen, notamment avant
la correction de la copie).
Contraintes
D’autres propriétés particulières (contraintes) sont proposées
dans UML pour préciser la sémantique d’une association.
Ordre de tri
Pour une association de multiplicité supérieure à 1, les liens
peuvent être :
• non ordonnés (valeur par défaut),
• ordonnés ou triés lorsque l’on est au niveau de l’implémentation (tri sur
une valeur interne).
Exemple
Dans cet exemple, pour une entreprise donnée, les personnes
seront enregistrées suivant un ordre qui correspondra à un des attributs
de Personne.
Propriétés de mise à jour de liens
Il est possible d’indiquer des contraintes particulières relatives
aux conditions de mise à jour des liens.
• {interdit} : interdit l’ajout, la suppression ou la mise à jour des liens.
• {ajout seul} : n’autorise que l’ajout de liens.
Association de dimension supérieure à 2 et classe-association
Une association de dimension supérieure à 2 se représente en
utilisant un losange permettant de relier toutes les classes concernées.
Une classe-association permet de décrire soit des attributs soit
des opérations propres à l’association. Cette classe-association est elle-
même reliée par un trait en pointillé au losange de connexion. Une
classe-association peut être reliée à d’autres classes d’un diagramme de
classes.
Exemple
Un exemple d’une association de dimension 3 comprenant une
classe-association « Affectation » est donné à la figure ci-dessous. La
classe-association Affectation permet de décrire les attributs propres à
l’association de dimension 3 représentée.
A.4 Agrégation et composition entre classes
Agrégation
L’agrégation est une association qui permet de représenter un
lien de type « ensemble » comprenant des « éléments ». Il s’agit d’une
relation entre une classe représentant le niveau « ensemble » et 1 à n
classes de niveau « éléments ». L’agrégation représente un lien structurel
entre une classe et une ou plusieurs autres classes.
Formalisme et exemple
Dans cet exemple suivant, nous avons modélisé le fait qu’un
ordinateur comprend une UC, un clavier et un écran.
Composition
La composition est une relation d’agrégation dans laquelle il
existe une contrainte de durée de vie entre la classe « composant » et la
ou les classes « composé ».
Autrement dit la suppression de la classe « composé » implique
la suppression de la ou des classes « composant ».
Formalisme et exemple
La figure 1 donne le formalisme général de la composition. La figure 2
montre un exemple de relation de composition. Une seconde forme de
présentation peut être aussi utilisée, elle est illustrée à la figure 3.
A.5 Association qualifiée, dépendance et classe d’interface
Qualification
La qualification d’une relation entre deux classes permet de
préciser la sémantique de l’association et de qualifier de manière
restrictive les liens entre les instances. Seules les instances possédant
l’attribut indiqué dans la qualification sont concernées par l’association.
Cet attribut ne fait pas partie de l’association.
Formalisme et exemple
Soit la relation entre les répertoires et les fichiers appartenant à
ces répertoires. À un répertoire est associé 0 à n fichiers. Si l’on veut
restreindre cette association pour ne considérer qu’un fichier associé à
son répertoire, la relation qualifiée est alors utilisée pour cela. La figure
suivante montre la représentation de ces deux situations.
Dépendance
La dépendance entre deux classes permet de représenter
l’existence d’un lien sémantique.
Une classe B est en dépendance de la classe A si des éléments de la
classe A sont nécessaires pour construire la classe B.
Formalisme et exemple
La relation de dépendance se représente par une flèche en pointillé entre
deux classes.
Interface
Une classe d’interface permet de décrire la vue externe d’une
classe. La classe d’interface, identifiée par un nom, comporte la liste des
opérations accessibles par les autres classes. Le compartiment des
attributs ne fait pas partie de la description d’une interface.
L’interface peut être aussi matérialisée plus globalement par un
petit cercle associé à la classe source.
La classe utilisatrice de l’interface est reliée au symbole de l’interface par
une flèche en pointillé. La classe d’interface est une spécification et non
une classe réelle.
Une classe d’interface peut s’assimiler à une classe abstraite.
Formalisme et exemple
La figure ci-dessous donne le formalisme, sur un exemple, des deux types
de représentation d’une interface.
A.6 Généralisation et spécialisation
La généralisation/spécialisation et l’héritage simple
La généralisation est la relation entre une classe et deux autres
classes ou plus partageant un sous-ensemble commun d’attributs et/ou
d’opérations.
La classe qui est affinée s’appelle super-classe, les classes
affinées s’appellent sous-classes. L’opération qui consiste à créer une
super-classe à partir de classes s’appelle la généralisation. Inversement la
spécialisation consiste à créer des sous-classes à partir d’une classe.
Formalisme et exemple
La figure suivante montre le formalisme de la généralisation-
spécialisation sous forme d’exemple général. Dans cet exemple :
• la sous-classe A1 hérite de A, c’est une spécialisation de A ;
• la sous-classe A2 hérite de A, c’est une spécialisation de A.
L’héritage permet à une sous-classe de disposer des attributs et
opérations de la classe dont elle dépend. Un discriminant peut être utilisé
pour exploiter le critère de spécialisation entre une classe et ses sous-
classes. Le discriminant est simplement indiqué sur le schéma, puisque
les valeurs prises par ce discriminant correspondent à chaque sous-
classe.
Dans cet exemple, les attributs nom, prénom et date de
naissance et l’opération « calculer âge » de « Employé » sont hérités par
les trois sous-classes : Employé horaire, Employé salarié, Vacataire.
Classe abstraite
Une classe abstraite est une classe qui n’a pas d’instance
directe mais dont les classes descendantes ont des instances. Dans une
relation d’héritage, la super-classe est par définition une classe abstraite.
C’est le cas de la classe Employé dans l’exemple présenté à la
figure suivante :
L’héritage avec recouvrement
Par défaut, les sous-classes ont des instances disjointes les unes
par rapport aux autres. Dans certains cas, il existe un recouvrement
d’instances entre les sous-classes.
D’une manière générale, quatre situations peuvent se
rencontrer et se représentent sous forme de contraintes :
• {chevauchement} : deux sous-classes peuvent avoir, parmi leurs
instances, des instances identiques ;
• {disjoint} : les instances d’une sous-classe ne peuvent être incluses
dans une autre sous-classe de la même classe ;
• {complète} : la généralisation ne peut pas être étendue ;
• {incomplète} : la généralisation peut être étendue.
Dans certains cas, il est possible de ne pas citer toutes les sous-
classes mais d’indiquer seulement des points de suspension (…).
Formalisme et exemple
La figure ci-dessous montre un exemple d’héritage avec recouvrement
d’instances entre les classes Étudiant et Employé. En effet, une même
personne peut être à la fois étudiante dans une université et employée
dans une entreprise.
Extension et restriction de classe
L’ajout de propriétés dans une sous-classe correspond à une
extension de classe. Le masquage de propriétés dans une sous-classe
correspond à une restriction de classe.
Formalisme et exemple
Cet exemple montre l’héritage avec restriction et extension.
L’héritage multiple
Dans certains cas, il est nécessaire de faire hériter une même
classe de deux classes « parentes » distinctes. Ce cas correspond à un
héritage multiple.
Exemple
La figure 2.29 montre un exemple classique d’héritage multiple où la
classe « Véhicule amphibie » hérite des classes « Véhicule terrestre » et «
Véhicule marin ».
A.7 Stéréotype de classe
UML propose un certain nombre de stéréotypes qui
permettent de qualifier les profils d’utilisation.
Parmi ces stéréotypes, nous présentons ci-après quatre d’entre
eux :
• « Classe d’implémentation » – Ce stéréotype est utilisé pour décrire
des classes de niveau physique.
• « Type » – Ce stéréotype permet de spécifier des opérations
applicables à un domaine d’objets. Exemple : Type Integer d’un langage
de programmation.
• « Utilitaire » – Ce stéréotype qualifie toutes les fonctions utilitaires de
base utilisées par les objets.
• « MétaClasse » – Ce stéréotype permet de regrouper des classes dans
une famille de classe.
A.8 Exercices
Nous proposons au lecteur une série de quatre exercices sur le
diagramme de classe ainsi qu’un exercice de synthèse (Locagite) pour
lequel nous fournirons au fur et à mesure du parcours sur UML les
principaux diagrammes.
Exercice 1
Énoncé
Il est demandé de représenter le diagramme de classe d’une
gestion technique de documents. Chaque document est composé d’un
ou plusieurs feuillets.
Un feuillet comporte du texte et des objets géométriques qui
constituent deux types d’objets graphiques supportant des opérations de
type : sélectionner, copier, couper, coller et déplacer.
Nous considérons les quatre objets géométriques suivants :
cercle, ellipse, carré, rectangle. Il est demandé d’utiliser les propriétés de
la généralisation et la spécialisation afin de représenter au mieux ces
objets géométriques.
Corrigé
La figure ci-dessous propose au lecteur un corrigé type. D’autres
variantes peuvent être envisagées notamment dans les choix de
généralisation et spécialisation.
Exercice 2
Énoncé
Une entreprise nationale de vente d’appareil électroménager
souhaite réaliser une première expérience d’analyse objet avec la
méthode UML sur un petit sous-ensemble de son SI.
Ce sous-ensemble concerne le suivi des personnels des agences
locales implantées dans les régions. Chaque région est pilotée par une
direction régionale qui a en charge un certain nombre d’agences locales.
Une direction régionale est caractérisée par un code et un
libellé.
Chaque agence est caractérisée par un code, un intitulé, une
date de création et une date de fermeture. À une agence sont rattachées
une à plusieurs personnes.
Chaque personne est caractérisée par les données : numéro,
qualité (M., Mme, Mlle), nom, prénom, date de naissance, date
prévisionnelle d’arrivée, date d’arrivée et date de départ.
Il est demandé d’élaborer le diagramme de classe de ce premier
sous-ensemble du SI de cette entreprise.
Corrigé
Les trois classes constituant ce système sont évidentes puisque
déjà bien identifiées dans l’énoncé : Direction régionale, Agence et
Personnel.
L’association entre Direction régionale et Agence est une
agrégation qui matérialise une relation structurante entre ces classes. La
relation entre Agence et Personnel est une association de un à plusieurs.
Les opérations mentionnées dans chaque classe correspondent
aux opérations élémentaires nécessaires à la gestion du personnel des
agences.
Le corrigé type de diagramme de classe et d’objet est donné à la figure
suivante :
— Exemple de diagramme d’objet associé au diagramme de classe de
l’exercice 2
Exercice 3
Énoncé
La société Forma possède un service qui gère la formation
interne. Sa mission comporte plusieurs fonctions :
• Élaborer les catalogues qui décrivent les cours et donnent les dates
prévisionnelles des sessions.
• Inscrire les personnes qui désirent participer aux sessions et leur
envoyer leur convocation.
• Déterminer les formateurs qui vont animer les sessions et leur envoyer
leur convocation (ces personnes sont choisies parmi celles qui peuvent
enseigner un cours). Certaines sessions peuvent être animées par une
personne d’un organisme extérieur.
• Faire le bilan des participations réelles aux formations.
Les cours sont déterminés afin de répondre aux besoins de formation
internes. Certains cours sont organisés en filières, c’est-à-dire qu’ils
doivent être suivis dans un certain ordre. Les cours utilisent des
documents référencés :
Corrigé
La lecture du sujet et en particulier l’analyse des attributs
indiqués conduisent à identifier rapidement les classes suivantes :
Session, Cours, Catalogue, Document, Personne et Organisme.
Une réflexion complémentaire menée sur la classe Personne
permet de distinguer en fait trois sous-classes spécialisées :
PersonneExterne, PersonneIntNe (non enseignante) et PersonneIntEn
(enseignante).
Le diagramme de classes peut être élaboré ensuite sans
difficulté ; voici le corrigé type de cet exercice :
Exercice 4
Énoncé
Il vous est demandé de gérer les apports de raisin de la
coopérative viticole de champagne.
Le processus de traitements des apports de raisin correspond à un
déroulement en plusieurs étapes.
• Départ des camions pour le ramassage des raisins – Le ramassage
est organisé par le responsable du transport. Tous les matins, durant la
campagne de ramassage, chaque chauffeur-livreur charge dans son
camion un certain nombre de palettes vides et passe à la pesée. Le
responsable du transport enregistre le départ du camion en lui affectant
un n° d’apport ainsi que son poids à vide (la gestion des itinéraires ne fait
pas partie de la présente étude).
Les camions ont été préalablement répertoriés par la
coopérative avec leur capacité exprimée en nombre de palettes. Il est
fréquent qu’un même camion soit utilisé pour plusieurs apports.
• Retour des camions et pesée des apports – L’arrivée d’un camion de
palettes de caisses de raisins correspond à un apport de raisin. Les date
et heure d’arrivée de cet apport sont soigneusement notées dans un
registre avec le numéro d’immatriculation du camion.
Dès l’arrivée d’un apport, les palettes sont déchargées puis
pesées. Le poids et le nombre de caisses par palettes sont
soigneusement contrôlés par le responsable de la pesée puis enregistrés.
• Constitution des lots – Après la pesée des palettes reçues, le
responsable de la coopérative répartit l’apport en lots. Chaque lot
correspond aux palettes contenant les raisins de même cépage et de
même cru. Un exemple de lot est fourni ci-après (tab.2.2) : il s’agit du
troisième lot de l’apport numéro 3101 qui regroupe les palettes du
Chardonnay en provenance de Cormigny.
Le raisin de Champagne se divise en trois cépages : le
Chardonnay qui est un raisin blanc, le Pinot noir et le Pinot meunier qui
sont des raisins noirs. Le cru est la provenance du raisin : il correspond à
un nom de commune et est identifié par le numéro Insee de cette
commune. Un cru possède un classement de 80 à 100 qui est remis en
cause chaque année. Les classements annuels successifs d’un cru doivent
être mémorisés.
Les palettes appartiennent toutes à la coopérative. Elles
possèdent un numéro qui est peint sur le bois et qui permet de les
identifier sans ambiguïté. Elles sont à la libre disposition des livreurs. Une
même palette peut servir plusieurs fois au cours d’une même vendange.
Un lot concerne un livreur. Tous les livreurs sont
obligatoirement connus de la coopérative. Un bulletin d’information
professionnel leur est adressé régulièrement.
Les livreurs sont des coopérateurs ou des particuliers
indépendants. Les coopérateurs exploitent une ou plusieurs parcelles.
Pour chaque livreur coopérateur, le pourcentage de sa production qu’il
apporte à la coopérative est enregistré.
En aucun cas un coopérateur ne peut être un indépendant et
vice versa. En ce qui concerne les livreurs indépendants, il est important
de connaître le statut juridique qu’ils ont choisi. Celui-ci est identifié par
le code du statut et se caractérise par un libellé (entreprise individuelle,
société à responsabilité limitée, société coopérative d’exploitation
agricole, etc.).
Corrigé
La lecture du sujet et en particulier l’analyse des attributs
indiqués conduisent à identifier rapidement les classes suivantes : Apport,
Camion, Lot, Palette, Cépage, Commune, Livreur et Parcelle.
Le diagramme de classes peut être élaboré ensuite sans
difficulté ; et le corrigé type de cet exercice est donné ci-dessous :
Exercice de synthèse : Locagite
Énoncé
« Locagite » est une association qui permet à divers
propriétaires ruraux de mettre en location, à la semaine, des gîtes
meublés. Elle publie annuellement un catalogue contenant les gîtes
proposés par les propriétaires.
Les gîtes doivent répondre à un certain nombre de critères
qualité, correspondant à un nombre d’étoiles, qui sont vérifiées lors de
l’adhésion du gîte et une fois tous les trois ans lors d’une visite de
contrôle. Le propriétaire reçoit tous les ans un catalogue des gîtes, et
peut modifier les informations qui le concernent (prix par saison, photo
du gîte, nombre de personnes, de chambres, terrain...).
« Locagite » regroupe 450 gîtes en France, pour une moyenne
de 12 semaines de réservation par gîte et par an.
« Locagite » propose aux propriétaires qui le souhaitent, un service
central de réservation. Tous les ans, les propriétaires qui veulent utiliser
ce service signent un contrat avec « Locagite », qui spécifie les périodes
ouvertes à la location et la rémunération de la centrale de réservation en
pourcentage de chaque location, ce dernier taux étant valable pour
l’année et pour l’ensemble des gîtes.
Le propriétaire, en signant le contrat, joint un relevé d’identité
bancaire. Le propriétaire ayant signé le contrat de la réservation centrale
reçoit chaque mois un état des réservations fermes. Il reçoit aussi tous les
mois un état des sommes encaissées par la centrale de réservation. Le
virement bancaire des sommes dues, correspondant à l’état précédent,
est envoyé en milieu du mois suivant.
Un client potentiel (que l’on peut appeler client réservataire)
téléphone à la centrale de réservation pour réserver un gîte sur la base
du catalogue. La centrale de réservation prend en compte la demande, et
lui envoie un contrat de location ainsi qu’une demande d’acompte si un
accord a été trouvé sur les dates de réservation. Le client réservataire
renvoie le contrat signé accompagné de l’acompte : la réservation
devient ferme.
Un mois avant le séjour, le client locataire envoie le solde du
paiement ; il reçoit alors une confirmation de séjour lui donnant les
coordonnées de la personne à contacter pour convenir de son arrivée. Le
client peut à tout moment annuler son séjour, 30 % des sommes versées
ne sont pas remboursées. En cas de non-retour du contrat signé après 15
jours, la pré-réservation est automatiquement annulée.
Corrigé
Élaboration du diagramme de classe : l’analyse de l’ensemble des
données disponibles nous permet de mettre en évidence les classes
suivantes : Propriétaire, Gîte, Gîtes gérés, Catalogue, Activité, Période
Location, Réservation, Client et Contrat Location. Le diagramme de classe
correspondant est donné à la figure suivante :
B. DIAGRAMME DE COMPOSANT (DCP)
Le diagramme de composant permet de représenter les
composants logiciels d’un système ainsi que les liens existant entre ces
composants.
Les composants logiciels peuvent être de deux origines : soit
des composants métiers propres à une entreprise soit des composants
disponibles sur le marché comme par exemple les composants EJB,
CORBA, .NET, WSDL.
B.1 Composant
Chaque composant est assimilé à un élément exécutable du
système. Il est caractérisé par :
• un nom ;
• une spécification externe sous forme soit d’une ou plusieurs interfaces
requises (Une interface requise est une interface nécessaire au bon fonctionnement
du composant.), soit d’une ou plusieurs interfaces fournies (Une interface
fournie est une interface proposée par le composant aux autres composants. ) ;
• un port de connexion.
Le port d’un composant représente le point de connexion entre
le composant et une interface. L’identification d’un port permet d’assurer
une certaine indépendance entre le composant et son environnement
extérieur.
Formalisme général
Un composant est représenté par un classeur avec le mot-clé «
composant » ou bien par un classeur comportant une icône représentant
un module.
B.2 Les deux types de représentation et exemples
Deux types de représentation sont disponibles pour modéliser
les composants : une représentation « boîte noire » et une représentation
« boîte blanche ». Pour chaque représentation, plusieurs modélisations
des composants sont proposées.
Représentation « boîte noire »
C’est une vue externe du composant qui présente ses interfaces
fournies et requises sans entrer dans le détail de l’implémentation du
composant. Une boîte noire peut se représenter de différentes manières.
Connecteur d’assemblage
Une interface fournie se représente à l’aide d’un trait et d’un
petit cercle et une interface requise à l’aide d’un trait et d’un demi-cercle.
Ce sont les connecteurs d’assemblage.
Un exemple de modélisation avec les connecteurs d’assemblage
est donné à la figure ci-dessous, le composant Commande possède deux
interfaces fournies et deux interfaces requises.
Connecteur d’interfaces
Une autre représentation peut être aussi utilisée en ayant
recours aux dépendances d’interfaces utilise et réalise :
• pour une interface fournie, c’est une relation de réalisation partant du
composant et allant vers l’interface ;
• pour une interface requise, c’est une dépendance avec le mot-clé «
utilise » partant du composant et allant vers l’interface.
Un exemple de modélisation avec connecteurs d’interfaces est
donné ci-dessous.
Le composant Commande possède une interface fournie «
GestionCommande » et une interface requise « Produit ».
Compartiment
Une dernière manière de modéliser un composant avec une
représentation boîte noire est de décrire sous forme textuelle les
interfaces fournies et requises à l’intérieur d’un second compartiment.
Un exemple de modélisation avec les compartiments est donné
à la figure ci-dessous :
Représentation « boîte blanche »
C’est une vue interne du composant qui décrit son
implémentation à l’aide de classificateurs (classes, autres composants)
qui le composent. Plusieurs modélisations sont possibles pour la
représentation boîte blanche.
Compartiment
Une manière de modéliser un composant avec une
représentation boîte blanche est de décrire sous forme textuelle les
interfaces fournies et requises à l’intérieur d’un compartiment, les
classificateurs (classes, autres composants) dans un autre compartiment,
les artefacts (élément logiciel : jar, war, ear, dll) qui représentent
physiquement le composant dans un dernier compartiment.
Un exemple de modélisation avec les compartiments est donné
à la figure ci-dessous :
Dépendance
Une autre représentation interne du composant peut être aussi
utilisée en ayant recours aux dépendances. Ainsi, les classificateurs qui
composent le composant sont reliés à celui-ci par une relation de
dépendance.
Les relations entre les classificateurs (association, composition,
agrégation) sont aussi modélisées. Néanmoins, si elles sont trop
complexes, elles peuvent être représentées sur un diagramme de classe
relié au composant par une note.
Un exemple de modélisation boîte blanche avec les
dépendances est donné ci-après :
Ports et connecteurs
Le port est représenté par un petit carré sur le composant. Les
connecteurs permettent de relier les ports aux classificateurs. Ils sont
représentés par une association navigable et indiquent que toute
information arrivée au port est transmise au classificateur.
Un exemple de représentation avec port et connecteur du
composant Commande est donné à la figure suivante :
Dans l’exemple de la figure ci-haut, le composant Commande
est constitué de deux classes (classificateur) reliées par une agrégation :
DetailCommande et LigneCommande.
L’interface fournie GestionCommande est accessible de
l’extérieur via un port et permet d’accéder via les connecteurs aux
opérations des deux classes DetailCommande et LigneCommande
(ajouterLigneCommande, calculTotal-Commande, calculPrixLigne).
L’interface requise Personne est nécessaire pour l’affichage du
détail de la commande et est accessible via un port du composant
Commande.
L’interface requise Produit est nécessaire pour le calcul du prix de la ligne
de commande et est accessible via un port du composant Commande.
C. DIAGRAMME DE DÉPLOIEMENT (DPL)
Le diagramme de déploiement permet de représenter
l’architecture physique supportant l’exploitation du système. Cette
architecture comprend des nœuds correspondant aux supports
physiques (serveurs, routeurs…) ainsi que la répartition des artefacts
logiciels (bibliothèques, exécutables…) sur ces nœuds. C’est un véritable
réseau constitué de nœuds et de connexions entre ces nœuds qui
modélise cette architecture.
C.1 Nœud
Un nœud correspond à une ressource matérielle de traitement
sur laquelle des artefacts seront mis en œuvre pour l’exploitation du
système. Les nœuds peuvent être interconnectés pour former un réseau
d’éléments physiques.
Formalisme et exemple
Un nœud ou une instance de nœud se représente par un cube
ou parallélépipède donne ci-dessous :
Compléments sur la description d’un nœud
Il est possible de représenter des nœuds spécialisés. UML
propose en standard les deux types de nœuds suivants :
• Unité de traitement – Ce nœud est une unité physique disposant de
capacité de traitement sur laquelle des artefacts peuvent être déployés.
Une unité de traitement est un nœud spécialisé caractérisé par le mot-clé
« device ».
• Environnement d’exécution – Ce nœud représente un environnement
d’exécution particulier sur lequel certains artefacts peuvent être exécutés.
Un environnement d’exécution est un nœud spécialisé caractérisé par le
mot clé « executionEnvironment ».
C.2 Artefact
Un artefact est la spécification d’un élément physique qui est
utilisé ou produit par le processus de développement du logiciel ou par
le déploiement du système.
C’est donc un élément concret comme par exemple : un fichier,
un exécutable ou une table d’une base de données.
Un artefact peut être relié à d’autres artefacts par notamment des liens
de dépendance.
Formalisme et exemple
Un artefact se représente par un rectangle caractérisé par le
mot-clé « artifact » et/ou une icône particulière dans le coin droit du
rectangle.
Deux compléments de description sont proposés par UML pour
la représentation des artefacts.
C.3 Spécification de déploiement
Une spécification de déploiement peut être associée à chaque
artefact. Elle permet de préciser les conditions de déploiement de
l’artefact sur le nœud sur lequel il va être implanté.
Formalisme et exemple
Une spécification de déploiement se représente par un
rectangle avec le mot-clé « deployment spec ». Un exemple d’un artefact
avec une spécification de déploiement est donné à la figure ci-dessous :
C.4 Liens entre un artefact et les autres éléments du diagramme
Il existe deux manières de représenter le lien entre un artefact et
son nœud d’appartenance :
• Représentation inclusive – Dans cette représentation, un artefact est
représenté à l’intérieur du nœud auquel il se situe physiquement. Un
exemple est donné à la figure ci-dessous :
• Représentation avec un lien de dépendance typé « deploy » – Dans
ce cas l’artefact est représenté à l’extérieur du nœud auquel il appartient
avec un lien de dépendance entre l’artefact et le nœud typé avec le mot-
clé « deploy ». Un exemple est donné à la figure ci-dessous :
Un artefact peut représenter un ou plusieurs éléments d’un
modèle. Le qualificatif « manifest » permet d’indiquer ce type de
dépendance.
C.5 Représentation et exemples
Le diagramme de déploiement représente les nœuds de
l’architecture physique ainsi que l’affectation des artefacts sur les nœuds
conformément aux règles de déploiement définies. Un premier exemple
est donné à la figure ci-dessous :
Un second exemple relatif à une implémentation d’une
architecture J2EE avec quatre nœuds est donné à la figure 2.49.
Dans l’exemple de la figure 2.49, plusieurs composants sont
déployés.
• Un serveur web où se trouvent les éléments statiques du site dans une
archive : images, feuilles de style, pages html ([Link]).
• Un serveur d’application « front » sur le lequel est déployée l’archive
« [Link] » composée de l’application web « [Link] » et d’autres
composants nécessaires au fonctionnement de cette archive web comme
« [Link] » (classes permettant l’appel aux EJB) et « [Link] »
(classes communes aux deux serveurs d’application).
• Un serveur d’application métier sur lequel sont déployés les
composants :
« [Link] ». Ils sont packagés dans l’archive « [Link] ». Deux autres
archives sont nécessaires au fonctionnement des EJB : « [Link] » (classes
qui permettent l’accès à la base de données) et « [Link] » (classes
communes aux deux serveurs d’application).
• Un serveur BDD (base de données) sur lequel sont stockées des
procédures stockées PL/SQL : « [Link] ».
D. DIAGRAMME DE PAQUETAGE (DPA)
D.1 Paquetage
Un paquetage regroupe des éléments de la modélisation
appelés aussi membres, portant sur un sous-ensemble du système. Le
découpage en paquetage doit traduire un découpage logique du
système à construire qui corresponde à des espaces de nommage
homogènes.
Les éléments d’un paquetage peuvent avoir une visibilité déclarée soit de
type public (+) soit privé (-).
Un paquetage peut importer des éléments d’un autre paquetage. Un
paquetage peut être fusionné avec un autre paquetage.
Formalisme et exemple
Le croquis ci-dessous montre le formalisme général d’un paquetage et
les trois manières de présenter un paquetage.
• Représentation globale – Le nom du paquetage se trouve à l’intérieur
du grand rectangle.
• Représentation détaillée – Les membres du paquetage sont
représentés et le nom du paquetage d’ensemble s’inscrit dans le petit
rectangle.
• Représentation éclatée – Les membres du paquetage sont reliés par
un lien connecté au paquetage par le symbole ⊕.
— Exemple de représentation éclatée d’un paquetage :
D.2 Dépendance entre paquetages
La dépendance entre paquetages peut être qualifiée par un
niveau de visibilité qui est soit public soit privé. Par défaut le type de
visibilité est public.
À chaque type de visibilité est associé un lien de dépendance.
Les deux types de dépendances entre paquetages sont :
• « import » – Ce type de dépendance permet, pour un paquetage
donné, d’importer l’espace de nommage d’un autre paquetage. Ainsi
tous les membres du paquetage donné ont accès à tous les noms des
membres du paquetage importé sans avoir à utiliser explicitement le
nom du paquetage concerné. Ce type de dépendance correspond à un
lien ayant une visibilité « public ».
• « access » – Ce type de dépendance permet, pour un paquetage
donné, d’avoir accès à l’espace de nommage d’un paquetage cible.
L’espace de nommage n’est donc pas importé et ne peut être transmis à
d’autres paquetages par transitivité. Ce type de dépendance correspond
à un lien ayant une visibilité « privé ».
Un exemple de dépendance entre paquetages mettant en jeu
les niveaux de visibilité est donné à la figure ci-dessous.
Dans cet exemple, les éléments de Clients externes sont
importés dans Domaine client et ensuite dans Domaine tiers. Cependant,
les éléments de Clients internes sont seulement accessibles par le
paquetage Domaine client et donc pas à partir du paquetage Domaine
tiers.
D.3 Représentation et exemples
En reprenant l’exemple type de l’exercice de synthèse Locagite,
nous donnons une représentation des liens de dépendance entre
paquetages.
Enfin, UML propose aussi une opération de fusion entre deux
paquetages. Le lien de dépendance comporte dans ce cas le mot-clé «
merge ».
Ce type de lien permet de fusionner deux paquetages et
d’obtenir ainsi un paquetage contenant la fusion des deux paquetages
d’origine. Pour bien clarifier cette opération, il est important de qualifier
par des rôles les paquetages dans cette fusion.
Ainsi trois rôles sont à distinguer :
• le paquetage à fusionner (entrant dans la fusion, mais préservé après la
fusion) ;
• le paquetage recevant (paquetage d’origine avant la fusion, mais non
conservé après la fusion) ;
• le paquetage résultat (paquetage contenant le résultat de la fusion et
écrasant le contenu du paquetage d’origine).
Un exemple type de fusion entre deux paquetages est donné à
la figure ci-dessous :
E. DIAGRAMME DE STRUCTURE COMPOSITE (DSC)
Le diagramme de structure composite permet de décrire des
collaborations d’instances (de classes, de composants…) constituant des
fonctions particulières du système à développer.
E.1 Collaboration
Une collaboration représente un assemblage de rôles
d’éléments qui interagissent en vue de réaliser une fonction donnée. Il
existe deux manières de représenter une collaboration :
• représentation par une collaboration de rôles,
• représentation par une structure composite : le diagramme de structure
composite.
E.2 Représentation et exemples
Représentation par une collaboration de rôles
Dans ce cas, une collaboration est formalisée par une ellipse en
pointillé dans laquelle on fait figurer les rôles des éléments qui
interagissent en vue de réaliser la fonction souhaitée.
Dans cet exemple, la fonction Persistance objets métier résulte
d’une collaboration entre deux rôles d’éléments :
• mapping : classeMétier,
• stockage : tableBDD.
Représentation par un diagramme de structure composite
Cette nouvelle représentation permet de montrer plus
explicitement les éléments de la collaboration :
• la collaboration représentée par une ellipse en pointillé ;
• les éléments participant à la collaboration (classe, composant…)
représentés à l’extérieur de la collaboration ;
• les rôles considérés dans chaque participation représentés sur les liens
entre les éléments participants et la collaboration.
Dans cet exemple, la fonction Persistance objets métier résulte
d’une collaboration entre la classe ClasseMétier considérée suivant le rôle
mapping et la classe TableBDD considérée suivant le rôle stockage.
Cette représentation permet aussi de préciser les seuls attributs des
classes participantes qui sont considérés suivant les rôles pris en compte.
CHAPITRE V LES METHODES AGILES
Les méthodes agiles sont des méthodologies essentiellement dédiées à
la gestion de projets informatiques. Elles reposent sur des cycles de
développement itératifs et adaptatifs en fonction des besoins évolutifs
du client. Elles permettent notamment d'impliquer l'ensemble des
collaborateurs ainsi que le client dans le développement du projet.
Ces méthodes permettent généralement de mieux répondre aux attentes
du client en un temps limité (en partie grâce à l'implication de celui-ci)
tout en faisant monter les collaborateurs en compétences. Ces méthodes
constituent donc un gain en productivité ainsi qu'un avantage compétitif
tant du côté client que du côté du fournisseur.