2 Softwareentwicklung als Lernprozess

Am Anfang steht eine Idee. Die Software soll einen Zweck erfüllen, eine Tätigkeit selp bild1unterstützen, kontrollieren, steuern oder automatisieren. Die Lösungsidee ist zunächst sehr abstrakt. Softwareentwickler/innen konkretisieren diese nach und nach, die Entwürfe werden immer konkreter, umfassender und detaillierter. Das Wissen wird breiter – Kreativität, Erfahrungen, technisches Knowhow, Fachkenntnisse und Alltagswissen fließen ein. Dies ist in Bild 1 dargestellt.

Die Entwurfstätigkeit ist kein linearer Prozess vom Abstrakten zum Konkreten: Vermeintliche Lösungen werden verworfen, weitere Analysen führen zu neuen Abstraktionen, diese werden wieder konkretisiert, Entwürfe werden geändert, Anforderungen erweisen sich als inkonsistent, neue Anforderungen werden ergänzt, Lösungen werden implementiert und ausprobiert, für gut befunden oder wieder verworfen.

Das fertige Programm ist der konkreteste Entwurf, aufgeschrieben in einer selp bild2Programmiersprache. Dieser Entwurf ist das einzige wirklich wichtige Ergebnis aller Entwurfstätigkeiten, er wird Source-Code genannt. Der Code wird von speziellen Programmen („Compilern“) in ausführbare Programme transformiert. Das ist die Produktion der Software, der Aufwand dafür ist im Vergleich zur Erstellung der Entwürfe zu vernachlässigen. Während der Entwicklung werden immer wieder Teile des zu erstellenden Systems oder auch Versionen des gesamten Systems kompiliert und getestet. Irgendwann ist das Ergebnis zufriedenstellend und die Software gilt als fertig. Nach abschließenden Tests wird die Software dann auf Rechnern oder in Rechenzentren der Nutzer installiert und in Betrieb genommen. (siehe Bild 2)

Der wesentliche Teil der ganzen Entwurfstätigkeit spielt sich in den Köpfen der Entwickler/innen ab. Außer dem Code werden zwischendurch auch immer wieder Ideen, Entscheidungen und Zwischenergebnisse aufgeschrieben – in textueller oder in grafischer Form. Das Vorgehen ist meist nicht so beliebig, wie sich das hier anhört. Üblicherweise wird strukturiert und geplant, was in welcher Reihenfolge zu tun ist und welche Artefakte erzeugt werden sollen. Da ist dann die Rede von Spezifikationen und Anforderungsdefinitionen, von Pflichten- und Lastenheften, von fachlichen und technischen Konzepten, von Architektur und Design, von Grob- und Feinentwürfen, von Modulspezifikation, -design und -test, von Unit- und Systemtests, von technischen Durchstichen und Prototypen – schlussendlich geht es immer um Entwürfe und deren Überprüfung. Idealerweise legt ein Team seine Vorgehensweise selbst fest, abhängig von den beteiligten Personen, von der Art der Anwendung und vom Projektumfeld. Prozessorientierte Manager fordern einheitliche Vorgehensweisen in allen Projekten und bestehen auf der Erstellung von standardisierten Artefakten. Orientiert an den Zwischenergebnissen werden Phasen wie Spezifikation, Analyse, Design, Implementierung und Test definiert. Prozessmodelle legen auch fest, wie unüberwindlich die Grenzen zwischen solchen Phasen sind, ob sie einmal oder mehrfach durchlaufen werden, ob das ganze System in mehreren Inkrementen oder in einem Rutsch gebaut und ausgeliefert werden soll.

Der wichtigste Prozess ist aber der Lernprozess im Entwicklungsteam. Alle Dokumentationen sind unvollständig und geben immer nur einen Teil des Wissens wieder. Auch die beste Spezifikation unterstellt noch Kontextwissen. Vollständig ist allein der Code, der ist aber als Ganzes kaum mehr verständlich, vor lauter Bäumen sieht man den Wald nicht mehr. Der Code offenbart nicht, wie das Ganze einmal gedacht war, die Theorie steckt in den Köpfen der Entwickler/innen.

weiter

Advertisements

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 )

Google+ Foto

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

Verbinde mit %s


%d Bloggern gefällt das: