Softwareunterstützung für IT-Projekte

Bevor Software-Projekte unübersichtlich werden, sollten Sie sich die Einführung einer Projektverwaltungssoftware überlegen. Zwei Lösungen werden hier vorgestellt.

Anforderungen für IT-Projekt-Verwaltung

 

IT-Projekte erfordern viel  Kommunikation und oft eine komplexe Organisation. Falls Sie schon mal eine Software-Projekt umgesetzt haben, in dem Ihre Kunden die Anforderungen und Bugs per Email geschickt haben, werden Sie die Forderung nach einer Software-Unterstützung hier gut nachvollziehen können, da die Mailbox sehr schnell unübersichtlich wird, speziell dann, wenn die Anforderungen in Emails mit 10 oder mehr Anforderungen stehen, die schon vier mal weitergeleitet wurden. Continue reading “Softwareunterstützung für IT-Projekte”

Analyst, geh aus Deiner Höhle raus!

Wenn ich die Analyse-Ergebnisse manch studierter IT-Berater ansehe, muss ich dabei oft an Platons Höhlengleichnis denken. Scheinbar sieht der Analyst nur das, was man ihm auf leichtem Weg zu sehen gibt. Und das ist – wie bei Platons Gefangenen in der Höhle, nur ein Schatten der Wirklichkeit. Wie könnte nun der Business-Analyst seine Fesseln ablegen und die Wahrheit erkennen, die sich hinter dem scheinbar wirren Geschwafel seiner Kunden versteckt? Hier ein paar Tipps, um bei der Anforderungsanalyse ans Licht zu gelangen. Continue reading “Analyst, geh aus Deiner Höhle raus!”

Häufige Fehler bei der Anforderungsanalyse

Der spannendste Prozess der gesamten Software-Entwicklung ist für mich die Anforderungsanalyse. Hier wird entschieden, ob die Software wirklich eine Lösung für ein Problem darstellt, oder neue Probleme verursacht. Fehler in diesem Prozess sind meist sehr teuer und können ein gesamtes Projekt zum Scheitern verurteilen.
In meiner Arbeit habe ich viele schlechte Anforderungen erhalten. Die hauptsächlichen Fehlerquellen liegen in den folgenden Bereichen:

 

Substantive werden immer in Klassen modelliert

Das scheint ein Klassiker zu sein. Immer wieder ist mir dieser Fehler begegnet. Dabei wird offensichtlich mit dem Kunden gesprochen und seine Wünsche in einem Prosa-Aufsatz festgehalten. Dieser Aufsatz wird dann analysiert und Substantive als Kandidaten für Entities (Klassen) abgeleitet. Eine Modellierung als eigenständige Klasse erschwert aber immens die Implementierung und die spätere Wartung.

Besser: Viele dieser Substantive sind in Wahrheit Typen von übergeordneten Klassen, durch einen generischen Ansatz werden sowohl bei der Implementierung, als auch bei der späteren Wartung der Software hohe Aufwände gespart.

 

User-Interfaces werden von Modell-Klassen abgeleitet

Offensichtlich ist es zum durchdenken einfacher, wenn man pro Klasse eine Listenansicht und eine Bearbeitungsmaske gestaltet. Schließlich hat doch jeder Entwickler schon einmal eine MS Access-Datenbankanwendung mit den coolen Wizards erstellt.  Doch hier denkt man nicht an den Endanwender. Denn dieser benötigt oft Daten aus unterschiedlichen Klassen auf einer Maske, um sinnvoll mit dem System zu arbeiten.

Besser: Eine Analyse der Use-Cases ist unumgänglich. Die Ergebnisse sollten in sinnvolle Userinterfaces umgewandelt werden.

 

User-Interfaces werden nur verbal beschrieben

Aus einer verbalen Beschreibung ist es nicht möglich, eine Benutzeroberfläche zu bauen, die genau den Vorstellungen des Endkunden entspricht. Daher werden notgedrungen Fehler entstehen, wenn auf ein Mockup verzichtet wird.

Besser: Mit einfachen Mockup-Tools wie z.B. Pencil, Powerpoint, Word, eine Skizze zeichen. Zur Not reicht fürs erste eine einfache Zeichnung mit Kugelschreiber und Papier.

 

Geschäftsprozesse werden nur verbal beschrieben

Manche Analysten weigern sich immer noch, gängige Ablauf-Diagramme zu verwenden. UML ist inzwischen ein Standard, aber das hat sich leider noch nicht überall herumgesprochen. Dabei werden wichtige Zusammenhänge durch die Verwendung einer graphischen Darstellung viel besser veranschaulicht.

Besser: Die Verwendung eines UML-Werkzeugs, um Prozesse visuell darzustellen, erleichtert allen die Klärung der Anforderungen.

 

Modell-Klassen werden auf reine Getter- und Setter beschränkt

Eine etwas übertriebene Auslegung der Trennung von Modell- und Business-Logik sieht vor, die Modell-Klassen auf reine Getter- und Setter-Methoden zu beschränken. Logik, die zwar eine Klasse betrifft, aber über einen reinen Getter hinaus geht, wird dabei in eine eigene Schicht verschoben. Dadurch entsteht Wartungsaufwand für eine neue Software-Schicht.

Besser: Logik, die ein Objekt einer Klasse betrifft, kann und soll direkt in der Modell-Klasse abgebildet werden.

Herausforderungen von Offline-fähigen Webanwendungen

Im Rahmen meines letzten Projekts musste ich eine Webanwendung planen, die den Offline-Speicher des Browsers verwendet. In der Theorie sollte ja alles wunderbar funktionieren, doch in der Praxis hatten wir einige harte Nüsse zu knacken. Die wichtigsten Herausforderungen möchte ich hier kurz darstellen.

Im Rahmen meines letzten Projekts musste ich eine Webanwendung planen, die den Offline-Speicher des Browsers verwendet. In der Theorie sollte ja alles wunderbar funktionieren, doch in der Praxis hatten wir einige harte Nüsse zu knacken. Die wichtigsten Herausforderungen möchte ich hier kurz darstellen.

Wahl des “richtigen” Offline-Speichers

Sie haben richtig gelesen, als erstes müssen Sie sich entscheiden, welchen Offline-Speicher Sie verwenden wollen. Es gibt nämlich unterschiedliche Speicherorte, die alle Vor- und Nachteile haben. Die einfachste Art der Speicherung ist der WebStorage (localStorage). Hier können Sie in einer key-value Map beliebige zuvor serialisierte Datenobjekte über einen eindeutigen Schlüssel speichern. Dieser Speicher ist einfach zu benutzen, allerdings hat er einige Einschränkungen. Obwohl diesen Speicher jeder Browser unterstützt, ist er limitiert in seiner Größe. Manche Browser können zwar die Speichergröße über 5 MB anheben. Der Nachteil hier ist allerdings die sinkende Performance der Zugriffe, speziell bei größeren Objekten.

IndexedDB bietet einen größeren, unlimitierten Speicherplatz mit einer hierarchischen key/value Persistierung und einer Basisindizierung. Diese Speicherquelle wird aber noch nicht auf allen Browsern unterstützt und bietet leider auch noch keinen SQL-Zugriff.

Für SQL-Fans ideal ist die Verfügbarkeit der bekannten Abfragesprache in WebSQL Database. Allerdings ist dieser Speicherstandard vorerst Chrome-Browsern vorbehalten und daher für viele Projekte nicht geeignet.

Egal für welche Speichermöglichkeit Sie sich entscheiden, Sie müssen jedenfalls die Vor- und Nachteile abwiegen und dann später mit der Entscheidung leben. Ein Umstieg in laufendem Betrieb ist eine eigene Herausforderung, die einer großen Vorbereitung bedarf.

Verschlüsselung der Daten

Sollten Sie sensible Daten in Webbrowsern speichern wollen, so müssen Sie auf jeden Fall eine Verschlüsselung ins Auge fassen. Dabei sind mehrere Aspekte zu planen:

  1. Wahl der Verschlüsselungsmethode:
    Dies hängt in erster Linie auch von der gewünschten Sicherheit ab. Sind die Geräte gehärtet, d.h. ist bei Entwendung der Geräte sichergestellt, dass niemand die Festplatten auslesen kann, ist hier eventuell eine geringere Sicherheit möglich. Ansonsten sollten Sie die höchstmögliche Sicherheitsstufe anstreben.
  2. Eingabe des Ver- und Entschlüsselungskeys
    Die Sicherheit nutzt nichts, wenn der Key im Programmcode hinterlegt wird. Wenn Sie wirklich sicher gehen wollen, müssen Sie hier den User miteinbeziehen, um einen Teil des Schlüssels beim Programmstart einzugeben.
  3. Ebene der Verschlüsselung
    Wollen Sie ganze Datenobjekte verschlüsseln oder nur einzelne Attribute? Diese Entscheidung hängt zu einem großen Teil auch von der Wahl des Offline-Speichers ab, da Sie z.B. beim LocalStorage in der Regel immer ganze Objekte serialisiert abspeichern.

Wahl der Datenstrukturen

In der Entwicklungsphase ändern sich die Datenstrukturen laufend. Dies ist da auch überhaupt kein Problem, da Sie einfach neu deployen und den localStorage mit über die Entwickler-Konsole mit dem Befehl

localStorage.clear();

löschen können.

Aber sobald Ihre Anwendung in Produktion ist, werden Sie mit jeder Änderung der Datenstruktur große Probleme einfahren, weil Sie prüfen müssen, ob die in der alten Version gespeicherten Offline-Daten mit der neuen Version noch lesbar sind.

Bei uns hat sich daher als sinnvoll erwiesen, folgende Maßnahmen zu ergreifen:

  1. eine Generische Datenstruktur, die sich einer Key-Value-Map bedient, kann am einfachsten erweitert werden
  2. eine Serialisierung über JSON ist besser als z.B. die native-GWT-Serialisierung zu verwenden
  3. Weglöschen von nicht mehr benötigten Datenfeldern kann tödlich sein!

 Migrationsaufwand nicht unterschätzen

Sobald eine Anwendung in Produktion ist, sollten Sie sich ein Szenario für die Migration von einer Version auf die nächste überlegen. Nicht zuletzt, um sicher zu stellen, dass die Offline-Daten die Migration überleben, auch um die Kompatibilität der Client-Server-Schnittstellen zu gewährleisten, ist hier ein hoher Testaufwand einzuplanen.

 

18plus

Unter dem Titel “18plus” betreibt das BM für Wissenschaft, Forschung und Wirtschaft eine Website, die SchülerInnen vor der Matura bei der Berufs- und Studienwahl unterstützt. Dazu werden psychologische Beratungen angeboten, die von den BildungsberaterInnen in den Schulen gebucht werden können. Zusätzlich werden zwei Interessenstests online angeboten, die von den SchülerInnen genutzt werden können. Dazu werden über unser System Zugangscodes generiert, die für eines der beiden Testsysteme verwendet werden können.

Weiters können BildungsberaterInnen Unterrichtsmaterialien über diese Plattform bestellen und Schüler einen Online-Fragebogen absolvieren, der Empfehlungen für die weiteren Schritte der Berufs- und Studienwahl geben kann.

Rolle:
Berater, Systemanalyst, Entwickler

Kunde:
BMWFW

Zeitraum:
seit 2008

 

Erfassungsprogramm für die Güterverkehrsstatistik

Rolle:
Software-Architekt, Oberflächen-Programmierung

Kunde:
Statistik Austria

Zeitraum:
01/2013-08/2013

Projektbeschreibung:
Für die Statistik Austria entwickelten wir eine RCP-Anwendung zur Erfassung der Güterverkehrsstatistik.  Die Anwendung hat diverse Erfassungsmasken mit komplexen Datenvalidierungen und Plausibilitätsprüfungen. Da sich die Prüfungen ändern können, musste die Software in der Lage sein, die Prüfroutinen einfach auszutauschen. Daher wurden die Prüfregeln in einer eigenen Plaus-Sprache erfasst, die zur Laufzeit von einem selbst entwickelten Interpreter ausgewertet wurden.

Grenzkontroll-Software für BMI

Rolle:Software-Entwickler, Oberflächen-Programmierer

Zeitraum:08/2011-12/2012

Kunde:Bundesministerium für Inneres

Projekt-Beschreibung:
Gestaltung der Oberfläche der Grenzkontroll-Software und Programmierung der Schnittstellen zu den zentralen Datenbanken des BMI. Die Anwendung konnte mit Hilfe einer BioMiddle-Software über den Dokumentenleser die MRZ und den Chip von Reisedokumenten auslesen und die Daten mit Treffern aus den zentralen Datenbanken abgleichen. Personen mit einem Visum müssen zusätzlich Ihre Fingerabdrücke überprüfen lassen, welche wir über die Software ebenfalls auslesen konnten. Dabei war die Herausforderung, dass die Prüfung so schnell wie möglich funktionieren soll und das System so einfach wie möglich für die Grenzkontroll-Beamten zu bedienen ist.

Studienwahl – Online-Datenbank

Online-Suche für österreichische Studienangebote im Auftrag des Wissenschaftsministerium.

Zeitraum
2007-09
Kunde
Österr. Wissenschaftsministerium
Tätigkeit im Projekt:
technische Projektleitung, Realisierung
Aufgabenbereich:
Überarbeitung einer Internet-Präsenz des Ministeriums, wobei Daten aus zwei
unterschiedlichen Quellen mittels XML in ein neues System eingebracht werden
müssen; von dort werden verschiedene Websuchen (WAI-konform) realisiert, die
unterschiedlichen Suchzugängen entsprechen.

Mitgliederverwaltung

Zeitraum
  2007-12 bis 2008-05, laufende Wartung
Kunde
  Privates Krankenhaus
Tätigkeit
  technische Projektleitung, Realisierung
Aufgabenbereich
  Entwicklung der Mitgliederverwaltung des Fördervereins als Weblösung in PHP,
wobei eine Anbindung an MS Word, sowie MS Excel zu erfolgen hatte, und
Ausdrucke als PDF generiert werden mussten.