• Save
Guta Gábor: Hogyan mérjük a szoftverminõséget?
Upcoming SlideShare
Loading in...5
×
 

Guta Gábor: Hogyan mérjük a szoftverminõséget?

on

  • 1,960 views

Budapest Agile Meetup - 2011.05.12. ...

Budapest Agile Meetup - 2011.05.12.
http://www.meetup.com/AgileHungary/events/16772742/
http://agilealliance.hu/

Közhelynek számít, hogy "a jó minõségü szoftver hosszú távon olcsóbb". De meg tudja-e valaki mondani, hogy mennyire jó minöségü szoftvert akarunk és az mennyivel olcsóbb?
Az elöadás röviden össze kívánja foglalni, hogy a minõségnek milyen aspektusai vannak (quality attributes) és ezeket hogyan lehet mérni gyakorlatban (lehet-e egyáltalán).

Statistics

Views

Total Views
1,960
Views on SlideShare
934
Embed Views
1,026

Actions

Likes
0
Downloads
1
Comments
0

5 Embeds 1,026

http://www.agilealliance.hu 953
http://agilealliance.hu 64
http://agilehungary.hu 6
http://www.slideshare.net 2
http://webcache.googleusercontent.com 1

Accessibility

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Guta Gábor: Hogyan mérjük a szoftverminõséget? Guta Gábor: Hogyan mérjük a szoftverminõséget? Presentation Transcript

  • Hogyan mérhető egy szofver minősége? Guta GáborNovember 2009
  • Miért is akarunk mérni?• Tervezhetőség (estimation) – Szükséges funkcionalitásból és minőségből megbecsüljük a fejlesztés idejét/költségét• Alátámasszuk a döntéseket – Diagnózis: objektívitás – Mi az ami elég jó? (good enough) Megéri-e több időt tölteni tervezéssel?„Gyors és csúnya“ megoldás és az utána szükségeshiba javítással együtt is gyors volt-e a megoldás?
  • Mit is értünk minőség alatt? Minőségi aspektusok (quality attributes) robusztusság (robustness) funkcionalitás (functionability)hatékonyság (efficiency) időbeliség (timeliness) helyesség (correctness) tesztelhetőség (testability) bővíthetőség (extendability) karbantarthatóság (maintainability) biztonság (security) könnyű használhatóság (ease of use) Mértékek (metrics) CBO WMC DIT NCSS Ce KLOC UUCP LCOM Ca Man/Month FP Instability Abstractness
  • Minőségi aspektusok• helyesség (correctness) – a szoftver termék azon képessége, hogy a kijelölt feladatokat, a specifikációnak megfelelően végrehajtsa;• robusztusság (robustness) – a szoftver termék azon képessége, hogy megfelelően reagáljon abnormális körülmények között;• bővíthetőség (extendability) – a szoftver termék könnyű hozzáigazíthatósága a specifikációs változásokhoz;• funkcionalitás (functionability) – a szoftver rendszer által biztosított lehetőségek mértéke;• időbeliség (timeliness) – a szoftver rendszer azon képessége, hogy rendelkezésre álljon akkorra vagy az előtt, amikor a felhasználói szeretnék.• stb. *Bertrand Meyer [Meyer97]
  • Minőség mérhetősége Folyamat (Process) Fix Response Time BMI (Backlog Management Index) Man/Month Termék/Külső (Product/External) UUCP (Unadjusted Use-Case Point) FP (Function Point) MTTF (Mean Time to Failure) Customer Satisfaction Termék/Belső (Product/Internal) DIT (Depth of CBO (Coupling Between Objects) Inheritance Tree) WMC (Weighted Methods per Classes)NCSS (Non-Commenting Source Statements)
  • Minőség mérhetősége Folyamat (Process) erőfeszítés (effort) időbeliség (timeliness) költség (cost) Termék/Külső (Product/External) biztonság (security) funkcionalitás (functionability) könnyű használhatóság (ease of use) helyesség (correctness)robusztusság (robustness) hatékonyság (efficiency) Termék/Belső (Product/Internal) karbantarthatóság (maintainability) tesztelhetőség (testability) bővíthetőség (extendability)
  • Folyamat mérés Erőfeszítés (effort) Munkaidő naplózás Ember/hónap Költség (cost) Költségvetés Eseménykövető Időbeliség (timeliness) rendszerek: Kiadási dátumok (Release dates) JIRA, Red Mine Feladat végzési időtartamok Átlagos „feature” fejlesztési/hiba javítási idő Agile?SOHA ne használjuk személyes teljesítmény értéklésre, managerekkezébe csak csapat szinten összesítet adatok kerüljenek
  • Külső termék tulajdonságok méréseHelyesség (correctness): a legnehezebb mérni, ezér más metrikából következtünk Checkstyle, PMD, FindBugs, JDepend,• Defekt sűrűség KLOCWork• Üzenet sűrűség (fordítási, statikus elemezési, stb.)• Teszt eset / forrás-kód lefedettség EMMA, Cobertura, Clover, Google CodePro AnalytiX
  • Külső termék tulajdonságok méréseFunkcionalitás: specifikációból származtatott• Function Points - COSMIC, IFPUG, Mark II, NESMA• Story Points• Use-Case Points
  • Belső termék tulajdonságok mérése Bővíthetőség méret (extendability) függöségek Karbantarthatóság (maintainability) komplexitás Tesztelhetőség (testability) kohézióA struktúrális metrikák nem mindig tükrözik a szemantikus tartalmat
  • Méret és Komplexitás• Számosságok: – sorok száma (KLOC, NCSS) – függvények száma – osztályok száma• McCabe Cyclomatic Complexity = különböző végrehajási utak száma – Komplexitással súlyozott függvények száma osztályonként• Blokk beágyazási mélység (Nesting Deep)
  • Függőségek és Kohézió• Afferent Coupling = osztályok száma a csomagon kívül, amik függenek a csomagtól• Efferent Coupling = osztályok száma a csomagban, amik függenek más csomagoktól• Instability = [Efferent Couplings] / ([Afferent Couplings] + [Efferent Couplings])• Abstractness = absztrakt osztály / összes osztályok száma• Distance = [Abstractness] + [Instability] – 1 Eszközök: JDepend, Structure101, SonarJ• Lack of Cohesion in Methods = osztályon belüli kohézió
  • Vizualizáció• Class diagramok• Függöségi diagramok