diff --git a/bac2/uml/ATM_usecase.png b/bac2/uml/ATM_usecase.png new file mode 100644 index 0000000..6d03ef9 Binary files /dev/null and b/bac2/uml/ATM_usecase.png differ diff --git a/bac2/uml/activity.png b/bac2/uml/activity.png new file mode 100644 index 0000000..a6c0e00 Binary files /dev/null and b/bac2/uml/activity.png differ diff --git a/bac2/uml/notes.md b/bac2/uml/notes.md new file mode 100644 index 0000000..7d13e61 --- /dev/null +++ b/bac2/uml/notes.md @@ -0,0 +1,201 @@ +Notes de cours UML +================== + +Introduction +------------ + +Nous devons voir les diagrammes : + +- de cas d'utilisation +- d'interraction overview +- **de Class** +- **d'état** +- d'objet +- d'activitée +- de séquence + +Modélisation logicielle +------------------------ + +un **modèle** est une représentation simplifiée d'une partie de la réalité dans un but spécifique. +Ces modèles ont pour "valeurs": + +- L'abstraction +- Compréhension +- Précision +- Prédictibilité +- Rentabilité + +Dans tout les diagrammes uml, les commentaire sont encadrée et reliés avec des ligne discontinue + +Diagramme de cas d'utilisation +------------------------------ + +Représente une "vitrine" du produit avec ces fonctions principales d'un point de vue utilisateurs. + +Représente: + +- Un système (carré entourant une partie du diagramme) +- Un ensemble de cas d'utilisation (dans un oval) + - Accompagné d'une descriptin semi-structurée + - Toujours lié à un acteur (sauf <\> et <\>) +- Les acteurs (bonnome batons) +- Les relations entre eux + +Attention de ne pas modéliser des dépendances causales ou séquentielles. + +### Relations + +- extension: ajoute un comportement supplémentaire à un point d'extension. + - Dans le cas d'une condition, ajouter "[condition]" à la flèche +- inclusion: inclus dans le comportement d'un autre cas d'utilisation +- généralisation: remplace un cas d'u par un autre qui fournit plus de détails. + - peut être entre cas d'u: spécialisation + - peut être entre acteurs: héritage + +![ATM Use Case diagram](./ATM_usecase.png "use case diagram") + +Diagramme d'interaction +----------------------- + +Permet de faire un diagramme d'activité avec les use case. C'est en quelques sorte un use case +diagramme séquentielle et causale. + +Activity diagram +---------------- + +Permet de modéliser un comportement dynamique, une succession d'activités dans un système pour une +certaine tâche ainsi que son flux de controle. + +Resemble à un diagramme d'état sans les états. + +- activité: rectangle arrondi +- transitions: flèches + - chaques activités doit avoir une transition sortante et peut avoir plusieurs transition + entrante. +- Entrée: cèrcle noir +- Sortie: Cible +- Fin de flux: cercle baré +- Point de jonction/ Décision: losange + - choix entre deux séquence mutuellement exclusive. + - Condition notées en "[condition]" + - sert à merge des chemins alternatifs (!pas chemins concurents) +- barre de synchronisation: ligne épaisse avec transition entrante et sortantes. + - Un fork qui n'est pas join doit se terminer par un point de sortie (pour une terminaison de + l'acitivité complète) ou par un symbole de fin de flux (dans le cas ou l'activité continue + même sans cette branche). +- swimlanes: couloirs d'activité +- Objets: Rectangle +- Récurence: Sablier avec "[timeline]" pour spécifier la récurence +- Signal: Rectangle avec flèche et anti-flèche +- +Il est possible de représenter des sous activitées en dessinant un diagramme d'activité dans un +rectangle. + +![Activity Diagram](activity.png "activity") + +Class diagram +------------- + +Représente les structures statiques d'un système (classes, interfaces et leurs relations) + +- Classes: Rectangle + - Noun in PascalCase + - Si interface, noté <\> + - Souligné si instance (et/ou :Type) +- Attributs: listées dans rectangle de classe + - noun camelCase + - peut avoir un type (primitif ou complexe) + - peut avoir une valeur par défaut + - une portée (class scope = souligné) + - une liste de valeurs possibles (enum) + - une visibilité (+, -, #, ~) +- Opérations: listées dans rectangle de classe + - verb in camelCase + - peut avoir un type de retour + - peut avoir des arguments + - une portée + - une visibilité (+, -, #, ~) + - Les getter & setter des attr ne sont généralement pas mentionnées. +- Associations: ligne + - connexion bidirectionnelle entre classe + - peut être accompagné en annonation du role de cette association (de part et d'autre) + - peut être accompagné d'une quantification: m .. n avec * signifiant zero ou plus + - peut être étiquetée par explicité ( works for |> ) + - peut être associé à elle même + - Ajouter une croix à la base d'une association permet de la rendre uni-directionnelle +- Gnéralisations: Flèche ouverte +- Contraintes: commentaire + - "{or}" exclusion mutuelle +- Agrégation: diamand (<>--) + - apartient-à ou est-une-partie-de ou est-composé-de +- Composition: diamand solide (<@>--) + - agrégat mais avec dépendance forte (si l'agrégat est détruit alors ses parties aussi) + +Sequence +-------- + +Décrire comment le programme doit se comporter. Comportement des diagrammes statiques. +La verticalitée représente le temps. + +- Objets: Etiquette au dessus des lifeline (sous forme d'instance avec :) + - Plusieurs instance = plusieurs rectangles superposés +- lifeline: ligne verticale +- Activation: boite sur la ligne de vie +- message: flèches entre les lignes de vies +- retour: flèche pointiée +- Création: objet au bout d'un message +- destruction: X en bas d'une ligne de vie +- Opérateurs: Rectangle d'une zone avec label + - loop (while [...] do ...) + - alt (if [...] then ... else ...) + - opt (if [...] then ...) + - break (if [...] then ... exit) + - par (parallel) + - neg (invalide) + - critical (section critique) + +D'autre diagrammes peuvent être utilisé à l'intérieur du diagramme de séquence + +Stateshart +---------- + +Un stateshart décrit le comportement d'un système, d'une partie d'un système ou d'un objet + +Resemble fortement à un activity diagram mais représente des états. + +- Etat initial: Cercle noir +- Etat final: target +- State: rectangle arondi + - peut être un diagrame d'état lui même +- transition d'état : flèche avec condition de la transition +- actions: format: "event [guard] / action" + - sur la flèche si lors de la transition + - interne avec mots clés (events) + - entry: lorsque le système entre dans un état + - exit: lorsque le système sort d'un état + - every x s / after x s: se déclenche selon l'évent + - guard: Condition pour que la transition ai lieu + - il vaut mieux etre détermiste (avoir des guard mutuelement exclusif) +- Transition composite: diamand (<>) +- etat historique: cercle avec H ou H* + - mémorise le dernier état visité + - Une transition peut en sortir dans le cas ou cet état n'aurais jammais été défini + +Le stateshart est décrit dans un document. + +```stateshart +interface + +in event +... + +out event +... + + +interface + +operation (): + +```