Wie man Software entwirft

Wie schreibt man eigentlich Software?
– Nun, man tippt einfach den Code.
Und wie weiß man welchen Code man schreiben muss?
– Äh…

– Also, wenn man plangetrieben entwickelt, hat man ein Modell der Software, die man implementiert.
Und wie kommt man zu dem Modell?
– Man schreibt es auf, z.B. mit UML.
Und wie weiß man, was man aufschreiben muss?
– Äh…
– Also, wenn man agil entwickelt, entwickelt man i.d.R. testgetrieben, d.h. man schreibst zuerst Tests und aus den Tests kann man ersehen, welches Design man zu verwenden hat.
Und wie weiß man, wie man den Testcode schreibt?
– Man benutzt ein Unittest-Framework und testet damit die zukünftige Schnittstelle.
Und wie weiß man, wie die zu testende Schnittstelle aussehen muss?
– Äh…

OK, die Antwort auf diese Frage wird etwas länger.

In diesem Semester betreue ich mal wieder das Softwareentwicklungsprojekt bzw. Modellierungspraktikum. Dieses Jahr bieten wir erstmals Saalübungen an und in einer solchen hab ich versucht, genau die oben stark vereinfacht hergeleitete Frage etwas aufzuklären.

Letztendlich liegt hier das, was Softwareentwicklung manchmal zu einer Art „Kunst“ werden lässt. Ein scheinbar undefiniertes Wissen, das einfach aus „Erfahrung“ zu kommen scheint. Aber ganz so undefiniert ist dieses Wissen gar nicht. Viel davon lässt sich in einfachen Prinzipien, Heuristiken oder „Daumenregeln“ zusammenfassen, was ein gewisses Maß an Wissenstransfer ermöglicht. Ich habe darüber schon das ein- oder andere Mal geschrieben. Leider wird so etwas nur selten wirklich gelehrt, auch, wenn es machbar wäre. Man kann damit problemlos ganze Vorlesungen füllen. Ich hab versucht, das in eine 90-minütige „Saalübung“ zu quetschen. Und vielleicht war es sogar ein bisschen hilfreich.

Ich habe diesmal neben den eigentlichen Folien ein separates Handout gemacht. Das hat den Vorteil, dass die Folien nicht selbsterklärend sein müssen und deshalb knapper und übersichtlicher sein können. Auf der anderen Seite kann das Handout ausführlicher und beschreibender sein. Das Handout ist damit zwar noch kein ausführliches Tutorial, aber zumindest mal ne kurze Einführung in die Problematik und sollte auch verständlich sein, wenn man meinen Vortrag nicht gehört hat.

Das ist das erste Mal, dass ich das so gemacht habe. Feedback ist also herzlich willkommen. insbesondere weil ich mir überlege, ob ich das für meinen Vortrag auf den nächsten Delphi-Tagen auch so machen soll.

Hier ist also das Handout: Wie man Software entwirft -- Handout (2015 Downloads)
Hier die Folien: Wie man Software entwirft -- Folien (1468 Downloads)
Und hier der Source (LaTeX): Wie man Software entwirft -- Source (1257 Downloads)

1 Kommentar


  1. Vielen Dank.

    Nach sowas hab ich gesucht. 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.