CAL Cours1
CAL Cours1
CAL Cours1
Notes de Cours
Conception avancée des logiciels
Cours 1
Introduction
Présenté par
Mr KHELIFA N.
Introduction
Le génie logiciel a été défini officiellement par la communauté scientifique dans:
Objectif: (FCDQ)
Codage (coding)
◦ Écriture des textes des programmes
sortie : Texte des programmes, Chaque module est vérifié séparément
Les activités courantes
Intégration
◦ Regroupement des divers modules
◦ Construction de l’architecture générale
◦ Validation globale/recette
sortie : Compte rendu de recette, Rapports d’inspection et de validation
Validation globale/recette
◦ vérifier qu’on construit le bon système
sortie: Satisfaction des users (ou non), Acceptation du produit (ou non) / Logiciel accepté , Rapport des
tests
Diffusion
◦ Préparation et distribution des différentes versions
sortie : Versions des programmes et de leur documentation adaptées
Exploitation
◦ Mise en place du système dans son environnement opérationnel
sortie : Programme en fonctionnement, Rapports d’incidents et de correction
Maintenance
◦ Processus qui permet de garder opérationnel un logiciel ou de l'améliorer
◦ La maintenance peut être:
Corrective (erreurs dormantes)
Adaptatif (par rapport à l’utilisateur)
Evolutif (par rapport à l’environnement)
Perfective (optimisation, amélioration,..)
La conception
Spécifier
→ c’est définir le quoi.
Concevoir → c’est définir le comment
Conception :
◦ processus de définition de
l'architecture logicielle,
des composants(module),
interfaces et
données d'un système logiciel pour satisfaire aux exigences spécifiées
Phase de conception :
◦ période du cycle de vie du logiciel pendant laquelle les définitions ou
conceptions d'architecture, de composants logiciels, les interfaces et les
données sont créées, documentées et vérifiées pour satisfaire aux exigences
Modèle général du processus de conception
Modèle général du processus de conception
Conception de l’architecture
◦ Identification de la structure globale du système
◦ Les principaux composants
◦ Leurs relations
Conception des interfaces
◦ On définit les interfaces du système
Conception des composants
◦ Conception de chaque composant de façon indépendante
Conception de la base de données et classes
◦ Conception de la structure de la base de données et des classes
La place de la conception dans CVL
La place de la conception dans CVL
Chacun des éléments du modèle d'exigences fournit informations nécessaires pour créer
les quatre modèles de conception requis pour une spécification complète de la conception.
La conception de données/classe transforme les modèles de classe en classe de
conception réalisations et les structures de données requises nécessaires à la mise en
œuvre du logiciel
La conception architecturale définit la relation entre les principaux éléments structuraux
du logiciel en utilisant les styles et patron architecturaux
La conception de l'interface décrit comment le logiciel communique avec les systèmes qui
interagissent avec lui, et avec les humains qui l'utilisent.
◦ Une interface implique un flux d'informations (par exemple, données et/ou contrôle) et un type de
comportement spécifique.
◦ Par conséquent, les scénarios d'utilisation et les modèles comportementaux fournissent une grande
partie de l'information requis pour la conception de l'interface.
La conception au niveau des composants transforme les éléments structurels de l’
architecture du logiciel en une description procédurale des composants logiciels.
Informations obtenus à partir des modèles basés sur les classes et les modèles
comportementaux servent de base pour la conception des composants.
PRINCIPES DE CONCEPTION
Le principe de séparation des responsabilités
◦ vise à organiser un logiciel en plusieurs sous-parties, chacune ayant une
responsabilité biendéfinie.
◦ Au moment où un nouveau besoin se fera sentir, il suffira d'intervenir
sur la ou les sous-parties concernées
Le principe de responsabilité unique
◦ à lui que chaque sous-partie atomique d'un logiciel (exemple : une
classe) doit avoir une unique responsabilité (une raison de changer) ou
bien être elle-même décomposée en sous-parties
Encapsulation maximale
◦ Ce principe de conception recommande de n'exposer au reste de
l'application que le strict nécessaire pour que la sous-partie joue son
rôle.
PRINCIPES DE CONCEPTION
Modularité
◦ Un système est modulaire s’il est composé de sous systèmes plus simple ou
modules
◦ La modularité permet de considère séparément le contenu du module et les
relations entre modules
◦ La modularité facilite , la réutilisation , l’adaptation et permet le travail d’équipe
Cohésion
◦ On mesure la cohésion (“cohesion”) d’un composant aux nombres de ses sous-
composants qui effectuent des tâches similaires et ont des interactions continues.
Couplage
◦ On mesure couplage (l’interdépendance) entre deux composants A et B à la
quantité de modifications à faire sur B lorsque A est modifié (et réciproquement).
Un bon indicateur de la qualité de la modularisation.
haute cohésion, basse interdépendance
PRINCIPES DE CONCEPTION
DRY (DON'T REPEAT YOURSELF)
◦ Ce principe vise à éviter la redondance au travers de l'ensemble de l'application.
◦ Elle a les conséquences néfastes suivantes :
Augmentation du volume de code ;
Diminution de sa lisibilité ;
Risque d'apparition de bogues dû à des modifications incomplètes
2.Une conception doit être modulaire ; c'est-à-dire que le logiciel doit être
partitionné logiquement en éléments ou sous-systèmes.
Conception préliminaire,
◦ explique comment organiser un modèle de conception au vu des regroupements
d’analyse et des couches logicielles d’architecture.
◦ Il illustre notamment l’identification des composants métier et techniques d’un
système logiciel.
Conception détaillée,
◦ illustre la modélisation de solutions, en appliquant différents design patterns,
suivant les couches que l’on désire réaliser.
Conception vs implémentation
Différencesentre conception et
implémentation ?
UML infrastructure: cette partie vise à aligner UML avec les autres
standards de modélisation développés par OMG en utilisant la méta
modélisation