0% ont trouvé ce document utile (0 vote)
480 vues33 pages

Conception Logicielle: Clés et Défis

Genie logiciel

Transféré par

daryldedzo01
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
480 vues33 pages

Conception Logicielle: Clés et Défis

Genie logiciel

Transféré par

daryldedzo01
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Chapitre :

La Conception

Eléments de Génie Logiciel 1


Introduction
• Conception: Étape cruciale du développement logiciel; pont entre
l’analyse des besoins et l’implémentation.
• Activité itérative/incrémentale qui transforme progressivement les
besoins vers un produit final.

Eléments de Génie Logiciel 2


Introduction
• Conception Vs Analyse
• Analyser: c’est définir le quoi?
• Concevoir: c’est définir le comment?

• Conception Vs implémentation
• 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.

Eléments de Génie Logiciel 3


Activité de conception
• 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.
Eléments de Génie Logiciel 4
Activité de conception
• Difficulté de la conception: la conception ne se contente pas
d’identifier le problème mais doit lui apporter une solution valide
• La conception est une activité exigeant la créativité.
• Pas de recettes toute faites mais il existe des méthodologies
(principes & bonnes pratiques) pouvant être de bons conseils.
• Résultat de la phase de conception: une conception (aussi appelée
«design»)
• Influence considérable sur la qualité du logiciel : fiabilité,
correction, évolubilité, etc.

Eléments de Génie Logiciel 5


Activité de conception
• Activité intellectuelle qui se base sur:
• Évolubilité: si le logiciel est difficile à changer, les autres qualités
sont directement compromises: fiabilité, performance, etc.
• Réutilisation: on veut minimiser les coûts et rentabiliser les efforts
de développement.

Eléments de Génie Logiciel 6


Activité de conception
• But: Décomposition progressive du système en modules de plus en
plus détaillés.

Eléments de Génie Logiciel 7


Conception= prise de décisions
• 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
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 du bon design
• de l’expérience passée
4. Il faudra être en mesure de toujours choisir la meilleure alternative
Eléments de Génie Logiciel 8
Etapes de conception
• La conception logicielle comporte deux sous-activités:
• conception architecturale
• conception détaillée

• Ces deux sous-activités sont menées:


• soit l’une à la suite de l’autre, soit en parallèle (selon les besoins)
• en suivant un certain ensemble de principes de conception

Eléments de Génie Logiciel 9


Conception architecturale
• = conception globale = conception de haut niveau
• Objectifs:
• 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.
• Produit : architecture logicielle

Eléments de Génie Logiciel 10


Architecture Logicielle
• Une architecture logicielle est une représentation abstraite d'un
système exprimée essentiellement à l’aide de composants logiciels en
interaction via des connecteurs. Composants

Connecteurs

• Ne fournit que les propriétés externes des éléments structurants


• Ne se préoccupe pas des détails d'implantation

Eléments de Génie Logiciel 11


Conception détaillée
• = conception de bas niveau
• 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 an cas d’erreur

Eléments de Génie Logiciel 12


Principes de conception
• Règles et éléments fondamentaux du génie logiciel qui doivent guider
la phase de conception en vue de construire des systèmes fiables et
évolutifs.
• Principes mis en œuvre:
• Abstraction
• Raffinement
• Modularité
• Anticipation des changements
• Généralité
• Rigueur et formalisme
Eléments de Génie Logiciel 13
Principes de conception- Abstraction
Principe selon lequel on représente un problème (une donnée, une
procédure, une entité, etc.) en éliminant les aspects les moins
pertinents pour ne considérer que ceux qui sont essentiels pour servir
les buts d’une réflexion spécifique.

- Permet de maîtriser la complexité d’un problème.


- Permet d’omettre certains détails pour se concentrer sur ceux qui
sont pertinents.

Eléments de Génie Logiciel 14


Principes de conception- Raffinement
Processus de conception qui permet d’élaborer une description étape
par étape depuis une description très abstraite jusqu’à son
implémentation (dans un langage de programmation). A chaque
étape, une ou plusieurs parties d’une description sont redéfinies en
donnant de plus en plus de détails.

- Le raffinement se termine lorsque la description est totalement


exprimée dans un langage de programmation.
- Les principes d’abstraction et de raffinement sont complémentaires.
L’abstraction permet d’omettre les détails d’implémentation. Le
raffinement permet de révéler ces détails.
Eléments de Génie Logiciel 15
Principes de conception- Modularité
Caractéristique d’un logiciel qui se compose de modules séparés,
clairement identifiés, aux interfaces bien définies, pouvant être traités
ou modifiés individuellement.

• Module: Unité fournissant des ressources et/ou des services


• En UML, module= classe, package, composant
• La modularité permet de mieux gérer la complexité des systèmes et
facilite leur maintenance…

Eléments de Génie Logiciel 16


Principes de conception- Anticipation des
changements
Principe selon lequel les choix de conception sont réalisés en anticipant
les modifications qui pourraient être apportées au logiciel et en étant
attentif à l’évolution possible ou attendue du logiciel.

• Un des principaux soucis de l’activité de conception: Développer un


design qui facilite l’ajustement du système aux changements.
• But: obtenir une conception flexible qui puisse bien s’accommoder
des modifications futures

Eléments de Génie Logiciel 17


Principes de conception- Anticipation des
changements
• Types de changements:
• Changements (perfectionnements) du système imposés par les nouvelles
exigences du client ou utilisateur
• Changements (adaptations) imposés par la modification de l’environnement
matériel, social, etc.
• Exemples:
• Changement d’algorithme
• Changement de représentation des données
• Changement de l’environnement d’exécution
• Changements dus au processus de développement si la nature du processus
de développement est itérative et/ou incrémentale.

Eléments de Génie Logiciel 18


Principes de conception- Généralité
• Lorsqu’on résout un problème, il est important de mettre l’accent sur
la recherche d’une solution pour un problème plus général que celui à
résoudre et qui se cache sans doute derrière lui.
• Une solution générale a plus de chance d’être réutilisée.
• Un module général pourra, peut-être, être utilisé à plusieurs niveaux
dans l’application.

Eléments de Génie Logiciel 19


Principes de conception- Rigueur et
formalisme
• La rigueur est un complément nécessaire à la créativité dans l’activité
de conception logicielle.
• Le plus haut degré de la rigueur est le formalisme.
• Le formalisme est encore plus exigeant que la rigueur puisqu’il
demande que le processus de développement soit conduit et évalué
par des lois mathématiques.
• Si on est formel, on est nécessairement rigoureux. Mais si on est
rigoureux, on n’est pas nécessairement formel.
Ex. On peut décrire un système en langue naturelle de façon
rigoureuse. Pour être formel toutefois, on utilisera un langage
logique, des modèles mathématiques, etc.

Eléments de Génie Logiciel 20


Qualité d’une bonne conception
• Un bon design devrait favoriser l’indépendance des modules

• Pour évaluer l’indépendance des modules, on se base généralement


sur les concepts suivants:
• Couplage
• Cohésion

• Une conception de qualité apporte à la fois:


• Une forte cohésion,
• Un faible couplage.
Eléments de Génie Logiciel 21
Couplage
• Couplage: mesure de l’interdépendance entre deux modules.
• Un ensemble de modules est faiblement couplé si les liens de
dépendances entre les modules sont peu nombreux.
Système non couplé Système faiblement couplé Système fortement couplé

Interaction d’utilisation:
•appel de fonction
• appel de procédure
• utilisation d’une variable
Eléments de Génie Logiciel 22
Couplage
• 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…

Eléments de Génie Logiciel 23


Cohésion
• 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 ses éléments sont destinés
et sont essentiels à la réalisation d’une tâche commune unique.
• Une forte cohésion est un signe:
d’un bon découpage du système: les éléments qui sont en 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… Eléments de Génie Logiciel 24
Méthodes de conception
• Méthode:
• Est une démarche, série d’étapes
• Basée sur des concepts
• Utilise une notation
• Méthode de conception
• Démarche (processus): spécifique à chaque méthode
• Concepts: principes du génie logiciel
• Notation:
Graphique
textuelle
Eléments de Génie Logiciel 25
Méthodes de conception
• Objectifs
– Faciliter le passage spécification-conception
– Faciliter la communication entre concepteurs
– Améliorer la qualité
– Améliorer la productivité
• On peut grossièrement distinguer deux familles de méthodes de conception:
• Méthodes fonctionnelles (plusieurs familles)
Le logiciel est vu comme un ensemble d’unités fonctionnelles
• Méthodes orientées objet
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.
Eléments de Génie Logiciel 26
Méthodes fonctionnelles
• Unité de décomposition : module.
• Système = ensemble de modules avec des interactions entre eux.
• approche générale :
décomposition fonctionnelle en modules, basée sur les traitements.
• Résultat :
- état du système centralisé
- conception complexe : nombreuses interconnexions entre les modules pour les
logiciels complexes
• Exemples: SADT, SASD qui regroupent Structured Anaysis (SA) et Structured
Design (SD) sont des exemples bien connus de méthodes fonctionnelles d’analyse
et conception. Ces méthodes datent des années 70.

Eléments de Génie Logiciel 27


Méthodes fonctionnelles
• méthodes descendantes
Système
• Résultat : hiérarchie

Fonction 1 Fonction 2

 Exemple : Gestion de bibliothèque


Sous Sous Sous Sous
Gestion de fonction 11 fonction 12 fonction 21 fonction 22
bibliothèques

Gestion des Gestion de


ouvrages prêts

Gestion Gestion de Gestion des Gestion des


d’acquisition réparation emprunts réservations

Eléments de Génie Logiciel 28


Méthodes fonctionnelles
Exemple: SADT
• SADT (Structured Analysis and
design Technics)
• Un modèle SADT = {diagrammes
ordonnés hiérarchiquement}.
• Démarche d’analyse structurée qui
identifie et organise les détails d’un
système qu’on veut appréhender
suivant une hiérarchie de modèles
parfaitement référencée.

Eléments de Génie Logiciel 29


Exemple SADT
Vente par correspondance

Eléments de Génie Logiciel 30


Méthodes orientés objets
• Unité de décomposition : objet
• Système = ensemble d’objets en interaction
• approche générale :
décomposition basée sur les objets
• Résultat
- état du système décentralisé
- système compréhensible, fossé sémantique réduite entre le monde réel et la
solution

Eléments de Génie Logiciel 31


Qu’est ce qu’un objet?
• Entité concrète ou abstraite du domaine d'application
• Décrit par état (attributs) + comportement (opérations pour
manipuler cet état)

Eléments de Génie Logiciel 32


Méthodes orientés objets
Exemple: UML2
• UML 2 est un bon moyen pour faire la conception d’un système

Eléments de Génie Logiciel 33

Vous aimerez peut-être aussi