module moocsi cours 2 - centre national de la recherche ... · qu’est-ce qu’un modèle ? •un...

43
Module MOOCSI Cours 2 – Introduction Modélisation Véronique DESLANDRES Après l’homme augmenté, le « développeur augmenté »

Upload: others

Post on 25-Jun-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

Module MOOCSI

Cours 2 – Introduction Modélisation

Véronique DESLANDRES

Après l’homme augmenté, le « développeur augmenté »

Page 2: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

Introduction à UML (suite)

• Pourquoi une méthode de modélisation§Qualité du logiciel coté des DEV• Les AGL•Qu’est-ce qu’un modèle ?• Pourquoi une modélisation « Orientée Objet » ?• UML1 et UML2

2

Page 3: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

La qualité côté des dev• « … un logiciel capable de répondre parfaitement aux

attentes du client, le tout sans défaut d’exécution »

3

• Comment bien connaître les attentes du client ?• Quelles sont les tâches difficiles en

programmation ?

Page 4: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

Développeur : 9 tâches les + difficiles(enquête : 4500 personnes)

• Ecrire les tests• Estimer le temps nécessaire pour chaque tâche• Ecrire la documentation• Expliquer ce que je fais (ou ne fais pas)• Implémenter une fonctionnalité que je

désapprouve• Travailler avec le code d’un autre• Nommer les choses• Concevoir une application• Négocier avec les autres

4Sauriez-vous les

classer ?

Page 5: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

Développeur : 9 tâches les + difficilesRéponse (enquête : 4500 personnes)

1. Nommer les choses 49%2. Expliquer ce que je fais (ou ne fais pas) 16%3. Estimer le temps nécessaire pour chaque tâche 10%4. Négocier avec les autres 8%5. Travailler avec le code d’un autre 8%6. Implémenter une fonctionnalité que je désapprouve

(3%)7. Concevoir une application (2%)8. Ecrire les tests (2%)9. Ecrire la documentation (2%)

5Source : Quora / Ubuntu Forums

Page 6: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

Capture besoins• Une activité difficile car– Les utilisateurs ne connaissent pas vraiment leurs

besoins– Les développeurs connaissent mal le domaine de

l’application– Utilisateurs et développeurs ont des langages

différents– Les besoins évoluent– Il faut trouver un compromis entre services, coûts

et délais

important

Page 7: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

D’OÙ LE BESOIN DE MODÉLISER

7

Page 8: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

On modélise pour…• Comprendre les besoins fonctionnels du

Client et mieux répondre à ses attentes

8

• Communiquer avec les autres développeurs, pour avancer

• Communiquer avec les responsables Système pour les besoins Techniques

important

Page 9: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

Modéliser pour communiquer

• Communication ? Pas simplement pour tenir au courant de l’avancée d’un projet

• Permet aussi de générer de l’appropriation du client et des développeurs… avec une tactique d’ensemble.

9

Page 10: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

Modélisation simplifiée

Modélisation OBJET : l’UML de base

10

Page 11: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

UMLultra

simplifié

Dévincrémental

UML 2

Page 12: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

Pourquoi une modélisation OBJET ?

• Connaissez-vous les 3 paradigmes de l’objet ?

12

Page 13: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

Les piliers de l’objet•Encapsulation

• Regroupement du code (ce que fait une entité) et des informations• Masquage d’information au monde extérieur•Meilleure modularité (partie interface, partie

privée)•Meilleure sécurité, lisibilité

•Héritage• Construire une classe à partir d’une autre (réutilisation)• « Factoriser » dans une classe générique (abstraction)

•Polymorphisme• Unicité de nom de fonction pour des codes d’implémentation

différents• Liaison dynamique

13

importa

nt

Page 14: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

14

Définition d’accesseurs(getter/setter):

pour private int nbPV :

public setNbPV(int n);public getNbPV();

Méthodes de classe,méthodes d’instance

…. QUEL INTÉRÊT ?

Page 15: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

INTÉRÊT de l’ENCAPSULATION

• On ne met des getter/setter que quand

c’est nécessaire

• Les setter vérifient la validité des données

ajoutées

• Les getter garantissent la qualité des

données récupérées

• D’autre part la façon de coder/stocker les

données peut évoluer

– En tant que développeur (utilisateur de ces

données), on n’a pas besoin de savoir si c’est un

élément d’un conteneur ou d’une liste chaînée,

on connaît juste son type

– En tant que concepteur de la classe, on est libre

d’adapter le code interne tant que les signatures des méthodes restent les mêmes

– Ex. Frigidaire, liste d’ingrédients obtenue avec un

filtre pour lister les ingrédients : méthode

encapsulée filtrer(param) à modifier algo de tri ou le filtre, sans toucher au reste 15

Page 16: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

Héritage

16

attributsméthodes

(propriétés communesqui sont héritées)

Dérivation

(propriétéspropres)

public class Cercle extends FigureCentree {private double rayon;

}

Eviter l’héritage multiple

Objectifs :

FigureCentrée varA;…varA = new Cercle();

type de la variable type réel de l’objetde référence (utilisé à

(utilisée à la compilation) l’exécution)

Page 17: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

Héritage : usage• Rappel : on n’hérite pas des constructeurs• De fait, l’héritage entre classes concrètes est assez rare• Plus fréquemment on redéfinit des méthodes

– Ex. toString(), equals(), paintComponent()

• L’héritage multiple d’interfaces est autorisé en Java

17

public interface Channel {void close();

}public interface ReadChannel extends Channel {

int read(byte[] buffer);}public interface WriteChannel extends Channel {

int write(byte[] buffer);}public interface RWChannel extends ReadChannel,WriteChannel {}

public class TVChannel implements RWChannel {}

Page 18: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

Au fait…

Pourquoi l’héritage multipled’interfaces est-il autorisé, dans un langage OO « propre » comme Java(et pas l’héritage multiple de classes) ?

Ouh, çafum

e !

Page 19: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

Héritage dans la javadoc

L’héritage dans la javadoc

Page 20: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

Validité

Pensez-vous que cet héritage est valide ?

Validité ?

Page 21: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

Validité 2

Pensez-vous que cet héritage est valide ?public class Avion extends Vehicule {// ..

public void rouler() throws Exception {

if (altitude>0)throw new Exception( »Erreur : l'avion en vol ne

peut rouler");else super.rouler();

}}

Avion..

Véhicule

Page 22: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

Interface

22

Le BON DEV préfèrera

toujours utiliser des interfaces plutôt que les

classes d’implémentation

À suivre…

Page 23: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

• Classe avec des méthodes toutes abstraites• On implémente une interface pour définir :– Un ‘intermédiaire’ entre 2 modules du projet– une fonctionnalité transversale (Comparable, Cloneable)

– un ensemble de fonctionnalités pour lesquelles plusieurs implémentations sont possibles (ArrayList, LinkedList)

23

important

Rappel interface

• Définir un attribut dans une interface ?• uniquement des constantes publiques, statiques :final public static

Page 24: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

24

Ex. héritage / interface API Java

On voit par exemple qu’ArrayList implémente List, Collection et Iterable

Page 25: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

Polymorphisme• Une seule signature, n formes d’implémentation– Signature = nom, type de la donnée retournée, types

et séquence des arguments• (en Java et C++ : ne contient pas le type retourné)

• Avantages (considérable !) :– Les programmes gagnent en abstraction, car des

concepts non pertinents en sont retirés,– Moins de règles de nommage des fonctions (et donc

moins d’erreurs aussi)– L'écriture des programmes est facilitée

25

Page 26: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

Un exemple ?Des animaux sachant se déplacer :

class Animal {void deplacer() {

System.out.println("Je bouge"); }class Chien extends Animal {

void deplacer() {System.out.println("Je marche"); } }

class Oiseau extends Animal {void deplacer(){

System.out.println("Je vole"); } }class Pigeon extends Oiseau {

void deplacer() {System.out.println("Je vole et en plus j’arrose les passants"); } }

26

Page 27: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

public static void main(String[] args) {

Animal unAnimal = new Animal();

Animal unChien = new Chien();

Animal unPigeon= new Pigeon();

List<Animal> animaux = new ArrayList<Animal>();

animaux.add(unAnimal); ….

for (Animal animal : animaux)

animal.deplacer();

27

Je bougeJe marcheJe vole et en plus j’arrose les passants

Liaison dynamique

important

He he

Page 28: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

Sans polymorphisme ?

• Définir les méthodes en static et les appeler selon le type d’objet considéré :if (animal.getClass() == Chien)

Chien.deplacer();else if (animal.getClass() == Pigeon)

Pigeon.deplacer();else if etc.

28

Code lourdLisibilité faible

Page 29: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

QU’EST-CE QU’UN MODÈLE ?Mais au fait…

29

Page 30: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

Qu’est-ce qu’un modèle ?•Un modèle est une vue subjective mais

pertinente de la réalité

•Un modèle définit une frontière entre la réalité et la perspective de l'observateur : subjective

•Un modèle reflète des aspects importants de la réalité, il en donne donc une vue juste et pertinente de ce qui nous intéresse

30

Page 31: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

31

Braque, Baigneuse

Picasso, lectrice

Picasso, Femme à la mandoline

Matisse, Danseuse dans les roseaux Pica

sso, Ac

robate

Matisse

, Cheveu

x au v

ent

Ex.: modèles cubisme

Page 32: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

Un modèle = des vues multiples

Vue du notaire

Vue du maçon

Vue du plombier

Vue de l'électricien

Vue du locataire

Vue dupropriétaire

Vue de l'architecte

Vue du service des impots locaux

Vue ducadastre

32

Page 33: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

Autres exemples de modèles

33

} Modèle météorologique :à partir de données d'observation (satellite ...), permet de prévoir les conditions climatiques pour les jours à venir.

} Modèle économique :peut par exemple permettre de simuler l'évolution de cours boursiers en fonction d'hypothèses macro-économiques(évolution du chômage, taux de croissance...).

} Modèle démographique :définit la composition d'un panel d'une population et son comportement, dans le but de fiabiliser des études statistiques, d'augmenter l'impact de démarches commerciales, etc...

33

Page 34: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

Modéliser, est-ce bien utile ?

34

Page 35: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

Méthode, rigueur

35

Se mettre d’acc

ord sur

le périmètre

Définir les objectifs min et max

Se donner d

es

indicateurs

Modéliser

Page 36: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

UML 1 ou 2 ?En 2003, l’OMG déclare UML 2.0 et OCL (ObjectConstraint Language) comme les nouveauxstandards du développement logiciel.

Néanmoins pour démarrer UML 1 suffitamplement. UML2 propose 13 diagrammes(9 pour UML1) et est nettement plus orientéConception

(modélise le code ! C’est inutile)

Nous évoquerons simplement certainsaspects utiles d’UML2 dans la présentation.

36

Page 37: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

Les AGL• l’AGL PowerAMC• Cher à l’achat (2800€ la version avec le seul modèle UML, 8000€

tous les modèles)• Version d’essai sur le site de SYBASE (30j)

• Eclipse + plugin UML : fonctions intégrées de modélisation, génération de code, test, intégration, déploiement, gestion de configuration : idéal pour J2EE

• Visual Paradigm : version free sans génération de code

• StarUML opensource très complet (avec Design Patterns et génération de codes)

• Modelio Soft : modeliosoft.com• Enterprise Architect (EA) version

d’essai, avec toutes les fonctionnalités– Impression ? Durée ?

37

Page 38: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

Visual Paradigm

38

À pr

ivilé

gier

!

Page 39: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

StarUML

39

Page 40: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

Poseidon (ex argoUML)

40

Page 41: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

Modelio Soft

41

Page 42: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

Enterprise Architect (EA)

42

Page 43: Module MOOCSI Cours 2 - Centre national de la recherche ... · Qu’est-ce qu’un modèle ? •Un modèle est une vue subjective mais pertinente de la réalité •Un modèle définit

Je retiens de ce cours...• Les évolutions des développements logiciels– Architecture logicielle : fondamentale

• Qualimétrie logicielle : citer 3 indicateurs et connaître leur fonctionnement– Ex. SIX, RMI, DMS, VG

• Tâche la plus difficile pour les développeurs ?• 5 raisons qui font que la capture des besoins est

ardue• Pourquoi modéliser ? 3 raisons• Les 3 paradigmes de l’OO• Qu’est-ce qu’un modèle

43