2009-03-30 7 views
8

Model Driven Architecture ist die Idee, dass Sie Modelle erstellen, die das Problem, das Sie lösen müssen, ohne jegliche (oder zumindest die meisten) Implementierungstechnologien ausdrücken und dann die 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.Machst du gerade MDA (Model Driven Architecture)? Wenn ja, welche Tools verwenden Sie und wie funktioniert es?

Einige behaupten, dieser Ansatz 10 mal produktiver ist, und dass es die Art und Weise ist werden wir alle Software in 10 Jahren bauen.

Dies ist jedoch alles nur Theorie. Ich frage mich, was die Ergebnisse sind, wenn der Gummi die Straße trifft. Auch die "offizielle" Version von MDA stammt aus der OMG, und scheint sehr schwer. 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", um 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 bedeutenden Teil Ihrer Lösung zu generieren, zuerst in einer Technologie und dann wieder in einer anderen Technologie.

Also, Ich würde gerne von Leuten hören, die wirklich MDA gerade 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?

Antwort

0

Ich habe es einmal versucht. Ungefähr nach der Hälfte des Projekts wurde mir klar, dass meine Modelle hoffnungslos veraltet waren und so komplex waren, dass es zeitaufwendig war, sie auf dem neuesten Stand zu halten.

Das Problem ist, dass Software voller Randfälle ist. Modelle eignen sich hervorragend zum Erfassen des größeren Bildes, aber sobald Sie beginnen, die Implementierung zu codieren, finden Sie all diese Edge Cases und zu lange bemerken Sie, dass das Modell viel zu granular ist und Sie die Wahl zwischen dem Erhalt des Modells oder des Erhaltens treffen 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 von diesem Projekt.

+0

Danke. Interessant, dass der Teufel im Detail ist. Modelle sind definitionsgemäß Übervereinfachungen, und das hat dich am meisten geschmerzt. +1 –

+1

Bei der modellgetriebenen Softwareentwicklung wird der Code aus dem Modell generiert. Sie ändern das Metamodell, das Modell und die Generatoren, um das Verhalten zu ändern oder hinzuzufügen. Es geht nicht um das Erstellen und Verwalten eines unabhängigen Modells, das beim Aktualisieren des Codes manuell aktualisiert wird. –

+0

Das ist genau mein Punkt. Irgendwann ist der generierte Code nicht mehr nützlich. Sobald Sie den Code manuell ändern müssen, bricht der Prozess zusammen. –

6

Die fehlende Antwort auf diese Frage ist etwas ominös ... vielleicht lasse ich Dijkstra Feld es.

... Da erschien Computer in einem Jahrzehnt , wenn der Glaube an den Fortschritt und Bekömmlichkeit von Wissenschaft und Technologie praktisch unbegrenzt war, es klug sein könnte, daran zu erinnern, im Hinblick seiner ursprünglichen Ziele, Menschheit wissenschaftliche Bemühungen über, sagen wir, die letzten fünf Jahrhunderten waren ein spektakulären Ausfall.

Wie Sie alle erinnern, die erste und Oberstes Ziel war die Entwicklung des Elixir, die die eine , die tranken es ewige Jugend geben würden. Aber seit gibt es nicht viel Sinn in der ewigen Armut, die Welt der Wissenschaft schnell begann sein zweites Projekt, nämlich. der Stein der Weisen das würde ermöglichen Sie so viel Gold wie Sie benötigen.

...

Die Suche nach der idealen Programmierung Sprache und die idealen Mensch-Maschine-Schnittstelle , dass die Software Krise schmelzen wie Schnee in der Sonne hatten machen würde -und noch!- Alle Merkmale der Suche nach dem Elixier und der Stein. Diese Suche erhält starke Unterstützung von zwei Seiten zum einen aus der Tatsache, dass die Arbeits Wunder das Mindeste ist , dass Sie von Computern erwarten können, und zum anderen aus der Finanz- und politische Unterstützung von einer Gesellschaft, die hatte immer fragte nach dem Elixir und der Stein an erster Stelle.

Zwei große Ströme können für die Elixir unterscheiden, die Suche nach dem Stein und die Suche sein. Die Suche nach dem Stein basiert auf die Annahme, dass unsere "Programmierung Tools" zu schwach sind. Ein Beispiel ist der Glaube, dass aktuelle Programmierung Sprachen die "Features" fehlt, die wir brauchen. PL/I war einer der spektakuläreren Möchtegernsteine. Ich erinnere mich noch an die Anzeige in Datamation, 1968, in dem ein Lächeln Susie Mayer in Farbe kündigt , dass sie durch die Umstellung auf PL/I alle ihre Programmierprobleme gelöst hat. Es war nur zu absehbar dass ein paar Jahre später die arme Susie Mayer nicht mehr lächelte. Needless zu sagen, ging die Suche weiter und in der Zeit Zeit wurde eine nächste Möchtegernstein in Form von Ada produziert (hinter der Eiserne Vorhang wahrnehmbar bezeichnet als PL/II). Selbst die einfachste Astrologie für Anfänger genügt vorherzusagen, dass Ada nicht die letzte Stein dieses Typs sein wird.

...

Eine weitere Reihe von Steinen in Form von „Programmiertool“ produziert wird unter dem Banner des „Software Engineering“, die, wie die Zeit verging, hat suchte geistige zu ersetzen Disziplin von Management Disziplin zu das Ausmaß, dass es jetzt als seine Charta akzeptiert hat "Wie man programmiert, wenn Sie nicht können."

+0

Ja, definitiv relevant. Ich bezweifle, dass ein Entwickler wirklich glaubt, dass ein Ansatz die Entwickler obsolet macht.Aber hier ist, was ich glauben konnte: ein ganzes Ökosystem von Tools, das einen erstklassigen Entwickler braucht und seine Effektivität signifikant steigert. Vielleicht ist OMG MDA das nicht. –

+1

"ein ganzes Ökosystem von Werkzeugen, die einen erstklassigen Entwickler braucht und seine/ihre Effektivität signifikant verstärkt" Ich denke, das heißt Emacs. :-D –

+0

Wirklich? Vielleicht sollte ich ihm dann eine zweite Chance geben (nein, mach das dritte) :) –

4

Ich mache seit 1999 meine eigene unabhängige Forschung im Bereich der modellgetriebenen Softwareentwicklung. 2006 habe ich schließlich eine generische Modellierungsmethodik entwickelt, die ich als ABSE (Atom-Based Software Engineering) bezeichnete.

So baut ABSE bis auf zwei grundlegende Aspekte:

  • Programmierung ist über Problemdekomposition
  • Alles kann auf einem Baum
dargestellt werden

Einige ABSE Features:

  • Es kann alle anderen Formen von Software-Engineering unterstützen, von der Tradi 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, jede Domäne tatsächlich angewendet zu werden.

  • Sie müssen kein Raketenwissenschaftler sein, um effektiv zu verwenden. ABSE ist für den "bloßen Entwickler sterblichen" zugänglich. Es gibt keine Komplexität wie in oAW/MDA/XMI/GMF/etc Werkzeugketten.

  • Ihr 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 wie es auf der utopischen Seite ist, aber ich habe tatsächlich die Forschungsphase und ich bin jetzt in der Umsetzungsphase einer IDE, die die vor allem in der Praxis umsetzt. Ich denke, ich werde in ein paar Wochen (Ende April) einen Basis-Prototyp fertig haben. Die IDE (AtomWeaver genannt) wird über ABSE gebaut, AtomWeaver wird somit der erste Proof-of-Concept der ABSE-Methodik sein.

Also, das ist nicht MDA (zum Glück!), Aber zumindest ist 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!

Bleiben Sie dran ...

+0

Das klingt sehr interessant. Wenn Sie einige Blogposts dazu haben oder wenn Sie möchten, dass andere es betrachten und Feedback geben, lassen Sie es mich wissen. –

+0

Noch keine bestimmten Blogeinträge, aber Sie können meinem Blog folgen (siehe mein Profil) oder meinen Diskussionen im Model Driven Software Network (http://www.modeldrivensoftware.net) –

+0

Ich weiß, das ist eine sehr alte Antwort, aber wenn möglich, ich bin daran interessiert zu wissen, warum du sagst, es sei 'Gott sei Dank!' nicht MDA? – Yoh

4

Model-Driven Development Software ist immer noch eine Nische, aber es gibt veröffentlichten Fallstudien und eine wachsende Zahl von anderer Literatur Erfolg über Hand codierte Methoden zeigt.

Die MDA der OMG ist nur ein Ansatz, andere Menschen zeigen Erfolg domänenspezifischen Sprachen verwenden (die UML nicht für die Modellierung verwendet werden).

Der Schlüssel ist, Code aus den Modellen zu erzeugen und den Generator zu aktualisieren, wenn es nicht zu erzeugen, was Sie wollen - nicht, Ihren Code zu ändern. Fach Werkzeuge helfen Sie dies tun, gibt es schon seit Jahren, aber Interesse an diesem Ansatz hat sich in den letzten fünf Jahren stark gewachsen oder so wegen Microsofts Umzug in diesem Bereich und durch Open-Source-Projekten wie in der Eclipse openarchitectureware Welt.

Ich betreibe ein paar Websites: www.modeldrivensoftware.net und www.codegeneration.net, wo Sie weitere Diskussionen, Interviews, Artikel und Tooling-Optionen zu diesen Themen erhalten können.

+0

Cool, ich werde sie überprüfen. Ich habe codegeneration.net, aber noch nicht modelltreibersoftware.net gesehen. –

Verwandte Themen