Agile Softwareentwicklung

Lean Software Development

24.08.2010

6. Integrität einbauen

Dabei unterscheidet Lean Software Development zwischen interner, konzeptioneller Integrität und externer, empfundener Integrität. Die konzeptionelle Integrität beschreibt den technischen Aufbau des Systems:

  • Ist die Architektur zugleich verständlich und erweiterungsfähig?

  • Können neue Features ohne Probleme eingebaut werden?

  • Ist das Design konsistent?

Die empfundene Integrität ist dagegen eine Eigenschaft der Benutzungsoberfläche:

  • Verwendet die Oberfläche möglichst wenige und eingängige Metaphern?

  • Ist die Bedienung intuitiv?

  • Werden gleiche Dinge auch gleich repräsentiert?

Integrität lässt sich nicht von Anfang an "hineinplanen”. So wie ein Text immer wieder Korrektur gelesen werden muss, so müssen auch eine Oberfläche oder ein Design immer wieder kritisch überprüft und verändert werden, zumal Integrität zu Projektbeginn meist noch kein großes Problem darstellt.

Kritisch wird es oft erst dann, wenn Änderungen kommen, die über den geplanten Umfang hinausgehen. Insbesondere der Versuch, solche Änderungen einzubauen, möglichst ohne den existierenden Code anzufassen, führt zu Rucksäcken, Spaghetticode und letztlich zum Tod des Projekts.

Somit ist der nächste wichtige Punkt die empfundene Integrität. Eine enge Zusammenarbeit zwischen Entwicklern und Anwendern ist Grundvoraussetzung, damit Anwender Integrität empfinden, wenn sie mit einem System arbeiten. Je besser diese Kommunikation funktioniert, um so eher können Fehlentscheidungen aufgedeckt und korrigiert werden. Am besten funktioniert diese Abstimmung in kurzen Iterationen mit lauffähiger Software. Bei komplexeren Aufgaben können aber auch frühere Abstimmungen sinnvoll sein.

Neben der empfundenen Integrität ist die konzeptionelle Integrität von Bedeutung. Die schönste empfundene Integrität wird kaum auf Dauer zu halten sein, wenn sie reine Fassade ist, also nicht eine innere konzeptionelle Integrität widerspiegelt. Die innere konzeptionelle Integrität sicherzustellen ist die wichtigste Aufgabe des Master Developers. Vor allem muss dafür die Kommunikation innerhalb des Teams funktionieren.

Allerdings verliert Software, die inkrementell entsteht, im Laufe der Zeit ihre konzeptionelle Integrität. Um dem entgegenzuwirken wird eine weitere Methodik angewandt, das Refactoring.

Ein weiteres, bereits bekanntes Hilfsmittel zur Sicherstellung der Integrität ist das automatisierte Testen. Neben der Sicherung der Codequalität und der Stabilität gegenüber Änderungen können automatische Tests auch folgenden Zwecken dienen:

  • Kommunikation der Anforderungen

  • Feedback

  • Gerüst für weitere Methodiken wie z.B. Refactoring

  • Dokumentation

  • Wartbarkeit.