Un algorithme complexe est divisé en petites parties appelées modules, et le processus de division est appelé modularisation . La modularisation réduit considérablement les complications liées à la conception d'un algorithme et facilite la conception et la mise en œuvre de son processus. La programmation modulaire est la technique de conception et d’écriture d’un programme sous la forme de fonctions, chaque fonction étant distincte les unes des autres et fonctionnant de manière indépendante. Le contenu des fonctions est cohérent et il existe un faible couplage entre les modules.
Tableau de comparaison
Base de comparaison | Approche descendante | Une approche en profondeur |
---|---|---|
De base | Divise le problème massif en sous-problèmes plus petits. | Résout le problème fondamental de bas niveau et les intègre à un problème plus vaste. |
Processus | Les sous-modules sont analysés de manière volontaire. | Examiner quelles données doivent être encapsulées et implique le concept de dissimulation d’informations. |
la communication | Non requis dans l'approche descendante. | Nécessite une quantité spécifique de communication. |
Redondance | Contient des informations redondantes. | La redondance peut être éliminée. |
Langages de programmation | Les langages de programmation orientés structure / procédure (ie C) suivent l’approche descendante. | Les langages de programmation orientés objet (comme C ++, Java, etc.) suivent l'approche ascendante. |
Principalement utilisé dans | Documentation du module, création de scénarios de test, implémentation de code et débogage. | Essai |
Définition de l'approche descendante
L’approche descendante divise un problème complexe ou un algorithme en plusieurs parties plus petites (modules). Ces modules sont ensuite décomposés jusqu'à ce que le module résultant constitue le programme fondamental, soit essentiellement compris et ne puisse plus être décomposé. Après avoir atteint un certain niveau de modularité, la décomposition des modules est arrêtée. L’approche descendante est le processus par étapes consistant à scinder le module de programme volumineux en modules plus simples et plus petits pour organiser et coder le programme de manière efficace. Le flux de contrôle dans cette approche est toujours dans la direction descendante. L'approche descendante est implémentée dans le langage de programmation «C» à l'aide de fonctions.
Ainsi, la méthode descendante commence par la conception abstraite, puis séquentiellement, cette conception est affinée pour créer des niveaux plus concrets jusqu'à ce qu'il n'y ait plus aucune exigence de raffinement supplémentaire.
Définition de l'approche ascendante
L’approche ascendante fonctionne de manière opposée à l’approche descendante. Initialement, il comprend la conception des pièces les plus fondamentales qui sont ensuite combinées pour former le module de niveau supérieur. Cette intégration de sous-modules et de modules dans le module de niveau supérieur est répétée jusqu'à l'obtention de l'algorithme complet requis.
L’approche ascendante fonctionne avec des couches d’abstraction. La principale application de l'approche ascendante consiste à tester, chaque module fondamental étant d'abord testé avant de le fusionner avec le plus grand. Le test est effectué à l'aide de certaines fonctions de bas niveau.
Principales différences entre les approches descendante et ascendante
- L'approche descendante décompose la tâche importante en sous-tâches plus petites, tandis que l'approche ascendante choisit d'abord de résoudre directement les différentes parties fondamentales de la tâche, puis de les combiner en un programme complet.
- Chaque sous-module est traité séparément selon une approche descendante. En revanche, l’approche ascendante met en œuvre le concept de dissimulation d’informations en examinant les données à encapsuler.
- Les différents modules en approche descendante ne nécessitent pas beaucoup de communication. Au contraire, l'approche ascendante nécessite une interaction entre les modules fondamentaux distincts pour les combiner ultérieurement.
- Une approche descendante peut produire une redondance, tandis qu'une approche ascendante n'inclut pas d'informations redondantes.
- Les langages de programmation procéduraux tels que Fortran, COBOL et C suivent une approche descendante. En revanche, les langages de programmation orientés objet tels que C ++, Java, C #, Perl et Python suivent l’approche ascendante.
- L’approche ascendante est utilisée auparavant dans les tests. Inversement, l'approche top-down est utilisée dans la documentation du module, la création de scénarios de test, le débogage, etc.
Conclusion
L'approche descendante et l'approche ascendante sont les méthodes de conception d'algorithmes, où la méthode descendante est une approche conventionnelle qui décompose le système d'une spécification de haut niveau à une spécification de bas niveau. D'autre part, l'approche ascendante est plus efficace et fonctionne de manière inverse, les composants primitifs étant d'abord conçus puis poursuivis au niveau supérieur.
L’approche descendante met l’accent sur l’isolation des sous-modules (signifie un couplage faible entre les modules) tout en ignorant l’identification du concept de communication et de réutilisation. Dans l’approche ascendante, la dissimulation et la réutilisabilité de l’information sont les principaux facteurs.