Herzlich willkommen auf meiner Website.
Gern schmückt sich der IT-Fachmann mit einer langen Liste von branchenüblichen Technologie-Akronymen, doch sagen diese wenig über Vorgehensweise und Kompetenz eines Entwicklers aus.
Daher möchte ich auf den nächsten Seiten einige meiner Kernkompetenzen und Strategien beim Umgang mit komplexen Software-Projekten vorstellen:
Systematische Konstruktion: Software-Engineering
Nach dem Rollout ist vor dem Rollout: Software-Lifecycle
Wenn die Arbeit fliesst: Workflow-Entwicklung
Das grosse Ganze: Applikations-Analyse
Migration: Migration von Domino-Applikationen
Technik ist nicht alles: Soft-Skills
Anwendungs-Entwicklung
Seit 23 Jahren entwickele ich Client/Server-Anwendungen basierend auf Lotus Notes & Domino. In mehr als 70 Projekten habe ich Erfahrungen sammeln dürfen bei ganz kleinen, mittelgrossen und auch Unternehmen der Top-10 Deutschlands. Immer wieder bin ich fasziniert, wie sich unerwartete Herausforderungen letztendlich doch elegant lösen lassen. Lotus Notes & Domino ist für mich ‘Heimspiel’.
Natürlich beherrsche ich die üblichen Integrations-Technologien wie LEI, LS:DO, LSX-LC, Windows, Linux, SQL, DB2, MySQL, PHP, ODBC, JDBC, LDAP, XHTML/CSS/JavaScript, XML/XSLT, IP-Networking, Samba, C, C++, VBA, Visual Basic usw.
Software-Engineering
Bei der Software-Entwicklung orientiere ich mich an der Methodik des Software-Engineerings
(ingenieursmässige Vorgehensweise der Software-Entwicklung):
- Klare und systematische Organisation des gesamten Entwicklungs-Prozesses
- Modellierung der zu verwendenden Datenstrukturen und Übertragungs-Protokolle
- Software-Architektur mit dem Ziel von Modifizierbarkeit, Wartbarkeit, Sicherheit
- Verwendung von strukturierter und objektorientierter Programmierung
- Validierung und Test der Software durch Prototyping und Integrationstests
- Erstellung und Weiterentwicklung eigener Software-Werkzeuge (Utilities)
Genau wie bei der mechanischen Konstruktion ist auch in der Software nur eine klare und einfache Lösung wirklich effizient.
“Form follows function” – gilt für mich auch bei der Konzeption einer modularen Software.
Software-Lifecycle
Die Projekt-Entwicklung ist abgeschlossen, der Kunde hat die Anwendung abgenommen, der Software-Rollout war erfolgreich – Ende?
Sehr unwahrscheinlich – denn zumeist gilt: “nach dem Rollout ist vor dem Rollout”.
Selbst wenn ürsprünglich keine weitere Version geplant war, allein die Ausseinandersetzung mit dem aktuellen Projekt hat genügend neue Fragen aufgeworfen und es gibt immer etwas zu verbessern.
Daher lohnt es sich von Anfang an, den zyklischen Prozess der Software-Entwicklung zu thematisieren. Ansonsten werden Vorgänge wie Test, Rollout, Qualitätssicherung, Dokumentation etc. leicht zur Nebensache, die mal eben so zwischendurch erledigt wird.
Programmierung ist nur eine von vielen, teils parallel verlaufenden Phasen im Lebenszyklus eines Intranets, Portals oder einer Individual-Software im Unternehmen:
- Analyse, Planung, Entwurf
- Erstellung von Prototypen, Abstimmung mit den zukünftigen Anwendern
- Implementierung
- Test, Fehlerkorrekturen
- Qualitätssicherung und Abnahme durch den Kunden
- Dokumentation
- Rollout & Konfiguration
- Überwachung und Qualitätssicherung im Betrieb
- Archivierung & Backup
- Versionierung und Migration
Es ist mein Anliegen, meine Kunden in allen Phasen effizient und professionell zu beraten und Teams bei der Planung, Einführung und Umsetzung dieser Phasen zu unterstützen.
Workflow
Prozess-Analyse und Entwicklung von Workflow-Anwendungen ist ein Schwerpunkt meiner Arbeit.
Oft höre ich zum Thema Workflow: „eine Freigabe reinklicken in das Dokument, was soll denn daran schwierig sein?”. In der Praxis tauchen jedoch oft komplexe Fragestellungen auf:
- Wie definiere ich den/die nächsten Bearbeiter? Als Person, Gruppe, Rolle, Email-Adresse etc. (Zuständigkeit)?
- Was passiert wenn eine beteiligte Person nicht verfügbar ist (Vertreter-Regelung, Eskalations-Behandlung)?
- Wie erlaube ich Nicht-Entwicklern möglichst weitreichende Eingriffsmöglichkeiten in den Workflow-Ablauf (Konfigurations-Management)?
- Wie gestalte ich den Workflow möglichst sicher (Zugriffsteuerung auf Datenbank & Dokument-Ebene)?
- An wen sollen wann/wie Benachrichtigungen automatisch verschickt werden (Vermeidung von Mail-Flut)?
- Sollen automatische Vorgänge ausserhalb des Domino-Systems durch den Workflow ausgelöst werden (LEI, DECS, Odbc, Smtp…)?
Nach meiner Erfahrung ließe sich diese Liste beliebig fortsetzen:
die Wirklichkeit ist erheblich komplexer und unvorhersehbarer als jedes Software-Modell davon. Eine erfolgreiche Workflow-Implementierung muss zugleich sicher, konfigurierbar, nachvollziehbar und flexibel sein, sonst behindert die Software-Umsetzung des Arbeitsablaufes die Mitarbeiter anstatt sie zu unterstützen.
Die Domino-Plattform eignet sich meines Erachtens noch immer ideal, um komplexe, wiederkehrende Arbeitsabläufe in Software abzubilden:
- Domino ist ein leistungsfähiger und flexibler Applikations-Server und damit ideale Plattform für Workflow-Anwendungen
- Die Zugriffs-Steuerung von Domino kann bis auf Datensatz- und Feld-Ebene konfiguriert und programmiert werden.
- Die ‘objektorientierte’ Natur der Domino-Datenbankengine erlaubt polymorhphe Programmierung. D.h. unterschiedlich strukturierte Vorgänge und Datensätze können über gemeinsame Masken, Ansichten und Hintergrund-Routinen (Agenten) bearbeitet werden.
- Die enge Verbindung von Anwendung und Mailsystem vereinfacht es sehr, programmgesteuert Mails zu verschicken
- Die eingebaute Volltextsuche von Domino unterstützt Anwender von komplexen Workflow-Anwendungen
- Das Domino-System erlaubt einfach Anbindungen an viele Enterprise-Systeme wie:
SAP, DB2, Oracle, usw. und erlaubt einfach Anfragen und Änderungs-Anforderungen an diese Systeme abzusetzten
Applikations-Analyse
Selbst kleine Domino-Infrastrukturen können mehrere hundert individuelle Notes-Applikationen enthalten. Dies können abgewandelte Ibm-Standardapplikationen, Inhouse-Entwicklungen oder gekaufte Produkte sein.
Hier als Beispiel eine Domino-Infrastruktur in der ich verschiedene Applikations-Analysen durchgeführt habe:
• 32 Domino-Server
• ca. 500 individuell entwickelte Applikationen
• darin enthalten ca. 300.000 Design-Elemente (Masken, Ansichten, Agenten etc.)
• darin enthalten ca. 3.000.000 programmierte Events
• darin ca. 100.000.000 Zeilen SourceCode (Formelsprache, LotusScript)
• also insgesamt 2 Gigabyte SourceCode
Diese Zahlen verdeutlichen, daß eine manuelle Applikations-Analyse aus Kostengründen zumeist keine gangbare Option ist. Daher bleiben viele wichtige Fragen über eine Domino-Infrastruktur unbeantwortet:
– welche der auf den Servern laufenden Datenbanken sind von welchen anderen DB’s abhängig und wenn ja: wo im Code und von welchen Design-Elementen?
– welche der Ansichten in einer Applikation werden überhaupt in dieser Applikation verwendet?
– wo im Code wird auf externe SQL-Datenbanken zugegriffen?
– wo im Code sind Benutzer-, Gruppen- oder Server-Namen konstant hinterlegt?
Der Domino Designer bietet keine Hilfe bei diesen Fragen und auch andere Tools sind damit überfordert.
Ich habe in den letzten Jahren Werkzeuge entwickelt um solche und andere Fragestellungen beantworten zu können:
– die Applikations-Analyse geschieht In-Memory, denn nur so sind Infrastruktur-Analysen im Bereich von Stunden möglich (anstatt von Wochen)
– die Analyse geschieht Syntax-bezogen, d.h. False-Positives durch Kommentare, Text-Konstanten oder UI-Beschriftungen sind ausgeschlossen
– die Analyse ist modular und anpassbar und kann somit leicht auf individuelle Analysen eingerichtet werden
Mithilfe dieser Werkzeuge habe ich in den letzten Jahren mehrere Kunden in Ihren Konsolidierungs- und Migrations-Projekten unterstützt. Dabei habe ich intensiv Erfahrungen mit Applikations-Analyse in kleinen, mittleren und auch grossen Domino-Infrastrukturen gesammelt.
Migration von Domino-Applikationen
Wenn der Zeitpunkt gekommen ist, Domino-Applikationen auf eine andere Plattform zu migrieren ist ein klarer Ablauf-Plan erfolgsentscheidend. Im Laufe der letzten Jahre habe ich einige Migrations-Projekte miterleben und einige davon begleiten und gestalten dürfen.
Domino-Applikationen massenweise auf andere Plattformen zu bringen ist kein einfaches Unterfangen, denn schnell wachsen die Aufwände dafür in den Himmel. Meiner Erfahrung nach ist die korrekte Klassifizierung und Kategorisierung der zu migrierenden Applikationen zentraler Faktor um zumindestens eine Teilmenge der vorhandenen Applikationen zeitnah und kostengünstig auf eine neue Plattform zu bringen.
Es gibt einige Werkzeuge um Mengen von Applikationen automatisch nach diversen Kriterien zu klassifizieren, dabei wird ein jedoch häufig ein entscheidendes Kriterium vernachlässigt:
Domino-Applikationen greifen häufig auf andere Domino-Applikationen zu – überwiegend auf Ansichten, vereinzelt aber auch Masken oder Agenten. Normalerweise sind diese Quer-Beziehungen nicht (vollständig) dokumentiert und bei Hunderten von Applikationen kann eine manuelle Analyse der Datenbank-Gestaltung nach Quer-Beziehungen Wochen oder gar Monate dauern.
Um Teilmengen von Applikationen ausser Betrieb zu nehmen ist die Kenntnis der Abhängigkeiten untereinander aber von entscheidender Bedeutung:
wenn eine häufig referenzierte Applikation ausser Betrieb genommen wird, gibt es bei allen abhängigen Applikationen erhebliche Störungen. Nur mit dem Wissen über die Abhängigkeiten der Applikationen untereinander ist ein sinnvolles Clustering der Applikationen möglich.
Auf dem Notes & Domino EntwicklerCamp 2016 habe ich einen Vortrag zu diesem Thema gehalten, die Präsentation dazu findet sich hier:
Soft-Skills
Neben meinen IT-Kenntnissen habe ich in den letzten Jahren auch meine Soft-Skills erweitert.
Ich verfüge über Ausbildungen in Coaching, Team-Leitung und Moderation sowie ein Kommunikations-Zertifikat (NLP-Practitioner). Aufgrund meiner langjährigen Berufserfahrung übernehme ich zunehmend Aufgaben in Projekt-Koordination und Team-Leitung.
Sprache und Kommunikation sind meine Passion – ich kann gut erklären, verhandeln & schlichten.
Ich verfüge über mehrjährige Auslands-Berufserfahrung (USA, GB) und spreche fliessend akzentfreies Business-Englisch. Ich kann in Englisch präsentieren, moderieren, korrespondieren sowie Englisch / Deutsch sowie Deutsch / Englisch (auch synchron) übersetzen.