# Maestro II

Maestro II, ein Produkt der Softlab GmbH, München (später: Cirquent, heute: NTT Data), ist ein umfangreiches System zur Optimierung des Prozesses der professionellen Software-Erstellung und -Wartung mit besonderem Blick auf die Unterstützung von Teamarbeit.

## Vorgeschichte

Da die Herstellung der Basismaschinen für Maestro I, Philips X1150, beendet und auch die Bereitstellung von Ersatzteilen zunehmend problematischer wurde, entschloss sich Softlab im Jahre 1989 zu einer völligen Neuimplementierung auf der Basis der mittlerweile weiterentwickelten Hard- und Softwaretechnologie. Wiederum war es Harald Wieler, der den Prototyp schuf und die wesentlichen Meilensteine für diese Neuentwicklung setzte. Dieser Prototyp hatte bereits lange vor Erscheinen von Microsoft Windows 3.0 eine Vielfenster-Multitasking-Technik realisiert.

## Architektur

Es handelt sich um eine Client/Server-Architektur, wobei mehrere PCs mit mehreren Servern über Ethernet verbunden sind (Abb. 1).
Abb. 1: Maestro II als Client/Server-Architektur
Die Server haben als Betriebssystem Unix, wobei die Dialekte Ultrix, AIX, HP-UX und Xenix unterstützt werden. Sie dienen als zentrale Datenspeicher in Form von einfachen Dateien, die über den Maestro-Net-File-Server-Dämon („MNFSD“) den Clients zur Verfügung gestellt werden. Außerdem ist eine Art Entity-Relationship Datenbanksystem, das Object Management System („OMS“), implementiert worden, das als Repository für die Projekte dient.
Als Clients werden IBM-kompatible PCs ab Prozessor Intel 80286 mit Betriebssystem MS-DOS ab Version 3.2, Unix, OS/2 oder Microsoft Windows ab Version 3.0 verwendet (auch mit allen Windows-Zwischenversionen bis zum heutigen Microsoft Windows 10 und mit heutigen PC-Architekturen ist die Client-Software kompatibel). Auf Basis eines dieser Betriebssysteme wird ein einzelnes EXE-Programm (die „Maestro II Workstation“ MWS.EXE), aufgerufen, das wiederum die „Tasks“, die sich dem Anwender wie eigenständige Programme (üblicherweise jeweils mit eigenem Fenster) präsentieren, ausführt. Unterbrechungen bei bestimmten Befehlen (z. B. Warten auf Tastatureingabe) sorgen dafür, dass alle Tasks scheinbar parallel zueinander abgearbeitet werden.
Zur Programmierung der „Tasks“ wurde eine eigene Prozedursprache „Prolan2“ geschaffen. Der Prolan2-Compiler, selbst in Prolan2 implementiert, erstellt aus dem Quellcode einen plattformneutralen Zwischencode, der dann zur Laufzeit von MWS.EXE interpretiert wird (vgl.: Java-Technologie).

## Projektentwicklungsmethoden

Eine Reihe von Methoden werden unterstützt:
* Merise
* Yourdan
* SSADM
* SAISD
* SeTec (Softlab-eigene Methode)
Die Methodenunterstützung umfasst jeweils die Erstellung der Pflichtdokumente und Grafiken.

## Werkzeuge

Maestro II unterstützt mit einer Palette an CASE-Tools alle Phasen des Lifecycle der Softwareentwicklung und optimiert die Projektabwicklung im Team. Projektdokumente können in einer vorgefertigten Struktur eines „Projekt Content Management Systems“ (PCMS) im OMS abgelegt, bearbeitet und prozedural durchsucht werden.
Ein einfacher Grafik-Editor (GED) hilft schon in frühen Projektphasen beim Erstellen von Skizzen z. B. des Datenmodells.
Zur Erstellung der Formulare des Zielsystems (z. B. CICS oder IMS) wird das Layout-Design-Tool (LDT) bereitgestellt.
Zur rationellen Erstellung der Programme eines Projekts in den gängigsten Mainframe-Zielsprachen (COBOL, PL/1) wurde die „Construction Team Workstation“ (CTW) geschaffen.
Remote Job Entry und Terminalemulation (z. B. für IBM 3270, Siemens 9750, Unix VT220) schaffen die nötigen Zugriffe zum Zielrechner, um die unter Maestro II erstellten Quellprogramme zu übersetzen, zu binden und zu testen.
Die „Maintenance Team Workstation“ (MTW) beantwortet für die gängigsten Zielsprachen (COBOL, PL/1) die für die Softwareerstellung und -wartung entscheidende Frage nach den Nebenwirkungen einer geplanten Änderung in den Datenstrukturen.
Da Maestro II von Softlab selbst zur Abwicklung von Kundenprojekten eingesetzt wurde, entstanden auch in diesem Rahmen umfangreiche Erweiterungen wie die hauseigene kompilierbare Spezifikationssprache LSD oder Prozessketten (anklickbare Grafiken, die den Entwicklungsablauf veranschaulichen und automatisieren).
Auch Schnittstellen zu 3rd Party Tools sind vorhanden, z. B. PDT (Program Design Tool) und SDT (datenbankbasiertes Program Structure Definition Tool) der Firma ITP.

## Texteditor

Besondere Erwähnung verdient der Texteditor, der die Bedürfnisse der Programmentwicklung optimal abdeckt. Die Textdateien können sich sowohl am Client als auch am Server befinden. Befinden sie sich auf dem Server, kann sie bei einem Client zum Schreiben und gleichzeitig bei beliebig vielen Clients im Lesezugriff eröffnet sein. Jede Änderung wird beim Verlassen einer Textzeile (oder beim Deaktivieren des Textfensters) sofort zurückgeschrieben und bei den anderen Teammitgliedern sichtbar. Diese Eigenschaften waren in ähnlicher Form bereits unter Maestro I vorhanden.
Der Zeichensatz wurde bewusst mit Zeichen gleicher Breite realisiert. Das erlaubt die Markierung von Textteilen
* als ganze Zeilen (Abb. 2)
* als Fließtext (Abb. 3)
* als rechteckigen Block (Abb. 4)
mit entsprechenden kontextabhängig wählbaren Aktionen (z. B. Versetzen, Füllen, Umrahmen oder Aufsummieren aller enthaltenen Zahlen).
Abb. 2: ganze Zeilen markieren und in diesen Kontext gehöriges Popup-Menu
Abb. 3: Fließtext markieren und in diesen Kontext gehöriges Popup-Menu
Abb. 4: rechteckigen Block markieren und in diesen Kontext gehöriges Popup-Menu
Der Texteditor des Maestro II ist in Prolan2 implementiert und kann durch eigene Typdefinitionen, Layouts und Prozeduren weitgehend an spezielle Bedürfnisse von Ziel-Programmiersprachen angepasst werden.
Für Korrespondenz ist dieser Texteditor allerdings weniger geeignet, da er nur eine sehr begrenzte Anzahl von Attributen unterstützt. Für dieses Anwendungsgebiet gibt es genügend Werkzeuge von Microsoft (z. B. Word, WordPad) und anderen Herstellern. Eine Konvertierung von Maestro II Textdateien in das Rich Text Format kann mit Hilfe des RTF-Konverters vorgenommen werden, der beim Hersteller (bzw. dessen Nachfolger NTT Data) erworben werden kann.

## Sprachen

Die Clients des Maestro II stehen in den Sprachen englisch, deutsch und japanisch zur Verfügung, wobei die Umschaltung im laufenden Betrieb vorgenommen werden kann.

## Grenzen

Maestro II wurde für die Entwicklung von Systemen für Mainframes optimiert. Damit wurden einige Begrenzungen in Kauf genommen, die die Entwicklung von Programmen für künftige Geräte wie Smartphones ungünstig beeinflussen.
Beispiele für solche Grenzen sind:
* maximale Länge von Zeilen in Textdateien (250 Zeichen)
* maximale Anzahl von Zeilen in Textdateien (65535 Zeilen)
* maximale Größe von Dateien (64 MiB)
* maximale Schlüssellänge bei Dateien mit B*-Baum (250 Zeichen)
* maximale Länge von Namen im OMS (32 Zeichen)
* maximale Länge von Prozedurnamen (12 Zeichen)
* maximale Länge von Prozeduraufrufen incl. Parametern (250 Zeichen)
* maximaler Speicherbedarf einer Prozedur incl. Variablen (64 KiB).

## Architekturvergleich Maestro II mit Maestro I

Die virtuelle Maschine von Maestro I ist der Texteditor selbst. Mit diesem lassen sich auch Prozeduren schreiben, mit denen die eigentliche Nutzarbeit rationalisiert werden kann.
Maestro II hingegen ist ein Prozedurinterpreter, und der Texteditor ist eine Prozedur (genauer gesagt eine größere Menge von untereinander abhängigen Prozeduren) wie viele andere auch.
In einer Maestro I Sitzung können bis zu 10 Dateien gleichzeitig geöffnet sein, wobei aber zu einem Zeitpunkt nur eine Datei zum Schreiben eröffnet sein kann. Es ist aber höchstens eine dieser Dateien zu einem Zeitpunkt am Bildschirm sichtbar. Die anderen Dateien belegen sog. Kameras und können durch eine Taste im Ziffernblock in den Vordergrund geholt werden.
In Maestro II können beliebig viele Fenster gleichzeitig auf dem Bildschirm sichtbar sein, wobei, ähnlich wie unter Microsoft Windows, zu einem Zeitpunkt nur eines „aktiv“ sein kann (d. h., das ist auch der Empfänger der Tastatureingaben), und nur eines kann das oberste Fenster ("top") sein (das ist meist, aber nicht unbedingt das aktive Fenster). Das Fensterverhalten ist ähnlich wie unter Microsoft Windows.
Die Prozedursprache von Maestro I besteht im Wesentlichen aus Folgen von benannten Tasten, die von Strukturierungsmitteln (Klammern und IF-THEN-ELSE) oder Schleifen (mit Zähler und Abbruchmöglichkeit) umgeben sein können. Die Anzahl der verfügbaren Variablen ist sehr begrenzt. Der Aufruf einer Prozedur geschieht über die hierfür über eine eigene Taste verfügbar zu machende Prozedureingabezeile, in die sowohl der Name der Prozedur als auch die Parameter eingegeben werden können. Prozeduren können Unterprozeduren aufrufen, indem sie Name und Parameter in die Prozedureingabezeile schreiben und abschicken, und warten, bis diese Unterprozedur abgearbeitet ist.
Die Prozedursprache von Maestro II, Prolan2 genannt, sieht äußerlich ähnlich wie C und andere moderne Programmiersprachen aus und verfügt über Pointer sowohl für den „taskinternen“ Speicherbereich als auch auf Fremdsegmente. Wird eine Prozedur gestartet, dann wird sie als „Task“ vom Maestro II-Kernel abgearbeitet. Eine Maestro II-Prozedur ist üblicherweise in bis zu 255 Regeln unterteilt. Insgesamt, inklusive Speicher für die Variablen, kann eine Task 64 KiB groß sein. Ein wesentliches Charakteristikum von Prolan2 ist das regelbasierte Parsen von Zeichenketten. Wird eine Prozedur gestartet, wird sie vom Maestro II-Kernel als Task abgearbeitet. Maestro II-Prozeduren können vom Kommandofenster, von einem Menüpunkt oder von einer übergeordneten Task gestartet werden. Tasks können Prozeduren als Unterprogramme aufrufen, wobei sie die Möglichkeit haben, auf deren Fertigstellung zu warten (CALL '<prozedurname>') oder parallel weiterzuarbeiten (START '<prozedurname>').