Die meisten, wenn nicht alle mir bekannten IT-Mitarbeiter glauben, dass es von Vorteil ist, Software vor dem Codieren mit UML oder anderen Diagrammtypen zu modellieren. (Meine Frage bezieht sich nicht speziell auf UML, sondern kann eine grafische oder textuelle Beschreibung des Softwaredesigns sein.)
Da bin ich mir nicht so sicher. Der Hauptgrund ist: Code lügt nicht. Sie wird vom Compiler oder Interpreter geprüft. Es hat hoffentlich automatisierte Tests und muss die statische Code-Analyse bestehen. Wenn ein Modul nicht korrekt mit einem anderen Modul verbunden ist, ist dies normalerweise im Code offensichtlich, da eine Fehlermeldung angezeigt wird.
All dies kann nicht mit Diagrammen und anderen Dokumenten durchgeführt werden. Ja, es gibt Tools, die UML überprüfen, aber alles, was ich bisher gesehen habe, ist sehr begrenzt. Daher sind diese Dokumente in der Regel unvollständig, inkonsistent oder einfach falsch.
Selbst wenn die Diagramme selbst konsistent sind, können Sie nicht sicher sein, dass der Code sie tatsächlich implementiert. Ja, es gibt Codegeneratoren, die jedoch niemals den gesamten Code generieren.
Ich habe manchmal das Gefühl, dass die Besessenheit mit der Modellierung auf der Annahme beruht, dass Code unweigerlich ein unverständliches Durcheinander sein muss, mit dem sich Architekten, Designer oder andere gut bezahlte Leute, die sich einen Überblick verschaffen, nicht befassen sollten. Sonst würde es viel zu teuer werden. Daher sollten alle Entwurfsentscheidungen vom Code wegbewegt werden. Code selbst sollte Spezialisten (Code-Affen) überlassen werden, die in der Lage sind, ihn zu schreiben (und möglicherweise zu lesen), sich aber mit nichts anderem befassen müssen. Dies hat wahrscheinlich Sinn gemacht, als Assembler die einzige Option war, aber moderne Sprachen ermöglichen es Ihnen, auf einer sehr hohen Abstraktionsebene zu programmieren. Aus diesem Grund sehe ich keine Notwendigkeit mehr zum Modellieren.
Welche Argumente für die Modellierung von Softwaresystemen fehlen mir?
Übrigens glaube ich, dass Diagramme eine großartige Möglichkeit sind, bestimmte Aspekte des Software-Designs zu dokumentieren und zu kommunizieren, aber das bedeutet nicht, dass wir das Software-Design darauf aufbauen sollten .
Klärung:
Die Frage wurde als unklar zurückgestellt. Lassen Sie mich deshalb eine Erklärung hinzufügen:
Ich frage, ob es sinnvoll ist, Dokumente (ohne Code) zu verwenden, die die Software als primäre Quelle der Wahrheit über Software-Design modellieren. Ich denke nicht daran, dass ein erheblicher Teil des Codes automatisch aus diesen Dokumenten generiert wird. In diesem Fall würde ich die Dokumente selbst als Quellcode und nicht als Modell betrachten.
Ich habe einige Nachteile dieser Prozedur aufgelistet, die mich wundern lassen, warum so viele Leute (meiner Erfahrung nach) dies als die bevorzugte Methode für das Softwaredesign betrachten.