La décomposition fonctionnelle

Adam Ben Ltaifa
ELP-2018
Published in
3 min readJan 30, 2019

Qui que vous soyez, dans un contexte personnel ou professionnel, vous avez été ou vous serez bientôt amenés à réaliser un produit ou un projet, en ayant une idée parfaitement précise de ce que vous désirez obtenir sans pour autant savoir comment atteindre votre but. Vous ne savez pas par où commencer ?

Dans ce cas, la décomposition fonctionnelle est là pour vous éclairer !

La décomposition fonctionnelle : de quoi s’agit — il ?

De manière générale, la décomposition fonctionnelle se définit comme une méthode d’analyse. Elle prend une tâche complexe et la dissèque pour visualiser les différentes étapes qui la composent. Elle permettra ensuite d’analyser et de comprendre les relations entre tous les éléments constitutifs afin d’avoir une vision globale et détaillée des actions à réaliser pour aboutir à la réalisation de notre tâche principale. Pour vulgariser, la décomposition fonctionnelle prend quelque chose de complexe et la simplifie.

Les applications :

La décomposition fonctionnelle s’utilise dans énormément de domaines mais principalement dans l’ingénierie informatique. Dans la pratique, les ingénieurs l’utilisent pour décomposer la fonction principale, détailler les différentes étapes à suivre pour arriver au but fixé. En effet, dans un code informatique, il est très déconseillé de coder dans la même fonction toutes les étapes à réaliser et cela en supposant qu’on arrive à avoir une idée claire de toutes les tâches à accomplir. C’est pourquoi il est très utile de décomposer notre tâche complexe en sous-tâches(sous-fonctions) voire en sous-sous-tâches et comprendre comment elles fonctionnent ensemble.

Exemple : un programmeur veut coder un programme qui réalise une pièce montée.

Il lui faut des données : œufs, farine, beurre, etc…

Il ne doit pas coder une fonction qui mélange tout et réalise toutes les étapes d’un seul coup car si une erreur apparaît, il sera incapable de la localiser et son programme sera impossible à lire par ses collègues.

Ce dernier va donc diviser son code en créant différentes fonctions :

Fonction 1(œufs) -> bats les blancs en neige -> en sortie, il a des blancs en neige.

Fonction 2(beurre) -> fondre le beurre -> en sortie du beurre fondu.

Et ainsi de suite, sans oublier la création de fonctions supérieures pour aboutir au produit final.

On peut parler de programmation procédurale, le programme principal (ici fabrication de la pièce montée) est divisé en sous parties appelées fonctions. Comme son nom l’indique, la programmation procédurale contient une procédure étape par étape à exécuter. Les tâches sont décomposées en petites parties et ensuite, pour résoudre chaque partie, une ou plusieurs fonctions seront utilisées.

On obtient ainsi une arborescence de fonctions hiérarchisée, qu’on représente sous forme de schéma nommé : Diagramme de décomposition fonctionnelle.

Diagramme de décomposition fonctionnelle :

La création du diagramme de décomposition fonctionnelle est une étape clé.

Dans ce dernier, les éléments individuels du programme et les relations hiérarchiques entre les fonctions y sont affichées.

Les objectifs de ce diagramme sont multiples :

  • Permettre au programmeur d’avoir une vision globale du projet
  • Une meilleure compréhension des différentes actions à réaliser
  • Faciliter la compréhension du sujet entre différents membres dans un contexte de travail en équipe
  • Faciliter la découverte et la correction des erreurs pouvant apparaître

En somme, la décomposition fonctionnelle est très utile dans le monde professionnel. Elle est basée sur la discrétisation des fonctions destinées à la manipulation de données. Le partitionnement des fonctions est basé sur un paradigme différent, ce qui conduit à un regroupement différent des fonctions et des données associées. Le regroupement ne sera pas le même si on utilise un langage procédural ou un langage orienté Objet. L’erreur la plus commune est de mélanger les types de regroupements en fonction du type de langage utilisé.

Bibliographie:

https://waytolearnx.com/2018/09/difference-entre-programmation-procedurale-et-orientee-objet.html

https://www.investopedia.com/terms/f/functional-decomposition.asp

https://sourcemaking.com/antipatterns/functional-decomposition

https://www.tutorialspoint.com/software_testing_dictionary/functional_decomposition.htm

http://wiki.c2.com/?FunctionalDecomposition

--

--