Wann standst Du zum letzten Mal vor einem grossen Berg an Programmcode und hast versucht ihn zu verstehen? Wie bist Du da vorgegangen? Durch wie viele Klassen Java- oder .NET-Code hast Du dich gewühlt? Hast Du alle Referenzen auf den schlechten Code gefunden? Bist Du sicher, dass Du sie alle gefunden hast? Und wie lange hast Du dafür gebraucht? Oder ist der Debugger dein bester Freund?

Obwohl die Entwicklingsumgebungen in den letzten Jahren immer mächtiger geworden sind, hat es bisher nur für eine relativ bescheidene Navigation durch den „Abstract Syntax Tree“ (AST) gereicht, und sonst behilft man sich mit einfachen grep- und regex-Suchen.

Doch die Menge an Code und die Fülle an Medienbrüchen nimmt stetig zu, und es wird immer schwieriger sich einen guten Überblick über die Codebasis zu verschaffen, um informierte und fundierte Entscheidungen bezüglich Design und Problembeseitigung zu treffen.

Selbst testgetrieben entwickelter Code, der aktuell mit zum Besten gehört, dass wir Softwerker produzieren, wird mit zunehmendem Umfang tendenziell unerbittlich komplexer und schwieriger in seiner Gesamtheit versteh- und manipulierbar. Besonders wenn mehrere Leute an einer gemeinsamen Codebasis arbeiten, die über mehrere Generationen von Mitarbeitern gepflegt werden muss, stehen sie vor ebensolchen Herausforderungen.

Da wurde es Zeit, dass sich jemand um die manchmal verloren geglaubte Kunst der Code-Analyse, d.h. die systematische Musterung von Code, ernsthaft bemüht. Dieser Schritt ist nun mit der Lancierung des „humane assessment“ getauften Ansatzes getan.

the humane assessment method
the humane assessment method

Tudor Girba hat es nicht dabei belassen, ein als Open Source publiziertes Tool zur mächtigen Code-Analyse in die Welt zu setzen, sondern sich darüber hinaus überzeugend Gedanken gemacht, wie ein solches „Assessment“, die Beurteilung von Code, in agile Entwicklungsverfahren, ergänzend eingebracht und verankert werden kann.

Seine Argumentation zugunsten eines kontinuierlichen Code-Assessments stützt er dabei auf viele Erfahrungen, die er und andere „Mooser“, in unterschiedlichsten Projektkontexten gemacht haben. Dabei stechen dem geneigten Entwickler zwei fundamentale nutzbringende Anwendungen ins Auge:

  • Die Möglichkeit grosse Mengen an Code gezielt zu filtern und auf dem reduzierten Set an selektierten Stellen im Code, selbst komplexe Analysen und gar Transformationen durchzuführen. Durch die Freiheit eigene Parser, Filter, Transformatoren und Visualisierungen zu implementieren, sind den Möglichkeiten fast keine Grenzen gesetzt.
  • Eine weitere interessante Option besteht in der Möglichkeit wiederkehrend, z.B. im Build-Prozess, die Einhaltung von Architektur- und Design-Regeln automatisiert zu überprüfen, und so eine Bastion gegen die stete Entropie von gutem Code zu errichten.

Mehr über „humane assessment“ erfährst Du auf der einschlägigen Website.