Vous êtes sur la page 1sur 38

Génie Logiciel1

Chapitre4: Conception
Rim Afdhal

Niveau: 2éme année Informatique

2021/2022
1
Introduction

▪ DE L’ANALYSE À LA CONCEPTION
Analyser → c’est définir le quoi?
Concevoir → c’est définir le comment?
Difficulté de la conception:
• La conception ne se contente pas d’identifier le problème mais doit
lui apporter une solution valide.

▪ DE LA CONCEPTION À L’IMPLÉMENTATION

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


conception.

2
Présentation de la conception

DÉFINITIONS
O La conception est un processus de résolution de problèmes dont
l’objectif est d’identifier la meilleure façon:
O d’implémenter les besoins fonctionnels d’un système...
O tout en respectant les contraintes imposées par les besoins non
fonctionnels...
O et en adhérant à des principes de base menant à un logiciel de qualité.

O La conception propose une solution au problème spécifié lors de l’analyse:


O architecture de l’application (architecture logicielle et architecture
physique),
O description détaillée des modules, des interfaces

3
Présentation de la conception

o Activité itérative/incrémentale qui transforme progressivement les besoins


vers un produit final.

4
ÉTAPES DE LA CONCEPTION

La conception passe par deux étapes:

5
Présentation de la conception
Conception architecturale
● =conception de haut niveau= conception globale
● Objectif: Structuration et organisation générale du système à
concevoir
O 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.

Conception détaillée
●=conception de bas niveau
● Objectif: détailler les éléments produits dans la conception
architecturale et préparer au mieux l’implémentation:
O description précise de chaque module
O algorithmes mis en œuvre
O traitements effectués en cas d'erreur
6
Présentation de la conception

O Méthode
●Est une démarche, série d ’étapes
●Basée sur des concepts
●Utilise une notation

O Méthode de conception
●démarche (processus) : spécifique à chaque méthode
●concepts : principes du génie logiciel
●notation
O graphique
O textuelle

7
MÉTHODES DE CONCEPTION

O Objectifs
●faciliter le passage spécification - conception
●faciliter la communication entre concepteurs
●améliorer la qualité
●améliorer la productivité
O On peut grossièrement distinguer deux familles de méthodes de
conception :
●Méthodes fonctionnelles (plusieurs familles)
O le logiciel est vu comme un ensemble d’unités fonctionnelles
●Méthodes orientées objet
O le logiciel est vu comme un ensemble d’objets, chaque objet
possède un état et offre des méthodes qui peuvent modifier ou
consulter son état.
50

8
MÉTHODES FONCTIONNELLES

O Unité de décomposition = module


O Système = ensemble de modules avec des interactions entre
eux
O Approche générale :
●décomposition fonctionnelle en modules, basée sur les
traitements
O Résultat
● état du système centralisé
● conception complexe : nombreuses interconnexions entre les
modules pour les logiciels complexes
51

9
MÉTHODES FONCTIONNELLES

O méthodes descendantes
O Résultat : hiérarchie

10
EXEMPLE DE NOTATION : LES DIAGRAMMES DE
STRUCTURE

O Une organisation hiérarchique et fonctionnelle des systèmes.

O Notation :
●Les rectangles correspondent aux modules.
●Les grandes flèches correspondent à la relation d’appel entre
modules
●Les petites flèches correspondent aux flux de données
(paramètres, données retournées).

11
DIAGRAMMES DE STRUCTURE:NOTATION

12
DIAGRAMMES DE STRUCTURE

O La relation d'appel entre modules donne des indications sur la


qualité de la modularité.
O Dans une bonne structure modulaire:
●le nombre d’appels sortants (‘fanout’) doit rester relativement
faible
●le nombre d’appels entrants (‘fan-in’) peut être élevé, ce qui
prouve que le module est souvent réutilisé

13
EXEMPLE : VÉRIFICATEUR D’ORTHOGRAPHE

O Soit un vérificateur d’orthographe qui cherche chaque mot d’un


document dans un dictionnaire.
O Les mots trouvés sont considérés comme corrects.
O Les mots non trouvés apparaissent à l’écran et l’utilisateur
prend une décision :
●soit ils sont corrects et sont ajoutés au dictionnaire,
●soit ils sont incorrects et ajoutés avec la correction à un fichier des
mots à corriger.

14
Présentation de la conception

15
Principes de conception

Modularité
MODULE: DÉFINITION
❖ 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.
O Par exemple des méthodes et des classes sont des modules en Java.
O On peut définir un module comme un fournisseur de ressources
ou de services.
O Quand on décompose un système en modules il faut décrire
précisément les relations entre ces modules.

16
Principes de conception
▪ Modularité
O 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.
O Exemple : Appel de procédure

●Relation « CONTIENT »: On dit que Mi CONTIENT Mk si Mi est


réalisé en assemblant un ou plusieurs modules dont le module Mk
O Exemple : regroupement en paquetages UML

17
Principes de conception
▪ Encapsulation
O 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.

▪ Anticipation des changements

18
Principes de conception
Réutilisation
Concevoir le design de façon à ce que les différents aspects du
système soient utilisables dans différents contextes

Faible couplage
O Couplage: mesure de l’interdépendance entre deux
modules.
O Un ensemble de modules est faiblement couplé si les liens de
dépendances (cf. interactions induisant une relation
«UTILISE») entre les modules sont peu nombreux.

19
Principes de conception
COUPLAGE

20
Principes de conception

O 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…

21
Principes de conception
Forte cohésion

22
23
DÉFINITIONS

O L’architecture logicielle définit la structure (ou les structures)


d’un logiciel qui comprend les éléments logiciels, leurs
propriétés visibles et leurs relations.

O Une architecture logicielle:


●Se consacre à structurer un logiciel à partir de ses
spécifications fonctionnelles
●Introduit les notions et concepts de découpage en couches,
modules, composants, design patterns et frameworks.

O Remarque: Un framework est un ensemble d'outils et de composants


logiciels organisés conformément à un plan d'architecture et
des patterns. Elle facilite le travail à plusieurs sur une même architecture.

24
STRUCTURER?

O La structuration du système peut être vue sous différents angles, selon


que l’on considère :
●le découpage « logique » → Vue Logique
O montre le découpage en modules sans se soucier des détails
physiques d’exécution (machines, OS, réseaux, etc.)
O Vue en couches = layer view
●le découpage « physique » → Vue Physique
O s’intéresse au déploiement physique prenant en compte le
contexte d’exécution.
O Vue en niveaux = tier view

69

25
POURQUOI DÉVELOPPER UNE ARCHITECTURE
LOGICIELLE ?

O Pour donner un aperçu de haut niveau du système


O Pour faciliter la compréhension et la communication
O Pour faciliter aux développeurs la distribution des tâches
O Pour préparer les extensions du système
O Pour faciliter la réutilisation et la réutilisabilité

26
COMMENT CHOISIR UNE ARCHITECTURE?

O Il n’y a pas une architecture unique permettant de réaliser un


système, il y en a plusieurs.

►Le choix de l’architecture implique plusieurs choix dont les


technologies, les produits et les serveurs à utiliser

O Le concepteur ou l’architecte tâchera de choisir la meilleure


architecture possible selon plusieurs critères:
●les exigences fonctionnelles et non fonctionnelles
●la maintenabilité : l’ajout de nouveaux éléments sera facile et ne
nécessitera que des ajustements mineurs à l’architecture
●Les compétences de l’équipe, etc.
27
CONCEPTION
ARCHITECTURALE AVEC UML

28
CONCEPTION ARCHITECTURALE AVEC UML

O UML est un bon moyen de représenter une architecture logicielle :

●Le diagramme de packages et le diagramme de composants


peuvent servir à représenter la vue logique d’une architecture.

●Le diagramme de déploiement et le diagramme combiné


(déploiement/composants) peuvent servir à représenter la vue
physique d’une architecture

29
CONCEPTION ARCHITECTURALE AVEC UML

DIAGRAMME DE PACKAGES
O = diagramme de paquets = diagramme de paquetages
O Un paquet est un groupement d’éléments UML (par exemple les
classes) .
O Le diagramme de paquets définit les paquets et les relations qui
les relient.
O Avec ce diagramme, l’architecture est exprimée par la hiérarchie de
paquetages et par le réseau de relations de dépendance entre
paquetages.
O Chaque paquetage est représenté graphiquement par un dossier.

30
DIAGRAMME DE PACKAGES

O La décomposition en paquetage devra assurer une cohésion forte


entre les éléments d’un même paquetage et un couplage faible entre
paquetages.

31
DIAGRAMME DE COMPOSANTS

O Permet de spécifier l’architecture logicielle ou logique en terme de


composants pour un environnement de développement donné.

O Exemple:

32
COMPOSANT

O Un composant est une unité logique offrant des services dans un


système
O Un composant a un nom unique dans son contexte
O Un composant définit un système ou un sous-système de n’importe
quelle taille ou complexité
O Les diagrammes de composants permettent de
modéliser les composants et leurs interactions
O Les composants d’un système doivent être facile à
réutiliser et à remplacer
O Représentation graphique:

33
COMPOSANT

O L’implémentation du composant est cachée (encapsulée) aux entités


externes
O Un composant peut être étendu par un stéréotype
O Il existe des stéréotypes standard pour les composants comme «
subsytem », « database » ou « executable »
O L’utilisateur peut ajouter ses propres stéréotypes
O Exemples:

34
COMPOSANT & INTERFACE

O Un composant définit son comportement en terme d’interfaces


fournies et interfaces requises
INTERFACES
O Une interface est une collection d’opérations ayant un lien sémantique et qui n’ont
pas d’implémentation
O L’implémentation des interfaces se fait par une ou plusieurs classes
implémentant le composant
O Les noms d’interfaces commencent par « I » (convention)
O Exemple:
Nom de l’interface

35
36
37
38

Vous aimerez peut-être aussi