Szoftver bonyolultsági mértékek alkalmazási területei
-
Upload
dennis-walters -
Category
Documents
-
view
31 -
download
3
description
Transcript of Szoftver bonyolultsági mértékek alkalmazási területei
Tartalom
Funkcionális nyelvek, ErlangA funkcionális nyelvek ipari
felhasználásaSzoftver bonyolultsági mértékekAutomatikus hibadetektálásAutomatikus hibajavítás
bonyolultsági mértékek alapján
Az Erlang nyelv jellemzőiFüggvénykonstrukciók használataÜzenetküldések közös memória
használat nélkülHatékony elosztott rendszer, és
hálózati modellNagy hibatűrő képesség az
elosztott programok területénOpen Telecom Platform
Szoftverek bonyolultsága (Thomas J. McCabe)
Hogyan lehet a szoftverrendszereket úgy modularizálni, hogy tesztelhetőek legyenek?
A szoftverre költött pénz legnagyobb része a karbantartásra folyik el…
A fejlesztésre szánt idő fele a teszteléssel és javítással telik…
Egy 50 soros Fortran program 25 IF THEN ELSE konstrukcióval 33.5 millió eltérő végrehajtási ágat eredményez…
Ciklomatikus szám Az n csomóponttal, e éllel, és p komponenssel
rendelkező G gráf V(G) ciklomatikus száma
V(G) = e – n+ 2p
Az adott programhoz hozzárendelünk egy olyan irányított gráfot (1 belépési és 1 kilépési ponttal). A csomópontok a szekvenciális blokkok.
Az ábra alapján:V (G) = e - n + 2p = 9 - 6 + 2 = 5
Az átlag programozó 3, és 7 közé eső „ciklomatikus számot” produkál…
Funkcionális nyelvek bonyolultsága
Nem hagyományos program konstrukciókból állnak
Többféle mértéket kell vizsgálni, és együttesen mérni segítségükkel a programot
Mérni kell az üzenetküldések, az elosztott programok és a különleges nyelvi elemek bonyolultságát
Jelezni kell az eltéréseket!
Forrásszöveg bonyolultsága
Forráskód statikus analízisével létrehozzuk a program szintaxis fáját
A szintaxis fát kiegészítjük a statikus analízissel felderíthető szemantikus információkkal, függvény hívási gráffal, és adatfolyam gráffal
A kapott szemantikus gráfon mérjük a bonyolultsági mértékeket
RefactorErlLehetőséget ad a forráskód
transzformációjáraSegítségével javítani lehet a
forrásszövegek minőségétA forráskód változtatása során a
program jelentése nem változik meg
Hatékony eszköz „nem magasan képzett” programozók kezében is
A RefactorErl-ben mérhető bonyolultsági mértékek
• Minden mérték a program egy kijelölt tulajdonságát méri
• A mértékek alapján javítani lehet a forráskódot
• Minden mérték javításához rendelkezésre állnak transzformációs lépések!
Bonyolultsági mértékek alkalmazása
A mértékek mérése segít a fejlesztés irányának a meghatározásában (és a célok betartásában)
Lehetőséget tudunk biztosítani az automatikus és fél-automatikus program transzformációkra
Ipari méretű szoftverrendszerek javítása is lehetségessé válik
Szoftver bonyolultságot lekérdező nyelv
show number_of_fun for module (a)
show line_of_code, number_of_messpass for module (a,b,c)
show average_size form function (a,f,1)
show average_size form function (a,f,1) a with max, min, avg
„Metrika” alapú, automatikus hibajavítás
A RefactorErl rendszerben a mérhető bonyolultsági mértékek alapján alapértelmezett szkriptekell optimalizálható a forrásszövegA lekérdező nyelv kiterjesztésével új optimalizáló szkripteket készíthetünk...