La démarche fonctionnelle a été longtemps considérée comme une pensée universelle et naturelle.
Elle est descendante, car son point de départ est considéré plus abstrait (moins d'informations) que les points d'arrivée terminaux (fonctions plus détaillées).
Dans ce type de démarche, les expressions verbales sont prépondérantes aux expressions nominales.
Notons que de nombreux utilisateurs de systèmes ont intégré ce principe et il leur est difficile d'appréhender une autre manière de voir les choses.
Beaucoup d'informaticiens utilisant des techniques de programmation impérative demeurent persuadés que quoique l'on dise ou fasse, il faudra bien revenir à une décomposition algorithmique puisque nos ordinateurs possèdent in fine ce moyen de fonctionnement.
Les logiciels conçus selon une préoccupation fonctionnelle sont difficilement adaptables et/ou réutilisables puisqu'il est :
1) nécessaire de casser le module à étendre.
2) et qu'il faudra remettre en cause les structures de données.
Le problème provient du découplage des données sur les procédures agissant sur les données.
Les langages de troisième génération (C, PASCAL, COBOL) n'ont qu'un jeu restreint d'instructions élémentaires, ils raisonnent en termes de
traitements et leur conception est essentiellement procédurale.
Remarque : Nous allons voir dans les paragraphes suivants que l'orienté objet ne se limite pas à une approche
exclusivement fonctionnelle mais qu'au contraire, il privilégie les approches
procédant selon plusieurs niveaux d'abstraction et suivant plusieurs axes de modélisation.