Paretoware //2681

Fortschritte verlaufen in der Softwareentwicklung nicht linear. Ziemlich schnell hat man einen im Wesentlichen funktionierenden Prototypen, aber die Feinheiten ziehen sich halt hin.

Nehmen wir als Beispiel, dass eine zu implementierende Funktion bestimmte Daten als Datei abspeichern soll. Die Daten werden in geeigneter Form von einer anderen Funktion aufbereitet und bereitgestellt, die uns jetzt nicht zu interessieren braucht. Als Parameter erhält unsere Funktion den Dateinamen (samt Pfad) der zu schreibenden Datei.
Da ist es (bei ausreichender Vorbereitung) vielleicht nur eine Zeile Code, die Daten in die Datei zu schreiben, und normalerweise funktioniert das einwandfrei.

Was aber, wenn nicht? Denn es gibt so viele Gründe, warum der Speichervorgang schief gehen könnte. Eine vollständige Liste dürft ihr hier nicht erwarten. Aber es fängt schon damit an, dass manche Zeichen für Dateinamen nicht zulässig sind. Dann müssen die Verzeichnisse im Pfad existieren. Wenn die Datei bereits vorhanden ist, könnte sie schreibgeschützt sein. Oder das ganze Speichermedium ist schreibgeschützt. Eventuell fehlen die Zugriffsrechte. Oder die existierende Datei ist von einer anderen Anwendung gelockt. Vielleicht ist der Datenträger auch so voll, dass die Daten nicht mehr drauf passen. .. Wie gesagt, das sind bei weitem nicht alle möglichen Problemursachen. Und natürlich kann auch beim Aufbereiten des Datenstreams etwas schief gehen, während der Schreibvorgang vielleicht schon begonnen hat. Oder irgendein anderes Problem tritt gleichzeitig auf, das noch nicht einmal etwas mit dem Schreiben zu tun haben muss.

Wenn man die Software sauber programmieren will, müssen alle diese Fälle abgefangen werden, bevor sie für die Anwender freigegeben werden kann. Und wenn dann mal so ein Fall auftritt, wollen die Anwender sogar noch eine aussagekräftige Fehlermeldung.

Viele Softwerker meinen ja, dass die Pareto-Verteilung von 20:80 Softwareentwicklung nicht angemessen beschreibt. Prototypen mit grundlegender Funktionalität hat man bereits mit geringem, vielleicht 10% Aufwand. Aber bis die Software richtig ausgereift ist, und ein ansprechendes GUI hat, so dass jeder DAU sie problemlos und größtenteils intuitiv bedienen kann, muss noch viel Zeit und Arbeit hineingesteckt werden.

Nicht alle Fehler eines Produkts sind offensichtlich. Manche treten nur sporadisch auf, andere haben Seiteneffekte, die man überhaupt nicht korrekt zuordnen kann, manche führen unbemerkt zur Instabilität des ganzen Systems oder bringen es gar zum Absturz.
Ich erinnere mich an einen Fall, da wurden in einem bestimmten Modus die GDI-Handles nicht sauber freigegeben. Erst nach längerer Zeit wurden dann systemweit Icons oder andere graphische Elemente nicht mehr angezeigt. Wenigstens war das im Grunde eine harmlose Sache, ohne größere Auswirkungen. Die Ursache zu finden, hat allerdings lange gedauert.
Ich habe daraus gelernt. So etwas passiert mir nicht mehr.
Die Zeit für gründliche, sorgfältige Prüfungen und Tests muss man sich auf jeden Fall nehmen, selbst wenn das Produkt auf den ersten Blick einwandfrei erscheint (und noch so dringend benötigt wird).

Über Anne Nühm (breakpoint)

Die Programmierschlampe.
Dieser Beitrag wurde unter Uncategorized abgelegt und mit , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

5 Antworten zu Paretoware //2681

  1. Plietsche Jung schreibt:

    Ich würde eher von 90/10 ausgehen.
    Vergiss nicht noch die ganze Dokumentation vom Flowchart bis zu den Kommentaren. Auch das ist viel Arbeit.

    Gefällt 1 Person

  2. idgie13 schreibt:

    Das kann ich aus meiner Praxis auch so bestätigen.
    Als guter Entwickler, der etwas für die Zukunft mitdenkt und grundlegende Strukturen von Anfang an mit einbaut, hat man es da nicht leicht. Es dauert einfach immer länger als man denkt und es kommen immer Änderungswünsche dazu…

    Gefällt 1 Person

  3. Pingback: Unerwartete Nachfrage //2709 | breakpoint

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s