Software-Modelle
24.03.2010, 14:03 Uhr
preiswerter, schneller, genauer
Das Bundesamt für Informatik und Telekommunikation (BIT) und die Credit Suisse machen es vor. Modellgetriebene Software-Entwicklung reduziert Kosten, vermeidet Fehler und verkürzt Entwicklungszyklen.
Modellgetriebene Software-Entwicklung (MDSD) wird - nach objektorientierten und prozeduralen Methodiken - die kommenden Jahre entscheidend prägen. "Mit MDSD kann man aus den eigenen Ressourcen einfach mehr herausholen", sagt Ulrich Brawand, Business Unit Leiter bei Zühlke Schweiz. Im Idealfall beschreiben Requirement-Ingenieure und Software-Architekten mithilfe einer sogenannte domain-spezifischen Sprache (DSL) Geschäftsszenarien, die dann von Generatoren in Programmcode bzw. implementationsunabhängigen Meta-Code übersetzt werden. Grafische DSLs wie die Unified Modeling Language (UML) bieten sich für diese Zwecke an. Das Entscheidende: Personal- und zeitintensive, manuelle Programmieraufgaben fallen zwar nicht weg, reduzieren sich aber erheblich, und zwar auf meist kundenspezifische Module der Geschäftslogik. Der Generator erzeugt, so die Kernidee, einen Grossteil des Brot-und-Butter-Sourcecodes in Übereinstimmung mit der unternehmensinternen Infrastruktur bereits aus dem vorab erstellten Modell.
Software beim BIT
Modellgetriebene Methoden unterstützen Software-Architekten bei Aufgaben, die sich häufig wiederholen. Für Einzelprobleme lohnt sich der Aufwand nicht, einen Generator und gegebenenfalls eine auf die eigenen Problemszenarien zugeschnittene DSL zu entwerfen. Das Bundesamt für Informatik und Telekommunikation, mit 350 Entwicklern, 1600 Servern, 1000 Applikationen und 32.000 Anwendern gross genug, hat diesen Weg beschritten. Zwei der angestrebten Ziele bestanden darin, die Anzahl der handcodierten Programmzeilen zu reduzieren und den Sourcecode näher an die Design-Spezifikation heranzubringen. Dafür wurde im Rahmen des Gesamtprojektes MDSD@BIT auch die domainspezifische Sprache bitDSL entworfen. "Die Qualität des generierten Codes war sehr gut, und die Projektstrukturierung hat sich verbessert", urteilt Stefano Juri vom BIT. Den Designern werde aber auch eine höhere Abstraktionsfähigkeit abverlangt. Die unterliegende Architektur (also DSL, Generatoren, Business-Logik, Infrastruktur) müsse gelernt und verstanden werden, betont Juri. Das dürfe man nicht unterschätzen.
Fallbeispiel: Credit Suisse
Auch die Credit Suisse, mit mehr als 6000 Unix- und Windows-Servern, 800 verschiedenen Applikationen und mehr als 350 parallel laufenden Projekten ein ziemlich grosser Dampfer, betreibt modellgetriebene Software-Entwicklung. Ausgangspunkt im Entwicklungsprozess ist das Interface Management System (IFMS), ein Design-Werkzeugg, das ein Service- und Datentyp-Repository sowie einen Governance Enforcer zur Durchsetzung von Regularien enthält. 40 Mannjahre hat die Credit Suisse in die Entwicklung des IFMS investiert. Die damit entworfenen geschäftlichen Ablaufszenarien übersetzt ein Generator anschliessend in ein implementationsunabhängiges Service-Meta-Modell (SMM), das als Basis für konkrete Applikationen dient (WSDL, XSD, PL? und andere). Manuelles Programieren wird nicht überflüssig, aber auf essentiellen Code reduziert.
500'000 Franken gut investiert
"Der Betrieb von IFMS und SMM-Generator kosten uns jährlich etwa eine halbe Million Franken", sagt Thiago Pfiffner, Program Manager bei der Credit Suisse. Aber das Geld scheint gut investiert, denkt man an die dadurch erzielten Vorteile: kürzere "Time to Market", schnellere, einfachere Implementierung, höhere Compliance und reduzierte Betriebskosten. Eine Blick in die Zukunft riskiert Professor Boger von der HTWG Konstanz (Technik, Wirtschaft und Gestaltung). Boger unterscheidet zwischen textuellen (Xtext, EBNF), internen und grafischen DSLs. Eine ganz einfache textuelle, domänenspezifische Sprache sei zum Beispiel die Notation, mit der Schachprofis ihre Partien dokumentieren. Interne DSLs, die zweite Kategorie, werden in Programmiersprachen eingebettet und haben den grossen Vorteil, dass sie direkt ausgeführt respektive interpretiert werden können. Das heute so weit verbreitete Java sei jedoch als Träger interner DSLs nicht so gut geeignet. Neuere Sprachen wie Ruby, Scala und Groovy integrieren viel besser. "Scala ist der Thronfolger von Java und wird in Zukunft dessen Platz einnehmen", prophezeite deshalb Boger. Zurzeit kann es Scala in punkto Attraktivität mit dem Platzhirsch Java, Google-Statistiken zeigen das, aber noch nicht aufnehmen.
UML 2.0 zu komplex
Das Paradigma der modellgetriebenen Software-Entwicklung wird laut Boger nicht, wie eigentlich naheliegend, durch die Unified Modelling Language (UML) vorangetrieben, sondern durch (engere) domainenspezifische Sprachen. Die Begründung: Die zweite UML-Version sei extrem komplex ausgefallen, was sich in der Praxis leider nachteilig auswirke. Unter anderem das von Boger massgeblich mitentwickelte grafische MDSL-Werkzeug Poseidon erlaubt es, DSLs für unternehmensinterne Zwecke selbst zu entwerfen, um danach schneller, preiswerter und präziser zu entwickeln.