CSC4102 : Introduction au g enie logiciel pour applications orient ees objet - Denis Conan, avec Paul Gibson

La page est créée Michel Nguyen
 
CONTINUER À LIRE
CSC4102 : Introduction au g enie logiciel pour applications orient ees objet - Denis Conan, avec Paul Gibson
CSC4102 : Introduction au
génie logiciel pour
applications orientées objet
Revision : 3466

Denis Conan, avec Paul Gibson
Janvier 2019
CSC4102 : Introduction au g enie logiciel pour applications orient ees objet - Denis Conan, avec Paul Gibson
Sommaire

       1. Contexte : Qui demande une ingénierie logiciel ?

       2. Intérêt — Pourquoi une méthodologie ?

       3. Contenu — Quels sont les objectifs du module ?

       4. Prérequis

       5. Évaluation

       6. Structuration du dispositif du module

       7. Équipe et site Web

2/23    01/2019          Denis Conan                    CSC4102 : Introduction
CSC4102 : Introduction au g enie logiciel pour applications orient ees objet - Denis Conan, avec Paul Gibson
1 Contexte : Qui demande une ingénierie logiciel ?
       David L. Parnas, ACM SIGSOFT1 Outstanding Research Award, 1998                [Parnas, 2010]

        We are caught in a catch-22 situation :   2

        •    Until customers demand evidence that the designers were qualified and
             disciplined, they will continue to get sloppy software.
        •    As long as there is no better software, we will buy sloppy software.
        •    As long as we buy sloppy software, developers will continue to use
             undisciplined development methods.
        •    As long as we fail to demand that developers use disciplined methods, we run
             the risk —nay, certainty— that we will continue to encounter software full of
             bugs.

        Much of the fault lies with our teaching.
          Computer science students are not taught to work in disciplined ways.

        1. ACM, Special Interest Group on SOFTware engineering
        2. En français, « situation sans issue »
3/23     01/2019           Denis Conan                      CSC4102 : Introduction
CSC4102 : Introduction au g enie logiciel pour applications orient ees objet - Denis Conan, avec Paul Gibson
2 Intérêt — Pourquoi une méthodologie ?

       2.1 Du programme (monolithique) correct...
       2.2 ...À l’ingénierie d’un logiciel
       2.3 Particularité de l’ingénierie du logiciel

4/23    01/2019           Denis Conan                    CSC4102 : Introduction
2.1 Du programme (monolithique) correct...
       C. Antony R. Hoare, ACM A.M. Turing Award, 1980    [Hoare, 2009]

        The basic questions common to all branches of science

         1. What [should] this program do ?
         2. How [is it doing] it ?
         3. Why does it work ?
         4. What is the evidence for believing the answers to all these questions ?
        We know in principle how to answer them

         1. It is the specifications that describes what [we want] a program [to do]
         2. It is programming language semantics that explains how it works
         3. It is assertions and other internal interface contracts between component
            modules that explain why it works
         4. It is mathematical and logical proof [and testing], nowadays constructed and
            checked by computer, that ensures mutual consistency of specifications,
            interfaces, programs, and their implementations

5/23     01/2019           Denis Conan                     CSC4102 : Introduction
2.2 ...À l’ingénierie d’un logiciel

       David L. Parnas, ACM SIGSOFT      [Parnas, 2010]

        The branches of engineering (such as civil, electrical, and mechanical),
          are often referred to as disciplines for good reason.
        •    Associated with each specialty is a set of rules that specify : (i) checks that
             must be made ; (ii) properties that must be measured, calculated, or specified ;
             (iii) documentation that must be provided ; (iv) design review procedures ; (v)
             tests that must be carried out on the product ; and (vi) product inspection and
             maintenance procedures.

        [Everyday] experiences reminded [us] that the activity we (euphemistically)
          call software engineering does not come close to deserving a place among
          the traditional engineering disciplines.

6/23     01/2019           Denis Conan                      CSC4102 : Introduction
2.3 Particularité de l’ingénierie du logiciel

       J.H. Saltzer, M.F Kaashoek       [Saltzer and Kaashoek, 2009]

        There are at least two significant ways in which
          computer systems differ from every other kind of system
          with which [engineers] have experience
        • The complexity of a computer [model] is not limited by physical laws.
         − À titre indicatif, voir [Hayes and Jones, 1989]
         − Par exemple, « The halting problem » [Husfeldt, 2012]
        • The rate of change of computer system technology is unprecedented.

7/23     01/2019          Denis Conan                                  CSC4102 : Introduction
3 Contenu — Quels sont les objectifs du module ?

       3.1   Objectifs globaux et démarche de l’évaluation
       3.2   Objectif — Développement logiciel agile
       3.3   Objectif — Modélisation avec UML
       3.4   Objectif — JAVA, qualité logicielle, outillage
       3.5   Après le module — À quoi çà sert ensuite ?
             où ? quand ?

8/23    01/2019           Denis Conan                     CSC4102 : Introduction
3.1 Objectifs globaux et démarche de l’évaluation
        Objectifs :
         1.   Spécification, conception et programmation orientées objet
         2.   Qualité logicielle et tests
         3.   Développement agile
         4.   Outillage des activités de développement

        Démarche globale de l’évaluation (répartition de la notation à titre indicatif) :
        • Travail en binôme, décomposé en deux périodes / sprints (notes ∈ [0, 10])
         − Solution logicielle livrée dans le projet (7 pts)
                    • Modélisation + préparation des tests (3 pts)
                    • Programmation outillée (4 pts)
           −    Investissement continu dans la mise en œuvre de la méthodologie agile
                (présence active aux séances)
                + Mise en œuvre outillée de la méthodologie agile (3 pts)
        •     Connaissances globales lors d’une soutenance individuelle
              (notes ∈ {0} ∪ [5, 10])

9/23     01/2019             Denis Conan                      CSC4102 : Introduction
3.2 Objectif — Développement logiciel agile

     Activités de dév. logiciel d’un binôme-projet « qui fait tout le logiciel »

     Cycle en V dans une itération / un sprint

     Quelques éléments fournis au départ, puis deux sprints dans le module

                       Cahier des charges                                                                                                 Logiciel

        S’accorder sur les                                                                                                                     Le système est−il
           fonctionnalités   Expression des besoins                                                                                Recette     conforme au
              du système                                                                                                                       cahier des
                                                            Préparation...         des tests         ...Exécution                              charges ?

                       Comprendre les                                                                                                      Le système est−il
                     besoins, décrire le    Spécification                                                           Tests de validation    conforme à la
                      QUOI du système                                                                                                      spécification ?

                                                                                                                                    Les différentes parties
              S’accorder sur le COMMENT                                                                  Tests d’intégration        du logiciel
                                                Conception préliminaire                                                             fonctionnent−elles
              de construction du système
                                                                                                                                    correctement ensemble ?

                               Détailler le COMMENT                                                                    Pour un objet, chaque opération
                                  pour un langage de        Conception détaillée                 Tests unitaires
                                                                                                                       fonctionne−t−elle correctement ?
                               programmation donné
                                                                                 Codage
                                                                              fonctionnalités
                                                                                 et tests

10/23    01/2019                       Denis Conan                                              CSC4102 : Introduction
3.3 Objectif — Modélisation avec UML
     Connaissances — savoirs
        •   Différents types de diagrammes avec leurs notations
        •   Rôles complémentaires des types de diagrammes
        •   Cohérence entre diagrammes de même type ou de types différents

                                        Cas               Classes            Machine Interaction
                                   d’utilisation                             à états

                                               Activité             Objets

                                                                                 Séquence
                         Cf. CSC3601                                                     Communications

     Pratique — savoir-faire
        •   Présenter des éléments méthodologiques d’utilisation des différents types de
            diagrammes dans un processus de développement
        •   Présentation dans le cours d’une première étude de cas
        •   Mise en pratique lors des séances avec une autre étude de cas
11/23   01/2019            Denis Conan                                          CSC4102 : Introduction
3.4 Objectif — JAVA, qualité logicielle, outillage

     Connaissances — savoirs

        •   Approfondissement des concepts de l’orientation objet :
            retours sur l’héritage (transtypage, redéfinition [polymorphisme d’inclusion],
            visibilité, classe abstraite, interface),
            retours sur les classes paramétrée (polymorphisme paramétrique),
            librairie (collections avec listes et dictionnaires), et
            lambda expressions et Streams
        •   Introduction aux idiomes JAVA et aux patrons de conception
     Pratique — savoir-faire

        •   Gestion de versions avec Git et GitLab
        •   Construction de logiciel JAVA avec Maven
        •   Programmation des tests avec JUnit
        •   Qualité du code avec CheckStyle et FindBugs

12/23   01/2019            Denis Conan                       CSC4102 : Introduction
3.5 Après le module — À quoi çà sert ensuite ?
                   où ? quand ?

     À titre indicatif, quelques métiers :

        • VAP ASR et JIN
         − architecte, ingénieur développeur, ingénieur R&D, consultant, intégrateur
        • VAP DSI
         − architecte SI, maı̂trise d’œuvre des SI, consultant, intégrateur
        • VAP ISI
         − maı̂trise d’ouvrage

13/23    01/2019          Denis Conan                     CSC4102 : Introduction
4 Prérequis

        4.1 Quelques sondages (prérequis, préacquis)
        4.1.1 À propos de CSC3101
        4.1.2 À propos de CSC3601
        4.1.3 À propos de PRO3600 et de CSC4101
        4.2 Dispositif de révision

14/23    01/2019          Denis Conan                    CSC4102 : Introduction
Quelques sondages (prérequis, préacquis)

                     4.1.1 À propos de CSC3101

     Est-ce que ce sont des prérequis préacquis ?

                                                   CSC3101–1     CSC3101–2
                                            1      Objet         Interface
                                            2      Classe        Classe abstraite
                                            3      Attribut      Attribut de classe
                                            4      Méthode      Méthode de classe
                                            5      Visibilité   Énumération
                                            6      Héritage     Classe paramétrée

15/23    01/2019                         Denis Conan                     CSC4102 : Introduction
Quelques sondages (prérequis, préacquis)

                     4.1.2 À propos de CSC3601

     Est-ce que ce sont des prérequis préacquis ?

                         CSC3601
                 1       Diagramme de classes UML
                 2       Schémas relationnels de bases de données
                 3       Conception de schémas relationnels de bases de données à partir
                         de diagrammes de classes UML

16/23    01/2019                         Denis Conan             CSC4102 : Introduction
Quelques sondages (prérequis, préacquis)

                     4.1.3 À propos de PRO3600 et de CSC4101

     Est-ce que ce sont des prérequis préacquis ?

                                                PRO3600
                                       1        Développer une application informatique

                                                CSC4101
                                       1        Concepts de client/serveur
                                       2        Patron de conception MVC
                                       3        Persistance des données

17/23    01/2019                           Denis Conan                    CSC4102 : Introduction
4.2 Dispositif de révision

     Nous mettons à disposition des éléments de cours et des exercices de révision

     Révisions non comptabilisées dans le travail hors présentiel

     Avant la séance 2 : généralités sur UML

     Avant la séance 3 : diagramme de classes UML

     Avant la séance 5 : concepts de base de la programmation en JAVA

18/23   01/2019          Denis Conan                   CSC4102 : Introduction
5 Évaluation
     Première session :
        • CRI-Éval-1 : Modélisation et préparation des tests
         − Évalué à la fin de chaque sprint, avec progrès attendu
        • CRI-Éval-2 : Programmation outillée
         − Évalué à la fin de chaque sprint, avec progrès attendu
        • CRI-Éval-3 : Mise en œuvre de la méthodologie agile
         − Investissement continu (présence active) + Rendus à la fin de chaque séance
         − 3 points (grille critériée : ≥ 80% présences et rendus, ≥ 50%, < 50%)
        • CRI-Éval-4 : Toutes les connaissances lors d’une soutenance individuelle
         − À base de questions de niveaux de difficulté variés, 10 minutes
         − 10 points (une note inférieure à 5 est insuffisante, et est ramenée à 0)
                    • Questions principalement extraites du cours =⇒ assister aux cours
     Seconde session : contrôle sur table portant sur la totalité du module

     Pas de « rattrapage » en CF3, etc. à cause du « mode projet »

19/23    01/2019             Denis Conan                   CSC4102 : Introduction
5.1 Quelques statistiques
     Année 2016–2017 :
        •   # notes de soutenances individuelles à 0 : 21
        •   # notes CF1 / CF2 < 10 : 26 / 11
     Année 2017–2018 :
        •   # notes de soutenances individuelles à 0 : 23
        •   # notes CF1 / CF2 < 10 : 32 / 8

                                            Assistez aux cours
                             car les questions des soutenances individuelles
                                 sont principalement extraites du cours

     À disposition, des grilles d’auto-évaluation par séance
        •   Menu > Organisation > Grilles d’auto-évaluation
                  https://www-inf.telecom-sudparis.eu/COURS/CSC4102/?page=grilles_auto_evaluation
        •   Consultez-les et utilisez-les !

20/23   01/2019                Denis Conan                        CSC4102 : Introduction
6 Structuration du dispositif du module
         À partir d’un cahier des charges, chaque binôme-projet propose sa solution
                                                                                                                       Suivi
Sprint 1      Séance 1 :                                   Sprint 2     Séance 7 :
                                                                                                                       CRI−ÉVAL 3
              Introduction
              et organisation            CM      TP   HP                Idiomes Java                 CM    TP    HP
              du développement
                                                           Suivi                                                       Suivi
              Séance 2 :                                   CRI−ÉVAL 3   Séance 8 :                                     CRI−ÉVAL 3
              Spécification                                             Modélisation de
              et préparation             CM      TP   HP                l’intégration des   RÉV      CM    TP    HP
              des tests de validation                                   patrons de conception
                                                           Suivi                                                       Suivi
                                                           CRI−ÉVAL 3   Séance 9 :                                     CRI−ÉVAL 3
              Séance 3 :
              Conception                                                Programmation et
                                  RÉV    CM      TP   HP                tests d’intégration          CM    TP    HP
              préliminaire
                                                                        des patrons de conception
                                                           Suivi                                                       Suivi
              Séance 4 :                                   CRI−ÉVAL 3                                                  CRI−ÉVAL 3
                                                                        Séance 10 :
              Conception détaillée                                      Livraison du
              et préparation             CM      TP   HP                                                   TP    HP
                                                                        second sprint
              des tests unitaires
                                                           Suivi                                                       CRI−ÉVAL 1
                                                           CRI−ÉVAL 3                                                  CRI−ÉVAL 2
              Séance 5 :                                                Soutenance individuelle                        CRI−ÉVAL 3
              Programmation                                                                         RÉV   SOUTENANCE
                                  RÉV    CM      TP   HP
              outillée
                                                                                                                       CRI−ÉVAL 4
                                                           Suivi
                                                           CRI−ÉVAL 3
              Séance 6 :
              Livraison du               CM      TP   HP
              premier sprint
                                                           CRI−ÉVAL 1
                                                           CRI−ÉVAL 2

 21/23     01/2019                      Denis Conan                           CSC4102 : Introduction
7 Équipe et site Web
     Responsables de groupe

        Olivier             Denis               Paul                   Chantal          Pierre
        Berger              Conan               Gibson                 Taconet          Sutra

     Intervenants de TP pour les séances 1, 2, 4, et 5

        •   Walid Gaaloul, Olivier Levillain, et Mohamed Sellami

     Site Web : https://www-inf.telecom-sudparis.eu/COURS/CSC4102/

        •   Contenu des séances
        •   Glossaire, liste des tâches, grilles auto-évaluation, trucs et astuces

22/23   01/2019            Denis Conan                         CSC4102 : Introduction
Quelques sondages (prérequis, préacquis)

                     Références I
        Hayes, I. and Jones, C. B. (1989).
        Specifications are not (necessarily) executable.
        Software Engineering Journal, 4(6) :330–339.

        Hoare, C. (2009).
        Retrospective : An Axiomatic Basis for Computer Programming.
        Communications of the ACM, 52(10) :30–32.

        Husfeldt, T. (2012).
        The Freeze App Does Not Exist.
        https ://thorehusfeldt.net/2012/06/25/the-freeze-app-does-not-exist/.

        Parnas, D. (2010).
        Risks of Undisciplined Development.
        Communications of the ACM, 53(10) :25–27.

        Saltzer, J. and Kaashoek, M. (2009).
        Principles of Computer System Design : An Introduction.
        Morgan Kaufmann.

23/23    01/2019                         Denis Conan       CSC4102 : Introduction
Vous pouvez aussi lire