SlideShare ist ein Scribd-Unternehmen logo
1 von 13
Hogyan mérhető
                egy szofver minősége?
                           Guta Gábor




November 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éges
hiba 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, managerek
kezébe csak csapat szinten összesítet adatok kerüljenek
Külső termék tulajdonságok mérése

Helyessé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ése

Funkcionalitá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

Weitere ähnliche Inhalte

Andere mochten auch (16)

Telecom
TelecomTelecom
Telecom
 
Pildimang
PildimangPildimang
Pildimang
 
Crowdsourcing Summit: Future of Work - Fluide Netzwerke
Crowdsourcing Summit: Future of Work - Fluide NetzwerkeCrowdsourcing Summit: Future of Work - Fluide Netzwerke
Crowdsourcing Summit: Future of Work - Fluide Netzwerke
 
Series y libros.htm
Series y libros.htmSeries y libros.htm
Series y libros.htm
 
Bichonario
BichonarioBichonario
Bichonario
 
Our cool japan
Our cool japanOur cool japan
Our cool japan
 
Destress yourself
Destress yourselfDestress yourself
Destress yourself
 
Pc14 junior primary brief intro nov 2013 mb
Pc14 junior primary brief intro nov 2013 mbPc14 junior primary brief intro nov 2013 mb
Pc14 junior primary brief intro nov 2013 mb
 
Building Webs Better
Building Webs BetterBuilding Webs Better
Building Webs Better
 
Pixels not papers
Pixels not papersPixels not papers
Pixels not papers
 
Staffing event engineering
Staffing event engineeringStaffing event engineering
Staffing event engineering
 
College1 12.10.2015
College1 12.10.2015College1 12.10.2015
College1 12.10.2015
 
Ariana
ArianaAriana
Ariana
 
BlackBerry10 alapú natív alkalmazásfejlesztés
BlackBerry10 alapú natív alkalmazásfejlesztésBlackBerry10 alapú natív alkalmazásfejlesztés
BlackBerry10 alapú natív alkalmazásfejlesztés
 
Togaf 9 and ea insturctor profile
Togaf 9 and ea insturctor profileTogaf 9 and ea insturctor profile
Togaf 9 and ea insturctor profile
 
Eucaristia - repartir unir
Eucaristia - repartir unirEucaristia - repartir unir
Eucaristia - repartir unir
 

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

  • 1. Hogyan mérhető egy szofver minősége? Guta Gábor November 2009
  • 2. 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éges hiba javítással együtt is gyors volt-e a megoldás?
  • 3. 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
  • 4. 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]
  • 5. 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)
  • 6. 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)
  • 7. 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, managerek kezébe csak csapat szinten összesítet adatok kerüljenek
  • 8. Külső termék tulajdonságok mérése Helyessé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
  • 9. Külső termék tulajdonságok mérése Funkcionalitás: specifikációból származtatott • Function Points - COSMIC, IFPUG, Mark II, NESMA • Story Points • Use-Case Points
  • 10. 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
  • 11. 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)
  • 12. 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ó
  • 13. Vizualizáció • Class diagramok • Függöségi diagramok