MGL7361 – Principes et applications
de la conception de logiciels
1 | Introduction
29 avril 2025
Moustapha Boulgoudan
2
INTRODUCTION
SOMMAIRE
CYCLE DE VIE DU LOGICIEL
ARCHITECTURE LOGICIELLE
CONCEPTION DÉTAILLÉE
ATTRIBUTS DE QUALITÉ
CONCLUSION
MGL7361 - Introduction à la conception logicielle 29-04-2025
3 INTRODUCTION
Site Moodle du cours : https://ena01.uqam.ca/course/view.php?id=71602
Connaissances préalables
Programmation dans un langage orienté-objet
Stratégie pour enseigner
Cours magistral : concepts
Projets : application et discussion des concepts en équipe
Vous avez la responsabilité de faire de la lecture
Travail à la maison : ≈ 6h / semaine
Révision des cours, lectures et projets
MGL7361 - Introduction à la conception logicielle 29-04-2025
4 CYCLE DE VIE DU LOGICIEL
Spécification des exigences → SRS (Software
Requirements Specification)
↓
Conception
Conception architecturale (ou de haut niveau)
↓
Conception détaillée
↓
Réalisation
↓
Maintenance
MGL7361 - Introduction à la conception logicielle 29-04-2025
5 SPÉCIFICATION DES EXIGENCES
Spécifier ce qu’on doit construire
Répondre à la question QUOI et non COMMENT
Décrire le problème et non la solution
Objectifs
Comprendre précisement ce qu’on exige du logiciel
Communiquer cette compréhension des exigences à
toutes les parties impliquées dans le développement du
logiciel
Contrôler le logiciel en production pour s’assurer qu’il
répond aux exigences initiales ainsi que les
changements apportés
MGL7361 - Introduction à la conception logicielle 29-04-2025
6 TYPES D’EXIGENCES
Fonctionnalités : Exigences fonctionnelles
Qualité : Exigences non fonctionnelles
L’interface utilisateur
Le système
Interopérabilité (avec des systèmes existants)
Accessibilité / Facilité d’utilisation
MGL7361 - Introduction à la conception logicielle 29-04-2025
7 LE PROBLÈME DE BASE
Exigences
Comment combler le
????? fossé entre les
exigences et le code ?
Code
MGL7361 - Introduction à la conception logicielle 29-04-2025
8 PREMIER ÉLÉMENT DE RÉPONSE
Exigences
• Un cadre de haut niveau
pour construire et faire
évoluer le système
Architecture logicielle
• Peut utiliser un patron
architectural comme MVC
Code (Model-View-Controller)
MGL7361 - Introduction à la conception logicielle 29-04-2025
9 DEUXIÈME ÉLÉMENT DE RÉPONSE
Exigences
• La conception détaillée est plus
proche du code. Elle s’intéresse
aux classes, aux objets, aux
Architecture logicielle algorithmes, …
Conception
logicielle
• Peut utiliser des patrons de
conception à l’intérieur d’un
Conception détaillée
composant pour implémenter
des solutions.
Code • Exemples de patrons de
conception dans le cadre du
MVC : Singleton, Fabrique,
Observer, …
MGL7361 - Introduction à la conception logicielle 29-04-2025
10 CONCEPTION LOGICIELLE
Définition
La conception est la spécification de la meilleure solution au
problème
Ce qu’elle produit
Un plan de conception pour les programmeurs qui décrit
comment la solution va être développée
Objectif
”Fitness for purpose” qui stipule que la solution doit répondre
aux exigences de départ
MGL7361 - Introduction à la conception logicielle 29-04-2025
11 PROCESSUS DE CONCEPTION
LOGICIELLE
À partir des spécifications des exigences, analyser les
besoins et produire un modèle ”boîte noire” du
problème Architecture
Proposer une solution de conception ”boîte blanche”
Valider la solution (à l’aide de prototypes par exemple)
Produire un plan de conception pour les programmeurs
MGL7361 - Introduction à la conception logicielle 29-04-2025
12 PHASES DE CONCEPTION LOGICIELLE
Deux phases
Architecture logicielle
Conception détaillée
MGL7361 - Introduction à la conception logicielle 29-04-2025
13 ARCHITECTURE LOGICIELLE
L’architecture logicielle d’un système décrit sa structure
globale
Principaux composants et leurs comportements
Connexions entre les composants
en utilisant une ou plusieurs vues (views)
L’architecture logicielle comble le fossé entre les
exigences et le code.
MGL7361 - Introduction à la conception logicielle 29-04-2025
14 ARCHITECTURE LOGICIELLE
Le concepteur (architecte) développe un modèle
abstrait de la solution dite : conception architecturale
Seulement les propriétés externes des éléments du
modèle sont incluses
Partionnement “boîte noire” du problème qui :
Est largement concerné par la nature et la forme du
problème lui-même
Ne sera pas grandement influencé par la forme qui
sera adoptée pour sa solution
MGL7361 - Introduction à la conception logicielle 29-04-2025
15 CONCEPTION DÉTAILLÉE
Les parties abstraites identifiées du problème dans la
phase architecturale sont mappées aux unités
techniques qui formeront donc une “boîte blanche”
Produit les spécifications ou plans pour les
programmeurs
MGL7361 - Introduction à la conception logicielle 29-04-2025
16 PARTICULARITÉS DE LA CONCEPTION
LOGICIELLE
Un logiciel est un processus complexe pour modéliser et
spécifier un comportement
Le concepteur utilise différents points de vue
Se base sur l’abstraction pour séparer les aspects logiques et
physiques
Le processus de conception n’est pas analytique et les
critères de decision sont complexes et impliquent des
compromis
Pour résoudre son problème, le concepteur utilise des
notations et des modèles de solutions connues
Les notations permettent de fabriquer des modèles du produit
désiré pour ainsi étudier son comportement
Les modèles de solutions sont les patrons
MGL7361 - Introduction à la conception logicielle 29-04-2025
17 PROBLÈMES PERNICIEUX (“WICKED”)
Il n’y a pas de formulation definitive du problème à
résoudre
Il n’y a pas de condition de terminaison pour l’activité
de conception
Les solutions ne sont ni varies ni fausses mais bonnes ou
mauvaises
La solution est toujours un cas d’espèce
Il est impossible d’énumérer toutes les solutions possibles
à un problème
Une solution peut amener son lot de problèmes
MGL7361 - Introduction à la conception logicielle 29-04-2025
18 CARACTÉRISTIQUES D’UN CONCEPTEUR
Familiarité avec le domaine de l’application
Le modèle fonctionnel du domaine
Les attributs de qualité
La technologie utilisée
Habilités de communication
Communiquer la vision technique à son équipe en
documentant la conception
Suivi du progrès du projet
MGL7361 - Introduction à la conception logicielle 29-04-2025
19 IMPACT DES CONTRAINTES
Les contraintes suivantes réduisent l’espace de solutions :
Contraintes sur le produit logiciel
L’environnement d’exécution
La forme d’implémentation finale
Paradigmes des langages de programmation
Contraintes sur le processus de conception logicielle
Habilités des concepteurs et des programmeurs
Style architectural (politique de structure du logiciel)
Contraintes du produit
MGL7361 - Introduction à la conception logicielle 29-04-2025
20 DÉCISIONS DE CONCEPTION
L’activité de conception consiste à prendre des
décisions
On a besoin d’enregistrer les décisions pour savoir
pourquoi elles ont été prises
Utiles s’il y a un audit de conception dans le cadre d’un
contrôle de qualité
MGL7361 - Introduction à la conception logicielle 29-04-2025
21 IMPACT DES CYCLES DE VIE DU LOGICIEL SUR
LA CONCEPTION
La conception est fortement influencée par les étapes
qui la précèdent (exigences et spécification)
Risque d’incohérences
Entre les exigences et la spécification des exigences
Entre la spécification des exigences et la conception
Dans la conception elle-même → une implémentation inadéquate
Apparition des incohérences
Quand on effectue une revue de la conception (Design Review)
Au moment de l’implémentation des éléments de la conception
Au moment des tests de l’implémentation
MGL7361 - Introduction à la conception logicielle 29-04-2025
22 Notions de style et de patron
Style architectural
Patrons
d’architecture (Architectural Patterns)
de conception (Design Patterns)
MGL7361 - Introduction à la conception logicielle 29-04-2025
23 Style architectural
Comment organiser le code
Haut niveau de granularité
Spécifie le couches et les modules de l’application et
comment elles interagissent entre eux
MGL7361 - Introduction à la conception logicielle 29-04-2025
24 Style architectural - Exemples
Application monolitique
En couches (Layers)
Application à base de microservices
Application à base d’événements
Publish/Subscribe (Files d’attentes ou Queues)
…
MGL7361 - Introduction à la conception logicielle 29-04-2025
25 Les patrons
Un patron est une solution à un problème recurrent
Patrons d’architecture (Architectural Patterns)
Une façon d’implémener le style architectural
Résolvent les problems liés au style architectural
Exemples
À trois couches
Modèle / Vue / Contrôleur (MVC)
MGL7361 - Introduction à la conception logicielle 29-04-2025
26 Patrons
Patrons de conception (Design Patterns)
Portée limitée à une partie du code
Résolvent les problems liés au style architectural
Exemples
Singleton
Fabrique : Instancier un objet en fonction de son type à
l’exécution
Stratégie : Comportement de l’objet en fonction de son état
…
MGL7361 - Introduction à la conception logicielle 29-04-2025
27 CONCLUSION
Cycle de vie du logiciel
Spécification des exigences
Architecture ou conception de haut niveau
Conception détaillée
Style architectural
Patrons d’architecture
Patrons de conception
MGL7361 - Introduction à la conception logicielle 29-04-2025