26
F.A - Méthodologie - DEA - 1 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 Sensibilisation aux projets logiciels Les projets logiciels + la réalité en chiffres + les cycles de vie + les problèmes +

Embed Size (px)

Citation preview

Page 1: F.A - Méthodologie - DEA - 1 Sensibilisation aux projets logiciels Les projets logiciels + la réalité en chiffres + les cycles de vie + les problèmes +

F.A - Méthodologie - DEA - 1

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

Page 2: F.A - Méthodologie - DEA - 1 Sensibilisation aux projets logiciels Les projets logiciels + la réalité en chiffres + les cycles de vie + les problèmes +

F.A - Méthodologie - DEA - 2

La réalité...

Taux d’échec50% des projets n’aboutissent jamais25% n’apportent aucune valeur ajoutée aux

utilisateurs

Retard2/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.

Page 3: F.A - Méthodologie - DEA - 1 Sensibilisation aux projets logiciels Les projets logiciels + la réalité en chiffres + les cycles de vie + les problèmes +

F.A - Méthodologie - DEA - 3

... en chiffres

Défauts la cause la plus fréquente de dépassement de

planningà l’origine de 50% des abandons de projets

Incompréhension65% des projets ont des mésententes avec le

client10% sont annulés suite à des attentes irréalistes

Efficacité40% des erreurs sont générées par le stress65% du temps à des activités contre-productrices

Page 4: F.A - Méthodologie - DEA - 1 Sensibilisation aux projets logiciels Les projets logiciels + la réalité en chiffres + les cycles de vie + les problèmes +

F.A - Méthodologie - DEA - 4

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...

Page 5: F.A - Méthodologie - DEA - 1 Sensibilisation aux projets logiciels Les projets logiciels + la réalité en chiffres + les cycles de vie + les problèmes +

F.A - Méthodologie - DEA - 5

Projet logiciel

logiciel projet logiciel projet méthode de développement structure systématique

       produit logiciel code documentation associée

        qualité logicielle

Page 6: F.A - Méthodologie - DEA - 1 Sensibilisation aux projets logiciels Les projets logiciels + la réalité en chiffres + les cycles de vie + les problèmes +

F.A - Méthodologie - DEA - 6

Triangle des Bermudes

Le niveau de qualité est un compromis

Coût

Délai

Performance

Page 7: F.A - Méthodologie - DEA - 1 Sensibilisation aux projets logiciels Les projets logiciels + la réalité en chiffres + les cycles de vie + les problèmes +

F.A - Méthodologie - DEA - 7

Le cycle de vie

Période entre l’idée du logiciel et sa mise en service

Phases de développementSpécification des besoinsConception préliminaireConception détailléeCodage : 15% du travailTests unitairesTests d’IntégrationValidation

Entouré par spécification et maintenance

Page 8: F.A - Méthodologie - DEA - 1 Sensibilisation aux projets logiciels Les projets logiciels + la réalité en chiffres + les cycles de vie + les problèmes +

F.A - Méthodologie - DEA - 8

Cycle en V

Expression des besoins

Expression des besoins

SpécificationsSpécifications

Conception généraleConception générale

Réalisation (codage)Réalisation (codage)

Tests d’intégrationTests d’intégration

Validation (recette)Validation (recette)

MaintenanceMaintenance

Conception détaillée

Conception détaillée

Tests unitairesTests unitaires

Page 9: F.A - Méthodologie - DEA - 1 Sensibilisation aux projets logiciels Les projets logiciels + la réalité en chiffres + les cycles de vie + les problèmes +

F.A - Méthodologie - DEA - 9

Cycle en V, caricature ;-)

Cahier des chargesCahier des charges

ÉtudesÉtudes

DéveloppementDéveloppement

TestsTests

ProductionProduction

Mise en œuvreMise en œuvre

MaintenanceMaintenance

Euphorie

Inquiétude

Panique Recherche des coupables

Punition des innocents

Promotion des autres

Page 10: F.A - Méthodologie - DEA - 1 Sensibilisation aux projets logiciels Les projets logiciels + la réalité en chiffres + les cycles de vie + les problèmes +

F.A - Méthodologie - DEA - 10

Différents cycles

Programmer-corriger Cascade simple Cascade modifiée

avec chevauchement avec sous-projets avec réduction des risques

Spirale

Les phases de spécification, conception, tests sont présentes

Le cycle dépend du projet

Prototypage évolutif Livraison par étape Livraison évolutive Conception selon

planning Conception selon outils Logiciel standard

Page 11: F.A - Méthodologie - DEA - 1 Sensibilisation aux projets logiciels Les projets logiciels + la réalité en chiffres + les cycles de vie + les problèmes +

F.A - Méthodologie - DEA - 11

Modèle en spirale

Page 12: F.A - Méthodologie - DEA - 1 Sensibilisation aux projets logiciels Les projets logiciels + la réalité en chiffres + les cycles de vie + les problèmes +

F.A - Méthodologie - DEA - 12

Comparaison des cycles

Capacité du cycle Programmer-corriger

Cascade Spirale Prototypageévolutif

Spécifications mal comprises - 1 - 1 +1 +1

Architecture mal comprise - 1 - 1 +1 - 1/0

Fiabilité (taux de défauts) - 1 +1 +1   0

Capacité d’extension en taille - 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

Page 13: F.A - Méthodologie - DEA - 1 Sensibilisation aux projets logiciels Les projets logiciels + la réalité en chiffres + les cycles de vie + les problèmes +

F.A - Méthodologie - DEA - 13

Pathologies des développeurs

pervers

médiocre

bûcheur

planificateur

optimal

1) coder tout de suite 2) jeter logiciel et aller en 1

peu de temps sur conception logiciel fini à 90%, 90% du

temps

planning + conception pas le temps pour les tests

planning + planning pas le temps pour coder

un juste équilibre en tout !

Page 14: F.A - Méthodologie - DEA - 1 Sensibilisation aux projets logiciels Les projets logiciels + la réalité en chiffres + les cycles de vie + les problèmes +

F.A - Méthodologie - DEA - 14

Les algorithmes

Complets Non-ambigus Déterministes Finis Généraux Bien structurés Efficaces

Page 15: F.A - Méthodologie - DEA - 1 Sensibilisation aux projets logiciels Les projets logiciels + la réalité en chiffres + les cycles de vie + les problèmes +

F.A - Méthodologie - DEA - 15

Niveau (approximatif) de langage

Assembleur 1   

C 2.5

Fortran 77 3   

Pascal 3.5

Ada 83 4.5

C++ 6.5

Visual Basic 3 10   

Perl 15   

Tableur Excel ~50   

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

Page 16: F.A - Méthodologie - DEA - 1 Sensibilisation aux projets logiciels Les projets logiciels + la réalité en chiffres + les cycles de vie + les problèmes +

F.A - Méthodologie - DEA - 16

Les tests

Les mauvaises excuses pas le temps pas les moyens

techniques pas l’argent

Coût relatif des erreurs suivant la phase

Correction erreur Coût

Étude préalable 1Étude détaillée 3Étude technique 10Réalisation 20Mise en oeuvre 50Maintenance 100

Page 17: F.A - Méthodologie - DEA - 1 Sensibilisation aux projets logiciels Les projets logiciels + la réalité en chiffres + les cycles de vie + les problèmes +

F.A - Méthodologie - DEA - 17

Quels tests ?

unitaires  (fonctions)

d’intégration (modules)

systèmes (logiciel)

validation (logiciel)

 conception détaillée   conception globale   spécification   cahier des charges

Tests statiques respect architecture respect structure variables commentaires

Tests dynamiques unitaires enchaînement performance stress

Page 18: F.A - Méthodologie - DEA - 1 Sensibilisation aux projets logiciels Les projets logiciels + la réalité en chiffres + les cycles de vie + les problèmes +

F.A - Méthodologie - DEA - 18

Gestion de code

Versionensemble de modules + compilés + linkésgelés en configuration

Domaine public: RCS ou SCCSgestion des versions travail collectifsauvegarde

Page 19: F.A - Méthodologie - DEA - 1 Sensibilisation aux projets logiciels Les projets logiciels + la réalité en chiffres + les cycles de vie + les problèmes +

F.A - Méthodologie - DEA - 19

La documentation

Au minimumdéfinition des besoinsspécification logicielledescription des interfacessources tests (procédures+résultats)manuel utilisateur

La règle ne doit pas se substituer à l’intelligence

volume documentation volume du projet

Page 20: F.A - Méthodologie - DEA - 1 Sensibilisation aux projets logiciels Les projets logiciels + la réalité en chiffres + les cycles de vie + les problèmes +

F.A - Méthodologie - DEA - 20

Critères de qualité

Aptitude à être utilisée en l’étatsûretéefficacitécommodité

Aptitude à être transférée Aptitude à être maintenue

testéecomprisemodifiée

Page 21: F.A - Méthodologie - DEA - 1 Sensibilisation aux projets logiciels Les projets logiciels + la réalité en chiffres + les cycles de vie + les problèmes +

F.A - Méthodologie - DEA - 21

II) Recettes

Réutiliser des composants logicielsdocumentésre-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!

Page 22: F.A - Méthodologie - DEA - 1 Sensibilisation aux projets logiciels Les projets logiciels + la réalité en chiffres + les cycles de vie + les problèmes +

F.A - Méthodologie - DEA - 22

Modularité

Top-down

Makefileentrée ... (programmes, fichiers) ... Sortie

Gestion des modules avec RCS

Impressions

Sécurité

Page 23: F.A - Méthodologie - DEA - 1 Sensibilisation aux projets logiciels Les projets logiciels + la réalité en chiffres + les cycles de vie + les problèmes +

F.A - Méthodologie - DEA - 23

Écriture

HeaderCC.IDENTIFICATION $Id: main.c,v 1.10 1996/08/30 15:18:53 Durand Exp$C.TYPE programC.LANGUAGE FORTRANC.AUTHOR C. DurandC.ENVIRONMENT UnixC.KEYWORDS magnitude, reddeningC.PURPOSE Calcul du derougissement et de la magnitude absolueC.COMMENT 1.0 19-Feb-1992:C

Utiliser la même tramegérant l ’option -h avec une fonction usage()passage d ’argument sur la ligne de commande

Nombre de lignes fonction:quelques dizainesmodule: quelques centaines

Page 24: F.A - Méthodologie - DEA - 1 Sensibilisation aux projets logiciels Les projets logiciels + la réalité en chiffres + les cycles de vie + les problèmes +

F.A - Méthodologie - DEA - 24

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)

Page 25: F.A - Méthodologie - DEA - 1 Sensibilisation aux projets logiciels Les projets logiciels + la réalité en chiffres + les cycles de vie + les problèmes +

F.A - Méthodologie - DEA - 25

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

Page 26: F.A - Méthodologie - DEA - 1 Sensibilisation aux projets logiciels Les projets logiciels + la réalité en chiffres + les cycles de vie + les problèmes +

F.A - Méthodologie - DEA - 26

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 maîtriser ses objectifs et

ses ressources être lié aux autres contraint à la rigueur

Les 4 dimensions d’un projet logiciel

les personnes les méthodes le produit les technologies