Académique Documents
Professionnel Documents
Culture Documents
Abdelali Saidi
saidi.a@ucd.ac.ma
1 Le génie logiciel
Définitions
Qualité du logiciel
Plan
1 Le génie logiciel
Définitions
Qualité du logiciel
2 Principes fondamentales du développement logiciel
Rigueur
Décomposition
3 Cycle de vie d’un logiciel
Le cahier des charges
Modèles de cycle de vie d’un logiciel
Le génie logiciel
Définitions
Projet
Le projet est un ensemble d’actions à réaliser pour satisfaire un objectif défini,
dans le cadre d’une mission précise, et pour la réalisation desquelles on a identifié
non seulement un début, mais aussi une fin.a
a AFITEP, Dictionnaire de management de projet [1996]
Le génie logiciel
Définitions
Le logiciel
Un logiciel est un ensemble d’entités nécessaires au fonctionnement d’une tâche
informatisée d’un système. Parmi ces entité on a :
Codes sources
Exécutables
Documentations
...
Génie logiciel
Le génie logiciel est une science de l’ingénieur qui englobe plusieurs phases (la
conception, le développement et la maintenance) qui mènent à l’accomplissement
d’un système informatique.
Le génie logiciel
Définitions
Types de logiciels
Logiciels sur mesure : Fait pour un client spécifique
Logiciel générique : Adaptable à un ensemble de clients
Le génie logiciel
Quelques chiffres
Répartitions des coûts de développement
Spécification : 6%
Conception : 5%
Codage : 7%
Tests et validations : 15%
Maintenance : 67%
Coûts de correction des erreurs
Exigences et spécifications : 56%
Conception : 24%
Codage : 10%
Autres : 10%
Le génie logiciel
Objectifs et risques
Objectifs
Le génie logiciel vise à garantir :
Une spécification correcte
Un logiciel qui respecte cette spécification
Un coût et un délai de réalisation respectables
Qualité du logiciel
Qualité du logiciel
Plan
1 Le génie logiciel
Définitions
Qualité du logiciel
2 Principes fondamentales du développement logiciel
Rigueur
Décomposition
3 Cycle de vie d’un logiciel
Le cahier des charges
Modèles de cycle de vie d’un logiciel
Principes fondamentales
Principes fondamentales
Principes fondamentales
La rigueur
Les principales sources de défaillance d’un logiciel sont d’origines humaine
Toujours se poser des questions à propos de la validité de ses décisions
Utiliser les outils de vérification (Computer Aided Software Engineering)
pour réduire la marge d’erreur
Principes fondamentales
Principes fondamentales
La modularité
Elle fait partie du prncipe décomposition des problèmes
Il s’agit de partitionner le logiciel en plusieurs modules qui sont cohérents
Principes fondamentales
L’abstraction
Également une partie du principe décomposition des problèmes
Créer des concepts généraux qui englobent plusieurs cas particuliers
Cela permet de raisonner efficacement
Exemple
générics du java
template du C++
Principes fondamentales
La généricité
Un logiciel réutilisable est plus valeureux qu’un module dédié
Un logiciel est générique lorsqu’il est adaptable
Principes fondamentales
La construction incrémentale
La meilleure façon pour réussir l’aboutissement d’un logiciel en
développement est de le construire d’une manière incrémentale
Question : Quelle est la meilleure méthode de procéder ?
Écrire le code entièrement et le compiler par la suite
Écrire le code d’une fonction, compiler et avancer encore et encore
Plan
1 Le génie logiciel
Définitions
Qualité du logiciel
2 Principes fondamentales du développement logiciel
Rigueur
Décomposition
3 Cycle de vie d’un logiciel
Le cahier des charges
Modèles de cycle de vie d’un logiciel
Un projet réussi
L’aboutissement d’un projet dépends impérativement de la définition écrite,
détaillé, précise, exhaustive et évaluable :
des objectifs à atteindre
des ressources requises
de la planification de la mise en oeuvre
des outils d’évaluation
des méthodes de contrôle
la compréhension et la collaboration du propriétaire (Maitre d’ouvrage -
MOA) et le fournisseur (Maitre d’oeuvre - MOE)
D’où la nécessité d’un cahier de charges et de sa spécification
Définition
Un cahier des charges est un document contractuel décrivant ce qu’attend le
MOA de la part du MOE. Ce document doit décrire de la façon la plus simple et
précise possible les besoins du MOA auxquels le MOE doit répondre.
Caractéristiques
Il doit être fonctionnel (ne pas avoir de détails techniques)
Il doit contenir tous les éléments nécessaires qui permettront au MOE de :
Juger de la taille du projet
Juger de sa complexité
Offrir un devis (coût, délai, ressources humaines ...) adéquat
Idéalement statique
Le contexte
Un cahier des charges commence généralement par une section qui décrit le
contexte :
Analyse du besoin : il faut acquérir le métier et bien comprendre le besoin et
les enjeux du MOA
Analyse de l’existant : il faut bien décrire l’environnement du MOA
(Matériels, logiciels, RH impacté)
L’objectif
Permettre de comprendre le but recherché
Ce que doit le produit final permettre de faire
Le vocabulaire
Permettre une communication correcte (MOA et MOE sont souvent de
différentes cultures)
Il se peut que le MOA pense avoir utilisé un terme générique et qu’il soit un
terme technique chez le MOE
Le calendrier
Des dates précise que le MOA va imposer
Éviter l’effet tunnel
Les contraintes
Le coût : spécifier le budget alloué au projet
Les délais : spécifier la date des livrables
autres : Normes techniques, clauses juridiques ...
Définition
Un ensemble structuré d’activités qui conduisent à la production d’un logiciel
Objectif
Contrôler l’avancement du développement du logiciel
Vérifier et valider cet avancement
S’apercevoir des problèmes liés au logiciel le plutôt possible
Remarques
Il n’existe pas de cycle idéal
Le cycle dépends de l’entreprise qui l’adopte
ses besoins
son domaine
ses contraintes de qualité
les personnes impliqués
La spécification
Objectif :
Établir une première description du logiciel final
Caractéristiques :
Analyse des besoins
+
Les faisabilités informatiques
Résultat :
Spécification technique des besoins
Description de ce que fera le logiciel (et non comment)
La conception
Objectif :
Décrire la structure du logiciel
Décider les technologies qui répondront au mieux au besoin
Caractéristiques :
Détailler la description technique du logiciel
Résultat :
Conception architecturale
Conception détaillée
Modèle en cascade
Modèle en cascade
On ne commence une nouvelle phase que si on a dèjà terminé celle d’avant
À la terminaison de chaque phase il faut produire un document pour
améliorer le suivi du projet
Ce modèle s’adapte aux systèmes complexes
La détection d’une anomalie ne doit concerner que la phase précédente
il faut donc reprendre à partir de cette phase précédente
il faut reproduire de nouveaux documents à la fin de cette phase
cela impose une réflexion sur ses choix vu le coût que peut faire une correction
Ce modèle est déconseillé pour les projets difficiles à spécifier (exprimer) leurs
besoins
Modèle en V
Modèle en V
C’est une amélioration du modèle précédent
Les phases montantes renvoient de l’information vers les phases en vis-à-vis
Cela permet l’amélioration du logiciel en cas de découverte d’anomalie