Mit NaturalONE Legacy-Projekte auf ein neues Level heben

Daniel Clausen und René Radant  /  11.05.23  /  Managed Services

 

NaturalONE ist Teil des Software AG Designers, einer Eclipse-basierten modernen Entwicklungsumgebung zum Entwickeln und Warten von Natural-Anwendungen. Die Umgebung kombiniert die Eigenschaften mehrerer Tools in einem einzigen Entwicklungsframework und deckt die Funktionalität über den gesamten Lebenszyklus einer Produktentwicklung ab. Dazu gehören die Anwendungsentwicklung, Tests, eine automatisierte Dokumentation der Quellen in PREDICT sowie die Versionierung und Bereitstellung der Anwendung in der Produktionsumgebung.
Im Absatz Entwicklungsumgebung wird erläutert, wie ein moderner Software-Lifecycle mit Hilfe von NaturalONE umgesetzt werden kann. Dabei wird sowohl die Multi-User-Entwicklung als auch der Continuous-Integration-Prozess mit Versionsverwaltung und Continuous Delivery betrachtet.

NaturalONE – eine moderne Entwicklungsumgebung

Die Einführung einer modernen, voll integrierten Entwicklungsumgebung wie NaturalONE ermöglicht es, Legacy-Projekte auf ein ganz neues Level zu heben und diese Projekte fortan mit Hilfe eines modernen Software-Lifecycles weiterzuentwickeln und zu betreiben. Dabei zeigen sich die Stärken von NaturalONE vor allem in der Nachvollziehbarkeit von Änderungen, aber auch in parallelen Entwicklungszyklen. Diese wirken sich direkt positiv auf die folgenden Punkte aus:

  • Kosten sparen,
  • Entwicklungszeiten verkürzen (Time to Market),
  • Vermeidung von Fehlern, die durch gleichzeitiges Ändern derselben Source entstehen.

Wenn die Entwicklungsarbeit mithilfe des NaturalONE-Arbeitsbereichs ausgeführt wird, wird die Produktivität im Entwicklungslebenszyklus maximiert bzw. die Entwicklungszeiten werden verkürzt und Kosten reduziert. Dies bietet auch die Möglichkeit, dass viele Entwickler gleichzeitig an derselben Anwendung arbeiten, ohne sich gegenseitig zu blockieren.

Technisch gesehen unterstützt NaturalONE die Multi-User-Entwicklung durch Funktionen wie

  • ein lokales Repository aller Natural-Objekte,
  • die Nutzung von separaten privaten User Libraries, in denen jeder Entwickler seine Arbeiten speichert, sowie einer STEPLIB, welche die gesamte Anwendung enthält, um die fehlenden Objekte zu ergänzen.
  • die Sortierung der Natural-Objekte nach individuell definierten Projekten,
  • die Einbindung einer Versionsverwaltung und das Hinzufügen von weiteren Funktionalitäten durch Plug-Ins.

So entsteht eine vollständig integrierte Entwicklungsumgebung.

Integration einer Versionsverwaltung

Moderne Versionsverwaltungssoftware wie GIT erlaubt die Einführung von Entwicklungszweigen, auch Branches genannt.
NaturalONE hat dabei die Werkzeuge für das Erstellen, Zusammenführen sowie das Wechseln zwischen den verschiedenen Branches voll integriert. Nach wie vor können natürlich auch alte Entwicklungsstände jederzeit aus dem Repository geladen und miteinander verglichen werden.

Versionsverwaltung in NaturalONE

Versionsverwaltung: Entwickeln mit Branches

Die Quellen werden von der Versionsverwaltung in einer Baumstruktur abgelegt. In der obigen Abbildung gibt es einen Master-Branch, hier auch Produktions-Branch genannt, der den aktuellen Stand der Produktion enthält. Änderungen werden hier nicht direkt, sondern durch das Zusammenführen (Mergen) aus dem Entwicklungs-Branch übernommen. Bevor Änderungen auf diesem Weg übernommen werden, sollte ein Abnahmetest und eine Freigabe erfolgen.
Für größere Änderungen legen sich die Entwickler eigene Feature-Branches an. Diese werden, sobald die Entwicklung fertig ist, wieder in den Entwicklungs-Branch übernommen. Über den Fast Forward Mechanismus kann der Branch wieder zurück in den ursprünglichen Branch überführt werden. Kleinere Anpassungen  werden häufig auch direkt auf dem Entwicklungs-Branch gemacht, wobei dies von der Größe und Organisation des Projekts abhängig ist.
Zusätzlich lassen sich Skripte zur automatisierten Verteilung von fertigen Arbeiten auf die Entwicklungs- und Abnahmeumgebung einbinden. Um den Stand auf dem Entwicklungsserver möglichst aktuell zu halten, ist es empfehlenswert, vom Entwickler abgeschlossene Änderungen direkt auf den Entwicklungsserver zu verteilen, damit Kollegen unmittelbar auf dem neuen Stand aufsetzen. Die privaten User Libraries ermöglichen das parallele Arbeiten mehrerer Entwickler an denselben Objekten mit verschiedenen Entwicklungsständen, weil die Änderungen erst durch die Bereitstellung in die STEPLIB für alle Entwickler übernommen werden. Da jeder Entwickler seine individuellen privaten User Libraries hat, sind Änderungen an dieser Stelle auch nur für ihn selbst sichtbar.

Beispielhafter Aufbau einer Entwicklungsumgebung

Entwicklungsumgebungen können je nach Entwicklungsprozess und verwendeter Software unterschiedlich aussehen. In der Abbildung ist eine Entwicklungsumgebung dargestellt, die sich an den Empfehlungen der Software AG orientiert.

beispielhafter Aufbau einer Entwicklungsumgebung
Die Entwickler haben hier eigene Arbeitsplätze (unten links) und editieren die Natural-Objekte in einer lokalen Kopie des Repositorys (grün). In Richtung des Development-Servers (unten Mitte) sind sie über den NDV-Server angebunden und laden ihre Änderungen in eine eigene Private-Lib hoch. Im Software AG Designer können Tests auf dem Server gestartet werden. Dabei werden die NATURAL-Objekte zunächst aus der eigenen Private-Lib gezogen und nur die fehlenden Objekte aus der als STEPLIB eingebundenen Development-Library der Natural-Applikation ergänzt. Dadurch behindern sich mehrere Entwickler nicht gegenseitig, selbst wenn sie an denselben Objekten entwickeln.
In der anderen Richtung sind die Entwickler an das zentrale Repository (oben links) der Versionsverwaltung angeschlossen. Hier können sie für jede anstehende Tätigkeit vom Entwicklungs-Branch einen Feature-Branch abzweigen, in dem die Arbeiten gesichert werden. Erst wenn das Projekt aus Sicht des Entwicklers abgenommen ist, führt dieser es mit dem Entwicklungs-Branch zusammen. Dieser wird dann über automatisierte Skripte des CI-/CD-Servers (oben Mitte) in der gemeinsam genutzten Development-Library der Natural-Applikation des Development-Servers bereitgestellt. Ab diesen Zeitpunkt können andere Entwickler diesen Stand mit ihren Arbeiten zusammenführen, und testen automatisch mit dem neuen Stand. Ausnahme: Objekte in der eigenen Private-Lib haben Vorrang, sodass Arbeiten nicht behindert werden. Hier können, über eine Continuous-Integration-Software, auch automatisierte Tests eingebunden werden. Außerdem wird durch die Verwendung derselben automatisierten Skripte beim Deployment in Abnahme- und Produktionsumgebungen das Risiko von Fehlern in der Bereitstellung minimiert.

Vorzüge des Software AG Designers

Der Software AG Designer als Entwicklungsumgebung von NaturalONE bietet bei der Arbeit einige Vorzüge.

Vorzüge des Software AG Designers

Durch das Kopieren der Development Library inklusive der private Library in den lokalen Arbeitsbereich bleibt der Stand auf dem Server erhalten, bis ein Update durchgeführt wird.
Außerdem bietet NaturalONE eine implementierte Funktion zum Datei-Vergleich mit alten Ständen an. Als Stände stehen dabei die “local history”, der Serverstand, und gegebenenfalls die Stände aus dem Repository einer Versionsverwaltung zur Verfügung.
Die Versionsverwaltung dient dabei zeitgleich als Archiv, sodass eine separate Sicherheitskopie von Ständen nicht mehr erforderlich ist.
Es ist ebenfalls möglich, mehrere Kopien in den eigenen Arbeitsbereich zu legen. Dies kann z.B. nützlich werden, falls mehrere Entwicklungen an einer zentralen Komponente sich überschneiden.

Um die Übersichtlichkeit zu steigern, bietet sich die Task-View an, um die Liste der Natural-Objekte auf das aktuelle Projekt zu begrenzen, statt in allen Objekten auf dem Server suchen zu müssen. Dadurch ist anhand der Darstellung auf den ersten Blick zu erkennen, welche Dateien bereits mittels upload/update auf den Server gebracht wurden.

Wird NaturalONE ohne Versionsverwaltung und STEPLIBs genutzt, muss bedacht werden, dass vor dem Upload auf den Server zunächst ein Vergleich mit der Development-Library des Servers durchgeführt werden muss. Sonst kann es zum Überschreiben der Arbeit eines Kollegen kommen. Ebenso ist vor dem Beginn der Arbeit ein Abgleich notwendig, um nicht auf einen alten Stand in der lokalen Kopie aufzusetzen.

Beim Editieren gibt es, neben den zuvor genannten Vorteilen, wie Differenzvergleiche von Ständen, und das Begrenzen der Anzeige auf das aktuelle Projekt, eine große Anzahl weiterer Vorzüge. Einige davon hier:

  • Highlighten von Programmcode
  • Komfortable Scrolling-Funktion
  • Mehrere Natural-Objekte können parallel geöffnet und bearbeitet werden
  • Autovervollständigung mittels Strg + Space
  • Tastenkombinationen wie STRG+C / STRG+V sind möglich
  • Um weitere Objekte einzubinden kann mit STRG+Shift+R eine Schnellsuche in den Ressourcen gestartet werden. Auch wenn der Filter aktiv ist.
  • Variablen, Subroutinen etc. können mit Hilfe der Strg-Taste als Hyperlink genutzt werden, um zur Variablendefinition, der Subroutine oder ins aufgerufene Subprogramm zu gelangen. Dabei werden die benötigten Objekte, z.B. die LDA, automatisch geöffnet.
  • View Dependencies: Hier ist leicht zu erkennen, welche Objekte von diesem aufgerufen werden, oder auch von wo dieses Objekt aufgerufen wird (Achtung: Programme, die Programme aufrufen, werden nicht bedacht).
  • Debug-Mode: Am linken Rand des Quellcodes können BreakPoints gesetzt werden. Danach muss das Natural-Programm aus dem Designer heraus gestartet werden. Ab dem BreakPoint kann mit der schrittweisen Verarbeitung fortgefahren werden. Währenddessen ist in einer separaten Ansicht der aktuelle Inhalt aller Variablen ersichtlich (und kann zum Testen editiert werden).
  • Fortfahren nach Arbeitsunterbrechung. Der Software AG Designer speichert, welche Objekte geöffnet waren. Daher ist es nicht mehr nötig, beim nächsten Start alle Objekte erneut zu suchen/öffnen.
  • Integrierter Data Browser: Somit können Datenbankinhalte eines Files schneller analysiert und verschiedene Einträge verglichen werden. Dadurch sind falsche/ungewollte Feldinhalte ohne das Schreiben eines Hilfsprogrammes einsehbar. Die mit dem Data Browser erzeugten Reports können als CSV exportiert und somit für weitere Verarbeitung und Testabläufe verwendet werden.
  • Die Update- und Commit-Einstellungen lassen sich bei angebundener Versionsverwaltung für einzelne Dateien sowie Verzeichnisse einstellen.
  • Die Natural Sourcen sind leichter zu durchsuchen im Gegensatz zu einer eingeschränkten SCAN-Funktion über einen Mainframe bzw. Host.
  • Eigenschaften (Properties) von Natural-Sourcen lassen sich leichter editieren
    (detailliertere Beschreibung auf einen Blick).

Herausforderungen bei der Einführung

Die Einführung von NaturalONE kann auf mehreren Ebenen Herausforderungen mit sich bringen. Zum einen kann es bereits vorhandene Versionsverwaltungen und Deploymentprozesse geben, die sich so nicht eins zu eins in den NaturalONE Workflow integrieren lassen. Aber auch die Paketierung und Verteilung von NaturalONE kann, gerade in virtuellen Umgebungen wie Citrix, zu Problemen führen.
Zum anderen müssen die Mitarbeiter in einer neuen Software sowie einem neuen Workflow geschult werden. Auch dies kann, gerade bei erfahrenen Kollegen, Herausforderungen mit sich bringen.

Je nach Konfiguration des Systems gibt es auch einige technische Voraussetzungen, um NaturalONE an die Server-Infrastruktur anzubinden. So kann es zum Beispiel nötig sein in der Konfiguration der ADABAS-Datenbank Parameter anzupassen.
Auch beim Initialisieren des NDV-Servers kann es am Anfang zu Fehlern kommen.
Für die Benutzerauthentifizierung sollte Natural Security eingeführt werden, um die Möglichkeit der Zugriffsbeschränkung zu schaffen.

Mit einer modernen Entwicklungsumgebung fit für die Zukunft

Durch die Einführung einer modernen Entwicklungsumgebung sowie der Implementierung eines modernen Software Lifecycles kann die Natural-Entwicklung auf ein neues Niveau gehoben werden. Im Besonderen profitieren Ein- sowie Umsteiger von einer modernen Entwicklungsumgebung, da diese häufig schon mit Eclipse-basierten Entwicklungsumgebungen wie NaturalONE in Berührung gekommen sind. Dadurch wird ermöglicht, Natural-Projekte mit Hilfe moderner Entwicklungsmethoden sowie der Einbindung in bestehende Continuous-Integration-Umgebungen, auch zukünftig effizient weiterentwickeln zu können. Durch einen integrierten Continous-Delivery-Prozess kann das Fehlerpotential während des Deployment-Prozesses ebenso weiter reduziert werden.


Quelle Abb.3: https://www.youtube.com/watch?v=1ZOSfUoyEXw