André Leclerc informaticien-conseil

Une méthodologie simple pour spécifier les comportements logiques des composants métier d’un système d’information

Cette page propose une méthodologie simple pour spécifier la logique contenue dans les composants métier d’un système d’information.

Cette méthodologie est basée sur quelques concepts de modélisation d’affaires qui devraient être lus avant de continuer la lecture de cette page-ci.

Comme le but principal de cette méthodologie est de de spécifier la logique métier mise en oeuvre par une méthode d’un composant métier, et comme les méthodes sont un des artefacts d’un modèle de domaine d’affaires d’un système d’information, ces artefacts de modélisation d’affaires devraient aussi être lus avant de continuer la lecture de cette page-ci.


But

Le but principal de cette méthodologie est de spécifier la logique métier de manière à ce qu’elle soit comprise autant par les gens d’affaires qui utilisent les systèmes d’information que par les informaticiens qui les construisent.

Même si le pseudo code n’est pas le seul moyen d’atteindre ce but, il est le moyen de choix qui est décrit ici étant donné sa grande utilisation et son haut niveau de compréhension parmi ses utilisateurs.

Le pseudo code est aussi connu sous le vocable de français structuré puisqu’il est basé sur un sous-ensemble très simple de la langue française.  La logique exprimée en pseudo code est non seulement claire mais aussi complète.  La traduction de bon pseudo code en vrai code (celui que les programmeurs d’ordinateurs produisent) est une tâche qui peut être automatisée en grande partie.


Retour à la page d’accueil Retour au matériel documentaire Retour au haut de cette page

Vocabulaire

Parce qu’il doit décrire une logique d’affaires, tout pseudo code devrait être formulé en utilisant un vocabulaire emprunté au domaine d’affaires plutôt qu’à la technologie de l’information.

Par exemple, “Obtenez la prochaine ligne d’article qui fait partie de la commande.” est une bonne formulation d’une action à l’intérieur de pseudo code puisqu’elle utilise des termes connus des gens d’affaires.

Toutefois, “Augmentez de un le numéro de ligne d’article courante et lisez l’enregistrement de la ligne d’article de commande correspondant au nouveau numéro de ligne d’article courante.” n’en est pas une car les termes utilisés n’ont de signification que pour les techniciens qui auront à développer et à mettre en oeuvre la logique.


Retour à la page d’accueil Retour au matériel documentaire Retour au haut de cette page

Formes de programmation

Seulement trois (3) formes générales de programmation sont requises pour spécifier le flux de contrôle à l’intérieur de pseudo code:

  1. la forme séquentielle dans laquelle les actions sont exécutées séquentiellement, une après l’autre;
  2. la forme sélective dans laquelle différentes séries d’actions sont exécutées selon le résultat d’un essai ou selon une valeur de données; et
  3. la forme itérative dans laquelle un groupe d’actions est exécuté de manière itérative un certain nombre de fois, aussi longtemps qu’un certain état existe, ou jusqu’à ce que un certain état se produise.

La forme sélective se décompose en deux (2) formes plus raffinées:

  1. la forme “si ... sinon” proposant une série d’actions si un état existe et une autre série d’actions dans le cas contraire; et
  2. la forme “selon” proposant un grand nombre de séries d’actions selon la valeur de données retournée par une expression.

La forme itérative se décompose en trois (3) formes plus raffinées:

  1. la forme “pour” exécutant un groupe d’actions apparentées un certain nombre de fois;
  2. la forme “tant que” exécutant un groupe d’actions apparentées tant qu’un certain état existe; et
  3. la forme “faire ... jusqu’à” exécutant un groupe d’actions apparentées jusqu’à ce que un certain état se produise.

En comptant la forme “séquentielle”, les deux formes “sélectives” et les trois formes “itératives”, six (6) formes de base de programmation sont disponibles pour spécifier le flux de contrôle à l’intérieur de pseudo code.   Chacune de ces formes peut être imbriquée à l’intérieur de n’importe quelle autre forme.

À part des mots clé et des symboles bien choisis, le pseudo code ne suit pas de notation rigoureuse puisqu’il est fait pour être lu et compris par des personnes et non pas par des ordinateurs.

La méthodologie présentée dans ce document ne constitue pas une norme universelle.   Une telle norme universelle pour le pseudo code n’existe tout simplement pas.   Cependant, la méthodologie présentée ici, pour spécifier de la logique sous forme de pseudo code, a prouvé son utilité lors de multiples projets et est facile à apprendre et à utiliser.


Retour à la page d’accueil Retour au matériel documentaire Retour au haut de cette page

1)  Formes séquentielles

Une forme séquentielle est spécifiée en écrivant les actions les unes après les autres, chaque action étant sur une ligne par elle-même, et toutes les actions étant alignées avec le même décalage à partir de la marge de gauche.

Les actions sont exécutées suivant l’ordre (de haut en bas) dans lequel elles sont écrites.

Voici un exemple d’une série séquentielle d’actions:

Brosser dents.
Laver visage.
Peigner cheveux.
Sourire au miroir.

2)  Formes sélectives “Si ... Sinon

Le choix d’une série d’actions au lieu d’une autre, selon l’existence ou l’inexistence d’un état, est spécifié comme suit:

si ( état à vérifier ) {
   série d’actions
}
sinon {
   une autre série d’actions
}

Dans la syntaxe ci-dessus, les mots clé “si” et “sinon” marquent le commencement des deux clauses de cette forme.  La clause “sinon” est facultative.  L’état dont l’existence est à vérifier est spécifié à l’intérieur de parenthèses.  Les deux séries d’actions alternatives sont en fait deux séries séquentielles (la première forme de base décrite plus haut) et distinctes déactions, chacune étant encadrée par une paire de parenthèses bouclées assorties.  Voici un exemple d’une forme sélective “si ... sinon”:

si ( heures travaillées > nombre d’heures régulières ) {
   calculer heures de surtemps
   afficher message de surtemps
}
sinon {
   afficher message de temps réglementaire
}

3)  Formes sélectives “Selon

Le choix d’une série d’actions parmi plusieurs séries potentielles, selon la valeur de données retournée par une expression, est indiqué comme suit:

selon ( expression à évaluer ) {
   cas première valeur:
      première série d’actions
   cas deuxième valeur:
      deuxième série d’actions
   défaut:
      série d’actions par défaut
}

Dans la syntaxe ci-dessus, les mots clé “cas” et “défaut” marquent le commencement de séries d’actions alternatives correspondant à différentes valeurs que l’expression à évaluer peut prendre.  Il n’y a pas de limite au nombre de clauses “cas” pouvant être spécifiées et la clause “défaut” est facultative.  L’ordre dans lequel ces clauses sont spécifiées est important car seulement la première clause ayant la bonne valeur obtient le contrôle; toute clause subséquente, qu’elle ait la bonne valeur ou pas, est ignorée.  Le mot clé “selon” marque le commencement d’une série de cas se référant à la même expression.  L’expression à évaluer apparaît entre parenthèses.  Voici un exemple d’une forme sélective “selon”:

selon ( âge du client ) {
   cas 65 ans ou plus:
      charger 2,50 $
   cas 18 ans ou plus:
      charger 5,00 $
   défaut:
      charger 2,00 $
}

4)  Formes itératives “Pour

L’exécution d’un groupe d’actions apparentées un certain nombre de fois est spécifiée comme suit:

pour ( expression d’itération ) {
   série d’actions
}

Dans la syntaxe ci-dessus, le mot clé “pour” marque le commencement d’une série d’actions à exécuter itérativement un certain nombre de fois tel qu’indiqué par l’expression d’itération.  Cette forme de programmation est souvent appelée une boucle de “comptage”.  L’expression d’itération apparaissant à l’intérieur des parenthèses détermine le nombre exact de fois que les actions listées à l’intérieur de la boucle vont s’exécuter.  Voici un exemple d’une forme itérative “pour”:

pour ( chaque mois de l’année financière ) {
   calculer les revenus totaux
   calculer les dépenses totales
   calculer les profits ou pertes
   afficher les profits ou pertes
}

5)  Formes itératives “Tant que

L’exécution d’un groupe d’actions apparentées aussi longtemps qu’un certain état existe est spécifiée comme suit:

tant que ( état à vérifier ) {
   série d’actions
}

Dans la syntaxe ci-dessus, les mots clé “tant que” marquent le commencement d’une série d’actions à exécuter itérativement tant que l’état à vérifier existe.  L’existence du dit état est testée avant qu’aucune action ne s’exécute à l’intérieur d’une itération.  La série d’actions est exécutée jusqu’à ce que l’état à vérifier n’existe plus.  L’état à vérifier est spécifié à l’intérieur de parenthèses.  Voici un exemple d’une forme itérative “tant que”:

chercher la première transaction impliquant la caisse
si ( pas trouvée )
   quitter
lire détails de la transaction
initialiser le solde du compte de la caisse à zéro
tant que ( transaction trouvée ) {
   si ( la transaction débite la caisse )
      ajouter le montant de la transaction au solde de la caisse
   sinon
      soustraire le montant de la transaction du solde de la caisse
   chercher la prochaine transaction impliquant la caisse
   si ( trouvée )
      lire détails de la transaction
}
afficher le solde du compte de la caisse

6)  Formes itératives “Faire ... jusqu’à

L’exécution d’un groupe d’actions apparentées jusqu’à ce que un certain état se produise est spécifiée comme suit:

faire {
   série d’actions
}
jusqu’à ( état à vérifier )

Dans la syntaxe ci-dessus, le mot clé “faire” marque le commencement d’une série d’actions à exécuter itérativement jusqu’à ce que l’état à vérifier existe.  La série d’actions est exécutée au moins une fois étant donné que l’état n’est vérifié qu’après une itération.  La série d’actions est exécutée jusqu’à ce que l’état à vérifier existe.  L’état à vérifier est spécifié à l’intérieur de parenthèses.  Voici un exemple d’une forme itérative “faire ... jusqu’à”:

initialiser le solde du compte de la caisse à zéro
se positionner en haut des transactions
faire {
   chercher la prochaine transaction impliquant la caisse
   si ( trouvée ) {
      lire détails de la transaction
      si ( la transaction débite la caisse )
         ajouter le montant de la transaction au solde de la caisse
      sinon
         soustraire le montant de la transaction du solde de la caisse
   }
}
jusqu’à ( transaction pas trouvée )
afficher le solde du compte de la caisse

Retour à la page d’accueil Retour au matériel documentaire Retour au haut de cette page

Les six (6) formes de base de programmation décrites sur les pages précédentes permettent la spécification de n’importe quel ensemble d’opérations logiques, que ces opérations soient des opérations d’une entreprise, d’une application roulant sur ordinateur ou d’un périphérique programmable  Ces opérations s’exécutent via les méthodes dans lesquelles elles sont groupées.  Les composants métier d’un système d’information possèdent des méthodes mettant en oeuvre leurs comportements et leur permettant de prendre leurs parts de responsabilités lors de cas d’utilisation du système d’information.  La logique de ces méthodes peut être spécifiée avec du pseudo code.  En spécifiant la logique de ces méthodes, on rencontre toujours des parcelles de pseudo code qui réapparaissent plusieurs fois à l’intérieur d’une même méthode ou à l’intérieur de plusieurs méthodes.  Ces ensembles de pseudo code commun peuvent être spécifiés une seule fois dans des méthodes qui leur sont propres, lesquelles méthodes peuvent être invoquées à partir de n’importe quelle autre méthode en ayant besoin.  La boîte ci-bas montre une façon de déclarer et d’invoquer des méthodes, de passer des paramètres à ces méthodes, et de retourner des valeurs des méthodes invoquées aux méthodes les invoquant:

méthode nom-de-méthode ( paramètre1, paramètre2, ... ) {
   ... du pseudo code ...
   autre-nom-de-méthode ( valeur1, valeur2, ... )
   ... encore du pseudo code ...
   retourner valeur-quelconque
}

Une fois déclaré, le nom d’une méthode devient un mot clé devant être mis en évidence comme les autres mots clé.  D’autres mots clé peuvent être ajoutés aux mots clé rencontrés jusqu’ici s’ils peuvent contribuer à clarifier la logique spécifiée par le pseudo code.  Par exemple:


Voici quelques lignes directrices à garder en tête lorsqu’on écrit du pseudo code:

  1. Utilisez les décalages pour montrer clairement l’imbrication de formes à l’intérieur d’autres formes.
  2. Utilisez des paires assorties de parenthèses bouclées pour grouper les actions qui font partie de la même clause ou du même groupe.  Assurez-vous que chaque parenthèse d’ouverture est assortie d’une parenthèse de fermeture.
  3. Utilisez des méthodes pour grouper des séries d’actions qui sont invoquées de plus d’un endroit ou qui sont tellement longues que le fait de les sortir du pseudo code principal et de les placer dans une méthode séparée faciliterait la lecture du pseudo code.

Retour à la page d’accueil Retour au matériel documentaire Retour au haut de cette page