Softwareentwicklung
Die Entwicklung von Software ist so kompliziert wie kaum ein anderes Unterfangen der Technik. Das merkt man unter anderem an den unausrottbaren Softwarefehlern und den vielen Arbeitsplätzen, die in der Softwaretechnik entstanden sind – entgegen der Befürchtung der 1980er Jahre, dass der zunehmende Einsatz des Computers zu einer Massenarbeitslosigkeit führen wird.
Ich habe mehr als 6 Jahre lang meinen Arbeitsplatz in der Softwareentwicklung gehabt. Mein Wissen über Softwareentwicklung zählt zu den beruflich am besten verwertbaren Kenntnissen, die ich habe.
Phasen
Zur Softwareentwicklung gehört:
- Analyse – Was soll die Software tun?
- Design – Wie sollen die Anforderungen umgesetzt werden?
- Spezifizieren – Was ist im Detail zu programmieren?
- Programmieren
- Testen
- Dokumentation
- Wartung – Aktualisierung, Weiterentwicklung, Fehlerbeseitigung, Hilfe bei Problemen
Meiner Erfahrung nach sind diese Phasen in kleineren Softwarefirmen nicht streng getrennt. Im Extremfall macht eine Person alles zugleich. Das muss nicht schlecht sein. Im Gegenteil, das ist sogar sehr effizient. Deswegen können kleine Firmen oft viel günstigere Angebote machen als große Firmen. Und wenn man einen Studenten programmieren lässt, kommt es noch günstiger. Allerdings hat der Student wahrscheinlich irgendwann keine Lust mehr, weiterzuarbeiten. Dann wird die Software zur Altlast. Große Firmen sind langsamer, teurer und weniger flexibel, dafür liefern sie i. A. bessere Qualität mit besseren Zukunftsaussichten und können als einzige auch große Projekte umsetzen.
Meine Prinzipien
Wenn ich für ein Softwareentwicklungsprojekt verantwortlich bin, gebe ich folgenden Dingen eine hohe Priorität:
- Kundenorientierung – Das Programm muss sich an den Kundenwünschen orientieren, nicht umgekehrt. Meines Erachtens sollte man aber nicht alle Wünsche unhinterfragt erfüllen, denn das ist auf Dauer keineswegs im Interesse der Kunden und Benutzer. Ich kenne ein Programm, an dem man deutlich sieht, wohin das führt: viele Buttons und Funktionen, von denen die meisten irgendwelche Spezialwünsche erfüllen, die kaum jemand braucht. Für eine sinnvolle Ordnung hat sich offenbar niemand eingesetzt.
- Usability – Die Benutzer müssen das Programm gut bedienen können, nicht die Programmierer oder irgendwer anderer.
- Robuste Software
- Fehlerbehandlung
- Qualitätssicherung durch gründliche Tests, Fehlersuche im Programmcode (auch schon bevor ein Fehler aufgetreten ist) und Logfiles zur Überwachung des Echtbetriebs
Effizienz
Je besser der Vorgang der Softwareentwicklung strukturiert ist, desto größer ist der Aufwand bei Änderungen an der Software, weil jede kleinste Änderung einen ganzen Rattenschwanz an Zusatzaufwand verursacht. Ein einziges neues Datenbankfeld anlegen und in die Benutzeroberfläche integrieren kann in der Praxis 10 000 € und mehr kosten. Ob das wirklich nicht effizienter geht? Ich glaube, hier muss noch viel geforscht werden.
Meine Ideen von einer effizienteren Softwareentwicklung liegen in einer Programmierweise, die möglichst redundanzfrei ist und an zukünftige Änderungen denkt.
Weiter
Weblinks
- Online-
Bücher über Softwareentwicklung auf Galileo Computing