Summary

This document contains course material on software engineering (IGL). Topics discussed include an introduction to software engineering, software project management, and software quality assessment. The course is taught by M Dasse Lelighaa Gontran, as part of the ING Informatique program, academic year 2023-2024.

Full Transcript

PROGRAMME Chapitre I : Introduction au génie logiciel Chapitre II : Gestion des projets logiciels Chapitre III : Notion de qualité logicielle Chapitre IV : Les principaux tests logiciel Cours dispensé par M DASSE LELIGHAA Gontran – ING INFORMATIQUE OPTION GÉNIE LOGICIEL...

PROGRAMME Chapitre I : Introduction au génie logiciel Chapitre II : Gestion des projets logiciels Chapitre III : Notion de qualité logicielle Chapitre IV : Les principaux tests logiciel Cours dispensé par M DASSE LELIGHAA Gontran – ING INFORMATIQUE OPTION GÉNIE LOGICIEL Année Académique 2023-2024 CHAPITRE I : Introduction au Génie Logiciel Un Logiciel est un ensemble bien documenté (à tous les niveaux) de programmes informatiques conçu pour satisfaire les besoins de ses utilisateurs ou Ensemble des programmes et des procédures nécessaires au fonctionnement d'un système informatique. Le Génie Logiciel définit alors l’ensemble des méthodes et des techniques pouvant faciliter la conception, la réalisation des logiciels complexes et de bonne qualité, il rassemble les règles de l’art de l’ingénierie des systèmes logiciels. Cette discipline vise la formalisation et la proposition des approches méthodologiques pour la construction des logiciels. Cette discipline est très importante pour la mise en œuvre des systèmes complexes, où des objectifs antagonistes doivent souvent être pris en compte. Le Génie Logiciel est né en Europe dans les années 70. Il a été défini par un groupe de scientifiques pour répondre à un problème qui devenait de plus en plus évident : le logiciel n’est pas fiable et il est difficile de réaliser dans des délais de temps prévus. Petite historique : 1968 : naissance du Genie Logiciel à la conférence de l'OTAN à GarmischPartenkirchen (Allemagne) 1973 : première conférence sur le Genie Logiciel 1975 : première revue sur le GL (IEEE Transaction of Software Engineering) 1980 : début des AGL Le Génie Logiciel est à rapprocher du Génie civil, Génie mécanique ou Génie chimique. La réalisation d'un pont ne peut être menée sans méthodologie, de même la réalisation d'un logiciel nécessite un minimum de précautions qui garantissent un certain nombre de propriétés. Le terme génie logiciel a été choisi pour exprimer le fait que le développement d’un logiciel doit se fonder sur des bases théoriques et sur un ensemble de méthodes et outils validés par la pratique ; Le génie logiciel considère ainsi le logiciel comme un objet complexe. La production du logiciel implique de ce fait des environnements de développement avec toute la variété d'outils et d'approches dont on peut disposer, les méthodes et les techniques de gestion de processus, mais aussi les aspects humains au sein de l'équipe de développement et les relations que celle-ci entretient avec les commanditaires et les utilisateurs du produit. Historiquement, l’intérêt du génie logiciel s’est accru suite à la crise du logiciel. Cours dispensé par M DASSE LELIGHAA Gontran – ING INFORMATIQUE OPTION GÉNIE LOGICIEL Année Académique 2023-2024 I. La crise du logicielle Elle nait dans les années 1970 aux Etats Unis, et est perçue à travers les symptômes suivants : a. Les coûts de développement logiciel sont pratiquement imprévisibles et extrêmement élevés. b. Les logiciels produits ne remplissent souvent pas les besoins des utilisateurs et comportent de nombreuses erreurs ; d’autre part, les clients manquent de métriques permettant de mesurer la qualité du logiciel. c. La maintenance logicielle est difficile et coûteuse du fait de la faiblesse de la documentation. Ces problèmes suscitent des risques humains et économiques comme l’illustrent les exemples célèbres suivants : TAURUS, un projet d'informatisation de la bourse londonienne : définitivement abandonné après 4 années de travail et 100 millions de £ (livres sterling) de pertes. L’avion C17 (1993) de McDonnell Douglas livré avec un dépassement de 500 millions de $... (19 calculateurs hétérogènes et 6 langages de programmation différents). Au Cameroun, les employés de l’état ont eu un retard sur le payement de leur salaire à cause d’une panne du logiciel traitant les salaires au CENADI. En 1999, les étudiants de la faculté des arts, lettres en sciences humaines de l’université de Yaoundé I entrent en grève à cause d’une erreur de calcul des moyennes sur les modules. Remarque : Une erreur, petite soit-elle peut être dangereuse par exemple pour la commande en temps réel de l’avion, … D'après le cabinet de conseil en technologies de l'information Standish Group International, les pannes causées par des problèmes de logiciel ont coûté en 2000 aux entreprises du monde entier environ 175 milliards de dollars, soit deux fois plus qu’en 1998 (Le Monde 23/10/01). II. Le logiciel Le logiciel est aujourd'hui présent partout, sa taille et sa complexité augmentent de façon exponentielle, les exigences en besoins et en qualité sont de plus en plus sévères. L'objectif du génie logiciel est de développer dans les délais des logiciels de qualité ; il se préoccupe des procédés de fabrication de logiciels de façon à s’assurer que le produit qui est fabriqué : Cours dispensé par M DASSE LELIGHAA Gontran – ING INFORMATIQUE OPTION GÉNIE LOGICIEL Année Académique 2023-2024 Réponde aux besoins des utilisateurs : Fonctionnalités Reste dans les limites financières prévues au départ : Coût Corresponde au contrat de service initial : Qualité (la notion de qualité de logiciel est multiforme) Reste dans les limites de temps prévues au départ : Délai Règle du CQFD1 : Coût Qualité Fonctionnalités Délai. L'utilisation d’une méthodologique pour produire un logiciel s'est montrée incontournable par la crise de l'industrie du logiciel (crise du logiciel). L’une des difficultés majeures dans l’élaboration des processus de développement des logiciels tient à la nature du logiciel. L’organisation internationale de normalisation (ISO) définit le logiciel comme une création intellectuelle rassemblant des programmes, des procédures, des règles et la documentation utilisée pour faire fonctionner un système informatique. Cours dispensé par M DASSE LELIGHAA Gontran – ING INFORMATIQUE OPTION GÉNIE LOGICIEL Année Académique 2023-2024 CHAPITRE II : GESTION DE PROJETS LOGICIELS La gestion de projet, ou management de projet, est l’ensemble des activités visant à organiser le bon déroulement d’un projet et en atteindre les objectifs. Un projet est un ensemble d’activités rassemblant des ressources humaines et matérielles permettant de créer un bien, un produit ou un service dans des limites de temps bien déterminées. Introduction Le métier de chef de projet est très enrichissant, mais aussi très complexe, car il est amené à évoluer dans différents environnements qui sont en constante évolution. Il doit donc être multi-compétent, c'est-à-dire maitriser les techniques de gestion de projet, de management d’équipe, avoir un bon relationnel lors des échanges avec le client, et enfin comprendre les spécificités du projet. L’objectif du chef de projet est de pouvoir mener son projet à terme en respectant les délais et le budget alloué. Pour atteindre cet objectif, il doit prendre en compte les contraintes qui constituent le projet (les 3 C) : Contenu Coût Calendrier Le chef de projet doit avoir recours à plusieurs méthodes : Cours dispensé par M DASSE LELIGHAA Gontran – ING INFORMATIQUE OPTION GÉNIE LOGICIEL Année Académique 2023-2024 I. Les méthodes dites classiques Depuis toujours, les projets sont gérés avec la méthode dite classique, représentée par le schéma ci-après. SCHEMA On parle alors d’une approche prédictive ou de cycle en cascade. Comme son nom l’indique, il s’agit de prévoir les phases séquentielles où il faut valider l’étape précédente pour passer à la suivante. Le chef de projet doit alors s’engager sur un planning précis de réalisation du projet en prévoyant des retards sur la réalisation des tâches. Avec la méthode dite classique, il faut tout bien faire du premier coup, car elle ne permet pas de retour en arrière. Une décision où un problème rencontré dans une phase peut remettre en cause partiellement ou totalement les phases précédentes validées. Dans un cycle en cascade, les risques sont détectés tardivement, puisqu’il faut attendre la fin du développement pour effectuer la phase de test ; plus le projet avance, plus l’impact des risques augmente. Il sera toujours plus difficile et coûteux de revenir en arrière lorsqu’on découvre une anomalie tardivement. Afin d’anticiper au mieux ces risques, il est nécessaire de produire des documents très détaillés en amont (recueil des besoins, cahier de charges) qui seront validés par le client, qui validera le contenu papier (conception, maquette, développement des fonctionnalités…) ; mais le client sera toujours plus sensible à ce qu’il verra sur l’écran. Au final, du point de vue du client, c’est le chef de projet qui aurait dû anticiper ces problèmes, alors qu’il est impossible de tout prévoir à l’avance, surtout dans un environnement instable qui évolue constamment. Comment peut-on augmenter la satisfaction du client ? En facilitant la gestion de projet et en améliorant la qualité de développement ? Comment mieux s’adapter aux imprévus du projet ? II. Les méthodes agiles Cours dispensé par M DASSE LELIGHAA Gontran – ING INFORMATIQUE OPTION GÉNIE LOGICIEL Année Académique 2023-2024 Les méthodes dites agiles vont nous permettre de répondre à toutes ces questions. Le mouvement des méthodes agiles a commencé aux Etats Unis, où nous avons eu 17 experts en développement logiciel qui ce sont réunis afin de mettre au point cette méthode suite à un taux d’échec important de projets observé dans les années 1990. Si l’approche agile est nouvelle pour vous, il est important de partir sur de bonnes bases, c'est-à-dire le terme méthode est trop réducteur pour parler de cette façon de concevoir, développer et livrer un logiciel. Il s’agit de bien plus qu’une méthode ; on parle de paradigme agile, de philosophie agile, de mouvement agile ou d’approche agile. On parle cependant de méthodes agiles pour définir les méthodes qui relèvent de ce courant. Définition : Les méthodes agiles sont des méthodologies essentiellement dédiées à la gestion de projets informatiques. Elles reposent sur des cycles de développement itératifs et adaptatifs en fonction des besoins évolutifs du client. Elles permettent notamment d’impliquer l’ensemble des collaborateurs, ainsi que le client, dans le développement du projet. A. Les valeurs communes des méthodes agiles Les méthodes agiles se reconnaissent toutes dans les valeurs suivantes : L’équipe et la communication avant les outils et les processus : dans la vision agile, l’équipe est très importante. Il est préférable d’avoir une équipe soudée et dont les membres communiquent entre eux, plutôt qu’une équipe d’experts qui travaillent de manière isolée. L’application avant la documentation : il est primordial que le projet fonctionne, c’est la priorité avant toute chose. Une documentation précise est utile comme moyen de communication, mais il est aussi important de simplement commenter abondamment le code. La collaboration avant la négociation : le client doit être impliqué dans le développement. Il doit collaborer avec l’équipe et fournir des comptes rendus réguliers sur l’adaptation du logiciel à ses attentes. L’acceptation du changement et la flexibilité avant la planification : la planification initiale et la structure du projet doivent être flexibles afin de permettre les évolutions Cours dispensé par M DASSE LELIGHAA Gontran – ING INFORMATIQUE OPTION GÉNIE LOGICIEL Année Académique 2023-2024 attendues par le client. En effet, les premières livraisons de projet donnent très souvent suite à des demandes d’évolution. 1. Design Thinking a) Définition Le Design Thinking est une méthodologie innovante qui permet de transformer les idées et les projets en actions réelles et en prototypes tangibles. C’est un modèle de management moderne parfaitement adapté au traitement des problématiques complexes à l’issue incertaine et caractérisées par des prises de décision qui impliquent les hommes et engagent l’entreprise. b) Origine du Design Thinking Le design thinking naît dans les années 50, aux Etats-Unis, lorsque le publicitaire américain Alex Osborn met au point la technique du « brainstorming ». L’idée est de réunir son équipe et stimuler sa créativité en lui faisant brasser différentes idées afin de résoudre un problème en trouvant des solutions. Puis, dans les années 70, l’ouvrage Experiences in Visual Thinking est publié par Robert H. McKim. Celui-ci-développe les différents préceptes du Design Thinking. Des préceptes qui seront largement développés les années qui suivent par Peter Rowe qui publie un ouvrage intitulé « Design Thinking » en 1987. Dans les années 2000, de plus en plus de publication sont faites sur le design thinking. Des colloques sont également tenus sur le sujet et des cours sont donnés aux étudiants pour leur apprendre les bases de cette méthode d’innovation. En 2012, trois écoles de design thinking voient le jour, à Paris, Pékin et Tokyo. c) Principes du Design Thinking Le design thinking a pour but de répondre à un besoin, qu’il soit ou non explicite. Il est donc important de se fier à certaines méthodes anthropologiques telles que l’observation, l’immersion ou la co-construction avec les utilisateurs : ALLIER LES MULTIPLES COMPÉTENCES DE L’ENTREPRISE DANS UN BUT COMMUN : L’objectif est de faire travailler de concert des professionnels domaines différents. En combinant toutes ces compétences, le but est de pouvoir identifier une problématique et d’évaluer l’environnement dans lequel elle évolue, de trouver l’innovation, la solution qui permettra de résoudre cette problématique, et Cours dispensé par M DASSE LELIGHAA Gontran – ING INFORMATIQUE OPTION GÉNIE LOGICIEL Année Académique 2023-2024 pour finir, de concevoir la forme qui incarnera au mieux le concept. C’est un véritable projet collaboratif dans l’organisation qui va favoriser le travail d’équipe et améliorer le management de projet. DONNER VIE À UN PROJET QUI A DU SENS EN UN TEMPS RECORD : L’idée est d’aboutir de manière efficace et rapide à l’achèvement d’un produit ou d’un service. Comme dans la manière de travailler des designers, le design thinking s’appuie sur le prototypage des idées. Chaque idée doit prendre une forme pour être mieux visualisée, être testée et améliorée. En outre, le design thinking permet de travailler dans une logique de cocréation, en dialogue constant avec des personnes n’ayant pas les mêmes expertises, les mêmes habitudes de travail ni les mêmes manières de travailler. Cela favorise l’intelligence collective et permet d’avancer ensemble, de façon très concrète. d) Etapes du Design Thinking LA DÉFINITION : Cette première étape du Design Thinking réalisée en amont, va rythmer l’ensemble du processus de création. En effet, à ce stade un « challenge » précis à résoudre est défini. Les éléments à prendre en compte et ceux à totalement écarter de la solution finale sont énoncés. Enfin, les livrables de la solution sont identifiés. Ces livrables pourront prendre la forme d’un site internet de type « landing page » ou page d’acquisition client, si le challenge porte sur le lancement d’un nouveau service en ligne. Ils pourront également prendre la forme d’écrans d’application mobile afin d’imaginer le parcours utilisateur. LA RECHERCHE : Cette partie va permettre d’identifier les différents problèmes rencontrés par l’utilisateur tout au long de son parcours client. Le procédé se fait en entonnoir, il est donc nécessaire d’ouvrir au maximum les champs des problématiques pour ensuite affiner ses choix au moment de l’idéation. C’est une phase d’exploration. L’IDÉATION : Ensuite, chacun propose des idées, sans aucune barrière. L’objectif est de trouver des solutions pour répondre aux besoins des clients. Cette phase d’idéation, effectuée seul puis en groupe, est alimentée par un moment d’inspiration où chaque participant va s’informer des innovations du secteur. LE PROTOTYPAGE : Vient ensuite l’étape du « prototypage » durant laquelle des ébauches de produit ou service commencent à être élaborés. L’étape de « prototypage » dans le design thinking est une phase clé car elle permet aux membres du groupe de “faire” et de se lancer dans l’expérimentation. LA SÉLECTION : Puis, vient l’étape de la « sélection ». En général, une première présélection va se faire en prenant compte des contraintes de temps, de budget ou encore de faisabilité technique. S’ensuit alors une session de pitch par petit groupe ou de manière individuelle. Les différents participants vont alors discuter, laisser de côté leurs divergences et délibérer sur le choix de l’idée la plus novatrice, réalisable et rentable pour le projet. IMPLÉMENTATION : La « mise en place » ou « implémentation » consiste ensuite à rédiger un plan d’action, donner des responsabilités et définir les ressources étant nécessaires à la mise en place du projet. Cette phase est primordiale pour le suivi du Cours dispensé par M DASSE LELIGHAA Gontran – ING INFORMATIQUE OPTION GÉNIE LOGICIEL Année Académique 2023-2024 projet. Chaque service travaille conjointement afin de définir ensemble une roadmap produit réalisable. TEST ET APPRENTISSAGE : Dernière étape, et non des moindres, « l’apprentissage » permet de recevoir un feed-back utilisateur. Ce moment de test en direct va faire émerger sont ressenti vis à vis du nouveau produit ou service et de son expérience. L’objectif : savoir si la solution répond aux objectifs fixés au départ, si elle est viable et si des améliorations doivent être apportées. e) Avantages du Design Thinking Le design thinking est une nouvelle méthode qui comporte de nombreux avantages, les entreprises qui pratiquent cette méthode de travail seront toujours beaucoup plus créatives. Elles auront toujours de l’avance sur les sociétés concurrentes et peuvent innover plus facilement : CRÉER UNE COHÉSION INTER-SERVICE FORTE AU SEIN DE L’ENTREPRISE INSTALLER UNE CULTURE DU TRAVAIL BASÉE SUR LA CRÉATIVITÉ, LE TEST ET L’ITÉRATION METTRE L’UTILISATEUR AU CENTRE DE LA DÉMARCHE D’INNOVATION Le Design Thinking permet l’optimisation des processus de l’entreprise au juste coût. Le Design Thinking facilite le processus décisionnel et la qualité des décisions prises. 2. Le Scrum C’est une méthode de gestion de projets qui a pour but d’améliorer la productivité des équipes. Ce terme est inspiré du terme "scrum" en Rugby, qui désigne une mêlée. C’est une technique de reprise de jeu après faute qui remet une équipe sure de bons rails par un effort collectif. Cette méthode a été principalement conçue pour le développement de logiciels informatiques. Le scrum fonctionne en cycles appelés sprints. Chaque sprint dure de 2 à 4 semaine afin de garder un rythme constant. A la fin de chaque sprint, une version testable est fournie afin de faire le point. Cours dispensé par M DASSE LELIGHAA Gontran – ING INFORMATIQUE OPTION GÉNIE LOGICIEL Année Académique 2023-2024 Les acteurs du SCRUM Dans une gestion de projet de type « Agile », il n’y a plus de chef de projet mais deux acteurs qui le remplace : Le Product Owner et le ScrumMaster. a) Le Product Owner Le Product Owner est le stratège du projet. C’est lui qui a pour mission de définir les fonctionnalités du produit final. C’est aussi lui qui choisit les dates et contenus des différentes versions. Il définit les priorités dans les fonctionnalités et valide ou non les travaux à chaque fin de Sprint. C’est à lui que revient aussi la responsabilité du retour sur investissement ainsi que l’acceptation ou le rejet des résultats. C’est la personne qui représente le client et qui est la plus impliquée dans la gestion du « backlog de produit ». Cours dispensé par M DASSE LELIGHAA Gontran – ING INFORMATIQUE OPTION GÉNIE LOGICIEL Année Académique 2023-2024 b) Le ScrumMaster Le ScrumMaster est, comme son nom l’indique, la personne en charge du management du projet. Il doit faire appliquer les pratiques et les valeurs du Scrum. Il s’assure que l’équipe est totalement opérationnelle et productive. En cas de problème, c’est lui qui doit éliminer les obstacles pour que l’équipe puisse continuer le projet. Il agit comme facilitateur au sein de l’équipe. Il a pour rôle d’aider l’équipe à travailler et à s’améliorer constamment. Il est responsable de l’application du Scrum. 2.1. La planification Cours dispensé par M DASSE LELIGHAA Gontran – ING INFORMATIQUE OPTION GÉNIE LOGICIEL Année Académique 2023-2024 Le Scrum est actif à trois niveaux : le Scrum quotidien, le sprint et la release. a) Le Scrum quotidien Au quotidien, le ScrumMaster organise une réunion de 15 minutes : le Scrum Meeting. Toute l’équipe participe à cette réunion. Il permet au ScrumMaster de faire le point sur l’avancée du projet. L’objectif est d’améliorer la probabilité que l’équipe finisse les objectifs définis pour le sprint en cours. La réunion se déroule en plusieurs étapes : Présenter ce qui a été fait : Chaque participant présente ce qu’il a fait depuis le dernier Scrum Meeting et où il en est par rapport à l’objectif qu’il s’était fixé. Prévoir ce qui va être fait : Chacun prévoit le travail qu’il va faire jusqu’à la prochaine réunion. Identifier les obstacles : Tous les participants présentent ce qui les gènes pour être efficace à 100%. L’objectif est de cerner les problèmes et d’y apporter rapidement, efficacement et surtout collectivement une solution. Le résultat de cette réunion est l’actualisation du backlog de sprint ainsi que la prévision et la résolution des obstacles. Cours dispensé par M DASSE LELIGHAA Gontran – ING INFORMATIQUE OPTION GÉNIE LOGICIEL Année Académique 2023-2024 b. Le sprint Le Scrum est une méthode de gestion itérative. Ces itérations sont appelées « sprint ». Chaque sprint dure entre 2 et 4 semaines selon la charge de travail, l’équipe disponible ainsi que le nombre de fonctionnalités voulues à la fin de cette durée. Chaque sprint est planifié à partir de ce que l’on appelle un « backlog de produit ». C’est le recueil de toutes les fonctionnalités du produit final établi en début de projet. Il contient les priorités ainsi que les durées théoriques de production de ces fonctionnalités. Au début de chaque sprint, l’équipe et le ScrumMaster choisissent, à partir de la liste de fonctionnalités, les éléments qu’elle pense pouvoir finir pour le sprint (le « sprint backlog »). Les tâches sont alors listées, identifiées et estimées par l’équipe et le ScrumMaster. Des changements peuvent être appliqués pendant le sprint mais cela va avoir une incidence sur les itérations suivantes. Chaque itération aboutit à une version partielle et testable du produit. Cela a pour but, en fin de sprint, de faire un point sur ce qui a été fait et d’avoir un visuel de l’effet ou de l’interaction que cela a dans le produit. En fin d’itération, l’équipe fait une rétrospective avec le ScrumMaster de ce qui s’est passé pendant le sprint et de ce qu’il y a à faire pour le suivant. De son côté, le Product Owner se voit présenté une version testable du produit pour lui montrer l’avancée du projet. Cours dispensé par M DASSE LELIGHAA Gontran – ING INFORMATIQUE OPTION GÉNIE LOGICIEL Année Académique 2023-2024 d. La release Pour optimiser et améliorer la gestion du projet, les sprints sont regroupés en releases. Chacune est composée de plusieurs sprints. La release représente la livraison d’une version partielle mais plus avancée qu’à la fin des sprints. Cours dispensé par M DASSE LELIGHAA Gontran – ING INFORMATIQUE OPTION GÉNIE LOGICIEL Année Académique 2023-2024 III. Cycle de vie La modélisation de développement logiciel aide les développeurs à sélectionner la stratégie pour développer le produit logiciel. Ainsi, chaque modélisation de développement possède ses outils propres, ses méthodes et ses procédures qui permettent d’exprimer clairement et définissent le cycle de vie de développement du logiciel. Les modèles du cycle de vie du logiciel sont des « plans de travail » qui permettent de planifier le développement. Plus le logiciel à développer est complexe (taille, algorithmes) et critique, plus il est important de bien contrôler le processus de développement et plus les documents qui accompagnent le logiciel doivent être précis et détaillés. Il s’avère de nos jours, que nous ne pouvons plus avoir une démarche unique dans le développement de projets informatiques, mais qu’il faut construire le découpage temporel en fonction des caractéristiques de l’entreprise et du projet. On s’appuie pour cela sur des découpages temporels génériques, appelés modèles de développement (process models) ou modèles de cycle de vie d’un projet informatique. Les principaux modèles sont : 1. LE MODELE EN CASCADE (WATERFALL MODEL) C’est un modèle qui a comme objectif majeur de jalonner (présenter sobrement) rigoureusement le processus de développement et de définir de façon précise les rôles respectifs du fournisseur qui produit un livrable et du client qui accepte ou refuse le résultat. Le découpage temporel se présente comme une succession de phases affinant celles du découpage classique : Étude de faisabilité, Définition des besoins, Conception générale, Conception détaillée, Programmation, Intégration, Mise en œuvre. Chaque phase donne lieu à une validation officielle. Si le résultat du contrôle n’est pas satisfaisant, on modifie le livrable. En revanche, il n’y a pas de retour possible sur les options validées à l’issue de phases antérieures. Cours dispensé par M DASSE LELIGHAA Gontran – ING INFORMATIQUE OPTION GÉNIE LOGICIEL Année Académique 2023-2024 Le cycle de vie dit de la « cascade » date de 1970, il est l’œuvre de Royce. Ce Cycle de vie est linéaire (présentoir) sans aucune évaluation entre le début du projet et la validation. Ici, Le projet est découpé en phases successives dans le temps et à chaque phase correspond une activité principale bien précise produisant un certain nombre de livrables et On ne passe à l’étape suivante que si les résultats de l’étape précédente sont jugés satisfaisants. L’activité d’une étape se réalise avec les résultats fournis par l’étape précédente ; ainsi, chaque étape sert de contrôle du travail effectué lors de l’étape précédente et Chaque phase ne peut remettre en cause que la phase précédente ce qui, dans la pratique, s’avère insuffisant. L’élaboration des spécifications est une phase particulièrement critique : les erreurs de spécifications sont généralement détectées au moment des tests, voire au moment de la livraison du logiciel à l’utilisateur. Leur correction nécessite alors de reprendre toutes les phases du processus. Ce modèle est mieux adapté aux petits projets ou à ceux dont les spécifications sont bien connues et fixes. Dans le modèle en cascade, on effectue les différentes étapes du logiciel de façon séquentielle. Les interactions ont lieu uniquement entre étapes successives : on s’autorise des retours en arrière uniquement sur l’´étape précédente. Par exemple, un test ne doit pas remettre en cause la conception architecturale. Modèle du cycle de vie en cascade N° 1 Cours dispensé par M DASSE LELIGHAA Gontran – ING INFORMATIQUE OPTION GÉNIE LOGICIEL Année Académique 2023-2024 2. LE MODELE EN V. Le modèle en V du cycle de vie du logiciel précise la conception des tests : (les tests système sont préparés à partir de la spécification; les tests d‟intégration sont préparés à partir de la conception architecturale ; les tests unitaires sont préparés à partir de la conception détaillée des composants). Dérivé du modèle de la cascade, le modèle en V du cycle de développement montre non seulement l’enchaînement des phases successives, mais aussi les relations logiques entre phases plus éloignées. Ce modèle fait apparaître le fait que le début du processus de développement conditionne ses dernières étapes. Le modèle du cycle de vie en V est souvent adapté aux projets de taille et de complexité moyenne. Cours dispensé par M DASSE LELIGHAA Gontran – ING INFORMATIQUE OPTION GÉNIE LOGICIEL Année Académique 2023-2024 La première branche correspond à un modèle en cascade classique. Toute description d’un composant est accompagnée de définitions de tests. Avec les jeux de tests préparés dans la première branche, les étapes de la deuxième branche peuvent être mieux préparées et planifiées. La seconde branche correspond à des tests effectifs effectués sur des composants réalisés. L’intégration est ensuite réalisée jusqu’à l’obtention du système logiciel final. L’avantage d’un tel modèle est d’éviter d’énoncer une propriété qu’il est impossible de vérifier objectivement une fois le logiciel réalisé. Le cycle en V est le cycle qui a été normalisé, il est largement utilisé, notamment en informatique industrielle et en télécommunication. Ce modèle fait également apparaitre les documents qui sont produits à chaque étape, et les «revues» qui permettent de valider les différents produits. Cours dispensé par M DASSE LELIGHAA Gontran – ING INFORMATIQUE OPTION GÉNIE LOGICIEL Année Académique 2023-2024 Modèle du cycle de vie en « V » N° 2 3. LE CYCLE DE VIE EN SPIRALE Cours dispensé par M DASSE LELIGHAA Gontran – ING INFORMATIQUE OPTION GÉNIE LOGICIEL Année Académique 2023-2024 Ce modèle repose sur le même principe que le modèle évolutif, mais il s’inscrit dans une relation contractuelle entre le client et le fournisseur. De ce fait les engagements et validations présentent un caractère formalisé. Chaque cycle donne lieu à une contractualisation préalable, s’appuyant sur les besoins exprimés lors du cycle précédent. Un cycle comporte six phases : Analyse du risque ; Développement d'un prototype (modèle, archétype…) ; Simulation et essais du prototype ; Détermination des besoins à partir des résultats des essais ; Validation des besoins par un comité de pilotage ; Planification du cycle suivant. Le modèle en spirale Le dernier cycle permet de développer la version finale et d'implémenter le logiciel. Pour corriger les travers de la démarche linéaire (en Cascade) sont apparus des modèles dits en spirales, proposé par B. Boehm en 1988, où les risques, quels qu’ils soient, sont constamment traités au travers de bouclages successifs : Chaque spire confirme et affine les spires précédentes en menant des activités de même nature successivement ; L’analyse ou la conception ne sont plus effectuées dans une seule phase ou étape mais sont conduites en tant qu’activités qui se déroulent sur de multiples phases ; A chaque étape, après avoir défini les objectifs et les alternatives, celles-ci sont évaluées par différentes techniques (prototypage, simulation,...), l’étape est réalisée et la suite est planifiée. Le nombre de cycles est variable selon que le développement est classique ou incrémental ; Cours dispensé par M DASSE LELIGHAA Gontran – ING INFORMATIQUE OPTION GÉNIE LOGICIEL Année Académique 2023-2024 Ce modèle met l’accent sur l’analyse des risques tels que les exigences démesurées par rapport à la technologie, la réutilisation de composants, calendriers et budgets irréalistes, la défaillance du personnel, etc. Ce modèle est utilisé pour des projets dont les enjeux (risques) sont importants Chaque cycle de la spirale se déroule en quatre phases : 1. Un cycle de la spirale commence par l’élaboration d’objectifs tels que la performance, la fonctionnalité, etc. 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. 2. L’étape suivante consiste à évaluer les risques pour chaque activité, comme l’analyse détaillée, le prototypage, la simulation, etc. 3. Après avoir évalué le risque, on choisit un modèle de développement pour le système. Par exemple, si les principaux risques concernent l’interface utilisateur, le prototypage évolutif pourrait s’avérer un modèle de développement approprié. Le modèle de la cascade peut être le plus approprié si le principal risque identifié concerne l’intégration des sous-systèmes. 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. 4. La situation est ensuite réévaluée pour déterminer si un développement supplémentaire est nécessaire, auquel cas il faudrait planifier la prochaine étape. (on estime au cours d‟une procédure de revue, si on doit passer au prochain cycle de la spirale ou non). 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. De façon générale, les risques liés au développement de logiciels peuvent être répartis en quatre catégories : Les risques commerciaux (placement du produit sur le marché, concurrence); Les risques financiers (capacités financières suffisantes pour réaliser le produit); Les risques techniques (la technologie employée est-elle ´éprouvée ?) ; Les risques de développement (l’équipe est-elle suffisamment expérimentée ?). 4. Le modèle par incrément Cours dispensé par M DASSE LELIGHAA Gontran – ING INFORMATIQUE OPTION GÉNIE LOGICIEL Année Académique 2023-2024 Le modèle incrémental est un modèle itératif, qui consiste à sélectionner successivement plusieurs incréments. Un incrément du logiciel est un sous-ensemble du logiciel complet, qui consiste en un petit nombre de fonctionnalités. Modèle du cycle de vie par incrément Dans les modèles spirales, en V ou en cascade, un logiciel est décomposé en composants développés séparément et intégrés à la fin du processus. Dans le modèle par incréments, seul un sou ensemble est développé à la fois. Dans un premier temps un logiciel noyau est développé, puis successivement, les incréments sont développés et intégrés. Chaque incrément est développé selon l’un des modèles précédents. Dans ce modèle, les intégrations sont progressives et il peut y avoir des livraisons et des mises en service après chaque intégration d’incrément. Le modèle incrémental présente comme avantages : Chaque développement est moins complexe ; Les intégra ons sont progressives ; Possibilité de livraisons et de mises en service après chaque incrément ; Meilleur lissage du temps et de l’effort de développement à cause de la possibilité de recouvrement des différentes phases. L’effort est constant dans le temps par opposi on au pic pour spécifica ons détaillées pour les modèles en cascade ou en Cours dispensé par M DASSE LELIGHAA Gontran – ING INFORMATIQUE OPTION GÉNIE LOGICIEL Année Académique 2023-2024 V. Le modèle incrémental présente comme Risques La remise en cause du noyau de départ ; La remise en cause des incréments précédents ; Ou encore l’impossibilité d’intégrer un nouvel incrément Cours dispensé par M DASSE LELIGHAA Gontran – ING INFORMATIQUE OPTION GÉNIE LOGICIEL Année Académique 2023-2024 CHAPITRE III : NOTION DE QUALITE LOGICIEL Définition En informatique, et en particulier en génie logiciel, la qualité logicielle est une appréciation globale d’un logiciel basée sur de nombreux indicateurs. La complétude des fonctionnalités, la précision des résultats, la fiabilité, la tolérance de pannes, la facilité et la flexibilité de son utilisation, la simplicité, l’extensibilité, la compatibilité et la portabilité, la facilité de correction et de transformation, la performance, la consistance et l’intégrité de l’information sont toutes des facteurs de qualité. Un logiciel est un produit qui ne se détériore pas et qui est continuellement modifié. La qualité d’un logiciel dépend entièrement de sa construction ; la qualité logicielle est par conséquent un sujet central en génie logiciel. Une appréciation globale de la qualité tient autant compte des facteurs extérieurs, directement observables par l’utilisateur, que des facteurs intérieurs observables par les ingénieurs lors des revues de code ou des travaux de maintenance. Les problèmes de qualité des logiciels, connus depuis les années 1960, sont par ailleurs à l’origine du génie logiciel : la science de la création de logiciels, y compris toutes les difficultés qui y sont liées (respect des coûts, des délais, du cahier des charges et du niveau de qualité). Il existe un référentiel de certification des systèmes de management de la qualité en entreprise en matière de génie logiciel : c’est le Tickit. Notons aussi qu’il existe des facteurs qui déterminent la non qualité du logiciel : Mauvaise spécification des besoins Mauvaise estimation Mauvaise répartition des tâches Mauvais suivi Mauvaise réalisation technique Problèmes humains Manque d’expérience du métier de chef de projet I. Indicateurs de qualité logicielle Cours dispensé par M DASSE LELIGHAA Gontran – ING INFORMATIQUE OPTION GÉNIE LOGICIEL Année Académique 2023-2024 La norme ISO-9126 définit six groupes d’indicateurs de qualité logicielle : a. La capacité fonctionnelle Il s’agit de la capacité qu’ont les fonctionnalités d’un logiciel à répondre aux exigences et besoins explicites ou implicites des usagers. En font partie la précision, l’interopérabilité, la conformité aux normes et à la sécurité. b. La facilité d’utilisation Elle porte sur l’effort nécessaire pour apprendre à manipuler le logiciel. En font partie la facilité de compréhension, d’apprentissage, d’exploitation et la robustesse (une utilisation incorrecte n’entraine pas de dysfonctionnement). c. La fiabilité Il s’agit de la capacité d’un logiciel à rendre des résultats corrects quelles que soient les conditions d’exploitation. En fait partie la tolérance de pannes (la capacité d’un logiciel de fonctionner, même en étant handicapé par la panne d’un composant). d. La performance C’est le rapport entre la quantité de ressources utilisée (moyens matériels, temps, personnel) et la quantité de résultats délivrés. En font partie le temps de réponse, le débit et l’extensibilité (capacité à maintenir la performance même en cas d’utilisation intensive). e. La maintenabilité Elle porte sur l’effort nécessaire en vue de corriger ou de transformer le logiciel. En font partie l’extensibilité (le peu d’effort nécessaire pour y ajouter de nouvelles fonctions). f. La portabilité C’est l’aptitude d’un logiciel à fonctionner dans un environnement matériel ou logiciel différent de son environnement initial. En font partie la facilité d’installation et de configuration pour le nouvel environnement. Cours dispensé par M DASSE LELIGHAA Gontran – ING INFORMATIQUE OPTION GÉNIE LOGICIEL Année Académique 2023-2024 II. Les différentes perceptions de qualité Pour apprécier la qualité d’un logiciel, il est nécessaire qu’il soit évalué sur la base des éléments suivants : La validité : aptitude d’un produit logiciel à remplir exactement ses fonctions, définies par le cahier des charges et les spécifications. La fiabilité (ou robustesse) : aptitude d’un produit logiciel à fonctionner dans des conditions anormales. L’intégrité : aptitude d’un logiciel à protéger son code et ses données contre des accès non autorisés. La réutilisabilité : aptitude d’un logiciel à être réutilisé, en tout ou en partie, dans de nouvelles applications. La compatibilité : facilité avec laquelle un logiciel peut être combiné avec d’autres logiciels. L’efficacité : utilisation optimale des ressources matérielles. La portabilité : facilité de transfert du logiciel sous différents environnements matériels et logiciels. La vérifiabilité : facilité de préparation des procédures de test. L’extensibilité : facilité avec laquelle un logiciel se prête à une modification ou à une extension des fonctions qui lui sont demandées. La facilité d’utilisation : facilité d’apprentissage, d’utilisation, de préparation des données, d’interprétation d’erreurs et de rattrapage en cas d’erreur d’utilisation. III. Les trois axes de qualité d’un logiciel Dans le domaine du logiciel, satisfaire les besoins de l’utilisateur suppose une démarche qualité qui prend en compte : La qualité de son processus de développement (coût, délais, méthode, organisation, personnel, technique et outils). La qualité intrinsèque du produit (modularité, simplicité). La qualité du service fourni par le logiciel en exploitation. La qualité du processus de développement est basée sur l’utilisation de méthodes de développement et de gestion de projets, généralement définies dans le manuel qualité de l’entreprise rédigé au cours de la mise en place d’une politique d’assurance qualité. Cours dispensé par M DASSE LELIGHAA Gontran – ING INFORMATIQUE OPTION GÉNIE LOGICIEL Année Académique 2023-2024 L’évaluation de la qualité intrinsèque du logiciel est effectuée sur le produit en développement en fonction des facteurs de qualité attendus, définis lors de la commande (spécifications). Celle du service porte sur le logiciel en exploitation chez l’utilisateur, et consiste notamment à vérifier son adéquation aux exigences spécifiées. IV. Assurance qualité L’assurance qualité est définie comme l’ensemble des actions préétablies et systématiques nécessaires pour donner la confiance appropriée en ce qu’un produit ou service satisfera aux exigences relatives à la qualité. En fait, les moyens que l’entreprise juge nécessaires pour parvenir à la qualité souhaitée en matière de SI (systèmes d’information), ses dispositions s’attachent à définir un cadre de production, de mise en œuvre et d’exploitation des applications. a. Assurer la qualité du logiciel Pour assurer la qualité d’un logiciel, nous devons : Assurer que le niveau de qualité requis est atteint. Définir des standards de qualité et des procédures permettant d’assurer le niveau requis. b. Les sept principes de qualité d’un logiciel En matière de génie logiciel, les ingénieurs et experts ont défini les principes de qualité d’un logiciel. Nous en comptons sept : Formalisation des procédures : écrire ce que l’on doit faire Contrôle du respect des procédures : vérifier que ce qui est fait est conforme à ce qui a été écrit Traçabilité : écrire ce que l’on fait Mesure de la qualité : apprécier la satisfaction du client Calibrage par le retour d’expérience : améliorer les procédures de façon continue Unicité de responsabilité : éviter la confusion des rôles Séparation du contrôle et de la production : éviter d’être juge et partie Cours dispensé par M DASSE LELIGHAA Gontran – ING INFORMATIQUE OPTION GÉNIE LOGICIEL Année Académique 2023-2024 c. Processus d’assurance de la qualité Le processus d’assurance de la qualité doit fournir l’assurance que les produits du travail et les activités du projet sont conformes à leurs exigences et satisfont au plan établi. d. Plan d’Assurance Qualité (PAQ) Le plan d’assurance qualité peut : Etre établi à partir du manuel qualité logicielle et des caractéristiques d’un projet déterminé doté de ses propres exigences de qualité. Décrire les procédures, les règles et les méthodes applicables au projet. Fixer aux différents acteurs du projet leurs droits, mais aussi leurs devoirs, en matière de qualité. L’établissement et le suivi du PAQ sont du ressort du responsable qualité du projet. Exemple : Le plan d’assurance qualité comporte 4 caractéristiques : Les objectifs qualité du projet : il faut hiérarchiser les critères. Les moyens de la qualité : quelle étape de développement (cycle de vie), choix de méthodes et techniques, structuration de l’équipe ? Le suivi de la qualité : quelles mesures ? L’identification et la prévention des risques : le document de PAQ possède un aspect contractuel Cours dispensé par M DASSE LELIGHAA Gontran – ING INFORMATIQUE OPTION GÉNIE LOGICIEL Année Académique 2023-2024 Cours dispensé par Mme ANEGA es Systèmes d’Informations Yvette -MASTER 2 en Management d Année Académique 2022-223 Cours dispensé par Mme ANEGA es Systèmes d’Informations