# Analyse fonctionnelle descendante

SADT (en anglais structured analysis and design technique), connue aussi sous le label IDEF0 (en anglais Integration Definition for Function Modeling), est une méthode d'origine américaine, développée pour Softech par Doug Ross en 1977 puis introduite en Europe à partir de 1982 par Michel Galinier. Elle se répandit vers la fin des années 1980 comme l'un des standards de description graphique d'un système complexe par analyse fonctionnelle descendante, c'est-à-dire que l'analyse chemine du général (dit « niveau A-0 ») vers le particulier et le détaillé (dits « niveaux A$_{ijk}$ »). SADT est une démarche systémique de modélisation d'un système complexe ou d'un processus opératoire.
SADT s’appuie sur un langage graphique pour analyser, comprendre et communiquer, exprimant un point de vue d’un problème complexe. Un modèle n'a de sens que s'il est lié à un point de vue et à des objectifs clairement définis. Il permet de modéliser à la fois des objets (documents, données) et les activités par une approche descendante, hiérarchique, structurée, modulaire. Il s’agit d’un modèle explicatif qui possède une syntaxe et une sémantique. C’est une représentation simplifiée du monde complexe suivant un point de vue.
On distingue les actigrammes (le module définit une activité qui transforme des flux de données, de matière ou d’énergie), des datagrammes (le module est constitué de données qui sont transformées par des activités). La modélisation par actigramme est utilisée dans la grande majorité des cas. (ref.3)

## Avantages

* Structure hiérarchisée par niveau permettant une clarification et une décomposition analytique de la complexité d'un système.
* Diagramme intemporel.
* Économie de temps.
* Encourage le travail et la communication interdisciplinaire et ceci d’une façon coordonnée
* Utilise un langage graphique imposant la concision et la précision des informations
* Permet la structuration de la réflexion et de concentrer l’attention
* Séparer le quoi (niveau conceptuel) du comment (niveau opérationnel)
* Expose les détails de façon progressive (descendante)
* Impose une cohérence des termes utilisées (ajout d’un glossaire, vocabulaire précis) et des niveaux de détails (niveaux hiérarchiques, notion de tuyau)
* Cadre conceptuel permettant le lien avec des descriptions plus détaillées faisant appel à d’autres outils ou méthodes (outils méthodologiques, logiciels, processus, procédures)
* Consignation sous forme écrite des choix importants et des définitions des termes utilisés
* Permet de faire des choix et de prendre des décisions

## Inconvénients

* Pas de représentation séquentielle ;
* Absence d'opération en logique booléenne (ET, OU, etc.) ;
* Impossibilité d'une vue globale, sauf au « niveau le plus haut ».
* Un modèle ne peut être vérifié d’une façon formelle, la validation est faite par consensus au niveau du groupe et après des échanges auteur- lecteur (forme et fond) (ref.3)

## Construction graphique
### Fonction

Une fonction est représentée par une « boîte » ou « module » SADT (datagramme ou actigramme). Une boîte SADT est située dans son contexte avec les autres boîtes ou modules, par l'intermédiaire de flèches de relation. Ces flèches symbolisent les contraintes de liaisons entre boîtes. Elles ne font pas office de commande ou de séquencement au sens strict.
Une boîte SADT se représente par un rectangle contenant :
* un verbe à l'infinitif définissant l'action et la valeur ajoutée de la fonction ;
* son label A$_{ijk}$ d'identification (ex. : A$_{253}$ : « Dimensionner un roulement à billes »), la lettre « A » du label signifiant « Activité ».
Sur cette boîte aboutissent ou partent :
* des flèches d'entrée horizontales représentant la matière d'œuvre (souvent à caractère informationnel et immatériel) ;
* des flèches d'entrée verticales descendantes représentant les contraintes de contrôle (souvent à caractère informationnel et immatériel) ;
* des flèches d'entrée verticales remontantes représentant les contraintes (souvent à caractère physique et matériel) de la boîte ;
* des flèches de sortie horizontales représentant la valeur ajoutée de la fonction (souvent à caractère informationnel et immatériel).
* Ainsi chaque boite d’un actigramme permet de préciser l’activité (verbe ou phrase verbale) et les flux associés par des flèches qui permettent de définir : -   En entrée (code E) la matière d'œuvre, l’énergie ou les données transformées ou traitées par l’activité ; -   En sortie (code S) le nouvel état du produit, de l’énergie, de l’information ; -   En contrôle et contrainte (code C) les éléments qui ne sont pas transformées par l’activité qui constituent les limites, les facteurs impactant, les indicateurs ; -   En support /mécanismes (code M), les ressources (matérielles, informationnelles, humaines) nécessaires pour réaliser l’activité. A chaque flèche est ajoutée une étiquette de quelques mots (label) de description des objets associés. Un code MECS peut être associé pour alléger la présentation (exemple : M1, S42..) (ref.3).

### Niveau

Repérés par certaines notations conventionnelles.

### Interconnexion

Les sorties d'une boîte peuvent être les « entrées matière d'œuvre » ou les « contrôles » d'une (ou plusieurs) autres boîtes.
La fonction courante A$_{ijk}$ peut ensuite être décomposée au niveau inférieur, noté « A$_{ijk}$+ », pour faire apparaître les sous-fonctions constituantes (exemple : activité « A$_{253}$+ » comprenant trois sous-fonctions : A$_{2531}$: « Choisir les plages de vitesses et les efforts de fonctionnement du roulement à billes », A$_{2532}$: « Identifier les types de roulements à billes possibles (à billes, à rouleaux coniques, à rouleaux cylindriques...) », A$_{2533}$: « Choisir les paramètres géométriques du roulement dans le catalogue fabriquant »).
Mise en œuvre
* Définir le contexte, le point de vue, les hypothèses.
* Identifier les activités, les entrées, sorties, contrôle / contraintes, ressources à la suite de l’analyse de documents ou d’échanges liés à la problématique
* Décrire le sujet du niveau général au niveau particulier, donc les activités et étiquettes évoluent d’un niveau général à un niveau plus particulier : concept de câble comportant plusieurs fils (ex. : usinage ⇒ tournage, fraisage, perçage)
* Choisir le niveau de détail suivant le point de vue et l’objectif, en général le déploiement au-delà de 3 ou 4 niveaux n’est plus pertinent. Choisir les éléments pertinents, significatifs par rapport aux hypothèses et au point de vue (ex : les rebuts, les ressources énergétiques utilisées doivent être indiqués ou non suivant les cas)
* Être précis et concis dans les termes utilisés, ajouter un glossaire pour préciser les termes principaux utilisés afin de préciser la signification des termes utilisés dans le contexte de la modélisation
* Valider le modèle dans le cadre d’un cycle auteur lecteur (analyse syntaxique et sur le fond)
* Concept du câble et des filsVérifier la cohérence syntaxique : à chaque boite doit être associé une flèche MECS. Dans certains cas, une entrée peut être aussi une contrainte, dans ce cas on peut limiter la représentation à une contrainte
* Vérifier la cohérence des codes MECS entre niveaux : chaque code (flèche) externe à un niveau doit apparaitre au niveau inférieur. Cependant pour une flèche (codes C ou M) peut être mise entre parenthèses pour signifier une information implicite pour les niveaux inférieurs.

## Implémentation logicielle
### Complète

* AI0 WIN
* Orchis par Geensoft

### Graphique

* IDEF0 par iGrafx
* Visio par Microsoft
* Dia (logiciel) par le projet GNOME
* Calligra Flow (it) (formerly Kivio) pour l'intégration au bureau KDE
* SADT avec Envision - CASE France