Skip to main content
let's make IT happen

Computer-Programme schreiben Computer-Programme... Wie bitte?

Der exponentiell wachsende Bedarf an Computer-Programmen ist heutzutage kaum noch zu bewältigen. Sogar die bereits bestehende Software-Basis kann man „gigantisch“ nennen. Müssten alle diese Programme manuell erstellt werden, bräuchten wir in den nächsten Jahren bis zu 50% mehr Entwickler und fast genauso viele Software-Tester; ganz abgesehen von den explosiv wachsenden Daten-Mengen, welche diese Programme verarbeiten müssen.

Deswegen setzen immer mehr Unternehmen und Entwickler Software-Generierung ein. Ja genau: Computer-Programme die Computer-Programme schreiben. Nein, wir reden hier noch nicht über künstliche Intelligenz, das ist ein anderes Thema... Mit dieser Software-Entwicklungs- und Test-Methode können enorme Einsparungen erzielt werden, die Qualität der generierten Software ist garantiert gleichbleibend und ausserdem einfacher zu testen.

Allerdings ist es notwendig zu verstehen, wann und wie man diese Methode einsetzt und welche Voraussetzungen erfüllt werden müssen, bevor man damit anfangen kann:
Die Software-Generierung setzt stark regulierte, klar definierte – möglichst abstrakte – DatenStrukturen, exakte Namenskonventionen, Daten-Verarbeitungs-Regelwerke, etc. voraus. Bereits beim Design des zu entwickelnden Systems empfiehlt sich, diese Voraussetzungen zu schaffen und die 100%-Software-Regenerierbarkeit in den Vordergrund zu stellen. Das Daten-Modell sollte möglichst abstrakt und generisch aufgebaut sein, die Software-Generatoren sollten möglichst weitgehend durch Parameter steuerbar sein und möglichst lesbare und verständliche Programme generieren, damit sie leicht von Software-Testern verstanden werden.

Am häufigsten wird Software-Generierung eingesetzt bei stark regulierten, klar definierten Prozessen, Abläufen, Daten-Flüssen, Transaktionsverarbeitungen, Data-Warehouses, etc. Auch bei der Automatisierung von Software- und Daten-Testing und Prozess-Monitoring sind weitreichende Einsatzmöglichkeiten.

Ein Business Case:

Bei einer Bank ist ein Datawarehouse aufgebaut, welches seine Daten aus zahlreichen anderen internen und externen Systemen geliefert bekommt. Nichts Neues?

Die Datenbank-Tabellen enthalten, ausser den fachlichen Attributen, immer auch ein Standard-Set technischer Attribute (für z.B. bi-temporale Daten-Historisierung) und es gibt eine strikte Namenskonvention für Tabellen, Attribute, Constraints, Triggers, Programme, Funktionen, usw. Die Datenflüsse werden mittels sogenanntem Mapping (Quelle → Ziel) gesteuert und der Datentransport-Programmcode wird von einem Programm-Generator erstellt. Auch die Daten-Transformationen werden über diese Mappings definiert. Sogar komplexe Programm-Fragmente werden in den Mappings aufgenommen und bei der Programm-Generierung integriert.

Ähnlich wie bei der Software-Entwicklung werden Tests automatisiert. Ähnlich wie in der Entwicklung werden Mappings definiert für Testcases mit mehreren Test-Schritten. Testschritte, für die SQL-Code gebraucht wird, werden generiert und bei Bedarf auch regeneriert. Danach werden diese automatisiert in Bulk direct in der Datenbank ausgeführt und die Testresultate persistiert, welche dann für Test-Reporting bzw. Übertragung in ein Test-Tool (sowie HP ALM) zur Verfügung stehen. Somit können die >10‘000 Testfälle von nur 2 Testern bei jedem Release durchgeführt werden und auch Regressions-Tests sind, ohne grossen Aufwand, im Nachhinein jederzeit möglich.

 

Peter A.A. Maas, Senior Software Entwickler, INTEGRATE Informatik AG