Berufserfahrung:
seit 02/1988 bei Herstellern von industrieller Messtechnik:
Portierung, Pflege und Weiterentwicklung eines großen Softwarepakets von VMS nach AIX, Solaris, Linux und Windows
Konzeption und Entwicklung von Portierwerkzeugen, um die Portiersicherheit- u. Geschwindigkeit zu erhöhen, da die Hauptentwicklung über Jahre auf VMS weitergeführt wurde
Konzeption und Entwicklung von Werkzeugen zur Steigerung und Sicherung der Softwarequalität
Konzeption und Entwicklung von Kommunikations- und Datenschnittstellen zu anderen Softwareprodukten
Konzeption und Entwicklung eines Codegenerators von Fortran nach C++
Anpassung eines Softwarepaketes an .NET
Durchführung von System- u. Einzeltests, Erstellen von Testfällen
internationale Kundenbetreuung
Softwarereleases erstellen und verausgaben
Verantwortung für im Feld befindliche Software
Einige Arbeiten im Detail:
Erstportierung von VMS-Quindos auf eine IBM 6150 unter Betriebssystem AIX auf Wunsch des
Endkunden IBM-Mainz
- Entwicklung von mehreren zusammen arbeitenden Shell-Scripten (bsh u. bash) um den manuellen
Änderungen auf der Unix-Seite und die kontinuierlichen Weiterentwicklung auf VMS
synchronisieren zu können. Die Anzahl der mehr oder minder großen Shell-Scripten ist über die
Jahre auf einige hundert gewachsen, bis hin zu einem Perl-Script, welches versuchte, aus von
Quindos nicht mehr lesbaren Datenbanken die Anwendungsprogramme zu extrahieren.
- Entwicklung eines, in der Endausbaustufe ca. 1000 Zeilen langen awk Scripts, welches
Änderungen des VMS-Fortran Codes, soweit man sie von der Syntax her ableiten konnte,
automatisch ausführte. - Wechsel von der RT-6150 zur RS6000
- Objektorientierter Entwurf und Implementierung eines Fortran-Source Code Analsye Porgrammes
in C++. Durch unterschiedliche Initialisierungsstratgien von VMS und Unix traten unter AIX
gehäuft Fehler auf, welche unter VMS nur sporadisch auftraten. Des weiteren verursachten
fehlerhafte Parameterübergaben (Littel-Endien vs. Big-Endian Systeme), welche unter VMS sehr
selten zu Fehlern führten, unter AIX sehr oft erheblichen Fehler bzw. Abstürze. In den
Kernfunktionen parste das Analyseprogramm den gesamten Fortran-Code und erstelle dabei eine
kleine Datenbank, in welcher jede Funktion oder Subroutien mit Anzahl, Typ, Länge und
Initialisierungsstatus der Übergabeparameter vermerkt war.
Im zweiten Schritt wurde dann von dem Analyseprogramm anhand der vorhandenen Daten
( Prototyping ) alle Aufrufe auf Ihre Korrektheit geprüft. Des weiteren versuchte das Tool den
Initialisierungsstatus jeder einzelnen Variablen festzustellen. Die so ermittelten tatsächlichen Fehler
oder manchmal nur potenzielle Fehler wurden sofort an die unter VMS entwickelten Kollegen
weitergeleitet. Zum einen um dort potentielle Fehler zu verhindern, zum anderen um die Anzahl der
manuellen Änderungen zwischen beiden Source Ständen möglichst gering zu halten.
- Portierung der graphischen Oberfläche unter X11. Durch das Fehlen von AST-Routinen gestaltete
das Einbinden der seriellen Schnittstelle schwierig und etwas umfangreich. Zum einen konnten über
diese spontane Eingaben erfolgen, zum anderen musste auf Fehlermeldungen der Messmaschine
sofort reagiert werden.
- Portierung von Quindos nach Solaris auf Wunsch der Endkunden BMW Rolls-Royce Oberursel
und John Deere USA.
-Auf Wusch von Brown&Sharpe USA Portierung auf PC-Hardware. Nach einem missglückten
Versuch unter AIX-368, Wechsel zu SCO-Unix.
- Umsetzung des C Unterbaues der Unix-Quindos Versionen nach C++.
- Objektorientierter Entwurf und Implementierung eines C++ Programms, welchen es des Unix-
Quindos Versionen ermöglichte VMS-Quindos Datenbanken einzulesen. Hier musste zum einen
wegen der Big-Endian - Littel-Endian Problematik, ausgehend von den Bayer Bäumen (B-Tree) die
Adressen der Records bzw. von Folgerecords richtig gesetzt werden und zum andern die speziellen
Daten des Records behandelt werden. Hierbei wiederum musste auf unterschiedliche String
Implementierung und das unter VMS verwendete, nicht IEEE-konforme D-Format für REAL*8
bzw. Double Rücksicht genommen werden.
- Portierung und Weiterentwicklung bzw. Neuentwicklung von Treibern von anderen 3DMessmaschinen
(vorrangig Brown&Sharpe u. Dea)
- Unterstützung der Bildverarbeitungsabteilung bei der Entwicklung des Messmikroskops Libra.
- Auf Wunsch vieler Endkunden Portierung nach MS-Windows:
Objektorientierter Entwurf und Implementierung eines Fortran nach C++ Übersetzers in C++. Da
die unter MS-Windows verfügbaren Fortran-Complier nicht den Anforderung des Quindos-Source
Codes gerecht wurden und die Ausgaben der verfügbaren Fortran nach C Übersetzer katastrophal
war, wurde dieses Projekt gestartet. Wichtigste Rahmenbedingung: Die Software durfte ihr
Verhalten nach außen absolut nicht verändern. Weder die Messmaschine durfte um einen
Mikrometer anders verfahren, noch die diversen Auswertung sich auch nur in letzten
Nachkommastellen unterscheiden.
Auch musste die bei den Endkunden vorhanden Quindos Programmbibliotheken fehlerfrei laufen.
In der Folge hat der Übersetzer den Fortran Code eingelesen und unter anderem:
- Fortran Statements nach C++ umgewandelt (was z.B. bei FORMAT nicht ganz trivial ist)
- Includes hinzugefügt oder überflüssige gelöscht
- Übergabeparameter sortiert (RW,WO,RO) , hinzugefügt oder gelöscht
- Subroutinen in Funktionen umgewandelt (wo es Sinn machte)
- Variablendeklarationen zusammengefügt und sortiert
- Mehrdimensionale Arrays C++ konform umgewandelt
- Klassen eingefügt (auch als Übergabeparameter)
- Einheitliches Einrücken von Schleifen- oder Bedingungskörpern
- GOTOs eliminiert (wo es möglich war)
- ?ELSE IF? Kombinationen in ?switch? umgewandelt (wo es möglich und sinnvoll war)
- ?.
und zu guter Letzt aus über 2 Mio. Zeilen Fortran-Code 2 Mio. Zeilen gut lesbaren und
weiterverwendbaren C++ Code erzeugt. Welcher nun auch, durch die eingefügten Klassen, etwas
von der Objektorientierung profitieren konnte. Insbesondere hat sich das halten der sensiblen
Datenbank-Pointer als protected Members positiv auf die Stabilität ausgewirkt.
Evaluierung verschiedener GUIs für Windows. Einarbeitung in QT.
- Linux Version als ?Abfallprodukt? der MS-Windows Portierung
- Objektorientierter Entwurf und Implementierung eines C++ Programms, welches aus der Quindos
Sprachdatenbank die Helptexte der verschieden Quindos-Kommandos auslesen konnte und diese in
einen mit vielen Links gestalten HTML-File umwandelte. Zum einen war dadurch die Suche in den
Helptexten wesentlich einfacher und komfortabler, zum anderen wurde der Programmierfluss der
Anwender weniger gestört.
- Da die MS-Windows Quindos Version etwas hinter die Performance von dem SCO-Unix Quindos
gefallen war, habe ich umfangreiche Perfomancetest und eine entsprechen Performanceanalyse mit
dem Profiling Tool gprof durchgeführt. Als interessanteste Kandidaten für eine Optimierung stellen
sich die Interpreter-Loop und die Datenbankzugriffe heraus. Durch Umarbeitung von Teilen dieser
beiden Kandidaten war bereits ein erheblicher Performancezuwachs zu vermerken. Eine weiterer
wurde durch selektives Inlining von Kleinfunktionen erzeugt. Perfomancebremsen wie das
Aufrufen pow() für eine einfache Quadratur wurden in den Fortran nach C++ Übersetzer
eingearbeitet, welche diese nach dem Neuübersetzen des Code eliminierte Für einzelne
Kommandos war nach diesen Optimierungen eine Performanceverbesserung von bis zu 250% zu
verzeichnen. Die allgemeine Performanceverbesserung betrug ca. 45 %. Auch in der graphischen
Oberfläche war durch Optimierungmaßnamen eine wesentlich flüssigeres Arbeiten, besonders bei
der Darstellung großer Punktmengen erreicht worden.
Konzeption einer Portierung für eine Schneidplottersoftware von Windows auf MacOS mit QT.
1982-88 Fachhochschule Gießen/Friedberg
Studiengang: Elektrische Nachrichtentechnik mit Nebenfach Informatik
Diplomarbeit bei Ernst Leitz Wetzlar AG im Bereich Bildverarbeitung,
Entwicklung und Implementierung eines Code Generators
Habe lange mit einer eigenentwickelten Datenbank gearbeitet. Da die Datenbank direkt in C++ angesprochenwurde, sind meine Kenntisse in Datenbankagfragesprachen beschränkt, dafür sind aber um so mehr Kenntisse über das Innenleben einer Datenbank vorhanden. Ein einfaches SQL Statement sollte mir aber keine Probleme bereiten.
PowerVC, PowerVM, HMC, SAP-HANA
Industrielle Messtechnik, Logistik, Hardware Hersteller
Berufserfahrung:
seit 02/1988 bei Herstellern von industrieller Messtechnik:
Portierung, Pflege und Weiterentwicklung eines großen Softwarepakets von VMS nach AIX, Solaris, Linux und Windows
Konzeption und Entwicklung von Portierwerkzeugen, um die Portiersicherheit- u. Geschwindigkeit zu erhöhen, da die Hauptentwicklung über Jahre auf VMS weitergeführt wurde
Konzeption und Entwicklung von Werkzeugen zur Steigerung und Sicherung der Softwarequalität
Konzeption und Entwicklung von Kommunikations- und Datenschnittstellen zu anderen Softwareprodukten
Konzeption und Entwicklung eines Codegenerators von Fortran nach C++
Anpassung eines Softwarepaketes an .NET
Durchführung von System- u. Einzeltests, Erstellen von Testfällen
internationale Kundenbetreuung
Softwarereleases erstellen und verausgaben
Verantwortung für im Feld befindliche Software
Einige Arbeiten im Detail:
Erstportierung von VMS-Quindos auf eine IBM 6150 unter Betriebssystem AIX auf Wunsch des
Endkunden IBM-Mainz
- Entwicklung von mehreren zusammen arbeitenden Shell-Scripten (bsh u. bash) um den manuellen
Änderungen auf der Unix-Seite und die kontinuierlichen Weiterentwicklung auf VMS
synchronisieren zu können. Die Anzahl der mehr oder minder großen Shell-Scripten ist über die
Jahre auf einige hundert gewachsen, bis hin zu einem Perl-Script, welches versuchte, aus von
Quindos nicht mehr lesbaren Datenbanken die Anwendungsprogramme zu extrahieren.
- Entwicklung eines, in der Endausbaustufe ca. 1000 Zeilen langen awk Scripts, welches
Änderungen des VMS-Fortran Codes, soweit man sie von der Syntax her ableiten konnte,
automatisch ausführte. - Wechsel von der RT-6150 zur RS6000
- Objektorientierter Entwurf und Implementierung eines Fortran-Source Code Analsye Porgrammes
in C++. Durch unterschiedliche Initialisierungsstratgien von VMS und Unix traten unter AIX
gehäuft Fehler auf, welche unter VMS nur sporadisch auftraten. Des weiteren verursachten
fehlerhafte Parameterübergaben (Littel-Endien vs. Big-Endian Systeme), welche unter VMS sehr
selten zu Fehlern führten, unter AIX sehr oft erheblichen Fehler bzw. Abstürze. In den
Kernfunktionen parste das Analyseprogramm den gesamten Fortran-Code und erstelle dabei eine
kleine Datenbank, in welcher jede Funktion oder Subroutien mit Anzahl, Typ, Länge und
Initialisierungsstatus der Übergabeparameter vermerkt war.
Im zweiten Schritt wurde dann von dem Analyseprogramm anhand der vorhandenen Daten
( Prototyping ) alle Aufrufe auf Ihre Korrektheit geprüft. Des weiteren versuchte das Tool den
Initialisierungsstatus jeder einzelnen Variablen festzustellen. Die so ermittelten tatsächlichen Fehler
oder manchmal nur potenzielle Fehler wurden sofort an die unter VMS entwickelten Kollegen
weitergeleitet. Zum einen um dort potentielle Fehler zu verhindern, zum anderen um die Anzahl der
manuellen Änderungen zwischen beiden Source Ständen möglichst gering zu halten.
- Portierung der graphischen Oberfläche unter X11. Durch das Fehlen von AST-Routinen gestaltete
das Einbinden der seriellen Schnittstelle schwierig und etwas umfangreich. Zum einen konnten über
diese spontane Eingaben erfolgen, zum anderen musste auf Fehlermeldungen der Messmaschine
sofort reagiert werden.
- Portierung von Quindos nach Solaris auf Wunsch der Endkunden BMW Rolls-Royce Oberursel
und John Deere USA.
-Auf Wusch von Brown&Sharpe USA Portierung auf PC-Hardware. Nach einem missglückten
Versuch unter AIX-368, Wechsel zu SCO-Unix.
- Umsetzung des C Unterbaues der Unix-Quindos Versionen nach C++.
- Objektorientierter Entwurf und Implementierung eines C++ Programms, welchen es des Unix-
Quindos Versionen ermöglichte VMS-Quindos Datenbanken einzulesen. Hier musste zum einen
wegen der Big-Endian - Littel-Endian Problematik, ausgehend von den Bayer Bäumen (B-Tree) die
Adressen der Records bzw. von Folgerecords richtig gesetzt werden und zum andern die speziellen
Daten des Records behandelt werden. Hierbei wiederum musste auf unterschiedliche String
Implementierung und das unter VMS verwendete, nicht IEEE-konforme D-Format für REAL*8
bzw. Double Rücksicht genommen werden.
- Portierung und Weiterentwicklung bzw. Neuentwicklung von Treibern von anderen 3DMessmaschinen
(vorrangig Brown&Sharpe u. Dea)
- Unterstützung der Bildverarbeitungsabteilung bei der Entwicklung des Messmikroskops Libra.
- Auf Wunsch vieler Endkunden Portierung nach MS-Windows:
Objektorientierter Entwurf und Implementierung eines Fortran nach C++ Übersetzers in C++. Da
die unter MS-Windows verfügbaren Fortran-Complier nicht den Anforderung des Quindos-Source
Codes gerecht wurden und die Ausgaben der verfügbaren Fortran nach C Übersetzer katastrophal
war, wurde dieses Projekt gestartet. Wichtigste Rahmenbedingung: Die Software durfte ihr
Verhalten nach außen absolut nicht verändern. Weder die Messmaschine durfte um einen
Mikrometer anders verfahren, noch die diversen Auswertung sich auch nur in letzten
Nachkommastellen unterscheiden.
Auch musste die bei den Endkunden vorhanden Quindos Programmbibliotheken fehlerfrei laufen.
In der Folge hat der Übersetzer den Fortran Code eingelesen und unter anderem:
- Fortran Statements nach C++ umgewandelt (was z.B. bei FORMAT nicht ganz trivial ist)
- Includes hinzugefügt oder überflüssige gelöscht
- Übergabeparameter sortiert (RW,WO,RO) , hinzugefügt oder gelöscht
- Subroutinen in Funktionen umgewandelt (wo es Sinn machte)
- Variablendeklarationen zusammengefügt und sortiert
- Mehrdimensionale Arrays C++ konform umgewandelt
- Klassen eingefügt (auch als Übergabeparameter)
- Einheitliches Einrücken von Schleifen- oder Bedingungskörpern
- GOTOs eliminiert (wo es möglich war)
- ?ELSE IF? Kombinationen in ?switch? umgewandelt (wo es möglich und sinnvoll war)
- ?.
und zu guter Letzt aus über 2 Mio. Zeilen Fortran-Code 2 Mio. Zeilen gut lesbaren und
weiterverwendbaren C++ Code erzeugt. Welcher nun auch, durch die eingefügten Klassen, etwas
von der Objektorientierung profitieren konnte. Insbesondere hat sich das halten der sensiblen
Datenbank-Pointer als protected Members positiv auf die Stabilität ausgewirkt.
Evaluierung verschiedener GUIs für Windows. Einarbeitung in QT.
- Linux Version als ?Abfallprodukt? der MS-Windows Portierung
- Objektorientierter Entwurf und Implementierung eines C++ Programms, welches aus der Quindos
Sprachdatenbank die Helptexte der verschieden Quindos-Kommandos auslesen konnte und diese in
einen mit vielen Links gestalten HTML-File umwandelte. Zum einen war dadurch die Suche in den
Helptexten wesentlich einfacher und komfortabler, zum anderen wurde der Programmierfluss der
Anwender weniger gestört.
- Da die MS-Windows Quindos Version etwas hinter die Performance von dem SCO-Unix Quindos
gefallen war, habe ich umfangreiche Perfomancetest und eine entsprechen Performanceanalyse mit
dem Profiling Tool gprof durchgeführt. Als interessanteste Kandidaten für eine Optimierung stellen
sich die Interpreter-Loop und die Datenbankzugriffe heraus. Durch Umarbeitung von Teilen dieser
beiden Kandidaten war bereits ein erheblicher Performancezuwachs zu vermerken. Eine weiterer
wurde durch selektives Inlining von Kleinfunktionen erzeugt. Perfomancebremsen wie das
Aufrufen pow() für eine einfache Quadratur wurden in den Fortran nach C++ Übersetzer
eingearbeitet, welche diese nach dem Neuübersetzen des Code eliminierte Für einzelne
Kommandos war nach diesen Optimierungen eine Performanceverbesserung von bis zu 250% zu
verzeichnen. Die allgemeine Performanceverbesserung betrug ca. 45 %. Auch in der graphischen
Oberfläche war durch Optimierungmaßnamen eine wesentlich flüssigeres Arbeiten, besonders bei
der Darstellung großer Punktmengen erreicht worden.
Konzeption einer Portierung für eine Schneidplottersoftware von Windows auf MacOS mit QT.
1982-88 Fachhochschule Gießen/Friedberg
Studiengang: Elektrische Nachrichtentechnik mit Nebenfach Informatik
Diplomarbeit bei Ernst Leitz Wetzlar AG im Bereich Bildverarbeitung,
Entwicklung und Implementierung eines Code Generators
Habe lange mit einer eigenentwickelten Datenbank gearbeitet. Da die Datenbank direkt in C++ angesprochenwurde, sind meine Kenntisse in Datenbankagfragesprachen beschränkt, dafür sind aber um so mehr Kenntisse über das Innenleben einer Datenbank vorhanden. Ein einfaches SQL Statement sollte mir aber keine Probleme bereiten.
PowerVC, PowerVM, HMC, SAP-HANA
Industrielle Messtechnik, Logistik, Hardware Hersteller