43
Génie Logiciel Orienté Objet

Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Embed Size (px)

Citation preview

Page 1: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Génie Logiciel Orienté Objet

Page 2: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Plan

1. Introduction et concepts de base2. Modélisation par objets

Modèle objet Modèle dynamique Modèle fonctionnel Processus de modélisation

3. Implantation des modèles objets4. Discussion

Page 3: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Introduction et concepts de baseL’approche objet présente:

Une vue conceptuelle du « monde » composé d’objets Objets = interconnexion entre données et traitements

sur ces données Une approche unificatrice du cycle de vie

Ne résout pas tout les problèmes du génie logiciel mais: Offre de bonnes et élégantes solutions dans certains

domaines d’application, par exemple, ingénierie des interfaces usagers et systèmes hautement extensibles

Est une approche clé pour supporter la réutilisation du logiciel.

Page 4: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Introduction (suite)Origines de l’approche OO: smalltalk (70),

prédécesseur: Simula67L’approche objet est principalement bâtie sur les

deux principes du génie logiciel: Abstraction des données Dissimulation de l’information

Concepts de base Objets Classes Héritage Messages Polymorphisme et liaison dynamique

Page 5: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

ObjetsDéfinition conceptuelle: Un objet incorpore une

abstraction et fournit des services aux usagers (clients)

Exemple 1: Pile Abstraction incorporée: la pile Services fournis: empiler, dépiler, tester si pile est

vide.Exemple 2: compte bancaire

Abstraction incorporée: le compte (client, succursale,…)

Services fournis: ouvrir, fermer, débiter, créditer, connaître le solde.

Page 6: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Objets

Concepts sous-jacents: État de l’objet Comportement de l’objet (services

rendus) Aspects caché: encapsulation des

données, réalisation du comportement.

Page 7: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Objets (suite)Définition informatique: un objet incorpore une structure

de données représentant un concept du monde réel et les opérations possibles (appelées aussi méthodes) sur cette structure de données.

Un objet se compose de deux parties: Partie visible: interface avec le reste du monde (autres objets,

programmes, …) Partie cachée: réalisation technique de la structure de données

et des opérations.Conséquences:

Chaque objet est un module, Les langages de programmation classiques (Fortran, Pascal, C,

…) ne permettent pas l’implantation du concept d’objet.

Page 8: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Classes

Point du vue conceptuel (vision du monde réel): Une classe représente un ensemble

d’objets ayant les mêmes caractéristiques (structure et comportement)

Exemple: compte bancaire, tous les comptes bancaires ont les mêmes attributs (mêmes structures de données) et les mêmes méthodes (services rendus)

Page 9: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Classes

Point de vue informatique: Une classe définit un ensemble d’objets possibles Une classe est définie par une déclaration Analogie: déclaration de types, définition de

variables Au plan concret (exécution du programme), une

classe n’existe pas. Un objet est une réalisation concrète d’une

classe. Un objet est créé (à l’exécution) conformément au patron de la classe; il existe.

Page 10: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Classes et Objets

Exemple: compte bancaire<déclarer la classe compte bancaire>//description de la classe (interface, cachée)<créer un compte bancaire><autres instructions><créer un autre compte bancaire>Etc.

Page 11: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Classes et Objets

Implantation des classes et des objets La création d’un objet d’une classe crée

physiquement un exemplaire de la structure de données définie dans la déclaration de la classe. Toute opération sur l’objet affecte cet exemplaire.

Par contre, les méthodes (opérations) définies dans la déclaration de la classe ne sont pas recopiées. Il en existe un seul exemplaire qui est invoqué chaque fois qu’une opération est exécutée sur un objet de la classe.

Page 12: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Héritage

Définition générale: Relation entre deux classes Y hérite de X: Y possède (reçoit) toutes

les caractéristiques de X. On dit Y est descendant de X.

Propriétés de l’héritage: Transitivité Si Y descendant de X et Z descendant de

Y alors Z descendant de X. Z reçoit toutes les caractéristiques de X (et de Y).

Page 13: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Héritage

Deux formes d’héritage: enrichissement, substitution. Enrichissement: Y descendant de X. Y reçoit toutes

les caractéristiques de X; en plus on peut définir des caractéristiques additionnelles (données et opérations) spécifiques à la classe Y.

Substitution: Y descendant de X. Certaines caractéristiques reçues de X sont redéfinies pour la classe particulière Y.

La plus part des héritages sont une combinaison d’enrichissement et de substitution.

Page 14: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Héritage multiple

Une classe peut être héritière de plusieurs autres classes.

Propriétés de l’héritage multiple: Si Z hérite de X et Y, les caractéristiques de Z sont l’union des caractéristiques de X et Y.

Problèmes de l’héritage multiple: conflits possibles entre caractéristiques de même nom venant d’ancêtres différents.

Page 15: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Messages

Les objets communiquent entre eux par messages; c’est l’unique moyen de communication entre objets.

Définition: un message est une communication entre deux objets: requêtes envoyée par un objet « client » à un objet « serveur ».

Forme de l’envoi d’un message. À spécifier: L’objet serveur La méthode Les arguments correspondants à la méthode Si la méthode produit un résultat, place (variable) pour

ce résultat.

Page 16: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Polymorphisme et liaison dynamique

Une entité de programme doit pouvoir faire référence à des objets de plusieurs classes, et une opération doit pouvoir avoir des versions différentes dans des classes différentes.

Relation étroite avec les langages de programmation.

Page 17: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Modélisation par objets

Objectifs: Analyser et spécifier le problème Concevoir une solution au problème Préparer l’implantation de la solution avec un

langage de programmation et/ou à l’aide d’une base de données

« méthodologies d’analyse et de conception OO »

Méthodologies connues: Booch, Jacobson, Rumbaugh.. Convergence vers une méthodologie intégrant les

approches de Booch, Rumbaugh et Jacobson (1995)

Page 18: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Object Modeling Technique (OMT)

Méthodologie développée par James Rumbaugh et d’autres en 1991.

Permet l’utilisation des mêmes concepts et des mêmes notations tout au long du processus de modélisation

Modélisation par trois modèles complémentaires, chacun offrant un point de vue particulier: Le modèle objet représente les aspects statiques et

structurels et l ’aspect des données d’un système. Le modèle dynamique représente les aspects temporels et

comportementaux et l’aspect de contrôle d’un système Le modèle fonctionnel représente les aspects de fonction et

de transformation.

Page 19: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Modèle objet

Il saisit la structure statique d’un système, en montrant ses objets, les relations entre eux, ainsi que les attributs et les opérations qui caractérisent chaque classe d’objets.

Il constitue le cadre dans lequel les modèles dynamiques et fonctionnels s’insèrent.

Description par deux types de diagramme: Diagramme de classes: schéma permettant de décrire

un grand nombre d’instances possibles de données. Il décrit les classes d’objets.

Diagramme d’instances: décrit comment un ensemble particulier d’objets est lié à d’autres objets.

Page 20: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Diagrammes de classes et d’instances

Projet

Personne

Langage

Diagramme de classes

(projet)Syst. De comp.

(projet)Logiciel CAO

(Langage)Cobol

(Langage)C

(Personne)Mary

Diagramme d’instances

Page 21: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Liens et associations

Les liens et les associations permettent d’établir des relations entre objets et classes.

Un lien est une connexion physique ou conceptuelle entre des instances d’objets

Une association décrit un groupe de liens ayant une structure et une sémantique commune.

Multiplicité des associations: spécifie le nombre d’instances d’une classe qui peuvent être liées à une instance d’une classe associée.

Page 22: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Liens et associations

Classe

Classe

Classe

Classe

Classe

1+

1-2,4

Exactement un

Plusieurs (0 ou plus)

Optionnel(0 ou1)

Un ou plus

Spécifié numériquement

Page 23: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Liens et associations Un attribut de lien est une propriété des liens d’une

association

Il est parfois utile de modéliser une association en classe:

Fichier Utilisateur

Permission d’accès

Accessible par

Station de travail Utilisateur

Propriété

Autorisation

Répertoire

Début de session

Page 24: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Relation d’agrégation

L’agrégation est la relation « composé-composant » ou « partie de », dans laquelle les objets représentant les composants d’une chose sont associés à un objet représentant l’assemblage entier

Document Paragraphe

Phrase

Page 25: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Généralisation et héritageAbstractions puissantes qui permettent de

partager les points communs entre les classes tout en préservant leurs différences:

ÉquipementNomFabriquant…

PompePression d’aspirationPression de débitTaux d’écoulement

Réservoirvolume…

Échangeur de chaleurSuperficieDiamètre Pression

Type d ’équipement

Page 26: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Modèle dynamique

Le modèle dynamique décrit les aspects du système par rapport au temps et à l’ordonnancement des opérations. Il ne capture ni le contenu des opérations, ni les objets des opérations, ni leur implantation.

Le modèle dynamique est représenté graphiquement par un ensemble de diagrammes d’états dont chaque diagramme représente une classe qui expose un comportement important.

Un diagramme d’états met en évidence les séquences d’états et d’évènements permis dans un système pour une classe d’objets..

Page 27: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Les diagrammes d’étatsUn événement est quelque chose qui se produit à un

moment donné dans le temps, par exemple l’usager appuie sur le bouton gauche ou bien le vol 217 part de Mirabel.

Un état est une abstraction des valeurs des attributs et des liens d’un objet.

Un état spécifie la réponse d’un objet à un événement d’entrée.

Un diagramme d’états lie les évènements aux états. Il est un graphe dont: Les nœuds sont des états Les arcs orientés sont des transitions désignées par des

noms d’évènements.

Page 28: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Diagrammes d’états

Des conditions peuvent être utilisées comme garde (guard) sur les transitions: Une transition gardée est franchie quand

survient un événement, mais seulement si la condition de garde est satisfaite.

Exemple: Quand tu sors le matin (événement), si la température est glaciale (condition), alors mets tes gants (état suivant, action).

La description comportementale d’un objet doit spécifier ce que fait l’objet en réponse aux évènements.

Page 29: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Exemple de diagramme d’états

Composant

Tonalité

décrocher

En attente

Composer chiffre (n)

DélaiFin de délai

Fin de délai

Faux numéro Message en.

Connectant

Bon numéro

Sonnant

acheminé

connecté

Déconnecté

Tél. appelé répond

Tél. appelé décroché

raccroché

Message fini

raccroché

Page 30: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Modèle fonctionnel

Il décrit les aspects relatifs aux transformations des valeurs: les fonctions, les correspondances, les contraintes et les dépendances fonctionnelles.

Il modélise ce que fait un système, sans s’occuper de la façon ou du moment où il les fait.

Il est représenté graphiquement par des diagrammes de flots de données.

Page 31: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Diagrammes de flots de données

Il contient des traitements qui transforment les données, des flots de données qui transportent les données, des acteurs qui produisent et consomment les données, et des dépôts de données qui stockent passivement les données.

Page 32: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Les flots de contrôleUn diagramme de flots de données ne montre pas

quels chemins sont exécutés ni dans quel ordre.Décisions et séquences sont des problèmes de

contrôle et, en tant que tels, font partie du modèle dynamique.

Cependant, il est parfois utile de les englober dans le modèle fonctionnel (but: ne pas les oublier)

Ceci se fait en englobant les flots de contrôle dans les diagrammes de flots de données.

Un flot de contrôle est une valeur booléenne qui permet de savoir si un traitement est évalué. Il est représenté par une ligne pointillée.

Page 33: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Processus de modélisation

La méthodologie OMT prévoit trois étapes: Analyse Conception du système Conception des objets

Page 34: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Analyse Le but est de développer un modèle de ce que le système doit faire. Ce

modèle est exprimé en termes d’objets et de relations, de flux dynamiques et de transformations fonctionnelles.

1. Écrire ou obtenir une description initiale du problème.2. Construire un modèle objet.

Identifier les classes d’objets Commencer à remplir un dictionnaire de données contenant les descriptions des

classes, des attributs et des associations. Ajouter les associations entre les classes. Ajouter les attributs des objets et des liens Organiser et simplifier les classes en utilisant l’héritage Tester les chemins d’accès en utilisant des scénarios et itérer les étapes

précédentes. Regrouper les classe en modules, selon le critère du couplage fort et des fonctions

apparentées.

Modèle objet = diagramme du modèle objet + dictionnaire de données.

Page 35: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Analyse (suite)3. Développer un modèle dynamique.

Préparer des scénarios des séquences d’interactions typiques.

Identifier les évènements entre les objets et préparer un diagramme de suivi des évènements pour chaque scénario.

Préparer un diagramme de flots d’évènements pour le système.

Développer un diagramme d’états pour chaque classe ayant un comportement dynamique important.

Vérifier la cohérence et la complétude des évènements partagés par touts les diagrammes d’états.

Modèle dynamique = diagramme d’états + diagramme global des flots d’évènements.

Page 36: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Analyse (suite)4. Construire un modèle fonctionnel.

Identifier les valeurs d’entrée et de sortie Utiliser des diagrammes de flots de données là où

c’est nécessaire pour mettre en évidence les dépendances fonctionnelles.

Décrire ce que fait chaque fonction. Identifier les contraintes Spécifier les critères d’optimisation.

Modèle fonctionnel = diagramme de flots de données + contraintes.

Page 37: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Analyse (suite)5. Vérifier, itérer et raffiner les trois modèles.

Ajouter au modèle objet les opérations clés découvertes lors de la préparation du modèle fonctionnel.

Vérifier que les classes, associations, attributs et opérations soient cohérents et complets à chaque niveau d’abstraction.

Comparer les trois modèle à la définition du problème et aux connaissances pertinentes du domaine et tester les modèles à l’aide des scénarios.

Développer des scénarios plus élaborés (comprenant des conditions d’erreurs) comme variations des scénarios de base. Utiliser des scénarios de type «  que se passera-t-il, si … ».

Recommencer les étapes ci-dessus autant de fois que nécessaire pour compléter l’analyse.

Documentation d’analyse = définition du problème + modèle d’objets + modèle dynamique + modèle fonctionnel.

Page 38: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Conception du système Durant la conception du système, le choix de la structure de

haut niveau du système (architecture du système) est arrêtée.

1. Organiser le système en sous systèmes2. Allouer les sous-systèmes à des processus et à des tâches3. Choisir la stratégie de base pour implanter les stockages des données

en termes de structures de données, de fichiers et de base de données.

4. Identifier les ressources globales et déterminer les mécanismes de contrôle d’accès.

5. Choisir une approche pour l’implantation du contrôle du logiciel.6. Examiner les conditions de limites7. Établir des compromis de priorités.

Documentation de conception du système = structure de l’architecture de base du système et décisions stratégiques de haut niveau.

Page 39: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Conception des objets

Élaborer le modèle d’analyse et fournir un support détaillé pour l’implantation.

On arrête les décisions nécessaires à la réalisation du système sans entrer dans les détails propres à un langage de programmation ou un système de base de données.

Dans le modèle d’analyse c’est le monde réel.Dans le modèle de conception c’est les points

de vue informatique pour l’implantation concrète.

Page 40: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Conception des objets1. Obtenir les opérations pour le modèle objet à partir des

autres modèles:- Trouver une opération pour chaque traitement du modèle

fonctionnel.- Définir un opération pour chaque événement du modèle dynamique,

en fonction de l’implantation du contrôle.

2. Concevoir les algorithmes pour implanter les opérations.- Choisir les algorithmes qui minimisent les coûts d’implantation des

opérations.- Sélectionner les structures de données appropriées à ces

algorithmes.- Définir de nouvelles classes internes et de nouvelles opérations si

nécessaire.- Affecter des responsabilités aux opérations qui ne sont pas

clairement associées à une classe.

Page 41: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Conception des objets

3. Optimiser les chemins d’accès aux données:

- Ajouter des associations redondantes pour minimiser les coûts d’accès et augmenter la commodité.

- Enregistrer les valeurs calculées pour éviter de recalculer des expressions complexes.

4. Implanter le contrôle du logiciel en complétant l’approche choisie en phase de conception du système.

Page 42: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Conception des objets

5. Ajuster la structure de classes pour augmenter l’héritage

- Réorganiser et ajuster les classes et les opérations pour accroître l’héritage.

- Abstraire le comportement commun à un groupe de classes.

- Utiliser la délégation pour partager les comportements là où l’héritage est invalide sur la plan sémantique.

6. Concevoir l’implantation des associations- Analyser le parcours des associations.- Implanter chaque association comme un objet distinct, en

ajoutant des attributs à une des classes associées ou aux deux classes.

Page 43: Génie Logiciel Orienté Objet. Plan 1.Introduction et concepts de base 2.Modélisation par objets zModèle objet zModèle dynamique zModèle fonctionnel zProcessus

Conception des objets

7. Déterminer la représentation exacte des attributs de l’objet.

8. Empaqueter les classes et les associations au sein de modules physiques.

Documentation de conception = modèle objet détaillé + modèle dynamique détaillé + modèle fonctionnel détaillé.