Notes pour l'examen Intra - IFT-2007

Notes pour mon étude. À relire juste avant l'examen

Processus unifié

Processus de développement itératif reposant sur UML et proposé à l’origine par Booch, Rumbaugh et Jacobson (livre publié en 1999)

De nouvelles versions (Rational Unified Process) ont été publiées depuis (propriété de IBM)

Le processus original (UP) peut être vu comme un tronc commun à plusieurs méthodes itératives

Phases

Chaque phase est composée d'itérations.

Dans chaque itération, on réalise du travail associé à plusieurs activités / disciplines.

Les artefacts sont les livrables produits.

Conceptualisation / Inception

Début du projet, on reçoit les demandes du client

Une première version des artefacts sont produis durant cette phase :

Élaboration

Planifier le projet

Développer les fonctionnalités

Développer l'architecture de base

Construction

Terminer le développement du produit

Transition

Transférer le produiot à sa communauté d'utilisateurs

Activités

UML

14 types de diagrammes au total

14 types de diagrammes

Diagramme de cas d'utilisation

Identifier les acteurs

Identifier les cas d’utilisation…

Diagramme

Texte du cas d’utilisation

Le diagramme précédent identifie les cas d'utilisation et les place dans un contexte

Mais le cas d'utilisation est décrit par un texte "à part"

Ce texte peut décrire un ou plusieurs "scénarios" associés à ce use case.

Possibilité de le décrire avec différents niveaux de détail :

Relations entre les cas d'utilisation

Diagramme

Modèle du domaine

Le modèle du domaine est une représentation visuelle des classes conceptuelles (ou si vous préférez, des objets du monde réel, des concepts) pour un domaine d’application / domaine d’affaires / domaine métier donné.

Lors de l'élaboration

Cardinalité

Les liaisons entre les concepts devraient avoir des cardinalités

Donc une cardinalité sur chaque concept, 2 par liaison.

Généralisation

Basiquement, une super classe ou classe abstraite avec des enfants (Héritage)

Flèche vide, poitant du côté du parent

Composition

Implique une relation dans laquelle l'enfant ne peut pas exister sans son parent.

Losange remplie, du côté du parent.

Agrégation

Implique une relation dans laquelle l'enfant peut exister sans son parent (et donc avoir plusieurs parents différents).

Losange vide, du côté du parent.

Diagramme

Diagramme

Diagramme de séquence système (DSS)

Les cas d’utilisation décrivent l’interaction des acteurs avec le système (on rédige un texte pour un ou plusieurs scénarios)

Un diagramme de séquence système est un schéma qui montre, pour un scénario précis d’un cas d’utilisation :

Attention : Ne pas confondre avec le Diagramme de séquence de classes

Produire un DSS

Pour un scénario précis (p. ex. le scénario par défaut) d’un cas d’utilisation, il faut :

Diagramme

Diagramme

Diagramme de classes de conception

Représentation de l'organisation actuelle du code.

Une bonne idée pour la conception est de partir du diagramme de domaine.

Chaque classe est présente, et contient :

Pour chacun, voici les modificateurs :

Finalement, la relation entre les classes est importantes.

Il y en a plusieurs types :

Composition

"Est constitué de"

Indique une relation tout-partie avec inclusion "physique"

Elle possède des rôles, multiplicité, etc. Comme une association normale

Losange rempli, côté parent.

Diagramme

Agrégation

"A un"

Indique une relation tout-partie (moins forte que la composition)

Elle possède des rôles, multiplicité, etc. Comme une association normale

Losange vide, côté parent.

Diagramme

Généralisation

Héritage bien classique

Une classe peut hériter de plusieurs classes générales

Flèche vide, du côté de la classe générale (parent).

Diagramme

Interface

Classes contenant seulement des opérations sans implémentation.

Une classe seconde doit donc implémenter une interface, et donc avoir au minimum les opérations définies par l'interface.

Représenté par l'ajout de <<>> autour du nom de la classe (<<nom_classe>>)

Flèche vide, du côté de l'interface.

Diagramme

Diagramme

Diagramme

Architecture logique (Diagramme de package)

Assez straight forward.

Les packages, aka les grandes lignes du projet.

En gros, les dossiers qui vont séparer les différentes classes.

Diagramme

Diagramme de séquence (de conception)

Le code, mais en diagramme

On va en beaucoup de détaille, chaque classe est mentionnée, avec les appels de fonctions entre celles-ci

C'est assez frais dans ma tête, donc je ne vais pas aller en détails

Diagramme

Diagramme de communication

Similaire au diagramme de séquence (même logique), mais formatté de manière à mettre l'emphase sur les relations entre les objets

Pas de lifeline, juste les bloques de classe avec des liaisons directes.

Les liaisons ont un sens, une description (l'opération appelée) et un ordre d'exécution.

Diagramme

Diagramme d'états

Un diagramme d’états permet de représenter, pour un objet, un système, un sous-système, ou un acteur les états, les changements d'états possibles et le comportement face aux changements (développé plus bas)

Autrement dit, on représente le cycle de vie de l'objet

Ce n'est pas tout les objets qui on besoin d'un diagramme d'état.

La plupart des objets sont mono-état et réagissent donc toujours de la même façon à un événement

Les états que peut prendre cet objet

Représente une situation bien définie durant la vie de l'objet

Généralement durable et stable

Possède un nom

Représenté par un rectangle dont les coins sont arrondis

Les changements d'états possibles (transitions) en réaction à des événements

Les états sont reliés par des connexions unidirectionnelles appelées transitions

Un objet, dans un état donné, attend l’occurrence d’un événement pour réaliser la transition

Un événement correspond à l’occurrence d’une situation particulière dans le domaine du problème

Le passage d’un état à un autre est supposé instantané, car le système doit être toujours dans un état connu

Son comportement (action) face à un événement selon l'état dans lequel il se trouve

Elle consiste à une action procédurale qui s’exécute lors de la transition.

Il peut y avoir plusieurs actions lors d’une transition, mais il faut les séparer par un "/"

Exemples :

Augmente()/n:=n+1/m:=m+1 

additionne(n)/somme := somme + n/clignote

Condition de garde

C’est une expression booléenne placée entre crochets sur une transition

Elle doit être valide pour que la transition se produise

Si elle est combinée à un événement les deux doivent être vérifiés pour que la transition ait lieu.

Exemples :

[t = 15 sec]

[nombre de factures = 20]

retrait(montant) [solde >= montant]

États composites

Un état contenant lui-même un nouveau cycle de vie

Diagramme

Diagramme

Diagramme

Grands principes (GRASP)

Diagramme

Principe 1 : Créateur

Problème :

Solution :

Principe 2 : Expert en information

Problème :

Solution :

Principe 3 : Contrôleur

Problème :

Solution : un contrôleur (duh)

Principe 4 : Faible couplage

Problème :

Solution :

Principe 5 : Forte cohésion

Problème :

Solution :

Principe 6 : Polymorphisme

Problème :

Solution :

Principe 7 : Fabrication pure

Problème :

Solution :

Principe 8 : Indirection

Problème :

Solution :

Principe 9 : Protection contre les variations

Problème :

Solution :