Events

Clone Detection & Management für Architekten

Written by Dr. Elmar Jürgens | Jul 4, 2023 9:38:00 am
 

Zusammenfassung

Copy & Paste-Programmierung ist seit Jahrzehnten als Code-Smell verschrien. Das hat nicht verhindert, dass in quasi allen größeren Systemen viele durch Copy & Paste entstandene Klone vorkommen. In einigen Systemen kommt mehr als die Hälgte aller Zeilen in Kopie an anderen Stellen auch vor. Das schafft in der Weiterentwicklung viele Probleme, da Änderungen an mehreren Stellen durchgeführt werden müssen, Code-Reviews aufwändiger werden, Fehler oft bei Fixes in Kopien übersehen werden etc.

Clone Detection, also statische Code-Analyse, die solche Duplikate automatisiert erkennen kann, ist inzwischen in einigen IDEs enthalten. Allerdings zeigt die Erfahrung, dass es wenig nützt, eine Liste mit 100.000 Klonen zu erzeugen. Die Herausforderung ist nicht das Finden, sondern Clone-Management: der sinnvolle Umgamg mit existierenden Klonen. Welcher Umgang mit Klonen der richtige ist, hängt vom eigenen Kontext ab: Wieviel Copy&Paste-Programmierung kommt im eigenen System vor, und wie wirkt sich das auf die Kosten aus? Welche Fehler wurden nicht in allen Kopien behoben? Gibt es "Copy & Paste im Großen" zwischen verschiedenen Anwendungen in der Unternehmensarchitektur? Welche Klone sollten wir in wiederverwendbare Module /Bibliotheken herausziehen, bei welchen lohnt es nicht? In welchen Bereichen wollen wir Duplikation eventuell bewußt, um z.B. Microservices unabhängig voneinander weiterentwickeln zu können? Und wie stellen wir dabei sicher, dass wir Fehler in Kopien trotzdem konsistent beheben?
Im Vortrag stelle ich Clone Detection und Management-Techniken vor. Ich zeige Kostenmodelle, um die Kosten von Klonen zu quanifizieren und gehe auf Erfahrungen ein, die wir mit Clone Management in den letzten 10 Jahren bei verschiedenen Kunden gesammelt haben. Außerdem zeige ich, wie man eine Bestandsaufnahme im eigenen System machen kann, um diese Fragen als Architekt für das eigene System
oder die eigene Anwendungslandschaft zu beantworten.

Folien