Summary

Ce document présente un cours sur le génie logiciel, avec un plan détaillé des chapitres 1 à 6. Il aborde les notions de base du génie logiciel, y compris la définition, les objectifs, et les buts du génie logiciel, ainsi que des concepts tels que le cycle de vie du logiciel et les méthodes agiles. L'auteur couvre les sujets liés aux critères de qualité et à la crise du logiciel.

Full Transcript

COURS DE GÉNIE LOGICIEL: 1 BOUASSIDA NADIA Plan du cours  Chapitre1: Le génie logiciel:  Le Génie Logiciel  Crise de logiciel  Définition du Génie Logiciel  Qualités du logiciel...

COURS DE GÉNIE LOGICIEL: 1 BOUASSIDA NADIA Plan du cours  Chapitre1: Le génie logiciel:  Le Génie Logiciel  Crise de logiciel  Définition du Génie Logiciel  Qualités du logiciel  Chapitre2: Les fondements de l’Ingénierie des Besoins  Chapitre 3: Le cahier de charge  Chapitre 4: Cycle de vie du logiciel: Méthodes agiles  Chapitre 5: Processus unifié  Chapitre 6: Scrum Chapitre 1: rappel sur le génie logiciel  Définitions  Les critéres de qualité: extensibilité, modularité, réutilisabilité…  Cycle de vie du logiciel INTRODUCTION au génie logiciel Logiciel  un ensemble de programmes et de documents nécessaires à leur installation, utilisation, développement et maintenance Génie logiciel un ensemble des méthodes de techniques et d'outils pour la production de logiciel de qualité avec maîtrise des coûts et délais. 4 DÉFINITION DU TERME LOGICIEL (SOFTWARE):  Le logiciel est l'ensemble des programmes, procédés et règles, et éventuellement de la documentation, relatifs au fonctionnement d'un ensemble de traitement de l'information. Définition du terme Génie Logiciel (Software Engineering):  Le Génie Logiciel (GL) est l'ensemble des activités de conception et de mise en oeuvre des produits et procédures tendant à rationaliser la production du logiciel et son suivi.  L'art de spécifier, de concevoir, de réaliser, et de faire évoluer, avec des moyens et dans des délais raisonnables, des programmes, des documentations et des procédures de qualité en vue d'utiliser un ordinateur pour résoudre certains problèmes. 5  Le génie logiciel vise à garantir que : 1 la spécification répond aux besoins réels de ses clients ; 2 le logiciel respecte sa spécification ; 3 les coûts alloués pour sa réalisation sont respectés ; 4 les délais de réalisation sont respectés. 6  Le génie logiciel est un domaine en pleine évolution qui offre  une grande palette d’outils et de méthodes pour parvenir à construire du logiciel de qualité.  Aucune de ses méthodes ne s’est imposée à ce jour : il faut donc prendre du recul sur les concepts et les conseils qu’elles préconisent et utiliser son bon sens pour les adapter à chaque situation. 7 Objectifs du génie logiciel Le GL se préoccupe des procédés de fabrication des logiciels de façon à s’assurer que les critères nécessaires soient satisfaits  Produire des logiciels adaptés aux besoins des utilisateurs.  Réduire le coût de la production et de la maintenance des logiciels en développant des composants réutilisables.  Augmenter la performance, la portabilité, et la fiabilité des logiciels.  Augmenter la durée de vie des logiciels.  Produire des logiciels efficaces dans un délai raisonnable. Les buts du génie logiciel La qualité du logiciel est une notion multiforme qui recouvre:  la validité :  aptitude d'un logiciel à réaliser exactement les tâches définies par sa spécification,  la fiabilité :  aptitude d'un logiciel à assurer de manière continue le service attendu (Précision, Intégrité ,Tests réussis pour tous les cas,Uniformité de conduite)  la robustesse :  aptitude d'un logiciel à fonctionner même dans des conditions anormales,  l’extensibilité :  facilité d'adaptation d'un logiciel aux changements de spécification, Les buts du génie logiciel  la réutilisabilité :  aptitude d'un logiciel à être réutilisé en tout ou partie,  la compatibilité :  aptitude des logiciels à pouvoir être combinés les uns aux autres,  l’efficacité :  aptitude d'un logiciel à bien utiliser les ressources matérielles telles la mémoire, la puissance de l’U.C., etc.=> Économie de mémoire et Rapidité d'exécution  la portabilité :  facilité à être porté sur de nouveaux environnements matériels et/ou logiciels,  Utilisation d'un langage standardisé  Indépendance du matériel  Indépendance du système d'exploitation Les buts du génie logiciel – la traçabilité : capacité à identifier et/ou suivre un élément du cahier des charges lié à un composant d'un logiciel, – la vérifiabilité : facilité de préparation des procédures de recette et de certification, – l’intégrité, sécurité: aptitude d'un logiciel à protéger ses différents composants contre des accès ou des modifications non autorisés, – la facilité d'utilisation, d’entretien, etc. · Les coûts restent dans les limites prévues au départ. · Les délais restent dans les limites prévues au départ. Règle du CQFD : Coût Qualité Fonctionnalités Délai. Les buts du génie logiciel  Maintenabilité: elle peut être réalisé grâce à:  Facilité de vérification  Autodocumentation  Vérifications formelles possibles  Structuration  Clarté.  Structuration  Concision  Lisibilité  Facilité d'adaptation  Structuration  Facilité d'extension  Documentation technique Les buts du génie logiciel  Eviter les bogues pour avoir un logiciel de qualité  Les bogues surviennent quand le logiciel ne correspond pas au besoin.  Un bogue est un non-respect de la spécification du système, c’est-à-dire de la définition de ses fonctionnalités, de ce que le système est censé faire. Un programme bogué est un programme dont la mise en œuvre ne vérifie pas la spécification. Historique:La crise de Logiciel  On maîtrise mal le développement des logiciels  "90% des projets informatiques sortent en retard" (Aberdeen)  Un nombre important de projets informatiques n'aboutissent pas aux logiciels répondant aux besoins des utilisateurs en respectant les contraintes de budget et de délai...  De nombreux projets informatiques n'ont jamais abouti :  Système de réservation de places de United Airlines  30% des projets informatiques sont annulés avant la mise en production" (Aberdeen) ou n'ont pas réalisé les fonctionnalités attendues :  "50% des projets informatiques ne répondent pas au cahier des charges" (Gartner) ou ont été des catastrophes économiques :  exemple: en 1999 le système d'information de la Bibliothèque Nationale de France avait pris 22 mois de retard, le budget initial (280MF) était dépassé de 40% "50% des projets informatiques dépassent le budget prévu" (Gartner) La crise de Logiciel  Les coûts du logiciel sont très élevés  Le coût de développement d'un logiciel peut être estimé, très globalement, à 100 € par instruction.  A ce coût, il faut ajouter pour chaque instruction un cout énorme pour la maintenance !  Parce que corriger une erreur coûte plus cher quand il faut revenir de plusieurs phases du développement en arrière, Le coût de correction d'une erreur est à chaque phase multiplié par 10, il faut donc détecter les erreurs au plus tôt.  Donc,  il faut se doter d'une méthode de développement, phasée, et la respecter,  la fin de chaque phase doit être évaluée, il doit rester des documents. La solution  Il faut s'imposer des processus formels de développement  Avoir une bonne spécification  peut être en langue naturelle, informelle  exemple: «le logiciel convertit les euros en dollars et réciproquement »  Avoir un processus d'assurance qualité,  Ecrivez ce que vous faites - Faites ce qui est écrit - Prouvez que vous le faites  Documenter toutes les phases : documents de spécification, documents de conception, documents de codage, etc.  Existence de points de contrôle. La solution  la méthode utilisée doit être structurée, phasée,  obtenir des produits finis en fin de phase : inspection et validation après chaque phase du développement  être automatisée,  être adaptable,  avec un processus formel de tests  utiliser une technologie à jour (objets, Java, AGL, services web, etc.)  Tester le plus Tester, tester, tester  Tests de boîte noire Le test porte sur le fonctionnement externe du système. La façon dont le système réalise les traitements n'entre pas dans le test.  Tests de boîte blanche Le test vérifie les détails d'implémentation, c'est à dire le comportement interne du logiciel..  Tests de conformité Le test vérifie la conformité du logiciel par rapport à ses spécifications et sa conception.  Tests de non conformité Le test vérifie que les "cas non prévus" ne perturbent pas le fonctionnement du sytème.  Tests beta Réalisés par des développeurs ou des utilisateurs sélectionnés, ils vérifient que le logiciel se comporte pour l'utilisateur final comme prévu par le cahier des charges. Tester, tester, tester  Tests alpha Le logiciel n'est pas encore entièrement fonctionnel, les testeurs alpha vérifient la pré-version.  Tests unitaires Chaque module du logiciel est testé séparément, par rapport à ses spécifications, aux erreurs de logique.  Tests fonctionnels L'ensemble des fonctionnalités prévues est testé : fiabilité, performance, sécurité…,  Tests d'intégration Les modules validés par les test unitaires sont rassemblés. Le test d'intégration vérifie que l'intégration des modules n'a pas altéré leur comportement.  Tests d'intégration système L'application doit fonctionner dans son environnement de production, avec les autres applications présentes sur la plateforme et avec le système d'exploitation.  Tests de recette Les utilisateurs finaux vérifient sur site que le système répond de manière parfaitement correcte.  Tests de non régression Après chaque modification, correction ou adaptation du logiciel, il faut vérifier que le comportement des fonctionnalités n'a pas été perturbé,. Activités communes aux projets de génie logiciel  Gestion du projet  Définition et spécification des exigences  Analyse du problème  Conception  Modélisation  Programmation  Déploiement  distribution et installation du logiciel  Assurance de qualité a travers le test Activités communes aux projets... Gestion du projet Gestion du projet  diviser le projet en différentes activités  décider ce qui est inclus en chaque activité  décider sur la séquence d'activités  choisir un modèle/processus de développement  développement itératif  développement incrémental  développement par prototypage Activités communes aux projets... Gestion du projet  Développement itératif  Exécutez les activités (exigences, conception, implémentation) dans une série d'itérations  Développement incrémental  Faites des implémentations partielles du système au lieu de développer le système entier en un seul pas  Quand le développement partiel semble acceptable, ajoutez plus de fonctionnalité, augmentez l'efficacité,...  Prototypage  Commencez par développer un petit prototype  Un modèle exécutable d'un système logiciel, qui souligne des aspects spécifiques  Degré élevé de participation d'utilisateur  Représentation concrète des exigences ITÉRATIF ET INCRÉMENTAL Incrémental 1 2 3 23 Itératif 1 2 1 itératif et incrémental 24 L’itératif combiné à l’incrémental Activités communes aux projets... Définition et spécification de exigences  Définition et spécification des exigences (requirements definition and specification)  Ce qui inclut  Analyse de domaine  Définition du problème  Cueillette des exigences (requirements gathering)  Analyse des exigences  Spécification formelle des exigences Conception  Décider comment la technologie disponible sera utilisée pour répondre aux besoins  Ce qui inclut:  Déterminer ce qui sera réalisé par le logiciel (software) et par le matériel (hardware)  Mettre au point l’architecture du système, la définition des sous-systèmes et de leurs interactions  Élaborer les éléments internes de chaque sous- système  Concevoir des interfaces usagers et des bases de données Modélisation  Créer des représentations du logiciel et de son domaine d’application  Modélisation de son utilisation (use case modelling)  la séquence des actions accompli par les utilisateurs du logiciel  Modélisation de sa structure (structural modelling)  les classes et objets présent dans le domaine ou dans le logiciel  Modélisation de sa dynamique et de son comportement (dynamic and behavioural modelling)  l'état du système, les activités possibles, l'interaction des composants

Use Quizgecko on...
Browser
Browser