Samstag, Mai 20, 2006

TDD-2: Testabdeckung bei TDD-Code

Ich habe mal die Testabdeckung bei meinem Terminplaner-Beispiel analysiert, das ich testgetrieben entwickelt habe. Dabei hat sich herausgestellt, dass die Testabdeckung nicht bei 100% lag, wie ich zunächst vermutet hätte, sondern bei gut 80%. Nach einigem Nachdenken und Rumprobieren habe ich entschieden, die Testabdeckung nicht auf 100% zu bringen (was problemlos möglich gewesen wäre).
Die Reports der Testabdeckung sowie die Diskussion der Analyseergebnisse finden sich hier zum Download.

Post bewerten

Freitag, Mai 19, 2006

Software-Architektur: Die vergessene Dimension?

Wenn über Software-Architektur gesprochen wird, werden ihr die solche Funktionen zugeschrieben - sowohl bei klassischer Betrachtung wie auch aus dem Blickwinkel agiler Methoden:
  • Rahmen für die Realisierung der funktionalen Anforderungen setzen
  • Nicht-funktionale Anforderungen wie Wartbarkeit, Robustheit, Sicherheit etc. sichern

Dabei wird aus meiner Sicht ein ganz wichtiger Faktor übersehen oder ignoriert. Die Software-Architektur beeinflusst ganz wesentlich die weitere Ausgestaltung des Entwicklungsprozesses und der Projektorganisation. Wie aufwändig die Koordination verschiedenen Entwicklungsteams in einem großen Projekt wird, ist ganz wesentlich von der gewählten Architektur bestimmt.

Ich habe inzwischen eine ganze Reihe von Projekten erlebt, in denen die Architektur gewählt wurde, ohne auf den Entwicklungsprozess und die Projektorganisation zu achten. Die Konsequenz war immer eine sehr unangenehme Beschränkung der Möglichkeiten im Projektverlauf. In einem Fall hätte man ein schlecht laufendes Projekt retten können, wenn man die Entwicklermannschaft von 8 auf 20 Entwickler hätte erhöhen können. Die Architektur hat das aber verhindert. In einem anderen Fall hat die gewählte Architektur erzwungen, dass man ganz genau vorher planen musste, wer was tun muss. Als der Umstieg auf eine agilere, reaktivere Vorgehensweise mit kurzen Releasezyklen anstand, war das faktisch nicht möglich.

Aus meiner Sicht muss bei der Definition und Weiterentwicklung der Architektur jeweils auch berücksichtigt werden, welche Beschränkungen und Möglichkeiten die Architektur für den Entwicklungsprozess und die Projektorganisation mit sich bringt. Und das bedeutet für viele Software-Architekten eine ganz neue zusätzliche Dimension in ihrer Tätigkeit.

Post bewerten

Dienstag, Mai 02, 2006

TDD-1: Testgetriebene Entwicklung am Beispiel

Ich habe zum Spaß mal zwei Sessions zu je 90 Minuten am Beispiel "Terminplaner" testgetrieben programmiert (Java und JUnit). Protokoll und Code gibt es hier zum Download. Vielleicht hilft es ja bereits in der jetzigen Form dem einen oder anderen beim Verständnis von TDD?

Richtig interessant wird es aber erst später. Dann will ich verschiedene Aspekte des Beispiel-Codes und des Vorgehens beleuchten.

Zwei interessante Beobachtungen kann man aber bereits jetzt machen:
  1. Ich war beim Programmieren wg. der fortgeschrittenen Zeit immer wieder mal abgelenkt. Das testgetriebene Vorgehen hat mich immer wieder schnell auf den richtigen Weg gebracht.
  2. Es gibt nur eine Testklasse für 5 Klassen. Man hätte auch Tests für die einzelnen Klassen schreiben können. Das schien mir aber immer doppelte Tests zu implizieren.

Post bewerten