Szoftver bonyolultsági mértékek alkalmazási területei Király Roland 2011
Tartalom Funkcionális nyelvek, Erlang A funkcionális nyelvek ipari felhasználása Szoftver bonyolultsági mértékek Automatikus hibadetektálás Automatikus hibajavítás bonyolultsági mértékek alapján
Az Erlang nyelv jellemzői Függvénykonstrukciók használata Üzenetküldések közös memória használat nélkül Hatékony elosztott rendszer, és hálózati modell Nagy hibatűrő képesség az elosztott programok területén Open 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 nep GV(G) 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 = = 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
RefactorErl Lehetőséget ad a forráskód transzformációjára Segítségével javítani lehet a forrásszövegek minőségét A 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
Automatikus hibadetektálás előre definiált értékekkel, és modularizálás
„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öveg A lekérdező nyelv kiterjesztésével új optimalizáló szkripteket készíthetünk...
Köszönöm megtisztelő figyelmüket! Támogatók: EKF TTK ELTE IK KMOP / Ericsson Hungary