Processus d Informatisation
Cheminement de la naissance d un projet jusqu à son terme, deux grandes étapes : Recherche ou étude de faisabilité (en amont) L utilisateur a une idée (plus ou moins) floue de ses besoins Il ne sait pas comment y répondre Développement plus concret (en aval) Il est possible de définir clairement le besoin auquel l application répond
http://www.youtube.com/watch?gl=it&hl=it&v=j-zczjxsxnw
Un simple break manquant dans un programme C a conduit à la perte d une ligne téléphonique longue distance aux Etats-Unis Le coût : environ $100,000,000 Besoin pour l utilisation de méthodes formelles
Le problème principal est la complexité UNIX contient 4 millions de lignes de code WINDOWS 2000 : 10 18 lignes de code Les méthodes d informatisation tendent à gérer cette complexité
Le développement d applications est un problème difficile Cas facile : 1 développeur, 1 utilisateur Cas difficile : nombreux développeurs, nombreux utilisateurs Les techniques d une personne ne peuvent s adapter à un grand nombre de personnes
Coût relatif de correction d une erreur selon la phase au cours de laquelle elle a été détectée : Analyse 1 Conception 2 Réalisation 5 Tests 10 Exploitation et Maintenance >= 100 Moralité : mieux vaut détecter les erreurs le plus tôt possible
3 1 28% Etude - Standish Group 280 000 projets 1. Succès 49% 2. Annulés 2 23% 3. Retard, surpassement de budget, incomplets
Planification peu considérée En particulier, gestion des risques inadaptée Plus l entreprise est grande, et plus les risques deviennent importants
Satisfaire les besoins des utilisateurs Haute fiabilité Réduire les coûts de maintenance Respecter les délais Réduire les coûts de production Améliorer la performance Réutilisabilité
Les utilisateurs trouvent difficile d exprimer ce qu ils veulent Les développeurs trouvent difficile de comprendre ce que les utilisateurs disent
Maintenance 65% du coût total Corrective: corriger les bugs Adaptative: faire évoluer l application lorsque son environnement change Evolutive: améliorer, développer de nouvelles fonctionnalités Préventive: prévenir de futurs problèmes de maintenance
On peut prouver qu un bug existe, mais on ne peut pas prouver qu il existe pas Les bugs sont coûteux en Les bugs sont coûteux en terme de: Vies humaines Argent Temps Relations avec les clients
La relation personne-mois VS temps de développement n est pas linéaire Ajouter des personne-mois à un projet n a habituellement pas d effet Parfois, le projet peut même être ralenti Il est difficile de prévoir quand un projet sera complet et la quantité d effort qu il nécessitera
US Software production 1985: 70 milliards $ US Software production 2000: 700 milliards $ US Software production 2015:???
Le but du développement d application est de développer des applications de qualité. Le terme «qualité» est vague. L application doit correspondre aux besoins de l utilisateur. Plus précisément, il existe différents «critères de qualité».
Exactitude Aptitude d un logiciel à fournir des résultats voulus dans les conditions normales d utilisation. Le plus important des critères de qualité. C est la Le plus important des critères de qualité. C est la base de l informatique : on souhaite développer des logiciels qui répondent aux besoin de l utilisateur.
Robustesse Aptitude à bien réagir lorsque l on s écarte des conditions normales d utilisation. Exemple : IP (Internet Protocol). Le succès d Internet est dû à la robustesse du protocole de communication utilisé.
Extensibilité Facilité avec laquelle un programme pourra être adapté pour faire face à une évolution des besoins de l utilisateur.
Réutilisabilité Possibilité d utiliser certaines parties du logiciel pour développer un autre logiciel répondant à d autres besoins. Cette notion est souvent reliée à l orienté objet où une classe générale sera facilement réutilisable.
Portabilité Facilité avec laquelle on peut exploiter un logiciel dans différentes implémentations. Exemple : Windows7 ou Linux.
Efficience Temps d exécution, taille mémoire
Ces critères sont des objectifs, qu un utilisateur va éventuellement spécifier dans l expression de ses besoins. Une méthode de développement permet de faciliter la satisfaction de ces critères.
Qu est-ce qu un cycle de vie? Enchaînement des activités de développement Définition des Pré et Post conditions pour chaque phase Procédures de gestion et d encadrement Procédures de mesures Méthodologie associée
Code and Fix : une solution satisfaisante?
Après de multiples changements, le code est mal construit et difficile à maintenir. Phase de conception nécessaire Les besoins d utilisateurs ne sont pas remplis. Phase d analyse nécessaire Faible préparation pour les tests et les modifications.
Distributeurs de tickets de bus, qui ne prennent que des billets (dollars) Un capteur scanne les billets, un processus de reconnaissance d image en juge l authenticité Si tout billet est accepté, l entreprise perd de l argent Si des billets valides sont rejetés, les clients sont mécontents Temps de réponse voulu < 1sec Précision voulue de 98% pour la reconnaissance d images Ces deux contraintes sont contradictoires. Pourquoi?
1. Une première version est implémentée 2. Des tests montrent que la contrainte de temps-réel n est pas satisfaite. La raison est l utilisation du type double au lieu de float. Le développeur change le code. 3. Avant de terminer le travail du point 2, des tests montrent que malgré ces changements, la contrainte de temps-réel n est toujours pas satisfaite. L algorithme de reconnaissance d image est en cause. 4. L entreprise souhaite désormais une précision de 99,9% pour lancer son produit. 5. Désormais, les capteurs sont devenus obsolètes.
requirements Requirements 3 analysis Analysis 3 design Design 3 Design 4 implement Implement 2 Implement 3 Implement 4
Le développement se fait suivant un cycle appelé le cycle de vie du logiciel. Le cycle de vie est décomposé en phases : Analyse : opportunité fonctionnelle et faisabilité Analyse : opportunité fonctionnelle et faisabilité technique Conception : choix tactiques de réalisation et d architecture Codage : réalisation informatique du détail des opérations Test : tests unitaires et d intégration
Analyse des besoins : Consultation complète des clients pour comprendre ce qui est voulu Définition des besoins : exprimer les besoins des utilisateurs de manière à ce qu ils soient compréhensibles par les utilisateurs et par les développeurs Spécification des besoins : documents formels (parfois considérés comme un contrat)
Proposition de solution au problème spécifié dans l analyse Organisation de l application en modules (architecture du logiciel), Description détaillée des modules avec les algorithmes essentiels (modèle logique) Structuration des données
Unités de conception transformées en code Traduction dans un langage de programmation Les unités individuelles sont alors testées pour certifier qu elles satisfont leur spécification.
Les unités individuelles sont intégrées progressivement Testées pour la compatibilité et la fonctionnalité Le système est déployé Maintenance du système
Les deux grandes catégories de cycles de vie : Les cycles linéaires : succession d étapes ordonnées Les cycles de vie itératifs : réalisation incrémentale Les cycles de vie itératifs : réalisation incrémentale par évolutions
Cycles en cascade
Cycles en V
Problèmes? Problème de l effet tunnel où l on ne voit tourner quelque chose qu à la fin. Détection d erreurs tardive Les projets présentent bien souvent une part d inconnu et donc de risques Méconnaissance des besoins par le client Incompréhension des besoins par le fournisseur Instabilité des besoins Choix technologiques Mouvements de personnels Le processus de développement d un logiciel n est pas naturellement linéaire..
Evaluation d éléments concrets au cours du développement : élimination de l effet tunnel basé sur l évolution de prototypes exécutables, mesurables diminution de l importance des documents de spécification détaillée livraisons intermédiaires résultats concrets réguliers de l équipe de développement meilleure anticipation et prise en compte des problèmes meilleure gestion de la prise en compte de modifications de spécification qui peuvent être intégrées dans une itération future intégration progressive de composants
En général, dans les cycles de développement itératifs, chaque itération reproduit le cycle en cascade à une plus petite échelle.
Cycle en spirale A chaque spire, il y a itération complète sur les phases : Analyse Conception Codage Tests
A chaque itération, le logiciel doit être dans un état quasi commercialisable Grand intérêt en prototypage incrémental La première spire doit comprendre les éléments les plus abstraits et le cœur fonctionnel minimum du système
La plupart des systèmes commerciaux sont maintenant en réseau Les applications doivent intégrer d autres applications développées par d autres entreprises : Du matériel différent Des logiciels différents
Evolution du matériel : le matériel évolue plus vite que le logiciel Certains programmes sont obsolètes, mais sont toujours utilisés pour des applications commerciales Des modifications peuvent corrompre la «logique» d un logiciel Les développeurs originels ne sont plus accessibles