Model Driven Architecture ist die Idee, dass Sie Modelle erstellen, die das Problem, das Sie lösen müssen, auf eine Weise ausdrücken, die frei von (oder zumindest den meisten) Implementierungstechnologien ist, und dann eine Implementierung für eine oder mehrere spezifische Plattformen generieren. Die Behauptung ist, dass das Arbeiten auf einer höheren Abstraktionsebene viel mächtiger und produktiver ist. Darüber hinaus überleben Ihre Modelle Technologien (so haben Sie immer noch etwas, wenn Ihre erste Sprache / Plattform veraltet ist, die Sie für Ihre nächste Generation Lösung verwenden können). Ein weiterer wichtiger Vorteil besteht darin, dass ein großer Teil des Boilerplate und "Grunt Work" erzeugt werden kann. Sobald der Computer die Semantik Ihrer Situation verstanden hat, kann er Ihnen mehr helfen.
Manche behaupten, dass dieser Ansatz zehnmal produktiver ist und dass wir in zehn Jahren Software entwickeln werden.
Aber das ist alles nur Theorie. Ich frage mich, was die Ergebnisse sind, wenn der Gummi die Straße trifft. Auch die "offizielle" Version von MDA stammt von der OMG und scheint sehr schwer zu sein. Es basiert stark auf UML, was je nachdem, wen Sie fragen, gut oder schlecht sein kann (ich lehne mich auf "schlecht" zu).
Aber trotz dieser Bedenken ist es schwer, mit der Idee zu argumentieren, auf einer höheren Abstraktionsebene zu arbeiten und den Computer "zu lehren", die Semantik Ihres Problems und Ihrer Lösung zu verstehen. Stellen Sie sich eine Reihe von ER-Modellen vor, die einfach die Wahrheit ausdrücken, und stellen Sie sich dann vor, diese zu verwenden, um einen wesentlichen Teil Ihrer Lösung zu generieren, zuerst in einer Technologie und dann in einer anderen Technologie.
Also, Ich würde gerne von Leuten hören, die gerade MDA machen ("offiziell" oder nicht). Welche Werkzeuge verwendest du? Wie läuft es? Wie viel von dem theoretischen Versprechen konnten Sie erfassen? Sehen Sie eine echte 10-fache Effizienzsteigerung?
Ich habe es einmal versucht. Ungefähr auf halbem Weg durch das Projekt wurde mir klar, dass meine Modelle hoffnungslos veraltet waren und so komplex waren, dass sie auf dem neuesten Stand gehalten werden konnten, und das verlangsamte mich.
Das Problem ist, dass die Software voll von Randfällen ist. Modelle eignen sich hervorragend, um das größere Bild zu erfassen, aber sobald Sie beginnen, die Implementierung zu programmieren, finden Sie all diese Edge Cases und zu lange bemerken Sie, dass das Modell viel zu granular ist und Sie zwischen der Wartung des Modells oder dem Erhalten wählen müssen etwas Code geschrieben. Vielleicht ist die Boiler-Plate-Generation ein Vorteil für die Inbetriebnahme, aber danach verschwinden die Vorteile schnell und ich habe einen drastischen Produktivitätsabfall festgestellt. Die Modelle verschwanden schließlich aus diesem Projekt.
Die fehlende Antwort auf diese Frage ist etwas ominös ... vielleicht lasse ich Dijkstra Feld es.
... Weil Computer in einem Jahrzehnt erschienen sind wenn der Glaube an den Fortschritt und Gesundheit der Wissenschaft und Technologie war praktisch unbegrenzt Vielleicht ist es klug, sich daran zu erinnern seiner ursprünglichen Ziele, der Menschheit wissenschaftliche Bemühungen über, sagen wir, die die letzten fünf Jahrhunderte waren ein spektakuläres Versagen.
Wie Sie sich alle erinnern, das erste und Hauptziel war die Entwicklung des Elixiers, das den einen geben würde das hat es Ewige Jugend getrunken. Aber seit Es gibt nicht viel Sinn in Ewigkeit Armut, die Welt der Wissenschaft schnell begann sein zweites Projekt, nämlich der Stein der Weisen, der würde können Sie so viel Gold verdienen wie Sie erforderlich.
...
Die Suche nach der idealen Programmierung Sprache und die ideale Mensch-Maschine Schnittstelle, die die Software machen würde Krise schmelzen wie Schnee in der Sonne hatte - und hat immer noch! - all das Merkmale der Suche nach dem Elixier und der Stein. Diese Suche erhält starke Unterstützung von zwei Seiten, erstens aus der Tatsache, dass die das Wirken von Wundern ist das Mindeste das kannst du von Computern erwarten, und zweitens von den finanziellen und politische Unterstützung von einer Gesellschaft, die hatte immer nach dem Elixier gefragt und der Stein an erster Stelle.
Zwei große Ströme können sein ausgezeichnet, die Suche nach dem Stein und die Suche nach dem Elixier.
Die Suche nach dem Stein basiert auf die Annahme, dass unsere "Programmierung Werkzeuge "sind zu schwach. Ein Beispiel ist der Glaube, dass aktuelle Programmierung Sprachen fehlen die "Features", die wir brauchen. PL / I war einer der spektakulärsten Möchtegern-Steine produziert werden. ich noch erinnere dich an die Werbung in Datamation, 1968, in der ein Lächeln Susie Mayer kündigt in voller Farbe an dass sie alles gelöst hat Programmierprobleme durch Umschalten auf PL / I. Es war nur zu vorhersehbar das, ein paar Jahre später, arme Susie Mayer lächelte nicht mehr. Unnötig um zu sagen, die Suche ging weiter und entsprechend Zeit war ein nächster Möchtegernstein produziert in Form von Ada (hinten der Eiserne Vorhang wurde scharfsinnig bezeichnet als PL / II). Sogar das elementarste Astrologie für Anfänger genügt sagen voraus, dass Ada nicht die letzte sein wird Stein dieser Art.
...
Eine weitere Reihe von Steinen in der Form von "Programmierwerkzeugen" wird produziert unter dem Banner von "Software Technik ", die im Laufe der Zeit hat versucht, den Intellektuellen zu ersetzen Disziplin durch Managementdisziplin zu soweit es jetzt als akzeptiert hat seine Charta "Wie programmiert man, wenn Sie? kann nicht. "
Ich mache seit 1999 meine eigene unabhängige Forschung im Bereich der modellgetriebenen Softwareentwicklung. Im Jahr 2006 habe ich schließlich eine generische Modellierungsmethodik entwickelt, die ich als ABSE (Atom-Based Software Engineering) bezeichnete.
ABSE baut also auf zwei grundlegenden Aspekten auf:
Einige ABSE-Funktionen:
Es kann alle anderen Formen der Softwareentwicklung unterstützen, vom traditionellen dateiorientierte Methoden bis hin zu komponentenbasierter Entwicklung, aspektorientierter Programmierung, domänenspezifischer Modellierung, Software-Produktlinien und Software-Fabriken.
Es ist generisch genug, um auf Unternehmenssoftware, eingebettete Spiele, Avionik, Internet und jede andere Domäne angewendet zu werden.
Sie müssen kein Raketenwissenschaftler sein, um effektiv zu arbeiten. ABSE ist für den "bloßen Entwickler sterblichen" zugänglich. Es gibt keine Komplexität wie in oAW / MDA / XMI / GMF / etc Werkzeugketten.
Sein Meta-Metamodell wurde entwickelt, um eine 100% ige Codegenerierung aus dem Modell zu unterstützen. Keine Hin- und Rückfahrt notwendig. Der benutzerdefinierte / generierte Code-Mix wird direkt vom Metamodell unterstützt.
Das Modell kann gleichzeitig manipuliert werden. Workflows und Versionskontrolle können angewendet werden (Werkzeugunterstützung erforderlich).
Es klingt vielleicht wie auf der utopischen Seite, aber eigentlich habe ich die Forschungsphase verlassen und ich bin jetzt in der Implementierungsphase einer IDE, die all das in die Praxis umsetzt. Ich denke, ich werde in ein paar Wochen (Ende April) einen Basis-Prototypen fertig haben. Die IDE (genannt AtomWeaver) wird über ABSE gebaut, AtomWeaver wird also der erste Beweis der ABSE-Methodik sein.
Also, das ist kein MDA (Gott sei Dank!), aber es ist zumindest ein sehr überschaubarer Ansatz. Als Erfinder von ABSE bin ich verständlicherweise davon begeistert, aber ich bin mir sicher, dass Model-Driven Software Development 2009 einen Schub bekommen wird!
Bleib dran ...
Modellgetriebene Softwareentwicklung ist immer noch ein Nischenbereich, aber es gibt veröffentlichte Fallstudien und eine wachsende Zahl anderer Literatur, die Erfolg über handcodierte Methoden zeigt.
Der MDA der OMG ist nur ein Ansatz, andere zeigen Erfolg mit domänenspezifischen Sprachen (die keine UML für die Modellierung verwenden).
Der Schlüssel besteht darin, Code aus den Modellen zu generieren und Ihren Generator zu aktualisieren, wenn er nicht das erzeugt, was Sie wollen - den Code nicht zu ändern. Spezialisierte Werkzeuge, die Ihnen dabei helfen können, gibt es seit Jahren, aber das Interesse an diesem Ansatz ist in den letzten fünf Jahren durch Microsofts Einzug in diesem Bereich und durch Open-Source-Projekte wie openArchitectureWare in der Eclipse-Welt gewachsen.
>Ich betreibe einige Websites: www.modeldrivensoftware.net und www.codegeneration.net , wo Sie weitere Diskussionen, Interviews, Artikel und Tooling-Optionen zu diesen Themen erhalten können.
Tags und Links architecture mda