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