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.
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.
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.

Fazit

Eine derart konfigurierbare automatische Software-Produktionsmaschine braucht ein erprobtes Metamodel und Template Repository. Der hier skizzierte Produktionsprozess mit Modulen und Methoden erreicht eine standardisierte Qualität der Software bei bis zu 96 Prozent maschinell produziertem Code. Die fachlichen Anforderungen können frühzeitig und in kurzen Zyklen, auf lauffähigen Applikationen basierend, mit dem Kunden verifiziert werden. Dadurch vervollständigt sich die Applikation laufend bis zum Endprodukt.

Die Reduktion der Projektlaufzeiten führt zu einer schnellen Implementierung und wirtschaftlichen Inbetriebnahme der Geschäftsanwendungen. Durch den standardisierten Code ist zudem ein einfacher Austausch zwischen Entwicklern möglich. Der Code ist leicht zu verstehen und nachzuverfolgen. Darüber hinaus vereinfacht sich durch eine Produktionsmaschine die Softwarewartung und -weiterentwicklung. Veränderungen auf der Technologieseite lassen sich flexibel und schnell umsetzen. Die Qualität der Produktionsmethode bedeutet für die Unternehmen gleichzeitig auf lange Sicht Investitionssicherheit. (ba)

*Victor Bodnarescu ist Geschäftsführer VBO Services GmbH

FAQ maschinelle Softwareproduktion

Wie wird so eine Software-Produktionsmaschine genutzt – kaufen Anwender eine Dienstleistung und die Maschine bleibt im Besitz des Dienstleisters oder bekommt der Kunde die Maschine und kann auch selbst loslegen?

Antwort: Es gibt beide Fälle – Endkunden/Unternehmen bestellen in der Regel zu einem Festpreis eine Geschäftsanwendung. Diese wird basierend auf dem beschriebenen Verfahren schlüsselfertig geliefert und beim Kunden implementiert. Mit dem gleichen Verfahren erfolgt auch die Softwarepflege und Weiterentwicklung. Es gibt auch Kunden, in der Regel Softwareunternehmen, die Softwarelizenzen des Systems, inklusive Schulung und Beratung kaufen. Dann entwickeln diese selbständig ihre Softwarelösung, die sie selbst dann vertreiben.

Wie sehen Lizenzierungsmodelle aus? Wie steht es mit Wartung und Wartungsgebühren?

Antwort: Bezugnehmend auf die beiden oben beschriebenen Kundentypen:
1) Im ersten Fall zahlt der Kunde nur den Festpreis für die Entwicklung seiner Softwarelösung. Wenn er dazu Wartungsleistungen in Anspruch nimmt (in der Regel second level support) dann werden entsprechende Wartungsverträge mit SLAs vereinbart.
2) Die Lizenznehmer des Entwicklungstools kaufen auch eine Wartung. Im Rahmen dieser Wartung bekommen diese ohne Zusatzkosten weitere Entwicklungen mit aktuellen Releases der Entwicklungsmaschine, Generierungstemplates und dem Framework.

Wie lassen sich die maschinell produzierten Softwarebauteile in bestehende Infrastrukturen einbinden? Gibt es standardisierte Schnittstellen?

Antwort: Es gibt Standardschnittstellen, die modelliert und generiert werden können, entweder online oder im Batch, für: Webservices, Import- Export als XML, CSV, Datenbanktabellen, Excel. Die aktuellen Templates für Java Enterprise entsprechen dem JEE Standard. Konzernspezifische Standards lassen sich durch Anpassung/Erweiterung dieser Templates abbilden.

Für welche Unternehmen/Anwender eignet sich diese Methode Software zu erstellen?

Antwort: Für alle Branchen, solange es um Geschäftsanwendungen geht. Anwendungen mit Online-Benutzeroberflächen (Web- und/oder Desktop-Client), Reports, Batchprozesse, Workflows, Schnittstellen zu Drittsystemen, Datenmigration.

Gibt es Limitierungen, was Umfang beziehungsweise Komplexität der gewünschten Software betrifft?

Antwort: Bisher gab es keine Beschränkung. Das wird gelöst durch Aufteilung in Sub-Projekte und Sub-Modelle, die miteinander modular verknüpft sind und kommunizieren können.