Neue Entwicklungsmethode

Softwaremaschine entwickelt Programme automatisch

22.05.2013
Von Victor Bodnarescu
Aus der synchronen Produktion von Fachspezifikationen und Software entstehen heute bereits konsistente Anwendungen. Eine Softwaremaschine erstellt dabei auf Basis von Geschäftsmodellen automatisch die gewünschten Programme. So funktioniert die maschinelle Softwareproduktion.

In der Automobilindustrie und der Softwareindustrie zeigen sich parallele Entwicklungen - von der Handarbeit zur Automation. Die hohen Produktionskosten sowie der Anspruch, Fahrzeuge schneller im Markt abzusetzen und die zunehmend kürzer werdenden Modelllebenszyklen haben in der Automobilbranche zwangsweise zu einer immer stärkeren Automatisierung der Produktion geführt. Roboter haben viele Produktionsschritte von Autos übernommen. Am Anfang müssen die Hersteller zwar investieren, um diese Roboter für ihre Aufgabe zu konfigurieren. Danach wiederholen diese ihre Aufgaben jedoch zuverlässig und in gleichbleibender Qualität.

Schematischer Ablauf bei der Softwareproduktion.
Schematischer Ablauf bei der Softwareproduktion.
Foto: Bodnarescu, VBO Services GmbH

In der Softwarebranche ist man derzeit von einem vergleichbar hohen Automatisierungsgrad noch weit entfernt. Software neu zu erstellen beziehungsweise weiter zu entwickeln, bleibt für die Programmierer eine Herausforderung. Immer noch wird der größte Anteil von Software klassisch produziert, das heißt manuell erstellt. Nur Teilbereiche werden heute schon maschinell produziert. Anwender benötigen allerdings einen höheren Automatisierungsgrad, um mit ihren Softwarelösungen Veränderungen in den Geschäftsanforderungen schnell folgen zu können.

Die technischen Möglichkeiten, dieses Verhältnis in der Softwareproduktion umzudrehen, um den Großteil maschinell zu produzieren und nur letzte Anpassungen manuell zu ergänzen, gibt es im Grunde heute schon. Obwohl der überwiegende Teil der Software dabei maschinell generiert wird, kann der Individualisierungsgrad dennoch hoch sein. Dafür gilt es, einen solchen Automatisierungsprozess nicht nur für die Softwareproduktion an sich, sondern zusätzlich bereits für die Entwicklung der Fachspezifikationen einzusetzen.

Der Modellierungsprozess zwischen Mensch und Maschine

Um eine Geschäftsanwendung zu programmieren, benötigen Anwender zunächst eine genaue Spezifikation in Form eines Fachfeinkonzepts. Das beschreibt detailliert, was die Anwendung in Bezug auf Leistungen und Ergebnisse im Betrieb erfüllen soll. Auf dieser Basis schreiben die Programmierer dann typischerweise im nächsten Schritt ein Softwarepaket. Parallel dazu wird die Architektur des Systems definiert.

Wenn das automatisiert erfolgt, werden Anwendungen anhand eines spezifischen Bauplans (Geschäftsprozessmodelle) und zur Verfügung stehender Bauteile (Framework und Template) maschinell produziert. Ein solcher Bauplan gibt eine Rahmenstruktur vor. Dieser besteht aus Diagrammen sowie hierarchisch gepflegten Strukturen und dient als Richtlinie für die Erstellung von kundenspezifischen Softwarelösungen. Zudem stellt dieser Bauplan die Basis und den Leitfaden für die Programmierung dar.

Schematischer Aufbau einer Softwareproduktionsmaschine.
Schematischer Aufbau einer Softwareproduktionsmaschine.
Foto: Bodnarescu, VBO Services GmbH

In der Praxis hat sich herausgestellt, dass es in der Startphase eines Softwareprojekts sehr hilfreich sein kann, wenn die Fachseite frühzeitig eine funktionierende Teilanwendung zur Verfügung gestellt bekommt. Eine ausgereifte Softwareproduktionsmaschine erlaubt die Verifizierung durch Nutzung einer lauffähigen Anwendung in einem Model bereits in der Designphase. Der Anwender kann dabei die definierten Anforderungen durch Ausprobieren selbst fortlaufend testen. Wie in einem Planspiel baut ein Fachberater die Lösung aus wählbaren Eigenschaften zusammen. Dadurch lässt sich eine Softwarelösung sukzessive definieren, indem sie in mehreren Zyklen erweitert und verfeinert wird.

Ein Beispiel zur Erklärung der Arbeitsweise: Der Fachberater modelliert ein Personen-Objekt mit den Attributen Name, Vorname und Geburtstag. Eine Person kann eine oder mehrere Adressen haben, jeweils mit Straße, Postleitzahl und Ort ergänzt. Die Daten müssen plausibilisiert werden. Zum Beispiel ist der Name Pflicht und die Person darf nicht minderjährig sein. So lassen sich gewünschte Methoden implementieren, um eine Person zu aktivieren oder eine Adresse zu sperren.

Der beschriebene konzeptionelle Ansatz stellt einen laufenden Prozess dar. Innerhalb dieses kreativen Modellierungsprozesses werden Eigenschaften in einem Bausatz durch eine einfache Erfassung und Optionsauswahl hinzugefügt. Falls ein Eigenschaftstyp fehlt, lässt sich dieser in dem Metamodell nachpflegen und hinzufügen. Durch diese Interaktion wird das Gesamtwerk vom Fachberater modifiziert. Die modellierten Anwendungen lassen sich sofort prototypisch prüfen und fachlich validieren. Der Fachberater muss dafür über kein technisches Wissen verfügen. Er konzentriert sich auf die Fachinhalte, die umzusetzen sind.

Feinabstimmung bringt Übereinstimmung

Nach Kundenabnahme der Fachanforderungen, bestehend aus Fachkonzeption und lauffähigem Prototyp, übernimmt ein Softwareentwickler das Modell und vervollständigt es um technische Informationen. Aus dem so erarbeiteten und komplettierten Modell lässt sich in dieser Phase maschinell die komplette und konsistente Softwarelösung produzieren. Die zuvor beschriebenen frühzeitigen Emulationen und Erfahrungstests am Modell machen es möglich, verifizierte Anforderungen in eine Produktionssoftware umzusetzen. Das umfasst den Programmcode für eine Geschäftsanwendung, die komplette Programmdokumentation, Online Help (Struktur und Inhalt) und Testfälle.

Um hinter die Kulissen der Softwareproduktion zu blicken, ist es interessant zu verstehen, wie eine Softwareproduktionsmaschine funktioniert. Die folgenden drei wichtigen Module bilden eine typische Basis:

  1. Ein Model-Repository, in dem wie oben beschrieben, ausgehend vom Fachberater bis zum Softwareentwickler Geschäftsmodelle definiert werden.

  2. Im Template Repository wird die Umsetzungstechnologie durch einen Softwarearchitekt spezifiziert und gepflegt. Diese Vorlage wird nur einmal pro Systemarchitektur erstellt und in unterschiedlichen Geschäftsanwendungen wiederverwendet.

  3. Die Generator Engine kombiniert die Fachanforderung aus dem Model-Repository mit der technologischen Vorgabe aus dem Template Repository (Java Enterprise oder .net usw.) und erzeugt das Ergebnis: Programmcode, Dokumentation, Fachkonzept und weitere Inhalte.

Stark vereinfacht kann man diesen Prozess mit der Erstellung eines Serienbriefes vergleichen. Die Liste der Adressen bildet das Model-Repository und die Briefvorlage das Template-Repository. Ist die Briefvorlage in Deutsch-Java geschrieben, wird der Serienbrief deutsche Ergebnisse über Java produzieren, ist er in Englisch-Cobol oder C# geschrieben, dann stellt sich das Ergebnis entsprechend dar. Wichtig ist dabei, dass die Generator Engine unabhängig von der Programmiersprache funktioniert. Durch den Template-basierten Generierungsansatz lassen sich die Softwarelösungen jederzeit und ohne Auswirkungen auf die Generator Engine erweitern beziehungsweise modernisieren.

Darauf sollten Anwender jedoch achten: Die Generator Engine muss "round-trip-fähig" sein. Das heißt, der Code wird produziert und dann manuell angepasst oder erweitert. Wenn sich die Anforderungen ändern, dann wird auch das Modell entsprechend verändert. Bei einer erneuten Codegenerierung müssen alle bestehenden manuellen Änderungen beibehalten und automatisch integriert werden.

Fortlaufende Generierungen sind üblich in einem Software-Lebenszyklus. Sie entstehen beispielsweise, wenn sich Fachanforderungen ändern. Technologieanpassungen spiegeln sich in Erweiterungen und Modernisierungen der Templates wieder. In diesem Fall führt eine erneute Code-Generierung zur automatischen technologischen Modernisierung von bestehenden Anwendungen.

Durch das Metamodel lassen sich die Modellierungsmöglichkeiten beliebig erweitern, ohne die Maschine selbst anpassen zu müssen. Das Metamodell bildet einen abstrakten Bereich mit Grundinformationen zur Struktur der Modelle. Objekte haben zum Beispiel Attribute und unterschiedliche Objektbeziehungen, beispielsweise Relationen wie 1-n oder Vererbung, die im Metamodel gepflegt werden. Das Zusammenspiel aller Komponenten und Aktionen zeigt die Grafik.