CSC4102 : Introduction au g enie logiciel pour applications orient ees objet - Denis Conan, avec Paul Gibson
←
→
Transcription du contenu de la page
Si votre navigateur ne rend pas la page correctement, lisez s'il vous plaît le contenu de la page ci-dessous
CSC4102 : Introduction au génie logiciel pour applications orientées objet Revision : 3466 Denis Conan, avec Paul Gibson Janvier 2019
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
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
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