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

Slides:



Advertisements
Hasonló előadás
Valós idejű tesztlefedettség- monitorozás JEE környezetben Dr. Ferenc Rudolf, Szegedi Tudományegyetem Bakota Tibor, FrontEndART Szoftver Kft.
Advertisements

UML Példa © Fülöp Lajos.
A tanári munka értékelése
C++ programozási nyelv Gyakorlat hét
Rendszerfejlesztés II gyak
Szoftverminőség monitorozás forráskód alapján
Objektum Orientált Programozás Visual Basicben. 2 Objektumok Object – egy dolog, tárgy, „valami” –Command button, text box, stb. Jellemzők –Properties.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Adatbányászati technikák (VISZM185)
Öröklődés 2..
© Kozsik Tamás Beágyazott osztályok A blokkstrukturáltság támogatása –Eddig: egymásba ágyazható blokk utasítások Osztálydefiníciók is egymásba.
OBJEKTUMORIENTÁLT PROGRAM
Forráskód metrikák szerepe a szoftver minőségbiztosításban
Szoftverparadigmák és metrikák
Vizuális modellezés Uml és osztálydiagram UML eszközök
Rendszerfejlesztés gyakorlat - © Nagy Csaba
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 5. Gyakorlat Öröklődés, virtuális függvények,
Programozás II. 3. Gyakorlat C++ alapok.
Kód auditálás © Raffai Tamás.
Fejlett Programozási Technológiák II. Világos Zsolt 1. gyakorlat.
Fejlett Programozási Technológiák II. Világos Zsolt 12. gyakorlat.
Szoftver bonyolultsági mértékek alkalmazási területei Király Roland 2011.
A Java programozási nyelvSoós Sándor 1/17 Java programozási nyelv 4. rész – Osztályok II. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
Java programozási nyelv 5. rész – Osztályok III.
SQL92 lehetőségek KL A tábla B tábla C view adatok VIEW működése utasítás: SELECT.. FROM A,B … SELECT.. FROM C Az adatok a hivatkozáskor állítódnak elő.
ADATBÁZISOK
ADATBÁZISOK
Funkciópont elemzés: elmélet és gyakorlat
Szoftver mértékek Szoftver mérték: –A fejlesztési folyamat mérése –Végtermék mérése (termék mérték) Termék mérték: –Külső mértékek: Megbízhatósági mértékek.
RDF és SPARQL. Felhasznált anyagok Marcelo Arenas, Claudio Gutierrez, Jorge Peréz: RDF and SPARQL: Database Foundations (bemutató) Claudio Gutierrez,
Annotációk a Java 5 nyelvben Kozsik Tamás. Annotációk Módosítószavak bővítése A programszöveg elemeihez rendelhetők –Csomagokhoz, típusokhoz, metódusokhoz,
5. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
Kliensoldali Programozás
Régióközi tudáshálózatok minőségének hatása a kutatási teljesítményre Sebestyén Tamás és Varga Attila.
Objektum Vezérelt Szoftverek Analízise Ferenc Rudolf és Beszédes Árpád Szegedi Tudományegyetem FrontEndART.
Hernyák Zoltán Programozási Nyelvek II.
Javascript Microsoft által készített kiegészítése Statikus típusosság Nagy projektek Windows 8 fejlesztésénél WinRT egy részét ebben írták Nyílt forráskódú,
Objektumorientált tervezés Út az objektumig Az objektum fogalma, jellemzői Objektummal kapcsolatos fogalmak Hardverfogalmak A rendszer modell nézetei Objektumorientált.
V 1.0 Szabó Zsolt, Óbudai Egyetem, Programozási Paradigmák és Technikák Programozási eszközök Interfészek Generikus.
V 1.0 Szabó Zsolt, Óbudai Egyetem, Programozási Paradigmák és Technikák Programozási eszközök Interfészek Generikus.
ORACLE ORDBMS adminisztrációs feladatok 3. rész dr. Kovács László 2004.
Generics Krizsán Zoltán. Bemutató A.NET 2.0 verziótól. A.NET 2.0 verziótól. Típusparaméter Típusparaméter Más nyelvben ez a template (sablon). Más nyelvben.
1 Objektum orientált programozás Öröklődés: többszörös öröklődés, konstruktorok, destruktorok, overloading Nagy Szilvia.
XML Mi az XML?  Extensible Markup Language  Kiterjeszthető jelölő nyelv  Adatok, adatstruktúrák leírására szolgál  A HTML és az SGML tapasztalataira.
Objektumvezérelt rendszerek tervezése 4.óra – Composite, Decorator © Fülöp Lajos.
Objektumvezérelt rendszerek tervezése
Objektumvezérelt rendszerek tervezése 9.óra – Builder, Observer © Nagy Csaba.
Továbbítás kattintással Pánsíp (Georghe Zamfir & Dana Dragomir) El tudnál aludni éjszaka anélkül, hogy ne gondolkoznál el azon, hogy a ház a helyén lesz-e,
Java web programozás 7-8..
Ficsor Lajos CPP2 / 1 Származtatási mechanizmus a C++ nyelvben Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék.
5. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED D epartment of Software Engineering Gépi tanulás a fejlesztés, karbantartás költségének becslésére.
Reverse Engineering Rendszerfejlesztés II. 2. óra.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 6. gyakorlat.
Erőforrások strukturálása Készítette: Szentirmai Róbert (minden jog fenntartva)
UNIVERSITAS SCIENTIARUM SZEGEDIENSIS SZEGEDI TUDOMÁNYEGYETEM S zoftverfejlesztés Tanszék Programrendszerek tanúsítása – szoftverminőség mérése Dr. Gyimóthy.
A szoftver mint komplex rendszer: objektumorientált megközelítés.
Elágazások a programban – IF utasítás
Hernyák Zoltán Programozási Nyelvek II.
Java Code Coverage Library
YUI február YUI szeptember YUI3
Kódduplikációk a forráskódban
Web programozás és haladó fejlesztési technikák – C#
Túlfeszültség védelem a hálózaton
„Agilis-e vagy?” – egy váltókezelő naplója
OOP és Python Vincellér Zoltán.
Dijkstra algoritmusa: legrövidebb utak
Dijkstra algoritmusa: legrövidebb utak
Dijkstra algoritmusa: legrövidebb utak
Függvénysablonok használata
Előadás másolata:

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

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

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

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

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

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

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]  É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)

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

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

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

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(-)…

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ő

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)

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.

Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Eclipse plugin 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