Der Entwickler als Ermittler

Der Code als Tatort – Profiling in großen Systemen

Moritz Hoffmann

(c) Shutterstock / Digital Storm

Legacy Code in großen Systemen ist für jeden Programmierer eine Herausforderung. Warum sollte man sich dabei nicht einmal der Ermittlungsmethoden aus der nicht-virtuellen Realität bedienen? Für die erste Identifizierung der Problembereiche im Code schlägt Adam Tornhill, IT-Blogger und Autor des Buches Your Code as a Crime Scene, genau das vor. Mit ihm betreten wir das Feld der forensischen Psychologie …

 

Legacy code is full of mysteries.” Ausgehend von dieser Annahme hat Tornhill Methoden entwickelt, um die verborgene Geschichte des bearbeiteten Codes zu enthüllen und dessen internes Chaos zu ordnen. Als ersten Schritt empfiehlt er, den im Code vorliegenden Informationen eine andere Form zu geben.

Wie in den abendlichen Krimiserien könne man die Codebasis am besten als topographische Karte entschlüsseln. Hier muss als erstes ersichtlich werden, welche Bereiche überhaupt relevant sind und wo die Komplexität am dichtesten ist. Auf seiner Website hat Tornhill einige Beispiele dafür zusammengetragen, wie dieses Code-Maps aussehen können.

DevOpsCon Whitepaper 2018

Free: BRAND NEW DevOps Whitepaper 2018

Learn about Containers,Continuous Delivery, DevOps Culture, Cloud Platforms & Security with articles by experts like Michiel Rook, Christoph Engelbert, Scott Sanders and many more.

Geographische Angreifer-Profile

Im nächsten Schritt geht es, so Tornhill, um einen weiteren Formwandel: Den von Daten. Nun gilt es aber nicht mehr, als Inspektor vor einer Karte zu stehen und Fähnchen zu setzen. Stattdessen kommen die Technologien aus der modernen Kriminalistik und Forensik zum Einsatz:

Interestingly enough, crime investigators face similarly open ended, large-scale problems. Modern forensic psychologists attack these problems with methods such as geographical offender profiling. Believe it or not, this method works for software developers too.

Bei diesen geographischen Angreifer-Profilen wird die räumliche Bewegung von Kriminellen genutzt, um anhand von Wahrscheinlichkeitsberechungen auf einer graphischen Oberfläche deren Hauptbewegungsgebiete zu ermitteln. Diese werden dann auf eine reale Karte übertragen, in der so die Hot Spots der zu erwartenden kriminellen Aktivitäten erkennbar werden.

Hot Spots im Code

So wie die polizeilichen Profiler, meint Tornhill, könnten Systeme zur Versionskontrolle die Informationen sammeln, mit deren Hilfe dann die Hot Spots im Code ermittelt werden:

To identify hotspots, we just need to traverse the source code repository and calculate the change frequency of each module. That gives us a prioritized picture of the most frequently modified code.

Jede Änderung im Code ist dabei ein Hinweis auf die Relevanz des Moduls, in das eingegriffen wurde. Für die Feststellung, ob der Verdächtige auch tatsächlich ein Verbrechen begeht, ob also vom Hot Spot auch tatsächlich Qualitätsprobleme ausgehen, stünden in der Software nur wenige Mittel zur Verfügung, wie Tornhill zugibt. Eine wichtige Rolle spielten hier die Informationen über die Komplexität des Quellcodes:

Everything from simple heuristics, like lines of code, to more elaborate metrics, like cyclomatic complexity, can potentially serve this purpose since the differences in predictive value are usually small enough to ignore.

Nur der erste Schritt…

Wie in der Realität der Verbrechensbekämpfung seien die Hot Spots im Code dennoch lediglich Annäherungen. Über die Qualität der hier identifizierten Problembereiche könnten die am häufigsten bearbeiteten Stellen noch nichts aussagen. Dennoch kann die rein statistische Natur der Hot Spots im Code schon viel weiterhelfen:

Hotspots are a simple metric. That simplicity is a strength that translates to practice surprisingly well. In a recent analysis of one project I worked on, I found that system’s hotspots made up just 4% of the code—but were responsible for 72% of all historic defects!

Und nicht nur in diesen Fällen können die Hot Spots hilfreich sein. So können sie beispielsweise Testern Anhaltspunkte dafür geben, auf welche Features sie sich in ihrer Arbeit fokussieren sollten. Auf GitHub hat Tornhill ein eigenes Tool zur Identifizierung und Analyse von Daten eines Version Control Systems zur Verfügung gestellt.

Aufmacherbild: Crime scene in an empty building von Shutterstock / Urheberrecht: Digital Storm

Geschrieben von
Moritz Hoffmann
Moritz Hoffmann
Moritz Hoffmann hat an der Goethe Universität Soziologie sowie Buch- und Medienpraxis studiert. Er lebt seit acht Jahren in Frankfurt am Main und arbeitet in der Redaktion von Software und Support Media.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: