Projekt E-PostBrief
Aufgabenstellung:
Sicherstellung einer nachweisbar hohen inneren und äusseren Qualität
erstellter Software.
Standardisierung und Anpassung des Entwicklungs- und CI-Modells an sich ändernde
Rahmenbedingungen.
Meine Tätigkeit fokussiert sich auf die PHP-, C++- und JavaScript-Programmierer;
Java-Teams ziehen mich unregelmässig für Beratung oder Workshops zu Rate.
Teamgröße
ca. 50 Entwickler (PHP, C++, JavaScript, (Java))
Meine Rolle:
Analyse und Review des bestehenden Softwaresystems.
Bestimmung kritischer Metriken und Priorisierung praktikabler
Verbesserungsmöglichkeiten.
Beratung von Teams und Entwicklern (Review, Pairing, Coaching und Workshops):
- Analyse
- Test
- Implementierung
- Refactoring
- Sanierung
- Design
- Umgang mit Tools (Sprache, Versionskontrolle, CI-System, etc.)
Beratung der Scrum-Teams bei Estimation und Planning.
Einrichten und Betreuung einer Continuous Integration. Ziele:
- Reporting leicht verständlicher und handhabbarer Softwaremetriken
für Entwicklung und Management.
- Verhinderung des Releases bei nicht sichergestellter innerer
oder äusserer Qualität.
- Schnelle Bereitstellung releasefähiger Software.
Design, Implementierung und Einführung eines neuen Entwicklungsparadigmas anlässlich einer grundlegenden Architektur-Änderung in aus- und eingehend abhängigen Systemen.
Laufzeit
4 Jahre
// ============================================================================
Projekt Objektrelationales Mapping "rephORM"
Aufgabenstellung:
Zur Zeit beherrschen mit Propel und Doctrine zwei Frameworks den Markt für
PHP-basiertes objekrelationales Mapping. Die Idee ist nun, ein weiteres
Framework zu veröffentlichen, das näher an den Schnittstellen von Javas
Hibernate orientiert ist (ohne eine Portierung darzustellen) und die
Fokussierung auf den Umgang mit Objekten statt auf Datenbanktabellen erheblich
stärker forciert als die vorliegenden Lösungen.
Ziele:
Veröffentlichung eines Frameworks zum objektrelationalen Mappings
mit den Merkmalen:
- Konfiguration auf Basis der Reflection-API und Annotationen
- Transparente und transaktionssichere Persistierung
- Objektorientierte Abfragesprache mit dem Specification-Pattern
- Generische Datenbankunterstützung mittels PDO
- Unterstützung klassenbasierter Vererbung mittels Concrete-Table-Inheritance
- Transparente bidirektionale Assoziationen
- Objektorientierter Interpreter zur transparenten Behandlung transienter
und persistenter Objekte
- Unterstützung aller Relationstypen des relationalen Modells: 1:1, 1:n, m:n
- Unterstützung von abhängigem Mapping
- Höchstmögliche Typsicherheit der Signaturen
- Volle Konformität zu den Zend Coding Standards und der phpDoc
- Testgetriebene Entwicklung mit 100% Code-Coverage
- Geringstmögliche zyklomatische Komplexität;
Change Risk Analysis and Prediction (CRAP) < 6
Controlling:
Das Projekt ist im nicht öffentlichen Beta-Stadium, erfüllt aber alle
Anforderungen. Zur Zeit verfolgt das Refactoring das Ziel weiterer Vereinfachung
der Schnittstellen.
Teamgröße:
Bis zur Veröffentlichung Einzelprojekt
Meine Rolle:
Anforderungsdefinition, Planung, Programmierung
Technische DV-Basis:
Linux, PHP 5.5, PDO, PHPUnit, xdebug, Subversion, trac, bitten, pdepend
Laufzeit:
in Entwicklung
// ============================================================================
Projekt Photovoltaik
Aufgabenstellung:
Der Kunde will den Käufern seiner Photovoltaikanlagen eine Online-Plattform zur
Verfügung stellen, das Leistungs- und Zustandsdaten der Anlagen automatisch
ermittelt und auswertet.
Damit können Supportmitarbeiter automatisch technische Probleme der Anlagen
erkennen und von sich aus entsprechende Schritte einleiten. Der Anlagenbetreiber
kann die Performance seiner Anlage im Vergleich zu anderen einschätzen und
Verbesserungsmöglichkeiten erkennen.
Ziele:
Optimierung des Entwicklungsprozesses, Bereitstellen fehlender technischer
Infrastruktur, Optimierung der Testsuite, Sicherstellen des fristgerechten
ersten Releases.
Teamgröße
4 Entwickler
Meine Rolle:
Definition und Priorisierung eines Product Backlogs.
Etablierung regelmässiger Meetings mit Entwicklern und Produktverantwortlichen.
Einrichten einer portablen Entwicklungsumgebung auf Basis vmware, PHP5, Apache,
MySQL, PHPUnit, xdebug, ZendDebugger.
Einrichten von trac als zentrales Tool zur Ticketverwaltung, Dokumentation und
zum Repository-Browsing.
Vorbereiten einer bitten-basierten Continuous Integration.
Optimierung der Testsuite.
Implementieren diverser Funktionalitäten im Produktionssystem:
- Caching von per SOAP gewonnener Daten
- Beschwerdetracking
Technische DV-Basis
Linux/Windows, PHP5, Zend Framework, ezComponents,
PHPUnit, Subversion, trac, bitten
Laufzeit
2 Monate
// ============================================================================
Projekt Online Learning Plattform
Aufgabenstellung:
Der Kunde strebt den Launch einer Plattform für online-gestützte
Wissensvermittlung an. Die Realisierung einer entsprechenden PHP5-Lösung hat er
einem externen Dienstleister überlassen, der die Aufgabe mit dem
Symfony-Framework angegangen ist. Der externe Dienstleister steht nicht mehr zur
Verfügung und hat die halb fertigen Sourcen ohne Testsuite, mit rudimentärer
Dokumentation und erheblichen Designmängeln dem Kunden überlassen.
Die Aufgabe besteht darin, ein taugliches Software Configuration Management zu
etablieren und das System so lauffähig zu bekommen, dass einerseits die
Geschäftsziele damit erreichbar werden, andererseits der Kunde in die Lage
versetzt wird, künftig mit eigenen Entwicklern weiterzumachen.
Eine davon isolierbare Aufgabe war die Programmierung einer lauffähigen
Payment-Engine, die generischen Umgang mit den APIs möglichst vieler Anbietern
von Payment-Services ermöglicht.
Ziele:
Implementierung eines Software Configuration Management auf Basis Subversion,
PHPUnit, trac und bitten.
Testgetriebene Entwicklung einer generischen Payment-Schnittstelle.
Controlling:
Payment-Schnittstelle besteht ihre Tests, ist voll dokumentiert und läuft.
Software Configuration Management ist implementiert, dokumentiert, übergeben und
läuft.
Teamgröße:
3-4 Programmierer
Meine Rolle:
Beratung, Software Configuration Management, Programmierung, Test
Technische DV-Basis:
Linux, PHP5, Symfony, MySQL, PHPUnit, trac, bitten, xdebug, PostgreSQL, Python
Laufzeit:
3 Monate
// ============================================================================
Projekt Software Configuration Management
Aufgabenstellung:
Zur Reorganisation der Arbeitsabläufe der etwa 50 Programmierer benötigt der
Kunde eine entsprechende Entwicklungsumgebung auf Basis Linux, VMWare,
Subversion, MySQL, PHP5, PHPUnit und Typo3. Zusätzlich möchte er das Deployment
der Software auf die Systeme der Kunden künfig möglichst automatisiert
erledigen.
Ziele:
Bereitstellung einer virtualisierten Entwicklungsumgebung auf Basis Eclipse,
Linux, PHP5, MySQL, Typo3, PHPUnit und xdebug. Ermöglichung des klassischen
Subversion-Arbeitszyklus. Bereitstellung einer prototypischen Testsuite.
Implementieren von Phing-Targets zur Deployment-Automatisierung.
Controlling:
Die Systeme (Entwicklungsumgebung und Deployment-Tools) bestehen ihre Tests und
wurden nach erfolgreicher Einweisung an die Teamleiter übergeben.
Teamgröße:
Einzelentwickler
Meine Rolle:
Beratung, Programmierung, Test und Einweisung
Technische DV-Basis:
Linux, PHP5, PHPUnit, Subversion, VMWare, Phing
Laufzeit:
5 Wochen
// ============================================================================
Projekt Mystery Shopping
Aufgabenstellung:
Der Kunde betreibt im Auftrag verschiedener Unternehmen v.a. aus den Branchen
Gastronomie, Einzelhandel und Automobil Mystery Shopping zur Messung und
Dokumentation der Service-Qualität in Filialbetrieben. Die dabei erhobenen
Testergebnisse müssen online erfasst und nach flexiblen Kriterien
mandantenspezifisch ausgewertet und präsentiert werden.
Die Aufgaben bestehen aus Pflege und Wartung des Legacy-Systems (PHP 4) sowie
der Übernahme und Fertigstellung eines vorbereiteten neuen Systems (PHP 5).
Mein Schwerpunkt: Code-Review, Implementieren eines Software Configuration
Managements für das neue System und Weiterentwicklung der hier vorliegenden
Sourcen.
Ziele:
Sichere Migration der Legacy-Daten in das neue System. Wahren der
Auswertungsergebnisse bei geänderten Datenstrukturen. Schaffen der Möglichkeit,
künftig weitere Entwickler in das Team einzubinden.
Controlling:
Das Code-Review ergab, dass das vorbereitete neue System sich nicht dafür
eignete, von anderen Programmierern übernommen und weiterentwickelt zu werden.
Grund: Das System war über 2 Jahre hinweg von einem einzelnen unerfahrenen
Programmierer erstellt worden und verfügte bei erheblicher Komplexität über
keine Testsuite. Die Dokumentation war rudimentär; die Implementierung wies
erhebliche Designmängel auf. Der Verzicht auf die Verwendung standardisierter
Frameworks und Bibliotheken führte zu einer großen Zahl individueller Lösungen.
Automatisch generierte Metriken ergaben ein entsprechendes Bild v.a. in Bezug
auf zyklomatische Komplexität, efferente und afferente Kopplung, Klassenanzahl
etc.
Das Ergebnis war mein Rat und die vom Kunden getroffene Entscheidung, das
vorbereitete System zur Seite zu legen und komplett neu zu beginnen.
Ich beendete mein Engagement vorläufig mit der Implementierung einer dafür
geeigneten Entwicklungsumgebung mit Subversion, Eclipse, MySQL, PHP5,
Zend Framework, PHPUnit, xdebug, Zend Debugger, trac, bitten und VMWare.
Die Entscheidung über eine Fortführung des Projektes steht noch aus.
Teamgröße:
5 Entwickler
Meine Rolle:
Software Configuration Management. Objektorientierte Analyse und Design.
Beratung und Coaching. Programmierung.
Technische DV-Basis:
LAMP: Linux, Apache, PHP 5, PHPUnit, trac, bitten, xdebug
Laufzeit:
5 Monate
// ============================================================================
Projekt Social Network
Aufgabenstellung:
Implementierung und Launch einer umfassenden Social Network-Platform.
Meine Schwerpunkte: Organisation und Setup der Testsuite,
Definition und Implementierung des Authorisierungssystems,
Definition und Implementierung der User-Klasse und aller ihrer Beziehungen
im Social Network.
Ziele:
Das System sollte im Backend weitestgehend testgetrieben entwickelt werden
können.
Das Authorisierungssystem sollte hochflexibel fast alle denkbaren
Geschäftsideen abbilden können (Alptraum-Beispiel: "Dieses Musikstück soll
vom 01.03 bis 30.04 auf den deutschen Seiten, vom 10.03 bis 15.04 auf den
französischen Seiten erhältlich sein. Benutzt ein Deutscher die französische
Seite, erhält er das Stück wie auf der deutschen Seite. Ein Franzose auf der
deutschen Seite erhält es jedoch wie auf der französischen Seite. Es sei denn,
er unterhält innerhalb des Social Networks Beziehungen zu mindestens drei
Deutschen" ...)
Controlling:
Das Backend erfüllte die in es gesetzten Erwartungen.
Konsequent testgetriebene Entwicklung ermöglichte ständiges Refactoring
aufgrund sich schnell ändernder/erweiternder Kundenanforderungen.
Teamgröße:
5-10 Entwickler Backend, 10-30 Entwickler Frontend, 5-6 Service-Planner
Meine Rolle:
Backend:
Anforderungsdefinition, Planung, Programmierung, Test
Später Beratung:
Entwickeln weitergehender Refactoring-Ansätze,
Definition und Setup von Continuous Integration
Technische DV-Basis:
LAMP: Linux, Apache, MySQL, PHP5, Propel, PHPUnit
Laufzeit:
10 Monate
// ============================================================================
Projekt Online Community im Bereich Health Care
Aufgabenstellung:
Relaunch einer hochfrequentierten deutschen Online Community im Bereich
Health Care. Legacy System: Selbstentwickeltes PHP4-System mit großer Codebasis
(keine Versionskontrolle, undokumentiert, ungetestet. Entwickler nicht mehr
verfügbar). Relaunch auf Basis bitweaver (http://bitweaver.org).
Meine Aufgabenstellungen: Setup von Versionskontrollsystem und Bugtracker,
Definition, Implementierung und Test des Rechtesystems und der Foren-Engine,
Optimierung der Datenbank-Schicht, Migration der Datenbestände.
Ziele:
Die Migration musste nahtlos, möglichst ohne Downtime erfolgen.
Die Forenengine musste erhebliche Zugriffszahlen und Datentransfers
(ca. 8MB/sec) performant bedienen können, dabei jedoch die vom Legacy System
her gewohnte Flexibilität (unbegrenzt baumartiger Aufbau vergleichbar einer
Mailinglist) sowie eine auf einzelne Postings bezogene Authorisierung bieten.
Controlling:
Das System wurde "fliessend" migriert; die viele GB umfassenden Altforen
wurden eines nach dem anderen in das neue System migriert. Die auf
Strategy basierende Authorisierung erlaubte eine flexible und einfache
Anpassung der User-Berechtigungen anhand später geänderter Kundenanforderungen.
Die Performance der Foren-Engine erreichte durch Einsatz von shared-memory-
Caches den Durchsatz des Altsystems.
Teamgröße:
4 Entwickler
Meine Rolle:
Anforderungsdefinition, Planung, Programmierung
Technische DV-Basis:
LAMP: Linux, Apache, MySQL, PHP 4, bitweaver, AdoDB
Laufzeit:
3 Monate
// ============================================================================
Projekt Archivsystem ¿myArchive¿
Aufgabenstellung:
Ein neu gegründetes Institut für Qualitätssicherung im Gesundheitssystem
benötigt ein webbasiertes Archivsystem zur Sicherung und Publikation relevanter
Studien, Artikel und Statistiken.
Ziele:
- Benutzer sollen sich frei registrieren und ihren Account verwalten können
- Redakteure können online Artikel verfassen und für HTML formatieren
- Redakteure können Artikel mit Schlagwörtern versehen
- Redakteure können Sachgebiete beschreiben und Artikel in Sachgebiete
einordnen
- Sachgebiete haben eine baumartige Struktur, so dass sich eine natürliche
Navigationsmöglichkeit ergibt
- Artikel enthalten Metainformationen (Zeitstempel, Versionsnummer,
verantwortlicher Redakteur, Sprachen, Orte, Autoren, Herkunft)
- Redakteure können Artikel anderen Redakteuren zuweisen - Redakteure können Artikel privat (nur für sich), geschützt (nur für
berechtigte Nutzer) oder öffentlich (für alle Nutzer) verwalten
- Redakteure können beliebig viele Dokumente beliebiger Formate hochladen und
an Artikel binden
- Die Titel hochgeladener Dokumente werden bei Suchabfragen berücksichtigt - Benutzer können durch die Sachgebiete navigieren - Benutzer können eine Volltextsuche starten - Benutzer können freie Suchkriterien definieren und zusammenstellen. - Freie Suchkriterien erlauben die Suche nach Metainformationen, Dokumenttiteln
und Artikelinhalten
- Benutzer können sich automatisch E-Mails zusenden lassen, wenn in bestimmten
Sachgebieten oder Artikeln Änderungen erfolgen (neuer Artikel im Sachgebiet,
Artikel geändert, neues Dokument im Artikel etc.)
- Administratoren können Benutzer und Rechte verwalten und den
Veröffentlichungsworkflow privat - geschützt - öffentlich möglichst ohne
Rückgriff auf den Entwickler ändern.
Controlling:
Alle Ziele funktional erreicht. Das System wurde mit phpMyUser und einem selbst
geschriebenen Mapping-Tool objektorientiert realisiert und läuft seit Einführung
im Frühjahr 2006 wartungsfrei.
Meine Rolle:
Anforderungsdefinition, Planung, Programmierung,
Installation & Wartung, Einweisung
Technische DV-Basis:
LAMP: Linux , Apache, MySQL 4.1, PHP 5
Laufzeit:
Seit Frühjahr 2006
// ============================================================================
Projekt Online-Buchungs-System
Aufgabenstellung:
Ein großer deutscher Internet-Provider stellte seinen Neukunden Einführungs-
seminare zum Thema Webdesign über Gutscheine zur Verfügung.
Diese Gutscheine konnten bei einem großen deutschen IT-Trainingsanbieter
eingelöst werden.
Es sollte eine Online-PLattform geschaffen werden, die den Kunden das Einlösen
der Gutscheine ermöglicht und dem Trainingsanbieter das Verwalten erheblicher
Anmeldungszahlen und das Planen der entsprechenden Seminare erlaubt.
Ziele:
Effizientes Verwalten erheblicher Anmeldezahlen.
Vollständige Automation von Anmeldebestätigung, Warteliste, Stornierung etc.
Fehlerfreies Verhindern von "Überbuchungen" auch unter sehr hoher Last.
Controlling:
Das System erlaubte die fehlerfreie und komplette Verwaltung
mehrerer tausend Anmeldungen in wenigen Monaten
ohne Aufstockung des Peronals oder Umstellung anderer Prozesse
Meine Rolle:
Anforderungsdefinition, Planung, Programmierung, Einweisung
Technische DV-Basis:
LAMP: Linux, Apache, MySQL (InnoDB), PHP 4
Laufzeit:
6 Monate
// ============================================================================
Projekt Authentifizierungs- und Autorisierungs-Framework "phpMyUser"
Aufgabenstellung:
Für die Entwicklung beliebiger PHP-Applikationen soll
ein Framework geschaffen werden, dass die immer wiederkehrenden Aufgaben
- Authentifizierung
- Autorisierung
- Internationalisierung
- Mandantenverwaltung
in einem komplett objektorientierten API zur Verfügung stellt.
Ziele:
1. Reduktion der Entwicklungszeiten neuer PHP-Anwendungen
2. Integration beliebig vieler Anwendungen in einem zentralen Framework
3. Unterstützung mandantenfähiger Anwendung
Controlling:
Alle Ziele funktional erreicht. phpMyUser hat praktische Bewährungsprobe
in einem hoch frequentierten Online-Buchungssystem bestanden.
Meine Rolle:
Anforderungsdefinition, Planung, Programmierung
Technische DV-Basis:
LAMP: Linux , Apache, MySQL 4.1, PHP 4/5
WAMP: Windows, Apache, MySQL 4.1, PHP 4/5
Laufzeit:
Noch in Entwicklung. Spätes Beta-Stadium
// ============================================================================
Projekt Online-Recruiting Tool "ComPool"
Aufgabenstellung:
Für die auftragsbezogene Rekrutierung externer Berater, Trainer und
Programmierer sollte eine Online-Plattform geschaffen werden,
in der
1. autorisierte Externe ihre Skills, Verfügbarkeiten und Honorarvorstellungen
hinterlegen
2. der Projektanbieter seine Projekte ausschreibt
3. die Externen dem Projektanbieter konkrete Angebote für die Projekt-
realisierung unterbreiten
4. der Projektanbieter Aufträge erteilt und
5. den Projekterfolg dokumentiert, die externen Auftragnehmer bewertet und so
zu einem Ranking der Externen gelangt
Ziele:
1. Reduktion der internen Prozessaufwände zur Rekrutierung externer Kräfte
2. Langfristiger Aufbau qualifizierter Pools externer Kräfte
3. Qualitätssteigerung der Leistungserbringung des Projektanbieters
4. Reduktion direkter Einkaufskosten
Controlling:
Ziel 1: Interne Prozessaufwände um ca. 80% gesenkt
Ziel 2: Je nach Einsatz des Tools beim einzelnen Anbieter sehr guter Erfolg
Ziel 3: Nach längerem Einsatz deutlich messbar
Ziel 4: Direkte Einkaufskosten durchschnittlich um 10% gesenkt
Meine Rolle:
Anforderungsdefinition, Planung, Programmierung, Installation und Einführung
(mit Akzeptanzgewinnung der Externen)
Technische DV-Basis:
LAMP: Linux, Apache, MySQL, PHP 4
WAMP: Windows, Apache, MySQL, PHP 4
Laufzeit:
Seit 2002 bei 7 Projektanbietern im Einsatz
// ============================================================================
Ausbildung Pascal
88-95: Studium an den Universitäten Bonn und Bamberg. Abschluss: Dipl.-Theol.Ausbildung in Projektleitung u. Kommunikation
99 : Umschulung Projektleiter.Ausbildung: Projektleitung, Betriebswirtschaft, Logistik
99-05: Festanstellung Vertrieb, Softwareentwicklung, Projektleitung IT-Dienstleistungen.Ausbildung in Vertrieb, Projektmanagement u. Webentwicklung
05- : Freiberuflich tätig als Softwareentwickler, Coach, Berater u. ScrumMaster.Projekt E-PostBrief
Aufgabenstellung:
Sicherstellung einer nachweisbar hohen inneren und äusseren Qualität
erstellter Software.
Standardisierung und Anpassung des Entwicklungs- und CI-Modells an sich ändernde
Rahmenbedingungen.
Meine Tätigkeit fokussiert sich auf die PHP-, C++- und JavaScript-Programmierer;
Java-Teams ziehen mich unregelmässig für Beratung oder Workshops zu Rate.
Teamgröße
ca. 50 Entwickler (PHP, C++, JavaScript, (Java))
Meine Rolle:
Analyse und Review des bestehenden Softwaresystems.
Bestimmung kritischer Metriken und Priorisierung praktikabler
Verbesserungsmöglichkeiten.
Beratung von Teams und Entwicklern (Review, Pairing, Coaching und Workshops):
- Analyse
- Test
- Implementierung
- Refactoring
- Sanierung
- Design
- Umgang mit Tools (Sprache, Versionskontrolle, CI-System, etc.)
Beratung der Scrum-Teams bei Estimation und Planning.
Einrichten und Betreuung einer Continuous Integration. Ziele:
- Reporting leicht verständlicher und handhabbarer Softwaremetriken
für Entwicklung und Management.
- Verhinderung des Releases bei nicht sichergestellter innerer
oder äusserer Qualität.
- Schnelle Bereitstellung releasefähiger Software.
Design, Implementierung und Einführung eines neuen Entwicklungsparadigmas anlässlich einer grundlegenden Architektur-Änderung in aus- und eingehend abhängigen Systemen.
Laufzeit
4 Jahre
// ============================================================================
Projekt Objektrelationales Mapping "rephORM"
Aufgabenstellung:
Zur Zeit beherrschen mit Propel und Doctrine zwei Frameworks den Markt für
PHP-basiertes objekrelationales Mapping. Die Idee ist nun, ein weiteres
Framework zu veröffentlichen, das näher an den Schnittstellen von Javas
Hibernate orientiert ist (ohne eine Portierung darzustellen) und die
Fokussierung auf den Umgang mit Objekten statt auf Datenbanktabellen erheblich
stärker forciert als die vorliegenden Lösungen.
Ziele:
Veröffentlichung eines Frameworks zum objektrelationalen Mappings
mit den Merkmalen:
- Konfiguration auf Basis der Reflection-API und Annotationen
- Transparente und transaktionssichere Persistierung
- Objektorientierte Abfragesprache mit dem Specification-Pattern
- Generische Datenbankunterstützung mittels PDO
- Unterstützung klassenbasierter Vererbung mittels Concrete-Table-Inheritance
- Transparente bidirektionale Assoziationen
- Objektorientierter Interpreter zur transparenten Behandlung transienter
und persistenter Objekte
- Unterstützung aller Relationstypen des relationalen Modells: 1:1, 1:n, m:n
- Unterstützung von abhängigem Mapping
- Höchstmögliche Typsicherheit der Signaturen
- Volle Konformität zu den Zend Coding Standards und der phpDoc
- Testgetriebene Entwicklung mit 100% Code-Coverage
- Geringstmögliche zyklomatische Komplexität;
Change Risk Analysis and Prediction (CRAP) < 6
Controlling:
Das Projekt ist im nicht öffentlichen Beta-Stadium, erfüllt aber alle
Anforderungen. Zur Zeit verfolgt das Refactoring das Ziel weiterer Vereinfachung
der Schnittstellen.
Teamgröße:
Bis zur Veröffentlichung Einzelprojekt
Meine Rolle:
Anforderungsdefinition, Planung, Programmierung
Technische DV-Basis:
Linux, PHP 5.5, PDO, PHPUnit, xdebug, Subversion, trac, bitten, pdepend
Laufzeit:
in Entwicklung
// ============================================================================
Projekt Photovoltaik
Aufgabenstellung:
Der Kunde will den Käufern seiner Photovoltaikanlagen eine Online-Plattform zur
Verfügung stellen, das Leistungs- und Zustandsdaten der Anlagen automatisch
ermittelt und auswertet.
Damit können Supportmitarbeiter automatisch technische Probleme der Anlagen
erkennen und von sich aus entsprechende Schritte einleiten. Der Anlagenbetreiber
kann die Performance seiner Anlage im Vergleich zu anderen einschätzen und
Verbesserungsmöglichkeiten erkennen.
Ziele:
Optimierung des Entwicklungsprozesses, Bereitstellen fehlender technischer
Infrastruktur, Optimierung der Testsuite, Sicherstellen des fristgerechten
ersten Releases.
Teamgröße
4 Entwickler
Meine Rolle:
Definition und Priorisierung eines Product Backlogs.
Etablierung regelmässiger Meetings mit Entwicklern und Produktverantwortlichen.
Einrichten einer portablen Entwicklungsumgebung auf Basis vmware, PHP5, Apache,
MySQL, PHPUnit, xdebug, ZendDebugger.
Einrichten von trac als zentrales Tool zur Ticketverwaltung, Dokumentation und
zum Repository-Browsing.
Vorbereiten einer bitten-basierten Continuous Integration.
Optimierung der Testsuite.
Implementieren diverser Funktionalitäten im Produktionssystem:
- Caching von per SOAP gewonnener Daten
- Beschwerdetracking
Technische DV-Basis
Linux/Windows, PHP5, Zend Framework, ezComponents,
PHPUnit, Subversion, trac, bitten
Laufzeit
2 Monate
// ============================================================================
Projekt Online Learning Plattform
Aufgabenstellung:
Der Kunde strebt den Launch einer Plattform für online-gestützte
Wissensvermittlung an. Die Realisierung einer entsprechenden PHP5-Lösung hat er
einem externen Dienstleister überlassen, der die Aufgabe mit dem
Symfony-Framework angegangen ist. Der externe Dienstleister steht nicht mehr zur
Verfügung und hat die halb fertigen Sourcen ohne Testsuite, mit rudimentärer
Dokumentation und erheblichen Designmängeln dem Kunden überlassen.
Die Aufgabe besteht darin, ein taugliches Software Configuration Management zu
etablieren und das System so lauffähig zu bekommen, dass einerseits die
Geschäftsziele damit erreichbar werden, andererseits der Kunde in die Lage
versetzt wird, künftig mit eigenen Entwicklern weiterzumachen.
Eine davon isolierbare Aufgabe war die Programmierung einer lauffähigen
Payment-Engine, die generischen Umgang mit den APIs möglichst vieler Anbietern
von Payment-Services ermöglicht.
Ziele:
Implementierung eines Software Configuration Management auf Basis Subversion,
PHPUnit, trac und bitten.
Testgetriebene Entwicklung einer generischen Payment-Schnittstelle.
Controlling:
Payment-Schnittstelle besteht ihre Tests, ist voll dokumentiert und läuft.
Software Configuration Management ist implementiert, dokumentiert, übergeben und
läuft.
Teamgröße:
3-4 Programmierer
Meine Rolle:
Beratung, Software Configuration Management, Programmierung, Test
Technische DV-Basis:
Linux, PHP5, Symfony, MySQL, PHPUnit, trac, bitten, xdebug, PostgreSQL, Python
Laufzeit:
3 Monate
// ============================================================================
Projekt Software Configuration Management
Aufgabenstellung:
Zur Reorganisation der Arbeitsabläufe der etwa 50 Programmierer benötigt der
Kunde eine entsprechende Entwicklungsumgebung auf Basis Linux, VMWare,
Subversion, MySQL, PHP5, PHPUnit und Typo3. Zusätzlich möchte er das Deployment
der Software auf die Systeme der Kunden künfig möglichst automatisiert
erledigen.
Ziele:
Bereitstellung einer virtualisierten Entwicklungsumgebung auf Basis Eclipse,
Linux, PHP5, MySQL, Typo3, PHPUnit und xdebug. Ermöglichung des klassischen
Subversion-Arbeitszyklus. Bereitstellung einer prototypischen Testsuite.
Implementieren von Phing-Targets zur Deployment-Automatisierung.
Controlling:
Die Systeme (Entwicklungsumgebung und Deployment-Tools) bestehen ihre Tests und
wurden nach erfolgreicher Einweisung an die Teamleiter übergeben.
Teamgröße:
Einzelentwickler
Meine Rolle:
Beratung, Programmierung, Test und Einweisung
Technische DV-Basis:
Linux, PHP5, PHPUnit, Subversion, VMWare, Phing
Laufzeit:
5 Wochen
// ============================================================================
Projekt Mystery Shopping
Aufgabenstellung:
Der Kunde betreibt im Auftrag verschiedener Unternehmen v.a. aus den Branchen
Gastronomie, Einzelhandel und Automobil Mystery Shopping zur Messung und
Dokumentation der Service-Qualität in Filialbetrieben. Die dabei erhobenen
Testergebnisse müssen online erfasst und nach flexiblen Kriterien
mandantenspezifisch ausgewertet und präsentiert werden.
Die Aufgaben bestehen aus Pflege und Wartung des Legacy-Systems (PHP 4) sowie
der Übernahme und Fertigstellung eines vorbereiteten neuen Systems (PHP 5).
Mein Schwerpunkt: Code-Review, Implementieren eines Software Configuration
Managements für das neue System und Weiterentwicklung der hier vorliegenden
Sourcen.
Ziele:
Sichere Migration der Legacy-Daten in das neue System. Wahren der
Auswertungsergebnisse bei geänderten Datenstrukturen. Schaffen der Möglichkeit,
künftig weitere Entwickler in das Team einzubinden.
Controlling:
Das Code-Review ergab, dass das vorbereitete neue System sich nicht dafür
eignete, von anderen Programmierern übernommen und weiterentwickelt zu werden.
Grund: Das System war über 2 Jahre hinweg von einem einzelnen unerfahrenen
Programmierer erstellt worden und verfügte bei erheblicher Komplexität über
keine Testsuite. Die Dokumentation war rudimentär; die Implementierung wies
erhebliche Designmängel auf. Der Verzicht auf die Verwendung standardisierter
Frameworks und Bibliotheken führte zu einer großen Zahl individueller Lösungen.
Automatisch generierte Metriken ergaben ein entsprechendes Bild v.a. in Bezug
auf zyklomatische Komplexität, efferente und afferente Kopplung, Klassenanzahl
etc.
Das Ergebnis war mein Rat und die vom Kunden getroffene Entscheidung, das
vorbereitete System zur Seite zu legen und komplett neu zu beginnen.
Ich beendete mein Engagement vorläufig mit der Implementierung einer dafür
geeigneten Entwicklungsumgebung mit Subversion, Eclipse, MySQL, PHP5,
Zend Framework, PHPUnit, xdebug, Zend Debugger, trac, bitten und VMWare.
Die Entscheidung über eine Fortführung des Projektes steht noch aus.
Teamgröße:
5 Entwickler
Meine Rolle:
Software Configuration Management. Objektorientierte Analyse und Design.
Beratung und Coaching. Programmierung.
Technische DV-Basis:
LAMP: Linux, Apache, PHP 5, PHPUnit, trac, bitten, xdebug
Laufzeit:
5 Monate
// ============================================================================
Projekt Social Network
Aufgabenstellung:
Implementierung und Launch einer umfassenden Social Network-Platform.
Meine Schwerpunkte: Organisation und Setup der Testsuite,
Definition und Implementierung des Authorisierungssystems,
Definition und Implementierung der User-Klasse und aller ihrer Beziehungen
im Social Network.
Ziele:
Das System sollte im Backend weitestgehend testgetrieben entwickelt werden
können.
Das Authorisierungssystem sollte hochflexibel fast alle denkbaren
Geschäftsideen abbilden können (Alptraum-Beispiel: "Dieses Musikstück soll
vom 01.03 bis 30.04 auf den deutschen Seiten, vom 10.03 bis 15.04 auf den
französischen Seiten erhältlich sein. Benutzt ein Deutscher die französische
Seite, erhält er das Stück wie auf der deutschen Seite. Ein Franzose auf der
deutschen Seite erhält es jedoch wie auf der französischen Seite. Es sei denn,
er unterhält innerhalb des Social Networks Beziehungen zu mindestens drei
Deutschen" ...)
Controlling:
Das Backend erfüllte die in es gesetzten Erwartungen.
Konsequent testgetriebene Entwicklung ermöglichte ständiges Refactoring
aufgrund sich schnell ändernder/erweiternder Kundenanforderungen.
Teamgröße:
5-10 Entwickler Backend, 10-30 Entwickler Frontend, 5-6 Service-Planner
Meine Rolle:
Backend:
Anforderungsdefinition, Planung, Programmierung, Test
Später Beratung:
Entwickeln weitergehender Refactoring-Ansätze,
Definition und Setup von Continuous Integration
Technische DV-Basis:
LAMP: Linux, Apache, MySQL, PHP5, Propel, PHPUnit
Laufzeit:
10 Monate
// ============================================================================
Projekt Online Community im Bereich Health Care
Aufgabenstellung:
Relaunch einer hochfrequentierten deutschen Online Community im Bereich
Health Care. Legacy System: Selbstentwickeltes PHP4-System mit großer Codebasis
(keine Versionskontrolle, undokumentiert, ungetestet. Entwickler nicht mehr
verfügbar). Relaunch auf Basis bitweaver (http://bitweaver.org).
Meine Aufgabenstellungen: Setup von Versionskontrollsystem und Bugtracker,
Definition, Implementierung und Test des Rechtesystems und der Foren-Engine,
Optimierung der Datenbank-Schicht, Migration der Datenbestände.
Ziele:
Die Migration musste nahtlos, möglichst ohne Downtime erfolgen.
Die Forenengine musste erhebliche Zugriffszahlen und Datentransfers
(ca. 8MB/sec) performant bedienen können, dabei jedoch die vom Legacy System
her gewohnte Flexibilität (unbegrenzt baumartiger Aufbau vergleichbar einer
Mailinglist) sowie eine auf einzelne Postings bezogene Authorisierung bieten.
Controlling:
Das System wurde "fliessend" migriert; die viele GB umfassenden Altforen
wurden eines nach dem anderen in das neue System migriert. Die auf
Strategy basierende Authorisierung erlaubte eine flexible und einfache
Anpassung der User-Berechtigungen anhand später geänderter Kundenanforderungen.
Die Performance der Foren-Engine erreichte durch Einsatz von shared-memory-
Caches den Durchsatz des Altsystems.
Teamgröße:
4 Entwickler
Meine Rolle:
Anforderungsdefinition, Planung, Programmierung
Technische DV-Basis:
LAMP: Linux, Apache, MySQL, PHP 4, bitweaver, AdoDB
Laufzeit:
3 Monate
// ============================================================================
Projekt Archivsystem ¿myArchive¿
Aufgabenstellung:
Ein neu gegründetes Institut für Qualitätssicherung im Gesundheitssystem
benötigt ein webbasiertes Archivsystem zur Sicherung und Publikation relevanter
Studien, Artikel und Statistiken.
Ziele:
- Benutzer sollen sich frei registrieren und ihren Account verwalten können
- Redakteure können online Artikel verfassen und für HTML formatieren
- Redakteure können Artikel mit Schlagwörtern versehen
- Redakteure können Sachgebiete beschreiben und Artikel in Sachgebiete
einordnen
- Sachgebiete haben eine baumartige Struktur, so dass sich eine natürliche
Navigationsmöglichkeit ergibt
- Artikel enthalten Metainformationen (Zeitstempel, Versionsnummer,
verantwortlicher Redakteur, Sprachen, Orte, Autoren, Herkunft)
- Redakteure können Artikel anderen Redakteuren zuweisen - Redakteure können Artikel privat (nur für sich), geschützt (nur für
berechtigte Nutzer) oder öffentlich (für alle Nutzer) verwalten
- Redakteure können beliebig viele Dokumente beliebiger Formate hochladen und
an Artikel binden
- Die Titel hochgeladener Dokumente werden bei Suchabfragen berücksichtigt - Benutzer können durch die Sachgebiete navigieren - Benutzer können eine Volltextsuche starten - Benutzer können freie Suchkriterien definieren und zusammenstellen. - Freie Suchkriterien erlauben die Suche nach Metainformationen, Dokumenttiteln
und Artikelinhalten
- Benutzer können sich automatisch E-Mails zusenden lassen, wenn in bestimmten
Sachgebieten oder Artikeln Änderungen erfolgen (neuer Artikel im Sachgebiet,
Artikel geändert, neues Dokument im Artikel etc.)
- Administratoren können Benutzer und Rechte verwalten und den
Veröffentlichungsworkflow privat - geschützt - öffentlich möglichst ohne
Rückgriff auf den Entwickler ändern.
Controlling:
Alle Ziele funktional erreicht. Das System wurde mit phpMyUser und einem selbst
geschriebenen Mapping-Tool objektorientiert realisiert und läuft seit Einführung
im Frühjahr 2006 wartungsfrei.
Meine Rolle:
Anforderungsdefinition, Planung, Programmierung,
Installation & Wartung, Einweisung
Technische DV-Basis:
LAMP: Linux , Apache, MySQL 4.1, PHP 5
Laufzeit:
Seit Frühjahr 2006
// ============================================================================
Projekt Online-Buchungs-System
Aufgabenstellung:
Ein großer deutscher Internet-Provider stellte seinen Neukunden Einführungs-
seminare zum Thema Webdesign über Gutscheine zur Verfügung.
Diese Gutscheine konnten bei einem großen deutschen IT-Trainingsanbieter
eingelöst werden.
Es sollte eine Online-PLattform geschaffen werden, die den Kunden das Einlösen
der Gutscheine ermöglicht und dem Trainingsanbieter das Verwalten erheblicher
Anmeldungszahlen und das Planen der entsprechenden Seminare erlaubt.
Ziele:
Effizientes Verwalten erheblicher Anmeldezahlen.
Vollständige Automation von Anmeldebestätigung, Warteliste, Stornierung etc.
Fehlerfreies Verhindern von "Überbuchungen" auch unter sehr hoher Last.
Controlling:
Das System erlaubte die fehlerfreie und komplette Verwaltung
mehrerer tausend Anmeldungen in wenigen Monaten
ohne Aufstockung des Peronals oder Umstellung anderer Prozesse
Meine Rolle:
Anforderungsdefinition, Planung, Programmierung, Einweisung
Technische DV-Basis:
LAMP: Linux, Apache, MySQL (InnoDB), PHP 4
Laufzeit:
6 Monate
// ============================================================================
Projekt Authentifizierungs- und Autorisierungs-Framework "phpMyUser"
Aufgabenstellung:
Für die Entwicklung beliebiger PHP-Applikationen soll
ein Framework geschaffen werden, dass die immer wiederkehrenden Aufgaben
- Authentifizierung
- Autorisierung
- Internationalisierung
- Mandantenverwaltung
in einem komplett objektorientierten API zur Verfügung stellt.
Ziele:
1. Reduktion der Entwicklungszeiten neuer PHP-Anwendungen
2. Integration beliebig vieler Anwendungen in einem zentralen Framework
3. Unterstützung mandantenfähiger Anwendung
Controlling:
Alle Ziele funktional erreicht. phpMyUser hat praktische Bewährungsprobe
in einem hoch frequentierten Online-Buchungssystem bestanden.
Meine Rolle:
Anforderungsdefinition, Planung, Programmierung
Technische DV-Basis:
LAMP: Linux , Apache, MySQL 4.1, PHP 4/5
WAMP: Windows, Apache, MySQL 4.1, PHP 4/5
Laufzeit:
Noch in Entwicklung. Spätes Beta-Stadium
// ============================================================================
Projekt Online-Recruiting Tool "ComPool"
Aufgabenstellung:
Für die auftragsbezogene Rekrutierung externer Berater, Trainer und
Programmierer sollte eine Online-Plattform geschaffen werden,
in der
1. autorisierte Externe ihre Skills, Verfügbarkeiten und Honorarvorstellungen
hinterlegen
2. der Projektanbieter seine Projekte ausschreibt
3. die Externen dem Projektanbieter konkrete Angebote für die Projekt-
realisierung unterbreiten
4. der Projektanbieter Aufträge erteilt und
5. den Projekterfolg dokumentiert, die externen Auftragnehmer bewertet und so
zu einem Ranking der Externen gelangt
Ziele:
1. Reduktion der internen Prozessaufwände zur Rekrutierung externer Kräfte
2. Langfristiger Aufbau qualifizierter Pools externer Kräfte
3. Qualitätssteigerung der Leistungserbringung des Projektanbieters
4. Reduktion direkter Einkaufskosten
Controlling:
Ziel 1: Interne Prozessaufwände um ca. 80% gesenkt
Ziel 2: Je nach Einsatz des Tools beim einzelnen Anbieter sehr guter Erfolg
Ziel 3: Nach längerem Einsatz deutlich messbar
Ziel 4: Direkte Einkaufskosten durchschnittlich um 10% gesenkt
Meine Rolle:
Anforderungsdefinition, Planung, Programmierung, Installation und Einführung
(mit Akzeptanzgewinnung der Externen)
Technische DV-Basis:
LAMP: Linux, Apache, MySQL, PHP 4
WAMP: Windows, Apache, MySQL, PHP 4
Laufzeit:
Seit 2002 bei 7 Projektanbietern im Einsatz
// ============================================================================
Ausbildung Pascal
88-95: Studium an den Universitäten Bonn und Bamberg. Abschluss: Dipl.-Theol.Ausbildung in Projektleitung u. Kommunikation
99 : Umschulung Projektleiter.Ausbildung: Projektleitung, Betriebswirtschaft, Logistik
99-05: Festanstellung Vertrieb, Softwareentwicklung, Projektleitung IT-Dienstleistungen.Ausbildung in Vertrieb, Projektmanagement u. Webentwicklung
05- : Freiberuflich tätig als Softwareentwickler, Coach, Berater u. ScrumMaster.