CSC4102 : Introduction au génie logiciel pour … · 3.3 Objectif — Mod´elisation avec UML 3.4...

22
CSC4102 : Introduction au enie logiciel pour applications orient´ ees objet Revision : 2450 Denis Conan, avec Paul Gibson ecembre 2017

Transcript of CSC4102 : Introduction au génie logiciel pour … · 3.3 Objectif — Mod´elisation avec UML 3.4...

CSC4102 : Introduction augenie logiciel pourapplications orientees objetRevision : 2450

Denis Conan, avec Paul Gibson

Decembre 2017

Sommaire

1. Contexte : Qui demande une ingenierie logiciel ?

2. Interet —Pourquoi organiser un developpement ?

3. Contenu — Quels sont les objectifs du module ?

4. Prerequis

5. Evaluation

6. Equipe et site Web

2/22 12/2017 Denis Conan CSC4102 : Introduction

1 Contexte : Qui demande une ingenierie logiciel ?

David L. Parnas, ACM SIGSOFT1 Outstanding Research Award, 1998 [Parnas, 2010]

� We are caught in a catch-22 situation2 :

• Until customers demand evidence that the designers were qualified anddisciplined, 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 ofbugs.

� 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 engineering2. En francais, « situation sans issue »

3/22 12/2017 Denis Conan CSC4102 : Introduction

2 Interet —Pourquoi organiser un developpement ?

2.1 Du programme (monolithique) correct...2.2 ...A l’ingenierie d’un logiciel2.3 Particularite de l’ingenierie du logiciel

4/22 12/2017 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 works3. It is assertions and other internal interface contracts between component

modules that explain why it works4. 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/22 12/2017 Denis Conan CSC4102 : Introduction

2.2 ...A l’ingenierie 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 thatmust 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 andmaintenance procedures.

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

6/22 12/2017 Denis Conan CSC4102 : Introduction

2.3 Particularite de l’ingenierie du logiciel

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

� There are at least two significant ways in whichcomputer systems differ from every other kind of systemwith which [engineers] have experience

• The complexity of a computer [model] is not limited by physical laws.− A 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/22 12/2017 Denis Conan CSC4102 : Introduction

3 Contenu — Quels sont les objectifs du module ?

3.1 Objectifs globaux et demarche de l’evaluation3.2 Objectif — Developpement logiciel agile3.3 Objectif — Modelisation avec UML3.4 Objectif — JAVA, qualite logicielle, outillage3.5 Apres le module — A quoi ca sert ensuite ?

ou ? quand ?

8/22 12/2017 Denis Conan CSC4102 : Introduction

3.1 Objectifs globaux et demarche de l’evaluation

� Objectifs :1. Specification, conception et programmation orientees objet2. Qualite logicielle et tests3. Developpement agile4. Outillage des activites de developpement

� Demarche globale de l’evaluation (repartition de la notation a titre indicatif) :• Travail en binome, decompose en deux periodes / sprints (notes ∈ [0, 10])

− Solution logicielle livree dans le projet (7 pts)• Modelisation + preparation des tests (3 pts)• Programmation outillee (4 pts)

− Investissement continu dans la mise en œuvre de la methodologie agile(presence active aux seances)+ Mise en œuvre outillee de la methodologie agile (3 pts)

• Connaissances globales lors d’une soutenance individuelle(notes ∈ {0} ∪ [5, 10])

9/22 12/2017 Denis Conan CSC4102 : Introduction

3.2 Objectif — Developpement logiciel agile

� Activites de dev. logiciel d’un binome-projet « qui fait tout le logiciel »

� Cycle en V dans une iteration / un sprint

� Deux sprints dans le module

SpécificationComprendre les

besoins, décrire le

Conception détaillée

Expression des besoinsS’accorder sur les

fonctionnalitésdu système

QUOI du système

Détailler le COMMENTpour un langage de

programmation donné

Préparation...

Codage

des tests ...Exécution

Tests unitaires Pour un objet, chaque opérationfonctionne−t−elle correctement ?

Tests d’intégration

Tests de validation

Les différentes partiesdu logicielfonctionnent−ellescorrectement ensemble ?

Le système est−ilconforme aucahier descharges ?

Le système est−ilconforme à laspécification ?

Recette

LogicielCahier des charges

Conception préliminaireS’accorder sur le COMMENTde construction du système

fonctionnalitéset tests

Éléments Fournis

10/22 12/2017 Denis Conan CSC4102 : Introduction

3.3 Objectif — Modelisation avec UML

� Connaissances — savoirs• Differents types de diagrammes avec leurs notations• Roles complementaires des types de diagrammes• Coherence entre diagrammes de meme type ou de types differents

Casd’utilisation

Activité

Classes

Objets

Machineà états

Interaction

Communications

Séquence

Cf. CSC3601

� Pratique — savoir-faire• Presenter des elements methodologiques d’utilisation des differents types de

diagrammes dans un processus de developpement• Presentation dans le cours d’une premiere etude de cas• Mise en pratique lors des seances avec une autre etude de cas

11/22 12/2017 Denis Conan CSC4102 : Introduction

3.4 Objectif — JAVA, qualite logicielle, outillage

� Connaissances — savoirs

• Concepts de l’orientation objet : retours sur l’heritage (transtypage,redefinition [polymorphisme d’inclusion], visibilite, classe abstraite, interface),retours sur les classes parametree (polymorphisme parametrique), librairie(collections avec listes et dictionnaires)

• Idiomes JAVA et patrons de conception

� Pratique — savoir-faire

• Gestion de versions avec Git et GitLab• Construction de logiciel JAVA avec Maven• Programmation des test avec JUnit• Qualite du code avec CheckStyle et FindBugs

12/22 12/2017 Denis Conan CSC4102 : Introduction

3.5 Apres le module — A quoi ca sert ensuite ?ou ? quand ?

� A titre indicatif, quelques metiers :

• VAP ASR et JIN− architecte, ingenieur developpeur, ingenieur R&D, consultant, integrateur

• VAP DSI− architecte SI, maıtrise d’œuvre des SI, consultant, integrateur

• VAP ISI− maıtrise d’ouvrage

13/22 12/2017 Denis Conan CSC4102 : Introduction

4 Prerequis

4.1 Quelques sondages (prerequis versus preacquis)4.1.1 A propos de CSC31014.1.2 A propos de CSC36014.1.3 A propos de PRO3600 et de CSC41014.2 Dispositif de revision4.3 Structuration du dispositif du module

14/22 12/2017 Denis Conan CSC4102 : Introduction

Quelques sondages (prerequis versus preacquis)

4.1.1 A propos de CSC3101

� Est-ce que ce sont des prerequis preacquis ?

CSC3101–1 CSC3101–21 Objet Interface2 Classe Classe abstraite3 Attribut Attribut de classe4 Methode Methode de classe5 Visibilite Enumeration6 Heritage Classe parametree

15/22 12/2017 Denis Conan CSC4102 : Introduction

Quelques sondages (prerequis versus preacquis)

4.1.2 A propos de CSC3601

� Est-ce que ce sont des prerequis preacquis ?

CSC36011 Diagramme de classes UML2 Schemas relationnels de bases de donnees3 Conception de schemas relationnels de bases de donnees a partir

de diagrammes de classes UML

16/22 12/2017 Denis Conan CSC4102 : Introduction

Quelques sondages (prerequis versus preacquis)

4.1.3 A propos de PRO3600 et de CSC4101

� Est-ce que ce sont des prerequis preacquis ?

PRO36001 Developper une application informatique

CSC41011 Concepts de client/serveur2 Patron de conception MVC3 Persistance des donnees

17/22 12/2017 Denis Conan CSC4102 : Introduction

4.2 Dispositif de revision

� Nous mettons a disposition des elements de cours et des exercices de revision

� Revisions non comptabilisees dans le travail hors presentiel

� Avant la seance 2 : generalites sur UML

� Avant la seance 3 : diagramme de classes UML

� Avant la seance 5 : concepts de base de la programmation en JAVA

18/22 12/2017 Denis Conan CSC4102 : Introduction

4.3 Structuration du dispositif du moduleA partir d’un cahier des charges, chaque binome-projet propose sa solution

CM HPTP

CM HPTP

CM HPTPRÉV

CM HPTP

CM HPTP

CM HPTPRÉV

CM HPTP

HPTP

RÉV

CM HPTPRÉV

CM HPTP

du développement

Introductionet organisation

Séance 1 :

des tests de validation

Séance 2 :Spécificationet préparation

Séance 3 :Conceptionpréliminaire

des tests unitaires

Séance 4 :Conception détailléeet préparation

Séance 5 :Programmationoutillée

Séance 6 :Livraison dupremier sprint

Suivi

Suivi

Suivi

Suivi

CRI−ÉVAL 2

Idiomes Java

Séance 7 :

second sprintLivraison duSéance 10 :

Soutenance individuelle

Séance 8 :Modélisation del’intégration despatrons de conception

Séance 9 :Programmation ettests d’intégrationdes patrons de conception

Sprint 1 Sprint 2

Suivi

Suivi

Suivi

SOUTENANCE

CRI−ÉVAL 2

CRI−ÉVAL 4

CRI−ÉVAL 3

Suivi

CRI−ÉVAL 1

SuiviCRI−ÉVAL 3

CRI−ÉVAL 3

CRI−ÉVAL 3

CRI−ÉVAL 3

CRI−ÉVAL 3

CRI−ÉVAL 3

CRI−ÉVAL 3

CRI−ÉVAL 3

CRI−ÉVAL 3

CRI−ÉVAL 1

19/22 12/2017 Denis Conan CSC4102 : Introduction

5 Evaluation

� Premiere session :

• CRI-Eval-1 : Modelisation et preparation des tests− Evalue a la fin de chaque sprint, avec progres attendu

• CRI-Eval-2 : Programmation outillee− Evalue a la fin de chaque sprint, avec progres attendu

• CRI-Eval-3 : Mise en œuvre de la methodologie agile− Investissement continu (presence active) + Rendus a la fin de chaque seance− 3 points (grille criteriee : ≥ 80% presences et rendus, ≥ 50%, < 50%)

• CRI-Eval-4 : Toutes les connaissances lors d’une soutenance individuelle− A base de questions de niveaux de difficulte varies, 10 minutes− 10 points (une note inferieure a 5 est insuffisante, et est ramenee a 0)

� Seconde session : controle sur table portant sur la totalite du module

20/22 12/2017 Denis Conan CSC4102 : Introduction

6 Equipe et site Web� Responsables de groupe

OlivierBerger

DenisConan

PaulGibson

ChantalTaconet

PierreSutra

� Intervenants de TP pour les seances 1, 2, 4 et 5

• Elisabeth Brunet, Walid Gaaloul, Alexis Lescouet, et Francois Trahay

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

• Contenu des seances• Glossaire, liste des taches, grilles auto-evaluation, trucs et astuces

21/22 12/2017 Denis Conan CSC4102 : Introduction

Quelques sondages (prerequis versus preacquis)

References 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.

22/22 12/2017 Denis Conan CSC4102 : Introduction