Ich denke, es gibt auch einen Grund, warum MDD das Schlimmste ist, was UML passiert ist (warum sollten wir sonst die UML2 haben, die wir haben?), Aber das für den Moment ignorieren ...
MDD = Model Driven <Design | Development>. Die Idee ist, Lösungen auf einer Abstraktionsebene zu entwickeln, die der Problemdomäne entspricht - das heißt, es wird versucht, Lösungen für Probleme in der natürlichsten Syntax zum Ausdrücken dieser Lösungen auszudrücken. Die Problemdomäne selbst ist durch ein Betriebsmodell gekennzeichnet (dh durch ein Modell, das vom Computer ausgeführt werden kann). MDD kann also ein sehr attraktiver Ansatz sein, wenn auch einer mit zwei Hauptanforderungen:
- Man muss in der Lage sein, diese Sprache in eine für die Computerausführung geeignete Form zu kompilieren (das Modell muss funktionsfähig sein ); und
- Man muss eine Modellierungssprache für die Problemdomäne erstellen.
Meines Erachtens sollte mit den UML2-Bemühungen Punkt 1 angesprochen werden, wahrscheinlich unter der Annahme, dass die industrielle Erfahrung mit UML gezeigt hat, dass Punkt 2 für einige große Teilmengen von Problembereichen erfüllt ist. Unglücklicherweise erfüllt UML, und ich denke, dass William Cook genau darauf gekommen ist, Punkt 2 bei weitem nicht, was den Umfang der Probleme angeht, an die gedacht wurde. Ich spreche nicht aus persönlicher Erfahrung, aber ich denke, die industrielle Erfahrung mit der Verwendung von MDD mit UML hat zwei gemeinsame Ergebnisse:
Entweder muss der aus der UML generierte Quellcode optimiert werden, um diese kleinen Lücken zwischen dem UML-Design und den Programmanforderungen zu schließen (was Entwickler dazu zwingt, mit generiertem Code zu arbeiten, der unterschiedliche Standards für die Wartbarkeit aufweist, und die Anwendbarkeit der UML-Artefakte auf die Implementierung verringert ); ODER
Die UML ist mit vielen Details überfüllt, was ihre Verwendbarkeit als Sprache für die Kommunikation über das Design einschränkt.
In beiden Fällen ist das Versprechen von MDD unerfüllt. UML kann als das Schlimmste angesehen werden, das MDD widerfahren ist, da es die Aufmerksamkeit der MDD-Tool-Entwickler auf den Ausschluss von Modellen lenkt, die möglicherweise tatsächlich funktionieren (wenn auch für eine kleinere Anzahl von Softwareproblemen).