Oh Schreck – Schmutz in der Softwareentwicklung?!

Softwareentwicklungsschmutz? Was ist denn das? Manche haben diesen Begriff vielleicht noch nie gehört, haben aber in ihrem Entwickler-Alltag sicherlich schon mit „ihm“ zutun gehabt.
Im 1. Teil meiner dreiteiligen Blog-Serie werden ich darstellen, wie die Softwarequalität durch Softwareentwicklungsschmutzschmutz beeinträchtig wird und welche Rahmenbedingungen dazu beitragen, dass Softwareentwicklungsschmutz entstehen kann.
Im 2. Teil stelle ich Maßnahmen zur Prävention vor, die jeder Entwickler in seinem Alltag anwenden kann. Im 3. Teil zeige ich, wie die Entwickler „Schmutz“ im Prozess gemeinsam im Team bereinigen können.

1. Was bedeutet der Begriff „Softwareentwicklungsschmutz“?Definition_Innere und aeussere Softwarequalitaet

Softwareentwicklungsschmutz ist all das, was die Entwicklung, Wartung, Betrieb und Anwendung von Software behindert bzw. deren Qualität herabsetzt. Dies äußert sich darin, dass die unterschiedlichen Akteure (Fachexperte, Anforderungsmanager, Entwickler, Architekt, Administrator im Betrieb und User) in ihrem Handeln behindert werden, sei es durch fehlende oder unverständliche Informationen oder durch unklare Prozesse. Schmutz gibt es in allen Bereichen von Softwarequalität, bei der inneren und der äußeren.

Innere und aeussere Softwarequalität

 2. Rahmenbedingungen für die Entstehung von Softwareentwicklungsschmutz

Grundsätzlich lassen sich zwei Faktorengruppen unterscheiden:

  1. projektspezifische Faktoren und
  2. projektunspezifische Faktoren.

Typische projektspezifische Faktoren sind:

  • starre Organisationsstrukturen,
  • unbefriedigende Teamzusammensetzungen,
  • ungünstige räumliche Gegebenheiten, unter denen ein Team arbeitet sowie
  • problematisches Projektmanagement.

Zu den projektunspezifische Faktoren hingegen zählen:

  • Termin- bzw. Zeitdruck,
  • schnell wechselnde Anforderungen,
  • schneller technologischer Fortschritt,
  • fehlendes Wissen der Akteure und
  • mangelnde Kommunikation zwischen den Akteuren.

Schmutz beider Faktorengruppen finden sich sowohl sowohl im Code als auch im Prozess.

Laut dieser Umfrage1) (s. S. 46, Tabelle 1) tragen die projektunspezifischen Faktoren Termin- und Zeitdruck als auch schnell wechselnde Anforderungen sehr stark zu Arbeitsbehinderungen im Entwickleralltag bei.

2.1 Schnell wechselnde Anforderungen

Projekte sind grundsätzlich geprägt (mal mehr mal weniger) durch ständig wechselnden Anforderungen. Daher sind Situationen, in denen Code umgebaut oder sogar verworfen wird nicht selten. Geschieht dies zu häufig, sinkt die Bereitschaft gewissenhaft und sauber zu arbeiten.

2.2 Termindruck

Als einer der Hauptgründe für „Dirty Code“ nennen Entwickler meist den Termindruck. Eine Waage veranschaulicht, dass Kosten, Termine und Qualität in einem Konkurrenzverhältnis zueinander stehen. Verstärkter Termindruck bewirkt, dass bei gleichbleibenden Kosten die Softwarequalität zu kurz kommt. Verstärkter Termindruck senkt ebenfalls die Bereitschaft gewissenhaft und sauber zu arbeiten.

Magische Dreieck_Kosten, Termin, Qualitaet

 

3. Symptome von Softwareentwicklungsschmutz

Die Symptome von Softwareentwicklungsschmutz zeigen sich nicht nur auf Basis des Codes, sondern auch auf der Prozessebene.

3.1 Schmutziger Quellcode

„Dirty Code“ äußert sich durch schlechte Verständlichkeit, Änderbarkeit, Erweiterbarkeit und Testbarkeit. Dies bedeutet für den Entwickler langwierige Fehleranalysen, aufwändige Umbaumaßnahmen, ungewollte Seiteneffekte bei Codeänderungen und Mängel in den nicht-funktionalen Qualitätsmerkmalen, wie Stabilität, Korrektheit, Resourceneffizienz, Perfomance. Konkrete Indizien im Code sind u.a.:

  • Coderverdopplungen,
  • unverständlicher Code,
  • unvollständige Implementierung,
  • toter Code,
  • starke Kopplung zwischen Klassen und Modulen,
  • Vermischung von Belangen und Verantwortlichkeiten,
  • fehlende Tests, mangelnde Testabdeckung sowie
  • mangelnde Automatisierung.

3.2 Symptome auf Prozessebene

Auf Prozessebene äußert sich Schmutz ebenfalls durch Ineffizienz, z.B.:

  • mangelnde Kommunikation (über alle Hierarchieebenen hinweg),
  • fehlende Qualitätssicherungsmaßnahmen,
  • unzureichendes Know-how bei den Akteuren, so dass die Requirements, Architektur, Implementierung, Releases, Build und Tests nicht sauber realisiert werden können,
  • ungeeignete Tools und Softwaretechniken und
  • mangelnde Motivation, Prozesse gemeinsam einzuhalten.

Fazit

Es gibt sehr unterschiedliche Arten von Softwareentwicklungsschmutz. Um die Softwareentwicklung ausreichend sauber zu halten, muss bewusst, konsequent und kontinuierlich  gegen Schmutz im Code wie im Entwicklungsprozess gearbeitet werden.

Links   [ + ]

1. http://www.iks-gmbh.com/assets/downloads/iks-CleanCodingCosmos-Teil-2-OBJEKTspektrum-01-2014.pdf

Schreibe einen Kommentar

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