Clean Code Development – ein Weg zu besserer Software?

14. August 2009

Software besser zu machen, d.h. insbesondere ihre Qualität, Zuverlässigkeit, Fehlerfreiheit und Sicherheit zu steigern, ist mittlerweile ein Trendthema geworden. Bislang ging man dabei den Weg, über Vorgehens- und Reifegradmodelle zur Softwareentwicklung den Entwicklungsprozess zu verbessern. Softwareentwicklung also zunehmend durch Standardisierung zur Ingenieursdisziplin (Engineering) zu machen. In dieselbe Richtung gehen auch agile Methoden wie SCRUM oder XP, die auf die Verbesserung der Projekt- und Arbeitsorganisation der Softwareentwicklung abzielen.

Mit Clean Code Development (CCD) wurde zum Jahresanfang nun eine Initiative gestartet, die auf das eigentliche Herzstück der Softwareentwicklung abzielt: den Softwareentwickler.

Basierend auf den Arbeiten von Robert C. Martin, die dieser in seinem Buch „Clean Code“ veröffentlichte, befasst sich CCD mit Praktiken wie Codeoptimierung (Refactoring), Entwurfsmuster (Patterns) sowie Testen und Techniken zur Erstellung sauberen Quellcodes. Sozusagen die Rückführung der Softwareentwicklung auf gute handwerkliche Arbeit, durch die sich der Profi vom Amateur und Bastler unterscheidet.

Für Code als Quelltext und strukturiertem Ausdruck der Funktionalität sowie als kleinsten gemeinsamen Nenner zwischen Softwareentwicklern aller Art beschreibt Clean Code eine Menge von Prinzipien und Best Practices als kleinsten gemeinsamen Nenner.

Dazu gehört u.a. ein aus Prinzipien und Praktiken guter handwerklicher Arbeit bestehendes CDD-Wertesystem. Sowie eine Einteilung in aufeinander aufbauender Grade fortschreitender Professionalisierung, die sich mit Themen wie Automatisierung von Abläufen, Testen, Testautomation, projektbegleitende Qualitätssicherung sowie Steigerung der Produktivität als Entwickler auseinandersetzen.

Ralf Westphal, Mitbegründer der „Clean Code Development“-Initiative in einem Interview mit Heise Developer:

Mir ging es darum, Unternehmen bewusst zu machen, wie viel Geld sie mit schlechter Softwarequalität „verbrennen“ – selbst wenn die Umsätze sie irgendwie gerade noch tragen. Die Idee stieß bei Stefan auf offene Ohren, und so sahen wir das Buch “Clean Code” als pragmatischen Ausgangspunkt für mehr Bewusstsein hinsichtlich innerer Softwarequalität. Denn um die geht es uns. Wir machen keine Aussage zu äußerer Qualität, die zum Beispiel mit Funktionen, Usability oder Skalierbarkeit zu tun hat. Uns geht es um Wartbarkeit – auch wenn wir den Begriff unglücklich finden. Sehr viele Projekte stecken in einem Wartungsalbtraum. Aus dem wollen wir sie wecken. Andere Projekte bewegen sich darauf zu. Denen wollen wir zeigen, dass der Albtraum vermeidbar ist.

Dort weist er auch auf die Lücken bisheriger Ansätze zur Qualitätssicherung in der Softwareentwicklung hin:

Schließlich ist Softwarequalität das Thema von Verbänden und Normen. Da kann man sich ISO-zertifizieren lassen oder sich auf ein CMMI-Level heben. Das ist alles schön und gut. Nur sehen wir nicht, dass diese Initiativen auf breiter Front Erfolg haben. Der Entwickler einer Branchensoftware in einem 5-Mann-Team hat davon sogar wahrscheinlich nicht einmal gehört. Ganz zu schweigen davon, dass seine kleine Softwareschmiede eine Zertifizierung wegen der hohen Kosten nicht durchlaufen würde. Die „große“, „formale“, „offizielle“ Softwarequalität lässt also eine sehr große Zahl von Projekten außen vor, weil sie bürokratisch und teuer ist.

Mit Clean Code Developer wollten wir daher eine Lücke schließen, die wir in unserer Arbeit in vielen Projekten gesehen haben. Es geht uns „nur“ um eine ganz pragmatische und vor allem innere Softwarequalität, die sich mit etwas gutem Willen und ein paar Werkzeugen in jedem Projekt herstellen lässt. Von anderen Initiativen unterscheiden wir uns also schon einmal durch unseren Fokus.

Darüber hinaus legen wir Wert auf die Didaktik. Denn der schönste Fokus nützt nichts, wenn sich das Ziel nicht erreichen lässt. Clean Code Developer unterscheidet sich unserer Meinung nach daher von anderen Initiativen durch sein Stufenkonzept. Wir haben den „Lernstoff“ von vornherein eingeteilt, sodass ein klarer Weg hindurch sichtbar ist. Wir holen die Entwickler bei ihrer Überlastung ab und zeigen ihnen, wie sie in kleinen Schritten – definiert in den CCD-Graden – zu einer Veränderung ihrer Haltung und damit zu höherer Codequalität kommen.

Es bleibt abzuwarten, ob und wie sich CCD weiter entwickeln wird. Zumindest dort wo heute bereits mit agilen Methoden, d.h. sehr am einzelnen Entwickler orientiert gearbeitet wird, dürften CCD-Ansätze eine weitere methodische Ergänzung darstellen.

Insbesondere aber wer die Entwicklung von Software neu erlernt oder Entwicklungsprojekte häufiger auf Codeebene zu prüfen hat, täte gut daran sich mit den Überlegungen des Clean Code Development zu befassen.


Follow

Bekomme jeden neuen Artikel in deinen Posteingang.

Join 70 other followers