betekent veel verschillende dingen voor verschillende mensen Waarom is kwaliteit belangrijk? Functionele kwaliteit − Doet het wat het moet doen? (belangrijk voor nu) Technische kwaliteit − Is het goed gebouwd? (belangrijk voor morgen) “Software with high technical quality can evolve with low costs and risk to keep meeting functional and non-functional requirements” [SIG 2011] 3
werkt nog aan nieuwe projecten 70% van de engineers voert onderhoud uit op bestaande software Onderhoud en renovatie worden steeds belangrijker 5 Bron: Capers Jones, Software Productivity Research, 2011
Analyzability: mate van begrijpelijkheid waar en hoe software aangepast moet worden − Modifiability: gemak waarmee een aanpassing kan worden doorgevoerd − Testability: gemak waarmee bepaald kan worden of een aanpassing correct is doorgevoerd − Modularity: mate waarin een systeem is onderverdeeld zodat een verandering in een onderdeel geen impact heeft op de andere onderdelen − Reusability mate waarin een onderdeel kan worden hergebruikt 8
Testability + Analyzability Metric: Cyclomatic Complexity (per unit) 13 Academisch Gevoelsmatig Realiteit Aantal unieke paden door de code (McCabe 1976) Aantal beslispunten in de code Aantal keywords (+1) ! if, for, foreach, case, etc.. Cyclomatic Complexity = 2
worden opgelost met een hogere technische kwaliteit van source-code! 19 Bron: Bijlsma et al. "Faster issue resolution with higher technical quality of software." Software quality journal 20.2 (2012): 265-285.
Metrieken zijn een middel en geen doel Cheating the metric Maak gebruik van principes en best-practices uit het software engineering werkveld Refactoring is nooit klaar! Het kan altijd beter. Metrics kunnen helpen om te bepalen wanneer te stoppen met refactoring. 20
Microsoft Research: TDD of Visual Studio 35% extra doorlooptijd vs 60% verbetering van defect density Hoeveel % code coverage? 22 Bron: TIOBE Quality Indicator
Technische kwaliteit vergemakkelijkt het doorvoeren van aanpassingen Metrics kunnen inzicht geven in technische kwaliteit Principles en practices kunnen helpen om de technische kwaliteit te verbeteren Kwaliteit kost tijd en geld en dient afgewogen te worden 23