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