Woran scheitert die Idee der "Modellgetriebenen Softwareentwicklung"?
Wie bereits erwähnt wurde (Antwort von Steffen Häuser) hängt es stark vom Anwendungsbereich ab, ob man hier von “Scheitern” reden kann. Im Avionics Bereich sind diese Techniken weit verbreitet. Viele mehr oder weniger gute Tools sind im Einsatz (Matlab, Statemate seit langem; soweit ich gehört habe, Modelica u.a. seit neuerem).
Kommt es zu allgemeiner Softwareentwicklung außerhalb des embedded Bereichs (cloud services, mobile applications, etc.) so ist in der Tat keine große Adaption dieser Techniken zu erkennen. Das sage ich aus meiner Erfahrung von 10 Jahren bei Microsoft und 8 Jahren bei Google — wobei mein akademischer Hintergrund modelbasierte Entwicklung ist/war, und ich viele Jahre bei Microsoft Research genau daran gearbeitet habe.
Man könnte Abhandlungen über die Gründe verfassen, aber ich versuche, mich kurz zu fassen:
Moderne Sprachen und Frameworks. Das Kernversprechen von Modellierung ist Abstraktion: indem man mehr über das “was” als das “wie” auf einem höheren Abstraktionsniveau räsoniert, kann man bessere System entwickeln. Programmiersprachen and mehr noch Frameworks sind aber nicht stehengeblieben, und erzielen, zumindest teilweise, diese Abstraktion heute oft direkt in der Implementierung.
Agilität. Das hängt zusammen mit (1). Oft ist gar nicht so ganz klar was man eigentlich entwickeln möchte. Anforderungen ändern sich als Teil des Entwicklungsprozesses. Modellierung mit anschließender Implementierung macht es schwieriger, Entwürfe an neue Anforderungen anzupassen. Da ist es oft effizienter, direkt in einer (höheren) Implementierungssprache Prototypen durch mehrere Iterationen zu bringen.
Time to Market. Das ist eine Variation von (2). Während modellbasierte Entwicklung es möglich macht, “korrektere” Systeme zu entwickeln, so ist es oft auch zeitaufwendiger, speziell wenn große Mengen von Entwicklern zu Verfügung stehen. Korrektheit, so schade das manche finden mögen, ist aber oft nicht ganz so wichtig wie time-to-market (Avionics ist genau hier anders).
Fehlentwicklungen in Modellbasierten Ansätzen. Darüber könnte ich nun endlos lamentieren, aber ich halte es kurz ;-) Die Fokussierung auf Diagramme sei genannt (UML, SysML, etc.). Diagramme sind gut für Whiteboards und Manager aber nicht viel mehr. Textuelle Notationen (Sprachen) sind und waren seit tausenden von Jahren die bevorzugte Weise, Konzepte zu beschreiben. Leider sind modellbasierte Ansätze zu sehr mit Diagrammen assoziert.