Chapitre 4 Processus de développement agile

Documents pareils
GESTION DE PROJET SÉANCE 2 : LES CYCLE DE VIE D'UN PROJET

Topologie du web - Valentin Bourgoin - Méthodes agiles & SCRUM

Cours de Java. Sciences-U Lyon. Java - Introduction Java - Fondamentaux Java Avancé.

UML Diagramme de communication (communication diagram) Emmanuel Pichon 2013

Outil de gestion et de suivi des projets

TP3 Intégration de pratiques agiles. 1. User Stories (1) Scénario d intégration agile. En direct-live du château

Plateforme de capture et d analyse de sites Web AspirWeb

L Intégration Continue & Agilité

Technologie Web. Conception de sites Web. Alexandre Pauchet. INSA Rouen - Département ASI. INSA - ASI TechnoWeb : Rappels UML 1/21

Agilitéet qualité logicielle: une mutation enmarche

Développement itératif, évolutif et agile

Cahier des charges : gestion de projets agiles. Programmation d Algorithmes Distribués (PAD)

L enseignement de méthodes agiles dans un contexte d apprentissage actif

Cours Gestion de projet

BOOK REFERENCES ERGONOMIQUES Gfi Informatique

Séance 1 Méthodologies du génie logiciel

Le Processus RUP. H. Kadima. Tester. Analyst. Performance Engineer. Database Administrator. Release Engineer. Project Leader. Designer / Developer

Méthodologies de développement de logiciels de gestion

Méthodes agiles. CONSEIL & DÉVELOPPEMENT DE SOLUTIONS E-BUSINESS. Jean-Louis Bénard jlb@businessinteractif.

MODELISATION UN ATELIER DE MODELISATION «RATIONAL ROSE»

Proposition pour la création d un site de gestion de projet

Génie logiciel (Un aperçu)

D une part, elles ne peuvent faire table rase de la richesse contenue dans leur système d information.

Maîtrise d ouvrage agile

Méthodes de développement

MODALITES DE SUIVI DU PROJET ANNUEL DU MASTER 2 SOLUTIONS INFORMATIQUES LIBRES

Gestion Projet. Cours 3. Le cycle de vie

GL Processus de développement Cycles de vie

2. Activités et Modèles de développement en Génie Logiciel

1. Considérations sur le développement rapide d'application et les méthodes agiles

Eclipse Process Framework et Telelogic Harmony/ITSW

Processus de Développement Logiciel

Processus de Développement Logiciel

Projet Active Object

Processus d Informatisation

Méthodes de développement. Analyse des exigences (spécification)

Les 10 pratiques pour adopter une démarche DevOps efficace

Les méthodes itératives. Hugues MEUNIER

CQP Développeur Nouvelles Technologies (DNT)

GOL-502 Industrie de services. Travaux Pratique / Devoir #7

Développement ebusiness

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février :30 à 20:30

Sécurité des applications Retour d'expérience

Introduction au génie logiciel

Conduite de projets SI. Les méthodes «Agiles» N QUAL/1995/3660e ORESYS

Plan. 1 Cycles de développement. 2 Méthodes agiles, principes généraux. 3 Comment se passe un Sprint?

Besoins utilisateurs. Quelle démarche pour passer des besoins au code? Code. chapitre1 UNIFIED MODELING LANGUAGE. package LogiqueMetier.

Industrialiser la chaîne complète de fabrication 1ère partie - Les bénéfices de la solution logicielle IBM VisualAge Pacbase / Rational

Présentation UBO 12/2008 Présentation des méthodes agiles

Scrum Le guide pratique de la méthode agile la plus populaire 3 e édition Claude Aubry 320 pages Dunod, 2013

XP : plus qu'agile. Extreme Programming v2 et Développement Responsable. Thierry Cros

Environnements de développement (intégrés)

SCRUM BUT, LE LIVRE BLANC. De la problématique de mener un projet AGILE dans une organisation classique

Génie logiciel pour le commerce électronique Hiver 2003 Prof.: Julie Vachon

UML (Paquetage) Unified Modeling Language

Environnements et Outils de Développement Cours 1 Introduction

Chapitre 5 Vision Informatique Logique Architectures Applicative et Logicielle

Profil. Formations Certifications. Etienne de LONGEAUX Architecte logiciel/ Lead développeur PHP5/SYMFONY2/ZEND 13 ans d expérience.

CHAPITRE 3 : LES METHODES AGILES?

Yphise optimise en Coût Valeur Risque l informatique d entreprise

IFT2255 : Génie logiciel

GL Le Génie Logiciel

Le génie logiciel. maintenance de logiciels.

Conception d'un système d'information WEB avec UML Par Ass SERGE KIKOBYA

Vérifier la qualité de vos applications logicielle de manière continue

Les Bonnes PRATIQUES DU TEST LOGICIEL

Introduc)on à l Agile

W4 - Workflow La base des applications agiles

LA GESTION DE PROJET INFORMATIQUE

LA GESTION DE PROJET INFORMATIQUE

Mise en place d une plateforme collaborative de développement en BTS SIO

Analyse,, Conception des Systèmes Informatiques

Gestion de projets logiciels. Xavier Dubuc

Formation : Modélisation avec UML 2.0 et Mise en pratique

Outils avancés d organisation

Expertises Métiers & e-business. Technologies Microsoft & OpenSource. Méthodologies et gestion de projet

Conduite de projets informatiques Développement, analyse et pilotage (2ième édition)

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Méthodes Agiles : un équilibre contractuel remis en cause? Jonathan Rofé Matinales IPT DLA Piper Paris 24 mars 2011

Analyse et Conception objet du logiciel Analyse et conception objet du logiciel : Méthode de conception objet et notation UML.

UM2 - Master 2 Année Sensibilisation aux Tests de Projets Informatique - Managed Testing -

Alignement avec les métiers par le test fonctionnel et d acceptation en projets agiles

XP DAY mai. Erwan Alliaume Nicolas Le Coz

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

Qu'est-ce que le BPM?

Méthodologies Orientées-Objet!

Business Process Modeling (BPM)

Les Architectures Orientées Services (SOA)

Importation des données dans Open Office Base

Université de Bangui. Modélisons en UML

But de cette introduction à la gestion de projets :

Configuration requise

Sommaire. Conduite de projet Méthode d analyse et de conception. Processus unifié. Objectifs d un processus de développement

HISTOIRE D UNE DIGITAL FACTORY

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Sommaire. G. Pujolle, F. Ravat, C. Soulé-Dupuy, G. Zurfluh

Méthodes Agiles et gestion de projets

Modèle de changement d organisation. Leanpizza.net présente. Petit Guide Rapide du jeu de cartes Modèle de Changement d Organisation

Objectif : Passer de l analyse métier et fonctionnelle à la définition des applications qui

Transcription:

4 Processus de développement agile 1I2AC1 : Génie logiciel et Conception par objet Régis Clouard, ENSICAEN - GREYC «Si débugger c est supprimer des bugs, alors programmer ne peut être que les ajouter.» Edsgter Dijkstra

Objectif de ce chapitre Première introduction aux principes agiles appliqués au développement logiciel. Les méthodes de développement seront vues en détail au semestre 8. Ici, nous utilisons une approche pragmatique inspirée par les méthodes agiles. L'ambition est de vous sensibiliser : 2 au cycle de développement itératif. à l'importance de la propreté du code. à l'obligation de tester son code. à la nécessité d'un dialogue permanent avec les futurs utilisateurs. Cela doit vous permettre de changer votre façon de développer en TP pour aborder sereinement le travail de conception et de programmation.

Plan du chapitre 3 1 Mauvaises pratiques du développement 2 Bonnes pratiques inspirées de l agilité 3 Développement et diagrammes UML 4 Les environnements de développement intégrés

Développement en TP Pratique recherchée et parfois enseignée : 1. Je code tous les algorithmes demandés dans le sujet. 2. Je compile. 3. Je teste le programme. Ça ne marche pas. Aie, ça ne compile pas! Le compilateur génère un flot de messages d'erreur que j'ai du mal à comprendre. Quand enfin ça compile, j'ai du mal à identifier la cause du dysfonctionnement du programme. Je teste s il reste du temps. Cette pratique porte un nom : le cycle de développement en cascade. 4

Développement en cascade Le cycle de développement en cascade a longtemps été préconisé. Il est la cause de l échec de nombreux projets. 5 Analyse des besoins Conception Codage Tests

Procédure induite : Cascade et effet tunnel 6 On se met d accord avec le client à l entrée du tunnel sur la liste des fonctionnalités à développer. Et quand on ressort (si on ressort), les besoins du client ont changé! Analyse des besoins Conception Codage Tests

Conception puis codage Peut ne pas marcher : 7 On peut très bien découvrir au moment du codage un problème qui remet en cause la conception. Et alors on a perdu son temps et mis le projet en péril. Analyse des besoins Conception Codage Tests

Cascade et test Test en dernière étape : très inefficace 8 Les bugs doivent être détectés au plus tôt. On a tendance à sauter les tests pour tenir les délais. Ce qui à la fin coûte très cher. Analyse des besoins Conception Codage Tests

Cascade et validation La seule manière de valider une fonctionnalité : 9 C est de la réaliser et de la faire tester par le client. Mais, tant qu on est au stade des spécifications et des modèles : on n a rien de tangible. Analyse des besoins Conception Codage Tests

Cycle en V 10 L apport du cycle en V se situe sur le moment de la définition des tests. Mais globalement, il n'y a pas de réelle amélioration. P. ex. du point de vue de la MOA, le cycle en V ressemble à un tunnel. Analyse des besoins Recette métier Spécification fonctionnelle Validation Conception architecturale Tests d'intégration Conception détaillée Tests unitaires Programmation

Plan du chapitre 11 2 Bonnes pratiques du développement 3 Développement et diagrammes UML 4 Les environnements de développement intégrés

Méthodes agiles. Pratiques actuelles : l'agilité Le développement est centré sur le code. Il s'agit de produire rapidement des prototypes exécutables. «Un intellectuel assis ira toujours moins loin 12 qu'un con qui marche» - Michel Audiard. Il est donné un rôle fondamental aux tests. Intégration continue (quasi-quotidienne). Les productions des développeurs sont rassemblées dans une version du logiciel, qui passe tous les tests unitaires.

Itération : Cycle de développement itératif 13 Reproduit un cycle en cascade complet, pour un petit sous-ensemble de fonctionnalités seulement. Livrable à chaque itération. Un prototype opérationnel, testé et évalué. Un prototype est une version intermédiaire du logiciel exécuté pour démontrer des concepts ou faire des essais de choix. Itération 1 Itération 2 Itération 3 Itération 4 DÉBUT du projet Analyse des besoins Conception Codage Test Analyse des besoins Conception Codage Test Analyse des besoins Conception Codage Test Analyse des besoins Conception Codage Test FIN du projet Prototype 1 Prototype 2 Prototype 3

Avantages : Avantages du cycle itératif 14 On avance à petits pas testés. Si on rate un pas, on n a raté qu un pas, sans grosses conséquences. Chaque pas est validé avec le client. Le manque de temps conduit à un déficit de fonctionnalités et pas à un échec total du projet ni à un projet non testé. Aujourd'hui, même le cycle en V est itératif.

Mise en pratique en TP Démarche qui s'inspire du développement agile : 1. Construire l'environnement de développement. makefile, organisation des dossiers, etc. 2. Construire l'environnement de test. fichiers de test. 3. Coder la fonction main() vide Compiler, et exécuter pour vérifier l'environnement de test. 4. Coder une première fonction appelée par le main(). Compiler, exécuter et tester. 5. On poursuit le développement fonction par fonction. 15

Plan du chapitre 16 3 Développement et diagrammes UML 4 Les environnements de développement intégrés

Quand utiliser les diagrammes UML? 17 Diagramme de cas d'utilisation Diagramme de séquence système Diagramme d'interaction Besoins Modèle du domaine Diagramme de classes participantes Code Diagramme des classes de conception Maquette de l'ihm Analyse des besoins Diagramme d'activités de navigation Conception Codage et tests

Analyse des besoins Diagramme des cas d utilisation. 18 Poser le problème en termes d interactions entre les utilisateurs et le système. Identifier les fonctionnalités à réaliser. Maquettes des écrans de l IHM. Les écrans des futures interactions. Modèle du domaine. Une première analyse du domaine à partir des concepts manipulés dans le domaine.

Conception Diagramme de classes 19 Parce qu'il est difficile de trouver les classes du futur logiciel : 1)S appuyer sur le modèle du domaine. Il fournit les premières classes. 2)Modéliser les aspects fonctionnels avec les diagrammes dynamiques (séquence, activités, état). Ils permettent de comprendre comment cela peut fonctionner. 3)Ajouter les classes participantes dans le diagramme de classes. On obtient le diagramme de classes de conception.

Conception modulaire «Diviser pour régner» 20 Face à des problèmes complexes, rechercher la modularité afin d'obtenir un ensemble de modules plus simples et plus facilement gérables. En conception orientée par objet, la notion de module se décline en : Méthode : implémentation de services. Classe : abstraction de données et de services. Paquet : groupement de classes dans une seule collection.

Conception modulaire La décomposition d'un système en modules est une tâche difficile. Pas de théorie. Plusieurs méthodologies à partir du cahier des charges. Débat sur la meilleure approche. Or ces modules jouent un rôle important pour la flexibilité, la fiabilité et la robustesse du système. 21

Exemple : déterminer les classes Méthode 1 : Analyse de texte (Dennis, 2002) Un nom commun une classe Un nom propre ou une référence directe un objet Un nom collectif une classe Un adjectif un attribut Un verbe faire une méthode Un verbe être un héritage ou une instanciation Un verbe avoir une association Un verbe transitif une méthode Un verbe intransitif une exception Une phrase verbale prédicative une méthode Un adverbe un attribut d'une méthode 22 4-1

Exemple : déterminer les classes Méthode 2 : les «cartes CRC» Classes, Responsabilités et Collaborations 1 post-it Nom de la classe en haut Les responsabilités de la classe avec en face les collaborations pour assurer cette responsabilité On assigne à un objet o les responsabilités pour lesquelles o possède toutes les informations nécessaires pour remplir ces responsabilités (dans certains cas, il collabore avec d'autres objets pour cela). Les cartes sont collées sur un tableau et forment ainsi l'architecture du logiciel Attention! Ne pas s'intéresser aux attributs (encapsulation) 4-2 23

Codage Recentrer le développement sur le code et les tests. Le codage devient une tâche importante réalisée par l ingénieur. Il n'a a plus de séparation analyste programmeur Codage cf. Code propre (ch. 5). cf. Développement dirigé par les tests (TDD) (ch. 6). cf. Remaniement de code (ch. 7). 24

Plan du chapitre 25 4 Les environnements de développement intégrés

Environnement de développement Le développement agile nécessite des environnements de développement sophistiqués. IDE (Integrated development environment) (p. ex. Netbeans) Permet une édition du code avancée. Permet la compilation interactive. Permet le management de code. Logiciel de gestion de versions (p. ex. SVN, Git). Partage de la production. Suivi de versions. 26

Outils de qualimétrie En Java, quatre outils d analyse statistique de la qualité du code sont largement utilisés : Checkstyle : vérification des conventions et normes de codage. PMD : similaire à Checkstyle mais plus focalisé sur les problèmes potentiels de codage comme le code non utilisé ou sous-optimisé, la taille et la complexité du code, et les bonnes pratiques de codage. FindBugs : détection des bogues potentiels, des problèmes de performances, ou des mauvaises habitudes de codage. Cobertura : outil d'analyse de couverture des tests. Il calcule le pourcentage de code couvert par les tests. Utiliser des outils de qualimétrie dans Netbeans. Voir menu Source::inspect Possibilité d'ajouter les outils précédents par le menu Tools::plugin Voir les fichiers de configuration sur Moodle. 27

Que retenir de ce chapitre? Les méthodes agiles proposent de nouvelles façons d aborder le développement logiciel. L itération est un principe de base. Chaque itération est une mini-cascade. Le code est au centre du développement avec des principes forts : Code propre. Code testé. Remaniement de code permanent. Cela nécessite la maîtrise d'un environnement de développement sophistiqué. 28