Académique Documents
Professionnel Documents
Culture Documents
Cours 3
Cours 3
Introduction à la
méthode OMT
Laurent Henocque
Maître de Conférences
Université de la Méditerranée
(henocque@esil.univ-mrs.fr)
(http://www.esil.univ-mrs.fr/Staff/Prof/henocque/)
Ce document peut être librement reproduit dans son intégralité pourvu que la présente mention de copyright
ainsi que celles présentes en tête et en pied de page y restent attachées. Toute autre forme de copie est interdite.
Auteur Laurent Henocque, maître de conférences.
Ce document est un cours de l’
Ecole Supérieure d’Ingénieurs de Luminy,
département Etudes Supérieures en Ingénierie Informatique,
163 Avenue de Luminy, case 925, 13288 Marseille Cedex 9
(http://www.esil.univ-mrs.fr)
1.2. avantages
meilleure compréhension des besoins
spécification et conception plus précise
meilleure maintenabilité des systèmes réalisés
• spécifier et concevoir
• implanter la solution
1.4. avantages
la même méthode (concepts + notations) peut être utilisée tout au long du cycle de
développement
il n'est donc pas nécessaire de traduire une formulation en une autre à chaque étape, comme le
nécessitent d'autres approches
• langages classiques
OMT est une méthode de pensée organisée autour d'abstractions pertinentes, qui écarte les à
priori techniques liés aux langages de programmation
OMT permet l'échange clair et non ambigu des idées
• on montre la projection d'OMT sur divers langages cible, les choix techniques associés
partie 4 : études de cas
2. Introduction
la modélisation et la spécification orientée objet est méthode pour penser et décrire des
problèmes organisée autour de concepts du monde réel
la construction fondamentale y est l'objet, qui combine données et comportement
les modèles objets sont utiles pour :
• préparer de la documentation
• on réalise un modèle analytique des aspects essentiels de l'application, sans aucun a priori
d'implémentation. Ce modèle comporte les objets essentiels du domaine applicatif avec leurs
relations
• ensuite on prend des décisions de conception et on affine le modèle initial pour préciser et
optimiser l'implémentation
• l'identité
• la classification
• le polymorphisme
• l'héritage
2.1.1. l'identité
les objets sont des entités qui peuvent être distinguées. Notamment, deux objets distincts
peuvent avoir exactement les mêmes données membres
2.2.1. la classification
les objets ayant des attributs (données et comportements) similaires sont groupés dans une
classe.
la classe décrit toutes les caractéristiques des objets de son type
une classe qui abstrait un objet du monde réel intègre les données qui semblent pertinentes en
fonction du degré de détail voulu. (les classes vélo, ou polygone)
2.2.2. le polymorphisme
la même fonction peut avoir des effets différents sur des objets de classes distinctes
2.2.3. l'héritage
des caractéristiques partagées par différentes classes peuvent être décrites dans une classe
intermédiaire dont les autres héritent, ce qui permet de les décrire par les seules modifications
qu'elles apportent au schéma de base
l'héritage apporte un grande puissance d'expression et d'abstraction au modèle objet
• analyse et spécification
• conception
• programmation
l'approche objet consiste à se concentrer sur les concepts inhérents à un domaine applicatif
plutôt que sur les conditions de mise en oeuvre dans un langage cible, qu'il soit orienté objet ou non
la complexité de réalisation d'un logiciel est plus due à la difficulté de manipuler ces concepts
qu'aux aléas de la mise en oeuvre, toujours facilement contournés
analyse
à partir d'un énoncé du besoin, l'analyste construit (avec le demandeur) un modèle du monde
réel qui fasse apparaître ses propriétés pertinentes
le modèle issu de l'analyse est une description précise, concise, de ce que le client demande,
non de comment on peut le faire
les objets du modèle sont des objets du domaine, jamais des objets issu de l'informatique
une bonne analyse peut être comprise et critiquée par des experts du domaine qui ne sont pas
informaticiens
une bonne analyse ne comporte aucune décision d'implantation
exemple : des fenêtres sont décrites par leur fonctionnalités accessibles à l'utilisateur final
modélisation du système
l'ingénieur (system designer en anglais) prend des décisions de haut niveau sur l'architecture du
système
pendant cette phase, le système cible est organisé en sous systèmes pertinents relativement au
modèle initial et aux choix d'architecture.
l'ingénieur décide des caractéristiques à optimiser, définit une stratégie pour aborder le
problème, et fait une première évaluation des besoins en ressources humaines
exemple : le concepteur pet décider que le rafraîchissement écran soit rapide, et décider en
conséquence du protocole de communication à utiliser, et d'une stratégie de bufferisation
l'ingénieur décrit un modèle détaillé basé sur l'analyse et le modèle du système, qui respecte les
choix stratégiques
l'accent est ici porté sur les structures de données et les algorithmes nécessaires pour réaliser
chaque classe
les classes initiales restent pertinentes, mais elles sont complétées par les classes
d'implémentation, choisies en fonction de besoins concrets en performance exprimés pour le système
final
les objets initiaux et les objets informatiques sont décrits dans le même langage, bien qu'ils
figurent dans des plans conceptuels distincts
exemple : les actions de la classe fenêtre sont maintenant décrites en fonction du système
graphique sous jacent, peut être même du hardware et de l'OS
programmation
dans cette phase bien connue, les classes et relations décrites précédemment sont traduites
dans un langage de programmation, sgbd, ou hardware
la programmation devrait être une part mineure de l'ensemble du processus, les décisions
importantes ayant déjà été prises
le langage cible influence toujours la conception dans une certaine mesure, mais celle ci ne
devrait jamais dépendre de détails trop pointus d'un langage donné
la programmation doit obéir à des règles de contrôle qualité suffisantes pour :
• classes
• liens
• héritage
QUAND : le modèle dynamique décrit les interactions entre les objets
• événements, messages
COMMENT : le modèle fonctionnel décrit les transformations appliquées aux données
• processus
ces trois modèles sont orthogonaux et complémentaires et interreliés
le modèle objet est fondamental et préalable aux deux autres
2.4.1. abstraction
penser le quoi avant le comment
montrer le quoi sans le comment
2.4.2. encapsulation
séparer les aspects externes et utiles au client des aspects internes utiles aux seuls mécanismes
2.5.1. le partage
l'objet permet le partage à différents niveaux
via l'héritage :
• on gagne en compréhension des concepts, car on peut unifier certains traitements en un seul
traitement conceptuel : cela réduit le nombre de cas à envisager
entre programmes :
2.6.1. l'accent porte sur la structure des donn ées, non sur celle des
traitements
on insiste sur ce qu'est un objet, avant de décrire ce qu'il fait
lorsque les besoins changent, on observe que la structure des objets est bien plus stable que les
fonctionnalités qui les intéressent
de ce point de vue, l'approche objet est plus proche de celles en usage dans le domaine des
bases de données que des approches par décomposition fonctionnelle
2.6.2. synergie
la puissance de l'approche objet vient de ce que les caractéristiques énoncées plus haut sont
disponibles ensemble
l'héritage est en fait une facilité, alors que l'encapsulation est fondamentale
• développement de compilateurs
• applications graphiques
• interfaces utilisateur
• bases de données
• CAO
• simulation
• •
les langages cibles sont soit objet (Smalltalk, C++) soit classiques (C) soit relationnels
• chapitre 8 : l'analyse
2.11. exercice
quels problèmes majeurs avez vous rencontré lors de vos projets passés
quel pourcentage du temps a été consacré aux différentes phases
quelle approche avez vous pour évaluer l'effort nécessaire sur un projet
2.12. exercice
rappelez vous un système que vous avez réalisé; décrivez le brièvement
quels obstacles avez vous rencontré lors de sa conception
quelle méthodologie avez vous utilisé
quelles raisons aviez vous pou la choisir, ou ne pas en choisir
êtes vous satisfaits du système tel qu'il existe
est il maintenable
est-ce difficile de lui ajouter des fonctionnalités
2.13. exercice
décrire un grand système qui s'est trouvé hors délais, hors budget, ou bien a échoué à atteindre
l'ensemble des besoins
quels facteurs sont en cause
comment l'échec aurait pu être évité
2.14. exercice
tous les objets ont une identité et sont identifiables. D'un point de vue informatique, il n'est pas
toujours évident de prévoir tout ce qui permet de les distinguer. Pour chacun de ces collections
d'objets, décrire de quelle façon on pourrait les distinguer :
• tous les employés d'une compagnie pour limiter les accès pour des raisons de sécurité
2.15. exercice
d'un point de vue utilisateur, critiquer un système qui possède des défauts qui vous ennuient
particulièrement
décrire le système, le défaut, pourquoi il est apparu, et comment il aurait pu être évité avec un
peu plus de réflexion au départ
2.16. exercice
étudier ce que les objets suivants ont en commun. On peut ajouter de nouvelles classes à
chaque liste
2.17. exercice
imaginer une liste des objets que l'on peut attendre à voir surgir dans les systèmes suivants :
• un répondeur téléphonique
2.18. exercice
on donne une liste de classes, et une liste d'opérations. Pour chaque classe, sélectionner les
opérations pertinentes. Etudier le comportement de chaque fonction de chaque classes
classes:
• table des symboles : une table qui fait correspondre des mots clef et leur description
• modifie : écrit un objet dans une collection, par dessus ce qui existe éventuellement déjà
• le modèle objet
• le modèle dynamique
• le modèle fonctionnel
3.1. modélisation
dans tous les domaines les concepteurs utilisent des modèles :
• maquette architecturale
• résumé de livre
3.1.1. abstraction
c'est l'examen sélectif des différents aspects d'un problème
3.2. OMT
OMT permet de modéliser un système selon trois points de vue complémentaires, chacun
capturant des aspects essentiels du système, tous requis pour une description complète
• le modèle fonctionnel est le point de vue des transformations apportées aux données
un logiciel combine normalement ces trois aspects : il transforme (modèle 3) des données
(modèle 1) d'une façon ordonnée dans letemps (modèle 2)
exemple : les fonctions sont attachées aux objets dans le modèle objet, mais ne sont
complètement définies que par les deux autres modèles
3.3. … OMT
chaque modèle comporte des références aux deux autres ; ces liens sont limités et explicites
chaque modèle peut être examiné d'un façon relativement indépendante des deux autres
chaque modèle évolue durant le cycle de développement :
• pendant l'analyse un modèle du domaine applicatif est réalisé sans idée d'implantation
• pendant la conception, ce modèle est complété par des éléments relatifs au domaine de la
solution
• leur identité
• leurs relations
• leurs attributs
• leurs opérations
les objets sont les éléments sur lesquels les autres modèles s'appuient
les objets sont les atomes (au sens grec : insécable) de nos modèles
a l'issue de l'analyse le modèle objet comporte des termes familiers aux personnes du domaine,
et normalement aucune référence informatique
le modèle de conception comporte lui des références informatiques bien évidement
le modèle objet est représenté par des diagrammes décrivant les différentes classes,
hiérarchisées, et comportant les attributs et les opérations utiles
• le temps
• les séquences
• les événements
• séquences d'événements
• ce qu'elles font
diagrammes d'état
• fonctions
• applications
• contraintes
• dépendances fonctionnelles
ce modèle décrit ce que fait un système, sans considération pour quand ou comment il le fait
le modèle fonctionnel est représenté par desdiagrammes de flots de données(DFD)
les DFD montrent :
3.3.5. difficultés
on ne sait pas toujours décider si une information doit ou non figurer dans un modèle
c'est normal car un modèle décrit ses frontières de façon toujours brutale au début, et certaines
limites doivent être déplacées
certaines propriétés d'un système peuvent parfois être mal représentées par OMT
c'est également normal, aucun méthode ne peut être complète
dans ce cas, le recours à tout autre langage ou méthode (graphique ou non, spécifique au
domaine ou non) est souhaitable ou même nécessaire
3.4. résumé
les modèles sont des abstractions construites pour comprendre un problème avant d'implanter
une solution informatique
les abstractions sont des sous ensembles de la réalité isolés dans un but précis
OMT consiste en trois sortes de modèles :
• le modèle objet décrit la structure statique d'un système en terme d'objets et de relations
3.6. exercice
parmi les caractéristiques d'un pneu on trouve sa taille, son composant, sa construction interne
(carcasse radiale), dessin, prix, poids, durée de vie.
quels facteurs sont importants pour celui qui :
3.7. exercice
on utilise du fil dans différentes situations
pour chaque application, préparer une liste de caractéristiques pertinentes et expliquer
pourquoi elles sont importantes
• câble transatlantique
• construire un piano
3.8. exercice
votre baignoire est bouchée. Vous voulez la déboucher avec un fil électrique. Vous en avez de
plusieurs types (isolés ou non).
quelles caractéristiques considérez vous pour en choisir un. Expliquez :
• couleur de l'isolant
• coût
• rigidité
• poids
• disponibilité
• résistance à l'effort
• résistance à l'étirement
3.9. exercice
vous réalisez un protocole de transfert de fichiers sur des lignes téléphoniques
quels aspects sont pertinents :
• bruit électrique
• bufferisation et contrôle de flot tel que le protocole Xon Xoff pour réguler un flux de
données arrivant
• co processeur
3.10. exercice
on possède différents modèles pour spécifier et concevoir les moteurs électriques :
• combien d'énergie est requise pour animer un moteur ; combien est perdue en chaleur
3.11. exercice
décider quels modèles (objet, dynamique, fonctionnel) sont pertinents pour les aspects suivants
d'un programme de jeu aux échecs
le jeu et les pièces sont visualisés sur un écran
les coups de l'humain sont décrits par un curseur et une souris
4. Modélisation Objet
Un modèle objet capte les caractéristiques statiques d'un système en isolant :
• la classe
• le lien
• l'association
• la généralisation
• l'héritage
4.1.1. objets
on définit un objet comme une entité identifiable, ayant des limites connues et précises, et une
pertinence particulière pour le problème considéré.
les objets ont deux vertus :
4.1.2. classes
une classe désigne un ensemble d'objets ayant en commun :
• les attributs
• le comportement
• la signification ou sémantique
deux objets distincts d'une même classe peuvent avoir des attributs identiques
deux classes distinctes peuvent décrire les mêmes schémas d'attributs et de comportement sans
pour autant avoir des sémantiques comparables
chaque objet connaît sa classe : la classe est une propriété implicite de l'objet
c'est l'utilisation des classes qui permet d'abstraire un problème
ce qui peut être décrit au niveau de la classe n'a pas à être répété au niveau des objets instances
les diagrammes d'instances décrivent des objets effectifs avec leurs liens
ils sont utiles pour documenter des jeux de tests (scénarios), et pour discuter des exemples
(Individu) (Individu) (Individu)
James Bond Bruce Willis Schwarzie
4.1.4. attributs
un attribut est une donnée maintenue par les instances d'une classe
exemple : nom,âge, poids, marque d'un véhicule
un attribut reçoit une valeur pour chaque instance
un attribut est une valeur d'un type fondamental, pas un objet
nom : string
age : integer
le nom d'un attribut peut être suivi par différents descripteurs (à volonté), principalement :
• le type de la donnée
4.1.5. … attributs
OMT proscrit l'utilisation d'attributs d'identification
Individu
nom : string
age : integer
ID individu : ID
d'une manière générale, on ne doit pas confondre les attributs à usage interne et ceux qui
possèdent une signification dans le domaine que l'on modélise
notation des attributs pour les instances :
(Individu) (Individu) (Individu)
James Bond Bruce Willis Schwarzie
canonique 38 2024
• la même signature
4.1.7. caractéristiques
caractéristique est un terme général qui désigne indifféremment un attribut ou une méthode
d'un classe
il est utile de distinguer parmi les méthodes :
• soit unifier leur notation de façon à rendre le modèle insensible à des changements ultérieurs
Rumbaugh conseille de les distinguer
Nom de la Classe
les liens
les associations
une association est un groupe de liens avec une structure commune et une sémantique
identique
exemple : un agent secrettravaille pour un service secret
mathématiquement, une association est une relation
une association est bi directionnelle
la direction induite par le nom est dite direction
normale
l'autre direction est dite directioninverse
l'association inverse possède parfois un nom, mais ce n'est pas nécessaire
exemple : un service secretemploie un agent secret
L3 P1 P2
L5 L4
L1
diagramme d'instances
(Ligne)
L1
(Ligne)
L2 (Point)
(Ligne) P1
L3 (Point)
(Ligne) P2
L4
(Ligne)
L5
Projet Langage
Personne
cette relation est atomique
elle ne peut pas être réduite à des associations binaires sans perdre d'informations
le nom (optionnel) d'une telle association est écrit à côté du losange
diagramme d'instances pour un lien ternaire :
(Projet) (Langage)
réseau C++
(Personne)
Steve
(Projet) (Langage)
système Perl
4.2.2. multiplicité
la multiplicité désigne le nombre d'instances d'une classe qui peuvent être liées à une instance
d'une classe associée
la multiplicité est souvent d'ordre "1", ou d'ordre "plusieurs", mais en fait toutes les situations
sont possibles
un rond noir signifie "zéro ou plus"
un rond blanc signifie "zéro ou un"
la multiplicité peut toujours être précisée : 2+ à coté d'un rond noir signifie "2 ou plus"
la multiplicité est écrite du côté de la classe qui porte la multiplicité, c'est à dire dont les
instances sont comptées
exemple : il faut au moins deux lignes pour un point d'intersection
exemple : une station de travail affiche zéro ou une fenêtre "console"
Station Fenêtre
console
la détermination précise des multiplicités se fait en général lorsque le modèle est assez avancé
et bien compris
le choix des multiplicités dépend souvent de conditions importantes sur le domaine
exemple : est ce que la relation "travaille pour" est 1-1?
la distinction la plus importante est entre 1 et plusieurs
droit d'accès
Personne Société
travaille pour
patron nom nom
adresse adresse
n° SSociale n° Siret
salaire
fonction
employé
dirige
évaluation
modéliser le salaire et la fonction par un attribut de lien est plus flexible que par un attribut de
personne
le modèle ci dessus survit même si l'on décide qu'un salarié peut travailler pour plusieurs
entreprises
ce choix n'existe que dans le cas d'associations n-1
Equipe de
Base Ball
Lanceur Année
matches gagnés
matches perdus
(un lanceur peut jouer pour plusieurs équipes la même année)
autorisé sur
Utilisateur Station
Autorisation
priorité
privilèges
session
home directory
Répertoire
travaille pour
Individu Société
employé employeur
contenu
une association n-aire a un nom de rôle à chaque extrémité
toutefois, cela ne représente plus une possibilité de parcours simple comme auparavant
4.3.6. ordre
habituellement, les objets du côté "plusieurs" ne sont pas ordonnés, et sont vus comme
appartenant à un ensemble
dans certaines situations, l'ordre est souhaité
l'ordre est un cas particulier de contrainte
{ordered}
Fenêtre Ecran
visible sur
4.3.7. qualification
une association qualifiée fait intervenir deux classes et un qualifieur
le qualifieur est un attribut particulier qui permet de réduire la multiplicité d'une association
les associations 1-n et m-n peuvent être qualifiées
le qualifieur distingue parmi les objets d'un côté "n"
une association qualifiée peut être vue comme une forme d'association ternaire
exemple : un répertoire contient de nombreux fichiers, distingués par leur nom
souvent, la qualification réduit à l'unité, c'est à dire que le qualifieur identifie exactement un
objet
ce n'est pas toujours le cas
Bourse Bourse
abbréviation
Société Société
abbréviation
4.3.8. agrégation
l'agrégation est la relation de la partie au tout, des composants à l'assemblage
exemples : les parties d'une automobile, les parties de la déclaration d'une fonction C
sa propriété significative est la transitivité
remarquable également est son antisymétrie
enfin, certaines propriétés de structure se propagent aux composants
l'utilisation de l'agrégation n'est pas toujours évidente ; dans le doute il faut utiliser une
association habituelle
une relation d'agrégation lie une classe assemblage à une classe composant
un assemblage avec plusieurs composants correspond à plusieurs relations d'agrégation
on peut décrire la multiplicité des composants dans l'assemblage
…agrégation
PC
1+
propriétés
notation graphique
Equipement
nom
poids
coût type équipement
type pompe
type réservoir
discriminateurs
héritage de méthodes
Figure
couleur
centre
épaisseur trait
move
select
rotate
display dimensionalité
4.5.1. le module
le module est une unité logique qui groupe des classes, associations et généralisations
c'est une vue du problème (exemple : électricité, plomberie …)
les limites d'un module sont parfois subjectives
un modèle objet consiste en un ou plusieurs modules
les noms de classes et d'associations doivent être uniques dans un module
il est préférable d'avoir des conventions de nommage uniformes et cohérentes entre les
modules
le nom du module est habituellement mentionné en haut de chaque feuille
mentionner la même classe dans plusieurs modules est le mécanisme par lequel on lie les
modules entre eux
raisonnablement, les liens externes entre modules doivent être bien moins nombreux que les
liens internes
4.5.2. la feuille
la feuille permet de découpe le modèle objet complet en une série de pages
chaque feuille consiste en une unique page
un module consiste de une ou plusieurs pages
jamais plusieurs modules sur une page
chaque feuille possède un titre et un numéro
chaque association ou généralisation apparaît sur une seule feuille
une classe peut apparaître sur plusieurs feuilles, créant de ce fait le lien entre les feuilles
on peut (non obligatoire) mentionner dans un cercle auprès d'une classe les nom et/ou numéros
des feuilles qui complètent la description de la classe
Window
x1; y1;
x2; y2;
display
undisplay
raise
lower
Text Scrolling
Window Canvas
string
insert
delete
window Shape
Canvas elements color
line width
Panel
item name Event
notify event action
Panel keyboa
Item rd
event
x
y
label
(Point) a a (Point)
10 10
-10 10
(Polygone)
(Point) (Point)
-10 -10
a a
-10 10
expliquer les choix de multiplicité
chaque point possède une coordonnée x et y. Quel est le nombre minimal de points pour
construire un polygone
cela fait il une différence qu'un point soit ou non partagé par plusieurs polygones
comment exprimer le fait que des points soient en séquence
modifier ce diagramme de classes de sorte que les termes ne soient plus partagés, et afin de
prendre en compte le "-" unaire
4.16. exercice préparer un modèle objet pour définir des graphes non directionnels
un tel graphe est constitué d'un ensemble de noeuds et d'un ensemble d'arêtes
les arêtes connectent des paires de noeuds
le modèle ne doit s'intéresser qu'à la structure logique d'un tel graphe, et non aux détails de
représentation (positions des noeuds, longueur des arêtes par ex)
4.17. exercice préparer un modèle pour des graphes directionnels cette fois ci
modéliser la direction par un qualifieur de sorte que l'on puisse distinguer le noeud qui est
connecté à la tête ou à la queue de chaque arête
5.1. l’agrégation
l’agrégation est la relation de la partie au tout
un objet est un agrégat de ses composants
des composants peuvent ou non avoir une existence autonome
certaines propriétés des objets se propagent aux composants
l’agrégation récursive est courante
Individu
Lampe
baillonnette
Block
Objet
la classe dans un éditeur graphique est typiquement abstraite
toutes les opérations non définies, mais simplement nommées dans une classe abstraite doivent
recevoir une implémentation dans les sous classes concrètes
une classe abstraite décrit (une partie de) l’interface de programmation de ses sous classes
concrètes sans être capable de produire une implantation effective de la plupart des opérations
5.4.1. définition
une classe peut incorporer des mécanismes provenant de plusieurs super classes
les conflits entre symboles hérités doivent être levés par le programme
Véhicule
V. Terrestre V. Aquat
Enseignant Etudiant
Assistant
5.5. métadata
les métadonnées sont des données qui en décrivent d’autres : cf. la définition d’une classe
les modèles sont des métadonnées
les bases de données en comportent toujours
5.5.1. motifs
un patron décrit des instances du patron, comme une classe décrit ses instances
OMT utilise des flèches pointillées pour relier les instances à leur patron
Jim
Personne
nom
age
poids
Jack
5.6. … métadata
une partie d’un modèle du monde réel peut également décrire des méta données. OMT permet
de les représenter et de lier métadonnées et données
Modèle Voiture
nom numéro de série
année color
prix options
Constructeur Individu
Objet
nom
$liste des objets
$nom par défaut
$new-Objet()
$affiche-liste()
possède actions
Société
Etudiant Université
Professeur
Projet Langage
Individu
pour comprendre l’intérêt de cette notion, il faut se rappeler que l’on peut associer des
informations aux liens : la clef minimale permet de dire quelles sont les éléments qu’il faut fournir
pour retrouver ces informations “à coup sûr”.
5.9. contraintes
5.9.1. définition
une contrainte est une condition logique qui s’applique à des entités du modèle : objets,
classes, attributs,liens, associations
une contrainte limite les valeurs que peuvent prendre certains attributs, soit à tout moment
(contrainte universelle), soit au cours du temps (contrainte dynamique)
les contraintes sont exprimées de façon déclarative de préférence
un bon modèle décrit de nombreuses contraintes
patron
Travailleur Process
salaire priorité
position position
Pos. absolue
position
{position = tout-ensemble.pos + ensemble-partie.pos}
5.9.6. homomorphismes
un homomorphisme décrit une application entre deux associations
se projette en
r
MA A
t u
{u(a,b) -> t(a.r,b.s)}
MB B
s
5.11. exercices
5.11.1. exercice
décrire la structure d’une automobile
5.11.2. exercice
préparer un diagramme objet pour un éditeur graphique qui permette de grouper les objets
un document est constitué de plusieurs feuilles
les objets sont du texte, des formes et des groupes
6. Modélisation dynamique
les aspects d’un système qui ont à voir avec le temps et les changements s’appellent le modèle
dynamique
ce chapitre décrit le flot de contrôle dans un modèle OMT
les notions fondamentales sont les états (accessibles d’un système) et les événements qui
permettent de produire des changements d’état
6.1.1. événements
un événement se produit à un instant donné dans le temps, et ne possède pas de durée
les événements sont séquencés dans le temps
deux événements sans lie de causalité sont dits concurrents, ou parallèles (sans qu’ils doivent
nécessairement se produire simultanément)
chaque événement est unique, mais on décrit des classes d’événements, munies d’une
organisation hiérarchique
certains événements sont de simples signaux, mais d’autres portent des informations -
transmise d’un objet à un autre-
les informations associées à un événement sont des attributs de sa classe
exemples :
• décollage d’avion : avion, n° de vol, vile
• appui sur la souris (n° de bouton, coordonnées)
• on décroche le téléphone
les événements groupent événements normaux et conditions d’erreur
tonalité
compose(1)
fin de tonalité
compose(i) //répété
décroche
connexion connexion
raccroche
raccroche
6.1.3. états
un état est une abstraction des valeurs d’attributs et de liens d’un objet et décrit un ensemble
de valeurs
un état est stable entre deux événements reçus par un objet et possède une durée
l’ensemble des valeurs d’un attribut correspondant à un état est souvent décrit en intention par
une condition logique ou une contrainte (exemple des températures)
la description des événements et états dépend du niveau d’abstraction auquel on se place : un
seul événement dans un modèle peut être décomposé en de nombreux événements et états dans un
modèle plus précis (exemple du vol Paris New York
la description des états ignore les attributs non pertinents
Description : l'alarme du réveil sonne pour indiquer que l'heure prévue est
atteinte
set alarm(heure)
alarm = on,
décroche
délai
tonalité occupé
numéro (n) délai
composition message
invalide
message numéro valide
traffic
connexion
occupé appelé occupé routage effectué
sonnerie
appelé décroche
connecté
appelant raccroche
déconnecté
jeu impossible
6.1.5. conditions
une condition est une fonction booléenne de l'état d'un objet, valide sur un intervalle de temps
un état peut être défini par une condition
être dans un état est une condition
les conditions peuvent être utilisées pour garder des transitions, qui ne peuvent être
déclenchées que si la condition est satisfaite
6.2. opérations
6.2.3. exemple
compléter le diagramme d'états pour la ligne téléphonique avec des actions et des activités
également, on peut décrire les états et événements dans des structures hiérarchiques avec
héritage de la structure partagée et des comportements communs
par l'agrégation, on permet à un état d'être décrit par une collection d'états orthogonaux
concurrents (parallèles)
les états concurrents correspondent normalement à des agrégats d'objets qui interagissent, et
parfois au système entier
choisit(article)
[article vide]
[rendu < 0]
on peut décrire un sous diagramme pour l'activité "délivre article" : déplacement du bras robot
puis saisie puis lâcher par exemple
on peut aussi fournir un sous diagramme pour l'événement "choisit article" : saisie successive
des chiffres du code article
R
Point mort M.Arrière
N
N F
M. Avant
stop accélère accélère
1 2 3
décélère décélère
Event
instant
Entrée utilisateur
device
…
6.4. parallélisme
un diagramme d’états pour un assemblage est une collection de diagrammes : un pour chaque
composant
les transitions gardées pour un objet peuvent dépendre de l’état d’un autre
exemple : dans une voiture : le contact, la boite de vitesse, le frein, l’accélérateur évoluent de
façon indépendante; le démarreur ne fonctionne que si la voiture est au point mort :
[ boite de vitesse IN point mort]
si aucune activité n’est associée à l’état, cette transition déclenche immédiatement, mais les
actions d’init et d’exit sont toujours appelées
de telles transitions peuvent être gardées, ce qui permet de sélectionner celle qui va être
activée en fonction d’une condition logique particulière
si aucune condition n’est satisfaite pour les transitions automatiques), l’objet reste dans l’état
courant jusqu’à ce que cela se produise, ou qu’une autre transition soit déclenchée par un événement
evt2 (att2)
Classe
la flèche peut être connectée directement à une transition de l’objet cible pour indiquer que
celui ci dépend de l’événement
si un état accepte des événements en provenance de plusieurs objets, on se trouve en présence
d’une situation appelée “race condition” (course). L’ordre dans lequel les événements peuvent se
produire influe sur l’état final. La conception doit éviter soigneusement ces situations quand elles ne
sont pas désirées
dans de nombreux cas, l’envoi d’événements ne peut pas être distingué d’une action (l’activité
“sonnerie occupé“ est en fait un événement entre la ligne et l’appelant.
toute transition vers un état ayant des sous états concurrents les active tous
en l’absence d’information supplémentaire, c’est l’état initial par défaut qui est choisi
dans le cas de fusion du contrôle, la transition déclenche quand les deux événements ont eu
lieu, sans qu’ils doivent pour cela être simultanés
lorsqu’une transition déclenche la sortie d’un état composite concurrent, cela provoque la fin
des activités en cours dans tous les sous états, avec appel des actions d’exit
fusionner le flot de contrôle permet aux transitions de s’attendre, ce qui n’est donc pas le cas
par défaut
6.6.2. événements
la hiérarchie des événements est indépendante de celle des classes en pratique
les événements sont fondamentaux, partagés par plusieurs classes en général
chaque états sont définis indirectement par les objets et les événements
les transitions sont souvent implantées par des transitions sur les objets, de même nom
les événements sont plus expressifs que les opérations, puisque leur effet dépend aussi de l’état
de l’objet
6.8. résumé
action activité
agrégation condition
contour contrôle
diagramme d’étatsdiagramme imbriqué
état événement
garde généralisation
modèle dynamiqueopération
parallélismerace condition
scénario trace
transition
6.9. exercices
6.9.1. exercice
faire le diagramme d’états d’un robinet de douche, avec levier de sélection bain douche, qui
retombe automatiquement en position bain quand on ferme le robinet
id pour une échelle à deux pans, avec corde et cliquet
id pour une montre digitale
id pour un répondeur
id pour un moteur à deux bobinages (démarrage et action normale) qui fonctionne quand sa
commande est on, et s’arrête automatiquement en surchauffe ou sur l’appui sur off
id pour une installation de chauffage central avec sélection de température dans chaque pièce
id pour un magnétoscope
7. Modélisation fonctionnelle
le modèle fonctionnel décrit les calculs effectués par un système : un calcul est une
transformation de données
on décrit les résultats des transformations de données, sans dire quand ces transformations se
produisent
l'exposé qui est fait dans cette partie ressemble aux DFD habituels
7.2.1. un exemple
taille position
vecteurs vecteurs
nom d’icone transforme de base coupe à la fenêtre déplace de
en vecteurs taille de la fenêtre l’offset de la fenêtre
emplacement
vecteurs écran
position
le diagramme montre les différents chemins suivis par les données, sans préjuger de celui qui
sera effectivement utilisé
un process a plusieurs entrées, et souvent plusieurs sorties :
dividende quotient
division
entière
reste
divisor
au bout du compte, il peut devenir nécessaire de décrire un process de bas niveau par d'autres
moyens : algorithme, équations, langage courant etc...
les process sont programmés par des méthodes (ou des fragments de méthodes)
l'objet qui implante cette méthode est souvent une classe qui apporte les données d'un des flots
d'entrée du processus, surtout lorsque cette même classe est aussi un flot de sortie
parfois, l'objet cible est implicite : dans l'exemple de l’icône, il s'agit de la fenêtre qui reçoit les
pixels à dessiner
date
pays
7.2.7. exemple
max
Archives météo
min
température
Compte en banque
solde
montant retrait
Client
Table Périodique
Sélection
Banque de compte Compte
nom solde
requête modification
Client
Création compte
de compte Banque
Compte en banque
code crypté
vérification solde
ok
code
montant
retrait
Client
billets
le modèle dynamique montre la séquence dans laquelle les opérations sont réalisées
7.9. exercices
7.9.1. exercice
décrire un DFD pour le calcul le volume et la surface d’un cylindre
7.9.2. exercice
id pour calculer la moyenne d’un séquence de valeurs en entrée
on dispose d’une entrée de contrôle pour faire un reset
détailler le diagramme jusqu’aux multiplications et additions
7.9.3. exercice
représenter le DFD de calcul des solution d’une équation du deuxième degré
7.9.4. exercice
représenter le DFD de cut et paste pour le diagramme objet suivant :
Boite
texte
x haut gauche 2 Lien
y haut gauche
hauteur
largeur select
deselect
cut Collection toggle selection
select
deselect
toggle selection
1,2
Segment Point
2
Sélection Buffer Feuille cut x
cut y
paste delete
copy
move