Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Rendszerfejlesztés gyakorlat - © Fülöp Lajos Minőségmérés.

Hasonló előadás


Az előadások a következő témára: "Rendszerfejlesztés gyakorlat - © Fülöp Lajos Minőségmérés."— Előadás másolata:

1 Rendszerfejlesztés gyakorlat - © Fülöp Lajos Minőségmérés

2 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Minőségmérés Hogyan határozzuk meg egy szoftver minőségét? Mérjük  Mit?  Mivel?  Milyen szempontok alapján? Rendszerfejlesztés gyakorlat - © Fülöp Lajos

3 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Rendszerfejlesztés gyakorlat - © Fülöp Lajos Méret metrikák Méret metrikák – a rendszer (elemek) mérete Legismertebbek:  LOC (Lines Of Code) – sorok száma  lLOC (Logical Lines Of Code) – nem üres, nem komment sorok száma  NCL/NST/NUN (Number of CLasses/ STructures/ UNions)  NNS (Number of Namespaces)  NA/NM (Number of Attributes, Number of Methods)  NF (Number of Functions) "Measuring programming progress by lines of code is like measuring aircraft building progress by weight." ~ Bill Gates.Bill Gates

4 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Rendszerfejlesztés gyakorlat - © Fülöp Lajos Öröklődés alapú metrikák A rendszerben található osztályok öröklődési kapcsolatait mérik  Nem csak osztályokra, hanem a teljes rendszerre vagy egy namespace-re is lehet értelmezni Specialization és reUse metrikák  Egy adott namespace-re vagy a teljes rendszerre értelmezett metrikák [3]  A strukturáltságot és az újrafelhasználást méri DIT: Depth of Inheritance – azt mondja meg, hogy hányadik öröklődési szinten található az adott osztály  karbantarthatóságot, fejleszthetőséget csökkenti NOC: Number Of Children – gyerekek száma egy adott osztályra NOP: Number Of Parents – szülők száma egy adott osztályra

5 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Rendszerfejlesztés gyakorlat - © Fülöp Lajos Öröklődési indexek ReUse index (U) Az osztályok újrafelhasználási arányát méri Mozilla esetében ez az érték 0.38 Specialization index (S) az ősosztályok mennyire sikeresen emelték ki a rendszer absztrakt tulajdonságait ősosztályok száma összes osztály száma leszármazott osztályok száma ősosztályok száma

6 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Rendszerfejlesztés gyakorlat - © Fülöp Lajos McCabe komplexitás Alternatív definíciók:  McCabe(P) = E – N + P E – gráf éleinek a száma, N – gráfban lévő csúcsok száma P – a gráfban lévő összefüggő komponensek száma  McCabe(P) = elágazási pontok száma+1  McCabe(P) = zárt körök száma+1 Befolyásolt aggregált metrikák AggregatesFactorLevel Reusability-high Maintainability-high Functionality+low Reliability+low Efficiency-low

7 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Rendszerfejlesztés gyakorlat - © Fülöp Lajos WMC komplexitás Weighted Methods per Class  Chidamber and Kemerer (C&K)  H. Bär [8], Th. Panas [9]  http://iamwww.unibe.ch/~famoos http://iamwww.unibe.ch/~famoos Értelmezhető  Osztályokra  Modulokra  Fájlokra A tartalmazott metódusok súlyozott összege A súlyok lehetnek:  McCabe komplexitás  LOC  Utasítások száma (NS)  1 (súlyozatlan WMC) -> Number of Methods (NM)

8 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Rendszerfejlesztés gyakorlat - © Fülöp Lajos Kohéziós metrikák Azt mérik, hogy egy osztály metódusai mennyire szorosan függnek össze egymással Magas kohéziós érték a célszerű, mert, elősegíti az egységbe zárást (encapsulation) Kohéziós érték helyett kohézió hiányáról beszélünk (LCOM – Lack of Cohesion On Methods) LCOM1: Minden metódus párra:  Ha használnak közös adattagot, növeljük a P-t 1-gyel  Ellenkező esetben növeljük Q-t 1-gyel LCOM1 = Q – P (ha Q>P, 0 különben) Léteznek további LCOM definíciók is

9 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Rendszerfejlesztés gyakorlat - © Fülöp Lajos Csatolás metrikák Mérőszám, hogy ez egyes osztályok mennyire kapcsolódnak másokhoz  Metódushívásokon keresztül  Adateléréseken keresztül Magas csatolás érték  Alacsony egységbezárás  Újrahasználhatóság gátlása  Hibaszám növekedése (az osztály-interakciók következménye)  Alacsony tesztelhetőség  Változásra való érzékenység

10 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Rendszerfejlesztés gyakorlat - © Fülöp Lajos Csatolás CBO  Coupling Between Object classes Chidamber & Kemerer  Azon osztályok száma, amiket az adott osztály használ  Egy osztály csatolva van egy másikhoz, ha használja annak attribútumát vagy metódusát, vagy közvetlenül származik belőle RFC  Response For a Class Chidamber & Kemerer  Azon metódusok számát adja meg, amelyeket egy osztály meg tud hívni válaszul egy kapott üzenetre  RFC = NML + NRM NML – lokális metódusok száma NRM – meghívott távoli metódusok száma

11 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Rendszerfejlesztés gyakorlat - © Fülöp Lajos Metrika- csoport Konkrét metrika példák Mire hat? MéretLOC,lLOC,NCL,NST,NF, NA,… újrafelhasználhatóság(-), karbantarthatóság(-), … ÖröklődésDIT, NOP, NOC, …újrafelhasználhatóság(+), karbantarthatóság(+,-),… KomplexitásMcCabe, WMCtesztelhetőség, karbantarthatóság(-),… KohéziósLCOM1, …hatékonyság(-), karbantarthatóság(-),… CsatolásCBO, RFCújrafelhasználhatóság(-), karbantarthatóság(-)…

12 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Rendszerfejlesztés gyakorlat - © Fülöp Lajos Bad Smell A szoftverfejlesztés során a keletkezhetnek nem kívánatos, kevésbé hatékony részek  Ezekre több jel is utalhat Ezeket rossz szagú (Bad Smell) helyeknek nevezzük  Ha valaki kinyit egy hűtőt, még azelőtt megérzi a romlott étel szagát, mielőtt kivenné  Nem mindig jelentenek hibát, csak felhívják a figyelmet olyan pontokra, amelyeket érdemes kivizsgálni  Data Class - Adat Osztály  Feature Envy - Attribútum Irigység  Large Class - Nagy Osztály  Lazy Class - Lusta Osztály  Long Method - Hosszú eljárás  Long Parameter List - Hosszú Paraméterlista  Temporary Field – Ideiglenes mező

13 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Rendszerfejlesztés gyakorlat - © Fülöp Lajos Kódolási minőség metrikák Kódolási szabálysértések, pl. PMD, CheckStyle, Columbus Nyelvfüggő A korábbi metrikák nehézkesen használhatók egyéni teljesítmény mérésére Kódolási szabálysértések lehetséges osztályozása:  Bugs and Dangerous Constructs (BDC)  Memory Handling Problems (MHP)  Object Orientedness Problems (OOP)  Complexity Problems (CP)  Readability and Consistency problems (RCP)  Code Layout Problems (CLP)

14 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Kódolási minőség metrikák Példák  JGN1007=Strings should be compared with equals() instead of == operator  JGN1001=Don't refer to null object  JGN3005=Element of Collection should not be modified during iteration  JGN2005=If a given method invocation is followed by another method invocation in high percentage of the cases, it is suspicious when the second invocation is missing.

15 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Eclipse plugin http://metrics.sourceforge.net/ A projekt properties-nél be kell kapcsolni Metrics view  Hierarchikus nézet  Kiurgó értékek, határtúllépés Preferences  Safe Ranges - beállítás Rendszerfejlesztés gyakorlat - © Fülöp Lajos


Letölteni ppt "Rendszerfejlesztés gyakorlat - © Fülöp Lajos Minőségmérés."

Hasonló előadás


Google Hirdetések