tables de décision - Université de Montréal

publicité
Ift 2251
Introduction au Génie Logiciel
Partie 4
Conception
Ref. Pressman Ch. 13, 14 et 16
Julie Vachon, DIRO, Université de Montréal, 2001
1
4.3 Conception
détaillée
2
Conception détaillée
La conception détaillée s’intéresse à la conception des composants
ou modules formant l’architecture d’un système.
On devient de moins en moins abstrait, pour s’approcher d’une
conception de plus en plus détaillée, prête à être codée dans un
langage de programmation.
On pourrait décrire la conception détaillée des composants
directement dans un langage de programmation. Une alternative
propose toutefois de le faire dans une notation intermédiaire (de plus
haut niveau qu’un langage de programmation) qui peut facilement
être traduite en code source.
Ces notations intermédiaires peuvent être
-graphiques (flowchart, organigramme),
- tabulaires (tables de décision)
- textuelles (pseudocode).
3
Conception détaillée
A ce niveau également,
on procède par
raffinements successifs
open
walk to door;
reach for knob;
open door;
walk through;
close door.
repeat until door opens
turn knob clockwise;
if knob doesn't turn, then
take key out;
find correct key;
insert in lock;
endif
pull/push door
move out of way;
end repeat
4
Conception détaillée
Programmation structurée
- La programmation structurée propose une
méthode de conception détaillée basée sur
l’utilisation d’un ensemble limité de
construction logiques:
- la séquence
- la condition
- la répétition
- Ce minimalisme permet de réduire la
complexité des programmes et d’en améliorer
la compréhension, le test et la maintenance.
- Contribue à la qualité des logiciel… mais n’est
pas suffisant.
5
Conception détaillée
Programmation structurée - Organigrammes
La programmation structurée s’exprime généralement en
utilisant une notation graphique (flowchart,
organigramme).
Cette notation utilise trois primitive.
Action
(à un niveau
d’abstraction quelconque)
Condition
(à un niveau d’abstraction
quelconque)
Flot
d’exécution
6
Conception détaillée
Programmation structurée - Organigrammes
Trois constructions principales…
While-Do
v
f
Repeat-until
f
v
Séquence
Condition
Répétition
7
Conception détaillée
Programmation structurée - Organigrammes
Ajouter une condition Z,
Si vrai, sortir du programme
a
La situation se
complique…
x1
b
x2
x3
d
f
e
x4
g
x5
c
Il faudrait rajouter
des branches
de sortie permettant de
sortir des
boucles imbriquées…
Ce qui n’est pas autorisé
en prog. structurée
La programmation
structurée n’est pas
toujours adéquate et
efficace…
8
Conception détaillée
Tables de décision
-Utile lorsqu’un module doit évaluer une combinaison
complexe de conditions et sélectionner les actions appropriées
qui en découlent.
-Permet de structurer les actions et les conditions dont elles
dépendent sous forme de tableau.
-Peut éventuellement être utilisé comme donnée d’entrée à un
programme pour diriger les pas d’un algorithme.
9
Conception détaillée
Liste des
conditions
Matrice des
combinaisons
de conditions
Tables de décision - exemple
Conditions
Client a commandé
catalogue d’hiver
Règles
1 2 3 4 5 6 7 8
v v v v f f f f
Client a commandé
catalogue de Noël
v
v f
Client a commandé
catalogue spécial
v
f
f v v f
f
v f v f v f
Actions
Envoyer le catalogue
de Noël
x
Envoyer le catalogue
spécial
Envoyer les deux
catalogues
Liste des
actions
x
x
x
x
x
x
x
Matrice des
actions
activées
10
Conception détaillée
Tables de décision
Étapes à suivre pour développer une table de
décision:
1. Faire la liste de toutes les actions qui peuvent être
associées à une procédure donnée.
2. Faire la liste de toutes les conditions à vérifier
pendant l’exécution de cette procédure.
3. Faire la liste de toutes les combinaisons de
satisfaction de conditions possibles en éliminant
celles qui sont impossibles.
4. Définir les règles en indiquant quelles actions sont
déclenchées pour chaque combinaison de
conditions.
11
Conception détaillée
Notation textuelle - pseudocode
-Notation de conception qui utilise
- une syntaxe proche de celle d’un langage de
programmation
- des expressions en langue naturelle
- Peut éventuellement être compilée pour produire le squelette
d`un programme ou une représentation graphique sous forme
d’organigramme.
- Les notations textuelles de conception sont
- souvent une simple transposition d’un langage de
programmation déjà existant.
Ex. pseudo-pascal, pseudo-ada, etc.
- parfois spécialement conçu pour aider à la conception.
12
Conception détaillée
Notation textuelle - pseudocode
Caractéristiques d’une notation textuelle de
conception
1) Mots clefs avec syntaxe précise pour décrire:
- les constructions structurées: séquence, condition,
répétition, structure de bloc
- la déclaration des types et des données (simples ou
complexes)
- les caractéristiques des modules: entête et définition
d’interface
- entrées/sortie
2) Syntaxe libre en langue naturelle pour décrire
certains aspects de traitement.
13
Conception détaillée – notation textuelle
Module FonctionsEntiers
Export procedure rechercheNpremiers(n : in integer)
Implementation
procedure rechercheNpremiers(n: in integer)
Entête de procédure
var i : integer;
et déclaration de
variables
var liste: array(1..n) of integer;
begin
Dans cet exemple, les
initialiser liste;
pseudo-instructions
i := 2;
susceptibles d’être
while i < n do
raffinées:
begin
- Initialiser
if premier(i) then
- Insérer
- Nouveau candidat
insérer i dans liste
else
ne rien faire
i := nouveau candidat
end while
imprimer la liste à l’écran
end;
End FonctionsEntiers
14
Entête et interface
du module
Conception détaillée – notation textuelle
Quelques autres éléments de la notation…
Repeat
instructions
Until condition
Function t (n: in boolean): integer;
Procedure v (n: in boolean; x: out real);
Type B : array(1..5,1..8) of boolean;
15
Téléchargement