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
4.3 Conception détaillée
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).
Conception détaillée open A ce niveau également, on procède par raffinements successifs open walk to door; reach for knob; open door; repeat until door opens turn knob clockwise; walk through; if knob doesn't turn, then close door. take key out; find correct key; insert in lock; endif pull/push door move out of way; end repeat
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.
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
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
Conception détaillée Programmation structurée - Organigrammes Ajouter une condition Z, a Si vrai, sortir du programme La situation se complique… 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… x 1 b x 2 c x d 3 f e x 4 g x 5
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.
Conception détaillée Tables de décision - exemple Matrice des combinaisons de conditions Liste des conditions Conditions Règles 1 2 3 4 5 6 7 8 Client a commandé catalogue d’hiver v f Client a commandé catalogue de Noël Client a commandé catalogue spécial Actions Envoyer le catalogue de Noël x Envoyer le catalogue spécial Envoyer les deux catalogues Liste des actions Matrice des actions activées
Conception détaillée Tables de décision Étapes à suivre pour développer une table de décision: Faire la liste de toutes les actions qui peuvent être associées à une procédure donnée. Faire la liste de toutes les conditions à vérifier pendant l’exécution de cette procédure. Faire la liste de toutes les combinaisons de satisfaction de conditions possibles en éliminant celles qui sont impossibles. Définir les règles en indiquant quelles actions sont déclenchées pour chaque combinaison de conditions.
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.
Conception détaillée Notation textuelle - pseudocode Caractéristiques d’une notation textuelle de conception 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.
Conception détaillée – notation textuelle Module FonctionsEntiers Export procedure rechercheNpremiers(n : in integer) Implementation procedure rechercheNpremiers(n: in integer) var i : integer; var liste: array(1..n) of integer; begin initialiser liste; i := 2; while i < n do if premier(i) then insérer i dans liste else ne rien faire i := nouveau candidat end while imprimer la liste à l’écran end; End FonctionsEntiers Entête et interface du module Entête de procédure et déclaration de variables Dans cet exemple, les pseudo-instructions susceptibles d’être raffinées: - Initialiser - Insérer - Nouveau candidat
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;