48
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

Techniques de Développement - Freee.nicolas.hernandez.free.fr/pub/ens/tdd/TdD08_CM01_SF.pdf · Présentation du module Organisation Organisation : CM de présentation des problèmes,

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

  • Techniques de DéveloppementQuelques 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 LogicielsSpécialité « Développement d’Applications Réparties »

    S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 1 / 33

  • Présentation du module

    Plan

    1 Présentation du module

    2 Quelques définitions

    S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 2 / 33

  • Présentation du module

    Objectifs

    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 œuvreles 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 quiapportent des éléments de solutionTP pour utiliser les techniques et outils vus en cours

    En pratique :1/3 de CM2/3 de TP

    prise en main des outilsutilisation 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ôlecontinu 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éfinitionsProgrammation Java : bonnes pratiques, outils de baseTests unitaires : pourquoi ? comment ? fonctionnement du frameworkJUnitGestion de versions : problèmes et solutions, fonctionnement de l’outilSubversionGestion de configuration : problèmes et solutions, fonctionnement desoutils Ant et MavenQualité logicielle : quelques métriques pour mesurer la qualité du codeOO

    S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 5 / 33

  • Présentation du module

    Intervenants

    Enseignants :Sébastien Faucou ([email protected])Nicolas Hernandez ([email protected])

    Vacataires issus du monde professionnel :Marc Patten (Unilog, Ant, Maven) sous-réserveYann Prieto (IDESYS, spécialiste en qualité logicielle)

    S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 6 / 33

    [email protected]@univ-nantes.fr

  • Quelques définitions

    Plan

    1 Présentation du module

    2 Quelques définitions

    S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 7 / 33

  • Quelques définitions

    Génie logiciel

    Software Engineering (Software Engineering Body of Knowledge)

    The application of a systematic, disciplined, quantifiable approach to thedevelopment, operation, and maintenance of software ; that is, the applicationof engineering to software

    Pas besoin d’être un génie pour faire des logicielsFaire du génie logiciel = utiliser les techniques d’ingénierie du logicielBénéfices attendus :

    maîtrise du temps de développementassurance de la qualitémaintenance facilitéeetc.

    S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 8 / 33

  • Quelques définitions

    Génie logiciel

    Software Engineering (Software Engineering Body of Knowledge)

    The application of a systematic, disciplined, quantifiable approach to thedevelopment, operation, and maintenance of software ; that is, the applicationof engineering to software

    Pas besoin d’être un génie pour faire des logicielsFaire du génie logiciel = utiliser les techniques d’ingénierie du logicielBénéfices attendus :

    maîtrise du temps de développementassurance de la qualitémaintenance facilitéeetc.

    S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 8 / 33

  • Quelques définitions

    Développement de logiciel

    Software construction (Software Engineering Body of Knowledge)

    Software construction refers to the detailed creation of working, meaningfulsoftware through a combination of coding, verification, unit testing, integrationtesting, and debugging

    Développer 6= programmerDévelopper, c’est : concevoir, programmer, mettre au point, vérifier etvalider, documenter

    S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 9 / 33

  • Quelques définitions

    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 besoinsConcevoir le système (conception architecturale, détaillée)Planifier le projet et contrôler son déroulementValider le développementFormer les utilisateursAssurer la maintenanceetc.

    Notion de cycle de vie du logiciel

    S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 10 / 33

  • Quelques définitions

    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 besoinsConcevoir le système (conception architecturale, détaillée)Planifier le projet et contrôler son déroulementValider le développementFormer les utilisateursAssurer la maintenanceetc.

    Notion de cycle de vie du logiciel

    S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 10 / 33

  • Quelques définitions

    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 besoinsConcevoir le système (conception architecturale, détaillée)Planifier le projet et contrôler son déroulementValider le développementFormer les utilisateursAssurer la maintenanceetc.

    Notion de cycle de vie du logiciel

    S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 10 / 33

  • Quelques définitions

    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 besoinsConcevoir le système (conception architecturale, détaillée)Planifier le projet et contrôler son déroulementValider le développementFormer les utilisateursAssurer la maintenanceetc.

    Notion de cycle de vie du logiciel

    S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 10 / 33

  • Quelques définitions

    Cycle de vie du logiciel

    Cycle de vie du logiciel

    Ensemble des phases (ou étapes) par lesquels passe un logiciel entre lemoment où on a l’idée de le construire et le moment où on le retire del’exploitation

    Phase (ou étape) du cycle de vie

    Caractérise l’état d’un projet logiciel. Différentes parties d’un même projetpeuvent être engagées dans des phases différentes

    S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 11 / 33

  • Quelques définitions

    Cycle de vie du logiciel

    Cycle de vie du logiciel

    Ensemble des phases (ou étapes) par lesquels passe un logiciel entre lemoment où on a l’idée de le construire et le moment où on le retire del’exploitation

    Phase (ou étape) du cycle de vie

    Caractérise l’état d’un projet logiciel. Différentes parties d’un même projetpeuvent être engagées dans des phases différentes

    S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 11 / 33

  • Quelques définitions

    Cycle de vie du logiciel (cont’d)

    On retient généralement les phases suivantes :

    Expression et analyse des besoinsPlanificationConceptionRéalisation (ou développement, ou construction)IntégrationQualificationExploitation et maintenanceRetrait

    Mais comment tout cela doit il être enchaîné ?

    S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 12 / 33

  • Quelques définitions

    Cycle de vie du logiciel (cont’d)

    On retient généralement les phases suivantes :

    Expression et analyse des besoinsPlanificationConceptionRéalisation (ou développement, ou construction)IntégrationQualificationExploitation et maintenanceRetrait

    Mais comment tout cela doit il être enchaîné ?

    S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 12 / 33

  • Quelques définitions

    Processus de développement

    Processus de développement

    Modèle spécifiant l’enchaînement des activités à mettre en œuvre pourré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ésdéveloppement : programmer, documenter, valider, etc.

    Une activité peut s’étendre sur plusieurs phase du cycle de viedocumenter : activité présente à chaque phase

    S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 13 / 33

  • Quelques définitions

    Processus de développement

    Processus de développement

    Modèle spécifiant l’enchaînement des activités à mettre en œuvre pourré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ésdéveloppement : programmer, documenter, valider, etc.

    Une activité peut s’étendre sur plusieurs phase du cycle de viedocumenter : activité présente à chaque phase

    S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 13 / 33

  • Quelques définitions

    Processus de développement (cont’d)

    Beaucoup de modèles sont décrits dans la littérature spécialisée. Commentchoisir ? Selon :

    clarté et stabilité des besoinstaille de l’équipeexpérience de l’équipebudgets en temps et en argent imparti au projetqualité exigée / criticité du projettaille 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

  • Quelques définitions

    Le modèle en cascade (waterfall)

    Développement

    Analyse des besoins et

    spécifications

    Conception

    Validation

    Maintenance

    S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 15 / 33

  • Quelques définitions

    Le modèle en V

    Conception détaillée

    Conception détaillée

    Conception détaillée

    Analyse des besoins et

    spécifications

    Conception générale

    Conception détaillée

    Conception détaillée

    Conception détaillée

    Conception détailléeCodage

    Conception détaillée

    Conception détaillée

    Conception détaillée

    Intégration

    Qualification

    Tests unitaires

    Développement des modules du logiciel

    validation

    S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 16 / 33

  • Quelques définitions

    Avantages et inconvéntients des processus « lourds »

    Avantagesles efforts de réflexion investis dans les phases en amont font gagner dutemps dans les phases en avallogiciel = code source + documentation : les deux ont la mêmeimportanceprocessus structurés, donc « simple » à organiser, expliquer, suivre,prédire

    Inconvénientsimpose de produire un design parfait du premier couple 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

  • Quelques définitions

    Avantages et inconvéntients des processus « lourds »

    Avantagesles efforts de réflexion investis dans les phases en amont font gagner dutemps dans les phases en avallogiciel = code source + documentation : les deux ont la mêmeimportanceprocessus structurés, donc « simple » à organiser, expliquer, suivre,prédire

    Inconvénientsimpose de produire un design parfait du premier couple 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

  • Quelques définitions

    Avantages et inconvéntients des processus « lourds »

    Avantagesles efforts de réflexion investis dans les phases en amont font gagner dutemps dans les phases en avallogiciel = code source + documentation : les deux ont la mêmeimportanceprocessus structurés, donc « simple » à organiser, expliquer, suivre,prédire

    Inconvénientsimpose de produire un design parfait du premier couple 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

  • Quelques définitions

    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 besoinsdu 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 processusvisent en premier lieu à produire du logiciel fonctionnel plutôt qu’une doc.complèteintègrent le client au développement (distribution fréquente, négociationavec lui sur la conduite du projet)

    S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 18 / 33

  • Quelques définitions

    Quelques uns des principes du « Agile Manifesto »

    acceptation des changements dans l’expression des besoinsitérations de 2 semaines à 2 mois, avec livraison d’une brique logiciellefonctionnellecollaboration journalière entre développeurs et maîtrise d’ouvrageavoir des développeurs motivés, bien équipés, et adopter rythme detravail soutenablecommunication en face-à-face (et pas par documents)mesurer l’avancement par la portion du logiciel en état de fonctionnerviser 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

    http://agilemanifesto.org

  • Quelques définitions

    L’eXtreme Programming

    eXtreme Programming (XP) ?

    un processus de développement agileformalisé par K. Beck dans les mid-90’sintéressant car centré sur les développeurs : permet d’avoir une vision« extrême » du travail de développeursujet à controverse sur l’Internet

    Éléments de présentation issus dehttp://www.extremeprogramming.org

    S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 20 / 33

    http://www.extremeprogramming.org

  • Quelques définitions

    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’ondeSimplicité : favoriser la solution la plus simple (ne pas résoudre les pbsqui ne se posent pas, ou encore : l’art de maximiser la non réalisation dece 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

  • Quelques définitions

    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 continuintégration continue, refactoring continu, livraison par petits morceaux

    partage des connaissancesstandard de codage, propriété collective du code, conception simple,utilisation de métaphores

    bien-être des programmeursgarder un rythme de travail « supportable »

    S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 22 / 33

  • Quelques définitions

    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

    http://www.extremeprogramming.org

  • Quelques définitions

    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

    http://www.extremeprogramming.org

  • Quelques définitions

    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

    http://www.extremeprogramming.org

  • Quelques définitions

    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

    http://www.extremeprogramming.org

  • Quelques définitions

    Avantages / inconvénients de XP

    Avantages

    production d’un logiciel simple, sain, adapté aux besoins et évolutifcapacité à réagir aux changements dans l’expression des besoins

    Inconvénientspas ou peu structuré : difficile à prédire, pas adapté pour lesdéveloppeurs peu expérimentés ou pour les grandes équipesimplication nécessaire du client : pas toujours applicable (pb decompé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

  • Quelques définitions

    Avantages / inconvénients de XP

    Avantages

    production d’un logiciel simple, sain, adapté aux besoins et évolutifcapacité à réagir aux changements dans l’expression des besoins

    Inconvénientspas ou peu structuré : difficile à prédire, pas adapté pour lesdéveloppeurs peu expérimentés ou pour les grandes équipesimplication nécessaire du client : pas toujours applicable (pb decompé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

  • Quelques définitions

    Retour sur « Développement de logiciel »

    Software construction (Software Engineering Body of Knowledge)

    Software construction refers to the detailed creation of working, meaningfulsoftware through a combination of coding, verification, unit testing, integrationtesting, and debugging

    S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 28 / 33

  • Quelques définitions

    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, debuggerdes programmes exécutables : compilateur, éditeur de liens,interpréteur, scripts de construction et de configuration, scripts dedéploiement, librairies de composantsdes éléments de vérification et validation : outils d’analyse statique,framework de testsdes preuves de qualité : outils de mesure et d’analyse statiquedes 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, nil’expérience !

    S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 29 / 33

  • Quelques définitions

    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, debuggerdes programmes exécutables : compilateur, éditeur de liens,interpréteur, scripts de construction et de configuration, scripts dedéploiement, librairies de composantsdes éléments de vérification et validation : outils d’analyse statique,framework de testsdes preuves de qualité : outils de mesure et d’analyse statiquedes 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, nil’expérience !

    S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 29 / 33

  • Quelques définitions

    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 changementDévelopper en prévoyant les étapes à venir de vérificationDévelopper en appliquant des standards

    S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 30 / 33

    http://www.swebok.org/index.html

  • Quelques définitions

    Résumé

    Ce dont on a parlé

    Qu’est-ce que le cycle de vie du logiciel ?Plusieurs processus de développement de logicielQuelles 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’industrialisationdu logiciel)pour trouver sa place, le développeur doit comprendre le processus dedéveloppement adoptéle développement n’est qu’une étape du cycle de vie d’un logicielle 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

  • Quelques définitions

    Résumé

    Ce dont on a parlé

    Qu’est-ce que le cycle de vie du logiciel ?Plusieurs processus de développement de logicielQuelles 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’industrialisationdu logiciel)pour trouver sa place, le développeur doit comprendre le processus dedéveloppement adoptéle développement n’est qu’une étape du cycle de vie d’un logicielle 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

  • Quelques définitions

    Quizz ...

    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é auxdéveloppeurs confirmés ?Citez des bonnes pratiques à utiliser lors du développement pour faciliter lamaintenance.

    S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 32 / 33

  • Quelques définitions

    Quizz ...

    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é auxdéveloppeurs confirmés ?

    Citez des bonnes pratiques à utiliser lors du développement pour faciliter lamaintenance.

    S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 32 / 33

  • Quelques définitions

    Quizz ...

    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é auxdéveloppeurs confirmés ?Citez des bonnes pratiques à utiliser lors du développement pour faciliter lamaintenance.

    S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 32 / 33

  • Quelques définitions

    Quizz ...

    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é auxdéveloppeurs confirmés ?Citez des bonnes pratiques à utiliser lors du développement pour faciliter lamaintenance.

    S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 32 / 33

  • Quelques définitions

    Fin.

    S. Faucou (Univ. Nantes) Techniques de Développement 2007-2008 33 / 33

    Présentation du moduleQuelques définitions