La Conception: Cours Génie Logiciel

Software Engineering · notes

Voir tous les documents en génie logiciel

15/11/2017

Chapitre 4 La Conception

Cours « Génie Logiciel 1 » Niveau II2

AU: 2017/2018

PLAN

 Introduction  Présentation de la conception  Principes de la conception  Qualités d’une bonne conception  Conception architecturale

 Définitions  Choix d’une architecture  Styles architecturaux

C o u r s « G L - A C O O » E N S I

2

1

INTRODUCTION

3

D E L’ A N A LY S E À L A C O N C E P T I O N

Analyse Quoi-Faire ?

1 .I NT RODUCT I ON

Conception Comment-Faire ?

 Difficulté de la conception:

 La conception ne se contente pas d’identifier le

problème mais doit lui apporter une solution valide.

 Processus créatif

 Activité itérative/incrémentale qui transforme

progressivement les besoins vers un produit final.

 Étape cruciale du développement logiciel: pont entre l’analyse des besoins et l’implémentation.

C o u r s « G L - A C O O » E N S I

4

15/11/2017

2

15/11/2017

D E L A C O N C E P T I O N À L’ I M P L É M E N TAT I O N

1 .I NT RODUCT I ON

 L’implémentation est la mise en œuvre des choix issus de la

conception.

 L’implémentation doit pouvoir répondre aux contraintes de

réalisation sans mettre en cause les choix de conception.

5

C O N C E P T I O N V S I M P L É M E N TAT I O N - E X E M P L E T Y P I Q U E

1 . I NT RODU CT I O N

 On introduit, lors de l’implémentation, une optimisation

qui brise une abstraction issue de la conception. Ceci témoigne d’une mauvaise conception : une spécification non fonctionnelle concernant l’efficacité n’a pas été prise en compte.

Ceci témoigne d’une mauvaise implémentation : les choix de

conception doivent toujours être respectés par l’implémentation.

C o u r s « G L - A C O O » E N S I

C o u r s « G L - A C O O » E N S I

6

3

15/11/2017

PRÉSENTATION DE LA CONCEPTION

7

DÉFINITIONS

2 . P R É S E N TAT I O N D E L A C O N C E P T I O N

 La conception est un processus de résolution de problèmes

dont l’objectif est d’identifier la meilleure façon:  d’implémenter les besoins fonctionnels d’un système...  tout en respectant les contraintes imposées par les besoins non

fonctionnels...

 et en adhérant à des principes de base menant à un logiciel de qualité.

 La conception propose une solution au problème spécifié

lors de l’analyse :  architecture de l’application (architecture logicielle et architecture

physique),

 description détaillée des modules, des interfaces utilisateurs, des

données.

C o u r s « G L - A C O O » E N S I

8

4

DÉFINITIONS

2 . P R É S E N TAT I O N D E L A C O N C E P T I O N

 Activité Intellectuelle

 Créativité  Expérience.

 Pas de recettes toutes faites.

 mais il existe des méthodes (principes & bonnes pratiques)

pouvant être de bons conseils

 Résultat de la phase de conception = conception ou «

design ».

 Une bonne conception contribue à la qualité du logiciel:

fiabilité, correction, évolutivité, etc.

9

LA CONCEPTION = SÉRIE DE DÉCISIONS

2 . P R É S E N TAT I O N D E L A C O N C E P T I O N

 Lors de la résolution d’un problème, tout concepteur fera

face à une série de problèmes: 1. Ce sont des sous-problèmes devant être résolus. 2. Chacun de ces problèmes peut être solutionné de différentes

façons

=> Ce sont des options de conception.

3. Le concepteur doit donc prendre des décisions de conception afin de résoudre chacun de ces sous-problèmes en tenant compte:

 des exigences  du design courant  de la technologie disponible  des principes de bon design  de l’expérience passée

4.

Il faudra être en mesure de toujours choisir la meilleure alternative.

10

C o u r s « G L - A C O O » E N S I

C o u r s « G L - A C O O » E N S I

15/11/2017

5

15/11/2017

LA CONCEPTION = SÉRIE DE DÉCISIONS

2 . P R É S E N TAT I O N D E L A C O N C E P T I O N

 L’espace engendré par l’ensemble des solutions possibles

pour un design s’appelle l’espace de design  Par exemple:

fat-client

thin-client

separate user interface layer for client

no separate user interface layer for client

client-server

monolithic

programmmed in Java

programmed in Visual Basic

programmed in C++

11

ÉTAPES DE LA CONCEPTION

2 . P R É S E N TAT I O N D E L A C O N C E P T I O N

 La conception passe par deux étapes:

C o u r s « G L - A C O O » E N S I

C o u r s « G L - A C O O » E N S I

12

6

ÉTAPES DE LA CONCEPTION

 Conception architecturale

2 . P R É S E N TAT I O N D E L A C O N C E P T I O N

 =conception de haut niveau= conception globale  Première étape qui consiste à définir les fonctions des éléments d'un

système et leurs relations fonctionnelles.

 Objectif: Structuration et organisation générale du système à concevoir

 Contient la description des éléments principaux du système, les

relations entre eux, les contraintes à respecter, les motifs et la logique de cette décomposition.

 La division du système en sous-systèmes et composantes

 Comment ceux-ci seront interconnectées.  Comment vont-ils interagir.  Leurs interfaces.  Qu’est ce qu’ils contiennent (Conception des modules)

 SD, opérations et associations.

C o u r s « G L - A C O O » E N S I

13

ÉTAPES DE LA CONCEPTION

 Conception détaillée

2 . P R É S E N TAT I O N D E L A C O N C E P T I O N

 =conception de bas niveau  Étape qui consiste à détailler les résultats de l’analyse fonctionnelle,

jusqu'à un niveau suffisant pour en permettre finalement le codage dans un langage de programmation choisi.

 Définition d’un design logiciel respectant le plan de la conception

architecturale.

 Objectif: détailler les éléments produits dans la conception architecturale

et préparer au mieux l’implémentation:  description précise de chaque module  algorithmes mis en œuvre  traitements effectués en cas d'erreur  Conception des données  Conception des algorithmes:  Étude de leur efficacité.  Conception de protocoles:

 Les messages et règles utilisés dans la conversation.

14

C o u r s « G L - A C O O » E N S I

15/11/2017

7

ÉTAPES DE LA CONCEPTION

2 . P R É S E N TAT I O N D E L A C O N C E P T I O N

But: Décomposition et raffinement progressif du système en

modules de plus en plus détaillés.

C o u r s « G L - A C O O » E N S I

C o u r s « G L - A C O O » E N S I

15

PROCESSUS DE CONCEPTION

2 . P R É S E N TAT I O N D E L A C O N C E P T I O N

Plusieurs étapes :

 Conception de l’architecture  Conception de l’interface  Conception des composants

 Structures de données  Algorithmes

Interface

Système

16

15/11/2017

8

PROCESSUS DE CONCEPTION

2 . P R É S E N TAT I O N D E L A C O N C E P T I O N

Spécification des besoins

Conception de l’architecture

Conception de l’interface

Conception du composant

Architecture

Spécification Interface

Struct. Don

Algo.

Spécification S. D. & Algo.

17

C o u r s « G L - A C O O » E N S I

L’ACTIVITÉ DE CONCEPTION

2 . P R É S E N TAT I O N D E L A C O N C E P T I O N

Spécifications des besoins

Principes fondamentaux du Génie Logiciel

CONCEPTION

Modélisation des données

Architecture du système

Interface Utilisateur

Composants (modules)

Étape décisive pour :  la fiabilité  l'efficacité  la maintenabilité  la réutilisabilité

C o u r s « G L - A C O O » E N S I

18

15/11/2017

9

PRINCIPALES ACTIVITÉS

2 . P R É S E N TAT I O N D E L A C O N C E P T I O N

 la conception des structures des données

conçoit et spécifie en détail les structures de données

 La conception de l’architecture du système : définir les s/systèmes - identifie les sous-systèmes qui composeront le système global - établit une description des services supportés par chaque sous- système

 la conception de l’interface : identifier et documenter les

interactions entre s/systèmes.

Publicité

 la conception des composants : services offerts

- découpe les sous-systèmes en plusieurs composants - conçoit et spécifie en détail les algorithmes pour réaliser les différents services

C o u r s « G L - A C O O » E N S I

19

PRINCIPES DE CONCEPTION

15/11/2017

10

15/11/2017

PRINCIPES DE BASE

3 .P RI NCI P ES DE LA CONCEP T I ON

La conception ne doit pas réinventer la roue

 Le temps est précieux  exploiter des solutions existantes

La conception doit être uniforme et intégrable

 - Règles de style et de format préalablement définies pour toute l’équipe

- Définition minutieuse des interfaces entre les composants

La conception doit avoir une structure facilitant

l’évolution  - Traçabilité entre les besoins et les éléments de la conception - Application des principes du génie logiciel (modularité,

abstraction, etc.)

21

PRINCIPES DE BASE

3 .P RI NCI P ES DE LA CONCEP T I ON

La conception n’est pas le codage et vice versa

 Distinguer les niveaux d’abstraction conceptuel/code source

La conception doit miser sur la qualité  Divers concepts et mesures sont disponibles

La conception doit être revue pour minimiser les erreurs

sémantiques  Faire attention aux omissions, ambiguïtés et inconsistances

C o u r s « G L - A C O O » E N S I

C o u r s « G L - A C O O » E N S I

22

11

15/11/2017

QUELQUES PRINCIPES DE CONCEPTION

3 .P RI NCI P ES DE LA CONCEP T I ON

1. Modularité 2. Abstraction 3. Encapsulation 4. Anticipation des changements 5. Réutilisabilité 6. Réutilisation 7. Forte cohésion 8. Faible couplage

Qualités logicielles en jeu

23

MODULARITÉ

3 .P RI NCI P ES DE LA CONCEP T I ON

 Objectif: déterminer la structure modulaire du système à

développer

unité de conception

• unité de codage et tests • unité d'intégration et d'archivage • unité de réutilisation • unité de maintenance

 Répondre aux questions:  Quels sont les modules ?  Quelles relations lient les modules entre eux ?

C o u r s « G L - A C O O » E N S I

C o u r s « G L - A C O O » E N S I

24

12

15/11/2017

MODULARITÉ

3 .P RI NCI P ES DE LA CONCEP T I ON

 principe : séparer le système en composants logiques

 modules

 avantages :

 réduction de complexité

 les modules peuvent être

 conçus et construits séparément  réutilisés

 système modifié en changeant un nombre limité de modules

25

MODULE: DÉFINITION

3 .P RI NCI P ES DE LA CONCEP T I ON

 Un module est un composant d’une application, contenant des définitions de données et/ou de types de données et/ou de fonctions et constituant un tout cohérent.  Par exemple des méthodes, des classes, des paquetages sont des modules

en Java.

 On peut définir un module comme un fournisseur de

ressources ou/et de services.

 Quand on décompose un système en modules il faut décrire

précisément les relations entre ces modules.  Quels sont les modules ? (fonction, procédure, Classe, paquet,

composant : JavaBean, EJB, ActiveX, COM, DCOM, …)

 Quelles relations lient les modules entre eux ?

C o u r s « G L - A C O O » E N S I

C o u r s « G L - A C O O » E N S I

26

13

15/11/2017

MODULARITÉ

3 .P RI NCI P ES DE LA CONCEP T I ON

 Relations entre modules : Deux types de relations sont

utiles pour décrire la structure d’un système  Relation « UTILISE »: On dit que Mi UTILISE Mj si Mi requiert la présence de Mj car Mj lui fournit des ressources ou des services.  Exemple : Appel de procédure  UML: association, liens de dépendance…

 Relation « CONTIENT »: On dit que Mi CONTIENT Mk si Mi est réalisé en assemblant un ou plusieurs modules dont le module Mk  Exemple : regroupement en paquetages UML  Déclaration d’une classe à l’intérieur d’une autre classe  UML: regroupement en paquetages  (aussi agrégation/composition)

27

MODULARISATION

3 .P RI NCI P ES DE LA CONCEP T I ON

Relation « UTILISE »

On dit que Mi UTILISE Mj si Mi requiert la présence de Mj car Mj lui fournit des ressources ou des services. La relation UTILISE doit idéalement être une hiérarchie. Pourquoi est-ce préférable ?

 Facilite la compréhension de la structure (par niveau d’abstraction)  Facilite le test unitaire…  Autrement: on peut se retrouver avec un système qui ne marche pas

jusqu’à ce que tout marche (Parnas)

C o u r s « G L - A C O O » E N S I

C o u r s « G L - A C O O » E N S I

28

14

15/11/2017

MODULARISATION

3 .P RI NCI P ES DE LA CONCEP T I ON

Relation « UTILISE »

 Relation définie statiquement i.e. indépendamment de

toute exécution du logiciel.

29

MODULARISATION

3 .P RI NCI P ES DE LA CONCEP T I ON

Relation « UTILISE »

C o u r s « G L - A C O O » E N S I

C o u r s « G L - A C O O » E N S I

30

15

15/11/2017

MODULARISATION

3 .P RI NCI P ES DE LA CONCEP T I ON

Relation « UTILISE »

 On doit trouver une solution de compromis raisonnable qui

offre un couplage faible.

31

MODULARISATION

3 .P RI NCI P ES DE LA CONCEP T I ON

Relation « UTILISE » On recommande une relation « UTILISE » qui présente une silhouette profonde… A éviter: râteau !

C o u r s « G L - A C O O » E N S I

C o u r s « G L - A C O O » E N S I

32

16

15/11/2017

MODULARISATION

3 .P RI NCI P ES DE LA CONCEP T I ON

Relation « Contient »

 On dit que Mi CONTIENT M k si Mi est réalisé en

assemblant un ou plusieurs modules dont le module M k

 Exemple: inclusion de packages et de classes en Java

33

MODULARITÉ

3 .P RI NCI P ES DE LA CONCEP T I ON

 Identifier les modules en assurant:  forte cohésion à l'intérieur du module  faible couplage entre les modules

C o u r s « G L - A C O O » E N S I

C o u r s « G L - A C O O » E N S I

34

17

15/11/2017

ABSTRACTION

3 .P RI NCI P ES DE LA CONCEP T I ON

 Maintenir le niveau d’abstraction aussi élevé que

possible

 La complexité d’un design est réduite lorsqu’un maximum

de détails se trouve masqué  Une abstraction de qualité utilise toujours le principe de

masquage de l’information

 Une abstraction permet de saisir l’essence d’un système sans avoir

à en connaître les détails de son implémentation

35

ABSTRACTION - EXEMPLE

3 .P RI NCI P ES DE LA CONCEP T I ON

 En orientée objet, les classes sont des abstractions de données contenant des abstractions de procédures  Attribuer une visibilité privée aux variables permet d’accroître la

qualité de l’abstraction.

 Réduire le nombre de méthodes publiques accroît la qualité de

l’abstraction

 Une meilleure abstraction est obtenue en définissant des

méthodes ayant peu de paramètres

 La création de super-classes et d’interfaces accroît

considérablement la qualité de l’abstraction.

C o u r s « G L - A C O O » E N S I

C o u r s « G L - A C O O » E N S I

36

18

ENCAPSULATION

3 .P RI NCI P ES DE LA CONCEP T I ON

 Associer à un composant une vue externe et une vue

interne.  Vue externe : c'est l'interface, elle définit ce que le composant doit

faire.

 Vue interne: c'est l'implémentation, elle définit comment il le fait.

 Exemple : PILE  initialiser,  empiler,  dépiler.

37

ANTICIPATION DES CHANGEMENTS

3 .P RI NCI P ES DE LA CONCEP T I ON

 Un des principaux soucis de l’activité de conception:

développer un design qui facilite l’ajustement du système aux changements:  Perfectionnement du système imposé par les nouvelles exigences

du client.

 Adaptations imposés par la modification de l’environnement

matériel, social, etc.

 Importante qualité logicielle en jeu: maintenabilité

38

C o u r s « G L - A C O O » E N S I

C o u r s « G L - A C O O » E N S I

15/11/2017

19

15/11/2017

«CONCEVOIR POUR CHANGER»

3 .P RI NCI P ES DE LA CONCEP T I ON

Types de changements

Sources de vrais changements

C o u r s « G L - A C O O » E N S I

C o u r s « G L - A C O O » E N S I

39

«CONCEVOIR POUR CHANGER»

3 .P RI NCI P ES DE LA CONCEP T I ON

Pourquoi? Quelques conséquences indésirables

Publicité

 Un design, même « merveilleux », peut se révéler

extrêmement difficile et coûteux à adapter.  Conséquence: nécessité de refaire un tout nouveau design pour

intégrer un changement apparemment mineur…

 En essayant d’accommoder l’architecture aux changements, le concepteur risque de briser l’élégante structure initiale du design.  Conséquence: application de plus en plus difficile à maintenir et

inspirant peu confiance (fiabilité compromise ?)

40

20

15/11/2017

«CONCEVOIR POUR CHANGER»

3 .P RI NCI P ES DE LA CONCEP T I ON

Types de changements

 Changement d’algorithme.  Changement de représentation des données.  Changement au niveau des périphériques.  Changement de l’environnement social.  Changements dus au processus de développement.

41

ANTICIPATION DES CHANGEMENTS

3 .P RI NCI P ES DE LA CONCEP T I ON

 Réduire le couplage et accroître la cohésion  Créer des abstractions  Ne pas introduire de constante numérique ad hoc (pas de

hard-coding)

 Permettre un maximum d’options

 Ne pas restreindre inutilement les options

 Utiliser du code réutilisable et rendre le code réutilisable

C o u r s « G L - A C O O » E N S I

C o u r s « G L - A C O O » E N S I

42

21

15/11/2017

RÉUTILISABILITÉ

3 .P RI NCI P ES DE LA CONCEP T I ON

 Accroître la réutilisabilité autant que possible  Concevoir le design de façon à ce que les différents aspects

du système soient utilisables dans différents contextes  Généraliser le design autant que possible  Simplifier le design autant que possible  Ajouter des options aux différents modules

43

RÉUTILISATION

3 .P RI NCI P ES DE LA CONCEP T I ON

 Réutiliser autant de composantes que possible  La réutilisation est le principe complémentaire au principe

de réutilisabilité  Réutiliser les designs existants permet de tirer profit de l’effort

investi par les concepteurs de composantes réutilisables

C o u r s « G L - A C O O » E N S I

C o u r s « G L - A C O O » E N S I

44

22

UN CERCLE VICIEUX S’INSTALLE

 Les développeurs de logiciels ne conçoivent pas de

composantes réutilisables, il n’y a donc rien à réutiliser.

 Pour résoudre ce problème, il faut reconnaître que:

 Ce cercle vicieux a un coût  Investir dans la réutilisabilité est important  S’assurer de la qualité des composantes réutilisables

produites est essentiel

De cette façon, les réutilisateurs potentiels auront confiance en ce produit La qualité globale du logiciel est celle de sa composante la plus faible

 Le développement de logiciel réutilisable mène souvent,

en fait, à une simplification du logiciel

45

DÉVELOPPEMENT POUR ET PAR LA RÉUTILISATION

 Le développement par la réutilisation logicielle impose un

cycle de production-réutilisation perpétuel et une architecture logicielle normalisée.

 Une réutilisation bien orchestrée nécessite la création et le maintien

d'une bibliothèque logicielle et un changement de focus;

 créer une application revient à créer les composants de bibliothèque

nécessaires puis à construire l'application à l'aide de ces composants.  Une telle bibliothèque, facilitant le développement d'application est un

framework (cadriciel) d'entreprise et son architecture, ainsi que sa documentation sont les pierres angulaires de la réutilisation logicielle en entreprise.

 L'architecte doit

 explorer la bibliothèque pour trouver les composants logiciels

appropriés

 puis créer les composants manquants, les documenter et les intégrer à

la bibliothèque.

 Dans une grande entreprise, ce rôle est rempli par UN

responsable du développement harmonieux de la bibliothèque et de la conservation de l'intégrité de son architecture. (l'architecte en chef )

46

C o u r s « G L - A C O O » E N S I

C o u r s « G L - A C O O » E N S I

15/11/2017

23

DÉVELOPPEMENT PAR LA RÉUTILISATION

 Aucun logiciel de grande taille n’est développé depuis zéro

aujourd’hui

 Utilisation de

 « Bouts de code »  Structures + fonctions / Classes + méthodes  Bibliothèques  Cadriciels: cadre d’application (fraweworks)

47

BIBLIOTHÈQUES

 « Bibliothèque [library] logicielle est un ensemble de

fonctions utilitaires, regroupées et mises à disposition afin de pouvoir être utilisées sans avoir à les réécrire »

 Plutôt que de coder une procédure courante dans chaque

programme en ayant besoin, on rassemble ces procédures dans des bibliothèques.

 Si un programme a une fonction à remplir et que celle-ci se trouve

en bibliothèque, il l'utilisera directement.

 Les bibliothèques logicielles se distinguent des exécutables dans

la mesure où elles ne représentent pas une application

 Exemples

 La bibliothèque de classes Java  La STL de C++

48

C o u r s « G L - A C O O » E N S I

C o u r s « G L - A C O O » E N S I

15/11/2017

24

15/11/2017

BIBLIOTHÈQUES

 L'organisation classique des bibliothèques se fait par découpage thématique des fonctions, suivant les services qu'elles rendent:  Bibliothèques de bas niveau ou bibliothèques système : elles

fournissent des services d'interface avec le système d'exploitation, avec les périphériques, ou fournissent des outils génériques :  bibliothèques d'entrées/sorties : fonctions de lecture et d'écriture de fichiers, de périphériques d'entrée/sortie comme le clavier, l'écran, etc.

 gestion de structures de données système

 Bibliothèques de haut niveau, aussi appelées bibliothèques métier, elles interagissent avec celles de bas niveau : les fonctions qu'elles contiennent sont propres à une activité spécifique:  boîtes à outils graphiques : ensemble de fonctions permettant de gérer, d'animer et d'afficher des objets graphiques complexes  Exemple : OpenGL

 bibliothèques d'opérateurs de traitement d'image : ensemble de

fonctions destinées à structurer l'information dans une image à des fins d'analyse,

 gestion de structures de données utilisateur.

49

BIBLIOTHÈQUES

Les bibliothèques offrent une interface de

programmation (API: Application Programming Interface), permettant aux programmeurs de choisir les fonctions.  Les API se présentent comme une liste des

noms des fonctions ou/et classes disponibles, avec une documentation sur les paramètres à leur fournir et sur les résultats retournés.

C o u r s « G L - A C O O » E N S I

C o u r s « G L - A C O O » E N S I

50

25

CADRE D’APPLICATIONS: CADRICIEL

 « Un cadriciel [framework] est un espace de travail modulaire. C'est un ensemble de bibliothèques, d'outils et de conventions permettant le développement de programmes. »

 C’est un logiciel

réutilisable qui propose une

solution

générique à un problème généralisable.  Il fournit les services que requièrent différentes applications.  Un cadriciel fournit un contexte où les composants sont réutilisés.

 C’est une application logicielle partielle  intégrant les connaissances d'un domaine,  dotée d'une architecture logicielle et d'un cœur (code) générique  dédiée a la réalisation de nouvelles applications du domaine visé, par

paramétrage et extension

 Un framework fournit:

 un ensemble de fonctions facilitant la création de tout ou d'une partie

d'un système logiciel

 un guide architectural en divisant le domaine visé en modules.

51

BIBLIOTHÈQUES VS CADRICIELS

 Une bibliothèque est limitée à l'ensemble des fonctions du système, par contre un cadriciel peut être employé par extension pour inclure également l'architecture logicielle préconisée pour cette bibliothèque (eg. organisation en couches, utilisation du modèle MVC, etc),

 Exemples

 Jdom est une librairie permettant de parser des fichiers XML.

Son API contient des fonctions de lecture des noeuds, d'insertion de noeuds dans l'arbre XML, d'ajout d'attributs aux balises...

 Struts est un Framework qui permet de coder toute la partie graphique d'une application, par un ensemble de librairies (gestion des taglibs, des fichiers ressources pour les messages ou la gestion des langues, gestion du mapping entre les adresses et les pages, gestion des formulaires et des Beans, etc.)

52

C o u r s « G L - A C O O » E N S I

C o u r s « G L - A C O O » E N S I

15/11/2017

26

15/11/2017

BIBLIOTHÈQUES VS CADRICIELS

 Une bibliothèque s'utilise, un Framework s‘étend ou se

paramètre

 Avec une bibliothèque, le code d'une nouvelle application

invoque le code de la bibliothèque

 Le code d'un Framework appelle le code de la nouvelle

application: I n ve r s i o n de c o n t r ô l e (é ga l e me n t di t « p r i n c i p e de Ho l l ywo o d » : l e c o de du Fr a me wo r k (p r é e x i s t a n t ) i n vo qu e (c a l l b a c k ) l e s p a r t i e s de c o de r e p r é s e n t a n t l a n o u ve l l e a p p l i c a t i o n e n u n c e r t a i n n o mb r e s d' e n dr o i t s p r é dé fi n i s n o mme s (p o i n t s d' e x t e n s i o n s o u p o i n t s de p a r a mé t r a ge s o u (h i s t o r i qu e me n t ) « Ho t s p o t »

53

CADRE D’APPLICATIONS: CADRICIEL

 On trouve différents types de cadriciels :

 Cadriciel d'infrastructure système : pour développer des systèmes

d'exploitation, des interfaces graphiques, des outils de communication.  Exemple : Framework .Net, Eclipse, NetBeans, Struts

 Cadriciel d'intégration intergicielle (middleware) : pour fédérer

des applications hétérogènes. Pour mettre à dispositions différentes technologies sous la forme d'une interface unique.  Exemple : Ampoliros avec ses interfaces RPC, SOAP, XML

 Cadriciel orientés Système de gestion de contenu

 Exemple: Joomla, itsEasy, WMaker

C o u r s « G L - A C O O » E N S I

C o u r s « G L - A C O O » E N S I

54

27

CADRE D’APPLICATION ORIENTÉ OBJET

 Conformément au paradigme orienté objet, un cadre d’application sera composé d’un ensemble de classes.  Le API est alors l’ensemble de toutes les méthodes publiques de

ces classes.

 Quelques-unes de ces classes seront abstraites

55

56

TYPES DE CADRES D’APPLICATIONS

 Un cadre horizontal fournit des services généraux qu’un

grand nombre d’applications peuvent utiliser

 Un cadre vertical est beaucoup plus complet, seules

demeurent quelques ouvertures qui doivent être définies afin de s’adapter à une application spécifique

Application

Services offered by the framework

Application

Horizontal framework

Vertical framework

Code to be provided to adapt the framework to the needs of the application

C o u r s « G L - A C O O » E N S I

C o u r s « G L - A C O O » E N S I

15/11/2017

28

15/11/2017

QUALITÉS D’UN BON DESIGN

3 .P RI NCI P ES DE LA CONCEP T I ON

Une bonne conception devrait favoriser l’indépendance des modules

Pour évaluer l’indépendance des modules, on se base généralement sur les concepts suivants:  Le couplage  La cohésion

Concepts qui peuvent d’ailleurs s’influencer l’un et l’autre

57

CARACTÉRISTIQUES D’UN BON DESIGN

3 .P RI NCI P ES DE LA CONCEP T I ON

Un bon design =

une bonne décomposition en modules qui favorise:  une forte cohésion: les éléments ne sont pas réunis dans un même module par hasard: ils forment un tout dans le but de réaliser une tâche commune.

 un faible couplage: les modules sont relativement

indépendants, ne dépendent pas trop des éléments définis dans d’autres modules.

C o u r s « G L - A C O O » E N S I

Publicité

C o u r s « G L - A C O O » E N S I

58

29

15/11/2017

FAIBLE COUPLAGE

2 .P RI NCI P ES DE LA CONCEP T I ON

 Couplage: mesure de l’interdépendance entre deux

modules.

 Un ensemble de modules est faiblement couplé si les liens de dépendance (cf. interactions induisant une relation «UTILISE») entre les modules sont peu nombreux.

 Un faible couplage est précurseur…

 D’un bon découpage du système: les éléments qui

dépendent les uns des autres ne sont pas « éparpillés » à travers les modules du système.

 D’une facilité de maintenance: une modification dans un

module affecte éventuellement un nombre restreint d’autres modules. Nombre de révisions réduites…

59

COUP LAG E - I LLUST R AT I O N

2 .P RI NCI P ES DE LA CONCEP T I ON

C o u r s « G L - A C O O » E N S I

C o u r s « G L - A C O O » E N S I

60

30

15/11/2017

TYPES DE COUPLAGE- APPROCHE PROCÉDURALE

2 .P RI NCI P ES DE LA CONCEP T I ON

C o u r s « G L - A C O O » E N S I

C o u r s « G L - A C O O » E N S I

61

TYPES DE COUPLAGE- APPROCHE PROCÉDURALE

2 .P RI NCI P ES DE LA CONCEP T I ON

 De contenu: les modules échangent de l'information en lisant et écrivant directement dans leurs espaces de données (variables) respectifs. Lorsqu’une composante modifie déloyalement les données internes d’une autre composante de façon furtive, secrète…

 Commun (global) : les modules échangent de l'information

via un ensemble de données (variables) commun.

62

31

15/11/2017

TYPES DE COUPLAGE- APPROCHE PROCÉDURALE

2 .P RI NCI P ES DE LA CONCEP T I ON

 De contrôle: un module passe un « flag » à l’autre qui s’en

sert à des fins de contrôle d’exécution.

 Exemple:

 De structures de données: Il y a couplage de structures de données si un module passe une structure de données par argument à un autre module. Le module appelé n’a pas besoin de tous les éléments contenus dans la structure de données.

 De données: Il y a couplage de données si un module passe des données par argument à un autre module. Le module appelé utilise toutes les données passées en arguments.

63

COUPLAGE DE CONTRÔLE

3 .P RI NCI P ES DE LA CONCEP T I ON

 Lorsqu’une procédure en appel une autre en utilisant une

variable de contrôle ou une commande contrôlant l’exécution de la procédure appelée

 Afin d’effectuer un changement, il faut modifier à la fois l’appelé et

l’appelant

 L’utilisation d’une opération polymorphique constitue la meilleure

façon d’éviter le couplage de contrôle

 Une autre façon de réduire ce type de couplage consiste à avoir

recours à un tableau de correspondance (look-up) 

Chaque commande est alors associée à une méthode qui sera appelée lorsque cette commande est lancée

C o u r s « G L - A C O O » E N S I

C o u r s « G L - A C O O » E N S I

64

32

15/11/2017

COUPLAGE DE DONNÉES

3 .P RI NCI P ES DE LA CONCEP T I ON

 Lorsque les types des arguments sont des données simples

 Plus il y a d’arguments, plus ce couplage est fort

Les méthodes invocantes doivent fournir tous ces arguments  Il faut réduire ce type de couplage en évitant d’utiliser des

arguments non-nécessaires

 Il y a souvent un compromis à faire en couplage de données et

couplage d’estampillage 

i.e. réduire l’un accroît l’autre

65

COU PLA GE DE S TRU CTU RES DE DONNÉES ( D’ES TA M PILLA GE)

3 .P RI NCI P ES DE LA CONCEP T I ON

 Lorsqu’une classe est déclarée dans la liste des arguments

d’une méthode  Une classe en utilise donc une autre

 Afin de réutiliser une classe, il faut aussi utiliser l’autre

 Pour réduire ce type de couplage

 Utiliser une interface  Transmettre que des variables simples

C o u r s « G L - A C O O » E N S I

C o u r s « G L - A C O O » E N S I

66

33

EXEM PLE DE COU PLA GE DE S TRU CTU RES DE DONNÉES ( D’ES TA M PILLA GE)

3 .P RI NCI P ES DE LA CONCEP T I ON

public void sendEmail(Employee e, String text) {...} ...

Pour réduire ce type de couplage : Ne transmettre que des variables simples

En utilisant des données simples:

public void sendEmail(String name, String email, String text) {...} ...

67

COUPLAGE EN ORIENTÉ OBJET

2 .P RI NCI P ES DE LA CONCEP T I ON

 En orienté objet les modules se traduisent en méthodes ou en classes. Les méthodes peuvent être couplées par invocation d'une autre méthode ou par le partage des variables avec d’autres méthodes. De la même manière, une classe est couplée à une autre classe s’il y a une relation entre elles.

 Une

catégorisation

la programmation orientée objet, notamment au niveau de la classe, a été faite [Eder et, al., 1995].

applicable

couplage

du

à

 Dans cette catégorisation on distingue trois types de

couplage:  Couplage entre composants  Couplage d’héritage  Couplage d’interaction

68

15/11/2017

34

C o u r s « G L - A C O O » E N S I

C o u r s « G L - A C O O » E N S I

COUPLAGE EN ORIENTÉ OBJET

 Couplage entre composants : lorsqu'une classe utilise en

tant qu'attribut, une autre classe.

C o u r s « G L - A C O O » E N S I

C o u r s « G L - A C O O » E N S I

69

70

 Couplage d'héritage : si une des deux classes est

directement ou indirectement une sous-classe de l'autre.

15/11/2017

35

COUPLAGE EN ORIENTÉ OBJET

2 .P RI NCI P ES DE LA CONCEP T I ON

 Couplage d’interaction: Lorsqu'une classe invoque une ou plusieurs méthodes de l'autre. Les types de couplage appliqués aux systèmes procéduraux sont utilisés pour détailler ce type de couplage.

 Couplage de Données : deux classes présentent un couplage de données, si elles échangent des données seulement en paramètres. Ce type de couplage est le plus recommandé dans les systèmes orientés objet.

 Couplage de structures de données : deux classes présentent un tel couplage, si deux de leurs méthodes respectives se passent comme paramètre une structure de données entière alors qu'une partie de cette structure aurait suffi.

 Couplage de Contrôle : une classe communique avec une méthode d'une autre classe à travers le passage de paramètres qui servent à des fins de contrôle d’exécution.

 Couplage Commun : il signifie que plusieurs méthodes partagent un même

ensemble de données.

 Couplage de Contenu : c'est le pire des couplages. Il signifie qu'une méthode

accède directement à l'implantation d'une méthode appartenant à une autre classe ou à ses variables d’instances.

71

EXEMPLE DE COUPLAGE DE CONTENU

3 .P RI NCI P ES DE LA CONCEP T I ON

public class Line {

public Point start, end; ...

}

public class Arch {

public Line baseline; ... void slant(int newY) {

Point theEnd = baseline.end; theEnd. Location.X=X; theEnd. Location.Y=Y1;

}

}

Le fait d’encapsuler les données réduit considérablement le couplage

Elles sont déclarées private Avec des méthodes get et set

72

C o u r s « G L - A C O O » E N S I

C o u r s « G L - A C O O » E N S I

15/11/2017

36

EXEMPLE DE COUPLAGE DE CONTENU

3 .P RI NCI P ES DE LA CONCEP T I ON

public class Line {

private Point start, end; ... public Point getStart() { return start; } public Point getEnd() { return end; }

}

public class Arch {

private Line baseline; ... void slant(int newY) {

Point theEnd = baseline.getEnd(); theEnd.setLocation(theEnd.getX(),newY);

}

}

73

EXERCICE

3 .P RI NCI P ES DE LA CONCEP T I ON

 Dans un logiciel de gestion de vente, nous avons les trois classes

suivantes :

Facture : contient un ensemble de produits facturés et est associée à un

paiement,

Paiement : décrit un paiement, un paiement est associé à une facture. Client : effectue les commandes et elle est associée à la classe facture.  On ajoute une méthode payer() à la classe Client. On étudie le couplage

dans les deux cas suivants : 1.

La méthode payer() crée une instance de Paiement et l'assigne à l'objet Facture. La méthode payer() délègue l'action à la classe Facture qui crée une instance de Paiement et l'assigne.

2.

 Quel est le meilleur cas ?

 Le couplage est plus faible dans le deuxième car la méthode payer() de la classe Client n'a pas besoin de savoir qu'il existe une classe Paiement, c'est à dire qu'elle ne dépend pas de l'existence ou non de cette classe

74

15/11/2017

37

C o u r s « G L - A C O O » E N S I

C o u r s « G L - A C O O » E N S I

15/11/2017

FORTE COHÉSION

2 .P RI NCI P ES DE LA CONCEP T I ON

 Cohésion= Mesure de la force des relations qui unissent

les éléments fonctionnels à l’intérieur d’un module.

 Un module est fortement cohésif si tous les éléments sont

destinés et sont essentiels à la réalisation d’une tâche commune unique.

 Une forte cohésion est précurseur

 D’un bon découpage du système: les éléments qui ont rapport les

uns avec les autres se retrouvent dans un même module.

 D’une facilité de maintenance: les éléments destinés à une même

tâche sont regroupés et on peut facilement les retrouver.

 D’un faible couplage: les éléments inter-dépendants se trouvant

dans le même module, les dépendances inter-modules sont moindres.

75

TYPES DE COHÉ