Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Codekwaliteit - Hoe bereik ik dat?

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

Codekwaliteit - Hoe bereik ik dat?

Presentatie van de Code & Comedy Software Engineering conferentie bij Ordina.

Avatar for Pepijn van de Kamp

Pepijn van de Kamp

November 17, 2015

More Decks by Pepijn van de Kamp

Other Decks in Programming

Transcript

  1. Introductie • Pepijn van de Kamp • Architect / Consultant

    Software Engineering Ordina Software Development – Gespecialiseerd in analyseren van technische kwaliteit van softwaresystemen • Interessegebieden: – Software Construction – Meta-programmeren • Compilerbouw • Parsing • Statische Code Analyse • Software Visualisatie
  2. Source Code “A collection of computer instructions written using some

    human-readable computer language” “source code is often transformed by a compiler program into low-level machine code understood by the computer”
  3. • Hoeveel regels code schrijft een developer gemiddeld per dag?

    • 18 tot 40 regels (afhankelijk van taal en stijl) uitkomst van onderzoek naar 5.000 software projecten Bron: Function Points as a Universal Software Metric, Capers Jones, 2013
  4. Niet alleen code schrijven • Het werk van de developer

    bestaat vooral ook uit: – Leren over het probleemdomein – Begrijpen van de huidige technische oplossing – Communicatie met peers. – Etc…
  5. Technische kwaliteit → Oplostijden Bron: Bijlsma et al. "Faster issue

    resolution with higher technical quality of software." Software quality journal 20.2 (2012): 265-285.
  6. Change… • … is de belangrijkste driver van Software Projecten:

    – Het kunnen begrijpen van code is een cruciaal onderdeel – Code is een communicatiemiddel – Code wordt veel meer gelezen dan geschreven
  7. • Symptomen – Veel duplicatie • Code clones / Copy-Paste

    – Aanzienlijke omvang en complexiteit • Grote classes / methodes (veel regels code) • Complexe methodes (veel beslispunten) – Afhankelijkheid • Verwijzingen naar andere modules/classes Symptomen Hoe herken je “slechte” code?
  8. Systeem: smallsqldb Textuele duplicatie: 16% Duplicatie Source codestructuur die op

    meerdere plaatsen in een programma herhaald wordt. • Kan ontstaan wanneer developers bestaande code niet durven aan te passen. (COPY PASTE) • Onderhoud dient plaats te vinden op elke code clone (Foutgevoelig!)
  9. Omvang • Aantal regels code in een class/methode/functie • Aantal

    beslispunten in een class/methode/functie • Lastig te begrijpen • Lastig te hergebruiken (dus bron voor code cloning)
  10. Afhankelijkheid De mate waarin source codestructuren afhankelijk zijn van andere

    source codestructuren. (bijvoorbeeld: classes, functions, modules, etc) • Veel inkomende verwijzingen: Een kleine aanpassing kan leiden tot veel aanpassingen in afhankelijke source codestructuren. (Ripple Effect) • Veel uitgaande verwijzingen: Lastig in isolatie te (unit)testen
  11. • Symptomen – Veel duplicatie • Code clones / Copy-Paste

    – Aanzienlijke omvang en complexiteit • Grote classes / methodes (veel regels code) • Complexe methodes (veel beslispunten) – Afhankelijkheid • Verwijzingen naar andere modules/classes Oorzaken van verslechtering van codekwaliteit
  12. Oorzaken van verslechtering van codekwaliteit • Technische kwaliteit is onzichtbaar

     code-base is een black box • Verantwoordelijkheden van classes nemen toe over tijd • Functionele druk (geen tijd voor technische verbeteringen) • Developers komen en gaan, kennis over de codebase gaat verloren • Geen unit tests die werking demonstreren en controleren • Onzekerheid over het doen van aanpassingen in complexe code • Sub-optimaal gebruik van geldende principes binnen technologieparadigma (OOP / functioneel)
  13. Maak technische kwaliteit zichtbaar • Gebruik een kwaliteitsdashboard (SonarQube, FitNesse,

    etc). • Source Code Metrics • Coding Standards • Quality Gates • Static Code Analysis (vindt potentiele defecten) • Stel realistische doelen voor het verbeteren van kwaliteit. • Stel eisen op waar nieuwe code aan moet voldoen (DoD) • Nieuwe code moet voldoen aan de gestelde regels. Zorg voor snelle feedback d.m.v. integratie in delivery pipeline.
  14. • Richtlijnen volgens SIG: • Limiteer de lengte van units

    tot 15 regels • Limiteer het aantal beslispunten binnen een unit tot 4 • Limiteer het aantal parameters van een unit tot 4 • Limiteer de lengte van modules tot 400 regels Bron: Joost Visser, “Building Maintainable Software”, 2015 Keep it simple (and small)!
  15. Don’t Repeat Yourself (DRY) 2/2 Abstractie • Welke code is

    gelijk voor alle varianten?  (abstract) Super-class • Waar zit variabiliteit?  Sub-classes Bron: Ochimizu, Higashida, "Object Modeling"
  16. Pas principes en technieken toe uit paradigma Een aantal suggesties:

    • Abstraction / Problem Decomposition • SOLID principles • Polymorphism over control structures • Encapsulation / Information Hiding • Law of Demeter • Design Patterns • Domain-Driven Design Verwacht: voorjaar 2016: Cursus Codekwaliteit
  17. Schrijft nooit nieuwe code zonder tests • Unit-tests documenteren en

    demonstreren de verwachte werking van code • Unit-tests helpen bij snelle verificatie van aanpassingen (op het code level) • Side-effect: Onderhoudbaar design • Klein • Simpel • Onafhankelijk
  18. Take-aways • Codekwaliteit beinvloedt gemak waarmee code kan worden aangepast.

    • Symptomen: – duplicatie, omvang, coupling, code smells, etc • Oplossingen: – Zichtbaarheid, simpel, klein, herbruikbaar, onafhankelijk, unit testing, etc