Schrittweise Ersetzung eines existierenden ?Micro-Service? (Monolith) durch neue, modernere Komponenten und dabei Zerschlagung in kleinere Micro-Services oder Lambdas welche dann Teilaufgaben übernehmen. Daher in der neuen Version besser skalierbar und auch kostengünstiger zu betreiben (weniger Instanzen und manches nur noch Lambdas (serverless)). Die ganzen Services drehen sich um das Login von Kunden und der Verwaltung der dafür notwendigen Daten, wie eMail, Password, Telefonnummer, Adresse usw. Dazu gehören dann auch die Eingabe und Änderungsmöglichkeiten via Frontend für die Daten. Der alte Service ist in Java implementiert und wurde in der neuen Version in Kotlin, Scala, Typescript und Python umgesetzt, je nach speziellem Aufgabengebiet. Das CI/CD des alten Service wurde von Jenkins und AWS Cloud Formation übernommen. In den neuen Services übernehmen das Github Actions mit AWS CDK. Während der ganzen Umstellung mussten aber noch notwendige Änderungen und Wartungen an dem alten Service vorgenommen werden.
Dazu gehören folgende, als Micro-Service implementierte, Haupt-Funktionalitäten:
Dazu wurden noch diverse notwendigen Infrastruktur-Funktionalitäten benötigt.
Für eine mit XText erstellte DSL (Domain-specific language) konnte bisher nur Eclipse als Entwicklungsumgebung benutzt werden um in dieser neuen Sprache zu arbeiten. Da Xtext schon seit längerem das Language server protocol unterstützt, wurde dies nun benutzt, um die Sprache in Visual Studio Code als Extension und in IDEA Intellij als Plugin einbindbar zu machen, damit dann auch darin unter Windows und unixoiden Betriebssystemen komfortabel in dieser Sprache gearbeitet werden kann. Mit Funktionalitäten wie z.B. Auto-Vervollständigung, Refactoring, zur Deklaration springen, zu Verwendungen springen, Code-Generierung usw.
Hierzu gehört die Erstellung der Extension und des Plugins sowie die Erstellung von End-To-End-Tests, welche auch die Funktionen innerhalb der Entwicklungsumgebungen testen.
Mitarbeit beim Sitzplatzmanagement innerhalb der Erneuerung der
Vertriebsplattform mittels agiler Entwicklungsmethoden.
Im Teilprojekt Datenversorgung
- Bereitstellung der Wagenreihungen von Zügen für alle
Abschnitte einer Zugfahrt
- Zuordnung der Wagentypen mit den möglichen Sitzplätzen und
sonstigen Reservierungsmöglichkeiten zu den Wagen eines Zuges
- Bereitstellung der Daten in RabbitMQ Message-Queues mit
MongoDB Persistierung für die Sitzplatz- und Inventar-Reservierung
- Protokollierung der Änderungen, bei Ausfällen oder Fahrplanänderungen.
- Implementierung als Micro-Service, realisiert durch
Docker Container mit Wildfly-Swarm, später Thorntail
- Deployment der Docker Container in OpenShift in einer
AWS Virtual Private Cloud Umgebung, später EKS
Im Teilprojekt Wagentypen
- Bereitstellung eines Micro-Service zur CRUD-Persistierung
von in einem GUI erfassten Wagentypen
- Kommunikation mit dem GUI über REST-Schnittstelle
- Wagentypen wurden dann als JSON-Messages über Message-Queues
den Abnehmern zur Verfügung gestellt.
- Persistierung in einer MongoDB
- Migration nach Amazon DocumentDB
- Implementierung als Micro-Service, realisiert durch
Docker Container mit Wildfly-Swarm, später Thorntail, dann Spring-Boot
- Deployment der Docker Container in OpenShift in einer
AWS Virtual Private Cloud Umgebung, später EKS
Im Teilprojekt Reservierung
- Implementierung neuer fachlicher Anforderungen
- Umstellung existierender Micro-Services von MongoDB auf
JPA mit Hibernate und darunterliegender PostgreSQL/Amazon RDS
und von Thorntail auf Spring-Boot
Im Teilprojekt Umplatzierung
- Bereitstellung von Micro-Services zur Benachrichtigung
von Kunden mit Reservierungen, wenn sich an Ihrer Reservierung
etwas ändert.
- Ermittelung von Ersatzzügen, Zugausfällen, Wagentyp-Änderungen,
Wagenreihungs-Änderungen.
- Benachrichtigung über die neuen Sitzplätze einer Reservierung,
wenn Umplatzierung möglich.
- Persistierung mittels JPA mit Hibernate und
darunterliegender PostgreSQL/Amazon RDS
- Asynchrone Kommunikation mit anderen Micro-Services
über ActiveMQ/AmazonMQ
- Implementierung als Micro-Services, realisiert durch
Docker Container mit Thorntail, dann Migration nach Spring-Boot
- Deployment der Docker Container in OpenShift in einer
AWS Virtual Private Cloud Umgebung, später EKS
Während der ganzen Projektlaufzeit.
- Kontinuierliche Updates der Dependencies in Maven-Build-Files
und Dockerfiles wegen Security-Anforderungen (CVE‘s) und
neuer Features. Dabei waren öfter umfangreiche Änderungen
durchzuführen, da viele Bibliotheken leider nicht
abwärtskompatibel waren und deshalb sehr viel umgestellt
werden musste. Die Updates wurden erst manuell gemacht
und später wurde dafür der Renovate Bot eingesetzt,
welcher die Updates dann automatisiert hat.
- Kontinuierliche Anpassungen an den Consumer driven contracts (CDC‘s)
welche automatisiert geprüft werden.
- Kontinuierliche Anpassungen an Findings und Code-Abdeckung in SonarQube.
- Migration der Cucumber Tests von 1.* bis 6.8.*
mit sämtlichen Zwischenversionen.
- Umstellung von Docker CentOS-Base-Images auf
Alpine-Base-Images um die Deployments zu verschlanken
und sicherer zu machen.
- Umstellung von Java 1.8 auf Java11.
- Umstellung von JUnit 4 auf JUnit 5 und anschliessender
Entfernung von JUnit 4.
- Pflege und Erweiterung der CI/CD Pipelines mit Jenkins.
- Erstellung von Docker-Containern und deren Deployment
in Openshift, Amazon EKS, Amazon ECS.
- Durchführung der ganzen Test-Pyramide, angefangen
mit JUnit-Tests, lokalen Service-Integrationstests,
lokalen und nicht lokalen Gesamt-Integrationstest
sowie Performance-Tests.
- Generierung von Maven Build Files aus Templates
mittels XSLT und Entity-Auflösung um die Build
Files übersichtlicher zu gestalten und einfacher
Teile hinzuzufügen oder entfernen zu können.
- Ständig den Automatisierungsgrad und die Code-Qualität erhöhen.
- Wartung, Fehlersuche und Monitoring mittels Prometheus,
Grafana, Instana, Kibana, Graylog.
- Erstellung und Pflege eigener Docker-Container zum Testen
inklusive SSL-Verschlüsselung und Konfiguration z.B. für
ActiveMQ, PostgreSQL, WireMock, RabbitMQ, nginx.
Es wurde eine Software erstellt, welche eingehende XML-Messages aus einer MessageQueue performant entgegen nimmt, validiert, konvertiert und in eine Datenbank persistiert.
Dazu wurde eine DSL erstellt, welche die eingehenden Daten modellieren kann und zusätzlich datentypbasierte Konvertierungen automatisiert ausführen konnte. Weiterhin wurde die DSL mit Validierungen angereichert. Diese Konvertierungen und Validierungen sind auf Typebene als Fallback anzugeben oder sie können an den modellierten Daten "überladen" werden. Dafür unterstützt die Datenmodellierung Vererbung.
Realisiert wurde das ganze mit xText für die DSL-Erstellung. Daraus wurde dann mit Generatoren Java-Code erstellt, welcher dann unter Wildfly mittels Message-Driven-Beans hochperformant und vor allem parallel und damit skalierbar die XML-Messages validiert und konvertiert hat. Die Messages werden danach im CSV-Format auf der Platte zwischengelagert, wo sie dann asynchron von einer JEE7 Batch Processing Anwendung zusammengefasst werden und in die Datenbank persistiert werden.
Der Durchsatz konnte so gegenüber der Altlösung erheblich gesteigert werden. Und vor allem könnte man später, wenn nötig, den Wildfly clustern um den Durchsatz weiter zu erhöhen.
Um die ganze Infrastruktur, welche zur Entwicklung benötigt wird, auch anderen Entwicklern, welche nicht so tief in der Materie stecken, zur Verfügung zu stellen, wurden mittels VirtualBox virtuelle Maschinen mit CentOS und Docker Containern und eine mit IPFire aufgesetzt. In IPFire lief dann ein Proxy zum cachen von Entwicklungs-Artefakten. In den Docker Containern liefen dann ein Nexus Artefakt Repository zur Verwaltung der Maven und der Eclipse-Plugin Artefakten und ein Wildfly zur Implementierung der Message-Driven-Beans und der Batch-Processing-Anwendung.
- Performanceoptimierung von DataStage-Jobs, da sich die
Laufzeiten durch neue Datenlieferungen aus weiteren Systemen
teilweise signifikant erhöht haben. Hier wurden durch
Optimierungen der SQL-Queries oder anderer Massnahmen in
DB2 und DataStage beträchtliche Beschleunigungen erzielt.
Hier wurden z.B. neue Indizes in DB2 angelegt, Lookups in
Joins gewandelt, SQL-Joins in DataStage verlagert und umgekehrt,
Einsatz von OLAP-Funktionen (Analytic Functions) um den I/O zu
reduzieren und Last von den Servern zu nehmen.
Infrastruktur : Windows XP, DataStage 7.5.3 PX, DB/2 auf AIX, AIX, SQL,Visual Explain, Speedgain
Ergebnis : AbgeschlossenFehlerbehandlung über Message-Queues. Es können von Host-,
DataStage- und Java-Anwendungen Fehlermeldungen in
Message-Queues eingestellt werden, welche von DataStage-Jobs
transaktionssicher in die Oracle Datenbank gespeichert werden.
Erstellung und Pflege von Custom Build Operatoren für DataStage
in C++ und Java. Wave-Verarbeitung von Messages aus
Message-Queues. Diese Messages bestehen aus mehreren Paketen,
welche mittels eines in C++ implementierten Custom Build
Operator zerteilt werden und innerhalb einer Wave verarbeitet
werden. Einbindung eines Java-Build-Operator um die
Möglichkeiten von log4j zu nutzen. Synchronisation von Requests
und Responses von WebServices um aufgetretene Fehler, durch
Parsen der XML-Soap-Responses mittels Oracle PL/SQL, in die
zentrale Fehlerbehandlung einzustellen. Hierbei mussten die
Unzulänglichkeiten von DataStage und Oracle umgangen werden.
Wie z.B. Behandlung von Null-Zeichen in Strings, Varchar mit
mehr als 4000 Zeichen (auch 4000 Umlaute evtl.) und Schreiben
und Lesen von CLOB's mit DataStage und PL/SQL. Implementierung
eines Servlets mit dem es möglich ist, die Requests und
Responses zu suchen und die darin enthaltenen CLOBS lesbar
darzustellen, da diese Hexadezimal kodiert in den Tabellen
vorliegen. Hiermit ist dann eine bessere Fehlerdiagnose möglich.
Nutzung von Form Based Authentication, DB Connection Pools.
Geschwindigkeitsoptimierung durch Umstellung der Jobs auf
Behandlung von komprimierten BLOB's anstatt CLOB's. Das ist nun
etwa 12 mal schneller, da die BLOB-Daten jetzt In-Row gespeichert
werden können anstatt in extra LOB-Tabellen.
Infrastruktur : Windows XP, C++, Java 1.5, Solaris, AIX, IBM Information ServerWebSphere DataStage 8.0.1, MQ Series, Oracle 10g, XML, PL/SQL,
Tomcat 6.0.18, Eclipse 3.4 Ganymede, WebSphere Application
Server 6.0, JAAS
Ergebnis : Erste Implementierungsphase abgeschlossen.DataStage-Jobs. Überprüfung der korrekten Umsetzung der
fachlichen Vorgaben (Corda-Regeln) im Code. Zusammenstellung
aller betroffenen Felder in Defects.
Infrastruktur : Windows XP, DataStage 7.5Frameworks von ARIS. Diese Dialoge dienen zum Aufruf der
Server-Funktionalitäten der modellgestützten Transformation von
bestimmten Modellen in andere Modelle, z.B. EPK nach BPEL
- Erstellung einer graphisch interaktiven Merge Komponente
mittels eines Swing-Frameworks von ARIS. Diese dient zum
Anzeigen, Akzeptieren oder Verwerfen von Änderungen zwischen
2 Versionen eines Modelles.
Infrastruktur : Windows XP, Java 1.5 (Enum,Generics,ForEach), ARIS Platform 7.02und 7.1 (ARIS Business Architect, ARIS SOA Architect, ARIS UML
Designer, ARIS API), Perforce 2007.2, IntelliJ IDEA 5.0 und 6.0
Ergebnis : AbgeschlossenApplikation. Fehlersuche und Fehlerbehebung,
Prozessablaufverbesserungen und Konfigurationsmanagement.
Deployment von EAR's in die Integrationstestumgebungen.
- Generierung von Datenbankschema aus UML Modellen mittels OAW.
MDA Model Driven Architecture
- Einführung von Constraints in die bestehende Datenbank.
Foreign Key-, Not Null-, XOR- und Unique-Constraints.
Absicherung der Integrität der Daten.
- Anonymisierung von Produktionsdatenbank-Exporten mittels
Oracle Analytic Funktions.
Infrastruktur : Windows XP, Oracle 9 und 10, SQLDeveloper, TOAD, Java 1.4, SQL,Enterprise Architect 6.1, Rational Application Developer RAD,
OpenArchitectureWare OAW, JUnit, DBUnit, FitNesse, Selenium,
Ant, CruiseControl, Lotus Notes, SubVersion, WebSphere 6.0, LDAP,
JXplorer
Ergebnis : An interne Mitarbeiter zur Weiterführung übergebenDiensten gegenüber den Lizenzgebern.
- Importieren von Werbeblock-Prognosedaten im XML-Format ins
DataWarehouse und Aufbereitung der Daten als Dimensions- und
Fakten-Tabellen.
Infrastruktur : Windows XP, DataStage 7.1r1 Server, Informix auf Solaris,Solaris, SQL, ERWin, ClearCase
Ergebnis : An interne Mitarbeiter zur Fertigstellung übergebenExports im GDV-Format zur Belieferung des Vertriebs.
- Performanceoptimierung der SQL-Queries mittels Explain Plan
und Reduzierung der Joblaufzeiten insgesamt.
Infrastruktur : Windows XP, DataStage 7.5.1A PX, DB/2 auf z/OS, AIX, SQL,Visual Explain
Ergebnis : Abgeschlossen und in erfolgreichem Betriebdie Anforderungen an Basel II werden für das Rating von Kunden
verschiedene DataStage-Jobs implementiert. Diese Jobs ermitteln
die für das Rating relevanten Daten und bereiten sie für das
Frontend auf.
Infrastruktur : Windows XP, DataStage 7.1 PX, Clearcase, Oracle 9i,Sun Solaris, PL/SQL, Toad, Rational Rose
Ergebnis : Abgeschlossen und in erfolgreichem Betriebeinheitliche Notrufnummer 116 116 zum Sperren von Medien wie zum
Beispiel Kredit- und EC-Karten, Handys, digitale Signaturen,
Krankenkassenkarten, Mitarbeiter-Ausweise, Kundenkarten oder
sensible Online-Berechtigungen des Internets ein. Für den
Verbraucher bedeutet dieses weltweit neue Sicherheitssystem
einen deutlich besseren Schutz in Notfällen.
- Entwicklung von WebServices zur Kommunikation mit der
Telefonvermittlung und den Callcentern
- Entwicklung von Entity Beans für die Datenbanktabellen in
Oracle
- Erstellung eines Build Prozesses mittels Ant mit der
Möglichkeit zu einem automatisierten Daily Build
Infrastruktur : Windows XP, Java 1.4.2_06, Java 1.5.0, JBOSS, WebServices,Oracle, PVCS-Tracker, CVS, Scarab, Eclipse, Ant, XDoclet,
SLES9, T-Com IN, CTI
Ergebnis : Abgeschlossenfestangestellte Mitarbeiter zur Bewirtschaftung von
DataWareHouse-Lösungen
- Umstellung dieser Templates von DB2 auf Oracle
- Ausarbeitung eigener Templates und Lösungs- und
Integrationsansätze für den Kunden
Infrastruktur : Windows XP, Ascential DataStage 7.5 PX; Oracle 9i- Client-Server-Kommunikations-Komponente über Sockets oder
über GSM-Netze mittels des gleichen Interfaces.
- Grafisches Datenbankfilterungstool zum Filtern einer Menge
solange bis nur noch ein Datensatz übrigbleibt. Die
Reihenfolge der Filterauswahl ist dabei egal.
Der Benutzer wird immer geführt. Wenn durch vorhergehende
Filterungen für einen Filter nur noch eine
Auswahlmöglichkeit besteht, wird diese als Filter gewählt
und es geht weiter zum nächsten noch nicht bestimmten Ziel.
Man ist also mit sehr wenigen Angaben am Ziel.
- Errichtung eines VPN über Vodafone Corporate Data Access
zur sicheren Kommunikation des Servers mit den
GPRS-Endgeräten.
- Einwahlprogramm für DFÜ-Netzwerk inklusive Initialisierung
des Modems über serielle Schnittstelle per AT-Kommandos
Infrastruktur : Borland-C++-Builder 5.0, Windows 2000, GSM-Modem, PC104-PC,Linux, IPCOP, Borland-Delphi 6.0; SUSE Linux 9.1
Ergebnis : Abgeschlossen.IP-Vergabe nun sicher von außen erreichbar ist und die
Steuerung des Heimnetzwerkes und aller daran angeschlossenen
Infrastruktur erlaubt. Zusätzlich kann darüber jetzt jeder
beliebige Port, verschlüsselt getunnelt werden.
Infrastruktur : Linux, SquidInformationen des Konzerns, was Kunden oder Verträge
betrifft, um Online-Systeme besser mit Daten versorgen zu
können. Von mir dabei erfüllte Aufgaben:
- Beteiligung an der Planung und Erstellung des ERM
- Beratung in vielerlei Hinsicht z.B. Design, Performance,
Normalisierung, Server-Auswahl, Datenbankauswahl,
Auswahl des ETL-Tools, Auswahl des Fehlertracking-Tools
- Installation eines Linux-Servers auf dem die Fehlertracking-
Software Bugzilla mittels eines Apache Webservers, Perl und
MySQL in Betrieb genommen wurde. Dessen Frontend wurde von
mir dann noch den Vorstellungen der Projektleitung
entsprechend customized. Eine automatisierte Sicherung
der Daten wurde dann per Cron-Job täglich durchgeführt.
Hierzu gab ich dann entsprechende Einweisungen für
Administratoren, Moderatoren, Tester und Entwickler.
- Erstellung eines Java-Tools zum automatisierten Vergleich
kompletter Datenbanktabellen zwischen Oracle und DB2.
- Erstellung einer Web-Anwendung, welche es ermöglicht, den
Inhalt der Datenbank in einem beliebigen Browser für
Testfälle anzuzeigen und somit manuell mit den Ausgaben
des jeweiligen Spartensystems vergleichen zu können.
Dies geschah durch Erzeugen von XML aus den
Datenbank-Inhalten und anschließendemszlig;endem Verarbeiten mit XSL
um das Ergebnis dann per Servlet in HTML im Browser
anzuzeigen. Hierbei wurden Schlüsselumsetzungen direkt
dem erzeugten XML beigemengt um das XSL zu vereinfachen.
- Belieferung eines Online-Systems mittels dem ETL-Tool
DataStage durch Erzeugung von Export-Dateien. Diese werden
per OpenFTP, gesteuert über Semaphor-Dateien vom Online
System täglich abgeholt und dann darin weiterverarbeitet.
- Erstellung von Scripten, die die Erzeugung von Testdaten
in einer leeren Datenbank (aber angelegtes Schema) durch
Kopie der Daten aus der Produktionsdatenbank, ermöglichen.
Dies geschieht sehr schnell durch Benutzung der DB2-eigenen
Ex- und Import-Funktionalitäten.
- Erstellung eines Tools, welches eine Datenbank in eine
leere andere Datenbank clont. Hierzu wird das Schema auch
noch in einer Java-Datenbank gespeichert und die Daten
in einer Datenbank-unabhängigen Form gespeichert um das
clonen zu wiederholen un um Schema-Änderungen zu bemerken.
- Planung und Erstellung eines für Online-Systeme, wie z.B.
das Kundenkonto des Konzerns, besser geeigneten Zugriffs
auf die Daten als über eine relationale Datenbank.
Hierzu werden die Daten redundant in hochkomprimiertem XML
pro Vertrag oder Kunde abgespeichert und können so sofort,
ohne Zeitraubende Joins und XML-Erzeugung, mit XSL
weiterverarbeitet werden. Zum Suchen innerhalb des XML's
existieren noch zusätzliche Suchtabellen eigens hierfür,
damit auch ohne Joins gesucht werden kann. Der Inhalt
der Datenbank existiert dann komplett in nur noch 7
optimierten Tabellen anstatt in weit über 30. Den Zugriff
auf diese Daten ermöglicht momentan ein Servlet welches
zentral diese Aufgabe übernimmt. Ein Zugriff per RMI, Corba
oder WebService wäre kein Problem. Jeder Anwender kann
seine eigenen XSL's direkt auf dem Server auf die von ihm
angeforderten Daten anwenden lassen und erhält seine
aufbereiteten Daten zurück und kann sie direkt in einer
Browserkomponente darstellen lassen.
Infrastruktur : Oracle, DB2, PC, Windows NT, AIX, Eclipse, JDK 1.3 bis 1.4,PVCS, BUgzilla, JDBC, SQL, Java, JavaScript, HTTP, HTTPS,
Servlets, Tomcat, Apache, Perl, MySQL, Linux, SSL, XML, XSL,
Xalan, Xerces, XMLSpy, DataStage, Hypersonic, ICEReader,
Internet-Explorer
Ergebnis : Die Datenbank ist im Betrieb und der Export mittels DataStageläuft seither täglich. Der Online-Zugriff vom Kundenkonto auf
die optimierten XML-Tabellen ist auch in Betrieb.
auf effizienteren Zugriff, damit auch Firmenkunden mit sehr
vielen Verträgen das Kundenkonto nutzen können ohne
allzu lange warten zu müssen. Worst case ist hier etwa 40000
Verträge für einen Kunden. Da die existierende Schnittstelle
als Entity-Bean-Verbund realisiert war, kann man sich
vorstellen, das das die Performance negativ beeinflusst hat.
- Das ERM wird nun für einen Kunden komplett in XML abgebildet
und on-demand aus der Datenbank gelesen. In der Zeit, in der
vorher 40 Verträge gelesen wurden, werden jetzt mehrere
tausend gelesen. Da man es nun mit viel mehr Verträgen zu
tun hatte, wurde das Design des Web-Frontend fast komplett
umgestellt. Seiten mussten mit Vor- und Zurück-Navigation
versehen werden, Verträge mussten gefiltert werden können.
Die Darstellung in HTML wurde dabei zu 80% über XSL
realisiert, der Rest mittels Servlets oder statischem HTML.
- Da die XML-Verarbeitung bei sehr vielen Verträgen sehr viel
Hauptspeicher benötigte, wurde dazu ein Process-Pool
implementiert, welcher die XML-Verarbeitung für jeden Kunden
in einem neuen Java-Prozeß durchführte und mittels RMI
gesteuert wurde. Wenn also nicht genug Hauptspeicher
vorhanden wäre, würde nur der Prozeß dieses einen Kunden
in Mitleidenschaft gezogen werden und nicht der gesamte
Webauftritt.
- Die Schnittstelle zur BS2000 über OpenUTM wurde überarbeitet
und so angepasst, das sie ohne Neukompilation auf andere
Hosts umgestellt werden kann. Weiterhin wurde die Anzeige
in HTML mittels XSL aus XML generiert.
- Wartung und Pflege anderer Seiten des Kundenkontos:
Seiten zur Mitteilung von Änderungen eines Kfz-Vertrages.
Filterseiten zur Selektion von Verträgen.
- Generierung von eMails im Format des Remedy-Systems zur
automatischen Erstellung eines Tickets zur weiteren
Verarbeitung von Kundenwünschen.
- Einbau eines Demo-Zugangs zum Austesten der Kundenkonto-
Funktionalitäten.
Infrastruktur : Oracle, DB2, BEA Weblogic, PC, Windows NT, AIX, Makefiles,Forte for Java, JDK 1.2.2, Inprise JBuilder, PVCS, JavaMail,
JDBC, SQL, Java, JavaScript, HTML, HTTP, HTTPS, Servlets, JSP,
EJB, SSL, LDAP, VIP von Gauss, XML, XSL, Xalan, Xerces, RMI,
Ergebnis : Firmenkunden können nun problemloser und komfortabler auf dasKundenkonto zugreifen.
Realisierung von Möglichkeiten zum sicheren Betrachten und
Bearbeiten von eigenen Versicherungsverträgen (Kundenkonto),
Rückkaufswertberechnung von Lebens- und Rentenversicherungen,
Abbonnementverwaltung von eMail-Newslettern, grundlegende
Funktionalitäten wie eMail versenden, datenbankunabhängige
Autoincrement-Spalten, Zugriff auf Datenbank-Lookuptabellen
als Enterprise Java Beans. Erstellung von Makefiles für das
automatisierte Erzeugen und Deployen der Servlets und EJB"s
des kompletten Webauftrittes.
Infrastruktur : Oracle, DB2, BEA Weblogic, PC, Windows NT, AIX, Makefiles,Forte for Java, JDK 1.2.2, Inprise JBuilder, PVCS, JavaMail,
JDBC, SQL, Java, JavaScript, HTML, HTTP, HTTPS, Servlets, JSP,
EJB, SSL, LDAP, VIP von Gauss, XML, XSL, Xalan, Xerces,
Ergebnis : Ist am 05.09.2000 online gegangennormalen PC
- Tool zur Erfassung von Soundsamples und deren Inhalt in einer
Datenbank. Zu jedem Audio-File wurden die gesprochenen
Worte in einer Datenbank in normaler (orthographischer),
hochsprachlicher (orthoepisch) und dialektbehaftet
(phonetisch) erfasst. Audio-Editor zum Segmentieren
der Audio-Dateien auf Wortebene. Dadurch wurde es möglich
sich schnell Worte von verschiedenen Sprechern alternierend
anzuhören, um sie besser zu vergleichen können.
Erstellung eines eigenen IPA-Zeichensatzes zur Darstellung
der Sonderzeichen der Lautschrift. Erfassungseditoren
für alle anfallenden Daten. Assoziative oder normale Suche
innerhalb des Datenbestandes. Schnelles Recherchieren
von auffälligen Dialekten und Eingrenzung der Herkunft
des Sprechers. Dynamische Visualisierung der Herkunftsorte
der Sprachproben in der Datenbank auf einer Karte des
deutschsprachigen Raumes. Komplette Eigenentwicklung
über mehrere Produktzyklen da die Anforderungen an die
Datenbank, Speicherbedarf und die Performance doch erheblich
waren.
Infrastruktur : Poet, dBase, Paradox, zApp, Borland-C++, Borland-C++-Builder,PC, Windows 3.11, Windows 95, Windows NT, OS/2, CVS,
MP3-Audio-Kompressions-Algorithmen, ACM Audio Compression
Manager
Ergebnis :jeweiligen Anwender zugeschnittenen Applikationen. Grafische
Modellierung von Objekten welche in einer ORACLE-Datenbank
persistent gemacht werden können, deren Funktionalitäten
und Masken zum Editieren der Objekte. Die Rechte auf
Funktionalitäten der Objekte für verschiedene Benutzer oder
Benutzergruppen wurden ebenfalls modelliert.
Bei diesem Produkt wurde höchster Wert auf die Generik
gelegt, d.h. möglichst keine Änderungen am Code, wenn die
Modelle geändert wurden. Es wurde eine Multi-Tier-Architektur
mittels CORBA implementiert.
Dem Produkt wurde der Best of Byte Award auf der Systems 1996
in München als beste Business Management Solution verliehen.
- Basisfunktionalitäten der Model-View-Controller-Architektur
eines Tools zur grafischen Modellierung von
Geschäftsprozessen z.B. QuadTree zum effizienten Verwalten
der Daten im Model, Design der Datenbankzugriffsschicht-
Interfaces, dadurch einfacher Austausch der verschiedenen
Implementierungen, teilweise Umstellung der
Speicherverwaltung auf Reference-Counted-Pointer
- Utilities für den SAP-Knowledge-Engineer z.B. komprimierende
COM-Structured-Storage-Interface-Implementierungen mit
längeren Namen als 31 Zeichen zum Verwalten von
strukturierten Informationen innerhalb einer Datei.
Explorer-Tree in JavaScript für verschiedene Browser.
Zusammenführung zweier Tools zur Contentpflege des SAP-
Knowledge-Engineer.
- Knowledge Management, Erstellung eines Tools zum Verbreiten
von Wissen über Intra- und Internet. Dezentrale Verwaltung
des Wissens über Redakteure und Administratoren. Das Wissen
wird über beliebig zusammenstellbare Rollen gefiltert und
auch die Funktionalitäten, die auf dem Wissen ausgeführt
werden können, werden über Rollen gefiltert. Hier
wurde eine Multi-Tier-Architektur mittels RMI implementiert.
Die komplette Projektleitung auf Entwicklungsseite oblag mir.
Infrastruktur : PC, Windows NT, Windows 95, Oracle, CORBA, IDL, MFC MicrosoftFoundation Classes, Visual C++, Java, JavaScript, HTML, HTTP,
RMI, JDBC, SQL, Visual Basic, Poet, Orbix, Swing, JDK 1.2,
STL Standard Template Library, Forte for Java (Netbeans),
Symantec Visual Cafe, PVCS, CVS, Visual Source Safe,
Datenkompressionalgorithmen RLE, LZW, Huffman Codierung,
Arithmetische Codierung
Ergebnis :Öffentlicher Personennahverkehr
Projekt : - Portierung eines schon in der Programmiersprache Pascalund C implementierten und existierenden Fahrplan-
Verwaltungssystemes in die Programmiersprache C++ und
Object-Pascal (Delphi) und eine plattformunabhängige
GUI-Bibliothek. Portierung auf DOS, Windows 3.1*, OS/2.
Module wie Haltestelleneditor, Linieneditor, Fahrteneditor,
Kursplaneditor, Dienstplanoptimierung, Auskunftssystem.
- Deutschlandweites Auskunftssystem zum Berechnen von
Zeiten, Kosten und Umsteigepunkten einer gewünschten Route.
Dies wurde in OS/2 in einem POS (Point of sale) mit
Touchscreen-Bedienung integriert.
- Library mit Algorithmen zur automatischen Konvertierung
von Fahrplandaten in beliebigen Formaten in das dem
Unternehmen eigene Format. z.B. ASCII-Dateien, XLS-Dateien,
dBase, Deutsche-Bundesbahn-Daten
- Verwaltungssoftware eines Roboter-Bus-Betankungssystemes.
Kommunikation mit einer Speicherprogrammierbaren Steuerung
und sonstiger Komponenten über RS-232. Optimierung der
Betankung durch Kenntnis der anschliessend zu fahrenden
Routen der Busse. Wenn der Bus den Betriebshof erreicht hat,
wird diesem per Display mitgeteilt, ob er zum Tanken soll
oder ob die Tankfüllung für die nächsten Fahrten noch
ausreichend ist. Auswertungsmöglichkeiten hinsichtlich
Flottenverbrauch, Einzelfahrzeugverbrauch innerhalb
frei wählbarer Zeiträume.
Infrastruktur : PC, DOS, Windows 3.1, OS/2, zApp, dBase, Delphi, Zortech-C++,Borland C++ für OS/2, DOS und Windows, RS-232
Ergebnis :einer Omninet-Netzwerkkarte im Hintergrund mit Lastverteilung
gewährleistet. Dazu war die komplette Ausnutzung der
Unix-Interprozess-Kommunikation nötig. Message-Queues,
Semaphoren, Pipes, Prozesse usw.
- Datenbankanwendungen mit dem 4GL-Tool unifAce implementiert.
- Crossreference-Listen der Informationen, welche Maske in
unifAce welche Strings und welche Strings in welchen Masken
benutzt werden, generiert. Diese Informationen kamen aus
einer Oracle-Datenbank die unifAce als Datenbasis benutzte.
Die daraus entstandenen Textdateien wurden mit Hilfe von
Unix-Kommandos wie sed, awk, lex und yacc in die richtige
Form gebracht. Die Listen wurden zum Übersetzen benutzt und
wurden nach der Übersetzung wieder automatisch über
entsprechende Shellscripte wieder in das
unifAce-Oracle-System eingespielt.
- Messedemos für das Lambda-Laser-Abstandsmessgerät erstellt.
Mit Digitaler-I/O-Karte wurde ein Drehgeber angeschlossen und
mit einer A/D-Wandlerkarte wurde der Laser an den PC
angeschlossen. Die Visualisierung des Ganzen funktionierte in
Echtzeit mittels der gemessenen Abstände und Winkel.
Einmal wurde eine sich drehende verchromte Nockenwelle
gemessen und das andere mal ein sich drehendes Tai-Chi-Symbol
mit Oberflächen mit verschiedenen Reflexionseigenschaften.
- Netzwerkadministration unter Novell und Unix. IPX und IP
- Anbindung des IP-Netzwerkes an das Internet über einen
PPP-Zugang zu XLink
- 2D-, 3D-Bildverarbeitung und Audiodatenbearbeitung.
Bearbeitung der Daten mit Mustererkennung, Fuzzy-Logic
und Neuronalen Netzen auf einer SGI-Workstation.
- Design von Polygonspiegeln zur alternativen Laserablenkung
für Lambda-Laser-Abstandsmessgerät. Deren Berechnung und
Simulation auf SGI-Workstation.
Infrastruktur : Oracle, unifAce, C, Fortran, PC, DOS, Windows 3.1,Silicon-Graphics-Workstation IRIS Indigo, X-Windows, IRIX,
SCO-Unix, Unix-Shell-Commandos, sed, awk, lex, yacc, vi,
Borland-C++, Novell, SQL, GNU C++, RCS, CVS, SCCS
Ergebnis :- Beliebige Keramiken werden mittels eines selbst geplanten
und nach eigenen Vorgaben von einer Firma gebauten
Fliessbandes der Prüfeinrichtung zugeführt.
- Die Prüfeinrichtung hebt die Keramiken, damit sie frei
schwingen können und fast keine Auflagefläche mehr haben,
vom Fliessband ab und versetzt sie durch Anklopfen mittels
eines "Hammers" in Schwingungen (Luftschall)
- Der Luftschall wird von einer Signalprozessorkarte mittels
eines Mikrofones digital aufgezeichnet und es wird eine
Fast-Fourier-Transformation durchgeführt.
- Die damit vorhanden Zeit- und Frequenzdaten des Luftschalls
werden als Eingabedaten eines ausgeklügelten
Pattern-Matching-Algorithmus zur Gut-Schlecht-Beurteilung
benutzt
Infrastruktur : Motorola DSP 56000, Analog-Digital-Wandler-Karte,Digital-I/O-Karte, PC, DOS, Microsoft-C-Compiler,
Assembler (56000), Pneumatik, Maschinenbau, Regelungstechnik,
Mathematik, Statistik
Ergebnis : Vollständige 100 % Prüfung von Keramiken ohne Mitwirkung vonMenschen möglich.
Ausstellung auf der Hannover-Messe 1991
Öffentlicher Personennahverkehr
Projekt : Portierung eines schon in der Programmiersprache Pascalimplementierten und existierenden Fahrplanverwaltungssystemes
in die Programmiersprache C
- Anhand der Vorgaben der Oberfläche, der Benutzerführung und
der Datenbankstruktur des vorhandenen Produktes wurde dieses
komplett neu in C implementiert
Infrastruktur : Borland Turbo-C Compiler, PC, DOS, Turbo-PascalWiederverwendung von Code bewirkt. Portierbarkeit auf andere
Plattformen als PC"s mit DOS wurde durch Einhaltung des
ANSI-C-Standards ermöglicht.
HP-Workstation angefertigten CAD-Files auszuplotten.
- IEC-Bus per Software über eine Digital-I/O Karte emulieren
- Einlesen von im HP-Format beschriebenen Disketten,
dazu Umprogrammierung des Atari-ST-Floppy-Controllers
zum Lesen des für den Atari-ST fremden Formates
- Einlesen und Interpretieren der CAD-Files
- Plottwegoptimierung zum Reduzieren der Ausgabezeit
- Benutzeroberfläche zum Auswählen der zu plottenden Files
- Umwandeln der CAD-Files in HP-GL
- Versenden der HP-GL-Daten über den per Software
emulierten IEC-Bus an den Plotter
Infrastruktur : Atari-ST, TOS, GEM, HP-Workstation, HP-Basic, HP-UX,HP-GL-Plotter, Assembler (68000), GFA-Basic, Omicron-Basic
Ergebnis : Der Atari-ST mit Motorola 68000 Prozessor mit 8 MHz Taktkonnte danach die Files schneller(~Faktor 2) und
billiger(Rechnerstunde,Anschaffung) ausplotten als eine
HP-Workstation mit Motorola 68030 Prozessor mit 33 MHz Takt
Schrittweise Ersetzung eines existierenden ?Micro-Service? (Monolith) durch neue, modernere Komponenten und dabei Zerschlagung in kleinere Micro-Services oder Lambdas welche dann Teilaufgaben übernehmen. Daher in der neuen Version besser skalierbar und auch kostengünstiger zu betreiben (weniger Instanzen und manches nur noch Lambdas (serverless)). Die ganzen Services drehen sich um das Login von Kunden und der Verwaltung der dafür notwendigen Daten, wie eMail, Password, Telefonnummer, Adresse usw. Dazu gehören dann auch die Eingabe und Änderungsmöglichkeiten via Frontend für die Daten. Der alte Service ist in Java implementiert und wurde in der neuen Version in Kotlin, Scala, Typescript und Python umgesetzt, je nach speziellem Aufgabengebiet. Das CI/CD des alten Service wurde von Jenkins und AWS Cloud Formation übernommen. In den neuen Services übernehmen das Github Actions mit AWS CDK. Während der ganzen Umstellung mussten aber noch notwendige Änderungen und Wartungen an dem alten Service vorgenommen werden.
Dazu gehören folgende, als Micro-Service implementierte, Haupt-Funktionalitäten:
Dazu wurden noch diverse notwendigen Infrastruktur-Funktionalitäten benötigt.
Für eine mit XText erstellte DSL (Domain-specific language) konnte bisher nur Eclipse als Entwicklungsumgebung benutzt werden um in dieser neuen Sprache zu arbeiten. Da Xtext schon seit längerem das Language server protocol unterstützt, wurde dies nun benutzt, um die Sprache in Visual Studio Code als Extension und in IDEA Intellij als Plugin einbindbar zu machen, damit dann auch darin unter Windows und unixoiden Betriebssystemen komfortabel in dieser Sprache gearbeitet werden kann. Mit Funktionalitäten wie z.B. Auto-Vervollständigung, Refactoring, zur Deklaration springen, zu Verwendungen springen, Code-Generierung usw.
Hierzu gehört die Erstellung der Extension und des Plugins sowie die Erstellung von End-To-End-Tests, welche auch die Funktionen innerhalb der Entwicklungsumgebungen testen.
Mitarbeit beim Sitzplatzmanagement innerhalb der Erneuerung der
Vertriebsplattform mittels agiler Entwicklungsmethoden.
Im Teilprojekt Datenversorgung
- Bereitstellung der Wagenreihungen von Zügen für alle
Abschnitte einer Zugfahrt
- Zuordnung der Wagentypen mit den möglichen Sitzplätzen und
sonstigen Reservierungsmöglichkeiten zu den Wagen eines Zuges
- Bereitstellung der Daten in RabbitMQ Message-Queues mit
MongoDB Persistierung für die Sitzplatz- und Inventar-Reservierung
- Protokollierung der Änderungen, bei Ausfällen oder Fahrplanänderungen.
- Implementierung als Micro-Service, realisiert durch
Docker Container mit Wildfly-Swarm, später Thorntail
- Deployment der Docker Container in OpenShift in einer
AWS Virtual Private Cloud Umgebung, später EKS
Im Teilprojekt Wagentypen
- Bereitstellung eines Micro-Service zur CRUD-Persistierung
von in einem GUI erfassten Wagentypen
- Kommunikation mit dem GUI über REST-Schnittstelle
- Wagentypen wurden dann als JSON-Messages über Message-Queues
den Abnehmern zur Verfügung gestellt.
- Persistierung in einer MongoDB
- Migration nach Amazon DocumentDB
- Implementierung als Micro-Service, realisiert durch
Docker Container mit Wildfly-Swarm, später Thorntail, dann Spring-Boot
- Deployment der Docker Container in OpenShift in einer
AWS Virtual Private Cloud Umgebung, später EKS
Im Teilprojekt Reservierung
- Implementierung neuer fachlicher Anforderungen
- Umstellung existierender Micro-Services von MongoDB auf
JPA mit Hibernate und darunterliegender PostgreSQL/Amazon RDS
und von Thorntail auf Spring-Boot
Im Teilprojekt Umplatzierung
- Bereitstellung von Micro-Services zur Benachrichtigung
von Kunden mit Reservierungen, wenn sich an Ihrer Reservierung
etwas ändert.
- Ermittelung von Ersatzzügen, Zugausfällen, Wagentyp-Änderungen,
Wagenreihungs-Änderungen.
- Benachrichtigung über die neuen Sitzplätze einer Reservierung,
wenn Umplatzierung möglich.
- Persistierung mittels JPA mit Hibernate und
darunterliegender PostgreSQL/Amazon RDS
- Asynchrone Kommunikation mit anderen Micro-Services
über ActiveMQ/AmazonMQ
- Implementierung als Micro-Services, realisiert durch
Docker Container mit Thorntail, dann Migration nach Spring-Boot
- Deployment der Docker Container in OpenShift in einer
AWS Virtual Private Cloud Umgebung, später EKS
Während der ganzen Projektlaufzeit.
- Kontinuierliche Updates der Dependencies in Maven-Build-Files
und Dockerfiles wegen Security-Anforderungen (CVE‘s) und
neuer Features. Dabei waren öfter umfangreiche Änderungen
durchzuführen, da viele Bibliotheken leider nicht
abwärtskompatibel waren und deshalb sehr viel umgestellt
werden musste. Die Updates wurden erst manuell gemacht
und später wurde dafür der Renovate Bot eingesetzt,
welcher die Updates dann automatisiert hat.
- Kontinuierliche Anpassungen an den Consumer driven contracts (CDC‘s)
welche automatisiert geprüft werden.
- Kontinuierliche Anpassungen an Findings und Code-Abdeckung in SonarQube.
- Migration der Cucumber Tests von 1.* bis 6.8.*
mit sämtlichen Zwischenversionen.
- Umstellung von Docker CentOS-Base-Images auf
Alpine-Base-Images um die Deployments zu verschlanken
und sicherer zu machen.
- Umstellung von Java 1.8 auf Java11.
- Umstellung von JUnit 4 auf JUnit 5 und anschliessender
Entfernung von JUnit 4.
- Pflege und Erweiterung der CI/CD Pipelines mit Jenkins.
- Erstellung von Docker-Containern und deren Deployment
in Openshift, Amazon EKS, Amazon ECS.
- Durchführung der ganzen Test-Pyramide, angefangen
mit JUnit-Tests, lokalen Service-Integrationstests,
lokalen und nicht lokalen Gesamt-Integrationstest
sowie Performance-Tests.
- Generierung von Maven Build Files aus Templates
mittels XSLT und Entity-Auflösung um die Build
Files übersichtlicher zu gestalten und einfacher
Teile hinzuzufügen oder entfernen zu können.
- Ständig den Automatisierungsgrad und die Code-Qualität erhöhen.
- Wartung, Fehlersuche und Monitoring mittels Prometheus,
Grafana, Instana, Kibana, Graylog.
- Erstellung und Pflege eigener Docker-Container zum Testen
inklusive SSL-Verschlüsselung und Konfiguration z.B. für
ActiveMQ, PostgreSQL, WireMock, RabbitMQ, nginx.
Es wurde eine Software erstellt, welche eingehende XML-Messages aus einer MessageQueue performant entgegen nimmt, validiert, konvertiert und in eine Datenbank persistiert.
Dazu wurde eine DSL erstellt, welche die eingehenden Daten modellieren kann und zusätzlich datentypbasierte Konvertierungen automatisiert ausführen konnte. Weiterhin wurde die DSL mit Validierungen angereichert. Diese Konvertierungen und Validierungen sind auf Typebene als Fallback anzugeben oder sie können an den modellierten Daten "überladen" werden. Dafür unterstützt die Datenmodellierung Vererbung.
Realisiert wurde das ganze mit xText für die DSL-Erstellung. Daraus wurde dann mit Generatoren Java-Code erstellt, welcher dann unter Wildfly mittels Message-Driven-Beans hochperformant und vor allem parallel und damit skalierbar die XML-Messages validiert und konvertiert hat. Die Messages werden danach im CSV-Format auf der Platte zwischengelagert, wo sie dann asynchron von einer JEE7 Batch Processing Anwendung zusammengefasst werden und in die Datenbank persistiert werden.
Der Durchsatz konnte so gegenüber der Altlösung erheblich gesteigert werden. Und vor allem könnte man später, wenn nötig, den Wildfly clustern um den Durchsatz weiter zu erhöhen.
Um die ganze Infrastruktur, welche zur Entwicklung benötigt wird, auch anderen Entwicklern, welche nicht so tief in der Materie stecken, zur Verfügung zu stellen, wurden mittels VirtualBox virtuelle Maschinen mit CentOS und Docker Containern und eine mit IPFire aufgesetzt. In IPFire lief dann ein Proxy zum cachen von Entwicklungs-Artefakten. In den Docker Containern liefen dann ein Nexus Artefakt Repository zur Verwaltung der Maven und der Eclipse-Plugin Artefakten und ein Wildfly zur Implementierung der Message-Driven-Beans und der Batch-Processing-Anwendung.
- Performanceoptimierung von DataStage-Jobs, da sich die
Laufzeiten durch neue Datenlieferungen aus weiteren Systemen
teilweise signifikant erhöht haben. Hier wurden durch
Optimierungen der SQL-Queries oder anderer Massnahmen in
DB2 und DataStage beträchtliche Beschleunigungen erzielt.
Hier wurden z.B. neue Indizes in DB2 angelegt, Lookups in
Joins gewandelt, SQL-Joins in DataStage verlagert und umgekehrt,
Einsatz von OLAP-Funktionen (Analytic Functions) um den I/O zu
reduzieren und Last von den Servern zu nehmen.
Infrastruktur : Windows XP, DataStage 7.5.3 PX, DB/2 auf AIX, AIX, SQL,Visual Explain, Speedgain
Ergebnis : AbgeschlossenFehlerbehandlung über Message-Queues. Es können von Host-,
DataStage- und Java-Anwendungen Fehlermeldungen in
Message-Queues eingestellt werden, welche von DataStage-Jobs
transaktionssicher in die Oracle Datenbank gespeichert werden.
Erstellung und Pflege von Custom Build Operatoren für DataStage
in C++ und Java. Wave-Verarbeitung von Messages aus
Message-Queues. Diese Messages bestehen aus mehreren Paketen,
welche mittels eines in C++ implementierten Custom Build
Operator zerteilt werden und innerhalb einer Wave verarbeitet
werden. Einbindung eines Java-Build-Operator um die
Möglichkeiten von log4j zu nutzen. Synchronisation von Requests
und Responses von WebServices um aufgetretene Fehler, durch
Parsen der XML-Soap-Responses mittels Oracle PL/SQL, in die
zentrale Fehlerbehandlung einzustellen. Hierbei mussten die
Unzulänglichkeiten von DataStage und Oracle umgangen werden.
Wie z.B. Behandlung von Null-Zeichen in Strings, Varchar mit
mehr als 4000 Zeichen (auch 4000 Umlaute evtl.) und Schreiben
und Lesen von CLOB's mit DataStage und PL/SQL. Implementierung
eines Servlets mit dem es möglich ist, die Requests und
Responses zu suchen und die darin enthaltenen CLOBS lesbar
darzustellen, da diese Hexadezimal kodiert in den Tabellen
vorliegen. Hiermit ist dann eine bessere Fehlerdiagnose möglich.
Nutzung von Form Based Authentication, DB Connection Pools.
Geschwindigkeitsoptimierung durch Umstellung der Jobs auf
Behandlung von komprimierten BLOB's anstatt CLOB's. Das ist nun
etwa 12 mal schneller, da die BLOB-Daten jetzt In-Row gespeichert
werden können anstatt in extra LOB-Tabellen.
Infrastruktur : Windows XP, C++, Java 1.5, Solaris, AIX, IBM Information ServerWebSphere DataStage 8.0.1, MQ Series, Oracle 10g, XML, PL/SQL,
Tomcat 6.0.18, Eclipse 3.4 Ganymede, WebSphere Application
Server 6.0, JAAS
Ergebnis : Erste Implementierungsphase abgeschlossen.DataStage-Jobs. Überprüfung der korrekten Umsetzung der
fachlichen Vorgaben (Corda-Regeln) im Code. Zusammenstellung
aller betroffenen Felder in Defects.
Infrastruktur : Windows XP, DataStage 7.5Frameworks von ARIS. Diese Dialoge dienen zum Aufruf der
Server-Funktionalitäten der modellgestützten Transformation von
bestimmten Modellen in andere Modelle, z.B. EPK nach BPEL
- Erstellung einer graphisch interaktiven Merge Komponente
mittels eines Swing-Frameworks von ARIS. Diese dient zum
Anzeigen, Akzeptieren oder Verwerfen von Änderungen zwischen
2 Versionen eines Modelles.
Infrastruktur : Windows XP, Java 1.5 (Enum,Generics,ForEach), ARIS Platform 7.02und 7.1 (ARIS Business Architect, ARIS SOA Architect, ARIS UML
Designer, ARIS API), Perforce 2007.2, IntelliJ IDEA 5.0 und 6.0
Ergebnis : AbgeschlossenApplikation. Fehlersuche und Fehlerbehebung,
Prozessablaufverbesserungen und Konfigurationsmanagement.
Deployment von EAR's in die Integrationstestumgebungen.
- Generierung von Datenbankschema aus UML Modellen mittels OAW.
MDA Model Driven Architecture
- Einführung von Constraints in die bestehende Datenbank.
Foreign Key-, Not Null-, XOR- und Unique-Constraints.
Absicherung der Integrität der Daten.
- Anonymisierung von Produktionsdatenbank-Exporten mittels
Oracle Analytic Funktions.
Infrastruktur : Windows XP, Oracle 9 und 10, SQLDeveloper, TOAD, Java 1.4, SQL,Enterprise Architect 6.1, Rational Application Developer RAD,
OpenArchitectureWare OAW, JUnit, DBUnit, FitNesse, Selenium,
Ant, CruiseControl, Lotus Notes, SubVersion, WebSphere 6.0, LDAP,
JXplorer
Ergebnis : An interne Mitarbeiter zur Weiterführung übergebenDiensten gegenüber den Lizenzgebern.
- Importieren von Werbeblock-Prognosedaten im XML-Format ins
DataWarehouse und Aufbereitung der Daten als Dimensions- und
Fakten-Tabellen.
Infrastruktur : Windows XP, DataStage 7.1r1 Server, Informix auf Solaris,Solaris, SQL, ERWin, ClearCase
Ergebnis : An interne Mitarbeiter zur Fertigstellung übergebenExports im GDV-Format zur Belieferung des Vertriebs.
- Performanceoptimierung der SQL-Queries mittels Explain Plan
und Reduzierung der Joblaufzeiten insgesamt.
Infrastruktur : Windows XP, DataStage 7.5.1A PX, DB/2 auf z/OS, AIX, SQL,Visual Explain
Ergebnis : Abgeschlossen und in erfolgreichem Betriebdie Anforderungen an Basel II werden für das Rating von Kunden
verschiedene DataStage-Jobs implementiert. Diese Jobs ermitteln
die für das Rating relevanten Daten und bereiten sie für das
Frontend auf.
Infrastruktur : Windows XP, DataStage 7.1 PX, Clearcase, Oracle 9i,Sun Solaris, PL/SQL, Toad, Rational Rose
Ergebnis : Abgeschlossen und in erfolgreichem Betriebeinheitliche Notrufnummer 116 116 zum Sperren von Medien wie zum
Beispiel Kredit- und EC-Karten, Handys, digitale Signaturen,
Krankenkassenkarten, Mitarbeiter-Ausweise, Kundenkarten oder
sensible Online-Berechtigungen des Internets ein. Für den
Verbraucher bedeutet dieses weltweit neue Sicherheitssystem
einen deutlich besseren Schutz in Notfällen.
- Entwicklung von WebServices zur Kommunikation mit der
Telefonvermittlung und den Callcentern
- Entwicklung von Entity Beans für die Datenbanktabellen in
Oracle
- Erstellung eines Build Prozesses mittels Ant mit der
Möglichkeit zu einem automatisierten Daily Build
Infrastruktur : Windows XP, Java 1.4.2_06, Java 1.5.0, JBOSS, WebServices,Oracle, PVCS-Tracker, CVS, Scarab, Eclipse, Ant, XDoclet,
SLES9, T-Com IN, CTI
Ergebnis : Abgeschlossenfestangestellte Mitarbeiter zur Bewirtschaftung von
DataWareHouse-Lösungen
- Umstellung dieser Templates von DB2 auf Oracle
- Ausarbeitung eigener Templates und Lösungs- und
Integrationsansätze für den Kunden
Infrastruktur : Windows XP, Ascential DataStage 7.5 PX; Oracle 9i- Client-Server-Kommunikations-Komponente über Sockets oder
über GSM-Netze mittels des gleichen Interfaces.
- Grafisches Datenbankfilterungstool zum Filtern einer Menge
solange bis nur noch ein Datensatz übrigbleibt. Die
Reihenfolge der Filterauswahl ist dabei egal.
Der Benutzer wird immer geführt. Wenn durch vorhergehende
Filterungen für einen Filter nur noch eine
Auswahlmöglichkeit besteht, wird diese als Filter gewählt
und es geht weiter zum nächsten noch nicht bestimmten Ziel.
Man ist also mit sehr wenigen Angaben am Ziel.
- Errichtung eines VPN über Vodafone Corporate Data Access
zur sicheren Kommunikation des Servers mit den
GPRS-Endgeräten.
- Einwahlprogramm für DFÜ-Netzwerk inklusive Initialisierung
des Modems über serielle Schnittstelle per AT-Kommandos
Infrastruktur : Borland-C++-Builder 5.0, Windows 2000, GSM-Modem, PC104-PC,Linux, IPCOP, Borland-Delphi 6.0; SUSE Linux 9.1
Ergebnis : Abgeschlossen.IP-Vergabe nun sicher von außen erreichbar ist und die
Steuerung des Heimnetzwerkes und aller daran angeschlossenen
Infrastruktur erlaubt. Zusätzlich kann darüber jetzt jeder
beliebige Port, verschlüsselt getunnelt werden.
Infrastruktur : Linux, SquidInformationen des Konzerns, was Kunden oder Verträge
betrifft, um Online-Systeme besser mit Daten versorgen zu
können. Von mir dabei erfüllte Aufgaben:
- Beteiligung an der Planung und Erstellung des ERM
- Beratung in vielerlei Hinsicht z.B. Design, Performance,
Normalisierung, Server-Auswahl, Datenbankauswahl,
Auswahl des ETL-Tools, Auswahl des Fehlertracking-Tools
- Installation eines Linux-Servers auf dem die Fehlertracking-
Software Bugzilla mittels eines Apache Webservers, Perl und
MySQL in Betrieb genommen wurde. Dessen Frontend wurde von
mir dann noch den Vorstellungen der Projektleitung
entsprechend customized. Eine automatisierte Sicherung
der Daten wurde dann per Cron-Job täglich durchgeführt.
Hierzu gab ich dann entsprechende Einweisungen für
Administratoren, Moderatoren, Tester und Entwickler.
- Erstellung eines Java-Tools zum automatisierten Vergleich
kompletter Datenbanktabellen zwischen Oracle und DB2.
- Erstellung einer Web-Anwendung, welche es ermöglicht, den
Inhalt der Datenbank in einem beliebigen Browser für
Testfälle anzuzeigen und somit manuell mit den Ausgaben
des jeweiligen Spartensystems vergleichen zu können.
Dies geschah durch Erzeugen von XML aus den
Datenbank-Inhalten und anschließendemszlig;endem Verarbeiten mit XSL
um das Ergebnis dann per Servlet in HTML im Browser
anzuzeigen. Hierbei wurden Schlüsselumsetzungen direkt
dem erzeugten XML beigemengt um das XSL zu vereinfachen.
- Belieferung eines Online-Systems mittels dem ETL-Tool
DataStage durch Erzeugung von Export-Dateien. Diese werden
per OpenFTP, gesteuert über Semaphor-Dateien vom Online
System täglich abgeholt und dann darin weiterverarbeitet.
- Erstellung von Scripten, die die Erzeugung von Testdaten
in einer leeren Datenbank (aber angelegtes Schema) durch
Kopie der Daten aus der Produktionsdatenbank, ermöglichen.
Dies geschieht sehr schnell durch Benutzung der DB2-eigenen
Ex- und Import-Funktionalitäten.
- Erstellung eines Tools, welches eine Datenbank in eine
leere andere Datenbank clont. Hierzu wird das Schema auch
noch in einer Java-Datenbank gespeichert und die Daten
in einer Datenbank-unabhängigen Form gespeichert um das
clonen zu wiederholen un um Schema-Änderungen zu bemerken.
- Planung und Erstellung eines für Online-Systeme, wie z.B.
das Kundenkonto des Konzerns, besser geeigneten Zugriffs
auf die Daten als über eine relationale Datenbank.
Hierzu werden die Daten redundant in hochkomprimiertem XML
pro Vertrag oder Kunde abgespeichert und können so sofort,
ohne Zeitraubende Joins und XML-Erzeugung, mit XSL
weiterverarbeitet werden. Zum Suchen innerhalb des XML's
existieren noch zusätzliche Suchtabellen eigens hierfür,
damit auch ohne Joins gesucht werden kann. Der Inhalt
der Datenbank existiert dann komplett in nur noch 7
optimierten Tabellen anstatt in weit über 30. Den Zugriff
auf diese Daten ermöglicht momentan ein Servlet welches
zentral diese Aufgabe übernimmt. Ein Zugriff per RMI, Corba
oder WebService wäre kein Problem. Jeder Anwender kann
seine eigenen XSL's direkt auf dem Server auf die von ihm
angeforderten Daten anwenden lassen und erhält seine
aufbereiteten Daten zurück und kann sie direkt in einer
Browserkomponente darstellen lassen.
Infrastruktur : Oracle, DB2, PC, Windows NT, AIX, Eclipse, JDK 1.3 bis 1.4,PVCS, BUgzilla, JDBC, SQL, Java, JavaScript, HTTP, HTTPS,
Servlets, Tomcat, Apache, Perl, MySQL, Linux, SSL, XML, XSL,
Xalan, Xerces, XMLSpy, DataStage, Hypersonic, ICEReader,
Internet-Explorer
Ergebnis : Die Datenbank ist im Betrieb und der Export mittels DataStageläuft seither täglich. Der Online-Zugriff vom Kundenkonto auf
die optimierten XML-Tabellen ist auch in Betrieb.
auf effizienteren Zugriff, damit auch Firmenkunden mit sehr
vielen Verträgen das Kundenkonto nutzen können ohne
allzu lange warten zu müssen. Worst case ist hier etwa 40000
Verträge für einen Kunden. Da die existierende Schnittstelle
als Entity-Bean-Verbund realisiert war, kann man sich
vorstellen, das das die Performance negativ beeinflusst hat.
- Das ERM wird nun für einen Kunden komplett in XML abgebildet
und on-demand aus der Datenbank gelesen. In der Zeit, in der
vorher 40 Verträge gelesen wurden, werden jetzt mehrere
tausend gelesen. Da man es nun mit viel mehr Verträgen zu
tun hatte, wurde das Design des Web-Frontend fast komplett
umgestellt. Seiten mussten mit Vor- und Zurück-Navigation
versehen werden, Verträge mussten gefiltert werden können.
Die Darstellung in HTML wurde dabei zu 80% über XSL
realisiert, der Rest mittels Servlets oder statischem HTML.
- Da die XML-Verarbeitung bei sehr vielen Verträgen sehr viel
Hauptspeicher benötigte, wurde dazu ein Process-Pool
implementiert, welcher die XML-Verarbeitung für jeden Kunden
in einem neuen Java-Prozeß durchführte und mittels RMI
gesteuert wurde. Wenn also nicht genug Hauptspeicher
vorhanden wäre, würde nur der Prozeß dieses einen Kunden
in Mitleidenschaft gezogen werden und nicht der gesamte
Webauftritt.
- Die Schnittstelle zur BS2000 über OpenUTM wurde überarbeitet
und so angepasst, das sie ohne Neukompilation auf andere
Hosts umgestellt werden kann. Weiterhin wurde die Anzeige
in HTML mittels XSL aus XML generiert.
- Wartung und Pflege anderer Seiten des Kundenkontos:
Seiten zur Mitteilung von Änderungen eines Kfz-Vertrages.
Filterseiten zur Selektion von Verträgen.
- Generierung von eMails im Format des Remedy-Systems zur
automatischen Erstellung eines Tickets zur weiteren
Verarbeitung von Kundenwünschen.
- Einbau eines Demo-Zugangs zum Austesten der Kundenkonto-
Funktionalitäten.
Infrastruktur : Oracle, DB2, BEA Weblogic, PC, Windows NT, AIX, Makefiles,Forte for Java, JDK 1.2.2, Inprise JBuilder, PVCS, JavaMail,
JDBC, SQL, Java, JavaScript, HTML, HTTP, HTTPS, Servlets, JSP,
EJB, SSL, LDAP, VIP von Gauss, XML, XSL, Xalan, Xerces, RMI,
Ergebnis : Firmenkunden können nun problemloser und komfortabler auf dasKundenkonto zugreifen.
Realisierung von Möglichkeiten zum sicheren Betrachten und
Bearbeiten von eigenen Versicherungsverträgen (Kundenkonto),
Rückkaufswertberechnung von Lebens- und Rentenversicherungen,
Abbonnementverwaltung von eMail-Newslettern, grundlegende
Funktionalitäten wie eMail versenden, datenbankunabhängige
Autoincrement-Spalten, Zugriff auf Datenbank-Lookuptabellen
als Enterprise Java Beans. Erstellung von Makefiles für das
automatisierte Erzeugen und Deployen der Servlets und EJB"s
des kompletten Webauftrittes.
Infrastruktur : Oracle, DB2, BEA Weblogic, PC, Windows NT, AIX, Makefiles,Forte for Java, JDK 1.2.2, Inprise JBuilder, PVCS, JavaMail,
JDBC, SQL, Java, JavaScript, HTML, HTTP, HTTPS, Servlets, JSP,
EJB, SSL, LDAP, VIP von Gauss, XML, XSL, Xalan, Xerces,
Ergebnis : Ist am 05.09.2000 online gegangennormalen PC
- Tool zur Erfassung von Soundsamples und deren Inhalt in einer
Datenbank. Zu jedem Audio-File wurden die gesprochenen
Worte in einer Datenbank in normaler (orthographischer),
hochsprachlicher (orthoepisch) und dialektbehaftet
(phonetisch) erfasst. Audio-Editor zum Segmentieren
der Audio-Dateien auf Wortebene. Dadurch wurde es möglich
sich schnell Worte von verschiedenen Sprechern alternierend
anzuhören, um sie besser zu vergleichen können.
Erstellung eines eigenen IPA-Zeichensatzes zur Darstellung
der Sonderzeichen der Lautschrift. Erfassungseditoren
für alle anfallenden Daten. Assoziative oder normale Suche
innerhalb des Datenbestandes. Schnelles Recherchieren
von auffälligen Dialekten und Eingrenzung der Herkunft
des Sprechers. Dynamische Visualisierung der Herkunftsorte
der Sprachproben in der Datenbank auf einer Karte des
deutschsprachigen Raumes. Komplette Eigenentwicklung
über mehrere Produktzyklen da die Anforderungen an die
Datenbank, Speicherbedarf und die Performance doch erheblich
waren.
Infrastruktur : Poet, dBase, Paradox, zApp, Borland-C++, Borland-C++-Builder,PC, Windows 3.11, Windows 95, Windows NT, OS/2, CVS,
MP3-Audio-Kompressions-Algorithmen, ACM Audio Compression
Manager
Ergebnis :jeweiligen Anwender zugeschnittenen Applikationen. Grafische
Modellierung von Objekten welche in einer ORACLE-Datenbank
persistent gemacht werden können, deren Funktionalitäten
und Masken zum Editieren der Objekte. Die Rechte auf
Funktionalitäten der Objekte für verschiedene Benutzer oder
Benutzergruppen wurden ebenfalls modelliert.
Bei diesem Produkt wurde höchster Wert auf die Generik
gelegt, d.h. möglichst keine Änderungen am Code, wenn die
Modelle geändert wurden. Es wurde eine Multi-Tier-Architektur
mittels CORBA implementiert.
Dem Produkt wurde der Best of Byte Award auf der Systems 1996
in München als beste Business Management Solution verliehen.
- Basisfunktionalitäten der Model-View-Controller-Architektur
eines Tools zur grafischen Modellierung von
Geschäftsprozessen z.B. QuadTree zum effizienten Verwalten
der Daten im Model, Design der Datenbankzugriffsschicht-
Interfaces, dadurch einfacher Austausch der verschiedenen
Implementierungen, teilweise Umstellung der
Speicherverwaltung auf Reference-Counted-Pointer
- Utilities für den SAP-Knowledge-Engineer z.B. komprimierende
COM-Structured-Storage-Interface-Implementierungen mit
längeren Namen als 31 Zeichen zum Verwalten von
strukturierten Informationen innerhalb einer Datei.
Explorer-Tree in JavaScript für verschiedene Browser.
Zusammenführung zweier Tools zur Contentpflege des SAP-
Knowledge-Engineer.
- Knowledge Management, Erstellung eines Tools zum Verbreiten
von Wissen über Intra- und Internet. Dezentrale Verwaltung
des Wissens über Redakteure und Administratoren. Das Wissen
wird über beliebig zusammenstellbare Rollen gefiltert und
auch die Funktionalitäten, die auf dem Wissen ausgeführt
werden können, werden über Rollen gefiltert. Hier
wurde eine Multi-Tier-Architektur mittels RMI implementiert.
Die komplette Projektleitung auf Entwicklungsseite oblag mir.
Infrastruktur : PC, Windows NT, Windows 95, Oracle, CORBA, IDL, MFC MicrosoftFoundation Classes, Visual C++, Java, JavaScript, HTML, HTTP,
RMI, JDBC, SQL, Visual Basic, Poet, Orbix, Swing, JDK 1.2,
STL Standard Template Library, Forte for Java (Netbeans),
Symantec Visual Cafe, PVCS, CVS, Visual Source Safe,
Datenkompressionalgorithmen RLE, LZW, Huffman Codierung,
Arithmetische Codierung
Ergebnis :Öffentlicher Personennahverkehr
Projekt : - Portierung eines schon in der Programmiersprache Pascalund C implementierten und existierenden Fahrplan-
Verwaltungssystemes in die Programmiersprache C++ und
Object-Pascal (Delphi) und eine plattformunabhängige
GUI-Bibliothek. Portierung auf DOS, Windows 3.1*, OS/2.
Module wie Haltestelleneditor, Linieneditor, Fahrteneditor,
Kursplaneditor, Dienstplanoptimierung, Auskunftssystem.
- Deutschlandweites Auskunftssystem zum Berechnen von
Zeiten, Kosten und Umsteigepunkten einer gewünschten Route.
Dies wurde in OS/2 in einem POS (Point of sale) mit
Touchscreen-Bedienung integriert.
- Library mit Algorithmen zur automatischen Konvertierung
von Fahrplandaten in beliebigen Formaten in das dem
Unternehmen eigene Format. z.B. ASCII-Dateien, XLS-Dateien,
dBase, Deutsche-Bundesbahn-Daten
- Verwaltungssoftware eines Roboter-Bus-Betankungssystemes.
Kommunikation mit einer Speicherprogrammierbaren Steuerung
und sonstiger Komponenten über RS-232. Optimierung der
Betankung durch Kenntnis der anschliessend zu fahrenden
Routen der Busse. Wenn der Bus den Betriebshof erreicht hat,
wird diesem per Display mitgeteilt, ob er zum Tanken soll
oder ob die Tankfüllung für die nächsten Fahrten noch
ausreichend ist. Auswertungsmöglichkeiten hinsichtlich
Flottenverbrauch, Einzelfahrzeugverbrauch innerhalb
frei wählbarer Zeiträume.
Infrastruktur : PC, DOS, Windows 3.1, OS/2, zApp, dBase, Delphi, Zortech-C++,Borland C++ für OS/2, DOS und Windows, RS-232
Ergebnis :einer Omninet-Netzwerkkarte im Hintergrund mit Lastverteilung
gewährleistet. Dazu war die komplette Ausnutzung der
Unix-Interprozess-Kommunikation nötig. Message-Queues,
Semaphoren, Pipes, Prozesse usw.
- Datenbankanwendungen mit dem 4GL-Tool unifAce implementiert.
- Crossreference-Listen der Informationen, welche Maske in
unifAce welche Strings und welche Strings in welchen Masken
benutzt werden, generiert. Diese Informationen kamen aus
einer Oracle-Datenbank die unifAce als Datenbasis benutzte.
Die daraus entstandenen Textdateien wurden mit Hilfe von
Unix-Kommandos wie sed, awk, lex und yacc in die richtige
Form gebracht. Die Listen wurden zum Übersetzen benutzt und
wurden nach der Übersetzung wieder automatisch über
entsprechende Shellscripte wieder in das
unifAce-Oracle-System eingespielt.
- Messedemos für das Lambda-Laser-Abstandsmessgerät erstellt.
Mit Digitaler-I/O-Karte wurde ein Drehgeber angeschlossen und
mit einer A/D-Wandlerkarte wurde der Laser an den PC
angeschlossen. Die Visualisierung des Ganzen funktionierte in
Echtzeit mittels der gemessenen Abstände und Winkel.
Einmal wurde eine sich drehende verchromte Nockenwelle
gemessen und das andere mal ein sich drehendes Tai-Chi-Symbol
mit Oberflächen mit verschiedenen Reflexionseigenschaften.
- Netzwerkadministration unter Novell und Unix. IPX und IP
- Anbindung des IP-Netzwerkes an das Internet über einen
PPP-Zugang zu XLink
- 2D-, 3D-Bildverarbeitung und Audiodatenbearbeitung.
Bearbeitung der Daten mit Mustererkennung, Fuzzy-Logic
und Neuronalen Netzen auf einer SGI-Workstation.
- Design von Polygonspiegeln zur alternativen Laserablenkung
für Lambda-Laser-Abstandsmessgerät. Deren Berechnung und
Simulation auf SGI-Workstation.
Infrastruktur : Oracle, unifAce, C, Fortran, PC, DOS, Windows 3.1,Silicon-Graphics-Workstation IRIS Indigo, X-Windows, IRIX,
SCO-Unix, Unix-Shell-Commandos, sed, awk, lex, yacc, vi,
Borland-C++, Novell, SQL, GNU C++, RCS, CVS, SCCS
Ergebnis :- Beliebige Keramiken werden mittels eines selbst geplanten
und nach eigenen Vorgaben von einer Firma gebauten
Fliessbandes der Prüfeinrichtung zugeführt.
- Die Prüfeinrichtung hebt die Keramiken, damit sie frei
schwingen können und fast keine Auflagefläche mehr haben,
vom Fliessband ab und versetzt sie durch Anklopfen mittels
eines "Hammers" in Schwingungen (Luftschall)
- Der Luftschall wird von einer Signalprozessorkarte mittels
eines Mikrofones digital aufgezeichnet und es wird eine
Fast-Fourier-Transformation durchgeführt.
- Die damit vorhanden Zeit- und Frequenzdaten des Luftschalls
werden als Eingabedaten eines ausgeklügelten
Pattern-Matching-Algorithmus zur Gut-Schlecht-Beurteilung
benutzt
Infrastruktur : Motorola DSP 56000, Analog-Digital-Wandler-Karte,Digital-I/O-Karte, PC, DOS, Microsoft-C-Compiler,
Assembler (56000), Pneumatik, Maschinenbau, Regelungstechnik,
Mathematik, Statistik
Ergebnis : Vollständige 100 % Prüfung von Keramiken ohne Mitwirkung vonMenschen möglich.
Ausstellung auf der Hannover-Messe 1991
Öffentlicher Personennahverkehr
Projekt : Portierung eines schon in der Programmiersprache Pascalimplementierten und existierenden Fahrplanverwaltungssystemes
in die Programmiersprache C
- Anhand der Vorgaben der Oberfläche, der Benutzerführung und
der Datenbankstruktur des vorhandenen Produktes wurde dieses
komplett neu in C implementiert
Infrastruktur : Borland Turbo-C Compiler, PC, DOS, Turbo-PascalWiederverwendung von Code bewirkt. Portierbarkeit auf andere
Plattformen als PC"s mit DOS wurde durch Einhaltung des
ANSI-C-Standards ermöglicht.
HP-Workstation angefertigten CAD-Files auszuplotten.
- IEC-Bus per Software über eine Digital-I/O Karte emulieren
- Einlesen von im HP-Format beschriebenen Disketten,
dazu Umprogrammierung des Atari-ST-Floppy-Controllers
zum Lesen des für den Atari-ST fremden Formates
- Einlesen und Interpretieren der CAD-Files
- Plottwegoptimierung zum Reduzieren der Ausgabezeit
- Benutzeroberfläche zum Auswählen der zu plottenden Files
- Umwandeln der CAD-Files in HP-GL
- Versenden der HP-GL-Daten über den per Software
emulierten IEC-Bus an den Plotter
Infrastruktur : Atari-ST, TOS, GEM, HP-Workstation, HP-Basic, HP-UX,HP-GL-Plotter, Assembler (68000), GFA-Basic, Omicron-Basic
Ergebnis : Der Atari-ST mit Motorola 68000 Prozessor mit 8 MHz Taktkonnte danach die Files schneller(~Faktor 2) und
billiger(Rechnerstunde,Anschaffung) ausplotten als eine
HP-Workstation mit Motorola 68030 Prozessor mit 33 MHz Takt
"Der Consultant war für unser Projekt ein sehr wichtiger Mitarbeiter. Er zeichnete sich durch viele hervorragende Eigenschaften aus, z.B.:
- profundes Fachwissen in den Bereichen JAVA, EJB, JSP, JDBC
- wesentliche Unterstützung auch beim Aufbau der Entwicklungsumgebung
- Er wurde sehr schnell zu einem der Keyplayer auf dem Projekt und stellte insb. im technischen Bereich eine unverzichtbare Ressource dar— Projekt JAVA/EJB-Programmierung für den Webauftritt eines gr. Versicherungskonzerns, 05/00-08/00
Referenz durch Projektmanager der Firma Cambridge Technology Partners vom 28.09.00