Cours 1 : Introduction au GL PDF

Summary

This document is a lecture on the introduction to software engineering (GL). It covers the objectives, prerequisites, and a brief overview of software and information systems. The date 24/10/2023 is prominently displayed.

Full Transcript

24/10/2023 Module 12 : Génie logiciel et Java avancée Ali EL MEZOUARY – [email protected] Génie logiciel...

24/10/2023 Module 12 : Génie logiciel et Java avancée Ali EL MEZOUARY – [email protected] Génie logiciel Introduction au génie logiciel Cours 1 : Introduction au GL Objectifs du cours − Présenter un rappel sur le domaine de logiciel − Concrétiser l’impact de la qualité du logiciel − Comprendre la valeur ajoutée du domaine génie logiciel − Etre capable de définir les principes, les activités et les techniques du génie logiciel Cours Génie Logiciel Copyright @ A. EL mezouary 2 1 24/10/2023 Les prés-requis de ce cours − Système d’informations − Système informatique − Programmation orientée objet Cours Génie Logiciel Copyright @ A. EL mezouary 3 Cours 1 : Introduction au GL Section 1 : Logiciel Section 2 : Crise de logiciel Section 4 : Cours Génie Logiciel Copyright @ A. EL mezouary Section 3 : Génie Développement de logiciel logiciel 4 2 24/10/2023 Cours 1 : Introduction au GL Section 1 : Logiciel Cours Génie Logiciel Copyright @ A. EL mezouary 5 Cours 1 : Introduction au GL Section 1 : Logiciel Rappel − Système d’informations Est un ensemble organisé des ressource humains et matériels ayant pour but la collection, le stockage, le transport, le traitement, la diffusion, la présentation et la destruction de l’information au sein d’une organisation − Système informatique Est l’ensemble des éléments matériels et logiciels destinés au traitement automatique de l’information. Cours Génie Logiciel Copyright @ A. EL mezouary 6 3 24/10/2023 Cours 1 : Introduction au GL Section 1 : Logiciel Rappel − Un logiciel Est un système d’information automatisé − Un logiciel est un produit qui couvre un ensemble organisé de : Programmes Procédés Documentation Services Cours Génie Logiciel Copyright @ A. EL mezouary 7 Cours 1 : Introduction au GL Section 1 : Logiciel Rappel Système d’information Système informatique Système d’information Cours Génie Logiciel Copyright @ A. EL mezouary automatisé (logiciel) 8 4 24/10/2023 Cours 1 : Introduction au GL Section 1 : Logiciel Particularités du logiciel − Produit invisible et immatériel − Difficile de mesurer la qualité − Mises à jour et maintenance dues à l'évolution rapide de la technologie Cours Génie Logiciel Copyright @ A. EL mezouary 9 Cours 1 : Introduction au GL Section 1 : Logiciel Comparaison avec le matériel − Le « hardware » a besoin du « Software » pour être piloté − Le « Software » a besoin du « Hardware » pour être exécuté − L’évolution des capacités des logiciels est intimement liée à l’évolution du hardware et aussi d’autre facteurs : Amélioration de la puissance du processeur Amélioration des capacité de stockages Changement des dispositifs d’entrée ou de sortie (écran tactile, stylo optique, etc. ) Cours Génie Logiciel Copyright @ A. EL mezouary Augmentation de la mobilités des unités mobiles (Smartphones, tablettes, notebooks, etc.) 10 5 24/10/2023 Cours 1 : Introduction au GL Section 1 : Logiciel Classification de Logiciels − Plusieurs classifications Cours Génie Logiciel Copyright @ A. EL mezouary − La classification NAPCS est l’une des classifications la plus célèbre 11 Cours 1 : Introduction au GL Section 1 : Logiciel Critères de qualité du logiciel − 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 Cours Génie Logiciel Copyright @ A. EL mezouary 12 6 24/10/2023 Cours 1 : Introduction au GL Section 1 : Logiciel Impacts positifs du logiciel − Le logiciel améliore le quotidien de plusieurs manières : Le logiciel résout des problèmes complexes rapidement Le logiciel accélère les traitements Capacité de calculs, de stockage et des traitements incroyables Le logiciel a introduit de nouveaux loisir − Exemples des services logiciels Paiement électronique, achat sur internet, recherche d’information, gestion de stocke, inscription en ligne, formation à Cours Génie Logiciel Copyright @ A. EL mezouary distance, etc. Logiciels métiers : ERP, , bibliothèque en ligne,… 13 Cours 1 : Introduction au GL Section 1 : Logiciel Impacts négatifs d’un logiciel de mauvaise qualité − Erreurs dans des logiciels peuvent causés des dégâts : − Le bug du sonde Mariner-1 en 1962 : une fusée spatiale pour mission de survol de venus, a dérouté de sa trajectoire après 5 min de son lancement → Cause : Une formule mathématique qui a été mal transcrite en code source → Coût : 18,5 millions de dollars Cours Génie Logiciel Copyright @ A. EL mezouary 14 7 24/10/2023 Cours 1 : Introduction au GL Section 1 : Logiciel Raisons principales des bugs − Erreurs humaines − Taille et complexité des logiciels − Taille des équipes de conception/développement − Manque de méthodes de conception − Négligence de la phase d'analyse des besoins du client − Négligence et manque de méthodes et d'outils des phases de validation/vérification Cours Génie Logiciel Copyright @ A. EL mezouary 15 Cours 1 : Introduction au GL Section 2 : Développement de logiciels Cours Génie Logiciel Copyright @ A. EL mezouary 16 8 24/10/2023 Section 2 : Le développement Cours 1 : Introduction au GL de logiciels Fait sur le développement − Le développement de logiciels n’est pas une opération facile − Le développement est un ensemble d’activités − La programmation (le codage) ne représente qu’une activité du développement. − Il n’y a pas une seule façon de développer un logiciel donnée mais plusieurs − il y’a une différence entre développer et « développer bien » − Les projets de développement sont souvent longs et coûteux Cours Génie Logiciel Copyright @ A. EL mezouary (80% des coûts sont pour la maintenance) − Les projets de développement font souvent intervenir plusieurs personnes de compétences différentes 17 Section 2 : Développement de Cours 1 : Introduction au GL logiciels Développement d’un logiciel − Le développement d’un logiciel est la transformation d’une idée ou d’un besoin en un logiciel fonctionnel Idée ou besoin Développement Exploitation − L’idée est produite par un client et développée par un Cours Génie Logiciel Copyright @ A. EL mezouary fournisseur − Le client et le fournisseur peuvent être la même entité 18 9 24/10/2023 Section 2 : Le développement Cours 1 : Introduction au GL de logiciels Un bon logiciel du point de vue d’un client Peu couteux Respect de Fait ce qu’on Un bon critères de lui demande qualité logiciel de faire Cours Génie Logiciel Copyright @ A. EL mezouary Livré dans les délais 19 Section 2 : Le développement Cours 1 : Introduction au GL de logiciels Un bon logiciel du point de vue d’un fournisseur Minimise les coût Respecte les Minimise les exigences de délais qualité Un bon logiciel Cours Génie Logiciel Copyright @ A. EL mezouary Maximise les profits Fait ce qu’on attend de lui 20 10 24/10/2023 Section 2 : Le développement Cours 1 : Introduction au GL de logiciels Que faut-il pour le développement ? L’équipe n’est pas uniquement constitue de programmeurs mais d’autre acteurs : chefs du projets, Une équipe testeurs, … La communication est essentielle dans un projet de développement La Un projet de Un procédé communication développement Cours Génie Logiciel Copyright @ A. EL mezouary Il existe un ensemble d’outils Des outils relatifs au développement : compilateurs, environnement de tests, éditeurs, … 21 Section 2 : Le développement Cours 1 : Introduction au GL de logiciels Difficultés de développements Plusieurs difficultés caractérise le développement de logiciels : − Difficile de gérer les projets et les personnes − Les clients arrivent difficilement à décrire leurs besoins de façon assez claire à leurs fournisseurs − Différence de langages entre les personnes techniques et non techniques − Les besoins sont en constantes évolutions ainsi que Cours Génie Logiciel Copyright @ A. EL mezouary l’environnement − Difficulté de découvrir les erreurs avant la livraison du logiciel 22 11 24/10/2023 Section 2 : Le développement Cours 1 : Introduction au GL de logiciels Echec de projets de développement − En 1980, Étude du Department of Defense des États-Unis sur les logiciels produits dans le cadre de 9 gros projets militaires Cours Génie Logiciel Copyright @ A. EL mezouary 23 Section 2 : Le développement Cours 1 : Introduction au GL de logiciels Critère de réussite de projet Cours Génie Logiciel Copyright @ A. EL mezouary 24 12 24/10/2023 Cours 1 : Introduction au GL Section 3 : La crise de logiciel Cours Génie Logiciel Copyright @ A. EL mezouary 25 Cours 1 : Introduction au GL Section 3 : Crise de logiciel Apparition de la crise de logiciel 1/3 1946 73 ans 2020 Création du premier ordinateur entièrement électronique ENIAC Cours Génie Logiciel Copyright @ A. EL mezouary Il pesait 30 tonnes et occupait une surface de 72 m2 26 13 24/10/2023 Cours 1 : Introduction au GL Section 3 : Crise de logiciel Apparition de la crise de logiciel 2/3 1946 22 ans 1968 − De 1946 à 1968 Il était très difficile de réaliser des logiciels satisfaisant les cahiers de charges dans les délais prévus Il n’y avait aucune approche méthodique de développement des logiciels Le développement des logiciels consistait à programmer et à corriger les bogues Cours Génie Logiciel Copyright @ A. EL mezouary Les logiciels devenaient de plus en plus complexes et moins en moins fiables 27 Section 3 : Crise de logiciel Cours 1 : Introduction au GL Apparition de la crise de logiciel 3/3 1946 1965 1968 La crise du logiciel − Fin des années 60 : un décalage entre les progrès matériels d'une part et logiciels d'autre part : Les ordinateurs de plus en plus puissants et de moins en moins coûteux, Cours Génie Logiciel Copyright @ A. EL mezouary la construction de logiciels restait dans le domaine de l'artisanat et du folklore. 28 14 24/10/2023 Section 3 : Crise de logiciel Quelques aspects de la crise de Logiciel 1/2 − La construction de logiciels coutait très cher Difficulté de maîtrise des coûts (200 millions de dollars pour fabriquer OS-360) Dans la majorité des projet, il a été constaté un dépassement moyen de budget de 70%, − Les délais n'étaient pas respectés Difficulté de maîtrise les délais de réalisation (2 ans de retard pour les premiers compilateurs PL/1, Algol 68, ADA) Cours Génie Logiciel Copyright @ A. EL mezouary Un dépassement moyen de délai : 50%. 29 Section 3 : Crise de logiciel Quelques aspects de la crise de Logiciel 2/2 − Les logiciels n'étaient pas évolutifs ce qui les rendait très rapidement obsolètes Maintenance trop chère car trop difficile Cout de la maintenance entre : 40% à 70% − Une fiabilité aléatoire : La construction des logiciels qui ne satisfont pas les besoins des clients − Une convivialité discutable (des interfaces homme/machine inexistantes). Cours Génie Logiciel Copyright @ A. EL mezouary − Des temps de réponse trop lents 30 15 24/10/2023 Cours 1 : Introduction au GL Section 4 : Génie Logiciel Apparition de Génie Logiciel − Pour sortir de la crise, en 1968 au sein de la conférence l’OTAN à Garmish, Allemagne, un groupe de chercheurs et des praticiens crée le Génie Logiciel (Software engineering) Qu'attend-on d'un logiciel ? Quels sont les critères de qualité pour un logiciel ? → Comment développer des logiciels de qualité ? Cours Génie Logiciel Copyright @ A. EL mezouary 31 Cours 1 : Introduction au GL Section 4 : Génie Logiciel Apparition de Génie Logiciel − Il s’agit de donner un cadre rigoureux pour : Guider le développement du logiciel, de sa conception à sa livraison. Contrôler les coûts, évaluer les risques et respecter les délais. Établir des critères d’évaluation de la qualité d’un logiciel. − Idée : Appliquer les méthodes classiques d'ingénierie au domaine du logiciel Cours Génie Logiciel Copyright @ A. EL mezouary 32 16 24/10/2023 Cours 1 : Introduction au GL Section 4 : Génie Logiciel Génie Logiciel : définition − Le génie logiciel est un domaine vaste des sciences de l’ingénieur qui couvre de nombreuses et diverses activités touchant aux technologies du logiciel, dont l’objet d’étude est la conception, la fabrication, et la maintenance des systèmes informatiques complexes. − Le génie logiciel est l'art de produire de bons logiciels au meilleur rapport qualité/prix − Il utilise pour cela des principes d'ingénierie Cours Génie Logiciel Copyright @ A. EL mezouary Ensemble des méthodes, des techniques et des outils dédiés à la conception, au développement et à la maintenance des systèmes informatiques 33 Section 4 : Génie Logiciel Composants de Génie Logiciel méthodes Procédés outils Génie Logiciel Cours Génie Logiciel Copyright @ A. EL mezouary Techniques 34 17 24/10/2023 Cours 1 : Introduction au GL Section 4 : Génie Logiciel Principes de Génie Logiciel Les grands principes génie logiciel : − La rigueur. − L’abstraction. − La décomposition des problèmes en sous-problèmes indépendants. − La modularité. − Séparation des préoccupations Cours Génie Logiciel Copyright @ A. EL mezouary − L’anticipation des évolutions. − La généricité. − La construction incrémentale. − La documentation 35 Cours 1 : Introduction au GL Section 4 : Génie Logiciel Principes de Génie Logiciel − La rigueur Les activités logicielles doivent être réalisées rigoureusement → Suivi de processus adaptés → Utilisation correcte des techniques adaptées → Fourniture des livrables prévus (documents, modèles, code) → Validation de toutes les livraisons → Attitude professionnelle au sein d’une équipe, etc. Deux remarques Cours Génie Logiciel Copyright @ A. EL mezouary → La rigueur ne tue pas la créativité → Rigueur n’est pas égal à formel (=précision) 36 18 24/10/2023 Cours 1 : Introduction au GL Section 4 : Génie Logiciel Principes de Génie Logiciel − L’abstraction Extraire des concepts généraux sur lesquels raisonner, puis instancier les solutions sur les cas particuliers − La modularité Partition du logiciel en modules interagissant, remplissant une fonction et ayant une interface cachant l'implantation aux autres modules Chaque module traite une partie du problème Cours Génie Logiciel Copyright @ A. EL mezouary Ils sont compréhensibles, homogènes, indépendants Les modules sont reliés entre eux 37 Cours 1 : Introduction au GL Section 4 : Génie Logiciel Principes de Génie Logiciel − Séparation des préoccupations Se concentrer sur un seul aspect du problème à la fois et le traiter de façon indépendante Exemples : → Séparation des rôles des différents acteurs → Séparation des phases de développement Cours Génie Logiciel Copyright @ A. EL mezouary 38 19 24/10/2023 Cours 1 : Introduction au GL Section 4 : Génie Logiciel Principes de Génie Logiciel Identification et définition de rôles différents acteurs au sein de développement d’un logiciel → Exemple : Chaque acteur a une préoccupation différente Cours Génie Logiciel Copyright @ A. EL mezouary 39 Cours 1 : Introduction au GL Section 4 : Génie Logiciel Principes de Génie Logiciel Identification et définition d’activités différentes lors d’un développement logiciel (séparation temporelle) Chaque activité a une focalisation spécifique Conception Gestion des architecture exigences Intégration et test Cours Génie Logiciel Copyright @ A. EL mezouary Conception détaillée Codage et tests unitaires 40 20 24/10/2023 Cours 1 : Introduction au GL Section 4 : Génie Logiciel Principes de Génie Logiciel − La décomposition en sous problèmes Simplifier les problèmes pour aborder leur complexité progressivement. (diviser pour régner) Traiter chaque aspect séparément, chaque sous-problème plus simple que problème global pour n’en traiter qu’un seul à la fois. Cours Génie Logiciel Copyright @ A. EL mezouary 41 Cours 1 : Introduction au GL Section 4 : Génie Logiciel Principes de Génie Logiciel − la construction incrémentale construction pas à pas, intégration progressive Un développement logiciel a plus de chances d’aboutir si il suit une cheminement incrémental Exemple : Laquelle de ses deux méthodes de programmation est la plus efficace ? Pourquoi ? → Écrire l’ensemble du code source d’un programme et compiler. → Écrire le code source d’une fonction, le compiler et passer à la Cours Génie Logiciel Copyright @ A. EL mezouary suivante. 42 21 24/10/2023 Cours 1 : Introduction au GL Section 4 : Génie Logiciel Principes de Génie Logiciel − Généricité Proposer des solutions plus générales au problème pour pouvoir les réutiliser et les adapter à d'autres cas − Anticipation des évolutions : Liée à la généricité et à la modularité, prévoir les ajouts/modifications possibles de fonctionnalités − Documentation : Essentielle pour le suivi de projet et la communication au sein de l'équipe de projet Cours Génie Logiciel Copyright @ A. EL mezouary − Standardisation/normalisation : Aide à la communication pour le développement, la maintenance et la réutilisation 43 Cours 1 : Introduction au GL Section 4 : Génie Logiciel Qualité du logiciel − Pour produire de bons logiciels, il est nécessaire de fixer des critères de qualité d'un logiciel − Le Génie Logiciel doit prendre en compte les spécificités du logiciel pour atteindre un ensemble de cratères de qualités Cours Génie Logiciel Copyright @ A. EL mezouary 44 22 24/10/2023 Cours 1 : Introduction au GL Section 4 : Génie Logiciel Qualités du logiciel Utilité − Adéquation entre Le besoin effectif de l'utilisateur Les fonctions offertes par le logiciel − Solutions : Tenir compte de la phase d'analyse des besoins Améliorer la communication (langage commun, démarche Cours Génie Logiciel Copyright @ A. EL mezouary participative) Travailler avec rigueur 45 Cours 1 : Introduction au GL Section 4 : Génie Logiciel Qualités du logiciel Utilisabilité − Facilité d'apprentissage : comprendre ce que l'on peut faire avec le logiciel, et savoir comment le faire − Facilité d'utilisation : importance de l'effort nécessaire pour utiliser le logiciel à des fins données − Solutions : Analyse du mode opératoire des utilisateurs Cours Génie Logiciel Copyright @ A. EL mezouary Adapter l'ergonomie des logiciels aux utilisateurs 46 23 24/10/2023 Cours 1 : Introduction au GL Section 4 : Génie Logiciel Qualités du logiciel Fiabilité − Correction, justesse, conformité : le logiciel est conforme à ses spécifications, les résultats sont ceux attendus − Robustesse, sureté : le logiciel fonctionne raisonnablement en toutes circonstances, rien de catastrophique ne peut survenir, même en dehors des conditions d'utilisation prévues − Solutions : Cours Génie Logiciel Copyright @ A. EL mezouary Utiliser des méthodes formelles, des langages et des méthodes de programmation de haut niveau Vérifications, tests 47 Cours 1 : Introduction au GL Section 4 : Génie Logiciel Qualités du logiciel Interopérabilité − Un logiciel doit pouvoir interagir en synergie avec d'autres Logiciels − Solutions : Bases de données (découplage données/traitements) utilisation des API (Application Program Interface) bien définie Standardisation des formats de fichiers (XML...) et des protocoles Cours Génie Logiciel Copyright @ A. EL mezouary de communication (CORBA...) Les ERP (Entreprise Resources Planning) 48 24 24/10/2023 Cours 1 : Introduction au GL Section 4 : Génie Logiciel Qualités du logiciel Portabilité − Un même logiciel doit pouvoir fonctionner sur différentes plates forme − Solutions : Rendre le logiciel indépendant de son environnement d’exécution (voir interopérabilité) Machines virtuelles Cours Génie Logiciel Copyright @ A. EL mezouary 49 Cours 1 : Introduction au GL Section 4 : Génie Logiciel Qualités du logiciel Réutilisabilité − On peut espérer des gains considérables car dans la plupart des logiciels : 80 % du code on le retrouve a peu prés partout 20 % du code est spécifique − Solutions : Abstraction, généricité (ex : MCD générique de réservation) Cours Génie Logiciel Copyright @ A. EL mezouary Construire un logiciel à partir de composants prêts à l'emploi 50 25 24/10/2023 Cours 1 : Introduction au GL Section 4 : Génie Logiciel Qualités du logiciel Maintenabilité − Facilité de maintenance − Pourtant, la maintenance absorbe une très grosse partie des efforts de développement (80% des efforts) − Deux types de maintenance Maintenance corrective Maintenance adaptative Cours Génie Logiciel Copyright @ A. EL mezouary Maintenance évolutive : perfective d’extension 51 Cours 1 : Introduction au GL Section 4 : Génie Logiciel Qualités du logiciel Maintenance corrective − Corriger les erreurs : défauts d'utilité, d'utilisabilité,... Identifier la défaillance, le fonctionnement Localiser la partie du code responsable Corriger et estimer l'impact d'une modification − Attention La plupart des corrections introduisent de nouvelles erreurs Cours Génie Logiciel Copyright @ A. EL mezouary Les coûts de correction augmentent exponentiellement avec le délai de détection − La maintenance corrective donne lieu à de nouvelles livraisons 52 26 24/10/2023 Cours 1 : Introduction au GL Section 4 : Génie Logiciel Qualités du logiciel Maintenance adaptative − Ajuster le logiciel pour qu'il continue à remplir son rôle compte tenu du l‘évolution des Environnements d‘exécution Fonctions à satisfaire Conditions d'utilisation − Ex : changement de SGBD, de machine, de taux de TVA, etc. Cours Génie Logiciel Copyright @ A. EL mezouary 53 Cours 1 : Introduction au GL Section 4 : Génie Logiciel Qualités du logiciel Maintenance perfective d’extension − Accroitre/améliorer les possibilités du logiciel − Ex : les services offerts, l'interface utilisateur, les performances... − Donne lieu à de nouvelles versions Cours Génie Logiciel Copyright @ A. EL mezouary 54 27 24/10/2023 Cours 1 : Introduction au GL Section 4 : Génie Logiciel Qualités du logiciel − Ces qualités ne sont pas toujours compatibles ni réalisables − Les objectifs de qualité doivent être définis pour chaque logiciel − La qualité du logiciel doit être contrôlée par rapport à ces objectifs Cours Génie Logiciel Copyright @ A. EL mezouary 55 Cours 1 : Introduction au GL Section 4 : Génie Logiciel Synthèse − Le GL repose sur un ensemble de principes mis en ouvre par des méthodes, des techniques et des outils Les principes deviennent pratique grâce à des méthodes et à des techniques Les méthodes et les techniques utilisés dans le cadre d'une méthodologie Méthodologie appuyée par des outils Cours Génie Logiciel Copyright @ A. EL mezouary 56 28 24/10/2023 Cours 1 : Introduction au GL Section 4 : Génie Logiciel Synthèse Rational Rose UML Objet Cours Génie Logiciel Copyright @ A. EL mezouary Encapsulation, Masquage, … 57 29

Use Quizgecko on...
Browser
Browser