Software Qualität

Ich bin ein großer Fan von Douglas Crockford und seine Präsentation für YAHOO. Ich hab mir letztens seine Präsentation über Software Qualität angeschaut und war fasziniert.

Ich möchte nun einige meiner Notizen und Eindrücken posten.

Eine gute Software Architektur ist nötig um ein Programm genügend Struktur und Stabilität zu geben, damit die sie wachsen kann ohne dabei in eine Qual von Verwirrung zu stürzten.

Überflüssiger Quellcode

Dieser Quellcode entsteht meist durch unfertigen Optimierungen, Unerfahrenheit und Feature Verbesserungen. Ungenutzt Code Passagen entstehen und kein Programmierer weiß mehr “Ist dieser Code Block wichtig?”. Meist gibt es auch keine Dokumentation zu diesen überflüssigen Code. Und so bleibt der Code ganz nach der Manier “Dont change a running code” in der Software.

Zusätzlich zum überflüssigen Source Code, gibt es die Aufblähungen - der Krebs der Software Entwicklung. Unter Aufblähungen versteht man mehrere Kopien vom selbem Code oder der selben Lösung (Methode,Klasse).

Diese Aufblähungen entstehen sehr schnell, auch schon bei wenigen Programmierern. Ich gebe mal ein Beispiel:

  • verschiedene Programmierer entwickeln an einer Software
  • Programmierer A hat folgendes Problem und implementiert Methode X
  • Programmierer B hat bereits eine solche Methode geschrieben, da Sie aber nicht dokumentiert ist gibt es nun zwei methoden mit unterschiedlichen Namen mit der identischen Funktion.

Häuft sich der uberflüssige Quellcode an, steigt die Komplexität und ein Weiterentwicklung wird langsam und zäh bis zum kompletten Stillstand.

Lösung? Refactoring!

  • Formatierungen verbessern ( Coding Standards einführen )
  • Dokumentation  ( API Doku, Referenz Doku etc. )
  • entfernen von Überflüssigen Quellcode und den Aufblähungen
  • Neu Strukturierung

Feature Freeze! Und überlegen: Was wurde falsch gemacht - Wie kann man das verbessern.

Worst Case - Das unerträgliche

Das Software Schiff kann nicht gerettet werden und auch das Stopfen der Löcher durch Refactoring versagt. Neuer Kurs:  kompletter Neuanfang!
Verlust von Jahren, Monaten, Wochen von Arbeit. Der graus eines jeden Projektmanager - investierte Geld für nichts?

Nein,  den ein Team kann durch die Erfahrungen des “first system” profitieren und kann die Entwicklungszeit sehr stark verkürzen. Es muss aber darauf geachtet werden, das jedem Entwickler die bisherigen Fehler klar sind und der Fokus auf die Einfachheit liegt.

Crockford berichtet das er bisher drei-mal ein Software Projekt neugestartet hat. Von Jahren zu 5 Monaten von 5 Monaten zu 2 Wochen.

Natürlich hängen diese Zahlen mit der Erfahrenheit der Entwickler und deren Kapazitäten zusammen.

Ein Entwickler sollte nur das machen was er wirklich am besten kann - so arbeitet er wirklich 100% und produktiv. Ein Team sollte aus mehreren Spezialisten bestehen die sich Reibungslos ergänzen und vorranbringen. Das Spezialisten Team könnte z.B. GUI Designer, Database Engineer, Schreiber, Beta Tester, etc. diese Liste lässt sich beliebig ändern und erweitern.

Ein weiterer Punkt den Crockford anspricht ist die Sicherheit.

Wer Sicher programmiert - programmiert maintainable und vorausschauend.

Leave a Reply