16
Szoftver bonyolultsági mértékek alkalmazási területei Király Roland 2011

Szoftver bonyolultsági mértékek alkalmazási területei

Embed Size (px)

DESCRIPTION

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. - PowerPoint PPT Presentation

Citation preview

Szoftver bonyolultsági mértékek alkalmazási területei

Király Roland2011

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

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övegA 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-0002Ericsson Hungary