Développement des systèmes informatiques


Étude de cas - "KWIC INDEX"


Voir :


Structure conventionnelle

  1. Module "Input" : lecture de lignes de données, stockage en mémoire pour traitement par d’autres modules
    Interface d’entrée: format d’entrée, conventions spéciales
    Interface de sortie: format interne
  2. Module "Circular Shift" : prépare l’index avec l’adresse du premier caractère de chaque ligne décalée et l’indice de la ligne originale; quatre caractères par mot
    Interface d’entrée: format interne
    Interface de sortie: format interne
  3. Module "Alphabetizer" : trie les données produites par le module précédent dans l’ordre alphabétique
    Interface d’entrée: format interne
    Interface de sortie: format interne
  4. Module "Output" : produit une liste composée de tous les décalages circulaires
    Interface d’entrée: format interne
    Interface de sortie: format de papier, conventions, etc.
  5. Module "Master Control" : controle de l’exécution, traitement des erreurs, allocation de mémoire, etc.
    Interface: noms des programmes à invoquer

Décisions susceptibles d’être changées

  1. Format d’entrée
  2. Formats internes (Devons-nous garder toutes les lignes en mémoire? Quatre caractères par mot? L’indice ou garder toutes les rotations?)
  3. Tri complet de données (de sortie) avant que la sortie commence (est-il nécessaire?)
  4. Formats de sortie

Impact des changements sur les modules différents :

Structure alternative

  1. Module "Line Holder" : peut être vu comme une mémoire spéciale contenant des lignes de l’index
    GET_CHAR (lineno, wordno, charno)
    SET_CHAR (lineno, wordno, charno)
    WORDS (lineno)
    CHARS(lineno, wordno)
    DELETE_LINE (lineno)
    DELETE_WORD (lineno, wordno)
  2. Module "Input" : lit des lignes originales de l’entrée et appelle le module "Line Holder" pour les stocker
    INPUT()
  3. Module "Circular Shift" : fonctions correspondant à celles du module "Line Holder" + celles mentionnées ci-dessous; il crée l’impression que la mémoire contient les lignes originales et toutes les rotations possibles; il peut créer une table ou pas
    CS_SETUP()

    doit être appelée avant le premier appel de CS_CHAR

    CS_CHAR(shiftno, wrdno, charno)

    on exige que les rotations de la ligne i précèdent les rotations de la ligne j si i < j et que pour toute ligne la première rotation soit la ligne originale, la deuxième rotation - la ligne originale décalée d’un mot, etc.

  4. Module "Alpabetizer"
    ALPH()

    doit être appelée avant le premier appel de ITH

    ITH(i)

    retourne l’indice de la i-ème rotation dans l’ordre alphab.

  5. Module "Output" : imprime les lignes décalées, appelle ITH et "Circular Shift"
    OUTPUT()
  6. Module "Master Control" : appelle INPUT, CS_SETUP, ALPH et OUTPUT

Structure alternative: qu’est-ce qui s’est passé ?

Le secret de module

Exemples

  1. "Line holder"
    - comment des lignes sont-elles représentées en mémoire
  2. "Input"
    - format d’entrée
  3. "Circular shift"
    - comment des rotations sont-elles représentées
  4. "Alphabetiser"
    - algorithme de tri
    - le moment quand le tri est fait
  5. "Output"
    - format de sortie