Document Details

SelectiveClover

Uploaded by SelectiveClover

IIT - Institut International de Technologie

2021

Mohamed MANAA

Tags

software engineering software development life cycle SDLC computer science

Summary

These lecture notes cover the Software Development Life Cycle (SDLC) and related topics in software engineering. They also look at the concept of software systems, and discuss the historical context of the issues involved in software engineering.

Full Transcript

SDLC Software Development Life Cycle Enseignant : Mohamed MANAA Année Universitaire 2021-2022 Plan du cours 1. Fondements des systèmes d'information 2. Le Génie Logiciel ? 3. Le cycle de vie du logiciel 4. Modèles de cycle de vie 5....

SDLC Software Development Life Cycle Enseignant : Mohamed MANAA Année Universitaire 2021-2022 Plan du cours 1. Fondements des systèmes d'information 2. Le Génie Logiciel ? 3. Le cycle de vie du logiciel 4. Modèles de cycle de vie 5. Méthodologie SCRUM Mohamed MANAA Génie Logiciel Fondements des systèmes d'information Qu’est-ce qu’un système ? ✓ Un système est un ensemble d’éléments en interaction dynamique organisés en fonction d’un but. ✓ Un système d’information est une représentation possible de n’importe quel système, notamment tout système humain organisé ✓ Il faut distinguer un système d’information d’un système informatisé ✓Un ensemble organisé de ressources (matériel, logiciel, personnel, données, procédures…) permettant d’acquérir, de traiter, de stocker des informations (sous forme de données, textes, images, sons…) dans et entre des organisations. La dynamique des systèmes Un système reçoit des données d’entrée d’autres systèmes ou de l’environnement. ▪ Les entrées subissent des modifications ( transformations ). ▪ Les transformations produisent des sorties qu’absorbent d’autres systèmes ou l’environnement. Mohamed MANAA Génie Logiciel Fondements des systèmes d'information Système Système de pilotage (ou de décision) Décisions Informations traitées Informations Informations Système d’information externes vers l’extérieur Ordres, Informations consignes collectées Flux entrants Flux sortants Système opérant Tout système effectue des changements sur les entrées qu’il reçoit, ceci caractérise sa fonction et son dynamisme. Mohamed MANAA Génie Logiciel Fondements des systèmes d'information Exemple de SI ✓ Un réseau de guichet automatique de banque ✓ Une application de gestion de stocks d’un supermarché ✓ Un site web de vente en ligne ✓ Une bibliothèque numérique ✓ … Mohamed MANAA Génie Logiciel Fondements des systèmes d'information Fonctions d’un Système d’Information Collecte et saisie Toutes les informations susceptibles d’améliorer la performance de la société sont importantes. Traitement Effectuer des transformations sur les entrées Mémorisation / Stockage Chaque service de l’entreprise doit pouvoir à tout moment retrouver facilement les informations dont il a besoin  il faut que les informations soient judicieusement archivées et bien structurées. Communication / Diffusion Transmission des informations traitées  fournir une aide à la décision Mohamed MANAA Génie Logiciel Fondements des systèmes d'information Système d’Information Automatisé ✓ L'ensemble des moyens et des méthodes se rapportant au traitement automatisé des données de l'organisation ✓ Un SIA est un système physique reposant sur la technologie informatique ✓ Les SIA sont perçus à travers les logiciels qui les composent Informatisation des Systèmes d’Information Le Système d’Information : ▪ Joue un rôle stratégique, tactique et opérationnel ▪ Constitue un outil de compétitivité ▪ Catalyseur de l’innovation ▪ Favorise la prise de décision Le processus d'informatisation des SI n'est pas encore totalement maîtrisé  « Crise du logiciel » Mohamed MANAA Génie Logiciel La crise du logiciel Historique Années 50 : ▪ Petits programmes sur mesure ▪ Souvent le client est aussi le programmeur ▪ Naissance de la profession de programmeur Années 60 et 70 : premiers «gros logiciels» commercialisés ▪ Produits logiciels vendus à des centaines voire des milliers de clients ▪ Logiciels multi-utilisateur, temps-réel,... ▪ Apparition des bases de données Années 80 : l’industrie du logiciel se développe.... ▪ Le coût des ordinateurs baisse ▪ Réseaux et systèmes répartis Mohamed MANAA Génie Logiciel La crise du logiciel Mission Venus : passage a 5 000 000 km de la planète au lieu des 5000 km prévus Cause : remplacement d'une virgule par un point Passage de l'équateur : un F16 se retrouve sur le dos Cause : changement de signe de la latitude mal pris en compte 2 jours sans électricité pour la station Mir en 1997. Cause : plantage d'un ordinateur qui contrôlait l'orientation des panneaux solaires Perte de satellites dans les années 70. Cause : +I au lieu de +1 dans une boucle du programme source Y2K : dysfonctionnements possibles prévues, lutte contre le bogue de l'an 2000 : des milliards de dollars, quelques dysfonctionnements constatés Cause : l'année codée sur 2 caractères pour gagner de la place Mohamed MANAA Génie Logiciel La crise du logiciel Socrate. Système de réservation de places Socrate de la SNCF. Ses plantages fréquents, sa mauvaise ergonomie, le manque de formation préalable du personnel, ont amené un report important et durable de la clientèle vers d'autres moyens de transport. Cause : rachat par la SNCF d'un système de réservation de places d'une compagnie aérienne, sans réadaptation totale au cahier des charges du transport ferroviaire. Échec du premier lancement d'Ariane V. Au premier lancement de la fusée Ariane V, celle ci a explosé en vol. La cause : logiciel de plate forme inertielle repris tel quel d'Ariane IV sans nouvelle validation. Le logiciel a jugée l’inclinaison non conforme au plan de tir (d'Ariane IV), et a provoqué l'ordre d'auto destruction. En fait tout se passait bien... Coût du programme d'étude d'Ariane V : 38 milliards de Francs, pour 39 secondes de vol après 10 années de travail.... Mohamed MANAA Génie Logiciel La crise du logiciel 1.77% 2.95% avait été utilisé tel que livré avait été utilisé après quelques modifications 28.8% avait été payé mais non livré 47.27% 19.2% n’avait pas été utilisé avec succès avait été transformé ou abandonné Une étude effectuée sur 9 projets du Department of Defense des USA (En 1990) La crise du logiciel se manifeste à travers ✓ Le dérapage des délais et des coûts de développement de la plupart des projets informatiques ✓ La réalisation de logiciels de mauvaise qualité (ne satisfont pas les utilisateurs, ne sont parfois jamais utilisés, nécessitent de nombreuses et coûteuses révisions) Mohamed MANAA Génie Logiciel La crise du logiciel Etat de crise Une étude du Standish Group (1995) reposant sur un échantillon représentatif 365 entreprises, totalisant 8380 applications Mohamed MANAA Génie Logiciel La crise du logiciel Etat de crise Pour les grandes entreprises  le taux de succès est de 9% seulement,  37% des projets sont arrêtés en cours de réalisation,  50% aboutissent hors délai et hors budget. L’examen des causes de succès et d’échec est instructif  la plupart des échecs proviennent non de l’informatique, mais de la maîtrise d’ouvrage (i.e. le client). Mohamed MANAA Génie Logiciel La crise du logiciel Crise de l’industrie du logiciel à la fin des années 1970. était principalement due à :  l’augmentation des coûts ;  les difficultés de maintenance et d’évolution ;  la non fiabilité ;  le non respect des spécifications ;  le non respect des délais. L’importance d’une approche méthodologique Mohamed MANAA Génie Logiciel Le Génie Logiciel Naissance du Génie Logiciel  1967 : Comparaison du processus de développement et de maintenance du logiciel à ceux des ingénieries classiques (génie civil, génie mécanique, …)  1968 : conférence de l'OTAN, La première conférence sur le thème du GL  70’s : Recherche d'un modèle (programmation structurée, cycle de vie, méthodes de spécification, conception)  80’s : Former un tout cohérent (Méthodologies de développement, Outils, environnements, Gains de productivité)  90’s : Améliorations (Réutilisabilité, Inter-opérabilité) Changement de terminologie 1950 : codeur 1970 : programmeur 1990 : ingénieur logiciel Mohamed MANAA Génie Logiciel Le Génie Logiciel Définitions du Génie Logiciel « Application pratique de la connaissance scientifique dans la conception et l'élaboration de programmes informatiques et de la documentation associée nécessaire pour les développer, les mettre en oeuvre et les maintenir » (B. W. Boehm, 1976) « Le GL ( génie logiciel ) peut être défini comme l’art de spécifier, de concevoir, de réaliser et de faire évoluer, avec des moyens et 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 » « Ensemble des activités de conception et de mise en œuvre des produits et des procédures tendant à rationaliser la production du logiciel et son suivi » Mohamed MANAA Génie Logiciel Le Génie Logiciel Ingénieries Les « génies » traditionnels : civil, militaire, électrique, mécanique, chimique production, fabrication, construction Ingénierie : ✓ science de l'ingénieur / art ✓ théories, méthodes, techniques, outils Génie Logiciel (GL) :  software engineering Génie Logiciel (Software Engineering) = Science de l'ingénierie du logiciel Mohamed MANAA Génie Logiciel Le Génie Logiciel Le Génie Logiciel, c’est … technique l'art créativité esthétique … de bien faire réussite rentabilité … de bons programmes fiabilité performance … Mohamed MANAA Génie Logiciel Le Génie Logiciel Mohamed MANAA Génie Logiciel Le Génie Logiciel Qu’est ce qu’un bon programme ? Utilisateur :  besoins, performance, convivialité, fiabilité, sécurité,... Programmeur :  facile à comprendre, vérifier, modifier, porter, réutiliser,... Fournisseur :  marché, délai, coût, risques, ventes Hotline :  facilité de diagnostic Juriste :  propriété industrielle, dispositions légales Mohamed MANAA Génie Logiciel Le Génie Logiciel Logiciel Un logiciel, ce n'est pas que du code !  Erreur courante : logiciel = code source  Savoir programmer n'est qu'un "détail " !!!  Programme : est une spécification exécutable d’une solution à un problème.  Un logiciel est un ensemble ▪ de programmes ▪ de procédés relatifs au fonctionnement d'un ensemble ▪ de règles de traitement de l'information ▪ de documentation Un logiciel est un ensemble de programmes informatiques ( du code ) mais également un certain nombre de documents se rapportant à ces programmes et nécessaires à leur installation, utilisation, développement et maintenance. Mohamed MANAA Génie Logiciel Le Génie Logiciel Logiciel Logiciel  Ensemble de programmes, qui permet à un ordinateur ou à un système informatique d’assurer une tâche ou une fonction en particulier  Peuvent être développés par ✓ Une personne seule, ✓ Une petite équipe, ✓ Un ensemble d’équipes coordonnées. Le développement de grands logiciels – importants problèmes de conception et de coordination. – phase absolument décisive  monopolise l’essentiel du coût d’un produit ✓ Le coût du développement d’un logiciel est extrêmement important. ✓ Maintenance coûte également très cher  conditionne sa réussite et sa pérennité. Mohamed MANAA Génie Logiciel Le Génie Logiciel Spécificités du logiciel Un produit immatériel, dont l’existence est indépendante du support physique ▪ Semblable à une oeuvre d’art (roman, partition...) Un objet technique fortement contraint ▪ Fonctionne ou ne fonctionne pas ▪ Structure complexe ▪ Relève des modes de travail du domaine technique Un cycle de production différent ▪ La reproduction pose peu de problèmes, seule la première copie d’un logiciel a un coût ▪ Production à l’unité ▪Le processus de développement est difficile à automatiser ▪ Semblable au Génie Civil (ponts, routes...) Mohamed MANAA Génie Logiciel Le Génie Logiciel Spécificités du logiciel (2) Même des informaticiens peu qualifié peuvent arriver à bricoler quelque chose qui semble fonctionner ❑ La qualité d’un logiciel n’est pas apparente Un logiciel semble facile à modifier ❑ La tentation est forte d’effectuer des changements rapides sans vraiment en mesurer la portée Un logiciel ne s’use pas ❑ Il se détériore à mesure que des changements sont effectués ✓ en raison de l’introduction d’erreurs ✓ ou par une complexification indue Mohamed MANAA Génie Logiciel Le Génie Logiciel Spécificités du logiciel (3) Raisons pour lesquelles le logiciel vieillit ❖ maintenance (e.g., bug fixes) ❖ érosion architecturale ❖ inflexibilité dès le début ❖ documentation insuffisante ou inconsistante ❖ duplication de code ❖ manque de modularité ❖ complexité croissante Observations ❖ Beaucoup de logiciels sont mal conçus et se détériorent rapidement La demande pour du logiciel est toujours croissante ❖ Le logiciel se trouve en perpétuel "état de crise" ❖ L’ingénierie du logiciel est une nécessité ✓ processus systématique au lieu de bricolage Mohamed MANAA Génie Logiciel Le Génie Logiciel Qualités du logiciel (1) ✓ Validité : aptitude d’un produit logiciel de remplir exactement ses fonctions définis par le cahier des charges et ses spécifications. ✓ Fiabilité : aptitude d’un produit à fonctionner dans des conditions anormales. ✓ Extensibilité : faciliter avec laquelle le logiciel se prête à une modification ou une extension de ces fonctionnalités. ✓ Réutilisabilité : faculté à être réutilisé par une autre application. ✓ Compatibilité : échange d’info avec d’autre logiciel. Mohamed MANAA Génie Logiciel Le Génie Logiciel Qualités du logiciel (2) ✓ Efficacité : s’il consomme de manières optimale les ressources. ✓ Portabilité : transférer le logiciel dans des environnement matériels et logiciels différents. ✓ Vérifiabilité : possibilité de tester facilement le produit. ✓ Intégrité : cohérence des données et du code. ✓ Facilité d’emploi : capacité d’un logiciel d’être facile d’utilisation et de récupérer les erreurs. Mohamed MANAA Génie Logiciel Le Génie Logiciel Programmation vs. Génie Logiciel  Programmation : activité personnelle  Génie Logiciel : activité d’équipe Suivant les projets, la partie programmation (codage) ne représente qu’entre 10% et 30% du coût total Programmation a petite échelle (Programming in the small) ≠ Programmation a grande échelle (Programming in the large) Mohamed MANAA Génie Logiciel Le Génie Logiciel Objectifs règles du CQFD = Coût Qualité Fonctionnalités Délai Le GL se préoccupe des procédés de fabrication des logiciels en s'assurant que les 4 critères suivants soient satisfaits :  le système fabriqué répond aux besoins  le système est de qualité  les coûts restent dans les limites prévues initialement  les délais restent dans les limites prévues initialement Mohamed MANAA Génie Logiciel Le Génie Logiciel Démarche Principes Techniques Méthodes Outils Mohamed MANAA Génie Logiciel Le Génie Logiciel Principes ✓ rigueur, ✓ séparation des problèmes (« separation of concerns »), ✓ modularité, ✓ abstraction, ✓ anticipation du changement, ✓ généricité, ✓ construction incrémentale. Mohamed MANAA Génie Logiciel Le Génie Logiciel Rigueur et formalisme ✓ Génie logiciel implique la créativité (résolution de problèmes inédits) ✓ On voudrait que ce soit systématique ✓ Rigueur et créativité se complètent ✓ Formalisme = rigueur totale séparation des problèmes (« separation of concerns ») ✓ Pour maîtriser la complexité d’un problème, on sépare les problématiques pour les traiter une à la fois ✓ "Diviser pour régner" : temps, qualité, vues, taille, ✓ Supporte la parallélization des efforts et la séparation des responsabilités Mohamed MANAA Génie Logiciel Le Génie Logiciel modularité ✓ Un système complexe peut être divisé en modules ✓ Un système qui est composé de modules de qualité est appelé modulaire ✓ La modularité permet la “separation of concerns” abstraction ✓ Identifier les aspects importants d’un phénomène et en ignorer les détails  “separation of concerns” est une façon de faire de l’abstraction ✓ L’abstraction consiste à ne considérer que les aspects jugés importants d’un système à un moment donné, en faisant abstraction des autres aspects (c’est encore un exemple de séparation des problèmes). Mohamed MANAA Génie Logiciel Le Génie Logiciel anticipation du changement ✓ Pour que le logiciel puisse “évoluer” à moindre coût, il faut prévoir et accommoder les changements futurs potentiels ✓ L’anticipation des changements résulte en la capacité d’évolution du logiciel (evolvability) généricité ✓ Il est parfois avantageux de remplacer la résolution d’un problème spécifique par la résolution d’un problème plus général. Cette solution générique (paramétrable ou adaptable) pourra être réutilisée plus facilement. construction incrémentale ✓ Un procédé incrémental atteint son but par étapes en s’en approchant de plus en plus; chaque résultat est construit en étendant le précédent. Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel « La qualité du processus de fabrication est garante de la qualité du produit » Pour obtenir un logiciel de qualité, il faut en maîtriser le processus d’élaboration  La vie d’un logiciel est composée de différentes étapes  La succession de ces étapes forme le cycle de vie du logiciel  Il faut contrôler la succession de ces différentes étapes  « Le cycle de vie d’un logiciel est la période située entre le début de la conception et l’arrêt de l’exploitation de ce logiciel. »  Le cycle de vie d’un logiciel « correspond à l’identification des états successifs d’une application ou d’un produit déterminé. Il est essentiellement dynamique, évolutif et presque toujours progressif » (A. Carlier, 1994) Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Notion de cycle de vie : C'est la description d'un processus couvrant les phases de: Création d'un produit, Distribution sur un marché, Disparition. Le but de ce découpage est de ✓ Maîtriser les risques, ✓ Maîtriser au mieux les délais et les coûts, ✓ Obtenir une qualité conforme aux exigences. On distingue deux types de cycle de vie ▪ Le cycle de vie des produits s'applique à tous les types de produits, et peut être considéré comme un outil de gestion. ▪ Le cycle de développement des logiciels s'insère dans le précédent, on l'appelle souvent abusivement cycle de vie des logiciels Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Notion de cycle de vie : 1. Étude de faisabilité 2. Spécification 3. Conception 4. Implémentation 5. Tests 6. Livraison 7. Maintenance Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel L’analyse des besoins (Étude de faisabilité) Il s’agit d’étudier : ✓ Le domaine d’application ✓ L’état actuel de l’environnement du futur logiciel afin de déterminer les ressources disponibles et requises, les contraintes d’activation et de performance…. But : éviter de développer un logiciel non adéquat. Résultat : Un ensemble de documents décrivant :  Les aspects importants de l’environnement du nouveau système.  Le rôle et la future utilisation du système.  Possibilité de produire un manuel d’utilisation préliminaire. Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel La spécification globale ( fonctionnelle ) du logiciel En se basant sur les besoins énoncés par le client et sur des considérations techniques et de faisabilité informatique, cette étape consiste à définir ce que le logiciel doit faire ( le quoi ). But : établir une première description du futur système ✓ Collecte des exigences : obtenir de l’utilisateur ses exigences pour le logiciel ✓ Analyse du domaine : déterminer les tâches et les structures qui se répètent dans le problème Résultats :  Un document qui contient les spécifications du logiciel.  Éventuellement, une première version du manuel de référence ainsi que des compléments au manuel d’utilisation. Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel La spécification globale ( fonctionnelle ) du logiciel fonctionnelles : les services (fonctions) attendus. Les exigences non fonctionnelles : les contraintes ainsi que les standards utilisés. Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel La conception architecturale Il s’agit, une fois les spécifications élaborées, de définir une solution en identifiant l’architecture du logiciel. La conception architecturale ( préliminaire ou globale ) consiste donc à identifier les différents composants du logiciel. Pour chacun des composants, on précise les interfaces et les fonctions. ✓ déterminer la structure du système ✓ déterminer la façon dont les différentes parties du système agissent entre elles Résultat :  Une description de l’architecture du logiciel Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel La conception détaillée Cette phase consiste à décrire pour chaque composant, les données manipulées ( représentation) et la manière dont les fonctions du composant sont réalisées ( les algorithmes ). En plus, des tests unitaires sont définis pour s’assurer que les composants réalisés sont bien conformes à leurs descriptions. Résultat : pour chaque composant, le résultat consiste en :  Un dossier de conception détaillée.  Un dossier de tests unitaires.  Un dossier de définition d’intégration logiciel Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel La programmation ( le codage / l’implémentation) Cette étape correspond au codage des données et des algorithmes agissant sur ces données, dans un langage de programmation Écriture des programmes par modules (L3G, L4G)  Dossier produit : Dossier de Réalisation Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Les Tests Essayer pour voir si ça marche. ✓ Apprendre ✓ Qu’y a-t-il à voir? ✓ qu’est ce qui devrait ▪ pourquoi c’est fait ✓ Que faut-il regarder? marcher? ▪ ce que ça doit faire ✓ Qu’est-ce qui est visible? ✓ identifier une erreur ▪ comment c’est fait ✓ Qu’est ce qu’on cherche? ✓ diagnostiquer une erreur ▪ comment ça marche ✓ Comment le regarder? ✓ catégoriser ces erreurs ✓ modéliser ✓ s’en faire une idée ✓ exécuter ✓ analyser D’après la terminologie de l’IEEE (norme 729) la faute est à l’origine de l’erreur qui se manifeste par des anomalies dans le logiciel qui peuvent causer des pannes : faute  erreur  anomalie  panne Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Les Tests Qu’est-ce qu’on teste? (quelles propriétés?)  fonctionnalité  sécurité / intégrité  utilisabilité  cohérence  maintenabilité  efficacité  robustesse  sûreté de fonctionnement Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Les Tests Essayer le logiciel sur des données d’exemple pour s’assurer qu’il fonctionne correctement  Tests unitaires : faire tester les parties du logiciel par leurs développeurs  Tests d’intégration : tester pendant l’intégration  Tests de validation : pour acceptation par l’acheteur  Tests système : tester dans un environnement proche de l’environnement de production  Tests Alpha : faire tester par le client sur le site de développement  Tests Bêta : faire tester par le client sur le site de production  Tests de régression : enregistrer les résultats des tests et les comparer à ceux des anciennes versions pour vérifier si la nouvelle n’en a pas dégrade d’autres Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Les Tests décrit Spécification Programme implante Test Résultat attendu Résultat Comparer différent égal Test échoue Test passe Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Livraison Fournir 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 Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Maintenance  Mettre à jour et améliorer le logiciel pour assurer sa pérennité  Pour limiter le temps et les coûts de maintenance, il faut porter ses efforts sur les étapes antérieures Types de maintenance : ✓ maintenance corrective (ou curative) : Critère important de la qualité qui corrige les anomalies ou erreurs mises à jour par le client et non pas lors des tests de vérification et de validation. ✓ maintenance adaptative : Ajout de petites fonctionnalités qui ne modifie pas l'architecture. Exemple : euro, changement de machine, de taux de TVA,… ✓ maintenance perfective (évolutive) : Elle consiste à maintenir les fonctionnalités antérieures tout en ajoutant des nouvelles fonctionnalités qui modifient profondément l'architecture. Exemple : changement de OS, changement de SGBD… Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Maintenance Distribution de l’effort Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Documents courants : Cahier des charges Le cahier des charges exprime les "charges", c'est-à-dire, les "obligations" que le prestataire devra accepter pour remplir son contrat. Le cahier des charges est donc un document contractuel, contrairement à une expression de besoin qui est une récolte écrite "informelle" des besoins d'un client. Le cahier des charges est un document qui s'exprime dans le langage du client, même si c'est le prestataire qui le rédige, par défaut de compétence du client. Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Documents courants : Cahier des charges Un cahier des charges est structuré ainsi : Introduction : ✓ La raison d’être d’un tel logiciel ✓ Un résumé du logiciel Besoins fonctionnels : décrit les services offerts à l’utilisateur. Besoins non fonctionnels : décrit les contraintes opérationnelles imposées au logiciel. Exemple : Le temps de réponse de toute commande ne doit pas dépasser N secondes Besoins en bases de données: existantes ou à créer. Évolution du système : décrit principalement les changements prévus du fait de l’évolution du matériel ainsi que des besoins des utilisateurs. Glossaire : décrit les termes techniques utilisés. Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Documents courants : Calendrier du projet ✓ Ordre des différentes tâches ✓ Détails et ressources qu’elles demandent Documents courants : Plan de test du logiciel ✓ Décrit les procédures de tests appliquées au logiciel pour contrôler son bon fonctionnement ▪ Tests de validation : tests choisis par le client pour déterminer s’il peut accepter le logiciel Documents courants : Plan d’assurance qualité Décrit les activités mises en oeuvre pour garantir la qualité du logiciel Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Documents courants : Manuel utilisateur ✓ Mode d’emploi pour le logiciel dans sa version finale Documents courants : Code source ✓ Code complet du produit fini Documents courants : Rapport des tests ✓ Décrit les tests effectués et les réactions du système Documents courants : Rapport des défauts ✓ Décrit les comportements du système qui n’ont pas satisfait le client ✓ Il s’agit le plus souvent de défaillances du logiciel ou d’erreurs Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Le cycle de vie en « Cascade » Analyse Spécification Conception Implémentation Validation Maintenance  Chaque phase est traitée complètement avant que la suivante ne soit entamée  Renvoie les tests de vérification et la validation en fin du processus de développement  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.  S’il y a des erreurs, les retours seront compliqués et coûteraient chers  Solution limitée aux petits projets Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Le cycle de vie en V Expression des Validation des besoins besoins Spécifications Validation fonctionnelles fonctionnelle Conception du Tests du système système Conception des Tests composants des composants Implémentation Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Le cycle de vie en V  A chaque étape de l’analyse et de la conception correspond une étape de tests ou de validation.  A chaque étape fonctionnelle correspond ainsi une étape technique.  Le processus s’accomplit en deux phases : ✓ Une phase descendante : de spécifications et de conception. ✓ Une phase ascendante : de tests et de validation.  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é.  permet une organisation modulaire Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Le modèle en Spirale de Boehm ✓ Le modèle en spirale (proposé en 1988) insiste particulièrement 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 …. ✓ Ce modèle est utilisé pour des projets dont les enjeux (risques) sont importants ✓ Ce modèle assure une meilleure maîtrise des risques, mais nécessite une très grande expérience Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Le modèle en Spirale de Boehm Chaque cycle se déroule en quatre phases : 1/ Enquête et examen de la situation existante (objectifs, alternatives, contraintes) dans l’entreprise, en prenant soin de bien prendre en compte les systèmes existants. La situation doit être mesurée de façon à pouvoir évaluer les risques existants. 2/ Si le poids des risques positifs est plus important, la phase suivante consiste alors à établir (planifier) ce qui doit être fait. Il peut y avoir une étape de prototypage pour éventuellement choisir entre plusieurs solutions. 3/ La réalisation de la solution nécessite la mise en œuvre d’un mini processus en cascade. 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. Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Le modèle en Spirale de Boehm Analyse des risques Risques technologiques : ✓ exigences démesurées par rapport à la technologie ✓ incompréhension des fondements de la technologie ✓ problèmes de performance ✓ dépendance en un produit soi-disant miracle ✓ changement de technologie en cours de route ✓... Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Le modèle en Spirale de Boehm Risques liés au processus : ✓ gestion projet mauvaise ou absente ✓ calendrier et budget irréalistes ✓ calendrier abandonné sous la pression des clients ✓ composants externes manquants ✓ tâches externes défaillantes ✓ insuffisance de données ✓ invalidité des besoins ✓ développement de fonctions inappropriées ✓ développement d'interfaces utilisateur inappropriées ✓... Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Le modèle en Spirale de Boehm Risques humains ✓ défaillance du personnel ✓ surestimation des compétences ✓ travailleur solitaire ✓ héroïsme ✓ manque de motivation ✓... Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Le modèle en Spirale de Boehm 1 2 Analyse Planification des risques Prototypage Analyser Concevoir Coder Revoir et superviser Faites-le 4 3 Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Le modèle en Spirale de Boehm Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Le modèle en Spirale de Boehm Début du projet Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Le modèle en Spirale de Boehm Définir un prototype Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Le modèle en Spirale de Boehm Activité de définition conceptuelle Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Le modèle en Spirale de Boehm Plan du cycle de vie Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Le modèle en Spirale de Boehm Début du 2ème phase Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Le modèle en Spirale de Boehm Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Le modèle itératif Le cycle de vie itératif propose de répéter toutes les étapes depuis la phase d’expression des besoins jusqu’à la validation, tant que la validation n’est pas satisfaisante. Ce type de construction itérative s’avère très productif car il permet très tôt des retours sur : ✓ Les modifications des spécifications ✓ L’adéquation entre l’analyse, la conception et l’implémentation ✓ L’acceptation du client ✓ La validité de la planification du projet Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Le modèle itératif Expression des besoins Validation Spécification fonctionnelle Tests fonctionnels Conception Tests organiques Codage Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Le modèle incrémental ✓ Contrairement aux autres modèles où 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ément , des composants (incréments) viennent s’intégrer successivement à un noyau logiciel développé au préalable (le processus de développement de chaque composant est un processus classique). ✓ 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 problème dans ce modèle est la possibilité de remise en cause du noyau et des incréments précédents et de ne pas pouvoir intégrer d’autres incréments. ✓ Afin de réduire ces risques, il est nécessaire de définir les incréments au début du projet et ce de façon globale. ✓ Les incréments devront être le plus indépendant possible, aussi bien fonctionnellement qu’au niveau de la séquence de développement. Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Les méthodes Agile "Les méthodes de développement de type Agile suivent un mode de développement itératif et incrémental, une planification de projet évolutive et encouragent les release fréquentes au client. Elles incluent également toute une série d'autres valeurs et pratiques qui encouragent l'agilité et une réponse aux changements." Méthodes Agile mettent l’accent sur: ✓ client ✓ rapidité ✓ changement Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Les méthodes Agile  Méthodes Agile mettent l’accent sur: ✓ client ✓ Rapidité ✓ changement  Quelques exemples de méthodes Agile:  Extreme Programming, Scrum, Feature Driven Development, ASD, DSDM,…  Apparition dans les années 90’  Issues de l’industrie  Diffusion au sein des entreprise depuis 2000 Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Le modèle par prototypage Prototype : version d’essai du logiciel ✓ Pour tester les différents concepts et exigences ✓ Pour montrer aux clients les fonctions que l’on veut mettre en oeuvre Lorsque le client a donné son accord, le développement suit souvent un cycle de vie linéaire Avantages : Les efforts consacrés au développement d’un prototype sont le plus souvent compensés par ceux gagnés à ne pas développer de fonctions inutiles Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Le modèle par prototypage Spécification Réalisation du Évaluation Acceptation du schématique prototype prototype logiciel Utilisation du logiciel Livraison du logiciel Non Logiciel Oui adéquat Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Le modèle par prototypage  Un prototype est un sous-ensemble logiciel réutilisable, intégrable et évolutif, visant à tester toutes les couches verticales du système : écrans, objets métier, objets techniques, connexion à la base de données,… La réalisation d’un prototype ne doit pas excéder six à sept mois.  Une maquette est un ensemble d’enchaînements d’écrans permettant de simuler un nombre limité de fonctionnalités du système. Elle s’appuie généralement sur des objets métier simulés et des accès en base de données fictifs. Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Le modèle RAD : Rapid Application Development Discuter et interagir avec l’utilisateur Vérifier l’efficacité réelle d’un algorithme Vérifier des choix spécifiques d’IHM Souvent utilisé pour identifier les besoins ✓ Prototype jetable (moins de risque) Souvent implémenté par des générateurs de code ✓ Prototype évolutif  Projets petits ou à courte durée de vie Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Le modèle RUP : Rational Unified Process ▪ 1996: apparition de UP (Unified Process). ✓ Enrichir concepts OO; ✓ Harmoniser processus de développement; ✓ Capitalisation des connaissances. ▪ 1998: apparition de RUP (Rational Unifed Process). ✓ Version commerciale de UP (Produit de la division Rational de IBM ); ✓ Démarche d’organisation; ✓ Description et modélisation métier; ✓ Production de livrables documentaires. Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Le modèle RUP : Rational Unified Process Qu'est ce qu'un processus ? Ce qui permet, pour atteindre un but donné, de définir comment procéder : ✓ Qui le fait (le qui) ? ✓ Ce qu'il faut faire (le quoi) ? ✓ À quel moment le faire (le quand) ? ✓ Dans quelles conditions il faut le faire (le comment) ? ✓ Quelles sont les raisons, les décisionnaires, le contexte et les objectifs de l'action (le pourquoi)? Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Le modèle RUP : Rational Unified Process Qu'est ce qu'un processus ? Comment définir ceci de façon précise, automatisable et contrôlable? Spécifications nouvelles Processus Système nouveau ou modifiées de génie logiciel ou modifié Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Le modèle RUP : Rational Unified Process Processus Unifié Il n ’existe pas un seul processus de développement, ni de processus standard. Des caractéristiques essentielles peuvent être mises en avant : ✓ Pilotage par les cas d’utilisation, ✓ Focalisation sur l’architecture, ✓ Utilisation de « patrons » de conception (Design Patterns), ✓ Déroulement itératif et incrémental. ✓ Accent mis sur les phases plus que sur les activités d’analyse, conception, … Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Le modèle RUP : Rational Unified Process Le RUP a un ensemble de principes de base: ✓ Adapter le processus ✓ Balancer les priorités concurrentes des parties prenantes ✓ Collaborer entre les équipes ✓ Élever le niveau d’abstraction ✓ Mettre une emphase continue sur la qualité Les 4 phases : ✓ Inception (étude d'opportunité) ✓ Élaboration (architecture, planification) ✓ Construction ✓ Transition Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Le modèle RUP : Rational Unified Process La phase d’inception ✓ Comprendre le périmètre du projet ✓ Étudier la rentabilité du projet ✓ Adhésion des intervenants ✓ Décision de continuer La phase d’élaboration ✓ Réduire les risques techniques majeurs ✓ Créer une architecture de référence ✓ Comprendre les éléments nécessaires à la construction du système Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Le modèle RUP : Rational Unified Process La phase de construction ✓ Construire la 1ère version opérationnelle du produit La phase de transition ✓ Construire la version finale du produit et la livrer au client ▪ Former les utilisateurs ▪ Exécuter des tests ▪ Préparer le lancement du produit Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel Le modèle RUP : Rational Unified Process Temps Modélisation affaire A Besoins c Analyses & Design t i Implémentation v Test i Déploiement t Gestion de changements é Gestion de projet s Environnent Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel XP : Programmation eXtrême Pour qui ? « petites à moyennes équipes écrivant des logiciels dont les besoins sont vagues ou changent rapidement » Pourquoi extrême ? « Le bon sens est poussé à son extrême ! » Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel XP : Programmation eXtrême Quelques principes ✓ « Si les relectures de code sont bonnes, nous en ferons tout le temps! (programmation par paire) » ✓ « Si tester est important, tout le monde testera tout le temps (tests unitaires), même le consommateur (tests fonctionnels). » ✓ « Si concevoir est important, nous en ferons une occupation quotidienne pour tout le monde (refactoriser). » ✓ « Si la simplicité est bonne, nous laisserons tout le temps le système dans la plus simple conception qui peut achever les fonctionnalités courantes (la plus simple chose qui puisse fonctionner). » Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel XP : Programmation eXtrême Quelques principes ✓ « Si l’architecture est importante alors tout le monde définira et raffinera l ’architecture tout le temps (métaphore). » ✓ « Si le test d’intégration est important alors nous intégrerons et testerons plusieurs fois par jour (intégration continue). » ✓ « Si les itérations courtes sont souhaitables, alors nous ferons des itérations très très courtes: secondes, minutes et heures, pas semaines, mois et années (le jeu de la planification). » Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel XP : Programmation eXtrême Méthodologie XP Le jeu de la planification Programmation par paire Release courtes Appartenance collective Métaphore intégration continue Conception simple 40 heures par semaines Tests Un client sur site Refactorisation Conventions de codage Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel XP : Programmation eXtrême Le jeu de la planification ✓ Les gestionnaires décident : ▪ La portée du logiciel. ▪ Priorité des tâches. ▪ Composition des releases. ▪ Jalons. ✓ Les programmeurs décident : ▪ Estimations de temps. ▪ Conséquences des choix techniques (Ex: BD). ▪ Organisation de l’équipe. ▪ Calendrier détaillé (tâches à haut risque d’abord, flexible pour prendre en compte les besoins du client). Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel XP : Programmation eXtrême Releases courtes ✓ Doivent contenir les besoins les plus importants du client. ✓ Doivent être cohérentes : on ne fait pas le travail à moitié pour diminuer le temps de mise en production. ✓ Planification sur un mois ou deux préférable à 6 mois ou un an. Métaphore ✓ Chaque projet est guidé par une métaphore : « l’ordinateur doit apparaître comme un bureau, le calculateur de retraite est comme un tableur,... ». ✓ Remplacement de l’architecture en développement traditionnel. ✓ Apporte une cohésion d’ensemble facile à partager. Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel XP : Programmation eXtrême Conception simple ✓ Une bonne conception : ▪ réussit tous les tests. ▪ pas de duplication (Ex: hiérarchie de classes //). ▪ Reflète chaque intention importante du programmeur. ▪ Contient le moins de classes et de méthodes possible. ✓ Comment faire ? ▪ Faire un premier jet et enlever toutes les classes dont l’absence ne viole pas ces règles ! Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel XP : Programmation eXtrême Tests ✓ Programmeurs => pour avoir confiance en leur code. ✓ Client => pour avoir confiance dans les fonctionnalités du système. ✓ Résultat : le programme supportera mieux les changements. ✓ Tests pour les méthodes de production qui pourraient défaillir uniquement. Refactorisation ✓ Simplification de la conception après ajout d’une fonctionnalité. ✓ La nouvelle conception doit passer les tests ✓ Ex: IMoney la semaine dernière. Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel XP : Programmation eXtrême Programmation par paire ✓ 1 ordinateur : 2 programmeurs. ✓ 1 pense au code nécessaire pour une méthode. ✓ L’autre pense globalement : ▪ l’approche a t’elle marché. ▪ Quels sont les autres cas de tests qui ne marchent toujours pas. ▪ N’y a t’il pas une solution plus globale pour résoudre tous ces problèmes ? Appartenance collective ✓ Chacun peut modifier tout morceau de code à chaque instant. Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel XP : Programmation eXtrême Intégration continue ✓ Le code est intégré et testé après quelques heures, une journée au plus. ✓ Machine dédiée à l’intégration. ✓ Les tests d ’intégration doivent réussir. Sinon : ▪ résoudre les problèmes. ▪ recommencer à zéro le développement. 40 heures par semaines ✓ Il faut être frais et dispos pour bien travailler ! Mohamed MANAA Génie Logiciel Cycle de vie d’un logiciel XP : Programmation eXtrême Un client sur site ✓ Pour répondre aux questions, résoudre les conflits, définir les priorités à bas niveau. ✓ Coûte cher, mais apporte beaucoup au projet. Conventions de codage ✓ Si tout le monde peut changer le code, il faut que tout le monde utilise les mêmes conventions de codage. ✓ Elles doivent être adoptées par toute l’équipe. Mohamed MANAA Génie Logiciel Planification de projet Élément indispensable de la conduite de projets :  Déterminer les tâches à accomplir  Déterminer l’ordre des tâches  Décider des ressources allouées à chaque tâche Le chef de projet a deux principales techniques (complémentaires) à sa disposition : ✓ Diagrammes de Gantt ✓ Diagrammes de PERT Mohamed MANAA Génie Logiciel Planification de projet Diagrammes de Gantt Les diagrammes de Gantt ont été créés par Henry Gantt dans les années 1920. Un diagramme de Gantt permet de décrire l’ensemble des activités d’un processus sous la forme de barres placées sur un calendrier. On a ainsi une vue graphique de l’ensemble des activités, de leurs durées et de leur ordonnancement. Le méta-modèle des diagrammes de Gantt définit un processus comme un ensemble d'activités, chaque activité étant dotée d’une date de début et d’une date de fin. 01/2007 02/2007 03/2007 04/2007 05/2007 06/2007 07/2007 Activité 1 Activité 2 Activité 3 Activité 4 Mohamed MANAA Génie Logiciel Planification de projet Diagrammes de PERT (Program Evaluation and Review Technique) Les diagrammes PERT ont tout d’abord été utilisés par le département américain de la défense. Un PERT est un graphe orienté qui montre les activités, leur durée ainsi que leur ordonnancement. Un processus vu comme un PERT est donc une suite d'activités, chaque activité ayant une durée et pouvant suivre ou précéder d’autres activités. Contrairement à une activité d'un diagramme de Gantt, une activité d'un PERT ne définit pas de date. Activité 2 Activité 4 2 Jours 2 Jours Activité 1 3 Jours Activité 3 3 Jours Mohamed MANAA Génie Logiciel Les méthodes de conception 1980 1995 2000 Technologie Technologie Technologie Technologie procédurale des objets des composants Des modèles Packages, Interfaces, Modèles, Objets, Use cases, Méta-Modèles, Frameworks, UML, Procédures Classes, Applications, XML, XSLT, Méthodes Patterns, … etc. Mohamed MANAA Génie Logiciel Les méthodes de conception  Méthode : Ensemble de règles bien définies qui conduisent pour un problème à une solution correcte Méthode = Démarche + Formalisme Démarche : succession d’étapes pour Mieux maîtriser le déroulement d’un projet Meilleure visibilité pour les utilisateurs sur certains résultats intermédiaires et garantir que le résultat final sera celui attendu Formalisme défini par: Un langage formel Un langage semi-formel généralement graphique Un langage naturel Mohamed MANAA Génie Logiciel Les méthodes de conception « Il n’y a pas une méthode unique pour étudier les choses » Aristote En Génie Logiciel, on a ✓ les méthodes de conduite de projets ✓ les méthodes de spécification ✓ les méthodes d’analyse et de conception ✓ les méthodes de réalisation ✓les méthodes d’assurance et de gestion de la qualité ✓ les méthodes de gestion et d’évaluation des coûts et des risques ✓... Mohamed MANAA Génie Logiciel Les méthodes de conception « Il n’y a pas une méthode unique pour étudier les choses » Aristote En Génie Logiciel, on a ✓ les méthodes de conduite de projets ✓ les méthodes de spécification ✓ les méthodes d’analyse et de conception ✓ les méthodes de réalisation ✓les méthodes d’assurance et de gestion de la qualité ✓ les méthodes de gestion et d’évaluation des coûts et des risques ✓... Mohamed MANAA Génie Logiciel Les méthodes de conception Les méthodes de conduite de projets ✓ La méthode PERT ✓ La méthode du chemin critique ✓ La méthode PRINCE2 (PRojects IN Controlled Environments, version 2) ✓ La méthode du Lean Management Mohamed MANAA Génie Logiciel Les méthodes de conception « Il n’y a pas une méthode unique pour étudier les choses » Aristote En Génie Logiciel, on a ✓ les méthodes de conduite de projets ✓ les méthodes de spécification ✓ les méthodes d’analyse et de conception ✓ les méthodes de réalisation ✓les méthodes d’assurance et de gestion de la qualité ✓ les méthodes de gestion et d’évaluation des coûts et des risques ✓... Mohamed MANAA Génie Logiciel Les méthodes de conception Les méthodes de spécification ✓ Méthodes formelles de spécification Langage Z : P∧Q vrai si P et Q sont vrai P∨Q vrai si P ou Q sont vrai ¬P vrai si P est faux ✓ MDA (Model Driven Architecture) : architecture dirigée par les modèles → Fonder la fonctionnalité des applications ou logiciels métiers sur des normes plutôt que sur des détails techniques Mohamed MANAA Génie Logiciel Les méthodes de conception « Il n’y a pas une méthode unique pour étudier les choses » Aristote En Génie Logiciel, on a ✓ les méthodes de conduite de projets ✓ les méthodes de spécification ✓ les méthodes d’analyse et de conception ✓ les méthodes de réalisation ✓les méthodes d’assurance et de gestion de la qualité ✓ les méthodes de gestion et d’évaluation des coûts et des risques ✓... Mohamed MANAA Génie Logiciel Les méthodes de conception Les méthodes d’analyse et de conception ✓ Merise ✓ OMT (Object Modeling Technique) ✓ Booch ✓ OOSE (Object Oriented Software Engineering) ✓ SADT (Structured Analysis and Design Technique) Mohamed MANAA Génie Logiciel Les méthodes de conception « Il n’y a pas une méthode unique pour étudier les choses » Aristote En Génie Logiciel, on a ✓ les méthodes de conduite de projets ✓ les méthodes de spécification ✓ les méthodes d’analyse et de conception ✓ les méthodes de réalisation ✓les méthodes d’assurance et de gestion de la qualité ✓ les méthodes de gestion et d’évaluation des coûts et des risques ✓... Mohamed MANAA Génie Logiciel Les méthodes de conception Les méthodes d’assurance et de gestion de la qualité ✓ 5S ✓ Six sigma ✓ L'AMDEC : Analyse des Modes de Défaillance, de leurs Effets, et de leur Criticité ✓ La MRP (Méthodologie de résolution de problème) ✓ Le Brainstorming ✓ Le diagramme de Pareto ✓ Le QQOQCCP (Quoi, Qui, Où, Quand, Comment, Combien, Pourquoi) Mohamed MANAA Génie Logiciel Les méthodes de conception « Il n’y a pas une méthode unique pour étudier les choses » Aristote En Génie Logiciel, on a ✓ les méthodes de conduite de projets ✓ les méthodes de spécification ✓ les méthodes d’analyse et de conception ✓ les méthodes de réalisation ✓les méthodes d’assurance et de gestion de la qualité ✓ les méthodes de gestion et d’évaluation des coûts et des risques ✓... Mohamed MANAA Génie Logiciel Les méthodes de conception Les méthodes de gestion et d’évaluation des coûts et des risques ✓ Mehari (méthode harmonisée d'analyse des risques) ✓ EBIOS (Expression des besoins et identification des objectifs de sécurité) ✓ Marion (méthode d'analyse de risques informatiques optimisée par niveau) ✓ ISO 27000 (27005) PDCA ▪ Etape 1 : Inventaire des risques ▪ Etape 2 : Valoriser les risques ▪ Etape 3 : Définir les parades Mohamed MANAA Génie Logiciel Les méthodes de conception Les méthodes de gestion et d’évaluation des coûts et des risques Mohamed MANAA Génie Logiciel Reverse Engineering Processus d'extraction des connaissances ou des plans de conception de tout ce qui a été créé par l'homme. Le concept existe depuis bien avant les ordinateurs ou la technologie moderne En Informatique : ✓ Le logiciel est l'une des technologies les plus complexes ✓ La rétro-ingénierie logicielle consiste à ouvrir la « boîte » d'un programme et à regarder à l'intérieur. ✓ Tout comme l'ingénierie logicielle, la rétro-ingénierie logicielle est un processus impliquant uniquement un processeur et l'esprit humain. Mohamed MANAA Génie Logiciel Reverse Engineering La rétro-ingénierie logicielle intègre plusieurs arts : ✓ cassage de code (code breaking) ✓ résolution d'énigmes ✓ programmation ✓ analyse logique. Le processus est utilisé par une variété de personnes différentes pour une variété de buts différents Dans la plupart des industries, l'ingénierie inverse dans le but de développer des produits concurrents est l'application la plus connue de l'ingénierie inverse. Mohamed MANAA Génie Logiciel Reverse Engineering D'une manière générale, dans le monde du logiciel, il existe deux catégories d'applications de rétro-ingénierie : celles liées à la sécurité et celles liées au développement de logiciels. Dans le domaine de la sécurité : ✓ Logiciel malveillant ✓ Les algorithmes cryptographiques ✓ Audit des programmes binaires Dans le domaine de développement logiciel ✓ Atteindre l'interopérabilité avec les logiciels propriétaires ✓ Développement de logiciels concurrents ✓ Évaluation de la qualité et de la robustesse des logiciels Mohamed MANAA Génie Logiciel Reverse Engineering Mohamed MANAA Génie Logiciel Reverse Engineering Analyse boîte noire ▪ Pas d'accès au binaire ou programme ✓ Analyse passive ✓ Analyse active (fuzzing => Bugs) Analyse boîte blanche ▪ On dispose d'un accès au binaire ou programme ✓ Analyse dynamique (fuzzing => étudier le comportement du programme) ✓ Analyse statique Mohamed MANAA Génie Logiciel Reverse Engineering Quelques outils OllyDbg IDA Pro, Hex Rays JAva Decompiler : JaD Reko Javasnoop Fiddler Tcpdump dotPeek.NET Decompiler Mohamed MANAA Génie Logiciel SCRUM Qu'est-ce que Scrum? Définition du rugby: « une mêlée est un moyen de reprendre le jeu après une interruption, où les attaquants de chaque équipe se retrouvent dans une formation serrée et luttent pour prendre possession du ballon quand celui-ci est renversé » Scrum - un processus agile : Scrum est un processus léger et agile de gestion et de contrôle du développement de logiciels et de produits dans des environnements en évolution rapide. Mohamed MANAA Génie Logiciel SCRUM Qu'est-ce que Scrum? ✓ Processus itératif et incrémental ✓ Approche en équipe ✓ développement de systèmes / produits avec des exigences en constante évolution ✓ Contrôle le chaos des intérêts et des besoins contradictoires ✓ Améliorer la communication et maximiser la coopération ✓ Protéger l'équipe des perturbations et des obstacles ✓ Un moyen de maximiser la productivité Mohamed MANAA Génie Logiciel SCRUM Fonctionnalité de Scrum Mohamed MANAA Génie Logiciel SCRUM Composants de Scrum ▪ Rôles dans Scrum ▪ Le processus ▪ Artéfacts Scrum Mohamed MANAA Génie Logiciel SCRUM Scrum Master ▪ Traditionnellement, ce rôle est appelé chef de projet. ▪ Responsable de la communication des valeurs et des pratiques Scrum ▪ La tâche principale est d'éliminer les obstacles ▪ Le Scrum Master (SM) est une personne dans l’équipe Scrum qui se met à son service, pour faciliter la réalisation des travaux demandés par le Product Owner, en appliquant Scrum au mieux, compte tenu du contexte de l’organisation. ▪ Une des missions du SM est de motiver l’équipe pour qu’elle s’auto-organise. Il fait tout pour que l’équipe progresse. ▪ Il pousse l’équipe à devenir pluridisciplinaire, en renforçant ses capacités en ingénierie, pour ne plus dépendre d’experts extérieurs. ▪ S’il réussit, l’équipe aura moins besoin de lui, c’est le paradoxe du SM. Mohamed MANAA Génie Logiciel SCRUM Scrum Team ▪ Pour que le cadre Scrum reste efficace, le nombre de personnes dans une équipe doit rester limité. ▪ Typiquement 5-10 personnes ▪ Multifonctionnel (assurance qualité, programmeurs, concepteurs d'interface utilisateur, etc.) ▪ Les membres devraient être à temps plein ▪ L'équipe est auto-organisatrice ▪ L'adhésion peut changer seulement entre les sprints ▪ L’équipe Scrum est composée des personnes qui contribuent à produire un résultat à chaque sprint. Mohamed MANAA Génie Logiciel SCRUM Product Owner ▪ Sait ce qui doit être construit et dans quel ordre cela devrait être fait ▪ Il s’agit généralement d’un expert du domaine métier du projet ▪ Typiquement un chef de produit ▪ Le Product Owner est la personne de l’équipe, et la seule, qui soit imputable du résultat du produit auprès des parties prenantes. ▪ Il prend des décisions de niveau stratégique (choix de la date de livraison du produit ou d’une fonctionnalité majeure à développer en priorité) ▪ Le Product Owner définit le contenu du produit. Pour cela, il identifie les fonctionnalités requises, collectées auprès des parties prenantes et mises dans une liste, appelée backlog. Mohamed MANAA Génie Logiciel SCRUM Le processus Scrum Sprint Planning Meeting : Réunion de planification de sprint Sprint Daily Scrum : Scrum quotidien Sprint Review Meeting : Réunion d'examen du sprint Mohamed MANAA Génie Logiciel SCRUM Sprint Planning Meeting ▪ Une réunion collaborative au début de chaque sprint entre le Product Owner, le Scrum Master et l'équipe ▪ Prend 8 heures et se compose de 2 parties («avant et après le déjeuner») ▪ 1ère partie: ✓ Création de backlog de produit ✓ Déterminer l'objectif du sprint. ✓ Participants: Product Owner, Scrum Master, Scrum Team ▪ 2ème partie: ✓ Participants: Scrum Master, Scrum Team ✓ Créer un backlog de sprint Mohamed MANAA Génie Logiciel SCRUM Sprint ▪ Une itération d'un mois, au cours de laquelle est incrémentée une fonctionnalité du produit ▪ AUCUNE influence extérieure ne peut interférer avec l'équipe Scrum pendant le sprint ▪ Chaque sprint commence par la réunion quotidienne Scrum (Daily Scrum Meeting) ▪ Le sprint donne le rythme auquel sont produites des versions partielles et potentiellement livrables du produit. ▪ Caractéristiques : ✓ Des itérations courtes : les sprints durent d’une semaine à un mois. ✓ Une séquence stricte : les sprints ne se chevauchent pas. ✓ Un rythme régulier : les sprints ont la même durée. Mohamed MANAA Génie Logiciel SCRUM Daily Scrum ▪ Il s’agit d’une courte réunion (15 minutes) qui se tient tous les jours avant le début des travaux de l’équipe. ▪ Participants: Scrum Master (qui en est le président), Scrum Team ▪ Chaque membre de l'équipe doit répondre à 3 questions : ✓ Qu’as tu fais hier ? ✓ Que vas-tu faire aujourd’hui ? ✓ Quels sont les obstacles qui te freinent dans mon travail ? (Es-tu bloqué par quelque chose?) ▪ C’est un bon moyen pour un Scrum Master de suivre les progrès de l’équipe ▪ N'est pas une session de résolution de problème ▪ N’est pas un moyen de collecter des informations sur les retardataires. Mohamed MANAA Génie Logiciel SCRUM Sprint Review Meeting ▪ Se tient à la fin de chaque sprint ▪ La fonctionnalité métier créée lors du sprint est présentée au Product Owner. ▪ Informel, ne doit pas distraire les membres de l'équipe de leur travail Mohamed MANAA Génie Logiciel SCRUM Artéfacts Scrum ▪ Product Backlog ▪ Sprint Backlog ▪ Burn down Charts Mohamed MANAA Génie Logiciel SCRUM Product Backlog ▪ Exigences pour un système, exprimées sous la forme d'une liste hiérarchisée d'éléments en attente ▪ Est géré et appartient à un Product Owner ▪ Feuille de calcul (généralement) ▪ Généralement créé lors de la réunion de planification du sprint (Sprint Planning Meeting) ▪ Peut être changé et redéfini les priorités avant chaque Planning Meeting ▪ Établit la vitesse de l’équipe (combien d’efforts une équipe peut-elle gérer dans un sprint) ▪ Le backlog du produit est la liste des fonctionnalités attendues d’un produit. Mohamed MANAA Génie Logiciel SCRUM Exemple de Product Backlog Élément de Backlog Priorité Estimation En tant que client, je peux passer une commande Élevée 3 En tant que client, je peux annuler ma commande Moyenne 4 En tant que client, je souhaite modifier la quantité Moyenne 3 commandée En tant que gestionnaire, je veux lister la liste des Faible 2 commandes ………. 5 ………. 2 ………. 1 Mohamed MANAA Génie Logiciel SCRUM Sprint Backlog ▪ Un sous-ensemble d'éléments de backlog de produit, qui définissent le travail d'un sprint ▪ Est créé uniquement par les membres de l'équipe ▪ Devrait être mis à jour tous les jours ▪ Pas plus de 300 tâches dans la liste ▪ Si une tâche nécessite plus de 16 heures, elle doit être décomposée. ▪ L’équipe peut ajouter ou soustraire des éléments de la liste. Le Product Owner n'est pas autorisé à le faire Mohamed MANAA Génie Logiciel SCRUM Exemple de Sprint Backlog Tâche Lundi Mardi Mercredi Jeudi Vendredi Coder l’interface 8 6 8 Coder les traitements (Métier) 20 10 16 5 Tester les traitements 10 16 18 4 8 …….. 8 …….. 5 8 Mohamed MANAA Génie Logiciel SCRUM Burn down Charts ▪ Sont utilisés pour représenter le «travail accompli». ▪ Indique le nombre total d'heures de backlog de sprint par jour ▪ Affiche le temps estimé à libérer 60 50 40 30 20 10 0 Lundi Mardi Mercredi Jeudi Vendredi Mohamed MANAA Génie Logiciel

Use Quizgecko on...
Browser
Browser