La plupart, sinon tous les informaticiens que je connais, pensent qu'il est avantageux de modéliser un logiciel avec UML ou d'autres types de diagrammes avant de coder. (Ma question ne concerne pas spécifiquement UML, il pourrait s'agir d'une description graphique ou textuelle de la conception du logiciel.)
Je n'en suis pas si sûr. La raison principale est: le code ne ment pas. Il est vérifié par le compilateur ou l'interpréteur. Nous espérons qu'il a des tests automatisés et doit passer une analyse de code statique. Si un module ne s'interface pas correctement avec un autre module, cela est généralement évident dans le code car vous obtenez un message d'erreur.
Tout cela ne peut pas être fait avec des diagrammes et autres documents. Oui, il existe des outils qui vérifient UML, mais tout ce que j'ai vu jusqu'à présent est très limité. Par conséquent, ces documents ont tendance à être incomplets, incohérents ou simplement faux.
Même si les diagrammes eux-mêmes sont cohérents, vous ne pouvez pas être sûr que le code les implémente réellement. Oui, il existe des générateurs de code, mais ils ne génèrent jamais tout le code.
J'ai parfois l'impression que l'obsession de la modélisation résulte de l'hypothèse que le code doit inévitablement être un gâchis incompréhensible que les architectes, les concepteurs ou d'autres personnes bien rémunérées qui ont une vue d'ensemble ne devraient pas avoir à gérer. Sinon, cela coûterait beaucoup trop cher. Par conséquent, toutes les décisions de conception doivent être éloignées du code. Le code lui-même devrait être laissé à des spécialistes (singes de code) qui sont capables de l'écrire (et peut-être de le lire) mais n'ont rien d'autre à faire. Cela était probablement logique lorsque l'assembleur était la seule option, mais les langages modernes vous permettent de coder à un niveau d'abstraction très élevé. Par conséquent, je ne vois plus vraiment le besoin de modélisation.
Quels arguments pour la modélisation des systèmes logiciels me manquent?
Soit dit en passant, je crois que les diagrammes sont un excellent moyen de documenter et de communiquer certains aspects de la conception de logiciels, mais cela ne signifie pas que nous devrions baser la conception de logiciels sur eux.
Clarification:
La question a été suspendue pour manque de clarté. Permettez-moi donc d'ajouter quelques explications:
Je demande s'il est logique d'utiliser des documents (non codés) qui modélisent le logiciel comme la principale source de vérité sur la conception de logiciels. Je n'ai pas le cas en tête lorsqu'une partie importante du code est générée automatiquement à partir de ces documents. Si tel était le cas, je considérerais les documents eux-mêmes comme du code source et non comme un modèle.
J'ai énuméré quelques inconvénients de cette procédure qui me font me demander pourquoi tant de gens (selon mon expérience) la considèrent comme la meilleure façon de faire de la conception de logiciels.