Cours GL IGA Complet [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

Le Génie logiciel et La qualité logicielle - Introduction Dr. Youssef GAHI [email protected]

IGA Casablanca 2015-2016 1

Objectifs du cours (24 heures) 

Saisir l’importance du génie logiciel 



Comprendre le cycle de vie d’un logiciel et le rôle des différents intervenants. 



Analyse, Conception, Implémentation, Support…

Se familiariser avec les modèles de conception. 



Analyse des besoins, Contrôle de l’évolution…

Conception d’objets réutilisables, API, MDA…

Comment apporter de la qualité a un logiciel? 

Design Patterns, Scrum, Tests unitaire…

2

Plan du cours 

Introduction au génie logiciel (3h) Logiciel vs Génie logiciel  Pourquoi le GL ?  Les différents intervenants dans la production logicielle.  Cycle de vie d’un logiciel. Modèles, Techniques et Processus de développement (4h)  Cycle de développement  Objets réutilisables, API, MDA 



 

Etude de cas (2h) Outils permettant de créer des logiciels de qualités (6h)   



Qualité logicielle (6h) 



Outils de Conception Outils d’implémentation et de gestion Outils d’analyse Patrons de conception (Design Patterns)

Travaux Pratiques (3h)

3

Introduction au génie logiciel

4

Logiciel vs Génie logiciel 

Qu’est ce que c’est logiciel?

Programmes et la documentation associée – cahier de charges, modèles, manuels



Qu’est ce que c’est génie logiciel?

Le génie logiciel comporte des aspects de gestion de projet et des notions de qualité (satisfaire le client) Ceci en utilisant des méthodes, des modèles, et des outils.



Quelle est la différence entre génie logiciel et informatique? 5

Génie logiciel 

Développement en équipe d'un logiciel complexe 



Un intervenant = une (petite) partie du travail

Programmation : entre 15% et 35% du travail 

Analyse, conception, vérification, gestion de projet

Complexité croissante des logiciels  Sécurité  Coût du logiciel (>> coût du matériel) 

6

Pourquoi le GL? 

Si l'on veut maîtriser le développement de systèmes complexes, il faut : 

rédiger de façon claire les spécifications du système (ce que le client attend du produit)  



comment être sûrs que ces spécifications sont complètes ? comment être sûrs que ces spécification sont cohérentes ?

valider/vérifier toutes les étapes du développements 



a-t-on des moyens de validation/vérification (mathématiques) ? de réutiliser des sous-systèmes déjà réalisés (mais pas n'importe comment)  a-t-on des règles, des outils pour aider à la réutilisation ?



Maitriser les coûts.

7

Coût d’un logiciel 

Coût de développement 



Coût d’installation 



Effort jour-homme (entre 500 et 1000 euros par jour)

Frais de déplacement, avion, hôtel…

Coût de support/maintenance 

Résolutions des bugs, assistance… 8

Les défis devant le GL

9

Rôles des intervenants dans le développement logiciel

10

Les commerciaux Présenter des solutions pour les clients.  Accompagner les clients dans la définition de leur besoin (avec l’aide des analystes fonctionnels) 

11

Analyste fonctionnel-Concepteur Etude de faisabilité.  Transformer le besoin fonctionnel en une architecture logiciel.  Choix technologique 

  

Type d’architecture Protocoles Estimation grosse maille

12

Chef de projets Piloter et suivre l’avancement des projets.  Définir les différentes dates en collaboration avec les responsables de développements.  Assurer des réunions avec le client final et les responsables de développements.  Calculer et estimer les couts nécessaires ainsi que la rentabilité du projet. 

13

Responsable de développements Architecture logicielle  Suivre l’avancement de l’équipe  Communiquer les livraisons ou Annoncer les retards.  Assurer des réunions avec les différentes parties notamment les chef de projets. 

14

Développeur 

La réalisation de toute la matière logicielle du projet.  

 

Codage des traitements Tests Préparation des binaires et des scripts Documentation

15

Intégrateur 

Vérification des prérequis



Installation et configuration du produit



Validation des recettes de tests.



Rapport de missions

16

Les partenaires 

Equipes externes



Sous-traitants



Institut



Stagiaires

17

Cycle de vie d’un logiciel

18

Cycle de vie d’un logiciel Analyse des besoins  Spécifications (Contrat commercial)  La conception fonctionnelle et technique  La Réalisation  Vérification et Validation  L’intégration  La recette interne et recette fonctionnelle  La formation  Documentations  Maintenance et évolution 

19

Analyse des besoins Fonctionnalités attendues du système  Point de vue métier, de l'utilisateur  Aider à formuler le besoin  Produit un document textuel, avec schémas, intelligible par le client  Conduit à la définition du cahier des charges => les "spécifications" 

20

Spécifications Ce que doit faire le système  Produit un document textuel avec schémas, lisible par toutes les parties  Base du contrat commercial  Base des tests de vérification de la phase d'installation 

21

Conception générale Comment réaliser le logiciel ?  Choix techniques : explorer plusieurs solutions… Décrire la solution retenue  Architecture générale 



Composants  





Structures de données Fonctionalités

Interactions entre ces composants

Tous les éléments de la spécification doivent être pris en compte 22

Conception détaillée Décompose chaque composant en souscomposants, jusqu'au niveau où le codage devient facile  Précise pour chaque composant : 

  



Son interface Les algorithmes Le traitement des erreurs

Produits :  

L'ensemble de ces descriptions Le plan des tests unitaires (jeux de données) 23

Implémentation Traduction dans un langage de programmation des différents modules  Mise au point  Tests de développements  Commentaires 

24

Vérification et Validation 

Vérification 



Revues des spécifications (checklist)

Validation 

   

Analyse du produit: Sécurité, Gestion des mot de passes… Plateformes de tests indépendante. Beta et Alpha Test Recette des tests interne Tests de charge

25

Test (1) Dans la pratique, il convient d’intégrer les développements unitaires au sein de l’architecture technique cible, tout en testant la cohérence fonctionnelle et technique globale de l’application, avant livraison et installation sur le site du client.



 

Les tests réalisés seront :

Un test spécifique du Framework après développement sur la base de la conception définie au début de la conception fonctionnelle et technique,



Un test de réception des composants achetés pour le projet (modules sous-traités),



Les tests unitaires des fonctions développées,





Les tests d’assemblage sur les plates-formes de développement avec données réelles permettant entre autres le test des procédures de reprise, Les test d’intégration sur les plates-formes, 26



Les tests de charge sur chaque module.

Test (2)  







Tests des composants externes

L’objectif de cette étape est de s’assurer que l’ensemble des composants externes à l’application sont conformes sur les plans fonctionnel et métier aux spécifications prévues dans les phases de conception. Sur un plan technique, il s’agit de s’assurer que le composant technique ne crée aucune interaction non-souhaitée (ou interférence) de par son installation, registration, instanciation,… Les composants externes sont par exemple et suivant les technologies employées des composants OCX, VBX, DLL… La qualification technique pourra avoir été réalisée dans le cadre d’un 27 projet antérieur

Test (3)  

Ces tests sont réalisés au fil de l’eau par l’équipe de développement. Chaque personne de cette équipe consigne que le développement de la fonction X a été réalisé par lui et après exécution en environnement de développement ou sur simulateur. Il s’agit de confirmer que cette fonction est conforme aux spécifications fonctionnelles et techniques décrites.

 

Tests Unitaires

Tests d’assemblage

Ces tests sont réalisés par le chef de projet ou sous son autorité par une personne de l’équipe de développement détachée sur cette mission. Cette phase permet de s’assurer que l’ensemble des composants techniques développés ou acquis s’interfacent correctement : l’application fonctionne sans défaillance, les résultats attendus sont 28 conformes sur les axes règles de calcul et règles de gestion. Cette phase s’effectue sur le jeu d’essai de développement.

Test (4)  

Cette phase de test s’effectue sur une plate-forme d’intégration déclarée conforme par le client à l’environnement de production. Cela concerne tant les aspects techniques (OS serveur, base, client) que les interfaces (entrantes notamment), ainsi que le jeu de données.

 

Tests d’intégration

Tests de charge

L’objectif de cette phase est d’effectuer une montée en charge des données entrantes et existantes dans l’application. La base de données sera chargée avec une volumétrie équivalente au fonctionnement nominal de l’application. Les transactions devront s’effectuer dans les temps de réponses prévues lors de l’élaboration du cahier de charge. A défaut de temps de réponse décrit, l’application devra prouver qu’elle fournit les réponses attendues avec la volumétrie nominale. 29

Installation Dernière étape avant exploitation  Installer le logiciel dans son environnement opérationnel  Vérifier le logiciel dans son environnement opérationnel  Organiser la formation  Planifier la transition 

30

Recettes 

Préparation des procédures de vérification/validation du logiciel 



plan de validation

Version provisoire des manuels :  

d'utilisation et d'exploitation du logiciel

31

Recettes (1)  

Il s’agit d’une validation interne, effectuée par la direction projet, des livrables avant fourniture au client du lot réalisé. La recette interne assure que le chef de projet en charge du projet suit le déroulement des actions de la contractualisation à la mise en œuvre du résultat prévu.

 

La recette interne

La recette fonctionnelle

La recette fonctionnelle est effectuée par le client et plus spécifiquement par le Chef de Projet Utilisateur du Client. Elle est usuellement effectuée sur la plate-forme de développement ou la plate-forme d’intégration. Les compléments et/ou évolutions détectées lors de la recette fonctionnelle peuvent donner lieu à l’établissement 32 d’avenant(s) au contrat

Formations 

La formation peut prendre plusieurs formes. Elle peut viser les utilisateurs mais aussi les équipes techniques (exemple : les équipes de maintenance). Différentes déclinaisons sont envisageables en fonction du contexte projet considéré : 





Les sessions de formation : elles s’appuient sur l’alternance d’un enseignement théorique et des mises en pratiques immédiates (TP). Les sessions de formation doivent impérativement être intégrées dès le début dans le plan projet pour qu’elles soient optimales. Le transfert de compétences : il est principalement dédié aux équipes techniques d’exploitation ou de maintenance. L’objectif est de traiter sur la fin du projet l’ensemble des points critiques du projet en parfaite transparence. L’accompagnement en production : il se met en place lorsque la montée en charge et/ou le déploiement représente(nt) un enjeu majeur et critique du projet. Ainsi, l’ensemble des anomalies 33 pouvant survenir sont traitées en collaboration directe avec l’équipe projet.

Documentation Les manuels d'utilisation et d'exploitation doivent être prêts au plus tard lors de l'installation  Selon la complexité du logiciel : 

  

 

Guide d'installation Guide de l'utilisateur Guide de l'opérateur Manuel de référence Documentations des composants logiciels 34

Guide d’installation Fonctionnalités du logiciel  Architecture  Interfaces utilisateurs  Comportements en cas d'erreurs  Performances requises  Interfaces avec autres logiciels  Interfaces avec le(s) matériel(s)  Contraintes de réalisations (matériels, logiciels, normes…) 

35

Guide de l’utilisateur Le document décrivant l'architecture générale  Un plan d'intégration, avec un plan des tests d'intégration (procédures de tests, jeux de données) 

36

Maintenance et évolution 

Corrections des erreurs



Prise en compte de nouveaux cas d'utilisation



Ajout de nouvelles fonctionnalités

37

Cycle de développement d’un logiciel

38

Rappel 

C’est quoi un logiciel ? Programmes et la documentation associée – cahier de charges, modèles, manuels



C’est quoi Le Génie Logiciel ? Le génie logiciel comporte des aspects de gestion de projet et des notions de qualité (satisfaire le client) Ceci en utilisant des méthodes, des modèles, et des outils.



Les intervenants dans le Génie Logiciel?

Les Commerciaux, Analyste, Chef de Projets, Resp. de Dev, Développeur, Intégrateur, Partenaires. 

Les étapes du Génie Logiciel ?  

      



Analyse des besoins Spécifications (Contrat commercial) La conception fonctionnelle et technique La Réalisation Vérification et Validation L’intégration La recette interne et recette fonctionnelle La formation Documentations Maintenance et évolution

39

Le Cahier des charges 

Le cahier des charges est un document par lequel un demandeur (entreprise, organisme privé ou public) exprime le besoin devant être satisfait par un objet à concevoir. Pour cela, il précise les fonctions de service qu'il doit assurer et les contraintes à respecter. C'est un contrat qui engage le concepteur.



Il servira de "consigne de recherche" pour que les idées abstraites de départ débouchent sur un projet concret. Pour chaque fonction, il définira également les critères rentrant en compte, le niveau de performance attendu et la flexibilité tolérée.



Pour ne rien oublier lors de la rédaction du CdCF on se doit d'être rigoureux et méthodique.

40

Le processus de définir les besoins Etude de faisabilité

Trouver les besoins et analyse Spécification des besoins Validation des besoins

Rapport de faisabilité Modèles du système Besoins d’usager et du système

Document des besoins (Cahier de charge) 41

Cahier des charges d'un robot aspirateur L'expression du besoin

Le besoin Réduire le temps consacré au ménage en réalisant de manière automatique le passage de l'aspirateur. La réponse actuelle au besoin De nombreuses entreprises fabriquant des aspirateurs traditionnels ont le projet de concevoir ce type d'aspirateur. Actuellement, très peu de produits fiables sont disponibles sur le marché. Les objectifs Réaliser un aspirateur robot fiable pouvant remplacer un aspirateur traditionnel, à un prix acceptable pour les ménages. Les interventions humaines 42 sont à limiter au maximum.

Cahier des charges d'un robot aspirateur

2 2 3

Fonctions de service et contraintes Aspirer la poussière au sol sans intervention de l'utilisateur Aspirer la poussière sous les meubles Aspirer le long des murs et des obstacles Éviter les obstacles en douceur

4

Passer sur des obstacles (tapis, seuils de porte...)

5 6

Ne pas tomber dans les escaliers Stocker la poussière aspirée

7

Assurer la sécurité des personnes et des animaux

8 9 10

Doit être esthétique Être transportable Pouvoir être rangé dans un placard

1

43

Cahier des charges fonctionnel Exemple : Support de téléphone portable Fonctions Doit permettre de maintenir un téléphone mobile. Doit être visible la nuit

Doit assurer la sécurité de l'utilisateur.

Doit plaire, Doit être beau, esthétique Doit être résistant Sera posé (support de téléphone mobile) sur un plan horizontal pour une lisibilité aisée de 44 l'écran.

Cahier des charges fonctionnel Application : Support de téléphone portable Fonctions Être réalisable au collège Être compétitif (coût matière maxi 5 euros) Doit être peu onéreux

Assurer une bonne autonomie

45

Le processus de logiciel 

Activités 

  

Spécification – qu’est ce que le logiciel doit faire et les contraintes posées au développement Développement - production logiciel Validation – vérification si le logiciel est celui qui est attendu du client. Evolution – modification du logiciel en accordance avec les besoins.

46

Modèles génériques Effet Tunnel  Cascade  Modèle en V  Modèle en W  Modèle en Spirales  Développement évolutif et itératif  Développement itératif incrémental  Basé à l’assemblage de composants 

47

L’effet tunnel Un jour, peut-être ...

Le départ est connu

Le modèle de développement en tunnel n’offre aucune visibilité sur l’état d’avancement du logiciel. 48

Le modèle en cascade 

Cycle de vie linéaire sans aucune évaluation entre le début du projet et la validation



Le projet est découpé en phases successives dans le temps



Chaque phase ne peut remettre en cause que la phase précédente.



Le développement en cascade est en général rythmé par la génération de documents qui servent de validation pour le passage d’une phase à l’autre



Chaque phase est donc achevée avant que ne débute la suivante. 49

Cascade

50

Cascade 

Problèmes  



Avantages 



Il est difficile de séparer les étapes On peut l’utiliser quand les besoins sont bien définis et ils sont stables. Bien documenté à chaque phase

Désavantages



Rigide (on ne peut pas de répondre au besoins nouveaux ou modifiés des clients) Les vrais projets suivent rarement un développement séquentiel. Etablir tous les besoins au début d’un projet est difficile. Aucune validation intermédiaire (aucune préparation des phases de vérification)



Sensibilité à l’arrivée de nouvelles exigences refaire toutes les étapes

   

51

Le modèle en « V » 

A ce jour, le cycle en V reste le cycle de vie le plus utilisé. C’est un cycle de vie orienté test



A chaque activité créative (spécification, conception et codage) correspond une activité de vérification (validation, intégration, tests unitaire)



Chaque phase en amont prépare la phase correspondante de vérification (la vérification est prise en compte au moment même de la création). 52

Le modèle en « V »

53

Les limites des cycles de vie en « V » Les cycles de vie sont trop longs. Les relations entre les clients et les fournisseurs ne sont pas suffisamment formalisées.  Ils ne gèrent pas les risques.  L’intégration est trop tardive dans le cycle de vie.  La documentation est réalisée d’abord et le logiciel après …  

54

Cycle en V 

Avantage: 



La préparation des dernières phases (validationvérification) par les premières (construction du logiciel), permet de d’éviter d’énoncer une propriété qu’il est impossible de vérifier objectivement après la réalisation.

Inconvénients:    

Construit-on le bon logiciel? le logiciel est utilisé très (trop) tard Il faut attendre longtemps pour savoir si on a construit le bon logiciel Difficile d’impliquer les utilisateurs lorsque qu’un logiciel utilisable n’est disponible qu’à la dernière phase. Idéal quand les besoins sont bien connus, quand 55 l’analyse et la conception sont claires.

Le modèle en « W » Ce modèle est une variante du modèle en « V ».  Le cycle de développement ne commence que quand les problèmes ou les besoins sont parfaitement connus (cf. module de communication selon la méthode Merise).  Un cycle en « W » peut être couplé à un cycle en « V », quand il est nécessaire de décomposer le système en sous-systèmes. 

56

Le modèle en « W » Exigences brutes

Spécification des IHM du système

Vérification des flux logiques

Validation ou tests d’acceptation

Conception des sous-systèmes

Intégration et tests des sous-systèmes

Conception des modules

Intégration et tests des modules

2ème cycle de Goldberg Codage et tests unitaires

57

Le modèle en spirale  





Ce modèle complexe est dû à Boehm. Il apporte une vue évolutive au modèle en cascade au travers d’une approche fondée sur l’analyse et la gestion des risques, puis la conception et la réalisation de prototypes évolutifs en fonction de l’avancement du projet. Le développement présente quatre grandes phases qui se succèdent au fur et à mesure de la construction de la spirale, Au dernier tour de la spirale, le produit est totalement défini, les risques résolus et le produit développé. 58

Développement spirale

59

Le modèle en spirale 







Premier cycle : Analyse du risque → Prototype 1 → Simulations et/ou modélisations et/ou bancs d'essais → Définition de la mission (par la MO) → Planification de l'analyse (c'est-à-dire du cycle suivant, portant principalement sur un travail d'analyse) Second cycle : Analyse du risque → Prototype 2 → Simulations et/ou modélisations et/ou bancs d'essais → Définition (par la ME) et validation (par la MO) des besoins → Définition du plan de développement (c'est-à-dire des deux cycles suivants, consacrés à la conception, au codage, aux tests et à la mise en oeuvre du logiciel) Troisième cycle : Analyse du risque → Prototype 3 → Simulations et/ou modélisations et/ou bancs d'essais → Définition (par la ME), vérification (par la ME) et validation (par la MO) de la conception générale → Réajustement, le cas échéant, du plan de développement (ne concerne que la conception détaillée, le codage, les tests et la mise en oeuvre du logiciel) Quatrième cycle : Analyse du risque → Prototype 4 → Simulations et/ou modélisations et/ou bancs d'essais → Conception détaillée, codage, tests divers et mise en oeuvre du logiciel 60

Développement spirale 

Secteurs   



Préciser les objectifs Définir et minimiser le risque Développement et validation Planifier l’itération suivante

61

Processus évolutif

Aperçu de description

Spécification

Version initiale

Développement

Versions intermédiaires

Validation

Versions finale

62

Le cycle itératif incrémental Risques initiaux, portée du projet

Planification de l’itération Développement de l’itération Itération N

Évaluation

Révision du plan du projet Risques éliminés Révision des risques 63

Itération

Phase

Objectif

Itération préliminaire

Etude d’opportunité

Comprendre le problème

Décision Ressources pour l’élaboration

Itération d’architecture

Elaboration

Comprendre la solution

…xN



… Ressources pour la construction

Itération de développement

Construction

Réaliser la solution

…xN



… Livrer le produit (version bêta)

Itération de transition …xN

Transition …

Transmettre la solution … Recette client 64

Les avantages des cycles de vie itératifs et incrémentaux 



Ces processus sont basés sur l’évolution de prototypes exécutables :  L’utilisateur est placé devant des situations d’utilisation concrètes. Il est partenaire du projet.  L’intégration est progressive et permet d’éviter l’effet « big bang » à l’approche de la date de livraison.  Les progrès se mesurent par des programmes démontrables et non par des documents ou estimations. Le découpage par incréments permet de réduire la complexité du système en la ventilant dans les incréments. 65

Développement par composants

Spécification des besoins

Analyse des composants

Conception avec réutilisation

Modification des besoins

Développement et intégration

Validation

66

Origine et définitions 

Problèmes   





Fiabilité – comment l’utilisateur va croire que le composants ne va pas échouer Certification – qui va certifié le composant Les propriétés intégrales – comment les prévoir Compromis des besoins – comment faire le compromis entre les besoins assurés des différents composants

Caractéristiques     

Standardisé Indépendant Composable Déployable Documenté 67

Interface de composants

Requires interface Defines the services from the component’s environment that it uses

Provides interface Component

Defines the services that are provided by the component to other components

68

Composants et objets Les composants sont déployables  Les composants ne définirent pas des types  L’implémentation des composants est opaque  Les composants sont indépendant de langage  Les composants sont standardisés 

69

Modèles 

Définition 



Le modèle de composants c’est la définition des standard pour implémentation, documentation et déploiement du composant

Exemples   

EJB .NET (COM+) Corba Component Model

70

Eléments du modèle Customisation

Naming convention Composition Interface definition

Specific interfaces

Interfaces

Documentation Meta-data access Usage information

Packaging

Evolution support

Deployment and use

Component model

71

Gestion des risques 

Qu’est ce que c’est risque? La probabilité que quelque circonstances défavorables vont arriver



Types de risque   

De projet – affecte l’emploi de temps ou les ressources De produit – affecte la qualité et le comportement du logiciel D’organisation – affecte le l’organisation

72

Gestion des risques Identification de risque  Analyse de risque 





Planifier le risque 



Estimer la probabilité et conséquences; Plans d’éviter et minimiser les effet du risque;

Suivi du risque

73

Gestion des risques

Identification des risques

Analyse

Planifier

Suivi

Liste de risques potentiels

Liste prioritaire des risques

Plans pour éviter les risques et d’urgence

Estimer le risk

74

Gestion des risques 

Identification du risque    





Technologiques Personnel. Organisation. Besoins. Estimation.

Analyse – La probabilité et les effets du sinistre  

Probabilité – très basse, basse, modérée, haute, très haute. Effets – catastrophique, sérieux, tolérable, insignifiant.

75

Gestion des risques 

Planifier – pour chaque risque   



Stratégie d’éviter le risque – diminuer la probabilité Stratégie de minimisation – minimiser l’effet du sinistre Plan d’urgence – quand l’événement arrive qu’est ce qu’on doit faire.

Suivi   

Estimer chaque risque par périodes réguliers pour voir si la probabilité a changé. Estimer les effets de chaque risque Ne pas voir peur de discuter les problèmes

76

Annexe 

Cahier de Charge: 



est le recueil des exigences fonctionnelles demandées par la maîtrise d'ouvrage, il décrit des règles de gestion et de traitement dans le langage du métier (vue externe du système, c'est la vision utilisateur).

Cahier de Spécifications: 

est la traduction du cahier des charges en termes plus techniques (données en entrée, données en sortie, description des écrans de l'IHM, règles de calcul, de transformation des données, ...) dont le but est de décrire de façon détaillée comment les exigences fonctionnelles vont être implémentées 77

Annexe (1) 

Spécifications:     

Des scenarii plus détaillés Base de la conception du système Ils peuvent être inclus dans le cahier de charge et dans le contrat On peut utiliser et des modèles du système (les UML diagrammes) Ils sont interdépendants avec l’architecture du système

78

Annexe (2) 

Désavantages de la langue naturelle   



Ambiguïté Sur-flexibilité Manque de structure

Alternatives    

Langues structurées – formulaires, modèles, tableaux Langages spécifiques – rarement utilisés Notations graphiques – UML Spécifications mathématiques 79

Annexe (3) Modifier un item

Ajouter un item

Supprimer un item Consultation de l’inventaire

Commande fournisseur

Saisir livraison

Responsable des opérations Produire des rapports

80

Annexe (4) 

Spécifications fonctionnelles   



Le guichet doit vérifier la validité de la carte insérée Le guichet doit valider le code PIN. Le guichet doit allouer une somme maximum de 5000 DH

Spécifications non fonctionnelles:   

Le système de Guichet doit être réalisé en C++ Le système doit utiliser un cryptage de 256 bits Le système doit vérifier le PIN en moins de 3 sec.

81

Méthodes d’analyse et de Conception

82

Analyse et Conception 

Analyse du système   

modélisation du domaine, modélisation de l’existant (éventuellement), définition d’un modèle conceptuel (ou spécification conceptuelle), plan de validation.



On élabore un dossier d’analyse plus un plan de validation.



Conception    



proposition de solution au problème spécifié dans l’analyse organisation de l’application en modules et interface des modules (architecture du logiciel), description détaillée des modules avec les algorithmes essentiels (modèle logique) structuration des données

On élabore un dossier de conception plus un plan de test global et par module

83

Méthodes d’Analyse et de Conception 

Proposition d ’une démarche distinguant les étapes du développement dans le cycle de vie du logiciel (modularité, réduction de la complexité, réutilisabilité éventuelle, abstraction)



Utilisation d ’un formalisme de représentation qui facilite la communication, l’organisation et la vérification



Production de documents (modèles) qui facilitent les retours sur conception et l’évolution des applications

84

Techniques de Conception 

Méthodes fonctionnelles hiérarchiques 



Méthodes données 



Data-Flow/SADT/SA-SD, Structure-Chart, ...

Entité-Relation, MERISE, UML

Méthodes comportements 

Réseaux de Pétri, ... 85

Méthodes fonctionnelles: SADT 

SADT : technique structurée d'analyse et de modélisation

86

Méthodes fonctionnelles: SADT (2)

87

Méthodes fonctionnelles: SADT (3)

88

Méthodes fonctionnelles: Data Flow

sang

Paramètres du sang Capteur de glucose sanguin

Analyse de glucose sanguin

Niveau du glucose

Calcul du besoin d’insuline insuline

Instructions vers la pompe

Pompe d’insuline

Gestion de délivrance d’insuline

Besoin d’insuline

89

Méthodes fonctionnelles: Data Flow (2) Visio 2000

Visio 5.x From Flow Chart / Data Flow Diagram

From Software Diagram / Gane-Sarson DFD

From Flow Chart / Data Flow Diagram

ID #

Process Process

Process

Data Store Data Store

1

Data Store

ID #

External Entity

External Entity

External Entity

90

Méthodes fonctionnelles: Data Flow (3)

91

Méthodes fonctionnelles: Data Flow (4)

92

Méthodes données: Entité-Relation 





Entité [définition de Chen] :  chose qui peut être identifiée distinctement Propriété (ou Attribut) :  les entités (et les associations) sont décrites par des propriétés caractérisées par un nom et un type Association [définition de Chen] :  Lien entre entités  elle peut être binaire, ternaire, n-aire

93

Méthodes données: Entité-Relation (2)

94

Méthodes données: Merise 

Merise 

  

Une approche systémique Approche fonctionnelle A une vision duale des données-traitements A trois niveaux d’abstraction   

Niveau conceptuel Niveau logique Niveau physique

95

Méthodes données: Merise - MCT

96

Méthodes données: UML Système réel

Analyse Modèle d’Analyse

Conception Modèle de Conception

Réalisation Modèle de Réalisation

Déploiement Modèle de Déploiement

BOOCH, OMT, OOSE,…

UML (Unified Modeling Language)

97

Méthodes données: UML (2) Résumé • UML est une notation, pas une méthode • UML est un langage de modélisation objet • UML convient pour toutes les méthodes objet

Programmation Orientée Objet modéliser informatiquement des éléments d'une partie du monde réel en un ensemble d'entités informatiques (objets) Intérêt d'une méthode objet • définir le problème à haut niveau sans rentrer dans les spécificités du langage • définir un problème de façon graphique • utiliser les services offertes par l’objet sans rentrer dans le détail de programmation (Encapsulation) • Réutilisation du code 98

Méthodes données: UML (3) Voiture Numéro de série : Int Poids : double Immatriculation : String Kilométrage : double

FIAT-UNO-17 233434 : Numéro de série 1500 kg : Poids 8864 YF 17 : Immatriculation 33 000 : kilométrage

Démarrer () Arrêter() Rouler()

Renault-Clio-17 5323454 : Numéro de série 1500 kg : Poids 64 YFT 17 : Immatriculation 23 000 : kilométrage

Peugeot-206-75 3434 : Numéro de série 1700 kg : Poids 8634 YGG 75 : Immatriculation 15 000 : kilométrage

99

Méthodes données: UML (4) 



Vues statiques  Les diagrammes  Les diagrammes  Les diagrammes  Les diagrammes  Les diagrammes

de classes d’objets de cas d’utilisation de composants de déploiement

Vues dynamiques  Les diagrammes  Les diagrammes  Les diagrammes  Les diagrammes

de séquence de collaboration d’états-transition d’activités

100

Méthodes données: UML (5)

Cas d’utilisation

Acteur

Objectif du système, motivé par un besoin d'un (ou plusieurs) acteur(s) Personne ou composant d’origine d’une interaction avec le système Documente un élément du modèle

Note

Relation d’utilisation

Le cas source contient aussi le comportement décrit dans la cas destination

101

Méthodes données: UML (6)

102

Méthodes comportements Réseaux de Pétri  





C'est un ensemble d'automates à états finis communicants Pour pouvoir analyser :  on représente les états internes des automates et les communications entre les automates avec les mêmes primitives Graphe avec deux types de nœuds  les états (partiels = des automates) sont des ronds ce sont les places  les transitions (arcs dans la représentation des automates) sont des rectangles (barres) Les communications  asynchrones : ajout (ou fusion) de places  synchrones : fusion (ou ajout) de transitions 103

Méthodes comportements Réseaux de Pétri (2)

104

Outils d’Analyse et d’implémentation

105

Les outils de génie logiciel Outils  Outils  Outils  Outils  Outils  Outils  Outils  Outils 

d’Analyse de design de modélisation (diagrammes) de programmation de gestion de projet de prototype de qualité de maintenance 106

Outils d’Analyse Ces outils permettent de rassembler les besoin et les obligations.  Vérifier les redondance et traduite automatiquement les spécifications textes vers des schémas basique.  Exemples: 



  

Accept 360. Visual Paradigm. CaseComplete. Visible Analyst. 107

108

Outils de Design Ces outils aident les concepteurs de logiciels pour concevoir la structure du bloc du logiciel qui peut en outre être décomposé en modules plus petits en utilisant des techniques de raffinement.  Ces outils montrent l’interaction entre les différents gros modules.  Exemples: Animated Software Design 

109

110

111

Outils de modélisation Ces outils sont utilisés pour représenter les composants du système, les données et les flux de contrôle.  Ces composants sont représentés en frome graphique tout en montrant l’interaction entre les différents objets.  Exemples: Flow Chart Maker, jMerise, Rational Roze, ArgoUML. 

112

113

114

115

Outils de prototypage Prototype de logiciel est une version simulée du logiciel prévu. Le Prototype fournit une première impression du produit et simule quelques aspect du produit réel.  Un outil de prototypage est compose de plusieurs briques graphiques pour créer une version rapide.  Exemples: Windev, Dreamweaver, Mockup Builder, Visual Sudio, NetBeans. 

116

Outils de prototypage (2)

117

Outils de programmation 

Ces outils consistent a construire les modules et les différents composants.



Ces outils permettent aussi de générer des livrables, simuler et tester les fonctionnalités.



Exemples: Eclipse, NetBeans, Visual Studio 118

Outils de programmation: Eclipse

119

Outils de programmation: NetBeans

120

Outils de programmation: V. Studio

121

Outils de Gestion de Projet Ces outils sont utilisés pour la planification du projet, le coût, l'effort, planification de projet et planification des ressources.  Les gestionnaires doivent respecter strictement l'exécution du projet à chaque étape mentionnée dans la gestion de projet logiciel.  Outils de gestion de projet aident à stocker et partager des informations sur le projet en temps réel dans toute l'organisation.  For example: SCRUM. 

122

Les méthodes agiles 

Une méthode agile est une approche itérative et incrémentale, qui est menée dans un esprit collaboratif avec juste ce qu’il faut de formalisme

 

Elle génère un produit de haute qualité tout en prenant en compte l’évolution des besoins des clients



Concepts formalisés en 2001 par le Manifeste Agile. 123

Les méthodes agiles (2)  Les 4 principes essentiels du Manifeste Agile:  L'équipe : Personnes et interactions plutôt que processus et outils

 L'application :Logiciel fonctionnel plutôt que documentation complète  La collaboration :Collaboration avec le client plutôt que négociation de contrat  L'acceptation du changement :Réagir au changement plutôt que suivre un plan.

124

Scrum – Principes clés 



Scrum est une méthode agile qui permet de produire la plus grande valeur métier dans la durée la plus courte. Méthode itérative et incrémentale: 

Réalisation d’un ensemble de fonctionnalités par itération Itération d’une durée fixe (d’2 à 4 semaines)// sprint



Livraison d’un produit partiel fonctionnel par itération





Participation du client:  

Définition des fonctionnalités prioritaires Ajout de fonctionnalités en cours de projet (pas pendant un sprint !)

125

Scrum – Les rôles 

Les rôles:  



Le product owner Le scrummaster L’équipe

12 6

Scrum – Planifier un projet LCL GUR Remaining 300

250

Number

200

150

100

50

0 0

1

2

3

4

5

6

7

8

9

10

11

12

Jour



Constitution du backlog produit par le product owner.



Répartition en sprints et en releases. 127

Scrum – Organisation 1/5

Source : www.scrumalliance.org

1. Backlog produit (ou catalogue des besoins)  Besoins priorisés par le product owner  Besoins évalués par l’équipe 128

Scrum – Organisation 2/5

Source : www.scrumalliance.org

2. Backlog de sprint  Extrait du backlog produit  Besoins éclatés en tâches 129

Scrum – Organisation 3/5

3. Sprint  Développement des fonctionnalités du backlog de sprint  Aucune modification du backlog de sprint possible 130

Scrum – Organisation 4/5

Source : www.scrumalliance.org

4. Mêlée quotidienne  Point de contrôle quotidien de l’équipe  Interventions régulées – 2 min. par personne 131

Scrum – Organisation 5/5

Source : www.scrumalliance.org

5. Incrément logiciel : livré au product owner à la fin du sprint. 132

Scrum – Indicateurs de projet 1/2 

Le tableau des tâches

133

Scrum – Indicateurs de projet 2/2 

Le burndown chart

134

Scrum – Ingénierie logicielle 

Scrum est une méthode de gestion de projet



Doit être complétée par des techniques d’ingénierie logicielle



Complémentaire avec Extreme Programming :  

Test Driven Development Intégration continue 135

Outil de qualité 

Assurance de la qualité dans un développement logiciel consiste a mettre en place un processus d'ingénierie et des méthodes adoptées pour développer le produit conforme selon les normes du standard.

 Qualité logicielle.

136

Qualité Logiciel 

Les outils de versionning 



Les tests unitaires 





Junit

L’intégration continue 



SCM, SVN, SubVersion

Hudson, Jenkins

Les outils de compilation Inspection de code 

Sonar, 137

Qualité Logiciel: Versioning 

Gérer les sources dans le temps



Conserver un historique de toutes les modifications - plusieurs versions de chaque fichier



Coordonner les travaux de plusieurs auteurs



Montrer les différences entre les versions d'un fichier



Modifications du document - la raison du changement

138

Qualité Logiciel: Versioning (2) client

checkout (first time)

(do some work, test) check status update (resolve conflicts) commit (do more work, test)

server

Envoyer la version ( n ) Vérifier s’il y a des changements Mettre a jour la version locale par celle du serveur Mettre a jour le serveur par le contenu local

Qualité Logiciel: Versioning (3) Repository parent dir

Root Project 1

Project 1

trunk

trunk

tags

tags

branches

Project 2

branches

Project 2

trunk

trunk

tags

tags

branches

branches

Qualité Logiciel: Versioning (4)

/var/svn/kuclock revision 4 revision 3 revision 2 revision 1 (initial repo structure)

revision 3:  content diffs  author  date 

reason for change (comment)

revision 2:  initial project check-in  ...etc...

Qualité Logiciel: Versioning (5) 0

Numéro de la révision est augmentée pour chaque transaction qui modifie le repository.

1

2

3

Propriétés d’un Repository   

Histoire de toutes les modifications apportées aux fichiers et répertoires. Il est possible de récupérer une version précédente d'un fichier. Contrôle d’accès  



Autorisation de lecture / écriture pour les utilisateurs et les groupes Les autorisations peuvent appliquer à repo, répertoire ou un fichier

Logging   

Auteur du changement La date du changement La raison du changement

SVN cycle de vie Soumettre les changements

Créer une copie locale svn checkout svn update

Subversion Repository

svn commit 106

100

Fixer les conflits

Faire des changements svn add svn move svn delete

svn diff svn resolved 105

Vérifier ce qui a été changé

svn status -u

Mettre a jour la copie locale svn update

Qualité Logiciel: Les tests unitaires 

Junit

145

Qualité Logiciel: Les tests de charge 

jMeter

146

Qualité Logiciel: Les tests de non régression 

Cahier de Tests

MyIcIphone Client

Tel : +33 (0)2 98 14 30 40

Doc Reference

Author Audited by Approved by

Fax : +33 (0)2 98 14 39 06

Mail : [email protected]

Title Test document

File Name MyIcIphone – MyIcTestGuide.doc

Fonction

Name

Ingénieur développeur Team Leader / Contact Administrative Manager

Y. Gahi

Alcatel-Lucent Services for Enterprise All Rights Reserved © Alcatel-Lucent 2007

147

Qualité Logiciel: L’intégration continue

Spécifications

Spécifications

Développeme nt

Intégration

Développement Intégration

148

Qualité Logiciel: L’intégration continue

149

Qualité Logiciel: L’intégration continue 

Hudson

150

Qualité Logicielle: Outil de compilation 

Debuggage

151

Qualité Logicielle: Inspection du code 

Cobertura et Sonar

152

Qualité Logicielle 4 Build + Tests 5 Déploiement

$ Gcc –c *.c –o test Compiling… Compilation Sucessfull Testing… Junit tests … OK Integration tests … OK Performance tests … OK Code Inspection … 86% Deploying in test environnement … OK

Serveur de test

6 Notification

Serveur d’intégration 3 Update

Serveur de recette

2 Vérification des

modifs

Postes de dev

Serveur de production

1 Commit

SCM

Outils de maintenance 

La maintenance du logiciel comprend des modifications dans le produit logiciel après sa livraison.



Des logs automatiques, des prise d’ecrans, rapports techniques…



Exemples: Bugzilla, JIRA.

154

Outils de maintenance (2): Bugzilla 

Bugzilla

155

Design Patterns

156

Les patrons de conception 

Patron de conception = design pattern

Un design pattern traite un problème de conception recurrent.  Ne pas réinventer la roue.  Facilite la communication entre développeurs 



Il apporte une solution générale, indépendante du contexte  Description de l'organisation de classes et d'instances en 157 interaction pour résoudre un problème de conception

les patrons de conception (2)  

Quatre éléments principaux définissent un patron Objectif 



Problème / Motivation 





Quand appliquer le patron de conception Relations problématiques entre les classes

Solution proposée   



Description de son utilité

Eléments impliqués Relations entre les éléments Schémas conceptuels (e.g., diagrammes UML)

Conséquences  

Compromis éventuels Qualité de la solution 158

Catégories de Design Patterns 

Création  



Structure 





Description de la manière dont un objet ou un ensemble d’objets peuvent être créés, initialisés, et configurés Isolation du code relatif à la création, à l’initialisation afin de rendre l’application indépendante de ces aspects Description de la manière dont doivent être connectés des objets de l’application afin de rendre ces connections indépendantes des évolutions futures de l’application Découplage de l’interface et de l’implémentation de classes et d’objets

Comportement  

Description de comportements d’interaction entre objets Gestion des interactions dynamiques entre des classes et des objets

159

Design Patterns du GoF

160

Création 

Abstraction du processus de création.



Encapsulation de la logique de création.



On ne sait pas a l'avance ce qui sera créée ou comment cela sera créé.

161

Création: Singleton 

Problèmes: 

 



Certaines applications possèdent des classes qui doivent être instanciées une seule et unique fois Assurer qu'il n'existe qu'une seule instance de la classe Fournir un moyen d'obtenir cette instance unique

Solution: 

Une seule instance est renvoyée a chaque fois 162

Cas d’utilisation 

le cas d’une classe qui implémenterait un pilote pour un périphérique, ou encore un système de journalisation. En effet, instancier deux fois une classe servant de pilote à une imprimante provoquerait une surcharge inutile du système et des comportements incohérents.

163

Meilleur Solution La première étape consiste à empêcher les développeurs d’utiliser le constructeur de la classe pour l’instancier  déclarer privé tous les constructeurs de la classe. 

Nous allons construire un pseudo constructeur. 

il faut déclarer une méthode statique qui retournera un objet correspondant au type de la classe 

164

Exercice 

On veut créer un Aeroport ainsi que des objets de type Avion. Voici le code des classes Aeroport et Avion, ainsi que de la classe test de l'ensemble.

On souhaite que les clients, les objets de type Avion, ne puisse pas créer plus d'un Aeroport,afin qu'ils se situent tous dans un même Aeroport. Comment empêcher la possibilité à un Avion de créer un Aeroport s'il en existe déjà un ? 

165

Création: Factory 

Problèmes:  



Le client ne peut déterminer le type d'objet à créer qu'à l'exécution Il y a une volonté de centraliser la création des objets

Solutions: 



Concevoir une classe qui va instancier différents types d'objets suivant un paramètre fourni Des applications individuelles de définir elles166 mêmes leurs propres objets à créer

Cas d’utilisation 



une usine va fabriquer des produits en fonction du modèle qu'on lui indique. L'idée la plus simple pour répondre à ce besoin est d'écrire une succession de conditions qui suivant le modèle demandé, instancie et retourne l'objet correspondant. Le problème avec cette implémentation, c'est que la classe correspondant à l'usine va être fortement couplée à tous les produits qu'elle peut instancier car elle fait appel à leur type concret. Or ce code va être amené à évoluer régulièrement lors de l'ajout de nouveaux produits à fabriquer ou de la suppression de certains produits obsolètes.

 On se retrouve alors avec du code fortement couplé, qui risque d'être dupliqué à plusieurs endroits de l'application. 167

Meilleur Solution La première solution est de regrouper l'instanciation de tous les produits dans une seule classe chargée uniquement de ce rôle.  On évite alors la duplication de code et on facilite l'évolution au niveau de la gamme des produits.  L'utilisateur du produit fait appel à la Fabrique Simple pour obtenir un Produit.  L'utilisateur du produit est donc fortement couplé uniquement à la Fabrique Simple et non à tous les produits 168 qu'il prend en charge. 

Meilleur Solution (2) 

Etape 1: Créer un interface

 Etape2: Créer les Classes

 Etape3: Créer le Factory

169

Meilleur Solution (3) 

Etape4: utiliser le Factory

170

Exercice Modifier la structure pour Eviter les duplications et optimiser l’architecture a l’aide du concept Factory. Règles: 1) On définit un interface qui contient la méthode commune. 2) Toutes les classes implémente l’interface. 3) On définit une nouvelle classe qui se charge de la création des différents objets. 4) La nouvelle n’utilise pas le type Programme1,… mais plutôt l’interface générique. 5) Le client ne communique qu’avec cette classe.

171

Structure 

Ces modèles de conception tentent de composer des classes pour bâtir de nouvelles structures.



Comment sont assemblés les objets.



Découpler l'interface de l'implémentation.



On obtient donc une structure plus large mais toujours facilement manipulable.

172

Structure: Adaptateur 

Problème:  



L’utilisation d’une classe existante dont l’interface ne nous convient pas. Utilisation de plusieurs sous-classes dont l’adaptation des classes est impossible par dérivation

Solutions: 



L'Adapteur ou Adapter est un moyen commode de faire fonctionner un objet avec une interface qu'il ne possède pas. L'idée est de concevoir une classe supplémentaire qui se charge d'implémenter la bonne interface (L'Adapteur) et d'appeler les méthodes correspondantes dans l'objet à utiliser (L'adapté). 173

Cas d’utilisation 

Le système doit intégrer un soussystème existant. Ce sous-système a une interface non standard par rapport au système.



Cela peut être le cas d'un driver bas niveau pour de l'informatique embarquée. Le driver fournit par le fabricant ne correspond pas à l'interface utilisée par le système pour d'autres drivers. 174

Meilleur Solution La solution est de masquer cette interface non stantard au système et de lui présenter une interface standard. La partie cliente utilise les méthodes de l'Adaptateur qui utilise les méthodes du soussystème pour réaliser les opérations correspondantes. 

175

Structure: Composite 

Problème: 



Etablir des structures arborescentes entre des objets et les traiter uniformément.

Solutions:  

Le modèle Composite cherche à éliminer toute différence entre un groupe d'objets et un objet. Il s'agit d'une démarche récurrente valable pour tous les problèmes qui font émerger de nouvelles structure par association.

176

Cas d’utilisation 

Vous avez l'impression d'utiliser de multiples objets de la même façon, souvent avec des lignes de code identiques ou presque. Par exemple, lorsque la seule et unique différence entre deux méthodes est que l'une manipule un objet de type Carré, et l'autre un objet Cercle. Lorsque, pour le traitement considéré, la différenciation n'a pas besoin d'exister, il serait plus simple de considérer l'ensemble de ces objets comme homogène.

177

Meilleur Solution 



Un exemple simple consiste à considérer l'affichage des noms de fichiers contenus dans des dossiers :  Pour un fichier, on affiche ses informations.  Pour un dossier, on affiche les informations des fichiers qu'il contient. Dans ce cas, le patron composite est tout à fait adapté :  L'Objet est de façon générale ce qui peut être contenu dans un dossier : un fichier ou un dossier,  L'ObjetSimple est un fichier, sa méthode affiche() affiche simplement le nom du fichier,  L'ObjetComposite est un dossier, il contient des objets (c'est à dire des fichiers et des dossiers). Sa méthode affiche() parcourt l'ensemble des objets qu'il contient (fichier ou dossier) en appelant leur méthode affiche().

178

Comportement 

Description de structures d’objets ou de classes avec leurs interactions.



Le modèle de comportement simplifie l'organisation d'exécution des objets.



ils définissent comment organiser les objets pour que ceux-ci collaborent (distribution des responsabilités) 179

Comportement: Observateur 

On trouve des classes possédant des attributs dont les valeurs changent régulièrement.



Un certain nombre de classes doit être tenu informé de l’évolution de ces valeurs.

180

Cas d’utilisation  





On considère une classe HeurePerso possédant dans le même attribut l’heure et la minute courante. Cette classe est utilisé par une autre classe AfficheHeure pour l’affichage de l’heure courante dans un écran. Quelle démarche adopter pour que la classe chargée de l’affichage soit tenue informée en temps réel de l’heure courante stockée dans la classe HeurePerso ? Deux solutions possibles:  

Soit la classe d’affichage se charge de demander à la classe HeurePerso la valeur de son attribut soit c’est la classe HeurePerso qui informe la classe AfficheHeure lors de changements.

181

Meilleur solution: Obesrvateur L’interface Observateur sera implémenté par toutes classes qui souhaitent avoir le rôle d’observateur.  la classe ObservateurConcret qui implémente la méthode actualiser(Observable). Cette méthode sera appelée automatiquement lors d’un changement d’état de la classe observée.  On trouve également une interface Observable qui devra être implémentée par les classes désireuses de posséder des observateurs. 

182

Comportement: Iterateur 

Problème: 





Une collection contient un ensemble d'objets stocké par différentes méthodes (un tableau, un vecteur...). L'exploitant qui accède a contenu de la collection ne souhaite pas être concerné par cette manière de gérer les objets.

Solution: 

Un seule interface qui gère tout type d’objets

183

Meilleur Solution 

Un itérateur ressemble à un pointeur disposant essentiellement de deux primitives:  Accéder à l'élément pointé en cours (dans le conteneur)  Se déplacer pour pointer vers l'élément suivant

184

Merci pour votre attention Questions / Réponses

185