Transcript LaLonde
Sensibilisation aux projets logiciels
Les projets logiciels
la réalité en chiffres
les cycles de vie
les problèmes
la qualité logicielle
Les errements de la pratique
bonnes habitudes
erreurs classiques
F.A - Méthodologie - DEA - 1
La réalité...
Taux d’échec
Retard
50%
25%
des projets n’aboutissent jamais
n’apportent aucune valeur ajoutée aux utilisateurs
2/3 des projets dépassent largement les délais
les grands projets ont un retard de 25% à 50%
50% des cas, le planning est établi avant les spécifs.
F.A - Méthodologie - DEA - 2
... en chiffres
Défauts
Incompréhension
Efficacité
la cause la plus fréquente de dépassement de
à l’origine de 50% des abandons de projets
planning
65% des projets ont des mésententes avec le client
10% sont annulés suite à des attentes irréalistes
40%
65%
des erreurs sont générées par le stress
du temps à des activités contre-productrices
F.A - Méthodologie - DEA - 3
Des étoiles et des bugs
Commission d’enquête pour Ariane 5:
“le logiciel a été considéré correct tant qu’il ne
s’était pas révélé défaillant”
“s’assurer que les revues prennent en compte le
bien- fondé des argumentations au lieu de contrôler
que les vérifications ont été faites”
“il faut une définition nette des responsabilités”
Et d’autres...
F.A - Méthodologie - DEA - 4
Projet logiciel
logiciel projet logiciel projet
produit logiciel
méthode de développement
structure systématique
code
documentation associée
qualité logicielle
F.A - Méthodologie - DEA - 5
Triangle des Bermudes
Le niveau de qualité est un compromis
Coût
Délai
Performance
F.A - Méthodologie - DEA - 6
Le cycle de vie
Période entre l’idée du logiciel et sa mise en service
Phases de développement
Spécification des besoins
Conception préliminaire
Conception détaillée
Codage : 15% du travail
Tests unitaires
Tests d’Intégration
Validation
Entouré par spécification et maintenance
F.A - Méthodologie - DEA - 7
Cycle en V
Expression des besoins
Maintenance
Spécifications
Validation (recette)
Conception générale
Tests d’intégration
Conception détaillée
Tests unitaires
Réalisation (codage)
F.A - Méthodologie - DEA - 8
Cycle en V, caricature ;-)
Cahier des charges
Maintenance
Euphorie
Promotion des autres
Études
Mise en œuvre
Inquiétude
Punition des innocents
Développement
Production
Panique
Recherche des coupables
Tests
F.A - Méthodologie - DEA - 9
Différents cycles
Programmer-corriger
Cascade simple
Cascade modifiée
avec
avec
avec
Spirale
chevauchement
sous-projets
réduction des risques
Prototypage évolutif
Livraison par étape
Livraison évolutive
Conception selon planning
Conception selon outils
Logiciel standard
Les phases de spécification, conception, tests sont présentes
Le cycle dépend du projet
F.A - Méthodologie - DEA - 10
Modèle en spirale
F.A - Méthodologie - DEA - 11
Comparaison des cycles
Capacité du cycle
Programmer
-corriger
-1
Cascade
Architecture mal comprise
-1
-1
+1
-1/0
Fiabilité (taux de défauts)
-1
+1
+1
0
-1/0
+1
+1
+1
Gestion des risques
-1
-1
+1
0
Respect du planning
-1
0
0
-1
Temps d’utilisation efficace
+1
-1
0
0
Possibilités de modifications
-1/+1
-1
0
+1
Indice d’avancement (client)
0
-1
+1
+1
Indice d’avancement (projet)
-1
0
+1
0
Faible compétence
+1
0
0
-1
Spécifications mal comprises
Capacité d’extension en taille
-1
Spirale Prototypage
évolutif
+1
+1
F.A - Méthodologie - DEA - 12
Pathologies des développeurs
pervers
1) coder tout de suite
2) jeter logiciel et aller en 1
peu de temps sur conception
logiciel fini à 90%, 90% du temps
médiocre
bûcheur
planificateur
planning + planning
pas le temps pour coder
optimal
un juste équilibre en tout !
planning + conception
pas le temps pour les tests
F.A - Méthodologie - DEA - 13
Les algorithmes
Complets
Non-ambigus
Déterministes
Finis
Généraux
Bien structurés
Efficaces
F.A - Méthodologie - DEA - 14
Niveau (approximatif) de langage
Assembleur
1
C
2.5
Fortran 77
Pascal
Ada 83
3
3.5
4.5
C++
Visual Basic 3
6.5
10
Perl
15
Tableur Excel
on développe à peu près le
même nombre de lignes/mois
(la productivité individuelle
variant néanmoins de 1 à 10)
donc développement plus ou
moins rapide
mais dépend de l’utilisation
~50
F.A - Méthodologie - DEA - 15
Les tests
Les mauvaises excuses
pas
pas
pas
le temps
les moyens techniques
l’argent
Coût relatif des erreurs
suivant la phase
Correction erreur
Étude préalable
Étude détaillée
Étude technique
Réalisation
Mise en oeuvre
Maintenance
Coût
1
3
10
20
50
100
F.A - Méthodologie - DEA - 16
Quels tests ?
unitaires
d’intégration
systèmes
validation
(fonctions)
(modules)
(logiciel)
(logiciel)
Tests statiques
respect architecture
respect structure
variables
commentaires
conception détaillée
conception globale
spécification
cahier des charges
Tests dynamiques
unitaires
enchaînement
performance
stress
F.A - Méthodologie - DEA - 17
Gestion de code
Version
Domaine public: RCS ou SCCS
ensemble de modules +
gelés en configuration
compilés + linkés
gestion des versions
travail collectif
sauvegarde
F.A - Méthodologie - DEA - 18
La documentation
Au minimum
La règle ne doit pas se substituer à l’intelligence
définition des besoins
spécification logicielle
description des interfaces
sources
tests (procédures+résultats)
manuel utilisateur
volume
documentation
volume du projet
F.A - Méthodologie - DEA - 19
Critères de qualité
Aptitude à être utilisée en l’état
sûreté
efficacité
commodité
Aptitude à être transférée
Aptitude à être maintenue
testée
comprise
modifiée
F.A - Méthodologie - DEA - 20
II) Recettes
Réutiliser des composants logiciels
documentés
re-testés!
Écrire des commentaires significatifs
Prototyper le programme
Avoir un bon environnement de développement
Utiliser des outils de génie logiciel (UML)
Porter sur une autre architecture
Éviter d’en faire trop!
F.A - Méthodologie - DEA - 21
Modularité
Top-down
Module maître
Calculs
Périphériques
Entrées/Sorties
Impressions
Interface UIF
Sécurité
Makefile
Gestion des modules avec RCS
entrée
... (programmes, fichiers) ... Sortie
F.A - Méthodologie - DEA - 22
Écriture
Header
C
C.IDENTIFICATION
C.TYPE
C.LANGUAGE
C.AUTHOR
C.ENVIRONMENT
C.KEYWORDS
C.PURPOSE
C.COMMENT
C
Utiliser la même trame
gérant l ’option -h avec une fonction usage()
passage
$Id: main.c,v 1.10 1996/08/30 15:18:53 Durand Exp$
program
FORTRAN
C. Durand
Unix
magnitude, reddening
Calcul du derougissement et de la magnitude absolue
1.0
19-Feb-1992:
d ’argument sur la ligne de commande
Nombre de lignes
fonction:
module:
quelques dizaines
quelques centaines
F.A - Méthodologie - DEA - 23
Variables et lisibilité
Une variable a un type
Une variable n’a qu’un type
Une variable n’a qu’un sens
Donner des noms significatifs
Convention de nommage
Éviter les variables globales
« implicit none »
éviter a=2; a=“oui”;
éviter i=k; i=2*i+a;
result=3; plutôt que i=3;
gStarFlux (globale)
F.A - Méthodologie - DEA - 24
Erreurs classiques
passage d’argument
dépassement de tableau
mauvaise initialisation
ordre d’évaluation
affectation vs comparaison
commentaires mal fermés
fuite de mémoire
erreurs aléatoires
utiliser un prototype
option compilateur, tests
initialiser pointeurs à 0, tester
éviter a[i++]=b[i++]
if (3==i) au lieu de (i==3)
#idfef COMMENT
allouer/désallouer
souvent accès mémoire interdit
F.A - Méthodologie - DEA - 25
Conclusion
La créativité...
réussir
une opération
complexe
construire un outil utile à
soi-même et aux autres
acquérir des nouvelles
connaissances
… n’exclue pas la méthode
Les 4 dimensions d’un projet
logiciel
les personnes
les méthodes
le produit
les technologies
maîtriser
ses objectifs et
ses ressources
être lié aux autres
contraint à la rigueur
F.A - Méthodologie - DEA - 26