Probleme lösen mit dem Einstein-Prinzip

Manche Probleme scheinen sehr hartnäckig zu sein. Man kann sie nicht wirklich dauerhaft lösen, so sehr man es auch versucht. In solch verzwickten Situationen fühlt man sich gefangen in seinem kleinen Mikrokosmos. Da lohnt sich dann ein Wechsel des Betrachtungspunktes,

Kennen Sie das nicht auch? Ein Problem, das Sie nicht wirklich in den Griff bekommen können, das hartnäckig bestehen bleibt, und wo jede Änderung nur eine Verlängerung oder kurzfristige Symptom-Bekämpfung darstellt? Der ständig wiederkehrende Ärger, die oft stressigen Quick-Fixes und die Unzufriedenheit der Anwender sind zermürbend, kosten sehr viel Energie, und natürlich auch Unmengen an Geld. Man löst alte Probleme immer wieder aufs neue, ohne Gefühl, voran zu kommen, und fühlt sich dadurch wie gelähmt. Continue reading “Probleme lösen mit dem Einstein-Prinzip”

Was ich eigentlich arbeite…

Neulich hat mich eine Frage meiner zwei älteren Kinder (damals noch zweite und dritte Klasse Volksschule) sehr beschäftigt: “Papa, was machst Du eigentlich, was ist Dein Beruf?” Diese Fragestellung, so simpel sie auch erscheinen mag, hat mich an eine meiner ersten Vorlesungen in Software-Engineering zurückversetzt, wo wir von unserem Professor Gustav Pomberger eine ähnliche Frage gestellt bekommen haben: Er fragte damals: “Und wenn Ihr in einem Flugzeug von Wien nach Zürich sitzts, und neben Euch sitzt jemand, der von Computer keine Ahnung hat, wie erklärt Ihr ihm, was Ihr macht?” Continue reading “Was ich eigentlich arbeite…”

Generalist oder Spezialist?

In vielen Projektausschreibungen für Software-Entwicklungsprojekte werden eine Reihe von Technologien als Kriterien angeführt. Es scheint, als wären Spezialisten sehr gefragt. Doch ist es immer von Vorteil, nach einem Spezialisten für genau die eine Technologie zu suchen, die man in dem Projekt verwenden möchte?

In vielen Projektausschreibungen für Software-Entwicklungsprojekte werden eine Reihe von Technologien als Kriterien angeführt. Es scheint, als wären Spezialisten sehr gefragt. Doch ist es immer von Vorteil, nach einem Spezialisten für genau die eine Technologie zu suchen, die man in dem Projekt verwenden möchte? In diesem Beitrag möchte ich versuchen, aus dem Blickwinkel eines IT-Projektleiters Spezialisten mit Generalisten zu vergleichen. Continue reading “Generalist oder Spezialist?”

18plus Wegweiser online

 

18plus Berufs- und Studienchecker

 

 

 

 

 

In dieser Woche ging unser neuestes Projekt, der 18plus – Wegweiser, online. Der Wegweiser besteht aus einem Fragebogen, in dem die Schülerinnen und Schüler ihren aktuellen Standpunkt in der Berufs- und Studienwahl abchecken können und dann darauf basierende Handlungsempfehlungen erhalten. Continue reading “18plus Wegweiser online”

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