On pourrait très bien imaginer des analyses descendantes de problèmes voisins aboutissant à des décompositions en procédures très différentes.
Cependant, en général, on va alors chercher à réutiliser le travail déjà fait, et le programme sera obtenu par combinaison d'analyse descendante
et ascendante.
Exemple:
en calcul numérique, on réutilise
fréquemment des procédures de
résolution de systèmes
linéaires (soit écrites dans une vie
antérieure, soit
prises dans une bibliothèque de sous-programme).
On aimerait pouvoir construire un programme par assemblage de composants logiciels réutilisables.