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

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

Jan 02, 2016

Download

Documents

Dennis Walters

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
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Szoftver bonyolultsági mértékek alkalmazási területei

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

Király Roland2011

Page 2: 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

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

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

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

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…

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

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…

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

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!

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

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

Page 8: Szoftver bonyolultsági mértékek alkalmazási területei
Page 9: Szoftver bonyolultsági mértékek alkalmazási területei

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

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

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!

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

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

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

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

Page 13: Szoftver bonyolultsági mértékek alkalmazási területei
Page 14: Szoftver bonyolultsági mértékek alkalmazási területei

Automatikus hibadetektálás előre definiált értékekkel, és modularizálás

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

„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...

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

Köszönöm megtisztelő figyelmüket!

Támogatók:

EKF TTK ELTE IK

KMOP-1.1.2-08/1-2008-0002Ericsson Hungary