Techniques de Développement Quelques définitions relatives au développement de logiciel Sébastien Faucou Université de Nantes (IUT de Nantes, département Informatique) Licence Professionnelle Systèmes Informatiques et Logiciels Spécialité «Développement d Applications Réparties» S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 1 / 33
Plan Présentation du module 1 Présentation du module 2 Quelques définitions S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 2 / 33
Objectifs Présentation du module Qu est-ce que le développement logiciel (au-delà de l écriture de code)? Connaître les problèmes liés au développement, savoir mettre en œuvre les techniques et outils pour les résoudre module orienté «manipulation d outils» Quelques pas vers une pratique professionnelle du développement logiciel S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 3 / 33
Présentation du module Organisation Organisation : CM de présentation des problèmes, et des techniques et outils qui apportent des éléments de solution TP pour utiliser les techniques et outils vus en cours En pratique : 1/3 de CM 2/3 de TP prise en main des outils utilisation sur un TP «au long cours» (développement d un serveur http) Évaluation : contrôle continu : écrit (coef. 1) et pratique (coef. 1) examen (coef. 2) En cas d échec, 2nde session en septembre. Mais les notes de contrôle continu sont conservées! S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 4 / 33
Présentation du module Contenu du module Introduction : qlq définitions Programmation Java : bonnes pratiques, outils de base Tests unitaires : pourquoi? comment? fonctionnement du framework JUnit Gestion de versions : problèmes et solutions, fonctionnement de l outil Subversion Gestion de configuration : problèmes et solutions, fonctionnement des outils Ant et Maven Qualité logicielle : quelques métriques pour mesurer la qualité du code OO S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 5 / 33
Présentation du module Intervenants Enseignants : Sébastien Faucou (sebastien.faucou@univ-nantes.fr) Nicolas Hernandez (nicolas.hernandez@univ-nantes.fr) Vacataires issus du monde professionnel : Marc Patten (Unilog, Ant, Maven) sous-réserve Yann Prieto (IDESYS, spécialiste en qualité logicielle) S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 6 / 33
Plan Quelques définitions 1 Présentation du module 2 Quelques définitions S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 7 / 33
Génie logiciel Quelques définitions Software Engineering (Software Engineering Body of Knowledge) The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software ; that is, the application of engineering to software S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 8 / 33
Génie logiciel Software Engineering (Software Engineering Body of Knowledge) The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software ; that is, the application of engineering to software Pas besoin d être un génie pour faire des logiciels Faire du génie logiciel = utiliser les techniques d ingénierie du logiciel Bénéfices attendus : maîtrise du temps de développement assurance de la qualité maintenance facilitée etc. S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 8 / 33
Développement de logiciel Software construction (Software Engineering Body of Knowledge) Software construction refers to the detailed creation of working, meaningful software through a combination of coding, verification, unit testing, integration testing, and debugging Développer programmer Développer, c est : concevoir, programmer, mettre au point, vérifier et valider, documenter S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 9 / 33
Quoi d autre? Quelques définitions Concevoir, programmer, mettre au point, vérifier et valider, documenter : est-ce suffisant? S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 10 / 33
Quoi d autre? Quelques définitions Concevoir, programmer, mettre au point, vérifier et valider, documenter : est-ce suffisant? Non! S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 10 / 33
Quoi d autre? Concevoir, programmer, mettre au point, vérifier et valider, documenter : est-ce suffisant? Non! Analyser les besoins (requirements engineering) Étudier la faisabilité Spécifier les besoins Concevoir le système (conception architecturale, détaillée) Planifier le projet et contrôler son déroulement Valider le développement Former les utilisateurs Assurer la maintenance etc. S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 10 / 33
Quoi d autre? Concevoir, programmer, mettre au point, vérifier et valider, documenter : est-ce suffisant? Non! Analyser les besoins (requirements engineering) Étudier la faisabilité Spécifier les besoins Concevoir le système (conception architecturale, détaillée) Planifier le projet et contrôler son déroulement Valider le développement Former les utilisateurs Assurer la maintenance etc. Notion de cycle de vie du logiciel S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 10 / 33
Cycle de vie du logiciel Cycle de vie du logiciel Ensemble des phases (ou étapes) par lesquels passe un logiciel entre le moment où on a l idée de le construire et le moment où on le retire de l exploitation S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 11 / 33
Cycle de vie du logiciel Cycle de vie du logiciel Ensemble des phases (ou étapes) par lesquels passe un logiciel entre le moment où on a l idée de le construire et le moment où on le retire de l exploitation Phase (ou étape) du cycle de vie Caractérise l état d un projet logiciel. Différentes parties d un même projet peuvent être engagées dans des phases différentes S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 11 / 33
Cycle de vie du logiciel (cont d) On retient généralement les phases suivantes : Expression et analyse des besoins Planification Conception Réalisation (ou développement, ou construction) Intégration Qualification Exploitation et maintenance Retrait S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 12 / 33
Cycle de vie du logiciel (cont d) On retient généralement les phases suivantes : Expression et analyse des besoins Planification Conception Réalisation (ou développement, ou construction) Intégration Qualification Exploitation et maintenance Retrait Mais comment tout cela doit il être enchaîné? S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 12 / 33
Processus de développement Processus de développement Modèle spécifiant l enchaînement des activités à mettre en œuvre pour réaliser un logiciel. Ce modèle tient compte des aspects techniques, organisationnels et humains S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 13 / 33
Processus de développement Processus de développement Modèle spécifiant l enchaînement des activités à mettre en œuvre pour réaliser un logiciel. Ce modèle tient compte des aspects techniques, organisationnels et humains Activité Action à entreprendre pour réaliser un logiciel Une phase du cycle de vie peut correspondre à plusieurs activités développement : programmer, documenter, valider, etc. Une activité peut s étendre sur plusieurs phase du cycle de vie documenter : activité présente à chaque phase S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 13 / 33
Processus de développement (cont d) Beaucoup de modèles sont décrits dans la littérature spécialisée. Comment choisir? Selon : clarté et stabilité des besoins taille de l équipe expérience de l équipe budgets en temps et en argent imparti au projet qualité exigée / criticité du projet taille et complexité du projet (unité de mesure?) etc. Parmi les processus célèbres (liste non exhaustive) : cascade, V, spirale, incrémental, (R)UP ((Rational) Unified Process), XP (extreme Programming), etc. S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 14 / 33
Le modèle en cascade (waterfall) Analyse des besoins et spécifications Conception Développement Validation Maintenance S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 15 / 33
Le modèle en V Quelques définitions Analyse des besoins et spécifications validation Qualification Conception générale Intégration Conception Conception Conception Conception détaillée détaillée détaillée détaillée Conception Conception Conception détaillée détaillée Tests détaillée unitaires Conception Conception Conception détaillée détaillée Codage détaillée Développement des modules du logiciel S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 16 / 33
Avantages et inconvéntients des processus «lourds» Avantages les efforts de réflexion investis dans les phases en amont font gagner du temps dans les phases en aval logiciel = code source + documentation : les deux ont la même importance processus structurés, donc «simple» à organiser, expliquer, suivre, prédire S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 17 / 33
Avantages et inconvéntients des processus «lourds» Avantages les efforts de réflexion investis dans les phases en amont font gagner du temps dans les phases en aval logiciel = code source + documentation : les deux ont la même importance processus structurés, donc «simple» à organiser, expliquer, suivre, prédire Inconvénients impose de produire un design parfait du premier coup le logiciel apparaît tard (effet tunnel) pas adaptatif (les retours en arrière sont très côuteux) orienté projet et outils, ne tient pas compte de l équipe S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 17 / 33
Avantages et inconvéntients des processus «lourds» Avantages les efforts de réflexion investis dans les phases en amont font gagner du temps dans les phases en aval logiciel = code source + documentation : les deux ont la même importance processus structurés, donc «simple» à organiser, expliquer, suivre, prédire Inconvénients impose de produire un design parfait du premier coup le logiciel apparaît tard (effet tunnel) pas adaptatif (les retours en arrière sont très côuteux) orienté projet et outils, ne tient pas compte de l équipe Bons modèles en théorie, difficiles à utiliser en pratique S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 17 / 33
Les processus agiles Conçus dans les 90 s, en réaction aux inconvénients des processus lourds Les grandes orientations : orientés vers l adaptabilité (réactivité aux changements dans les besoins du client pendant le déroulement du projet) plutôt que vers la prédictibilité centrés sur les développeurs plutôt que sur le processus visent en premier lieu à produire du logiciel fonctionnel plutôt qu une doc. complète intègrent le client au développement (distribution fréquente, négociation avec lui sur la conduite du projet) S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 18 / 33
Quelques uns des principes du «Agile Manifesto» acceptation des changements dans l expression des besoins itérations de 2 semaines à 2 mois, avec livraison d une brique logicielle fonctionnelle collaboration journalière entre développeurs et maîtrise d ouvrage avoir des développeurs motivés, bien équipés, et adopter rythme de travail soutenable communication en face-à-face (et pas par documents) mesurer l avancement par la portion du logiciel en état de fonctionner viser l excellence technique, et le design de qualité toujours favoriser la simplicité Allez consulter la V.O. : http://agilemanifesto.org S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 19 / 33
L extreme Programming extreme Programming (XP)? un processus de développement agile formalisé par K. Beck dans les mid-90 s intéressant car centré sur les développeurs : permet d avoir une vision «extrême» du travail de développeur sujet à controverse sur l Internet Éléments de présentation issus de http://www.extremeprogramming.org S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 20 / 33
L extreme Programming (cont d) XP : 4 valeurs à suivre Communication : s assurer que tout le monde (développeurs, MOE, MOA) est sur la même longueur d onde Simplicité : favoriser la solution la plus simple (ne pas résoudre les pbs qui ne se posent pas, ou encore : l art de maximiser la non réalisation de ce qui n est pas nécessaire) Feedback : retour permanent sur le travail des dév. par le système (tests unitaires) par le client (validation/qualification/choix des priorités) par le reste de l équipe (code collectif, revues de code, etc.) Courage : savoir défaire/jeter ce qui n est plus adapté S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 21 / 33
L extreme Programming (cont d) Valeurs déclinées en 12 bonnes pratiques retour permanent sur le travail (fine scale feedback) pair programming, planning game, développement guidé par les tests, interaction du client à l équipe processus continu intégration continue, refactoring continu, livraison par petits morceaux partage des connaissances standard de codage, propriété collective du code, conception simple, utilisation de métaphores bien-être des programmeurs garder un rythme de travail «supportable» S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 22 / 33
Déroulement d un projet avec XP : 1 (Figures issues du site http://www.extremeprogramming.org) S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 23 / 33
Déroulement d un projet avec XP : 2 (Figures issues du site http://www.extremeprogramming.org) S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 24 / 33
Déroulement d un projet avec XP : 3 (Figures issues du site http://www.extremeprogramming.org) S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 25 / 33
Déroulement d un projet avec XP : 4 (Figures issues du site http://www.extremeprogramming.org) S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 26 / 33
Avantages / inconvénients de XP Avantages production d un logiciel simple, sain, adapté aux besoins et évolutif capacité à réagir aux changements dans l expression des besoins S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 27 / 33
Avantages / inconvénients de XP Avantages production d un logiciel simple, sain, adapté aux besoins et évolutif capacité à réagir aux changements dans l expression des besoins Inconvénients pas ou peu structuré : difficile à prédire, pas adapté pour les développeurs peu expérimentés ou pour les grandes équipes implication nécessaire du client : pas toujours applicable (pb de compétences, de disponibilité, d habitude) construit pour l adaptabilité : pas optimal pour les projets cadrés S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 27 / 33
Retour sur «Développement de logiciel» Software construction (Software Engineering Body of Knowledge) Software construction refers to the detailed creation of working, meaningful software through a combination of coding, verification, unit testing, integration testing, and debugging S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 28 / 33
Les produits et les outils du développeur Un développeur produit... avec... : des fichiers sources : éditeur de texte, langage de programmation, normes de codage, gestionnaire de version, debugger des programmes exécutables : compilateur, éditeur de liens, interpréteur, scripts de construction et de configuration, scripts de déploiement, librairies de composants des éléments de vérification et validation : outils d analyse statique, framework de tests des preuves de qualité : outils de mesure et d analyse statique des documentations : outils de génération de documentation d API, traitement de texte! S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 29 / 33
Les produits et les outils du développeur Un développeur produit... avec... : des fichiers sources : éditeur de texte, langage de programmation, normes de codage, gestionnaire de version, debugger des programmes exécutables : compilateur, éditeur de liens, interpréteur, scripts de construction et de configuration, scripts de déploiement, librairies de composants des éléments de vérification et validation : outils d analyse statique, framework de tests des preuves de qualité : outils de mesure et d analyse statique des documentations : outils de génération de documentation d API, traitement de texte! Les outils ne sont là que pour aider : ils ne remplacent ni la connaissance, ni l expérience! S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 29 / 33
Les fondamentaux du développement...... d après le Software Engineering Body of Knowledge (http://www.swebok.org/index.html) Minimiser la complexité Anticiper le changement Développer en prévoyant les étapes à venir de vérification Développer en appliquant des standards S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 30 / 33
Résumé Ce dont on a parlé Qu est-ce que le cycle de vie du logiciel? Plusieurs processus de développement de logiciel Quelles sont les activités à la charge du développeur? S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 31 / 33
Résumé Ce dont on a parlé Qu est-ce que le cycle de vie du logiciel? Plusieurs processus de développement de logiciel Quelles sont les activités à la charge du développeur? Ce que vous devez retenir (en plus) on ne construit pas un logiciel en navigant à vue (ère de l industrialisation du logiciel) pour trouver sa place, le développeur doit comprendre le processus de développement adopté le développement n est qu une étape du cycle de vie d un logiciel le codage n est qu une des activités du développement d un logiciel S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 31 / 33
Quizz... Quelques définitions Qu est-ce que l effet tunnnel? Quels problèmes pose-t-il? S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 32 / 33
Quizz... Quelques définitions Qu est-ce que l effet tunnnel? Quels problèmes pose-t-il? Pourquoi dit-on que l extreme Programming est un processus réservé aux développeurs confirmés? S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 32 / 33
Quizz... Quelques définitions Qu est-ce que l effet tunnnel? Quels problèmes pose-t-il? Pourquoi dit-on que l extreme Programming est un processus réservé aux développeurs confirmés? Citez des bonnes pratiques à utiliser lors du développement pour faciliter la maintenance. S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 32 / 33
Quizz... Quelques définitions Qu est-ce que l effet tunnnel? Quels problèmes pose-t-il? Pourquoi dit-on que l extreme Programming est un processus réservé aux développeurs confirmés? Citez des bonnes pratiques à utiliser lors du développement pour faciliter la maintenance. S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 32 / 33
Fin. S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 33 / 33