Kolumne: Dino talks

Wenn einfach unnötig komplex ist
Kommentare

Der Softwareentwurf hat eine gewisse Analogie mit dem Bauwesen. Diese Analogie war allerdings in den Anfängen der Softwaretechnik wesentlich stärker ausgeprägt als heute. Die Verschiebung hat Mitte der 1990er Jahre mit der Einführung der Methodologie der Extremprogrammierung begonnen. Dieser Artikel konzentriert sich auf eine Reihe von Schlüsselaussagen der Extremprogrammierung und setzt sie in Beziehung zum Erfolg oder Scheitern von Softwareprojekten.

Extremprogrammierung (Extreme Programming, XP) ist mittlerweile seit über einem Jahrzehnt gebräuchlich und hat einer Menge von Firmen überall auf der Welt geholfen, Projekte mit vollständiger Kundenzufriedenheit unter Dach und Fach zu bringen. XP ist eine agile Methodologie für die Softwareentwicklung und konzentriert sich auf wenige Schlüsselaussagen, wenn nicht sogar strenge Regeln. In diesem Artikel greife ich einige davon auf und verweise Sie auf http://www.extremeprogramming.org für weitere Untersuchungen, die Sie zu diesem Thema benötigen könnten.

Meiner Ansicht nach ist die Kernaussage von XP und der Softwareentwicklung im Allgemeinen das Prinzip, das sich als „Tue das Einfachste, das möglicherweise funktionieren könnte“ zusammenfassen lässt. Das zweite und eng verwandte Prinzip ist als „Your arent’t gonna need it“ (Du wirst es nicht brauchen) – kurz YAGNI – bekannt. Des Pudels Kern dieser Prinzipien scheint leicht fassbar zu sein; dennoch ist das Arbeiten mit diesen Prinzipien in einem realen Projekt, egal welcher Größe, komplexer als man denken mag. Jahre mit Schwierigkeiten und Softwarefehlern lassen sich anscheinend auch auf offenkundige Verletzungen eines dieser Prinzipien zurückführen. Zunächst möchte ich kurz daran erinnern, was diese Aussagen ausdrücken sollen, und dann Methodologien einführen, damit das, was Sie – am einfachsten oder unnötig komplex – liefern, genau das ist, was die Benutzer wünschen – ob sie wirklich danach verlangt haben oder nicht.

Das Einfachste tun, das möglicherweise funktionieren könnte

Dieser Satz ist selbsterklärend und sogar nahe genug am gesunden Menschenverstand. Brauchen wir wirklich jemanden, der uns ständig an diese offenkundige Tatsache erinnert? Als erfahrene Entwickler und Architekten brauchen wir möglicherweise keine Erinnerungen an die Wichtigkeit dieses XP-Pfeilers. Allerdings müssen wir uns klar darüber sein, was „einfach“ für uns und vor allem für unser Projekt bedeutet. Häufig verwechseln wir einfach mit simpel. Während einfach lediglich ein Attribut ist, das die Struktur einer vollständigen Lösung charakterisiert, ist simpel negativ besetzt und verweist auf eine Lösung, die eventuell nicht mit allen Features ausgestattet ist, in einigen der unterstützten Szenarios nicht hundertprozentig arbeitet, sich nur mühsam verbessern lässt und in bestimmtem Umfang einige der gesteckten Ziele verfehlt.

In der Formulierung des XP-Prinzips bleibt der Begriff „das Einfachste“ absichtlich verschwommen. Was einfach wirklich bedeutet, ist projektspezifisch und von konkreten Szenarios abhängig. Zudem sind in Software Einfachheit und Komplexität nicht im Sinne von „komplex ist das Gegenteil von einfach“ direkt miteinander verknüpft. Stattdessen handelt es sich um zwei klar verschiedene Attribute einer Softwarelösung. Eine Lösung kann komplex sein, mehrere Module und Komponenten umfassen, Protokolle und Transportmechanismen verlangen und dennoch in ihrer Architektur recht einfach gehalten sein. Wird zum Beispiel das HTTP-Protokoll genauer als einfach oder als komplex definiert? Wenn Sie sich die Abermillionen Dinge ansehen, die wir über das HTTP-Protokoll abwickeln, sollten wir dann nicht von einem superkomplexen Protokoll sprechen? Am Ende ist es stattdessen ein ziemlich einfaches Ding, das schnell zu verstehen, zu erläutern und anzuwenden ist. Wenn ich eine Definition für „das Einfachste“ finden müsste, würde ich Folgendes sagen: Beim Einfachsten kommt es darauf an, unnötigen Schnickschnack aus einem Projekt zu entfernen. Gibt es irgendwas sonst, was Sie nicht entfernen können, ohne die Funktionalität zu beeinträchtigen, haben Sie das Einfachste, das wahrscheinlich funktionieren könnte. In jedem Fall ist die einfachste Lösung nicht unbedingt die schnellste Lösung, die Sie schreiben können. Es ist aber auch nicht die längste. Desgleichen ist das Einfachste nicht das, was einem zuerst einfällt.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -