MDA, alter Wein in neuen Schläuchen oder Weg für die Zukunft?
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
MDA, alter Wein in neuen Schläuchen oder Weg für die Zukunft? Guido Zockoll Copyright © 2005 Inhaltsverzeichnis Einleitung .................................................................................................................. 1 Ein Blick zurück ......................................................................................................... 1 Und in Zukunft? ......................................................................................................... 2 Modell Driven Architecture .......................................................................................... 2 Die Wurzel allen Übels ................................................................................................ 3 Alter Wein in neuen Schläuchen .................................................................................... 4 Ausgangslage ............................................................................................................. 5 Investitionssicherheit ................................................................................................... 6 Grenzen .................................................................................................................... 7 Ausblick .................................................................................................................... 7 Literatur & Links ........................................................................................................ 7 Einleitung Seit einiger Zeit ließt man in der einschlägigen Fachpresse zunehmend mehr über modellgetriebene Softwareentwicklung, kurz MDA (Model Driven Architecture)1 und seine Verwandten. Nun sind Programmgeneratoren kein neuer Gedanke, so stellt sich natürlich die Frage, was an MDA so anders oder gar neu sein soll gegenüber den Ansätzen der letzten 20 Jahre. Ein Blick zurück In den Anfängen der Informatik wurden Programme in Assembler geschrieben. Jeder Prozessor hatte natürlich seine eigene Assemblersprache, Portabilität war nicht gegen. Ein paar Jahre später tauchen die ersten Compiler-Sprachen wie z.B. C auf. Die ersten Compiler generierten aus den Quelltexten zunächst Assembler Code, der dann wie gewohnt in Maschinen-Code übersetzt wurde. Diesen Zwischencode konnte man sich ansehen um die Qualität des erzeugten Codes zu überprüfen und ggf. durch Hinweise wie register eine Optimierung vorzunehmen. Der Quelltext war damit über verschiedene Rechnerarchitekturen zumindest theoretisch portabel. Ein paar Jahre später kamen objektorientierte Programmiersprachen in Mode. Die ersten C++ Compiler waren in der Tat Precompiler, die zunächst C Code erzeugt haben, der dann über weitere Zwischenschritte übersetzt wurde. Dieser Zwischenschritt fiel kurz darauf weg und der Compiler hat mehr oder weniger direkt Maschinen-Code erzeugt. Wieder ein paar Jahre später kamen die ersten UML Case-Tools auf den Markt. Auf Basis von UML- Diagrammen können diese Werkzeuge u.a. C++ Code erzeugen. 1vgl. [MDA04 ] 1
MDA, alter Wein in neuen Schläuchen oder Weg für die Zukunft? Abbildung 1. Sprachen in der Softwareentwicklung Und in Zukunft? Aus der historischen Betrachtung ergibt sich die logische Frage, aus was in den nächsten Jahren die UML-Diagramme generiert werden. So ungewöhnlich diese Frage erscheint, so liegt darin doch die logische Konsequenz aus der Entwicklung in den vergangenen Jahren. Die Antwort der OMG auf diese Frage lautet: "Aus anderen, abstrakteren UML-Diagrammen". Modell Driven Architecture Der Grundgedanke der MDA ist, sich in der Modellierung auf die rein fachlichen Aspekte zu beschränken und insb. keine technischen Aspekte zu modellieren. Dadurch entsteht zunächst das sog. "Plattform independent model", kurz PIM. Daraus lassen sich dann durch Transformation andere Modelle generieren, die eine Umsetzung auf einer konkreten Plattform darstellen. Abbildung 2. MDA Transformationsprozess 2
MDA, alter Wein in neuen Schläuchen oder Weg für die Zukunft? Der Begriff Plattform ist dabei sehr allgemein gehalten und gilt sowohl für die benutzte Hardware, als auch für die Programmiersprache und evtl. eingesetzte Frameworks. So lässt sich dann aus dem PIM ein "plattform specific model", kurz PSM, generieren, das eine Realisierung z.B. mittels Java und dem J2EE Framework darstellt. MDA und andere Inzwischen tauchen auch andere Abkürzungen wie MDD (Modell Driven Design) oder DDD (Domain Driven Design) auf, die schon von der Begrifflichkeit nur schwer auseinander zu halten sind. Der Grundgedanke der OMG ist, dass als Ausgangssprache für die Generierung UML dient, wobei die OCL (Object Constraint Language), die ebenfalls Bestandteil der UML Spezifikation ist, mit eingeschlossen ist. Angestrebt wird ein weitgehendes Forward-Engeneering, d.h. dass möglichst viel Programmcode direkt aus Modellen generiert wird. Im Gegensatz dazu stellt MDD einen eher pragmatischen Ansatz dar. Zum Einen dient nicht nur die UML als Ausgangssprache, sondern auch andere Beschreibungssprachen werden berücksichtigt. So ist es z.B. denkbar, Bildschirmmasken in einer eigenen XML Spezifikationssprache zu beschreiben und daraus entsprechende Programmdateien zu generieren. Auf der anderen Seite verfolgt MDD nicht das Ziel sämtlichen Programmcode zu generieren, so dass auch Teile des Programmcodes per Hand geschrieben werden können und sollen. Der DDD Ansatz geht auf ein Buch von Eric Evans2 zurück. Folgendes Zitat von der DDD Homepage beschreibt am besten, was DDD ist: „Domain-driven design not a technology or a methodology. It is a way of thinking ...“ Die Wurzel allen Übels 2vgl. [Evans04 ] 3
MDA, alter Wein in neuen Schläuchen oder Weg für die Zukunft? Im Jahr 1965 hat Gordon E. Moore, Mitbegründer der Firma Intel, das berühmte "Gesetz von Moore" formuliert, das in Kurzform besagt, dass sich die Anzahl der Transistoren auf einem Prozessor sich alle 12 Monate verdoppelt. Der damit verbundene Leistungszuwachs führt dazu, das sich grob alle fünf Jahre die Leistungsfähigkeit eines Personalcomputers verzehnfacht. Da die Anwender dieser immer leistungsfähigeren Hardware bisher immer Wege gefunden haben die Hardware auszureizen, steht damit das Wachstum der Anforderungen an Software-Projekte in direktem Zusammenhang. Wer kennt nicht Geschichten von genialen Programmieren, die in den 80er Jahren alleine ein geniales Programm geschrieben haben und damit reich geworden sind. In den 90er Jahren bestanden viele Software Projekte schon aus ca. 10 Programmieren und aktuell sind Software-Projekte mit 100 Entwicklern keine Seltenheit. Das Gesetz von Moore lässt nun die Vorhersage zu, dass, wenn sich nichts grundlegend ändert, im Jahr 2010 Software-Projekte mit 1000 und mehr Entwicklern zu erwarten sind. Um dieser Entwicklung zu begegnen müssen die Wege und Verfahren um zu einem lauffähigen Programm kommen in den nächsten Jahren sich an die neuen Gegebenheiten anpassen. Abbildung 3. Moore's Law (aus www.wikipedia.org) Alter Wein in neuen Schläuchen 4
MDA, alter Wein in neuen Schläuchen oder Weg für die Zukunft? Nun ist die Idee Programmgeneratoren einzusetzen nicht wirklich neu. In der Vergangenheit haben verschiedene Firmen immer wieder versucht mit mehr oder wenige guten Generatoren die manuelle Programmierung weitgehend überflüssig zu machen. Zwar haben einige dabei auch durchaus Erfolge erzielt, konnten sich auf breiter Front aber kaum durchsetzen. Gescheitert sind diese Ansätze häufig an mangelnder Performance der erzeugten Programme, an proprietären Beschreibungssprachen oder an mangelnder Investitionssicherheit, die eine Bindung an ein Werkzeug mit sich bringt, dass nur von einem Hersteller unterstützt wird. Ausgangslage Um die Probleme der Vergangenheit zu umgehen bedarf es einer Beschreibungssprache, die breite Akzeptanz genießt und von vielen verschiedenen Herstellern mit Werkzeugen unterstützt wird. Insofern ergibt sich durch den Einsatz der UML als Modellierungssprache eine deutliche Verbesserung gegenüber den Ansätzen in der Vergangenheit. Allerdings muss eine Sprache gewisse Voraussetzungen erfüllen, damit sich zur automatischen maschinellen Weiterverarbeitung eignet. Die Sprache muss wohl definiert sein, d.h. sie muss eindeutig und widerspruchsfrei sein. Für die UML 1.x galt dieser Anspruch nur teilweise. Mit der UML 2 ist der OMG hier ein großer Fortschritt gelungen. Es wachsen aber auch die Anforderungen an die Anwender der UML. Bisher wird die UML in vielen Projekten eher informell eingesetzt, d.h. die formale Korrektheit der Diagramme ist zweitrangig, solange die im Entwickler-Team Einigkeit über die Bedeutung der Diagramme herrscht. Die automatische Verarbeitung der Diagramme fordert aber auch die formal korrekte Anwendung der UML. Die OMG unterstützt dies durch das UML Zertifizierungsprogramm. Somit soll auch eine formal korrekte Anwendung der UML gefördert werden. Das Zertifizierungsprogramm der OMG Die UML ist mit der Version 2.0 einer kompletten Renovierung durch die OMG unterzogen worden, kräftig verbessert und in einigen Bereichen erweitert worden. Neben diesen inhaltlichen Neuerungen führt die OMG mit der Version 2.0 nun auch Qualifikations-Standards in Form eines dreistufigen Zertifizierungsprogramms ein. Dieses Zertifizierungsprogramm soll sicherstellen, dass UML-Anwender, Trainer, Berater, Werkzeughersteller u.a. ein einheitliches UML-Verständnis und eine Mindestqualifikation aufweisen. Die drei Stufen der Zertifikate sind an die Struktur Basic, Intermediate und Complete der UML 2.0 Superstruktur Spezifikation angelehnt. OMG-Certified UML Professional Fundamental In der ersten Stufe werden fundamentale UML Kenntnisse geprüft. Hierzu zählen Grundlagen der Klassendiagramme, Aktivitätsdiagramme, Interaktionsdiagramme und Anwendungsfalldiagramme sowie diverse Elemente wie z.B. Standard-Stereotypen oder Primitive Typen. Die Grundlagen beinhalten nicht nur die für den UML Anwender sichtbaren Elemente, sondern auch abstrakte Konzepte der UML wie z.B. Element, die Basisklasse aller UML Klassen im Metamodell. Diese Stufe ist für den normalen UML Anwender geeignet. OMG-Certified UML Professional Intermediate In der zweiten Stufe werden die Kenntnisse über Aktivitätsdiagramme und Interaktionsdiagramme vertieft. Hinzu kommen Kompositionsstrukturdiagramme, Grundlagen der Komponenten- und Verteilungsdiagramme, Zustandsdiagramme, das Aktionsmodell und der Erweiterungsmechanismus der Profile. Diese Stufe ist für den intensiven UML Anwender geeignet. OMG-Certified UML Professional Advanced In der dritten und höchsten Stufe werden fortgeschrittene Kenntnisse über Klassendiagramme wie z.B. Assoziationsklassen und Metatypen, über Kompositionsstrukturdiagramme, Komponentendiagramme, Aktivitätsdiagramme, Aktionsmodellierung, Verteilungsdiagramme und Protokollautomaten abgefragt. Zusätzlich werden die Themen OCL, UML 2.0 Architektur (u.a. Infrastruktur, MDA), Informationsflussmodellierung, Modelle und Schablonen (Templates) abgedeckt. Diese Stufe ist für den fortgeschrittenen UML Anwender geeignet (z.B. Designer ausführbarer Modelle, MDA, Profildesigner, UML Toolentwickler). 5
MDA, alter Wein in neuen Schläuchen oder Weg für die Zukunft? Ein weiterer wesentlicher Baustein für den Einsatz eines modell-getriebenen Entwicklungsprozesses ist das Case-Tool. Die meisten bisher verfügbaren MDA Werkzeuge nutzen das XML Metadata Interchange (XMI) Format. Hierbei handelt es sich um eine XML basierte Sprache, die den Austausch von UML Modellen zwischen verschiedenen Werkzeugen gewährleisten soll. Das XMI Format ist Bestandteil der UML Spezifikation. Im Rahmen der UML 1.x war dieses Austauschformat ebenfalls beschrieben, aber die Hersteller haben sich nur sehr grob an die Spezifikation gehalten. Somit ist die Austauschbarkeit von UML 1.x Modellen nur theoretisch gegeben. Dies hat für die derzeit erhältlichen MDA Werkzeuge die unangenehme Konsequenz, dass meist eine Einschränkung auf ein bestimmtes UML Werkzeug notwendig ist. Durch die UML 2 hat sich auch hier die Situation wesentlich verbessert, da die Definition des XMI Formates verbindlicher geworden ist und somit eine höhere Interoperabilität zwischen verschiedenen Werkzeugen gewährleistet sein sollte. Problematisch sind aber vor Allem herstellerspezifische Erweiterungen oder Interpretationen des Austauschformats. Investitionssicherheit Die Entscheidung ein neues Projekt mit einen modell-getriebenen Entwicklungsprozess umzusetzen fällt derzeit nicht leicht. Es geht nicht nur darum ein paar neue Werkzeuge einzusetzen, sondern die Änderung betrifft den ganzen Entwicklungsprozess. Dem Transformationsschritt vom PIM zum PSM kommt dabei die entscheidende Bedeutung zu. Mit der Qualität der Transformation wird direkt die Qualität des Endprodukts beeinflusst. Daher wird ein wesentlicher Teil des Programmieraufwands für die Erstellung und Anpassung des Generators anfallen. Dies kann sich aber nur langfristig bezahlt machen, wenn mehrere Projekte auf der gleichen Basis abgewickelt werden. Ebenso müssen die beteiligten Entwickler ihre vorhandenen UML Kenntnisse wesentlich erweitern. Den die Qualität der UML Modelle ist ein weiterer wichtiger Erfolgsfaktor. Ebenso wie sich in den vergangenen Jahren die Programmierung immer mehr weg von Assembler Sprachen hin zu Hochsprachen verlagert hat, wird die Entwicklung immer mehr auf Ebene der UML Modelle stattfinden. Ein Umstieg auf eine modellgetriebene Entwicklung kann sich nur mittel- bis langfristig bezahlt machen. Da hierbei, anders als bei früheren Ansätzen, konsequent auf offene Standards gesetzt wird, sollte die notwendige Investitionssicherheit gegeben sein. Das Thema Investitionssicherheit lässt sich noch aus einer anderen Sicht betrachten. Die technologische Basis für Software Projekte ist in den letzten Jahren einem rasanten Wechsel unterzogen. Stichworte sind CORBA, Java, J2EE, JDO, .NET und viele andere. Es ist sehr schwer zu sagen, welche dieser Technologien langfristig Bestand haben werden. Und selbst innerhalb einer Technologie können sich größere Änderungen ergeben. Als Beispiel mag die EJB3 Spezifikation dienen. Nach dem derzeitig vorliegenden Stand der Spezifikation werden sich gerade im Bereich der EntityBeans sehr große Änderungen ergeben. EJB3 Derzeit ist die Version 2.1 der EJB Spezifikation aktuell. Im Hintergrund wird aber bereits die Version 3.0 vorbereitet 3. Diese liegt derzeit als Draft Version vor, so dass man bereits einen Eindruck bekommt, was die neue Version für Änderungen mit sich bringt. In der Vergangenheit ist viel Kritik über das nicht gerade einfache Programmiermodell von EJB2 laut geworden. Dies ist der Grund warum konkurrierende Mechanismen, wie z.B. JDO (Java Data Objects), eine zunehmende Anzahl von Anhängern finden. Nach der derzeitigen Spezifikation wird sich EJB3 stark dem Programmiermodell von JDO annähern, tatsächlich werden beide Standards gemeinsam weiter entwickelt. Damit wird sich aber die EJB Programmierung in Zukunft zwar vereinfachen, aber eben auch ändern. Die Konsequenzen für aktuelle EJB Entwicklungsprojekte sind daher nicht unerheblich. 3vgl. [Ejb30edr2 ] 6
MDA, alter Wein in neuen Schläuchen oder Weg für die Zukunft? Grenzen Mit UML lassen sich hervorragend Strukturen beschreiben (z.B. Klassenmodelle). Durch die Erweiterungen in der UML2 sind nun auch Aktivitätsdiagramme so ausdrucksstark, dass auch Abläufe gut modelliert werden können. Aber ein Algorithmus oder eine mathematische Berechnung lassen sich mit UML kaum angemessen und effektiv darstellen. Die UML lässt zwar ausdrücklich die Formulierung von Aktionen in bel. Programmiersprachen zu, aber hier fehlt die Toolunterstützung und ein großer Teil der Platformunabhängigkeit geht verloren, wenn man z.B. ein C#-Programmfragment im Modell unterbringt. Zwar gibt es als Bestandteil der UML die Object Contraint Language (OCL), aber letztendlich handelt es sich dabei auch nur um eine weitere Programmiersprache und bietet damit keinerlei Vorteile gegenüber einer Programmierung in gängigen Sprachen. Verfolgt man das Gedankenexperiment weiter in die Zukunft, so wird irgendwann die Programmierung in den bisher üblichen Programmiersprachen zur Nebensache und nur noch für Spezialanwendungen sinnvoll (so wie heute in vielen Bereichen die Assemblerprogrammierung). Spätestens dann stellt sich die Frage nach einem UML Debugger mit Breakpoints und Single-Step Betrieb. Und wie sieht es mit Unit Tests für UML Diagramme aus? Sicherlich ist noch einige Arbeit zu leisten und sind noch einige offene Fragen zu klären, bis die Toollandschaft im Bereich MDA ähnlich vollständig und komfortabel geworden ist, wie wir es derzeit bei den gängigen Programmiersprachen gewohnt sind. Bis dahin ist an vielen Stellen Handarbeit und Pragmatismus gefragt. Ausblick Was die Zukunft bringt ist nur schwer vorherzusagen. Der Schritt, modellgetrieben Software zu entwickeln scheint aus der historischen Entwicklung logisch und ist von der OMG auf vielen Feldern gut vorbereitet. Da sich ein Umstieg auf eine modellgetriebene Entwicklung sicher erst mit der Zeit bezahlt macht, tun sich viele Firmen verständlicherweise schwer diesen Schritt zu gehen. Die derzeit verfügbaren Werkzeuge habe noch die eine oder andere Schwäche, und insb. die UML 2 Unterstützung durch die derzeit am Markt verfügbaren UML Case-Tools ist noch sehr dürftig. Das sollte ich aber im Laufe der nächsten 12 Monate ändern, so dass MDA tatsächlich der Weg für die Zukunft sein könnte. Literatur & Links [Evans04] Eric Evans. Copyright © 2004. Domain-Driven Design. Tackling Complexity in the Heart of Software. Addison Wesley. [Ejb30edr2] EJB 3.0 Expert Group. Copyright © 2005. Enterprise JavaBeans(TM) 3.0 Early Draft. [AndroMDA] Open Source. AndroMDA. http://www.andromda.org/. [OpenArchitectureWare] Open Source. Open ArchitectureWare. http://architecturware.sourceforge.net/site/. [MDA04] Object Management Group. Copyright © 2004. MDA Specifications. http://www.omg.org/mda/specs.htm. 7
Sie können auch lesen