SLAM5-01 UML
Transcription
SLAM5-01 UML
SLAM5 Modélisation UML me Com [email protected] (2016) a !!! m é n au ci Chapitre 1 Présentation rapide UML : que faire avec ? UML : que faire avec ? ● UML est une formalisation d'expression des besoins JARVIS : il me faut une diversion de 50 secondes, Sans toucher de civil, pour que je puisse retirer de l'argent… … au guichet ! System Retrait $$$ Utilisateur Lister les comptes Pirater le système IronMan Planter le système UML : que faire avec ? ● UML est une formalisation d'expression des besoins Acteur: représenté par un personnage. Utilisateur Chaque rôle doit être unique (on ne représente pas plusieurs clients/users) System Système : représente l'entité qui contient les actions possibles (à programmer) Association : représente le lien entre un cas d'utilisation et… un/des acteur(s) Retrait $$$ Retrait $$$ verif_solde{debit} Cas d'utilisation : représente une action du système. Un système peut en avoir plusieurs. Si deux parties, la 2e concerne La condition d'utilisation d'une extension. UML : que faire avec ? ● UML est une formalisation d'expression des besoins Je suis trop génial, merci de me le rappeler : c'est mon Prof de SLAM5 qui m'a tout appris ! System Retrait $$$ Utilisateur Lister les comptes Pirater le système Flèche de Généralisation (Ironman peut tout Faire, y compris Retirer de l'argent) IronMan Planter le système Chapitre 2 Flashback en 1994 UML dans un garage... ● Entre 1980 et 1994 – Création de nombreuses méthodes UML dans un garage... ● Entre 1994 et 2000 – UML (Unified Modeling Language) s'impose UML dans un garage... ● Entre 1994 et 2000 – UML (Unified Modeling Language) s'impose Grady BOOCH Expert des systèmes en ADA James RUMBAUGH Ivar JACOBSON Directeur d'une équipe orienté OMT Spécialiste des cas d'utilisations Tony STARK Génie en IA et en programmation UML dans un garage... ● Entre 1994 et 2000 – UML s'oppose à l'approche hiérarchique on ne s'intéresse plus aux blocs fonctionnels (SADT) mais aux rôles et aux objets. UML dans un garage... ● UML 1.4 versus UML 2.0 – UML 1.4 en 2001 devient UML 2.0 en 2003 UML dans un garage... ● UML 2.0 en BTS SIO – Diagrammes : de classes, de séquences, d'utilisations Chapitre 3 Diagrammes des cas d'utilisations DCU UML : Diagramme de cas d'utilisations ● Décrire séparément chaque cas d'utilisation – Acteurs, relations, généralisation, extension, Un utilisateur peut effectuer un retrait. inclusion... Un retrait se fait nécessairement en System ● ● Devises <<include>> Retrait $$$ devises ou argent. ● <<include>> Utilisateur Argent ● Lister les comptes <<extend>> IronMan voir solde ● Pirater le système ● Remplir distributeur Planter le système Mettre à jour le système Technicien IronMan peut faire la même chose qu'un utilisateur (généralisation) IronMan peut pirater ou planter le système (Chuck Norris aussi…) IronMan peut mettre le système à jour, comme le technicien du système. IronMan peut lister les comptes (avec les noms) et optionnellement, demander le solde correspondant. UML : Diagramme de cas d'utilisations ● Décrire séparément chaque cas d'utilisation – Acteurs, relations, généralisation, extension, Un utilisateur peut effectuer un retrait. inclusion... Un retrait se fait nécessairement en System ● ● Devises <<include>> Retrait $$$ devises ou argent. Factorisation ● <<include>> Utilisateur Argent ● Lister les comptes <<extend>> IronMan peut faire la même chose Retrait devises qu'un utilisateur (généralisation) Retrait argent IronMan peut pirater ou planter le système (Chuck Norris aussi…) Spécialisation IronMan peut mettre le système à jour, voir solde ● comme technicien du système. Variation caslenormal IronMan Pirater le système ● Remplir distributeur IronMan peut lister les comptes (avec les noms) et optionnellement, demander le solde correspondant. Généralisation Planter le système Hérite des mêmes droits Mettre à jour le système Technicien UML : Diagramme de cas d'utilisations ● Décrire séparément chaque cas d'utilisation – Un rôle peut-être abstrait (différent de l'instance Le président ET le général peuvent acteur) activer l'arme nucléaire mais ils n'ont System ● pas pour autant les mêmes droits : Président ● Activer arme nucléaire C'est le cas 'Activer arme nucléaire' qui doit accepter les deux rôles. Général System <<abstract>> déclencheur ● Activer arme nucléaire Président Général ● Le président ET le général peuvent activer l'arme nucléaire car héritent du même droit : Le président ou le général héritent du rôle déclencheur. Le cas 'Activer arme nucléaire' n'accepte que le rôle 'déclencheur'. UML : Diagramme de cas d'utilisations ● Décrire séparément chaque cas d'utilisation – Un cas d'utilisation peut généraliser un autre cas Le voyageur s'enregistre pour un vol. (rare) Si une place est disponible ● System (réservation) alors il doit payer son voyage. un pilote ne paye pas son voyage. ● enregistrement pilote pilote <<include>> enregistrement voyageur <<include>> paiement Reservation Le pilote (ou l'enfant né dans un avion) s'enregistre pour un vol. Si une place est disponible, son enregistrement est immédiatement validé. UML : Diagramme de cas d'utilisations ● Décrire séparément chaque cas d'utilisation – On utilise la description du client (cahier des charges) pour formaliser le fonctionnement avec Vue en 2D/3D ? voudrais une application avec un unJepersonnage DCU. En 2D, vue de dessus dans un labyrinthe. ● ● ● ● ● ● ● Il chercherai des trésors, semés de partout, un peu comme le petit Poucet… une sorte de jeu de piste. Il y aurait des méchants qui essayeraient de le bloquer : un peu comme les Daltons, chacun son caractère mais un teigneux en tout cas. Parfois le héros pourrait obtenir un super-pouvoir et détruire les vilains. Quand le labyrinthe est vide, le joueur passe au niveau suivant. ● ● ● Comment se déplace le personnage ? ● Haut, bas, gauche, droite Combien de méchants ? ● 4… des spectres Super-pouvoir dans un lieu du labyrinthe ? Au bout d'un délai ? ● Dans les coins du labyrinthe UML : Diagramme de cas d'utilisations ● Décrire séparément chaque cas d'utilisation – La mise en forme est faite par la norme UML... System bas <<include>> <<include>> se déplacer <<include>> <<include>> haut gauche Ennemis droite chercher joueur Joueur Détruire joueur Pinky Obtenir super-pouvoir Blinky Inky Clyde UML : Diagramme de cas d'utilisations ● Décrire séparément chaque cas d'utilisation – … le reste, par les développeurs (notamment Tōru Iwatani) Chapitre 4 Diagrammes de classes DCL UML : Diagramme de classes ● Utilisation des classes – Rappel : qu'est-ce qu'un objet. Franck = new Vehicule("BMW", 20000, 1053) Loana = new Vehicule("Smart", 15000, 8912) ... OBJET = IDENTITÉ + ÉTAT + COMPORTEMENT Vehicule + marque # revision - Compteur + getMarque() + getRevision() + getCompteur() + setRevision(int X) UML : Diagramme de classes ● Utilisation des classes – Classe : nom, propriétés et (opérations/méthodes) Vehicule Vehicule + marque # revision - Compteur Vehicule + marque # revision - Compteur + getMarque() + getRevision() + getCompteur() + setRevision(int X) + signifie public (visible partout) # signifie protected (sous-classe) - signifie private (classe uniquement) Moi, j'ai la classe… ToutCourt ! Parce que… "je suis batman"* * http://www.howitshouldhaveended.com/ UML : Diagramme de classes ● Utilisation des classes – Classe : écriture concrète BatMobile :Vehicule Objet BatMobile Appartenant À la classe Vehicule BatMobile + WayneCorp # 2000 - 254256 Objet BatMobile (attributs) :Vehicule Objet anonyme Appartenant À la classe Vehicule UML : Diagramme de classes ● Décrire les liens entre les objets – Classe, associations, multiplicités Heros +nom +pouvoir [0,5] Association habillé avec 0..1 1 Costume +noCape +noCasque +capacite Un héros a obligatoirement un costume. Un costume appartient à 0 ou 1 héros. Cape utilise 1 0..1 +noCape +couleur +tissuMatiere Un costume utilise 0 ou 1 cape. Une cape n'appartient qu'à un costume. UML : Diagramme de classes ● Décrire les liens entre les objets – Classe, associations, multiplicités Heros +nom +pouvoir [0,5] AVEC CAPE Association habillé avec 0..1 1 Costume +noCape +noCasque +capacite Cape utilise 1 licité p i t l u M J'ai une cape, pour voler et me protéger ! … et parce que je suis Batman Statistiquement, trop de risque de se prendre les pieds dedans ! 0..1 +noCape +couleur +tissuMatiere SANS CAPE UML : Diagramme de classes ● Décrire les liens entre les objets – Pour améliorer la lisibilité, on peut utiliser une association fléchée, mais les logiciels ne le permettent pas tous. Pouvoir Equipement -noPouvoir: Integer +nomPouvoir: String +idEquipement: integer +nomEquipement avoir 0..* se sert de 0..* 1 Heros +nomSuper: String +genre: String Enrollement 0..1 fait partie de 1 Equipe +nomTeam: String +baseSecrete: String +accepter() +repudier() Costume utilise 1..* +dateEntree +dateSortie 0..* 1 +noCape +noCasque +capacite Cape Possède +noCape +couleur +tissuMatiere UML : Diagramme de classes ● Décrire les liens entre les objets – L'utilisation d'une classe d'association permet d'ajouter des informations dans une association existante (lien en pointillé). Pouvoir Equipement -noPouvoir: Integer +nomPouvoir: String +idEquipement: integer +nomEquipement avoir 0..* se sert de 0..* 0..* 1 Heros +nomSuper: String +genre: String Costume utilise 0..1 1 +noCape +noCasque +capacite Cape Possède +noCape +couleur +tissuMatiere 1..* Enrollement +dateEntree +dateSortie fait partie de 1 Equipe +nomTeam: String +baseSecrete: String +accepter() +repudier() Un héros peut faire partie d'une équipe, mais il manque des informations sur les moments. Ces informations ne font ni partie de Heros, ni d'Equipe. Le héros peut faire partie de plusieurs équipes dans le temps, mais une seule à un instant donné. ARITÉ : nombre d'association concernée (ici, 3) UML : Diagramme de classes ● Décrire les liens entre les objets – L'utilisation d'une composition ou agrégation indique une relation temporelle : si la classe composé disparaît, la classe composante aussi. 1 Agrégation Un élément "échangeable" mais nécessaire (par exemple, PC : Agrégat de clavier, souris, écran...) Composé Composante 1 Composition Liée à une appartenance (batterie inamovible) (la différence avec l'agrégation se voit en programmation) La classe composante existe car elle a ses propres références ! (par exemple, numéro de série, fabricant, etc.) UML : Diagramme de classes ● Décrire les liens entre les objets – L'utilisation d'une composition ou agrégation indique une relation temporelle : si la classe composé disparaît, la classe composante aussi. Pouvoir Equipement -noPouvoir: Integer +nomPouvoir: String +idEquipement: integer +nomEquipement avoir 0..* se sert de 1 Heros +nomSuper: String +genre: String Enrollement 0..1 1 +noCape +noCasque +capacite Cape 1 0..1 contient +noCape +couleur +tissuMatiere Côté classe composé, la multiplicité doit être de un. fait partie de 1 Equipe +nomTeam: String +baseSecrete: String +accepter() +repudier() Costume utilise 1..* +dateEntree +dateSortie 0..* 0..* Chapitre 5 Diagrammes de séquences DSE UML : Diagramme de séquences ● Décrire le fonctionnement temporel d'une application sd Back to the Future – Séquence, interactions, chronologie, messages Dr Brown DeLorean Convecteur Temporel Temps 1 : voyager temps() 2 : rouler 88 mph() 3 : Activer convecteur() Quel trip Marty ! 4 : Saut temporel() 5 : Modification temps() 6 : ok() 7 : voyage terminé() Fin