# Diagramme de Warnier/Orr

Un diagramme Warnier/Orr (également connu sous le nom de construction logique d'un programme/système) est une sorte d'organigramme hiérarchique qui permet de décrire l'organisation des données et des procédures. Ils ont été initialement développés en 1976, en France par Jean-Dominique Warnier et aux États-Unis par Kenneth Orr sur la base de l'algèbre de Boole. Cette méthode facilite la conception des structures de programme en identifiant les résultats de sortie et de traitement, puis en travaillant en amont pour déterminer les étapes et les combinaisons d'entrées nécessaires pour les produire. La méthode graphique simple utilisée dans les diagrammes de Warnier/Orr rend les niveaux du système évidents et le mouvement des données entre eux vivant.

## Éléments de base

${\text{Page Wikipédia}}{\begin{cases}{\text{Section supérieure}}&{\begin{cases}{\text{Introduction}}\\{\text{Table des matières}}\end{cases}}\\{\text{Corps}}&{\begin{cases}{\underset {(1,n)}{\text{Body Section}}}&{\begin{cases}{\text{Titre}}\\{\text{Texte}}\end{cases}}\end{cases}}\\{\text{Section finale}}&{\begin{cases}{\text{Voir aussi}}\\{\text{Références}}\\{\text{Liens externes}}\end{cases}}\end{cases}}$
Les diagrammes de Warnier/Orr montrent les processus et les séquences dans lesquelles ils sont exécutés. Chaque processus est défini de manière hiérarchique, c'est-à-dire qu'il se compose d'ensembles de sous-processus qui le définissent. À chaque niveau, le processus est représenté par des crochets qui regroupent ses composants.
Étant donné qu'un processus peut comporter de nombreux sous-processus différents, le diagramme de Warnier/Orr utilise un ensemble de parenthèses pour indiquer chaque niveau du système. Les facteurs critiques dans la définition et le développement de logiciels sont l'itération ou la répétition et l'alternance. Les diagrammes Warnier/Orr illustrent très bien ce phénomène.

## Utilisation des diagrammes de Warnier/Orr

Pour élaborer un diagramme Warnier/Orr, l'analyste travaille à rebours, en commençant par les résultats des systèmes et en utilisant une analyse orientée vers les résultats. Sur le papier, le développement va de l'ensemble à l'élément (de gauche à droite). Tout d'abord, l'extrant ou les résultats prévus du traitement sont définis. Au niveau suivant, indiqué par l'inclusion d'une parenthèse, les étapes nécessaires pour produire le résultat sont définies. Chaque étape est à son tour définie. Des parenthèses supplémentaires regroupent les processus nécessaires pour produire le résultat au niveau suivant.
Les diagrammes de Warnier/Orr offrent des avantages indéniables aux experts en systèmes. Ils sont simples d'apparence et faciles à comprendre. Pourtant, ce sont des outils de conception puissants. Ils ont l'avantage de montrer les groupements de processus et les données qui doivent être transmises d'un niveau à l'autre. En outre, la séquence de travail à rebours garantit que le système sera orienté vers les résultats. Cette méthode est utile à la fois pour la définition des données et des processus. Elle peut être utilisée indépendamment pour chacun d'entre eux, ou les deux peuvent être combinés sur le même diagramme.

## Constructions dans les diagrammes de Warnier/Orr

Quatre concepts de base sont utilisés dans les diagrammes de Warnier/Orr : la hiérarchie, la séquence, la répétition et l'alternance. Il existe également deux concepts légèrement plus avancés qui sont parfois nécessaires : la concurrence et la récursion.

### Hiérarchie

La hiérarchie est la plus fondamentale de toutes les constructions de Warnier/Orr. Il s'agit simplement d'un groupe imbriqué d'ensembles et de sous-ensembles représentés sous la forme d'un ensemble de crochets imbriqués. Chaque parenthèse du diagramme (selon la façon dont vous la représentez, le caractère ressemble généralement plus à une accolade "{" qu'à une parenthèse "[", mais nous les appelons "parenthèses") représente un niveau de hiérarchie. La hiérarchie ou la structure représentée sur le diagramme peut montrer l'organisation des données ou du traitement. Cependant, les données et les traitements ne sont jamais représentés sur le même diagramme.

### Séquence

La séquence est la structure la plus simple à représenter sur un diagramme Warnier/Orr. À l'intérieur d'un niveau hiérarchique, les caractéristiques énumérées sont représentées dans l'ordre dans lequel elles se produisent. En d'autres termes, l'étape énumérée en premier est la première qui sera exécutée (si le diagramme reflète un processus), tandis que l'étape énumérée en dernier est la dernière qui sera exécutée. De même, pour les données, le champ de données indiqué en premier est le premier que l'on rencontre lors de l'examen des données, tandis que le champ de données indiqué en dernier est le dernier que l'on rencontre.

### Répétition

La répétition est la représentation d'une "boucle" classique en termes de programmation. Elle se produit chaque fois que le même ensemble de données se répète (pour une structure de données) ou chaque fois que le même groupe d'actions doit se répéter (pour une structure de traitement). La répétition est indiquée en plaçant un ensemble de chiffres entre parenthèses sous l'ensemble répétitif.
Généralement, deux nombres sont indiqués entre parenthèses, représentant le nombre le plus faible et le nombre le plus élevé de fois que l'ensemble se répète. Par convention, la première lettre de l'ensemble qui se répète est la lettre choisie pour représenter le maximum.
Bien que la borne minimale et la borne maximale puissent techniquement être n'importe quoi, elles sont le plus souvent soit "(1,n)" comme dans l'exemple, soit "(0,n)". Lorsqu'elle est utilisée pour représenter un traitement, la répétition "(1,n)" est classiquement connue sous le nom de boucle "DoUntil", tandis que la répétition "(0,n)" est appelée boucle "DoWhile". Sur le diagramme de Warnier/Orr, cependant, il n'y a pas de distinction entre les deux types de répétition, si ce n'est la valeur limite minimale.
Parfois, les limites minimales et maximales sont prédéfinies et ne sont pas susceptibles de changer : par exemple, l'ensemble "Jour" apparaît dans l'ensemble "Mois" de 28 à 31 fois (puisque le plus petit mois compte 28 jours, et le plus grand, 31). Il est peu probable que cela change. Et parfois, le minimum et le maximum sont fixés au même nombre.
En général, cependant, il est déconseillé de coder en dur une constante autre que "0" ou "1" dans une clause relative au nombre de fois ; la conception doit être suffisamment souple pour permettre de modifier le nombre de fois sans modifier la conception. Par exemple, si une entreprise compte 38 employés au moment de la conception, coder en dur "38" comme "nombre d'employés" au sein de l'entreprise ne serait certainement pas aussi souple que de concevoir "(1,n)".
La clause number of times est toujours un opérateur attaché à un ensemble (c'est-à-dire le nom d'une parenthèse) et n'est jamais attachée à un élément (une caractéristique du diagramme qui ne se décompose pas en caractéristiques plus petites). La raison en deviendra plus évidente au fur et à mesure que nous travaillerons avec les diagrammes. Pour l'instant, vous devez accepter cela comme une règle de formation pour un diagramme correct.

### Alternance

L'alternance, ou la sélection, est le processus traditionnel de "décision" par lequel on décide d'exécuter un processus ou un autre. Le symbole OR exclusif (le signe plus à l'intérieur du cercle) indique que les ensembles situés immédiatement au-dessus et au-dessous sont mutuellement exclusifs (si l'un est présent, l'autre ne l'est pas). Ce diagramme indique qu'un employé est soit cadre, soit non cadre, mais qu'il ne peut pas être les deux à la fois. Il est également permis d'utiliser une "barre de négation" au-dessus d'une alternative d'une manière similaire à la notation technique. La barre est lue en utilisant simplement le mot "pas".
Les alternatives ne doivent pas nécessairement être binaires, comme dans les exemples précédents, mais peuvent être multiples.

### Concurrence

La simultanéité est l'un des deux concepts avancés utilisés dans la méthodologie. Elle est utilisée chaque fois que la séquence n'est pas importante. Par exemple, les années et les semaines fonctionnent simultanément (ou en même temps) dans notre calendrier. L'opérateur de simultanéité est rarement utilisé dans la conception de programmes (puisque la plupart des langages ne permettent pas un véritable traitement simultané), mais il entre en jeu lorsqu'il s'agit de résoudre des conflits de structures de données logiques et physiques.

### Récursivité

La récursivité est la construction la moins utilisée. Elle est utilisée pour indiquer qu'un ensemble contient une version antérieure ou une version moins ordonnée de lui-même. Dans le problème classique de la "nomenclature", les composants contiennent des pièces et d'autres sous-composants. Les sous-composants contiennent également des sous-sous-composants, et ainsi de suite. Le crochet double indique que l'ensemble est récursif. Les structures de données réellement récursives sont plutôt rares.

## Applications

Une source a mentionné les diagrammes de Warnier-Orr (ainsi que les diagrammes de Booch et les diagrammes d'objets ) comme une méthode inférieure pour la conception d'architecture logicielle basée sur des modèles.