Je vais faire un parallèle avec une BD de Tintin.
Un programme est un ensemble de lignes de code, considérons que la BD c'est l'application terminée.

Exemple 1 :

ce serait bien que le bâtiment sur la dernière page ait un toit bleu.
Pas de problème, c'est relativement vite fait.

Exemple 2 :

ajouter un deuxième chien à Tintin, qui interviendrait de temps en temps :
ll y aurait déjà plus de travail à fournir. Mais ça reste du domaine du faisable.
Attention, doit on le faire sur l'intégralité des albums, ou juste ici ? Selon cette décision, la quantité de travail à fournir peut être multipliée.

Exemple 3 :

ce serait bien finalement, que Milou ce ne soit plus un chien, mais un singe.
(si, c'est un exemple idiot, vous avez raison)
Impacts :

- il faut modifier toutes les pages où Milou apparait
- en plus il faut modifier certaines situations, où un singe ne serait plus trop compatible .. ça implique par cascade énormément de modifications.

Réponse du dessinateur : "ok, mais il faudra refaire ça, ça, ça, comptez au moins XX jours de boulot."
Réponse de l'éditeur : "Quoi, tout ça, mais ce n'est pas possible de... simplement faire grimper Milou sur un arbre de temps en temps ?"

Ceci dit : avec une bonne conception, une certaine abstraction dès le départ, les modifications et évolutions sont rendues plus faciles. Mais là encore, selon la nature de la demande et de l'existant, le travail à faire peut être
- long ou rapide
- facile ou complexe
- sans aucun danger ou intervient au coeur du système