160 likes | 256 Views
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.
E N D
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 • 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
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_funformodule (a) show line_of_code, number_of_messpassformodule (a,b,c) show average_sizeformfunction (a,f,1) show average_sizeformfunction (a,f,1) a withmax, 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 szkriptekelloptimalizá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-1.1.2-08/1-2008-0002 Ericsson Hungary