Technologien: Java, Spring, Spring WebFlow, Spring MVC, Java Server Faces (JSF), Javascript, jQuery, Firebug, Eclipse, OSGi, HTML, CSS
Als Mitglied des Teams Frameworks und Tooling habe ich an der Entwicklung und Weiterentwicklung der Frontend Frameworks (Serveranteil mit Java, Spring Webflow, JSF etc. und Clientanteil mit HTML, CSS, Javascrip, jQuery etc.) gearbeitet.
Zu den Aufgaben gehörte auch das Coaching und die Betreuung der Anwendungsentwickler, die fachliche Anwendungsfälle mit Hilfe der Frameworks umsetzen sowie die Beratung der Projektleiter bei Fragen, die das Framework betreffen.
=== Septemer 2009 - November 2009 ===
Kunde: neuland GmbH
Einsatzort: Bremen
Projekt: Webshop "bonprix"
Position: Entwicklung und Architektur
Programmiersprachen: Java, Ruby, JRuby
Sonstige Technologien: Eclipse, Ant, Velocity, Spring, Spring MVC, Hibernate, ehCache, XML, HTTP, HTTPS, HTML, CSS, Oracle, SQL, SQLDeveloper, Subversion (SVN), Ruby on Rails, JRuby, MySQL, PL/SQL, Tomcat, Apache HTTPD
Der bonprix Webshop ist laut Wikipedia eine der 10 am stärksten Frequentierten Webseiten Deutschlands.
Bei der Weiterentwicklung des Webshops mussten wir deshalb besondere Anforderungen in Bezug auf Performance,
Skalierbarkeit, Caching etc. berücksichtigen.
Der Entwicklungsprozess basiert auf Scrum und wurde um Elemente anderer agiler Methoden wie XP ergänzt.
==============================
=== Mai 2009 - August 2009 ===
==============================
Projekt 1
=========
Kunde: engram Gmbh
Einsatzort: Bremen
Projekt: eKMS - engram Kampagnen Mangement System
Position: Softwarearchitekt, Softwareentwickler
Programmiersprachen: Java
Sonstige Technologien: Spring, Hibernate, Gilead, GWT, GWT Ext, HQL, MySQL, XML, GwtRpcSpring, Maven2, Eclipse, PMD, CheckStyle, Spring Security, SingleSignOn, RACF, Hudson, JUnit, Tomcat, Websphere Application Server, Rational Software Architect, Lotus Notes etc.
Branche: Banken
Besonderheit: Die Software enthält Komponenten, die auf einem Geldautomaten ausgeführt werden!
Beratung und Unterstützung des Entwicklungsteams bei der Realisierung
des engram Kampagnen Management Systems für Banken und andere Kunden.
Die Hauptaufgabe hierbei lag in der Anpassung der Architektur und der
Technologien in Bezug auf Spring, Hibernate und GWT. Hierbei spielten
unter anderem Gilead als Glue Technologie zwischen Hibernate und GWT
sowie Spring Security als Sicherheitslösung eine wesentliche Rolle.
Im Zuge der erforderlichen Architekturumstellungen habe ich das
Framework GwtRpcSpring eingesetzt, an dessen Entwicklung und Verbesserung
ich beteiligt bin.
Bei der Verteilung von Werbung auf Zielgeräte muss das System sehr
viele Anfragen von sehr vielen Geräten beantworten können und deshalb
hochperformant und hochverfügbar arbeiten.
Aus diesem Grund haben wir es für den Einsatz auf Clustern ausgelegt
(also mit einer sehr hohen Skalierbarkeit ausgestattet) und viele
komplexe Datenermittlungen in optimiertem HQL formuliert.
Als Entwicklungsmethode wurde konsequent Scrum eingesetzt.
Planung und Durchführung einer Schulung zu fortgeschrittenen Hibernate Funktionalitäten.
(Interceptor, Event System, Filter etc.).
Planung und Durchführung einer Schulung zu Spring, Spring AOP und Spring Security.
Projekt 2
=========
Ich bin aktiver Committer des Projekts GwtRpcSpring (auch "gwtrpc-spring" geschrieben).
Dieses Projekt dient zur Integration von GWT und Hibernate (via Gilead) in die Spring Welt
und ermöglicht das weitestgehend transparente Mergen und Klonen von Objekten durch Gilead
via AOP (Apektorientierte Programmierung) sowie die Entwicklung von GWT RPC Services (Servlets)
als Spring Beans.
Ich habe diverse Bugfixes und Beispiele zu dem Projekt beigesteuert und untertützte Anwender,
die Schwierigkeiten bei der Kombination dieser Technologien haben.
Programmiersprache: Java
Technologien: Java, GWT, Spring, Hibernate, Gilead, Spring AOP, AspectJ, Servlets
=== Januar 2008 - April 2009 ===
Projekt 1
=========
Kunde: Heidelberger Druckmaschinen AG / Standort Kiel
Projekt: Farbmesssystem
Architektur und Entwicklung einer komplexen Java und C++ Anwendung, die über
eine auf CORBA basierende proprietäre Middleware kommuniziert.
Hierbei auch Entwicklung eines auf Swing basierenden MVC Frameworks unter intensiver Verwendung von Annotations und Dependency Injection.
Technologien: Java, JPA, Hibernate, TopLink, Swing, Eclipse, MVC Framework, C++, C, CORBA, Visual Studio, Subversion, Ant, Derby, SQL etc.
Im Rahmen dieses Projekts haben wir auch Ideen eines im Versicherungsumfelds etablierten
MVC Framework verallgemeinert und für die Entwicklung des Java Teils der Anwendung verwendet.
Programmiersprachen: Java, C++, C
Sonstige Technologien: CORBA (SFcom), Swing, Touch Screens, Hibernate, Ant, Visual Studio, Eclipse, MVC
Projekt 2 (Nebentätigkeit)
==========================
Kunde: Galileo Press
Projekt: Buch über Java Enterprise Edition (JEE/J2EE) Version 6
Co-Autor eines umfangreichen Buchs zur kommenden Version 6 der Java Enterprise
Edition.
Technologien: Java, JPA, JEE (J2EE), Glassfish, JBoss, NetBeans, Eclipse, Spring
Projekt 3 (Nebentätigkeit)
==========================
Kunde: Eigenentwicklung
Projekt: Aufbau eines Portals für Vertriebsprofis
Technologien: Java, JavaEE (JEE/J2EE), JBoss, Hibernate (als JPA Implementierung), JavaScript, Ajax, GWT, SmartClient, Guice, Eclipse-RCP, Eclipse, Subversion, Ant, Maven2, SQL Server, Oracle, MySQL, SQL, JDBC, TCP/IP, Ethernet, HTTP, HTTPS, SSL
=== Februar 2007 - Dezember 2007 ===
Projekt 1
=========
Kunde: T-Systems / Mülheim a.d. Ruhr
Projekt: A2LL
Das Softwaresystem A2LL wird von der Bundesargentur für Arbeit
zur Berechnung und Verwaltung der ALG II Ansprüche Hilfebedürftiger
verwendet.
Als Software Architekt und Entwickler gehörten die Erarbeitung von
Verbesserungsvorschlägen inkl. ausführlicher Analysen der
Ist-Situation in der Software ebenso zu meinen Aufgaben
wie die Erstellung von entwicklungsbezogenen Dokumenten (z.B.
Architekturdokumentation).
Auch die Refaktorisierung ausgewählter Codestellen (z.B. sehr lange Funktionen)
und die Identifizierung toten Codes etc. gehörten zu den Aufgaben in diesem Projekt.
Diese Aufgaben wurden in einem Team, das sich aus mehreren
freiberuflichen Software Architekten zusammensetzt, bearbeitet.
Technologien: C++, VisualBasic, COM, Informix, CVS, TestDirector, Enterprise Architect (UML), Unit Tests,
Java, Tomcat, SOAP, WSDL, XML, HTML, JDBC, ESQL/C, JUnit, Ant, JMetrics, Project Analyser, Understand For C++ (Metrik Tool)
etc.
Projekt 2
=========
Entwicklung eines umfassenden Warenwirtschaftssystems mit Java Technologien.
Das WWS verfügt über Komponenten zur Kundenverwaltung, Auftragsbearbeitung,
Rechnungswesen, Lagerverwaltung, Mitarbeiterverwaltung, Anbindung von Barcode Scannern,
Lieferantenverwaltung, etc.
Technologien:
Java, Java Enterprise Edition (JEE5), Enterprise Java Beans (EJB 3.0),
Hibernate (im Projektverlauf ersetzt durch Java Persistence API), Spring,
Swing, Java JDK 5 (testweise wurde auch Java 6 eingesetzt), Eclipse, Subversion,
Web Services, XML, SOAP, JUnit, Ant etc.
=== Februar 2004 - Februar 2007 ===
Hauptprojekt
============
Kunde: Ford Werke AG / Köln
Projektsprachen: Englisch und Deutsch
Entwicklung/Verbesserung einer Anbindung von
Catia V5 in das Fixture Design & Evaluation
System FIDES der Firma Ford.
Hierbei wurde sehr intensiv mit CAA und C/C++
auf verschiedenen Plattformen (Windows und UNIX (HP-UX,
SUN Solaris, IBM AIX und SGI Irix)) gearbeitet.
Die Anbindung stellt einen vollständigen Geometrie-
und Topologie-Konverter von Catia V5 in den in
FIDES verwendeten Geometrie-Modellierer ACIS
dar.
Ebenfalls mit konvertiert werden unterschiedlichste
PMI-Informationen (Annotations, Weld Spots,
Locators etc.).
Im Rahmen dieses Projekts wurden Technologien in FIDES
eingeführt, die ich zu einem früheren Zeitpunkt bereits
als OpenSource-Werkzeuge veröffentlicht hatte.
Beispielsweise eine portable Bibliothek zum dynamischen
Nachladen von DLLs bzw. shared Objects oder eine
sehr effiziente HashTable Implementierung in ANSI C.
Erweiterungen des Buildsystems (komplexe proprietäre
Zusammenstellung von Makefiles) gehörten ebenso zum
Tätigkeitsfeld wie eine teilweise Administration der
verschiedenen Systeme.
Technologien: Catia V5, CAA, CATScript, MS Visual Studio, C, C++, Visual Basic (VB),
make, PVCS (und ClearCase), TCP/IP, Protokolle, FIDES, OpenGL, SQLite, SQL,
MS Word, MS Excel, Java, Teamcenter NX, XML etc.
Nebenprojekte
=============
Kunde: M&K Gewürze / Oerk-Erkenschwik
Entwicklung einer kompletten Unternehmenssoftware.
Die Software dient zum Beispiel zur Kunden- und
Lieferantenverwaltung, zur Auftragserfassung, zur
Erstellung und Bearbeitung von Packzetteln, Lieferscheinen
und Rechnungen und zur Lagerbestandsverwaltung.
Die Bearbeitung von Packzetteln und die Verwaltung
von Warenein- und Ausgängen wird über Barcode-Scanner
gesteuert.
Für die Barcode Scanner habe ich eine genau auf die
Anforderungen des Gesamtpakets abgestimmte Steuerungssoftware entwickelt.
Technologien: C, C++, wxWidgets, SQLite, PostgreSQL, XML, SQL, UML, Barcode Scanner
Kunde: livingSolutions GmbH / Cloppenburg
Entwicklung einer Simulationslösung zur Ressourcenplanung
und -optimierung in Kliniken und Krankenhäusern.
Die Simulationsengine wurde mit Hilfe intensiver Makroprogrammierung
auf Basis von MedModel realisiert.
Die Verwaltung der Simulationsobjekte (Entities und Ressourcen sowie
deren Eigenschaften und Verhaltensweisen) und die Ergebnisauswertung
wurde mit C/C++ und wxWidgets auf Basis von SQLite realisiert.
Abgesehen von MedModel kamen ausschließlich OpenSource-Werkzeuge
bei der Entwicklung zum Einsatz.
Technologien: C++, wxWidgets, SQLite, Firebird, Java, EJB, JBoss, UML,
SQL, JDBC, Hibernate, Spring, Swing, MedModel, ProModel
OpenSource-Projekt
Mitentwicklung der freien Forth Variante Reva.
Technologien: Forth, Assembler (x86), IUP
Weiterentwicklung und Maintainance des freien Smalltalk Systems LittleSmalltalk.
Technologien: Smalltalk, C, IUP
Außerdem:
Zusammenstellung, Installation und Administration meines eigenen
Rechnerparks bestehend aus mehreren Windows-, Linux- und UNIX-
Systemen (derzeit SUN Solaris, SGI Irix, HP-UX und IBM AIX).
=== Juni 2003 - Februar 2004 ===
Entwicklung der Integrationssoftware für ein bedeutendes
PDM-System in das 3D-CAD-System Unigraphics NX von EDS/PLM Solutions.
Die Integrationssoftware läuft unter Windows (2000/XP), SUN Solaris
und SGI/Irix.
Durch die Integrationssoftware kann das PDM-System vollständig aus
dem CAD-System heraus bedient werden. An der Oberfläche wird hierzu
die Menü- und Symbolleistenstruktur des CAD-Systems erweitert.
Bei allen Operationen werden natürlich die Beziehungen der CAD-Objekte
untereinander intakt erhalten und sorgfältig im PDM-System gepflegt.
Technologien: C, C++, Talk/API, CIM DATABASE, Unigraphics NX, OpenFUNC
=== Oktober 2002 - Mai 2003 ===
Tätigkeit 1
-----------
Projektziel: Entwicklung eines wirkungsvollen Lizenzschutzsystems,
mit dem Softwareunternehmen ihre Software wirkungsvoll
vor Raubkopien schützen und ihren Kunden flexible
Lizenzmodelle wie Floating-Lizenzen und Pay-Per-Use-
Lizenzen anbieten können.
Programmiersprache: ANSI-C (plus GUI-Frontends mit C++)
Plattformen: Windows (NT, 2000, XP), Linux, Solaris, HP-UX, AIX
Entwicklungsumgebungen: MS-Compiler (Kommandozeile, über make gesteuert)
Microsoft Visual C++ (für GUI-Frontends)
gcc (UN*X-Plattformen)
Tätigkeit 2
-----------
Im Oktober 2002 erschien mein erstes Buch. Seither schreibe
ich nebenbei häufiger Bücher und übernehme Fachlektorate für
verschiedene führende Computerbuch-Verlage in Deutschland.
Buch (Co-Autor)
---------------
Projektziel: Einführungsbuch C#
Programmiersprache: C#
Entwicklungsumgebung: Microsoft Visual Studio .NET
Fachlektorate
-------------
Mehrere mittlerweile erfolgreiche Bücher über VBA-Programmierung.
Programmiersprachen: VB, VBA
Entwicklungsumgebungen: Microsoft Visual Basic
=================
=== 1998-2002 ===
=================
Festanstellung als Senior Software Engineer bei einem
der führenden Anbieter von PDM-(Produkt Daten Management-)Systemen
in Europa.
Tätigkeiten:
Als Entwickler habe ich etliche Kunden- und Entwicklungsprojekte
von der Phase der ersten Anforderungsbeschreibungen bis zur kompletten
Produktivschaltung technisch begleitet.
Spezielle Entwicklungsschwerpunkte in dieser Zeit:
Aufgabe 1
---------
Projektziel: Komplette Neuorganisation der Dateiablage innerhalb
des PDM-Systems.
Schwerpunktprobleme:
o Kompatibel zur Installationsbasis bleiben
o Transaktionale Bearbeitung von Objekten, die im Dateisystem
durch mehrere Dateien repräsentiert werden. (Entweder werden
alle diese Dateien bei einer Operation richtig aktualisiert
oder kein, damit es nicht zu Inkonsistenzen kommen kann.)
o Zuverlässige Erkennung von Modifikationen und Hinweise
auf mögliche und tatsächliche Bearbeitungskonflikte, damit
zwei Anwender nicht gleichzeitig unabhängig voneinander
dasselbe Dokument ändern ohne diese Gleichzeitigkeit zu
bemerken.
o Optimierung von Datenübertragungen. Dateien sollen nur
zwischen dem PDM-System und den Arbeitsverzeichnissen der
Anwender ausgetauscht werden, wenn nicht schon aktuelle
oder gar modifizierte Revisionen vorliegen (ähnlich CVS,
nur komplexer)
Programmiersprachen: C und C++
Plattformen: Windows (NT, 2000, XP), Linux, AIX, Solaris, HP-UX, Irix
Entwicklungswerkzeuge: Microsoft Visual Studio, GNU-Tools,
MKS-Toolkit, Sehr intensiv auch: Oracle, SQL, PL/SQL
Aufgabe 2
---------
Realisierung eines komplexen Replikationsszenarios für
Dokumentendateien. Zwischen den PDM-Installationen eines
Kunden an verschiedenen Standorten, die über langsame
WANs verbunden sind, soll der Datenabgleich optimiert
werden.
Hierbei ging es darum, Dateien an verschiedenen Standorten
vorzuhalten und die Probleme aus Aufgabe 1 entsprechend
zu erweitern.
Auch völlig neue, teils unerwartete, Fragestellungen mussten
bearbeitet werden (was passiert mit Dateien, die an einem
Standort gelöscht oder verschoben werden etc.).
Aufgabe 3
---------
Weiterentwicklung der Programmierschnittstelle des PDM-
Systems zur Anbindung von CAD-Schnittstellen.
Hier waren diverse Probleme zu lösen.
Im Rahmen dieser Tätigkeit habe ich auch die Koordination
verschiedener externer Entwicklungspartner übernommen und
in enger Kooperation mit diesen Lösungen für die
gestellten Aufgaben entwickelt.
(Beispiel: Entwicklung der Anbindung des CAD-Systems
I-DEAS an das PDM-System)
Aufgabe 4
---------
Entwicklung und Weiterentwicklung der Schnittstellen zu
diversen CAD-Systemen.
Hier sind insbesondere die Anbindungen an SolidWorks und
Catia V5 zu nennen.
Bei diesen Anbindungen geht es darum, wichtige Funktionen
des PDM-Systems aus der Oberfläche des CAD-Systems heraus
anzusteuern und beispielsweise die Übertragung von Objekten
in das PDM-System bzw. aus dem PDM-System in die aktuelle
Sitzung des CAD-Systems zu steuern.
Aufgabe 5
---------
Entwicklung eines im Browser lauffähigen Graphvisualisierungstools
in Java mit Swing.
Mit diesem Werkzeug können Zusammenhänge zwischen Objekten, also
ganze Objektstrukturen, optisch wirkungsvoll präsentiert werden.
Beispielanwendungen waren:
- Zuordnung von Mitarbeitern zu Projekten
- Zuordnung von zu erstellenden Produkten zu Projekten (und weiter zu Mitarbeiten)
- Enthaltenseinsbeziehungen und sonstige Abhängigkeiten zwischen
Objekten (sowas wie 'um ein Auto zu bauen, braucht man Räder, Sitze etc.',
aber eben grafisch wirkungsvoller)
Das Visualisierungstool ist technisch komplett unabhängig von
den zu visualisierenden Strukturen und ihren Objekten und wird
über eine spezielle Graph-Beschreibungssprache gesteuert, die
ich im Kontext dieses Projekts definiert habe.
Für gerichtete, zykelfreie Graphen ist ein automatischer
Layout-Mechanismus integriert, so dass man sich nicht um die
Anordnung der Objekte auf dem Bildschirm kümmern muss, sondern
nur um die strukturellen Beziehungen zwischen den Objekten.
================
=== Vor 1998 ===
================
In erster Linie private Entwicklungsprojekte realisiert. Hier sind diverse
Compiler für verschiedene Programmiersprachen, Texteditoren, Schachprogramme
und sogar kleine Betriebssysteme entstanden.
Bei den meisten relevanten Projekten kamen die Programmiersprachen c (ansi-c
und kernighan und ritchie c) und c++ zum Einsatz.
Bei privaten Projekten verwende ich gerne auch Smalltalk und würde das
sehr gerne auch im beruflichen Umfeld intensivieren.
Objektorientierte Methoden und Modellierungen (von UML über
Rational Unified Process bis hin zu entsprechenden Werkzeugen) verwende
ich dann, wenn sie mir sinnvoll erscheinen.
Ich bin kein blinder Anhänger irgendeines Entwicklungs- oder
Programmierungsparadigmas, sondern wende die Technologien und
Methoden an, die mir zur Lösung der aktuellen Probleme am geeignetsten
erscheinen!
Bei den meisten Projekten wurden komplexe Client-/Server-Architekturen
realisiert, hierbei kamen Technologien wie CORBA, COM und auch proprietäre
auf TCP/IP basierende Protokolle zum Einsatz.