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

Post on 25-Jun-2020

0 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Module MOOCSI

Cours 2 – Introduction Modélisation

Véronique DESLANDRES

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

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

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 ?

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 ?

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

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

D’OÙ LE BESOIN DE MODÉLISER

7

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

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

Modélisation simplifiée

Modélisation OBJET : l’UML de base

10

UMLultra

simplifié

Dévincrémental

UML 2

Pourquoi une modélisation OBJET ?

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

12

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

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 ?

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

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)

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 {}

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 !

Héritage dans la javadoc

L’héritage dans la javadoc

Validité

Pensez-vous que cet héritage est valide ?

Validité ?

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

Interface

22

Le BON DEV préfèrera

toujours utiliser des interfaces plutôt que les

classes d’implémentation

À suivre…

• 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

24

Ex. héritage / interface API Java

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

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

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

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

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

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

29

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

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

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

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

Modéliser, est-ce bien utile ?

34

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

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

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

Visual Paradigm

38

À pr

ivilé

gier

!

StarUML

39

Poseidon (ex argoUML)

40

Modelio Soft

41

Enterprise Architect (EA)

42

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

top related