Vous êtes sur la page 1sur 36

Introduction au génie logiciel # 4

Génie logiciel 1

plan

Introduction estimation Test

Le développement Méthode et
planification
vue du client Méthodologie

Cycles de vie Qualité

© A. Beugnard ENST Bretagne

Génie logiciel 2

Objectifs

• Qu'est-ce qu'une méthode ?


• Qu'est-ce qu'une spécification ?
• La réutilisation de composants et de procédés

• Avoir des éléments pour choisir une méthode


adaptée à un problème ...
– aspects techniques
– aspects sociaux (culture, entreprise,...)
– aspects économiques

© A. Beugnard ENST Bretagne

A. Beugnard 1 1998
Introduction au génie logiciel # 4

Génie logiciel 3

Plan

• Contexte
• Qu'est-ce qu'une méthode ?
• Qu'est-ce qu'une spécification ?
• La réutilisation de composants et de procédés

© A. Beugnard ENST Bretagne

Génie logiciel 4

Contexte
• Algorithme
"complexité"
– recherche, pas de méthode, imagination

• Programme Systèmes
Algorithmes
– encapsulation d'un algorithme
– méthodes structurées, descendantes
Programmes
• Système structure
– ensemble de programmes à synchroniser
– méthode de conduite de projet, planification

© A. Beugnard ENST Bretagne

A. Beugnard 2 1998
Introduction au génie logiciel # 4

Génie logiciel 5

Méthode

• Ensemble de techniques permettant d'aboutir à une


solution d'un problème.
– Purement techniques ... comment trouver la solution ...
– Gestion ... trouver la solution, oui, mais à quel coût (temps)
– Qualité ... Quelle sera la qualité de la solution...

• Critères techniques, contraintes de coût, de temps, de


qualité,...

• Les activités à gérer : REFLECHIR, MODELISER,


TRAVAILLER, CONTROLER, REUTILISER, CAPITALISER

© A. Beugnard ENST Bretagne

Génie logiciel 6

Plan

• Contexte
• Qu'est-ce qu'une méthode ?
– Modèles
– Correction
• Qu'est-ce qu'une spécification ?
• La réutilisation de composants et de procédés

© A. Beugnard ENST Bretagne

A. Beugnard 3 1998
Introduction au génie logiciel # 4

Génie logiciel 7

Modèles

• Ce qui est modélisé


– Modèle du futur système,
– Modèle de l'existant
– Modèle des entrées/sorties,
– Modèle de données,
– Modèle déclaratif,
– Modèle de l'environnement...
• Comment c'est décrit
– Notation, langage
• Comment la description peut être utilisée
– Outils « La carte n ’est pas le territoire »
A. Van Vogt

© A. Beugnard ENST Bretagne

Génie logiciel 8

Schéma général
langage de
programmation

idées solution

démarche compilation

étapes

analyse conception

© A. Beugnard ENST Bretagne

A. Beugnard 4 1998
Introduction au génie logiciel # 4

Génie logiciel 9

Schéma général

démarche compilation
idées solution

langage de spécification

Abstraction

© A. Beugnard ENST Bretagne

Génie logiciel 10

Insuffisance de la langue naturelle

• ambiguïté
• sous-spécification (sous-entendu, implicite)
• sur-spécification (redondance)
• bruit (hors sujet)
• contradiction

• on ne sait pas (encore ???) l'exploiter


automatiquement

donc, on formalise...
© A. Beugnard ENST Bretagne

A. Beugnard 5 1998
Introduction au génie logiciel # 4

Génie logiciel 11

Plan

• Contexte
• Qu'est-ce qu'une méthode ?
– Modèles
– Correction
• Qu'est-ce qu'une spécification ?
• La réutilisation de composants et de procédés

© A. Beugnard ENST Bretagne

Génie logiciel 12

Notion de correction

idées solution

vis-à-vis du langage
Exemple : (de la grammaire)

2x += 8 -

© A. Beugnard ENST Bretagne

A. Beugnard 6 1998
Introduction au génie logiciel # 4

Génie logiciel 13

Notion de correction

idées solution

vis-à-vis des règles


de transformations
(sémantique ?)

vis-à-vis du langage
Exemple : (de la grammaire)

2x += 8 -
2x = 10 => x = 10 - 2
« La preuve est un processus social de confiance »
R. Lipton

© A. Beugnard ENST Bretagne

Génie logiciel 14

Notion de correction

idées solution

vis-à-vis des règles


vis-à-vis des intentions de transformations
(sémantique ?)

vis-à-vis du langage
Exemple : (de la grammaire)

2x += 8 -
2x = 10 => x = 10 - 2
2x = 10 => x = 10/2 = 5
© A. Beugnard ENST Bretagne

A. Beugnard 7 1998
Introduction au génie logiciel # 4

Génie logiciel 15

En bref...

• Nécessité d ’un langage abstrait

• Nécessité d ’une sémantique (règles de


transformations formelles prouvées) Faciliter la
vérification

• Nécessité de confronter à l ’intention (simulation,


prototypage)
Permettre la
validation

© A. Beugnard ENST Bretagne

Génie logiciel 16

Plan

• Contexte
• Qu'est-ce qu'une méthode ?
• Qu'est-ce qu'une spécification ?
– axes structurel, fonctionnel, temporel
– démarches
– notations
• La réutilisation de composants et de procédés

© A. Beugnard ENST Bretagne

A. Beugnard 8 1998
Introduction au génie logiciel # 4

Génie logiciel 17

Axes d'une spécification


Structurel
qui, où

temporel
quand

fonctionnel pourquoi ?
quoi, comment
© A. Beugnard ENST Bretagne

Génie logiciel 18

Qui et où

L’objectif est de décomposer

• La représentation obtenue est habituellement une


arborescence (ou un graphe).
• Quelle sens donner à la notion de fils (ou de
successeur)?
– sous-système,
– sous fonctions,
– vue…

© A. Beugnard ENST Bretagne

A. Beugnard 9 1998
Introduction au génie logiciel # 4

Génie logiciel 19

Quoi et comment

• Spécifier, c'est dire quoi mais pas comment...

• Les fonctionnalités, les facteurs de qualité sont définis

• Le comment sera évoqué dans des phases ultérieures


(raffinement)

© A. Beugnard ENST Bretagne

Génie logiciel 20

Exemple

x y

{x 0} Précondition
Programme
{y  0 et y = x * x} Postcondition

© A. Beugnard ENST Bretagne

A. Beugnard 10 1998
Introduction au génie logiciel # 4

Génie logiciel 21

Exemple corrigé

x y

{x 0}  Précondition
Programme
{y 0 et y * y = x}
 Postcondition

© A. Beugnard ENST Bretagne

Génie logiciel 22

Programmation contractuelle

• « Si vous promettez de demander le service en


satisfaisant pre, je promets de fournir un état final qui
satisfait post »

Obligations Bénéfice
Client n ’appelle que si pre est sûr du post
est valide
pas besoin de traiter les
Serveur rendre le service cas ou pre est invalide

© A. Beugnard ENST Bretagne

A. Beugnard 11 1998
Introduction au génie logiciel # 4

Génie logiciel 23

Quand

• Il faut avoir isolé des actions, fonctions (quoi),

• Il faut exprimer des propriétés temporelles


– après, avant, pendant que...

• Techniques
– Automates
– Langage de programmation
– Logique temporelle
– Expressions régulières

© A. Beugnard ENST Bretagne

Génie logiciel 24

Plan

• Contexte
• Qu'est-ce qu'une méthode ?
• Qu'est-ce qu'une spécification ?
– axes structurel, fonctionnel, temporel
– démarches
– notations
• La réutilisation de composants et de procédés

© A. Beugnard ENST Bretagne

A. Beugnard 12 1998
Introduction au génie logiciel # 4

Génie logiciel 25

Progression
organisationnel

conceptuel

physique

• raffinements successifs • raffinements successifs


guidés par la structure par niveau d'abstraction
• analyse descendante
• analyse horizontale
il faut avoir une bonne idée
de la bonne solution approche SYSTEMIQUE
=> expérience
=> systèmes physiques
© A. Beugnard ENST Bretagne

Génie logiciel 26

Comparaison*

Structurée Systémique
# pas variable fixe
maintenabilité faible à moyenne moyenne à forte
réutilisabilité forte moyenne à faible
structure rigide, choix précoces souple
approche technique organisationnelle
notation orientée langage orientée DB/obj
La plus adaptée
Real systems have no top à l'étude
de systèmes
complexes
* opinion approximative qui n’engage que l’auteur !

© A. Beugnard ENST Bretagne

A. Beugnard 13 1998
Introduction au génie logiciel # 4

Génie logiciel 27

Types d’approche

Orientée Données Merise-NIAM

Orientée Traitements SAxx

Orientée Dynamique JSD

Orientée Objet HOOD-OOA

© A. Beugnard ENST Bretagne

Génie logiciel 28

Orientée données
Analyse complète des données et de leurs
associations.

– Inventaire des données des activités de gestion,


conception
préliminaire » analyse organisationnelle

– Structuration des données, indépendamment des outils et


conception
des performances,
détaillée
» conception du système

– Prise en compte de l'outils, mise en place d'index,...


réalisation
» conception technique

© A. Beugnard ENST Bretagne

A. Beugnard 14 1998
Introduction au génie logiciel # 4

Génie logiciel 29

Axes d'une orientation données

Structure (qui et où)

Temps (quand)

Fonction (quoi et comment)

© A. Beugnard Pourquoi ?
ENST Bretagne

Génie logiciel 30

Eléments
ENTITES TYPES
ASSOCIATIONS
binaire (la plus utilisée)
n-aire
TYPE D’ASSOCIATION
1-N, N-M, 1-1
CONTRAINTES
ATTRIBUTS
– unicité
– identificateur
– sous-type d'entité
– contrainte complexe (sur valeur)

© A. Beugnard ENST Bretagne

A. Beugnard 15 1998
Introduction au génie logiciel # 4

Génie logiciel 31

Exemple

emprunts de chez livre

contient dans

stock

© A. Beugnard ENST Bretagne

Génie logiciel 32

Orientée traitements

Analyse les enchaînements entre les activités de


traitements de données.

conception – Etude de l'activité organisationnelle


préliminaire » analyse organisationnelle

conception – Inventaire des tâches


détaillée » conception du système

– Définition des processus et unités compilables


réalisation » conception technique

© A. Beugnard ENST Bretagne

A. Beugnard 16 1998
Introduction au génie logiciel # 4

Génie logiciel 33

Axes d’une orientation traitements


Structure (qui et où)

Temps (quand)

Fonction (quoi et comment)

Pourquoi ?

© A. Beugnard ENST Bretagne

Génie logiciel 34

Eléments
ACTIVITE ORGANISATIONNELLE

ENSEMBLE D’INFORMATIONS/PRODUITS

SEQUENCEMENT des activités


PRECONDITION D'ACTIVITE

UNITE ORGANISATIONNELLE
– (groupe, bureau, dpt,...)
RESPONSABLE

FLUX, TYPE DE FLUX


– informations ou produits

© A. Beugnard ENST Bretagne

A. Beugnard 17 1998
Introduction au génie logiciel # 4

Génie logiciel 35

Exemple
ENSEMBLE
ACTIVITES
Liste des réservations annulées (I)
Liste des clients (P)
• Gestion des réservations Liste des sorties (I)
– Mise à jour
– Entrée
– Identification hôte FLUX
– Sortie
– Annulation Validation d'une demande
Demande -> Réservation

© A. Beugnard ENST Bretagne

Génie logiciel 36

Orientée dynamique

Analyse dynamique des données et des événements du


monde réel.

conception – Modèle du monde réel (analyse des événements)


préliminaire » analyse organisationnelle

conception – Inventaire des fonctions


détaillée » conception du système

– Définition des processus et unités compilables


réalisation » conception technique

© A. Beugnard ENST Bretagne

A. Beugnard 18 1998
Introduction au génie logiciel # 4

Génie logiciel 37

Axes d’une orientation dynamique

Structure (qui et où)

Temps (quand)

Fonction (quoi et comment)


Pourquoi ?

© A. Beugnard ENST Bretagne

Génie logiciel 38

Eléments

EVENEMENT ORGANISATIONNEL

SEQUENCEMENT

PRE/POST-CONDITION SUR EVENEMENT

© A. Beugnard ENST Bretagne

A. Beugnard 19 1998
Introduction au génie logiciel # 4

Génie logiciel 39

Exemple

EVENEMENTS

1 - Arrivée demande
2 - Annulation demande
4 - enregistrement sortie
6 - nouvelle journée

PRECONDITION POSTCONDITION
— (1) réservation existe
Réservation existe (2) annulation d'une réservation

© A. Beugnard ENST Bretagne

Génie logiciel 40

Orientée objet

Analyse un système en terme d'objets


(donnée + traitement).

– se rapproche de l'analyse dynamique mais en mettant


l'accent sur les aspects structuraux et non dynamiques du
monde réel.

© A. Beugnard ENST Bretagne

A. Beugnard 20 1998
Introduction au génie logiciel # 4

Génie logiciel 41

Axes d’une orientation objet


Structure (qui et où)

Temps (quand)

Fonction (quoi et comment)


Pourquoi ?

© A. Beugnard ENST Bretagne

Génie logiciel 42

Eléments

OBJET

OPERATIONS SUR LES OBJETS


PRE/POST-CONDITION SUR OPERATIONS

RESSEMBLANCE ENTRE OBJETS

© A. Beugnard ENST Bretagne

A. Beugnard 21 1998
Introduction au génie logiciel # 4

Génie logiciel 43

Exemple

OPERATIONS
Un client réserve une chambre
Une chambre est réservée
Un client annule une réservation

OBJET

Chambre
Réservation
Client Un client est une personne ...

© A. Beugnard ENST Bretagne

Génie logiciel 44

Comparaison *
Donnée Traitements Dynamique Objet

orientation statique dynamique dynamique statique


maintenabilité moyenne faible forte moyenne
réutilisabilité faible moyenne moyenne forte
correction contraintes pré pré-post pré-post
progression abstraction structure abstraction abstraction

QUI QUOI QUAND QUI


QUOI QUAND QUI QUOI
QUAND QUI QUOI QUAND

* opinion approximative qui n’engage que l’auteur !

© A. Beugnard ENST Bretagne

A. Beugnard 22 1998
Introduction au génie logiciel # 4

Génie logiciel 45

Intérêt des objets


• Pas de changement de paradigme
– de l ’analyse à l ’implantation on pense objet !
– peu de transformations difficiles, risquées, irréversibles

• Possibilité de mettre alternativement l ’accent sur les


aspects « structuraux » et « dynamiques »
– liberté de démarche
– processus itératif facilité

• Réutilisation des outils existants


– héritage
– liaison dynamique C ’est bien plus qu’une mode !

© A. Beugnard ENST Bretagne

Génie logiciel 46

Plan

• Contexte
• Qu'est-ce qu'une méthode ?
• Qu'est-ce qu'une spécification ?
– axes structurel, fonctionnel, temporel
– démarches
– notations
• La réutilisation de composants et de procédés

© A. Beugnard ENST Bretagne

A. Beugnard 23 1998
Introduction au génie logiciel # 4

Génie logiciel 47

Textuel vs graphique
Textuel
– Langage de programmation Graphique
» sémantique (du compilateur !)
» peu abstrait
• indépendant de la cible
• concis
– Langage formel • parfois ambiguë
» base mathématique
» règles de transformation SADT, HOOD, NIAM, JSD
» non-ambiguë
Automate, Réseaux de Pétri
CCS, Z, VDM, LOTOS

Adapté à la vérification Adapté à une démarche

© A. Beugnard ENST Bretagne

Génie logiciel 48

Objectifs d’une notation

• Lisibilité
– peu de symboles
– éviter les schémas complexes (décomposabilité)
– Nature des interfaces (compréhensibilité la plus locale
possible)

• Précision
– un concept, une notation

© A. Beugnard ENST Bretagne

A. Beugnard 24 1998
Introduction au génie logiciel # 4

Génie logiciel 49

Unify Modeling Language

• Incontournable ; se veut le langage de modélisation


universel…

• Standard de l ’OMG : Object Management Group

• UML Notation Guide :


http://www.informatik.fh-luebeck.de/~st/UML1.1/

• Ne propose pas (encore ?) de procédé (démarche)

© A. Beugnard ENST Bretagne

Génie logiciel 50

Entités/Associations
1 exactement

0 ou plus UML :
Associations
Associations et rôles
0 ou 1
Qualified Associations

Pas de normes…
parfois des ambiguïtés
0-N 1 ou des insuffisances *

* pas de disjonction en MERISE

© A. Beugnard ENST Bretagne

A. Beugnard 25 1998
Introduction au génie logiciel # 4

Génie logiciel 51

Séquencement

• Automates
B
– Le plus classique A
• Expressions régulières
– Plus rare
• Logique temporelle C
– ardu

UML :
Séquence Diagram A C
et détails,
StateCharts
A.B*.C B*

© A. Beugnard ENST Bretagne

Génie logiciel 52

Quelques problèmes délicats

• Synchronisation d'automates

• Etat bloquant/non bloquant

• Il existe des modèles théoriques qui


abstraient/simplifient ces problèmes :
Modèles et langages synchrone

© A. Beugnard ENST Bretagne

A. Beugnard 26 1998
Introduction au génie logiciel # 4

Génie logiciel 53

Séquencement
• Réseaux de Pétri
– Classique et général
• Grafcet
fonction
– Spécialité des automaticiens
• Diagramme structuré
– peu abstrait get calcul set
– programmation graphique...
condition itération

stop
format
module
determine extract do1 do2 prédéfini
print
inclusion
lexicale physical
device

© A. Beugnard ENST Bretagne

Génie logiciel 54

Notation fonctionnelle Absent de UML, mais :


Use cases et
Collaboration
processus

liste des
emprunts
flux d'informations in contrôle

pile de données livres


"processus"

out

© A. Beugnard ENST Bretagne

A. Beugnard 27 1998
Introduction au génie logiciel # 4

Génie logiciel 55

UML :
Objets Composition et
Héritage
• HOOD (ADA), BON (Eiffel), OMT proposent
des notations pour décrire leur structure
Personne
d'objets
– Héritage nom
adresse
– Client
– Aggrégat

Téléphone Abonné
adresse poste numéro hérite de
1+ taxes
décroche décroche
sonne raccroche

© A. Beugnard ENST Bretagne

Génie logiciel 56

Méthodes
Approche cartésienne, Approche systémique, Approche objet

Cartésienne Systémique

Donnée NIAM

Obj

Traitement SAxx JSD

© A. Beugnard ENST Bretagne

A. Beugnard 28 1998
Introduction au génie logiciel # 4

Génie logiciel 57

Comparaison
Approches démarche struct. fonct. temp. vérif. valid. accès

structurée définie forte forte moyen tardive tardive simple


(SAxx,SD)
systémique définie forte faible faible statique tardive simple
(Merise, NIAM)
type ab. intuitive faible forte faible forte moyen diff.
(Z,VDM)
processus intuitive moyen forte forte forte forte diff.
(LOTOS)
objet définie forte faible moyen moyenne forte moyen

© A. Beugnard ENST Bretagne

Génie logiciel 58

Plan

• Contexte
• Qu'est-ce qu'une méthode ?
• Qu'est-ce qu'une spécification ?
– axes structurel, fonctionnel, temporel
– démarches
– notations
• La réutilisation de composants et de procédés

© A. Beugnard ENST Bretagne

A. Beugnard 29 1998
Introduction au génie logiciel # 4

Génie logiciel 59

Des problèmes...

Ce que je souhaite construire

Comment savoir retrouver ce qui existe déjà ?

Est-ce utilisable tel quel ?


Ce qui existe
Quelles adaptations ? Quelles extensions ?

Que dois-je développer de spécifique ?


Ce que j ’ai développé est-il réutilisable ailleurs ?

© A. Beugnard ENST Bretagne

Génie logiciel 60

Logique du pgm
Cas des systèmes d’information
Comportement Logique du pgm
A développer...
Données Comportement Logique du pgm

Fichier I/O Accès Comportement Logique du pgm

Fichier DBMS RDBMS ODMBS Ressources


Partagées

1960 Fichier Accès Comportement

Fichier Accès
1970

Fichier
On réutilise de plus en plus ! 1980

© A. Beugnard ENST Bretagne

A. Beugnard 30 1998
Introduction au génie logiciel # 4

Génie logiciel 61

Quelques macro-composants

• Les bases de données…objet, relationnelles, floues,


actives, déductives

• Les noyaux temps-réel…RTEMS


• Middleware (couches pour la distribution)…CORBA

• Les interfaces homme-machine (IHM)…ILOGView

• Les compilateurs de compilateur


• Des bibliothèques standards … C++ STL

© A. Beugnard ENST Bretagne

Génie logiciel 62

Framework

• Macro-composant adaptable/extensible

• Souvent construit à base d ’objets


– Des classes abstraites ou non définissent l ’ossature, la
structure
– Des classes concrètes illustrent l ’utilisation

– L ’utilisateur étend le framework avec ses propres classes en


respectant la structure proposée

• Exemples : AGL, éditeurs de graphes (CAO)


• Problème : gros, investissement lourd
© A. Beugnard ENST Bretagne

A. Beugnard 31 1998
Introduction au génie logiciel # 4

Génie logiciel 63

Design patterns

• Elément réutilisable plus petit

• Se capitalise facilement

• Permet de communiquer/documenter efficacement

© A. Beugnard ENST Bretagne

Génie logiciel 64

Design Pattern

En architecture (Christopher Alexander)


• Description d'un problème rémanant et de sa
solution
• Solution pouvant être utilisée des millions de fois
sans être deux fois identique

• Forme de conception, pattern, modèle, patron de


conception

• Mur, porte, fenêtre <--> objet, interface, classe

© A. Beugnard ENST Bretagne

A. Beugnard 32 1998
Introduction au génie logiciel # 4

Génie logiciel 65

Description d’une forme

• nom : augmente le vocabulaire, réifie une idée de


solution, permet de mieux communiquer.

• problème : quand appliquer la forme, le contexte...

• solution : les éléments de la solution, leurs relations,


responsabilités, collaborations. Pas de manière
précise, mais suggestives...

• conséquences : résultats et compromis issus de


l'application de la forme

© A. Beugnard ENST Bretagne

Génie logiciel 66

Adaptation
Exemple conception

On utilise l’Adapter lorsque on veut utiliser :

• une classe existante dont l'interface ne convient pas


• plusieurs sous-classes mais il est est coûteux de
redéfinir l'interface de chaque sous-classe en les
sous-classant. Un adapter peut adapter l'interface au
niveau du parent.

• S ’utilise aussi avec les différentes prises de courant !

© A. Beugnard ENST Bretagne

A. Beugnard 33 1998
Introduction au génie logiciel # 4

Génie logiciel 67

Adapter
Version héritage multiple

Client Cible Adapté

Request methodeSpec.

Adapter

Request methodSpec()

© A. Beugnard ENST Bretagne

Génie logiciel 68

Adapter
Version composition

Client Cible Adapté

Request methodeSpec.

adapté
Adapter

Request adapté.methodSpec()

© A. Beugnard ENST Bretagne

A. Beugnard 34 1998
Introduction au génie logiciel # 4

Génie logiciel 69

En conclusion sur les patterns

• Architecture de logiciel

• Capitalisation d'expériences dans les Patterns

• Une forme se mémorise bien, s'adapte


nécessairement

• Pas réservé aux objets (cf. Organisation)

• Comme la prose, on les utilise sans le savoir ! mais


quand on en est conscient, on améliore sa réflexion.

© A. Beugnard ENST Bretagne

Génie logiciel 70

Conclusion générale
Sachez quels problèmes vous rencontrerez
Anticipez les
• Réfléchissez ! Allez du plus abstrait au plus concret
Modélisez

• Communiquez ! Confrontez vos idées


Validez et faites validez vos réflexions

• Capitalisez votre expérience ! Notez, documentez, reconnaissez les formes


récurrentes
Exemple : estimation, patterns, qualité
• Adaptez votre organisation au problème !
Réfléchissez…appliquer une technique lourde pour un petit
projet est stupide.
Ce cours est là pour vous montrez l ’étendu des problèmes ;
tous les projets ne les rencontrent pas simultanément, quoi que !!!
© A. Beugnard ENST Bretagne

A. Beugnard 35 1998
Introduction au génie logiciel # 4

Génie logiciel 71

Encore plus...

• Ce cours est un survol…

• Resterait à survoler :
– planification/organisation du temps
– analyse de risque
– aspects juridiques
– aspects humains et sociaux (acceptation des outils)
– etc…

© A. Beugnard ENST Bretagne

A. Beugnard 36 1998

Vous aimerez peut-être aussi