Introduction au Génie logiciel 2024/2025 PDF

Document Details

Uploaded by Deleted User

Université Hassiba Benbouali – Chlef

2024

Tags

software engineering software development programming computer science

Summary

These are lecture notes on Introduction au Génie logiciel, from Université Hassiba BenBouali-Chlef, for a 3rd year computer science program. The notes cover topics such as software definitions, characteristics, the software crisis, and different development models (e.g., waterfall, spiral, agile).

Full Transcript

Université Hassiba BenBouali- Chlef Département Informatique Introduction au Génie logiciel N I V E A U : 3 ÈME A N N É E L I C E N C E S Y S T È M E S I N F O R M A T I Q U E S MODULE: GÉNIE LOGICIEL Année Universitaire: 20...

Université Hassiba BenBouali- Chlef Département Informatique Introduction au Génie logiciel N I V E A U : 3 ÈME A N N É E L I C E N C E S Y S T È M E S I N F O R M A T I Q U E S MODULE: GÉNIE LOGICIEL Année Universitaire: 2024/2025 Génie logiciel: Défintions  Ensemble des méthodes, des techniques et des outils dédiés à la conception, au développement et à la maintenance des systèmes informatiques de qualité avec maîtrise des coûts et délais.  Le génie logiciel est un domaine des sciences de l’ingénieur dont l’objet d’étude est la conception, la fabrication, et la maintenance des systèmes informatiques complexes. Logiciel: Définitions  Ensemble d'entités nécessaires au fonctionnement d'un processus de traitement automatique de l'information Programmes, données, documentation...  Ensemble de programmes qui permet à un système informatique d’assurer une tâche ou une fonction en particulier (exemple : logiciel de production, logiciel de comptabilité, logiciel de gestion des prêts).  Le logiciel est considéré comme une collection de code de programmation exécutable, des bibliothèques associées et de documentations. Logiciel : caractéristiques Utilisateurs :  grand public (traitement de texte) spécialistes (calcul météorologique) développeurs (compilateur) Autres logiciels : librairie, composant matériel : capteurs (système d'alarme), réseau physique (protocole) Crise de logiciel Le terme de « Génie logiciel » a été introduit à la fin des années soixante lors d’une conférence tenue pour discuter de ce que l’on appelait alors (la crise du logiciel « software crisis ») Le développement de logiciel était en crise. Il fallait de nouvelles techniques et de nouvelles méthodes pour contrôler la complexité inhérente aux grands systèmes logiciels. Crise de logiciel  La crise du logiciel était perçue à travers ces symptômes:  Le produit ne satisfaisait pas les besoins de l’utilisateur et il était à l’origine de pannes.  Les performances étaient très souvent insuffisantes.  Le non-respect des délais prévus pour le développement de logiciels ne satisfaisant pas leurs cahiers des charges Crise de logiciel  Les coûts de développement d’un logiciel étaient presque impossible à prévoir. La maintenance du logiciel était difficile, coûteuse et souvent à l’origine de nouvelles erreurs Crise de logiciel Quels facteurs contribuent à la crise du logiciel?  Mauvaise gestion de projet.  Manque de formation adéquate en génie logiciel.  Membres de projet moins qualifiés.  Faibles gains de productivité Génie logiciel: Enjeux e génie logiciel vise à rationaliser et à optimiser le processus de production d'un logiciel. es enjeux associés sont multiples: Adéquation aux besoins du client Respect des délais de réalisation prévus Maximisation des performances et de fiabilité Facilitation de la maintenance et des évolutions ultérieures Qualité d'un logiciel ritères de qualité Validité : réponse aux besoins des utilisateurs Facilité d'utilisation : prise en main et robustesse Performance : temps de réponse, débit... Fiabilité : tolérance aux pannes Sécurité : intégrité des données et protection des accès Maintenabilité : facilité à corriger ou transformer le logiciel Portabilité : changement d'environnement matériel ou logiciel Critères de qualité d'un logiciel Un logiciel bien fait est alors un logiciel: Correct(valide) Facile à utiliser Fiable(robuste) Maintenable Avec un code réutilisable Extensible Efficace Ponctuel Portable Critères de qualité d'un logiciel Importance de la qualité des logiciels Fiabilité, sûreté et sécurité des logiciels Transports automobile, ferroviaire, aéronautique Contrôle de processus industriels, nucléaire, armement Médical : imagerie, appareillage, télé-surveillance e-commerce, carte bancaire sans contact Processus de développement d'un logiciel Ensemble d'activités successives, organisées en vue de la production d'un ogiciel Activités du développement logiciel  Etude de faisabilité  Spécification  Conception  Programmation  Test  Livraison  Maintenance Pour chaque activité : Utilisation et production de documents Activités du développement logiciel Étude de faisabilité  Définition globale du problème  Evaluation des stratégies possibles pour le développement  Evaluation des ressources, coûts et délais Documents: rapport d'analyse Activités du développement logiciel Spécification  Établir une description claire de ce que doit faire le logiciel (fonctionnalités détaillées, exigences de qualité, interface…)  Clarifier le cahier des charges en listant les exigences fonctionnelles (opérations, etc) et non fonctionnelles (performance, portabilité,etc.) Documents: Manuel utilisateur préliminaire, et plan de test du système Activités du développement logiciel Conception 1. Conception architecturale: décomposition et organisation de l'application en composants plus simples (modules) définis par leurs interfaces (fonctions et services offerts). 2. Conception détaillée: pour chaque module, description de la manière dont les services et fonctions sont réalisés: algorithmes essentiels structures de données utilisées, etc. Documents: document de conception, plan de test d'intégration et plan de est par module. Activités du développement logiciel Programmation  Implantation de la solution conçue Choix de l'environnement de développement, du/des langage(s) de programmation, de normes de développement...  Traduction de la conception dans un langage de programmation Documents: Codes sources commentés, Manuel utilisateur final Activités du développement logiciel Test  Tests unitaires: test de chaque unité (module) de programme (méthode, classe, composant), indépendamment du reste du système.  Tests d'intégration: Composition progressive des modules Tests des regroupement de modules  Test du système: Test en vraie grandeur du système complet selon le plan de test global. Documents:rapport de vérification par test. Activités du développement logiciel Livraison ournir au client une solution logicielle qui fonctionne correctement  Installation : rendre le logiciel opérationnel sur le site du client.  Formation : enseigner aux utilisateurs à se servir du logiciel  Assistance : répondre aux questions des utilisateurs. Activités du développement logiciel Maintenance Correction : identifier et corriger des erreurs trouvées après la livraison Adaptation : adapter le logiciel aux changements dans l'environneme (format des données, environnement d'exécution...) Perfection : améliorer la performance, ajouter des fonctionnalités, amélio la maintenabilité du logiciel Modèles de développement d'un logiciel De nombreux modèles de développement entrant dans la réalisation d'un logiciel été définis. Ces modèles reprennent les activités fondamentales mais les anisent différemment.  En pratique :  Pas de modèle idéal  Choix du modèle en fonction des contraintes (taille des équipes, temps, qualité...) Modèles de développement d'un logiciel Modèle en Cascade: Considérer le développement logiciel comme une succession d’étapes réalisées d açon strictement séquentielle  Simple et facile à comprendre  Chaque activité est validée par un document.  Permet une conception de grande qualité Modèles de développement d'un logiciel Modèle en Cascade Modèles de développement d'un logiciel Limites du modèle en cascade:  Les vrais projets suivent rarement un développement séquentiel  Obligation de définir la totalité des besoins au départ  Établir tous les besoins au début d’un projet est difficile  Aucune validation intermédiaire (Aucune préparation des phases de vérification)  Augmentation des risques car validation tardive  Sensibilité à l’arrivée de nouvelles exigences : refaire toutes les étapes Modèles de développement d'un logiciel Modèle en V: Le cycle en V est un cycle de vie orienté test :  A chaque activité créative (spécification, conception et codage) correspond une activité de vérification (validation, intégration, tests unitaires).  Chaque phase en amont prépare la phase correspondante de vérification (la vérification est prise en compte au moment même de la création). Modèles de développement d'un logiciel Modèle en V Modèles de développement d'un logiciel Modèle en V:  La préparation des dernières phases par les premières (construction du logiciel), permet d’éviter d’énoncer une propriété qu’il est impossible de vérifie objectivement après la réalisation.  Limitations des risques en cascade par validation de chaque étape;  Adapté aux projets dont les besoins sont clairs. Modèles de développement d'un logiciel Limites du modèle en V:  Construit-on le bon logiciel ? Le logiciel est utilisé très (trop) tard (Il faut attendre longtemps pour savoir si on a construit le bon logiciel).  Idéal quand les besoins sont bien connus, quand l’analyse et la conception sont claires.  Manque de flexibilité (ne traite pas les évolutions, notamment des exigences) Modèles de développement d'un logiciel Développement par prototypage Développement rapide d'un prototype avec le client pour valider ses besoins Le prototypage permet de contourner la difficulté de la validation liée à l’imprécision des besoins et caractéristiques du système à développer. Écriture de la spécification à partir du prototype. Modèles de développement d'un logiciel Développement par prototypage Types de prototypes: Prototype jetable: maquette exploratoire développée pour mieux comprend les besoins du client, évaluer différentes solutions, etc. Développé rapidemen et jeté ensuite. Prototype évolutif (ou réutilisable): maquette destinée à êt complétée/optimisée dans les prochaines étapes du développement jusqu l’obtention du produit final. Modèles de développement d'un logiciel Développement par prototypage Les clients peuvent voir le produit partiel au début du cycle de vie. Cela garantit un plus grand niveau de satisfaction et de confort des clients. De nouvelles exigences peuvent être satisfaites car il y a de la place pour le raffinement. Les fonctionnalités manquantes peuvent être facilement identifiées. Les erreurs peuvent être détectées beaucoup plus tôt, ce qui permet d’économiser beaucoup d’efforts et de coûts, en plus d’améliorer la qualité du logiciel. Modèles de développement d'un logiciel Modèle incrémental iser le projet en incréments Un incrément = une sous partie fonctionnelle cohérente du produit final Chaque incrément ajoute de nouvelles fonctions Chaque développement est moins complexe ; Chaque incrément est testé comme un produit final. Les incréments sont définis a priori (classification des exigences – par le clien ossible) Modèles de développement d'un logiciel odèle incrémental es intégrations sont progressives. peut y avoir des livraisons et des mises en service après chaque intégratio ncrément haque version donne lieu a un cycle de vie complet. Modèles de développement d'un logiciel odèles incrémentaux Minimise le risque d'inadéquation aux besoins; ossibilité de livraisons et de mises en service après chaque incrément ; Difficile d’intégrer des fonctionnalités secondaires non pensées en amont. Modèles de développement d'un logiciel pproche orienté réutilisation sée sur une réutilisation systématique de composants existants pour concevoir u uveau système s étapes du processus: alyse des composants. écification des modifications. nception avec réutilisation. veloppement et intégration Modèles de développement d'un logiciel odèle en spirale (Boehm, 1988) e processus de développement est représenté par une ale plutôt qu’une séquence d’activités. haque boucle dans la spirale représente une étape du cessus de développement. Modèles de développement d'un logiciel odèle en spirale (Boehm, 1988) haque spire confirme et affine les spires précédentes menant des activités de même nature successivement es risques sont analysés et résolus tout au long du cessus. e nombre exact de boucles de la spirale est inconnu et t varier d’un projet à l’autre Modèles de développement d'un logiciel Modèle en spirale (Boehm, 1988) aque phase du modèle en spirale est divisée en atre quadrants: Définition des objectifs Un cycle de la spirale commence par l’élaboration d’objectifs. On énumère ensuite les différentes manières de parvenir à ces objectifs, ainsi que les contraintes. On évalue ensuite chaque alternative en fonction de l’objectif. Estimation et réduction des risques L’étape suivante consiste à évaluer les risques pour chaque activité, comme l’analyse détaillée, le prototypage, Modèles de développement d'un logiciel Modèle en spirale (Boehm, 1988) Développement et validation rès avoir évalué le risque, on choisit un modèle de développement pour le système. Par exemple, si ncipaux risques concernent l’interface utilisateur, le prototypage évolutif pourrait s’avérer un modèle eloppement approprié. Le modèle de la cascade peut être le plus approprié si le principal risque identi cerne l’intégration des sous-systèmes. Modèles de développement d'un logiciel Modèle en spirale (Boehm, 1988) Planification des cycles suivants: situation est ensuite réévaluée pour déterminer si un développement supplémentaire est nécessaire, quel cas il faudrait planifier la prochaine étape. (on estime au cours d‟une procédure de revue, si on t passer au prochain cycle de la spirale ou non). Modèles de développement d'un logiciel Modèle en spirale Attention centrée sur l’évaluation des risques RISQUE = ce qui met en péril processus et qualité.  La défaillance de personnel : embauche de haut niveau, formation mutuelle adéquation profil/fonction,...  Le calendrier et budgets irréalistes : estimation détaillée, réutilisation, élaga des besoins,...  Le développement de fonctions inappropriées : revues d’utilisateurs, manue d’utilisation précoce,...  Les exigences démesurées par rapport à la technologie : analyses techniques faisabilité Modèles de développement d'un logiciel Modèle en spirale Il n’est pas nécessaire d’adopter un seul modèle à chaque cycle de la spirale ou même pour l’ensemble d’un système. Le modèle de la spirale englobe tous les autres modèles. (Le prototypage peut ê utilisé dans une spirale pour résoudre le problème de la spécification des besoi puis il peut être suivi d’un développement basé sur le modèle conventionnel de cascade). On peut utiliser une approche basée sur la réutilisation pour l’interfa utilisateur. Modèles de développement d'un logiciel Modèle en spirale Le modèle du cycle de vie en spiral est un modèle itératif (répété), où la planification de la version se fait selon une analyse de risques. L’idée est de s’attaquer aux risques les plus importants assez tôt, afin que ceux-ci diminuent rapidement. Modèles de développement d'un logiciel Modèle en spirale  Rectification au plus tôt des erreurs détectées lors des phases précédentes  Possibilité que des boucles se forment et que le projet prenne plus de temps mauvais choix sont faits; Modèles de développement d'un logiciel Modèle en spirale Il est recommandé d’utiliser le modèle en spirale dans les grands projets complexes. Le modèle en spirale est beaucoup plus complexe que les autres modèles. Il ne convient pas aux petits projets car il est cher. La réussite du projet dépend beaucoup de l’analyse des risques. Sans experts très expérimentés, ce sera un échec de développer un projet utilisant ce modèle. Comme le nombre de phases est inconnu au début du projet, l’estimation du temps est donc difficile. Modèles de développement d'un logiciel Méthodes Agiles Une méthode Agile est une approche itérative et collaborative, capable de prendre en compte les besoins initiaux du client et ceux liés aux évolutions. L'apparition des méthodes agiles est liée au fait que le client est souvent dans l'incapacité de définir ses besoins de manière exhaustive dès le début du projet. Le terme « agile » fait ainsi référence à la capacité d'adaptation aux modifications de spécifications intervenant pendant le processus de développement. Ces méthodes privilégient la livraison de fonctionnalités utiles au client à la production de documentation intermédiaire sans intérêt pour le client. Modèles de développement d'un logiciel Les objectifs des méthodes agiles  L’amélioration de la satisfaction du client  La capacité à s’adapter et à accepter le changement  La coopération au sein des équipes de développement  La création efficace de logiciels opérationnels  La simplification du processus de développement  Une sortie plus rapide des produits et des mises à jour

Use Quizgecko on...
Browser
Browser