Tag Archives: programmieren

ideas

Von Software-Qualität und Eisbergen

In Kürze gehen zwei unserer Anwendungen in Testbetrieb (gebloggt und nochmal gebloggt). Nach wochenlanger Entwicklungsarbeit naht nun der Moment, den ich so hasse: der Moment des ersten, überhasteten Feedbacks.

Ich will diesen Moment als Eisberg-Moment bezeichnen. Er findet da statt, wo Endbenutzer oder Auftraggeber erste Rückmeldungen zum Softwareprodukt liefern. Rückmeldungen, die lediglich die sichtbaren Merkmale der Software betreffen und somit den Großteil der Anstrengungen außer Acht lassen.

Auch wenn Usability-Leute behaupten, the interface is the product, dann ist das nur die halbe Wahrheit. Insbesondere über einen Bewertungszeitraum, der länger als fünf Minuten – in unserem konkreten Fall hoffentlich mehr als fünf Jahre – dauert, spielen ganz andere Faktoren die Hauptrolle:

  • Investitions- und Wartungskosten; die IT ist schließlich ohnehin personalintensiv.
  • Wartbarkeit
  • Security
  • Verfügbarkeit
  • Konsistenz/Integrität
  • usw. (…) Nur eben nicht Logos, Schriftarten und oder Ränder drumherum.

Kurzum, mein Kollege Dennis und ich haben den Eisberg auf einem Whiteboard verewigt. Unter der Oberfläche liegen die unbeachteten Merkmale von Software-Qualität. Auf der x-Achse haben wir die investierte Arbeitszeit aufgetragen; auf der y-Achse (zugegeben etwas sarkastisch) das Geld, das man mit den jeweiligen Services verdienen kann.

Qualitätsmerkmale von Software(-projekten) und was davon für Außenstehende sichtbar ist. Der "Eisberg-Moment", ein künftiger Management-Klassiker.

Der Eisberg-Moment ist übrigens das Gegenteil des black triangle moments.

Edit 1: Ich bin übrigens der Meinung, dass Feedback wichtig ist. Es sind nur diese ersten Rückmeldungen, die mich immer und immer wieder an den Rand der Verzweiflung treiben…

Edit 2: Passend zum Thema, dass Feedback qualitativ sehr unterschiedlich sein kann: TornadoGuard bei xkcd.

IT explained

Gestohlene GIS-Daten und was jeder tun sollte

Technik egal, gleich zum Musterbrief an die GIS springen.

Im “österreichischen Internet” geht es zurzeit ziemlich wild zu: SPÖ, FPÖ und zuletzt die Grünen wurden Opfer von Hack-Attacken, besonders großes Aufsehen erregte vor allem der Datendiebstahl bei der GIS.

Was ist da genau passiert?

Der Angriff bei der GIS lief über eine so genannte SQL-Injection. Wikipedia erklärt’s genauer, aber die Kurzversion lautet etwa so: Browser kommunzieren mit Webservern via URLs – jeder geklickte Link und jedes ausgefüllte Formular sind schließlich Webadressen, also URLs.

Wer sich die URL-Zeile des Browsers schon mal genauer angesehen hat, der erkennt alle Formen von Parametern. Onlineshops müssen beispielsweise wissen, welche Produkte sie anzeigen sollen. Im Onlineshop von biohelp etwa, geschieht dies über den Parameter id mit dem Wert 8:

http://www.biohelp.at/biohelp_h/index.php?option=com_content&task=view&id=8

Es lässt sich nun wohl leicht erraten, welche IDs es sonst noch so gibt… Das Austauschen von Paramtern wird URL-Manipulation genannt. Man kommt dann vielleicht auf Seiten(-kombinationen), die so nie gedacht waren – beispielsweise zum Erotikfilm in der Produktkategorie Priesterzubehör -, aber ein böser Cracker sind wir dadurch noch lange nicht.

Der Befehl id=8 landet irgendwann jedenfalls in einer Datenbank, wo das entsprechende Produkt gespeichert ist. Datenbanken werden mit SQL abgefragt. Auch ohne Datenbankkenntnisse ist wahrscheinlich klar, was hier geschieht:

SELECT name, preis
  FROM produktkatalog
 WHERE produkt_id = <URL:id>

Was wir soeben im Trockentraining gebastelt haben, nennt sich dynamische Webseite. In Abhängigkeit vom Wert id aus dem URL liefert die Datenbank unterschiedliche Ergebnisse. Und diese werden schließlich auf der Produktseite präsentiert.

Do it yourself SQL-Injection

Was ist nun bei der GIS passiert? Nun, der Wert wurde durch etwas ausgetauscht, was deutlich mehr als einen Datensatz liefert, 214.000 um genau zu sein. Man injiziert weitere Befehle in den URL, und daher kommt auch der Name SQL-Injection. Dies könnte etwa so funktionieren:

http://www.biohelp.at/biohelp_h/index.php?option=com_content&task=view&id=8 OR 1=1

Die Eingabe wird in der Datenbank zu:

SELECT name, preis
  FROM produktkatalog
 WHERE produkt_id = 8 OR 1 = 1

Und da 1 immer gleich 1 ist, kämen so alle Produkte der Datenbank retour. Man wäre nun sogar in der Lage, noch gefährlichere Kommandos einzuschleusen, die deutlich mehr Schaden anrichten würden usw.

Der  Gärtner meines Vertrauens (biohelp) ist jedenfalls gegen SQL-Injection abgesichert, und so sind es inzwischen alle halbwegs vertrauenswürdigen Websites – von hochsicheren online-banking Anwendungen bis hin zum Forum der örtlichen Schrebergartenvereinigung.

Die GIS allerdings, sah im Jahr 2007 (Neuentwicklung der Webseite) jedenfalls keinen Anlass, mehr als 200.000 Kundendaten gegen so ein Angriffsszenario zu schützen! Ansich wäre hier mein Artikel zu Ende gewesen, hätte ich gestern nicht nochmal zur Zeitung gegriffen:

Herr Menedetter, mir kommt das Kotzen

Man sollte sich das Interview der Presse mit Herrn Menedetter, Geschäftsführer der GIS, wirklich nicht auf nüchternen Magen zumuten. Hier die beiden Highlights:

“Wir haben die Daten nicht verloren, sie sind uns von einem kriminellen Hackernetzwerk gestohlen worden.”

“Wir (…) weisen darauf hin, genau auf Kontoauszüge zu achten. Der mündige Konsument muss auf seine persönlichen Daten achten.”

Diese Verlogenheit muss bestraft werden. Erstens ist das, was ich oben beschrieben habe kein hochkomplexer Angriff irgendwelcher Kriminellen, wie man sie aus Spionage-Filmen kennt. SQL-Injection auf Webseiten zu ermöglichen, ist grob fahrlässig! Aber anschließend auch noch auf die Mündigkeit der Konsumenten, die so wie ich die Produkte gar nicht kaufen wollen! – hinzuweisen, ist die Höhe.

Kurzum, das österreichische Datenschutzgesetz erlaubt nach §26 ein Auskunftsrecht. Zur Nachahmung wird ermutigt, es kostet eine Briefmarke:

Musterbrief an die GIS

GIS Gebühren Info Service GmbH
Operngasse 20 B 1040 Wien

Sehr geehrte Damen und Herren,

dem Interview der Tageszeitung Die Presse mit Ihrem GF Herrn Menedetter (29. Juli 2011) entnehme ich, dass seiner Darstellung nach, die GIS Opfer eines kriminellen Hackernetzwerks wurde und keinerlei Schuld am Datenverlust trägt. Herr Menedetter wörtlich: “Der mündige Konsument muss auf seine persönlichen Daten achten.”

Da meiner Ansicht nach die GIS gegen §14 Abs. 1 DSG 2000 (Datensicherheitsmanßnahmen nach technischer Möglichkeit und wirtschaftlicher Vertretbarkeit) verstoßen hat und ich mich als mündigen Konsumenten sehe, fordere ich Auskunft über die Ihnen vorliegenden persönlichen Daten zu meiner Person. Insbesondere will ich wissen, was die GIS über mich speichert, und woher Sie diese Daten beziehen. Weiters fordere ich Namen und Anschrift aller Dienstleister, die Sie zur Verarbeitung meiner Daten heranziehen.

Zum Nachweis meiner Identität liegt eine Kopie meines Führerscheins bei. Ich weise Sie höflich auf die lt. Gesetz achtwöchige Frist zur Beantwortung meines Begehrens hin.

Mit freundlichen Grüßen

Mag. Mathias Frey

meta

Was machen eigentlich Programmierer?

Vergangene Woche wurde ich wieder gefragt: “Mathias, was tust du eigentlich so als Programmierer?”

Ich finde es erstaunlich, dass in einer inzwischen durch und durch digitalisierten Welt nach wie vor wenig Außenstehende Ahnung davon haben, woraus die Arbeit eines Softwareentwicklers besteht. Dabei durchdringt die Softwarewelt die reale: Nachrichtenmeldungen sind voll mit Berichten über Software-Features wie Gesichtserkennung, Einkaufen via QR-Codes, Suchalgorithmen, Videotelefonie usw. Gleichzeitig ist die Anatomie dieser Systeme den meisten Menschen gänzlich unbekannt. Es herrscht flächendeckender IT-Analphabetismus.

Programmieren hat wirklich nichts mit Office-Software zu tun

Ein Grund der oben geschilderten Situation ist sicherlich, dass IT-Fähigkeiten meist auf Office-Kenntnisse beschränkt werden, und diese Fehleinschätzung zusätzlich mit fragwürdigen Zertifizierungen wie dem Europäischen Computer Führerschein (ECDL) institutionalisiert wird. Ich kann jedenfalls behaupten, dass ich tagelang produktiv arbeiten kann, ohne ein Office-Dokument geöffnet zu haben.

Ein Grund, warum Softwareentwickler Office-Dokumente dermaßen verabscheuen, ist womöglich folgender: In Word- oder Excel-Dateien liegen Informationen unstrukturiert vor, die Daten sind somit für eine effiziente Weiterverarbeitung verloren. Während sich Anwender meist zeitraubend um das Einfärben und Positionieren von Überschriftszeilen bemühen, geht es Entwicklern eher darum, wo Informationen gespeichert und wie sie (weiter-) verarbeitet werden.

“Kurzum, es ist eine sehr spannende Aufgabe ein Programm zu schreiben, dass hunderte Spreadsheets erzeugt und per Mail versendet. Es ist fürchterlich, auch nur eine einzige Excel-Datei selbst zu erstellen!”

Also was machen nun Programmierer genau?

Dank dem rasanten technischen Wandel besteht ein großer Teil meiner Arbeitszeit aus Weiterbildung.

Eins vorweg: ich bevorzuge den Begriff Softwareentwickler, da ich deutlich weniger Zeit an der Tatstatur verbringe, als vermutlich angenommen wird. Meine Arbeit besteht zu großen Teilen aus Recherche und somit Lesen, Versuchen  nach dem Trial-and-Error-Prinzip anstatt zu detaillierter Planung, Kaffeetrinken, Anwender interviewen, Bugs rekonstruieren und fixen, Dokumentationen in Form von Wikis oder automatisierten Softwaretests schreiben und Besprechungen führen. Ich verbringe maximal 20% meiner Arbeitszeit mit tatsächlichem Programmieren am endgültigen Produkt. Bei wirklich produktiven Leuten ist der Anteil wahrscheinlich maximal doppelt so hoch.

Datenbanken, Programmiersprachen und Betriebssysteme

Wie oben erwähnt strukturieren Softwareentwickler die Welt der Daten und machen diese so zu wertvoll(er)en Informationen. Wer also auf seinem Desktop Dateien mit etwa folgenden Namen speichert, sollte sich schleunigst Gedanken über Datenbanken machen:

Urlaubsliste.xlsx
Urlaubsliste_neu.xlsx
Kopie von Urlaubsliste_neu.xlsx
Urlaubsliste_neu - 21. März 2011.xlsx
Urlaubsliste (Version Kontrolle MF).xlsx
Urlaubsliste - endgültig nicht bearbeiten!.xlsx

Ein zentraler Bestandteil eines Entwicklerdaseins sind die verwendeten Programmiersprachen. Je nach Anwendungsgebiet oder Erfahrung gibt es zahlreiche Optionen. In Entwicklerkreisen gleicht die Wahl der Programmiersprache dem Religionsbekenntnis. Ähnliches Bild auch auf Seiten der Betriebssysteme, nur ist hier die Auswahl deutlich geringer: Es gibt die Windows-Leute auf der einen Seite und Unix-Anwender auf der anderen. (Apples MacOS ist übrigens lediglich ein sehr hübsches Unix.)

Fazit: Sollte sich jemand fürs Programmieren interessieren, dann wird man ohnehin mit all den Begriffen schnell in Kontakt geraten. Vielmehr als konkrete Sprachen oder Systeme zählen ohnehin die Aufgabenstellungen. Motto: Such’ dir ein interessantes Problem und kämpf’ dich durch zur Lösung.

Versionskontrolle und Wissensmanagement

Softwareentwicklung ist stetige Wissensfindung als Produktionsprozess. Dabei ist der entstandene Source-Code die Dokumentation der erfolgten Arbeit. Umfangreiche Projekte bestehen aus hunderten von Dateien. Bugs lauern überall, Änderungen im File A haben meist unabsehbare Auswirkungen auf das Gesamtsystem. Bei Projekten mit mehreren Entwicklern steigt der Kommunikationsaufwand exponentiell, sehr schnell ist der Überblick verloren.

Die Lösung des Problems sind unter anderem Systeme zur Versionskontrolle, die das Projekt nicht auf Ebene von Dateien, sondern so genannten Revisionen organisieren. Mich wundert bis heute, warum diese Funktionalitäten nach wie vor nicht Einzug in die Bürowelt gefunden haben. Wenn überhaupt, dann sind sie allerdings extrem komplex aber gleichzeitig nutzlos umgesetzt.

Traumberuf Softwareentwickler

Das Schöne an der Softwareentwicklung ist letztlich, dass die vielfältigen Tätigkeiten nicht in eine kurze Erklärung passen. Jede Aufgabenstellung ist in gewisser Weise einzigartig.

Jeden Tag eine neues Projekt: die Nicht-Standardisierbarkeit der Aufgaben ist der einzige Standard.

Ich habe in zehn Jahren IT noch keinen Softwareentwickler getroffen, der nicht Spaß an seiner Arbeit gehabt hätte. Dennoch birgt die Arbeit großes Frustrationspotential.

Einerseits kann man schon mal tagelang auf drei Zeilen Code starren und absolut nicht verstehen, warum das Programm nicht so funktioniert, wie die Dokumentation sagt. Andererseits werden oft die größten Fortschritte nicht als solche anerkannt. Es gibt schlicht keinen Zusammenhang zwischen Programmieraufwand oder technischer Komplexität und Applaus der Benutzer. Situationen in denen die Benutzer schlicht nicht wissen (können) was eigentlich dahinter steckt, so genannte Black Triangles, sind sehr weit verbreitet.

Zum Abschluss: Softwareentwicklung ist für mich der spannendste Bürojob auf Erden. Ich schaffe tagtäglich meine eigene Welt aus Programmcode, der für mich wie Poesie wirkt. Woche für Woche lerne ich etwas Neues von Menschen, die ihre Arbeit im Internet frei zur Verfügung stellen.

Die einzige Limitation in der Welt der Bits und Bytes ist letzlich die Vorstellungskraft der Entwickler. Hoffentlich kann sich bald jemand eine vernünftige Alternative zu Office-Dokumenten vorstellen…