Slide 1

Slide 1 text

AGILE CODE REVIEWS Vom 4-Augen-Prinzip zum Qualitätskatalysator Christian Fischer – itemis AG Frankfurter Entwickertag 2017

Slide 2

Slide 2 text

Hutee bcak ich, Megorn baru ich, Ürebgmreon hol ich der Knögiin ihr Knid; ach, wie gut, dsas naienmd wieß, WER BIN ICH?

Slide 3

Slide 3 text

PAREIDOLIE Simpsons (altgriechisch παρα para ‚daneben‘, ‚vorbei‘ und εἴδωλον eídolon ‚Form‘, ‚Erscheinung‘, ‚(Trug-)Bild‘, ‚Schattenbild‘, theologisch auch ‚Götzenbild‘) bezeichnet das Phänomen, in Dingen und Mustern vermeintliche Gesichter und vertraute Wesen oder Gegenstände zu erkennen. -- Wikipedia

Slide 4

Slide 4 text

Code is all about Details. --Robert C. Martin

Slide 5

Slide 5 text

Semantik Syntax WERKZEUGKETTE Code Review Code Analyzer Compiler IDE Frequenz Context

Slide 6

Slide 6 text

EFFEKTIVITÄT Quelle: Best Kept Secrets of Peer Code Review 463 0 321 194 463 180 113 32 0 50 100 150 200 250 300 350 400 450 500 Bugs nach der Entwicklung Bugs nach Code Review Bugs nach QA/Test Bugs nach Kundenabnahme Vor Code Review Nach Code Review

Slide 7

Slide 7 text

FEHLERBEBUNGSKOSTEN 1 5 10 50,5 0 10 20 30 40 50 60 Anforderung Design Code Test Relative Behebungskosten Quelle: [STECKLEIN 2004]

Slide 8

Slide 8 text

TECHNISCHE GRENZFÄLLE public class Counter { protected long count = 0; public void add(long value){ this.count = this.count + value; } }

Slide 9

Slide 9 text

INNERE QUALITÄT

Slide 10

Slide 10 text

DATENSCHUTZ … catch (Exception e) { logger.error(“Incomplete transaction for ” + customer.creditcardNo); … }

Slide 11

Slide 11 text

WARTBARKEIT /* * If the new process paused because it was * swapped out, set the stack level to the last call * to savu(u_ssav). This means that the return * which is executed immediately after the call to aretu * actually returns from the last routine which did * the savu. * * You are not expected to understand this. */ if(rp->p_flag&SSWAP) { rp->p_flag =& ~SSWAP; aretu(u.u_ssav); } Quelle: Unix 6th Edition

Slide 12

Slide 12 text

Konsistenz

Slide 13

Slide 13 text

DER ABLAUF

Slide 14

Slide 14 text

TIMING Pull Request + nur validierter Code wird veröffentlicht - eingeschränkte Sichtbarkeit Pre-Commit + nur validierter Code wird veröffentlicht - schlechte Sichtbarkeit - schlechte Verteilbarkeit Post-Commit + hohe Sichtbarkeit - nicht validierter Code kann veröffentlicht werden

Slide 15

Slide 15 text

Überprüfung durch Reviewer Lessons learned Korrekturen durch den Autor Gruppen Review Vorstellung & Planung Material sichten & Einladung FORMAL Planung Einführung Inspektion Über- arbeitung Verifikation Abschluss

Slide 16

Slide 16 text

Korrektur durch Autor Walk Through Check In Entwicklung beendet ÜBER DIE SCHULTER GUCKEN Planung Einführung Inspektion Über- arbeitung Verifikation Abschluss

Slide 17

Slide 17 text

Email Schleife Email Versenden Check In EMAIL BENACHRICHTIGUNG Planung Einführung Inspektion Über- arbeitung Verifikation Abschluss

Slide 18

Slide 18 text

Freigabe Korrekturen durch den Autor Kommentare Review Request Merge WERKZEUG GESTÜTZT Planung Einführung Inspektion Über- arbeitung Verifikation Abschluss

Slide 19

Slide 19 text

PAIR/MOB PROGRAMMING?

Slide 20

Slide 20 text

PROZESSVERGLEICH Lean Agil Durchlaufzeit Ausführungszeit Inspektion & Adaption Transparenz Formal Über die Schulter gucken Email Benachrichtigung Werkzeug gestützt

Slide 21

Slide 21 text

CHECKLISTE WERKZEUGAUSWAHL ü Scopedefinition (Ranges & Files) ü Anzeige von Metainformationen ü Wer mit welchen Commitkommentar ü Kommentare ü Metriken sammeln und auswerten ü Review Enforcement ü Unterstützung von Pre- und Post-Commits

Slide 22

Slide 22 text

BEST PRACTICES

Slide 23

Slide 23 text

§ Kontextvermittlung erleichtert Einstieg § Strukturierung findet Fehler Review Präambel ØZiel ØAnsatz ØRessourcen Bild: Delapouite under CC BY 3.0

Slide 24

Slide 24 text

§ Kosten/Nutzen Betrachtung § Fehlererkennungsrate nimmt ab § Social Loafing 1-2 Entwickler Øgemeinsame Code Ownership Ødirekte Kommunikation ØVerteilung? Bild: Lorc under CC BY 3.0

Slide 25

Slide 25 text

§ Nur begrenze Finderquote § Inspektionsrate § Konzentration 60-90 Minuten ØTimeboxed ØFokussiert Øeingeplant Bild: Skoll under CC BY 3.0

Slide 26

Slide 26 text

§ Dauer § Inspektionsrate § Konzentration ca. 200 LOC Økleine Stories ØAlternative „Über die Schulter schauen“ Bild: Lorc under CC BY 3.0

Slide 27

Slide 27 text

§ Commitverunreinigung § Ablenkung Code Konventionen ØFormattierungsregeln ØPattern Bild: Lorc under CC BY 3.0

Slide 28

Slide 28 text

§ Transparenz § Reproduzierbarkeit Checkliste ØAllgemein verfügbar ØEindeutig Bild: Delapouite under CC BY 3.0

Slide 29

Slide 29 text

§ Inspect & Adapt § Aktualisierung Metriken ØPull Dauer ØAusführungsdauer ØFehlerquote Bild: Lorc under CC BY 3.0

Slide 30

Slide 30 text

REVIEW SMELLS Bilder 1-2: Lorc under CC BY 3.0 Bild 3: Skoll under CC BY 3.0

Slide 31

Slide 31 text

FAZIT ØCode Reviews reduzieren Fehlerbehebungskosten, verbessern die innere Softwarequalität und fördern Know Transfer. ØDie agilen Prinzipien von Transparenz, Überprüfung und Anpassung gelten auch für den Code Review. ØBest Practices & Smells helfen bei der kontinuierlichen Verbesserung.

Slide 32

Slide 32 text

WEITERE INFORMATIONEN @agiledojo http://blogs.itemis.com

Slide 33

Slide 33 text

DANKSAGUNG • Lorc : http://lorcblog.blogspot.com/ • Skoll: http://game-icons.net/ • Delapouite: http://delapouite.com/ • [STECKLEIN 2004]: https://ntrs.nasa.gov/search.jsp?R=20100036670 • Best Kept Secrets of Peer Code Review: http://bit.ly/2m6NQF4