Méthodologie objet
UML et RUP : un survolIUP GMI 2ième année
2005/2006
M Huchard T. [email protected] [email protected]
Plan
• Cours 3Modèle dynamique Modèle d’implémentation
• Cours 1IntroductionPrésentation d’UMLModèle fonctionnel (utilisation)
• Cours 2Modèle structurel
• ANNEXESProjection vers les Bases de Données Projection vers la programmationMéthodologie (RUP)
Plan
• Cours 1IntroductionPrésentation d’UMLModèle fonctionnel (utilisation)
Introduction
Modélisation
Produire une représentation simplifiée du monde réel pour :
• accumuler et organiser des connaissances,
• décrire un problème,
• trouver et exprimer une solution,
• raisonner, calculer.
Introduction
En informatique, Résoudre le hiatus entre :
le réel
le monde informatique
• Évolutif
• Ambiguïté
• Langages codifiés
• Sémantique unique
Introduction Difficultés de la modélisation
Problèmes des spécifications parfois imprécises, incomplètes, ou incohérentes
Taille et complexité des systèmes importantes et croissantes
les besoins et les fonctionnalités augmentent
la technologie évolue rapidement les architectures se diversifient assurer l’interface avec le métier (domaine d’application)
Évolution des applications évolution des besoins des utilisateurs réorientation de l'application évolution de l'environnement technique (matériel et logiciel)
Problèmes liés à la gestion des équipes taille croissante des équipes spécialisation technique spécialisation métier
Introduction Difficultés de la modélisation
Introduction
Les méthodes = des guides structurants
• Décomposition du travail
• Organisation des phases
• Concepts fondateurs
• Représentations semi-formelles
Assurent une démarche reproductible pour obtenir des résultats fiables
Introduction
Décomposition du travail
• Phases
analyse, conception, codage, validation, etc.
• Niveaux d’abstraction
conceptuel (besoins)
logique (solution informatique abstraite)
physique (solution informatique concrète)
Introduction
Organisation du travail
• Processus de développement
Phases séquentielles
Itération sur les phases
Introduction
Concepts fondateurs
• Fondent l’approche du problème et l’expression de la solution
Classe, signal, état, fonction, etc.
Introduction
Représentations semi-formelles
• Représentations partiellement codifiées basées sur les concepts fondateurs
diagrammes, formulaires, etc.
• Support de différentes activités
réflexion, spécification, communication,
documentation, mémorisation (trace)
Une méthode d’analyse et de conception propose une démarche qui distingue les étapes du développement dans le cycle de vie du logiciel (modularité, réduction de la complexité, réutilisabilité éventuelle, abstraction)
s’appuie sur un formalisme de représentation qui facilite la communication, l’organisation et la vérification
Le langage de modélisation produit des documents (modèles) qui facilitent les retours sur conception et l’évolution des applications
Introduction
Pour résumer …
Plan
• Cours 1IntroductionPrésentation d’UMLModèle fonctionnel (utilisation)
• Langage de modélisation véhiculant en particulier
les concepts des approches par objets
classe, instance, classification, etc.
mais intégrant d’autres aspects
associations, fonctionnalités, événements,
états, séquences, etc.
UML - Unified Modeling LanguageUML - Unified Modeling Language
• Simplicité• Facilité pour coder et réutiliser• Modèle plus proche de la réalité
–description plus précise des combinaisons
(données, opérations)–décomposition basée sur “classification naturelle”
–facile à comprendre et à maintenir• Stabilité
–de petites évolutions peuvent être prises en compte sans changements massifs
UML = Bénéficier des qualités UML = Bénéficier des qualités des approches par objetsdes approches par objets
Omniprésence technique de l’Objetdans les langages de programmation, les bases de données, les interfaces graphiques, ... et les méthodes d’analyse et de conception.
Universalité de l’Objetla notion d’objet, plus proche du monde réel,
est compréhensible par tous et facilite la communication entre tous les intervenants d’un projet.
La portée d’UML s’explique par La portée d’UML s’explique par l’importance de l’approche par objetsl’importance de l’approche par objets
Au début des années 90, une cinquantaine de méthodes objet, liées uniquement par un consensus autour d’idées communes (objets, classes, sous-systèmes, ...)
Recherche d’un langage commun unique utilisable par toute méthode objet
dans toutes les phases du cycle de vie, compatible avec les techniques de réalisation actuelles.
Genèse d’UMLGenèse d’UML
UML (Unified Modeling Language)
OOD (Booch) OMT (Rumbaugh)OOSE (Jacobson)
OOPSLA
OMG
UML
Autres
Autres méthodesBooch’91 OMT-1 OOSE Partenaires
Booch’93 OMT-2
OOPSLA’95Unified Method 0.8Commentaires du
public
UML 0.9 & 0.91Juin 96 puis OOPSLA’96
UML 1.0Soumission à l’OMG - Janvier 97
UML 1.1
UML 1.2
UML 1.3
Standardisation à l’OMG - Novembre 97
Version intermédiaire non publiée
Version béta - fin 99
UML 2.02003
VueCas d’utilisation
Vue structurelle
Vue architecture(déploiement)
Vue dynamique
Points de vue sur le système
Concepts généraux
Vue implémentation
<------- Logique Physique ------>
Modèle Implémentation
Modèle DynamiqueModèle structurel
Quatre modèles pour concrétiser ces points de vue
Types d'objets et leurs relations
Stimuli des objets et leurs réponses
Modèle d’utilisation
Concepts généraux
ComposantsFichiers BD
Projection sur lematériel
Fonctionnalités
Chaque modèle est une représentation abstraite d ’une réalité, il fournit une image simplifiée du monde réel selon un point de vue.
Il permet :
- de comprendre et visualiser (en réduisant la complexité)
- de communiquer (à partir d’un « langage » commun à travers un nombre restreint de concepts)
- de valider (contrôle de la cohérence, simuler, tester …)
Concepts généraux
Diagrammes (représentations graphiques de modèles)
de classesd’instan
ces
Diagrammes
de déploiementde composants
Diagrammes
Diagrammes
de collaborationde séquences
d'états, d’activités
Diagrammes
de cas d’utilisation
Concepts généraux
Analyse Conception Implémentation
Démarche uniforme sur le cycle de vie
Même notation
Concepts généraux
Les diagrammes sont majoritairement des graphes
Aspects du langage
Noeuds
Chaînes de caractères
Arcs
Notes
noms, étiquettes,
mots clefs << interface >>
Contraintes
Texte libre, lge prog. OCL, etc.
Plan
• Cours 1IntroductionPrésentation d’UMLModèle fonctionnel (utilisation)
Modèle d’utilisation
Les cas d’utilisation, ou « USE CASE »
• Fonctionnalités externes
• Modèles descriptifs du point de vue des utilisateurs
• Interactions avec les acteurs extérieurs
la manière d’utiliser le système
Modèle d’utilisation
On part de l’analyse des besoins ….
Deux conceptsActeur toute entité extérieure au système et interagissant avec celui-ci.
acteurs humains, acteurs « machine » (système extérieur communiquant avec le système étudié)Cas d’utilisation
toute manière d’utiliser le système suite d’événements notable du point de vue de l ’utilisateur
Modèle d’utilisation
Trois concepts
Acteur (rôle 1)
Acteur (rôle 2)
« communicate »
« communicate »
Acteur
Cas d’utilisation
<< actor >>
role
Frontière du système
Modèle d’utilisation
Les cas d ’utilisation peuvent être liés par des relations :
- d’utilisation « include » (le cas origine contient obligatoirement l’autre)
- de raffinement « extend » (le cas origine peut être ajouté optionnellement )
Acteur (rôle 1)
Acteur (rôle 2)
« include »« extend »
- de généralisation/spécialisation « generalizes »
Diagramme du « contexte statique »
système
Acteur (rôle 2)Acteur (rôle 1)
<< actor >>
role
association
0..1
0..1
0..*
Modèle d’utilisation
Modèle d’utilisation
Client
GestionnaireDu stock
« include » « extend »
Commander
Décrireproduits
Procéder aupaiement
« include »
Livraison
Demandecatalogue
extension
Modèle d’utilisation
Client
« include »
Commander
Décrireproduits
Procéder aupaiement
« include »
Paiement CB Paiement cash
« specializes »
Modèle d’utilisation
Délimiter le système - ce qui est extérieur et qui communique avec le système- ce qui est interne au système
Définir les fonctionnalités du système du point de vue des utilisateurs
Donner une description cohérente de toutes les vues que l’on peut avoir du système
Modèle d’utilisation
Descriptions complémentaires Textes, diagramme de séquences ou d’activités
Une proposition couranteSommaire d’identification
Titre, résumé, acteurs, dates création maj, version, auteurs
Description des enchaînements Pré-conditions, scénario nominal, alternatives, exceptions, post-conditions
Besoins IHMContraintes non fonctionnelles
Temps de réponse, concurrence, ressources machine, etc.
Plan
• Cours 2
Modèle structurel
Modèle structurel
En UML, le modèle structurel ou statique est décrit à l'aide de
deux sortes de diagrammes Diagrammes de classes
(description de tout ou d'une partie du système d'une manière abstraite, en termes de classes, de structure et d'associations).
Diagrammes d'objets(description d'exemples de configuration de tout ou partie du système, en termes d'objets, de valeurs et de liens).
Modèle structurel
Objets du monde réel Objets informatiques
État Internecaché
Comportementvisible
Les objets
Modèle structurel
Comportement influe sur l'étatEtat reflète les comportements passés
Objet
Etat ---> évolue au cours du temps
Comportement ---> actions et réactions
Identité ----> essence
Sophie
Alain
Système
BD
Luc
: Professeur
: Discipline
Deux objetsou instances
Modèle structurel
Modèle structurel
Première abstraction
Une classe peut être vue comme
- la description en intension d'un groupe
d'objets ayant
• même structure (même ensemble d'attributs),
• même comportement (mêmes opérations),
• une sémantique commune.
- la « génitrice » des objets ou instances
- le « conteneur » (extension) de toutes ses
instances
Classe
Attributs (propriétés)
Voiture
type : stringmarque : stringcouleur : string
titine :Voiture
type =205Peugeotrouge
Modèle structurel
Instance
Valeurs d'attributs (État)
« Est-instance-de »
Classe et Attributs (propriétés)
Voiture
type : String {changeable}marque : Stringcouleur[1..*]: Couleur = blanc
Modèle structurel
[Visibilité] nom [[multiplicité]][:type][=valeur initiale][{propriétés}]
constant
addOnly
Nom de classe, expression
[0..1]
[n]
[2..*]
+ - ~ #
Couleur
blanc:Couleur
ClasseAttributs de classe
Voiture
type : stringmarque : stringcouleur : stringnbrVoitures : intnbrRoues : int =4 {cst}
titine :Voiture
type =205Peugeotrouge
Modèle structurel
Instance Valeurs d'attributs (État) Sauf des attributs de classe
« Est-instance-de »
Attribut de classe ~ caractéristique partagéeRévèle souvent une modélisation à approfondir
Classe
Attributs dérivés
Personne
dateNaissance : String/age : int
julie:Personne
08/05/8815
Modèle structurel
Instance
Valeurs d'attributs (État)
« Est-instance-de »
{age = date du jour – date de naissance} Peut-être une opération déguisée ? (stockage optionnel)
Opérations et méthodes
Voiture
type : stringmarque : stringcouleur : string
repeindre(c: Couleur)déplacer(d : longueur) Méthodes
Implémentations
Modèle structurel
nom de la classe
attributs
opérations
Des attributs complémentaires peuvent être nécessaires
Classe, opérations, méthodes
Modèle structurel
[Visibilité] nom [(paramètres)][:type retour][{propriétés}]
query
abstract[mode] param : type [=valeur défaut]
+ - ~ #
Couleur
blanc:Couleur
mode = in (par défaut), out, in/out
Voiture
repeindre(in c: Couleur=blanc)déplacer(in d : longueur)getCouleur():Couleur{query}
Opérations et méthodes de classe
Modèle structurel
Datejour:intmois:intannee:intnomDesMois[12]:String={« janvier », « fevrier » ..}
getJour():int………getFormatEtendu():String……..getNomMois(in i:int)
Opération/méthode de classe
Elle ne s’applique pas à une instance
Opérations et méthodes de classe
Modèle structurel
Produit
Référence : StringPrixHT : floatTauxTVA : float
setPrixHT(f:float)affichePrix()……..fixeTauxTVA(f:float)
Opération/méthode de classe
Elle ne s’applique pas à une instance
Modèle structurel
Un objet est instance (propre) d'une classe :
il se conforme à la description que celle-ci fournit,
il admet une valeur pour chaque attribut déclaré à son attention dans la classe,
il est possible de lui appliquer toute opération définie à son attention dans la classe.
Tout objet admet une identité qui le distingue pleinement des autres objets :
il peut être nommé et être référencé par un nom (mais son identité ne se limite pas à ça).
Association / Lien (analogie Classe / Instance)
Pays Ville
nom nom
a-pour-capitale
Association
: Paysnom=France
:Villenom = Paris
a-pour-capitale
Lien
Modèle structurel
Association / Lien (analogie Classe / Instance)
Modèle structurel
Une association est l’abstraction d’un groupe de liensdont les caractéristiques sont communes
• même type d’origine• même type de destination• même attributs
Modèle structurel
Association en général binaire (degré = 2) mais ..
Adhérent Exemplaireemprunte
DispositifDeLecture
lire
nom d'associatio
n
association binaire
association ternaire
Multiplicités et rôles dans une association
Bassoc
Modèle structurel
nA
- n instances de B peuvent être en relation avec une instance fixée de A
- une instance de B joue le rôle rb pour une instance de A dans lecontexte de assoc
rb
Multiplicité et rôles d'une association
Société Personne
nomadresse
nomdate de nais.n°SSadresse
emploie
travaille-pour
employeur employé
chef
travailleur
encadre
Modèle structurel
* 1..*
1..*
0..1
Modèle structurel
exactement 1Classe
1
0..1
Classe0..*
Classe1..*
Classe 2..4
Classe 2,4
au plus 1
aucun, 1 ou plusieurs (défaut)
au moins 1
de 2 à 4
2 ou 4
Multiplicité
Classe
Conseils pour la modélisation d'association
- verbes candidats possibles
- ne pas "dériver vers la conception" (pointeurs ou attributs référentiels)
Modèle structurel
Voiture
type : String {changeable}marque : String
Modèle structurel
Couleur1..*
Un attribut à valeur multiple est souvent référentiel
Entreprise Personne
nomadresse
nomdate de nais.adresse
quantité
Possède-des-actions
capital actionnaire
Modèle structurelClasse association
Ligne de portefeuille
* 1..*
Classe association
Utilisateur Station de travail
nom nom
Autorisation
Autorisé sur
prioritédroits
Répertoire
répertoire de rattachement
Modèle structurel
1..*
1..*
1..*
Classe d’association
Modèle structurel
Une classe d'association permet de modéliser une association par une classe, donc de disposer d’attributs et d’opérations spécifiques. Les liens d'une telle association sont alors des objets instances de cette classe.À ce titre, ils admettent une valeur pour tout attribut déclaré dans la classe d'association ; et on peut leur appliquer toute opération définie dans celle-ci.En tant que classe, une classe d'association peut à son tour être associée à d'autres classes (voire à elle-même par une association réflexive).
Association qualifiée
Banque Personne
num_client
est_client
Modèle structurel
Dossier_C
1..*
1..*
Banque Personnenum_client
est_client
1..*
0..1
Navigabilité (pour la conception)
Polygone Pointcontient
Modèle structurel
3..*
{ordered}
Exprime un chemin d’accès d’un objet à un autre
Un polygone « connaît ses points »
Par défaut = bidirectionnel
Association dérivée
Société Département
Modèle structurel
1..*
1
Personne/travaillePourLaSociété1..*
0..1
dept
dept
structure
employeur
travaillePourLeDept
{Personne.employeur=Personne.dept.structure}
0..1
1..*
D’autres « abstractions »
Modèle structurel
associations particulières (composition / agrégation)
spécialisation / généralisation
Agrégation
Sémantique Collection/Élément
Arbre
Site
Forêt1
1..n
Région
Pays
1
1..n
1
1..n
Modèle structurel
Association particulière tout /partie
L’existence du composant est assujettie à celle de l’objet composite
DeptEnseignementUniversité
Composition
Modèle structurel
*1
Composition / Agrégation
Contraintes
- Exclusivité / Partage
- Dépendance / Indépendance
Propagation / Diffusion
Modèle structurel
Généralisation / Spécialisation
Mécanismes d’inférences intellectuelles de caractéristiques Soit on affine (spécialisation) Soit on abstrait (généralisation)
Sémantique Point de vue ensembliste Point de vue logique
Modèle structurel
Généralisation / Spécialisation
Elle relie deux éléments de modèle (classes, cas d’utilisation, méthodes)
Modèle structurel
A
B
B spécialise A ; A généralise B
Définition : L’extension de A (ses instances)contient l’extension de B
A
B
Conséquence : une instance de Bpossède les propriétés de Aéventuellement sous une forme affinée
Personne
nom adresse
Chercheur
grade adresse Exposer()
{disjoint}
Gestionnaire
numadresse
Modèle structurel
Généralisation / Spécialisation
Une sous-classe “hérite” des descriptions de sa super-classe :
les déclarations d'attributs, les définitions d'opérations, les associations définies sur la super-classe,
les contraintes (on en parle plus tard).
Une sous-classe peut redéfinir de façon plus spécialisée une partie ou la totalité de la description « héritée ».
Modèle structurel
Généralisation / Spécialisation
Modèle structurelGénéralisation / Spécialisation
Le discriminant : exprime un critère de classification
Salarié Vacataire Cotisant NonCotisant
Employé
RetraiteComplémentaire
TypeContrat
TypeContrat
RetraiteComplémentaire
Salarié Vacataire Cotisant NonCotisant
Employé
TypeContrat RetraiteComplémentaire
Modèle structurel
Généralisation / Spécialisation multiple
Véhicule terrestre Véhicule aquatique
Auto Véhicule amphibie Bateau
Véhicule
milieumilieu
Composition/Agrégation ou généralisation ?
Modèle structurel
Agrégation lien entre instances un arbre d'agrégation est composé d'objets qui sont parties d'un objet composite
Généralisation lien entre classes
Les contraintes
Les contraintes sont des prédicats, pouvant porter sur plusieurs éléments du modèle statique, qui doivent être vérifiés à tout instant. Les contraintes permettent de rendre compte de détails à un niveau de granularité très fin dans un diagramme de classe. Elles peuvent exprimer des conditions ou des restrictions. En UML, les contraintes sont exprimées sous forme textuelle, entre accolades et de préférence en OCL (Object Constraint Language). Les contraintes sont héritées.
Modèle structurel
Modèle structurelContraintes de généralisation / Spécialisation
SalariéCdiVacataire Cotisant NonCotisant
Employé
{complet,disjoint}{incomplet}
Modèle structurelContraintes de généralisation / Spécialisation
Véhicule terrestre Véhicule aquatique
Auto Véhicule amphibie Bateau
Véhicule
milieumilieu
{incomplet,chevauchement}
Les contraintes
Exemples de contraintes sur associations
SOL
Strates
1..*
Personne Comité
préside *1
membreDe**
{subset}
{ordered}contrainte sur
extrémité d'association
contrainte entre 2 associations
Modèle structurel
actif : Real {value 0}passif : Real
Les contraintesExemple de contraintes à différents niveaux
contrainte sur classe
Personne
chef
subordonné
<dirige
Société
{ actif = passif }
{ Personne.employeur = Personne.chef.employeur }
employeur
* 1..* 0..10..1
contrainte sur attribut
contrainte sur 2
associations
Modèle structurel
Quelques compléments de notation
relation de dépendance
Sémantique de la relation de dépendance« un changement dans la spécification de B peut affecter A » (appelle, crée, utilise, instance de, etc.)
Modèle structurel
A B
FenêtreGraphique Evénement
Consommer ChoixBoisson
Quelques compléments de notation Un stéréotype est un label qui permet d'apporter une précision supplémentaire à un élément de notation (classe, relation, …)
Modèle structurel
Consommer ChoixBoisson« include »
« enumeration » NomMois
JanvierFévrier ….
Personne
« crée » + Personne()+ getNom():String
Classes abstraites (notation italiques ou avec mot-clef {abstract})
Modèle structurel
Une classe abstraite est une classe non instanciable, c'est à dire qu'elle n'admet pas d'instances directes.Une classe abstraite est une description d'objets destinée à être « héritée » par des classes plus spécialisées.Pour être utile, une classe abstraite doit admettre des classes descendantes concrètes.La factorisation optimale des propriétés communes à plusieurs classes par généralisation nécessite le plus souvent l'utilisation de classes abstraites.
Opérations abstraites
Modèle structurel
Une opération abstraite est une opération n'admettant pas d'implémentation : au niveau de la classe dans laquelle est déclarée, on ne peut pas dire comment la réaliser.Les opérations abstraites sont particulièrement utiles pour mettre en œuvre le polymorphisme.Toute classe concrète sous-classe d'une classe abstraite doit “concrétiser” toutes les opérations abstraites de cette dernière.
Classes abstraites
Modèle structurel
FormeGéométrique
dessiner()déplacer(delta : Vecteur)
centre : Point
régulier : Boolean
PolygonegrandDiam : VecteurpetitDiam : Vecteur
dessiner()
opération abstraite
classe abstraite
classe abstraite
(dessiner() est héritée et non concrétisée)
opération concrétisée
classe concrète
Polygone utile si
spécialisée
Ellipse
Interfaces
Modèle structurel
Une interface est une collection d'opérations utilisée pour spécifier un service offert par une classe.Une interface être vue comme une classe sans attributs et dont toutes les opérations sont abstraites.Une interface est destinée à être “réalisée” par une classe (celle-ci en hérite toutes les descriptions et concrétise les opérations abstraites).Une interface peut en spécialiser une autre, et intervenir dans des associations avec d'autres interfaces et d'autres classes.
Interfaces
Modèle structurel
MenuPopUp
BlocDeChoixsetDefault(o : Option)getChoice() : Option Option
choix
1..*
setDefault(o : String)getChoice() : String
setDefault(o : Bouton)getChoice() : Bouton Bouton
choix
1..*
String
choix1..* opérations concrétisées
«interface» interfaceopérations abstraites
réalisation
MenuBouton
Interfaces
Modèle structurel
Deux notations pour l'utilisation d'une interface
MenuPopUpsetDefault(o : Option)getChoice() : Option
«interface»
BlocDeChoix
MenuPopUp
ApplicationFenêtrée
«uses»
ApplicationFenêtrée«uses»
BlocDeChoix
interfaceinterfaceutilisationutilisation
réalise
classe utilisatriceclasse utilisatrice
Heuristiques d’élaboration du modèle structurel
• Bien comprendre le problème • Faire simple • Bien choisir les noms • Bien expliciter les associations • Ne pas trop “généraliser” • Relire • Documenter
De nombreuses révisions sont nécessaires !
Modèle structurel
• Cours 3
Modèle dynamiqueModèle d’implémentation
Plan
Décrit les interactions entre objets et les changements au cours du temps
Modèle dynamique
-Le déroulement des actions, le contrôle
-Les états des objets et leurs interactions
- La survenue des événements
Modèle dynamique
diagrammes de collaboration (ou de communication)
diagrammes de séquences
diagrammes états-transitions
diagrammes d'activités
La communication
Systèmes informatiques : Société d'objets travaillant en synergie pour réaliser les fonctions de l'application
Communication
Client
Serveur
message
Acteur
Modèle dynamique
constructeursdestructeursappel de méthodes
Types Synchronisation
asynchrone
synchrone
retour
Les messages
Modèle dynamique
Expressions
[condition]*[condition d’itération] itération
Diagramme de collaboration
Interaction entre objets pour la réalisation d’une fonctionnalité du système
:B
:C
message
:A
1: m12: m2
3: m3
4: m4
6: m6
5: m5
Modèle dynamique
L’accent est mis sur la collaboration entre objets
Diagramme d’instance d’une roue de brouette
pneu:Piece
d:Piece
rdb:Piece
4: m4
Modèle dynamique
Chambre:Piece
Jante:Piece
r3:Piece
r2:Piecer1:Piece
Piece
Diagramme de collaboration – calcul du prix
pneu:Piece
d:Piece
rdb:Piece
4: m4
Modèle dynamique
Chambre:Piece
Jante:Piece
r3:Piece
r2:Piecer1:Piece
1:getPrix()
2:getPrix()
3:getPrix()
3.4:getPrix() 3.3:getPrix()
3.2:getPrix()
3.1:getPrix()
Diagramme de séquencesInteraction entre objets pour la réalisation d’une fonctionnalité du système
:B :C:A
m1
m2
m3
m4
m6m5
Modèle dynamique
L’accent est mis sur la chronologie des événements
La ligne de vie
« create »
Création par le message «create»
Activation de l’objet qui exécute une opération op
Destruction par un autre objet
:C1
« destroy »
op
Modèle dynamique
rdb pneu chambre jante
tem
psModèle dynamique
d r1 r2 r3
getPrix()
getPrix()
getPrix()getPrix()
getPrix()
getPrix()
getPrix()
rdb pneu chambre jante
tem
psModèle dynamique
d r1 r2 r3
getPrix()
getPrix()
getPrix()getPrix()
getPrix()
getPrix()
getPrix()
:Palmier :Feuille :Inflorescence :Régime
tem
psModèle dynamique
Diagrammes d’états Événement et État
État d'un objetmoment de la vie d’un objet où Il accomplit une action Il satisfait une condition Il attend un événement
l’état est défini par la valeur instantanée des attributs et liens de l’objet
Modèle dynamique
Événement et État
ÉvénementStimulus (sans durée) envoyé à un objet
une condition devient vraie appel d’une opération réception d’un signal fin d’une période de temps
Modèle dynamique
• Graphe
Nœud ÉtatArc Transition nommées par événement
• Une séquence d'événements = chemin dans le graphe
Modèle dynamique
Diagrammes d'États
Ils servent à représenter les états par lesquels passeun objet d’une classe donnée
• état et événement sont duaux
un événement sépare deux états un état sépare deux événements
Modèle dynamiqueDiagrammes d'États
Modèle dynamiqueNotation des états
Initial
Final
Simple
Complexe
Créditeur
Typing password
entry/ set echo offexit/ set echo on
on type char/ handle charon help/ display helpdo/ curseur clignote
au débutà la finlors d’evt
tout le temps
Activités internes
Diagrammes d'États
Modèle dynamique
Notation des transitions
étiquette
étiquette• événement(paramètres)• [condition]• /action• ^envoiMessage
Diagrammes d'États
État 1do/ activité 1
Événement 1 [Cond1] / Action1État 2...
Opération Activité / Action
Modèle dynamique
Avec inflorescence
création
e1
Avec régime
e2
[C]
Créé Avec feuille
Modèle dynamique
Diagrammes d'ÉtatsEtats d’un compte bancaire transitions gardées
sous-état
Ouvert FermédemandeCréat()
Débiteuron retrait/ agioson dépôt/ augmenter solde
fermer()
Créditeuron retrait/ debiter soldeon dépôt/ augmenter solde
[Solde >0]
[Solde ≤0]
Modèle dynamique
ouvert
Action opération instantanée, non interruptible,souvent utilisée pour faire des mises à jour de valeurs,attachée à une transition.
Envoyer un événement est une action
Activitéopération qui prend du temps, interruptible par un événement,perpétuelle ou finie,nécessairement attachée à un état.
Opération elle peut être attachée à une transition ou à un état. elle est exécutée en réponse à l'événement ou à l'état.
Modèle dynamique
Généralisation
- permet une meilleure structuration des diagrammes d'états
Un objet dans un état du diagramme général doit
être dans un des états du diagramme imbriqué (relation ou entre les états)
E1
E2
E5
E4E3
E6
Modèle dynamique
Agrégation
une classe "agrégat" aura un état défini par l'agrégation des états de ses composants.
Agrégation concurrente (relation et)
Modèle dynamique
marié
Age
célibataire
Statut familial
Enfant
Ado
Adulte
Diagrammes d’activités Représentation du flot de contrôle
• Actions
• Données, objets
• nœuds de contrôle
• Etat initial
• Etat final
Modèle dynamique
signal
fork décision
Diagramme d’activitésModèle dynamique
Réception
Expédier produits
Exécuter
Envoi facture
FacturePaiement
Accepter paiement
[acceptée]
[rejetée]
Clôturer
Bon de commande
Traiter Commande
Heuristiques d’élaboration du modèle dynamique
• Chemins suivis lors des envois de messages : diag. de séquences ou de collaboration
• Point de vue d’un objet• diag d’états : pour les objets pour lesquels il est significatifde montrer les changements d’états• diag. d’activités : pour décrire un algorithme du point de vue d’un objet
• Contrôler la cohérence, structurer les diagrammes
• Accompagnement des diagrammes de cas d’utilisation• diag. de séquences• diag. d’activités (proches des workflows)
Modèle dynamique
Les packages
Modèle d’implémentation
Un package ou sous-système est un regroupement logique de classes, associations, contraintes .. Un sous-système est généralement défini par les services qu’il rend Les liens entre sous-systèmes sont des liens de dépendance Les « packages » servent à structurer une application Ils sont utilisés dans certains LPO (Java) ce qui assure une bonne « traçabilité » de l ’analyse à l ’implémentation
Les packages
Classes avec fort couplage « sémantique »
Liens
de dép
endanc
e
Modèle d’implémentation
VenteAutomobile
Voiture
Garage
Vendeur
Modèle d’implémentation (UML 2.0)Diagramme de composants
dépendances entre composants logiciels(sources, binaires, exécutables, etc.)
Système de planification
Agenda
réservation
:PC
Modèle d’implémentation (UML 2.0)Diagramme de déploiement
organisation matérielle des éléments de calcul et descomposants logiciels
Système de planification
Agenda
:server
• ANNEXES
Projection vers les Bases de DonnéesProjection vers la programmationMéthodologie (RUP)Patrons de conception
Plan
Persistance
• Classes vs Types persistants vs éphémères
• Points d’entrée (racine de persistance)
• Regroupements
Du modèle objet ... aux BDDu modèle objet ... aux BD
Adéquation aux BD « objet »
LDD, LMD, L Hôte
• LDD, LMD, L Hôte équivalents LPO
• Langage de requête « like » SQL
• Transactions
Du modèle objet ... aux BDDu modèle objet ... aux BD
Adéquation aux BD « objet »
Adéquation aux BD « classiques »
Traduction
comme précédemment
d. structurels --> schémas
d. dynamiques --> requêtes et
traitements applicatifs divers
Mais règles de « passage »
Du modèle objet ... aux BDDu modèle objet ... aux BD
Classes
AttributsAjout de l’identifiant
Schéma relationnel
ADRESSE
N°RueCPVille
Attribut Domaine Non Null
Id_adresse Identifiant OuiN° Entier NonRue String(30) Non…..
Schéma AdresseClé primaireId_adresse
Du modèle objet ... aux BDDu modèle objet ... aux BD
Classes
AttributsAjout de l’identifiant
Schéma relationnel
PERSONNE
NSS {unique}NomPrénomDate-naissance
Attribut Domaine Non Null
Id_Pers Identifiant OuiNSS String(13) OuiPrénom String(30) NonDate-nais Date Non
Schéma PersonneClés primairescandidates
Id_adresseNSS
On préfère NSS
Du modèle objet ... aux BDDu modèle objet ... aux BD
Associations
PERSONNE ADRESSE
NSS....
N°RueCPVille
1 1a
Attribut Domaine Non Null
NSS String(13) ID OuiNom String(35) OuiId_adresse Identifiant Oui
Schéma PersonneClé primaireNSS
Clé étrangèreId_adresse
Du modèle objet ... aux BDDu modèle objet ... aux BD
Associations
PERSONNE COMPTE
NSS....
N°Type
1 0..*possède
Attribut Domaine Non Null
Id_compte Identifiant OuiN° String(35) Id OuiNSS Identifiant Oui
Schéma CompteClé primaire
Id-compteN°
On choisit N°
Clé étrangèreNSS
Du modèle objet ... aux BDDu modèle objet ... aux BD
Associations
PERSONNE BIBLIOTHEQUE
NSS....
nom0..*adhère->0..*
date adhésiontype adhésion (mensuelle, annuelle)
Schéma AdhèreClé primaireNSSId_bibliothèque
Rque :DateType
Attribut Domaine Non Null
NSS Id String(13) OuiId_bibliothèque Identifiant OuiDate_adhésion Date OuiType_adhésion String(10) Oui
Du modèle objet ... aux BDDu modèle objet ... aux BD
Spécialisation
PERSONNE
NSS....
ETUDIANT
num....
ENSEIGNANT
grade....
Plusieurs choix
- « aplatir vers le haut »
Schéma PersonneClé primaireNSS
- « aplatir vers le bas »Schémas Etudiant, EnseignantClé primaireNSS
- conserver les niveaux
Du modèle objet ... aux BDDu modèle objet ... aux BD
• ANNEXES
Projection vers les Bases de DonnéesProjection vers la programmationMéthodologie (RUP)Patrons de conception
Plan
Du modèle objet ... à la programmationDu modèle objet ... à la programmationClasses
- adresse : String = 'adresse inconnue'- numeroINSEE[6] : Integer
# changeAdresse(nouvelleAdresse : String)+ cotisationAJour() : Boolean
Adhérent
note (peut contenir un complément de description, un
commentaire, …)
type d'attribut
valeur initiale
type de paramètretype du résultat
de l'opération
privé
protégé
public
adhérent de labibliothèquevaleurs
multiples
Du modèle objet ... à la programmationDu modèle objet ... à la programmation
Classes
Attributs, Opérations ------> Champs, Méthodes
Et des méthodes particulières spécifiques à certains langages …
Accesseurs L/E (convention get/set en Java)
Constructeurs (Java, C++), Destructeurs (C++)
Proposer un service et réagir aux messages
Classe Adhérent en Java (extrait)
public class Adherent{ private String adr = ``adresse inconnue``; private int[] numeroInsee; public Adherent(){numeroInsee=new int[6];} public Adherent(String na, int[] ni){adr=na;
numeroInsee=ni;}
public String getAdr(){return adr;} protected void setAdr(String nouvelleAdresse)
{adr=nouvelleAdresse;} public int[] getNumeroInsee(){return numeroInsee;} protected void setNumeroInsee(int[] ni)
{numeroInsee=ni;}
public boolean cotisationAjour(){…….}}
Constructeurs
Accesseurs
Méthodes
Champs
Classe Adhérent en C++ (extrait)
//………. Adherent.h ……………………………………………………class Adherent{ private:
string adr; int* numeroInsee; public:
Adherent();Adherent(string na, int* ni);virtual ~Adherent();virtual string getAdr() const;virtual void setAdr(string nouvelleAdresse);virtual int* getNumeroInsee()const;virtual void setNumeroInsee(int* ni);virtual boolean cotisationAjour()const;
};
Constructeurs
Accesseurs
Méthodes
Champs
Destructeurs
Classe Adhérent en C++ (extrait)
//……………. Adherent.cc …………………………………………………Adherent::Adherent() {adr = ``adresse inconnue``; numeroInsee=new int[6];}
Adherent::Adherent(string na, int* ni) {adr=na; numeroInsee=ni;}
Adherent::~Adherent(){delete[] numeroInsee;}
string Adherent:: getAdr()const{return adr;}void Adherent::setAdr(string nouvelleAdresse) {adr=nouvelleAdresse;}int* Adherent::getNumeroInsee()const{return numeroInsee;}
void Adherent::setNumeroInsee(int* ni){numeroInsee=ni;}
boolean Adherent:: cotisationAjour()const{…….}
Du modèle objet ... à la programmationDu modèle objet ... à la programmation
Opérations
Données
MessagesEncapsulation
Objet
Retour sur la notion d’encapsulation
Du modèle objet ... à la programmationDu modèle objet ... à la programmation
Liste GestionPersonnel
ajoute
retire
applique(fct)
Confiner les modifs de Liste dans la classe Liste …
Utilité de l’encapsulation
Du modèle objet ... à la programmationDu modèle objet ... à la programmationEncapsulationConsensuel
privé ... implémentationpublic ... spécification
En pratique
à chaque langage ses particularismes
Smalltalk. attributs privés, méthodes publiques, ...Java. package, protected, ...C++. friends, protected,
protection sur le lien d’héritage, ...
Quelle philosophie adopter ?
Protection en Java
public class Adherent{
private String adr = ``adresse inconnue``; private int[] numeroInsee; public Adherent(){numeroInsee=new int[6];} public Adherent(String na, int[] ni) {adr=a; numeroInsee=ni;} public String getAdr(){return adr;}
protected void setAdr(String nouvelleAdresse){adr=nouvelleAdresse;}
public int[] getNumeroInsee(){return numeroInsee;} protected void setNumeroInsee(int[] ni)
{numeroInsee=ni;}
public boolean cotisationAjour(){…….}}
Accessible aussi dans toute méthode du package et dans toute méthode d’une sous-classe C sur une variable dont le type statique est C ou une sous- classe de C
Accessible partout
Accessible seulement dans les autres méthodes de la classe
Du modèle objet ... à la programmationDu modèle objet ... à la programmation
Variables et méthodes de classe (en Java)
public class Produit{ private static float tauxTVA; ……….. public static void fixeTauxTVA(float
f){…..}}
Produit
référence : StringprixHT : floattauxTVA : float
setPrixHT(f:float)affichePrix()……..fixeTauxTVA(f:float)
Du modèle objet ... à la programmationDu modèle objet ... à la programmation
Du modèle objet ... à la programmationDu modèle objet ... à la programmationClasses abstraites, méthodes abstraites
abstract public class Figure{
abstract public void dessine();……..
}
Java
class Figure{ public:
virtual void dessine()const=0;……..
}
C++
Du modèle objet ... à la programmationDu modèle objet ... à la programmation
Traduction des interfaces en Java
Héritage par réalisation
Spécification de services (sans implémentation)
interface Ipolygon {float perimeter(); …}
interface Iquadrilateral ….{static const int sideNb = 4; ….}
interface Isquare ….{float getCote(); …..}
public class Square implements Isquare{public float getCote(){….} ….}
public class x{…. public void meth(Isquare i) {…} …..}
Du modèle objet ... à la programmationDu modèle objet ... à la programmationInterfaces en Java
Ipolygon
Iquadrilateral
Isquare
Square
interface Ipolygon {float perimeter(); …}
interface Iquadrilateral ….{static const int sideNb = 4; ….}
interface Isquare ….{float getCote(); …..}
public class Square implements Isquare{public float getCote(){….} ….}
public class x{…. public void meth(Isquare i) {…} …..}
Du modèle objet ... à la programmationDu modèle objet ... à la programmationInterfaces en Java
méthodes abstraites etpubliques (par défaut)
variables de classe publiques et constantes
(par défaut)
type à implémenter
type de Java(écriture de code
générique)
Du modèle objet ... à la programmationDu modèle objet ... à la programmation
Associations
PERSONNE ADRESSE
nom....
N°RueCPVille
1 1a
class PERSONNE{ private :
string nom; ADRESSE adr;
....}
rien de spécial dans ADRESSE
Attribut complexe
Navigabilité dans un seul sens
adr
Utilisationdu nom de rôle
Du modèle objet ... à la programmationDu modèle objet ... à la programmation
Associations
PERSONNE COMPTE
nom....
N°Type
1 0..npossède
class PERSONNE{private :
string nom;list <COMPTE> comptes;....}
class COMPTE{private :
PERSONNE possesseur;....}
Conteneur
Référence
Navigabilité dans les deux sens
comptespossesseur
Du modèle objet ... à la programmationDu modèle objet ... à la programmationAssociations
PERSONNE BIBLIOTHEQUE
nom....
nom0..nadhère
class PERSONNE {private : string nom;....}class BIBLIOTHEQUE {private : ....}
class ADHESION{private :
PERSONNE adhérent;BIBLIOTHEQUE biblio;DATE dateadhésion; String typeAdhesion; ....}
Réification
0..n
date adhésiontype adhésion (mensuelle, annuelle)
Classe d’association
Personne
nom adresse
Gestionnaire
numadresse
Du modèle objet ... à la programmationDu modèle objet ... à la programmationL’héritage traduit la généralisation/spécialisation
C++class Personne{};class Gestionnaire
: virtual public Personne
Javapublic class Personne{}public class Gestionnaire
extends Personne {}
Du modèle objet ... à la programmationDu modèle objet ... à la programmation
Héritage
• adéquation des deux relations
• représentation et traitement des conflits
• spécialisation des attributs
• représentation de la surcharge et du masquage
• utilisation de l’héritage à des fins d’implémentation ?
Implémentation de la relation de spécialisation par l’héritage, quelques problèmes ....
Du modèle objet ... à la programmationDu modèle objet ... à la programmation
Héritage : adéquation des deux relations
Spécialisation multiple (possible en C++, impossible entre classes Java)
Flot
good()eof() ...
FlotEcriture
écrire(blocOctets)...
FlotLecture
lire(nbOctets)...
FlotLectureEcriture
interface Ipolygon {float perimeter(); …}
interface Iquadrilateral extends Ipolygon{static const int sideNb = 4; ….}
interface Isquare extends Irectangle,Irhombus{float getCote(); …..}
public class Square implements Isquare{public float getCote(){….} ….}
public class x{…. public void meth(Isquare i) {…} …..}
Du modèle objet ... à la programmationDu modèle objet ... à la programmationAdéquation des deux relations (cas de Java)
héritage multipleentre interfaces
spécialisation
implémentation
Cas de Java : héritage simple pour l’implémentation, multiple pour les interfaces ... côté classes, ...les méthodes de FlotLecture et FlotEcriture doivent être réécrites dans FlotLectureEcriture
Du modèle objet ... à la programmationDu modèle objet ... à la programmationHéritage : adéquation des deux relations (Java)
interface Flot
interface FlotEcritureinterface FlotLecture
interface FlotLectureEcritureclasse Flot
classe FlotLecture
classe FlotLectureEcriture
classe FlotEcriture
extendsimplements
Du modèle objet ... à la programmationDu modèle objet ... à la programmationSpécialisation/Généralisation ....
Conflit portant sur le nom des propriétés
Il y a clairement deux propriétés
Objet
couleur (rouge, vert ...)
Elément de jeu
Pion DéCarte à jouer
couleur (coeur, trèfle, ...)
Du modèle objet ... à la programmationDu modèle objet ... à la programmationSpécialisation/Généralisation .... multiplesConflit portant sur les valeurs
ou le domaine d’une propriété
Le pédalo n’a qu’une propriété zoneNav, mais quel sera son domaine ?
ObjetNautique
Bateau EnginPlage
Pedalo
zoneNav
{zoneNav sup. à 100}
{zoneNav inf. à 10}
{zoneNav ?}
Du modèle objet ... à la programmationDu modèle objet ... à la programmation
Héritage : représentation et traitement d’un conflit de nom
Smalltalk
JavaC++
Désignation expliciteObjet::CouleurCarteAJouer::Couleur
Donner deux nomsdifférents
pas d’accès possibleà couleur d’objetautre qu’avec “super”(dans les méthodes)
mieux vaut donnerdeux noms différents
Du modèle objet ... à la programmationDu modèle objet ... à la programmation
Héritage : spécialisation des attributs
Animal
nourriture (végétale, animale, minérale)
Herbivore
nourriture (végétale)
Relation
ensemblesImpliqués > 1
RelationBinaire
ensemblesImpliqués = 2
Aucune représentation, ni en C++, ni en Smalltalk, ni en Java
Seule issue : vérification des contraintes dans les méthodes (surtout accesseurs) ...
Du modèle objet ... à la programmationDu modèle objet ... à la programmation
Héritage : surcharge statique et redéfinition
Redéfinitioncoexistence de méthodes de même nom dans des classes comparablesappel déterminé par le type de l’objet (dynamique)
Surcharge statiquecoexistence de méthodes de même nom dans des classes différentesappel déterminé par le type de la variable (statique)
Du modèle objet ... à la programmationDu modèle objet ... à la programmationHéritage : redéfinitionJava
redéfinition seulement si les signatures sont strictement identiques,C++redéfinition si les types des paramètres sont identiques, le type de retour peut être spécialisé
Magnitude
<(Magnitude)
Time
<(Time)
heureminutesecondes
Date
<(Date)
jourmoisannée
Java, C++ : on ne peut pas représenter directement une spécialisation des paramètres
cas de surcharge statique
Magnitude
<(Magnitude)
Time
<(Magnitude)
heureminutesecondes
Date
<(Magnitude)
jourmoisannée
cas de redéfinition
Du modèle objet ... à la programmationDu modèle objet ... à la programmation
Héritage : à chacun sa surcharge
Personne
Princesse
habiller(Vêtement)habiller(Vêtement, Chaussure)
habiller(Vêtement, Bijou)
VêtementChaussureBijou
QuiSePorte
En Java : correctement interprété comme de la surcharge statiqueEn C++ : habiller(Vêtement, Bijou) cache les deux autres
Du modèle objet ... à la programmationDu modèle objet ... à la programmation
Héritage : l’utiliser pour des raisons d’implémentation ?
Liste
ajoutFin
Pile
pushpoptop
A éviter dans tous les cas ...même si les livres en sont pleins ...
Du modèle objet ... à la programmationDu modèle objet ... à la programmation
Généricité paramétrique
Pile
push(t:T)pop():Ttop():T
En C++ : template
template<typename T>class Pile{… push(T element) …}
Pile<int> p;
En Java : simulé
class Pile{…. push(Object element) ….}
Pile p = new Pile();
problèmes :- contrôle des éléments insérés- cast des éléments retirés
T
T
Du modèle objet ... à la programmationDu modèle objet ... à la programmationA partir du modèle dynamique - diagrammes de séquencejim:Etudiant
afficheResultats()
afficheMoyenneEtMention()
[moyenne<10]afficheModulesObtenus()
public class Etudiant{ public void afficheResultats()
{afficheMoyenneEtMention();if (getMoyenne()<10)
afficheModulesObtenus();}
}
cnam03:Promotion
Du modèle objet ... à la programmationDu modèle objet ... à la programmationA partir du modèle dynamique - diagrammes de collaboration
:Etudiant
*[i:=0..nbEtudiants-1]:moyenne()
public class Promotion{
private Vector listeEtudiants;……….public float moyenneGenerale(){
double mg=0;for (int i=0; i<listeEtudiants.size(); i++
mg+=((Etudiant)(listeEtudiants.get(i))).moyenne();return mg/listeEtudiants.size();
}}
• ANNEXES
Projection vers les Bases de DonnéesProjection vers la programmationMéthodologie (RUP)Patrons de conception
Plan
Méthodologie
Méthode ou Processus de développement
acteurs nécessaires (qui)grands types d’activités (comment)
artefacts (quoi)organisation du travail (quand)
Historique
• Méthodes cartésiennes
Jackson, SADT, Yourdon
• Méthodes systémiques
Merise, Axial, Information Engineering
• Méthodes objet
OOD, HOOD, OMT, OOSE, OOA/OOD, unifiées dans le RUP (Rational Unified Process)
Concepts généraux
• Conceptualiser
obtenir un énoncé du problème (utilisateurs)
• Analyser
spécifier le problème
• Implémenter
réaliser la solution informatique
• Concevoir
une solution informatique
Concepts généraux
Étapes Résultats
Planification Schéma directeur
Analyse des besoins Modèle des besoins
Spécification formelle ou analyse Modèle conceptuel
Spécification technique ou conception Modèle logique
Implémentation Modèle physique
Intégration et Tests Rapport de cohérence logique
Validation du système Rapport de conformité
Maintenance et évolution Documentation et trace
Concepts généraux
• Cycles de développement
- en cascade
- en V
- en spirale
- tridimensionnel
Analyse
Conception
Implémentation
Tests
Maintenance
Modèle de cycle en cascade
Organisation séquentielle des phases du cycle de vie
Une phase est structurée en un ensemble d'activités pouvant s'exécuter en parallèle par plusieurs personnes
Le passage d'une phase à la suivante ne se fait que lorsque les sorties de la première ont été fournies
Modèle de cycle en cascade
Modèle de cycle en cascade
Contre : Retours sur les phases précédentes difficiles (rupture entre les phases)
Visualisation et validation tardive
Pour : Organisation simple et directe
Implémentation
Expressiondes besoins
Validationdes besoins
Validationfonctionnelle
Spécificationfonctionnelle
Conceptiondu système
Tests dusystème
Tests descomposants
Conceptiondes composants
Modèle de cycle en V
Modèle de cycle en V
Approche descendante dans les phases précédant l’implémentation : on décompose le système au fur et à mesure qu’on le construit
Approche ascendante dans les phases suivantes : on recompose le système en testant les parties
Hiérarchie de tests : les différents tests provoquent un retour d’information directement sur la phase permettant de corriger les erreurs.
Modèle de cycle en V
Pour : Décomposition du système en sous-systèmes
Hiérarchie de tests et retours facilités
Vérification ascendante
Contre : Validation en fin de cycle (erreurs d’analyse coûteuses)
Conception
Analyse
Spécifications Besoins
Validation
Tests
Implémentation
Modèle de cycle en spirale
Modèle de cycle en spirale
Modèle itératif On passe par toutes les phases du cycle de vie plusieurs fois
Modèle incrémental On améliore à chaque passage
Un passage peut aussi bien permettre d’évaluer un nombre réduit de fonctionnalités ou l’organisation générale du système de façon non détaillée
Modèle de cycle en spiralePour :
Réalisation de plusieurs prototypes (versions) avant la réalisation du système réel (définitif)
Validation progressive et précoce Souplesse dans le choix des prototypes
Contre : Mise en œuvre parfois coûteuse Possibilité de divergence, nombre de prototypes difficile à déterminer
Le RUP est une réponse à ces critiques
RUP (Rational Unified Process)
RUP
Objectory OMT BOOCH
RUP (Rational Unified Process)
Mots-clefs :développement itératifdéveloppement incrémentalpilotage par les cas d’utilisation
centré sur l’architectureconfigurable
RUP (Rational Unified Process)
1- Les grandes activités2- La notion d’architecture logicielle3- L’organisation itérative des activitésBibliographie
• « The RUP, an Introduction »P. Kruchten, Addison-Wesley 2000
• « The unified Software Developement Process »I. Jacobson, G. Booch, J. Rumbaugh, Addison-Wesley 1999
• « Modélisation Objet avec UML »P.-A. Muller, N. Gaertner, Eyrolles, 2002
RUP (Rational Unified Process)1- Les grandes activités
Le RUP distingue 9 activités,à chacune correspond :
des artefacts
des métiers
des outils (cf. site de Rational)
RUP (Rational Unified Process)1- Les grandes activités
activité 1. GESTION DE PROJET
PlannificationAllocation des tâches et des responsabilitésAllocation des ressourcesEtude de faisabilité et des risques
calendrier des tâcheschef de projet
RUP (Rational Unified Process)1- Les grandes activités
activité 2. MODELISATION DE L’ORGANISATION
modélisation - de la structure- du fonctionnement
de l’organisation où le système sera déployé
cas d’utilisation de l’organisation (avec scenarii)
concepteur d’organisation
RUP (Rational Unified Process)1- Les grandes activités
activité 3. ANALYSE DES BESOINS
détermination des besoins :- fonctionnels (ce que l’on attend du système)- non fonctionnels (fiabilité, temps de réponse,
environnement distribué, etc.)
cas d’utilisation du système à construire (avec scenarii)
documents descriptifsconception de l’interface utilisateuranalyste
RUP (Rational Unified Process)1- Les grandes activités
activité 4. ANALYSE ET CONCEPTION
évoluer depuis la spécification des besoins
jusqu’à une solution informatique
analyse~besoins fonctionnelsconception~intègre aussi les besoins non
fonctionnels
diagrammes de classes, paquetages, sous-systèmesdiagrammes de collaboration, d’étatsdiagrammes de composantsarchitecte, concepteur
RUP (Rational Unified Process)1- Les grandes activités
activité 5. IMPLEMENTATION
Transcription dans un langage de programmation
ou de base de donnéesUtilisation de composants existants
codeimplémenteur, développeur
RUP (Rational Unified Process)1- Les grandes activités
activité 6. TEST
Estimer si les besoins sont satisfaitss’il y a des erreurs/défauts à
corriger
Renforcer et stabiliser l’architecture
modèles de test, scriptsconcepteur de test, testeur
RUP (Rational Unified Process)1- Les grandes activités
activité 6. TEST
Différents niveaux de tests
• unitaires (test d’une classe, d’un module isolément)
• intégration (plusieurs modules ensembles)
• validation (les fonctionnalités du système sont
assurées)• recette (souvent contractualisés,
avec le client)
RUP (Rational Unified Process)1- Les grandes activités
activité 6. TEST
Différents types de tests
• Benchmark (sur un ensemble de données type)
• Configuration/installation • Charge • Fiabilité, stress• Performance
RUP (Rational Unified Process)1- Les grandes activités
activité 7. DEPLOIEMENT
Distribuer le logiciel dans son environnement
opérationnelInstallation, testFormation des utilisateursMigration des données
diagrammes de déploiementformateur, graphiste, rédacteur de documentation, testeur, implémenteur (scripts d’installation)
RUP (Rational Unified Process)1- Les grandes activités
activité 8. MAINTENANCE ET EVOLUTION
Gérer pendant l’avancement du projet l’évolution :
des besoins des utilisateurs,du niveau des développeurs,de la technologie, etc.
plan de modificationtous les métiers !
RUP (Rational Unified Process)1- Les grandes activités
activité 9. ENVIRONNEMENT
Activité de support du développementsélection des outils de travail,administration système et réseau,administration BD,formation de l’équipe de travail,
etc.
doc outils, doc installationadmin. S&R, formateur, admin. BD
RUP (Rational Unified Process)2- L’architecture logicielle
• Analogie avec l’architecture dans le domaine dubâtiment
• Désigne un ensemble de descriptions de haut niveau (les « plans de construction »)
RUP (Rational Unified Process)2- L’architecture logicielle
La vue de l’architecte est générale et sert à :
• contrôler l’intégrité du système
• identifier les éléments réutilisables
• baser le partage du travail
RUP (Rational Unified Process)2- L’architecture logicielle
Plans de construction
Orientation des modèles par les cas d’utilisation
Cas d’utilisation
Logique Réalisation
ProcessusDéploiement
classes/dynamique composants
use case + scenarii
scenarii sur composantsconcurrencedistributiontolérance aux pannes
composantsprojetés sur le matériel
RUP (Rational Unified Process)2- L’architecture logicielle
Une définition de la notion d’architecture
« vue limitée du système permettant de comprendre :• ce qu’il fait• comment il fonctionne• comment travailler sur une seule
partie• comment l’étendre• comment réutiliser certaines
parties »
Seules les grandes lignes de chaque diagramme
font partie de l’architecture
RUP (Rational Unified Process)3- L’organisation itérative des activités
Pour répondre aux problèmes connus du développement en cascade :
• découverte tardive des défauts• intégration difficile des
modifications• contrôle temps et coûts délicat
RUP (Rational Unified Process)3- L’organisation itérative des activités
Cycle de base
plannification
besoins analyseconceptionimplémentation
déploiementtestévaluation
RUP (Rational Unified Process)3- L’organisation itérative des activités
Contrôle de la convergence : instauration de 4 PHASES
Etude d’opportunité
ElaborationConstructionTransition
• Chaque phase développe tout ou partie d’un ou plusieurs cycles• Des points de contrôle entre les phases permettent de vérifier l’avancement
Def. Projetobjectifsrisques, bénéfices
Plannificationarchitecture
versionbéta
versioncourante
RUP (Rational Unified Process)3- L’organisation itérative des activités
A chaque itération
• la plannification est remise à jour et étendue
• les modèles sont approfondis
• un prototype est développé ou augmenté
• on teste (on re-teste parfois …) l’existant
RUP (Rational Unified Process)3- L’organisation itérative des activités
Bénéfices
• résultats concrets précoces et réguliers • problèmes et évolutions sont intégrés au fur et à mesure• meilleure compréhension par les utilisateurs de ce qu’ils peuvent comprendre -> ils précisent mieux leur besoin• la faisabilité est objectivement mesurée, on a des points de mesure• tous les métiers sont en permanence sollicités, les problèmes remontent plus vite
• ANNEXES
Projection vers les Bases de DonnéesProjection vers la programmationMéthodologie (RUP)Patrons de conception
Plan
Patrons de conception
Recueillir l’expertise en conception
Définition
Un patron de conception est une solution de conceptiongénérique pour résoudre un problème de conception récurrent
Micro-architecture d’une application
Analogie avec les plans de construction détaillés d’un élément de bâtiment
Patrons de conception
Un exemple :Résumé du patron « objets composite »
Problème
Nous désirons représenter des objets qui se décrivent par une hiérarchie d’objets, avec les deux particularités :
• la hiérarchie est une hiérarchie d’agrégation
• tous les objets jusqu’au plus haut niveau présentent un même comportement (on peut leur appliquer un même ensemble de méthodes)
Patrons de conception
Résumé du patron « objets composite »Exemple 1
Dans un éditeur de dessin, une figure géométrique est simple ou se compose d’autres figures.Toutes les figures peuvent être dessinées, déplacées, effacées, agrandies, etc.
Exemple 2 Dans un système d’exploitation, les fichiers peuvent être ordinaires, ou bien des liens, ou encore des répertoires qui contiennent eux-mêmes d’autres fichiers.Tout fichier peut être déplacé, détruit, renommé, etc.
Patrons de conceptionRésumé du patron « objets composite »Solution générique [E. Gamma et al. « design patterns », 94]
version dite « sécurité »
Composant
+ operation
abstraitesi pas de partie commune
Feuille
+ operation
Composite
+ operation+ ajout(c:Composant)
appliquer operationà tous les fils
fils
Patrons de conceptionRésumé du patron « objets composite »
Spécialisation du patron
Figure
+ dessine+ deplace
FigureSimple FigureGroupee
element
+ dessine+ deplace+ ajoute(f:Figure)
+ dessine+ deplace
Cercle Carré Trait