egy erlang refaktor lépés: függvényparaméterek összevonása...

27
Bevezetés Erlang refaktorálás A kód tárolása Paraméterek összevonása tuple-ba Implementáció Eredmények Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba Témavezető: Horváth Zoltán és Simon Thompson Nagy Tamás és Víg Anikó ELTE IK Programozási Nyelvek és Fordítóprogramok Tanszék OTDK 2007, Miskolc Nagy Tamás és Víg Anikó ELTE IK Programozási Nyelvek és Fordítóprogramok Tanszék Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba OTDK 2007, Miskolc 1 / 19

Upload: others

Post on 12-Jan-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Egy Erlang refaktor lépés: Függvényparaméterek összevonása ...plc.inf.elte.hu/erlang/pub/tuple_fun_args_tdk_slides.pdf · ELTE IK Programozási Nyelvek és Fordítóprogramok

Bevezetés Erlang refaktorálás A kód tárolása Paraméterek összevonása tuple-ba Implementáció Eredmények

Egy Erlang refaktor lépés: Függvényparaméterekösszevonása tuple-ba

Témavezető: Horváth Zoltán és Simon Thompson

Nagy Tamás és Víg Anikó

ELTE IK Programozási Nyelvek és Fordítóprogramok Tanszék

OTDK 2007, Miskolc

Nagy Tamás és Víg Anikó ELTE IK Programozási Nyelvek és Fordítóprogramok Tanszék

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba OTDK 2007, Miskolc 1 / 19

Page 2: Egy Erlang refaktor lépés: Függvényparaméterek összevonása ...plc.inf.elte.hu/erlang/pub/tuple_fun_args_tdk_slides.pdf · ELTE IK Programozási Nyelvek és Fordítóprogramok

Bevezetés Erlang refaktorálás A kód tárolása Paraméterek összevonása tuple-ba Implementáció Eredmények

Paraméterek összevonása tuple-ba

Egy kétmodulos példa (swap függvény paramétereinekösszevonása)

Nagy Tamás és Víg Anikó ELTE IK Programozási Nyelvek és Fordítóprogramok Tanszék

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba OTDK 2007, Miskolc 2 / 19

Page 3: Egy Erlang refaktor lépés: Függvényparaméterek összevonása ...plc.inf.elte.hu/erlang/pub/tuple_fun_args_tdk_slides.pdf · ELTE IK Programozási Nyelvek és Fordítóprogramok

Bevezetés Erlang refaktorálás A kód tárolása Paraméterek összevonása tuple-ba Implementáció Eredmények

Erlang

Az Erlang nyelv

Az Ericsson által kifejlesztett és jelenleg is nagytelekommunikációs szoftverrendszerek fejlesztésére használtfunkcionális programozási nyelv.A változók csak egyszer kapnak értéket életük soránNincs statikus típusrendszere, a változók bármilyen típusúértéket kaphatnak

Nagy Tamás és Víg Anikó ELTE IK Programozási Nyelvek és Fordítóprogramok Tanszék

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba OTDK 2007, Miskolc 3 / 19

Page 4: Egy Erlang refaktor lépés: Függvényparaméterek összevonása ...plc.inf.elte.hu/erlang/pub/tuple_fun_args_tdk_slides.pdf · ELTE IK Programozási Nyelvek és Fordítóprogramok

Bevezetés Erlang refaktorálás A kód tárolása Paraméterek összevonása tuple-ba Implementáció Eredmények

Erlang

Az Erlang nyelv

Egy új kiértékelő szál (processz) indítása nem igényel sokkaltöbb erőforrást, mint egy függvényhívásA függvénynevek atomok, amelyek akár futási időben isgenerálhatók (kaphatnak értéket)Dinamikusan létrehozott kódrészletek is futtathatók(lecserélhető modulok futás közben)

Nagy Tamás és Víg Anikó ELTE IK Programozási Nyelvek és Fordítóprogramok Tanszék

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba OTDK 2007, Miskolc 4 / 19

Page 5: Egy Erlang refaktor lépés: Függvényparaméterek összevonása ...plc.inf.elte.hu/erlang/pub/tuple_fun_args_tdk_slides.pdf · ELTE IK Programozási Nyelvek és Fordítóprogramok

Bevezetés Erlang refaktorálás A kód tárolása Paraméterek összevonása tuple-ba Implementáció Eredmények

Refaktorálás

Refaktorálás definíciója, felhasználási területei

A refaktorálás olyan program-transzformációk gyűjtőneve,amelyek nem változtatják meg a program viselkedését.A refaktorálás célja: a kód átszerkesztése, minőségénekjavítása, optimalizálásaFelhasználási területei: széleskörű, mindennapos programozóifeladatok (átnevezések, kód újrafelhasználás, kódolásikonvenciókhoz igazítás)

Nagy Tamás és Víg Anikó ELTE IK Programozási Nyelvek és Fordítóprogramok Tanszék

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba OTDK 2007, Miskolc 5 / 19

Page 6: Egy Erlang refaktor lépés: Függvényparaméterek összevonása ...plc.inf.elte.hu/erlang/pub/tuple_fun_args_tdk_slides.pdf · ELTE IK Programozási Nyelvek és Fordítóprogramok

Bevezetés Erlang refaktorálás A kód tárolása Paraméterek összevonása tuple-ba Implementáció Eredmények

Refaktorálás

Refaktoráló eszköz

Miért lényeges egy eszköz használata?

Kézzel lassú és fárasztó a végrehajtás, ráadásul rengeteg ahibalehetőségGéppel gyors és biztonságos

Az objektumorientált nyelvekben már régóta használnakrefaktor eszközöket (pl. Java és C++)Funkcionális programokhoz eddig csak a HaRe (Haskell) álltrendelkezésre.

Nagy Tamás és Víg Anikó ELTE IK Programozási Nyelvek és Fordítóprogramok Tanszék

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba OTDK 2007, Miskolc 6 / 19

Page 7: Egy Erlang refaktor lépés: Függvényparaméterek összevonása ...plc.inf.elte.hu/erlang/pub/tuple_fun_args_tdk_slides.pdf · ELTE IK Programozási Nyelvek és Fordítóprogramok

Bevezetés Erlang refaktorálás A kód tárolása Paraméterek összevonása tuple-ba Implementáció Eredmények

Refaktorálás

Refaktoráló eszköz

Miért lényeges egy eszköz használata?Kézzel lassú és fárasztó a végrehajtás, ráadásul rengeteg ahibalehetőségGéppel gyors és biztonságos

Az objektumorientált nyelvekben már régóta használnakrefaktor eszközöket (pl. Java és C++)Funkcionális programokhoz eddig csak a HaRe (Haskell) álltrendelkezésre.

Nagy Tamás és Víg Anikó ELTE IK Programozási Nyelvek és Fordítóprogramok Tanszék

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba OTDK 2007, Miskolc 6 / 19

Page 8: Egy Erlang refaktor lépés: Függvényparaméterek összevonása ...plc.inf.elte.hu/erlang/pub/tuple_fun_args_tdk_slides.pdf · ELTE IK Programozási Nyelvek és Fordítóprogramok

Bevezetés Erlang refaktorálás A kód tárolása Paraméterek összevonása tuple-ba Implementáció Eredmények

Refaktorálás

Refaktoráló eszköz

Miért lényeges egy eszköz használata?Kézzel lassú és fárasztó a végrehajtás, ráadásul rengeteg ahibalehetőségGéppel gyors és biztonságos

Az objektumorientált nyelvekben már régóta használnakrefaktor eszközöket (pl. Java és C++)Funkcionális programokhoz eddig csak a HaRe (Haskell) álltrendelkezésre.

Nagy Tamás és Víg Anikó ELTE IK Programozási Nyelvek és Fordítóprogramok Tanszék

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba OTDK 2007, Miskolc 6 / 19

Page 9: Egy Erlang refaktor lépés: Függvényparaméterek összevonása ...plc.inf.elte.hu/erlang/pub/tuple_fun_args_tdk_slides.pdf · ELTE IK Programozási Nyelvek és Fordítóprogramok

Bevezetés Erlang refaktorálás A kód tárolása Paraméterek összevonása tuple-ba Implementáció Eredmények

Refaktorálás

Refaktor lépések Erlangban

Átnevezések: függvény, változó, modulFüggvényparaméterek átrendezése, csoportosítása (tuple-bevonása), egy változó kiemelése paraméterbeFüggvények általánosítása, összevonása, specializációjaAzonos részkifejezések kiemelése változóba, függvénybeAdatszerkezetek módosítása

A nyelv sajátosságai miatt a statikusan típusos és azobjektumorientált nyelvektől is lényegesen eltérő, új elemzésimódszerek szükségesek.

Nagy Tamás és Víg Anikó ELTE IK Programozási Nyelvek és Fordítóprogramok Tanszék

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba OTDK 2007, Miskolc 7 / 19

Page 10: Egy Erlang refaktor lépés: Függvényparaméterek összevonása ...plc.inf.elte.hu/erlang/pub/tuple_fun_args_tdk_slides.pdf · ELTE IK Programozási Nyelvek és Fordítóprogramok

Bevezetés Erlang refaktorálás A kód tárolása Paraméterek összevonása tuple-ba Implementáció Eredmények

Refaktorálás

Refaktor lépések Erlangban

Átnevezések: függvény, változó, modulFüggvényparaméterek átrendezése, csoportosítása (tuple-bevonása), egy változó kiemelése paraméterbeFüggvények általánosítása, összevonása, specializációjaAzonos részkifejezések kiemelése változóba, függvénybeAdatszerkezetek módosításaA nyelv sajátosságai miatt a statikusan típusos és azobjektumorientált nyelvektől is lényegesen eltérő, új elemzésimódszerek szükségesek.

Nagy Tamás és Víg Anikó ELTE IK Programozási Nyelvek és Fordítóprogramok Tanszék

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba OTDK 2007, Miskolc 7 / 19

Page 11: Egy Erlang refaktor lépés: Függvényparaméterek összevonása ...plc.inf.elte.hu/erlang/pub/tuple_fun_args_tdk_slides.pdf · ELTE IK Programozási Nyelvek és Fordítóprogramok

Bevezetés Erlang refaktorálás A kód tárolása Paraméterek összevonása tuple-ba Implementáció Eredmények

Programszöveg és szintaxisfa

A kód és a megfelelő szintaxisfa az azonosítókkal

Nagy Tamás és Víg Anikó ELTE IK Programozási Nyelvek és Fordítóprogramok Tanszék

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba OTDK 2007, Miskolc 8 / 19

Page 12: Egy Erlang refaktor lépés: Függvényparaméterek összevonása ...plc.inf.elte.hu/erlang/pub/tuple_fun_args_tdk_slides.pdf · ELTE IK Programozási Nyelvek és Fordítóprogramok

Bevezetés Erlang refaktorálás A kód tárolása Paraméterek összevonása tuple-ba Implementáció Eredmények

Programszöveg és szintaxisfa

A kód és a megfelelő szintaxisfa az azonosítókkal

Nagy Tamás és Víg Anikó ELTE IK Programozási Nyelvek és Fordítóprogramok Tanszék

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba OTDK 2007, Miskolc 8 / 19

Page 13: Egy Erlang refaktor lépés: Függvényparaméterek összevonása ...plc.inf.elte.hu/erlang/pub/tuple_fun_args_tdk_slides.pdf · ELTE IK Programozási Nyelvek és Fordítóprogramok

Bevezetés Erlang refaktorálás A kód tárolása Paraméterek összevonása tuple-ba Implementáció Eredmények

Szintaktikus információk

A szintaktikus információk tárolása az adatbázisban

Az absztrakt szintaxisfa (AST) szinte minden lehetségesszintaktikus kategóriájához létrehoztunk egy-egy táblát.A fa minden eleméhez rendelünk egy egyedi azonosító.Minden modul is kap egy egyedi modul-azonosítót.A táblák sorai tartalmazzák az adott egyed azonosítóit ésgyerekeinek azonosítóit.A pozíciók, szintaktikus kategóriák és nevek tárolásárabevezettünk egy-egy külön táblát a keresések sebességéneknövelésére.

Nagy Tamás és Víg Anikó ELTE IK Programozási Nyelvek és Fordítóprogramok Tanszék

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba OTDK 2007, Miskolc 9 / 19

Page 14: Egy Erlang refaktor lépés: Függvényparaméterek összevonása ...plc.inf.elte.hu/erlang/pub/tuple_fun_args_tdk_slides.pdf · ELTE IK Programozási Nyelvek és Fordítóprogramok

Bevezetés Erlang refaktorálás A kód tárolása Paraméterek összevonása tuple-ba Implementáció Eredmények

Szemantikus információk

A szemantikus információk tárolása az adatbázisban

Azonos egyedhez tartozó előfordulások tárolása: egy-egy táblatartalmazza a változók és függvények előfordulásait.A hatókör-tábla tárolja azt a legbelső hatókört, amiben azadott elem van.Egy külön tábla tárolja a hatókörök hierarchiáját.

Nagy Tamás és Víg Anikó ELTE IK Programozási Nyelvek és Fordítóprogramok Tanszék

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba OTDK 2007, Miskolc 10 / 19

Page 15: Egy Erlang refaktor lépés: Függvényparaméterek összevonása ...plc.inf.elte.hu/erlang/pub/tuple_fun_args_tdk_slides.pdf · ELTE IK Programozási Nyelvek és Fordítóprogramok

Bevezetés Erlang refaktorálás A kód tárolása Paraméterek összevonása tuple-ba Implementáció Eredmények

Paraméterek összevonása tuple-ba

A refaktor lépés definíciója, paraméterei

A refaktor-lépés a felhasználó által mutatottfüggvényparamétertől kezdve a megadott számú paramétertösszevonja egy tuple-ba.A lépés nem csak a konkrét függvény előfordulást érinti,hanem az összes hívását és definícióját is esetleg több modultmódosítva.Ha a tuple választott hossza nagyobb 1-nél, akkor a függvényparaméterszáma is megváltozik.

Nagy Tamás és Víg Anikó ELTE IK Programozási Nyelvek és Fordítóprogramok Tanszék

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba OTDK 2007, Miskolc 11 / 19

Page 16: Egy Erlang refaktor lépés: Függvényparaméterek összevonása ...plc.inf.elte.hu/erlang/pub/tuple_fun_args_tdk_slides.pdf · ELTE IK Programozási Nyelvek és Fordítóprogramok

Bevezetés Erlang refaktorálás A kód tárolása Paraméterek összevonása tuple-ba Implementáció Eredmények

Elöfeltételek

A lépés előfeltételei

Az megadott pozíción a függvény formális paramétere legyenNem lehet függvénykifejezés (fun ... end)Az összevonandó paraméterek száma nem lehet több ahátralévő paraméterek számánálA megváltozó paraméterszám nem okozhat ütközést

Nagy Tamás és Víg Anikó ELTE IK Programozási Nyelvek és Fordítóprogramok Tanszék

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba OTDK 2007, Miskolc 12 / 19

Page 17: Egy Erlang refaktor lépés: Függvényparaméterek összevonása ...plc.inf.elte.hu/erlang/pub/tuple_fun_args_tdk_slides.pdf · ELTE IK Programozási Nyelvek és Fordítóprogramok

Bevezetés Erlang refaktorálás A kód tárolása Paraméterek összevonása tuple-ba Implementáció Eredmények

Implicit függvény

Egy példa

-module(branch3).-export([calls/0]).

branches(first, A, _B) -> A;branches(second, _A, B) -> B;branches(head, [A | _],

[B | _]) -> {A, B}.

calls() ->{branches(head,

[1,2], [3,4]),apply(fun branches/3,[first, 1, 2]) }.

-module(branch3).-export([calls/0]).

branches(first, {A, _B}) -> A;branches(second, {_A, B}) -> B;branches(head, {[A | _],

[B | _]}) -> {A, B}.

calls() ->{ branches(head,

{[1,2], [3,4]}),apply(fun (P1,P2,P3) ->

branches(P1,{P2,P3})end,

[first, 1, 2]) }.

Nagy Tamás és Víg Anikó ELTE IK Programozási Nyelvek és Fordítóprogramok Tanszék

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba OTDK 2007, Miskolc 13 / 19

Page 18: Egy Erlang refaktor lépés: Függvényparaméterek összevonása ...plc.inf.elte.hu/erlang/pub/tuple_fun_args_tdk_slides.pdf · ELTE IK Programozási Nyelvek és Fordítóprogramok

Bevezetés Erlang refaktorálás A kód tárolása Paraméterek összevonása tuple-ba Implementáció Eredmények

Implicit függvény

Egy példa

-module(branch3).-export([calls/0]).

branches(first, A, _B) -> A;branches(second, _A, B) -> B;branches(head, [A | _],

[B | _]) -> {A, B}.

calls() ->{branches(head,

[1,2], [3,4]),apply(fun branches/3,[first, 1, 2]) }.

-module(branch3).-export([calls/0]).

branches(first, {A, _B}) -> A;branches(second, {_A, B}) -> B;branches(head, {[A | _],

[B | _]}) -> {A, B}.

calls() ->{ branches(head,

{[1,2], [3,4]}),apply(fun (P1,P2,P3) ->

branches(P1,{P2,P3})end,

[first, 1, 2]) }.

Nagy Tamás és Víg Anikó ELTE IK Programozási Nyelvek és Fordítóprogramok Tanszék

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba OTDK 2007, Miskolc 14 / 19

Page 19: Egy Erlang refaktor lépés: Függvényparaméterek összevonása ...plc.inf.elte.hu/erlang/pub/tuple_fun_args_tdk_slides.pdf · ELTE IK Programozási Nyelvek és Fordítóprogramok

Bevezetés Erlang refaktorálás A kód tárolása Paraméterek összevonása tuple-ba Implementáció Eredmények

Implicit függvény

Egy példa

-module(branch3).-export([calls/0]).

branches(first, A, _B) -> A;branches(second, _A, B) -> B;branches(head, [A | _],

[B | _]) -> {A, B}.

calls() ->{branches(head,

[1,2], [3,4]),apply(fun branches/3,[first, 1, 2]) }.

-module(branch3).-export([calls/0]).

branches(first, {A, _B}) -> A;branches(second, {_A, B}) -> B;branches(head, {[A | _],

[B | _]}) -> {A, B}.

calls() ->{ branches(head,

{[1,2], [3,4]}),apply(fun (P1,P2,P3) ->

branches(P1,{P2,P3})end,

[first, 1, 2]) }.

Nagy Tamás és Víg Anikó ELTE IK Programozási Nyelvek és Fordítóprogramok Tanszék

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba OTDK 2007, Miskolc 15 / 19

Page 20: Egy Erlang refaktor lépés: Függvényparaméterek összevonása ...plc.inf.elte.hu/erlang/pub/tuple_fun_args_tdk_slides.pdf · ELTE IK Programozási Nyelvek és Fordítóprogramok

Bevezetés Erlang refaktorálás A kód tárolása Paraméterek összevonása tuple-ba Implementáció Eredmények

Implicit függvény

Egy példa

-module(branch3).-export([calls/0]).

branches(first, A, _B) -> A;branches(second, _A, B) -> B;branches(head, [A | _],

[B | _]) -> {A, B}.

calls() ->{branches(head,

[1,2], [3,4]),apply(fun branches/3,[first, 1, 2]) }.

-module(branch3).-export([calls/0]).

branches(first, {A, _B}) -> A;branches(second, {_A, B}) -> B;branches(head, {[A | _],

[B | _]}) -> {A, B}.

calls() ->{ branches(head,

{[1,2], [3,4]}),apply(fun (P1,P2,P3) ->

branches(P1,{P2,P3})end,

[first, 1, 2]) }.

Nagy Tamás és Víg Anikó ELTE IK Programozási Nyelvek és Fordítóprogramok Tanszék

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba OTDK 2007, Miskolc 16 / 19

Page 21: Egy Erlang refaktor lépés: Függvényparaméterek összevonása ...plc.inf.elte.hu/erlang/pub/tuple_fun_args_tdk_slides.pdf · ELTE IK Programozási Nyelvek és Fordítóprogramok

Bevezetés Erlang refaktorálás A kód tárolása Paraméterek összevonása tuple-ba Implementáció Eredmények

A tool szerkezete

A refaktoráló eszköz

Nagy Tamás és Víg Anikó ELTE IK Programozási Nyelvek és Fordítóprogramok Tanszék

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba OTDK 2007, Miskolc 17 / 19

Page 22: Egy Erlang refaktor lépés: Függvényparaméterek összevonása ...plc.inf.elte.hu/erlang/pub/tuple_fun_args_tdk_slides.pdf · ELTE IK Programozási Nyelvek és Fordítóprogramok

Bevezetés Erlang refaktorálás A kód tárolása Paraméterek összevonása tuple-ba Implementáció Eredmények

A tool szerkezete

A refaktoráló eszköz

Nagy Tamás és Víg Anikó ELTE IK Programozási Nyelvek és Fordítóprogramok Tanszék

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba OTDK 2007, Miskolc 17 / 19

Page 23: Egy Erlang refaktor lépés: Függvényparaméterek összevonása ...plc.inf.elte.hu/erlang/pub/tuple_fun_args_tdk_slides.pdf · ELTE IK Programozási Nyelvek és Fordítóprogramok

Bevezetés Erlang refaktorálás A kód tárolása Paraméterek összevonása tuple-ba Implementáció Eredmények

Nyelvek

Alkalmazott programozási nyelvek

ELisp: az Emacs menü szerkezetéhez, felhasználói üzenetek,kommunikáció kezeléséhezErlang: a refaktor lépések, adatbázis-struktúra kezeléseSQL: kommunikáció az adatbázis felé ODBC-n keresztül

Nagy Tamás és Víg Anikó ELTE IK Programozási Nyelvek és Fordítóprogramok Tanszék

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba OTDK 2007, Miskolc 18 / 19

Page 24: Egy Erlang refaktor lépés: Függvényparaméterek összevonása ...plc.inf.elte.hu/erlang/pub/tuple_fun_args_tdk_slides.pdf · ELTE IK Programozási Nyelvek és Fordítóprogramok

Bevezetés Erlang refaktorálás A kód tárolása Paraméterek összevonása tuple-ba Implementáció Eredmények

Elért eredményeink

1 Az eszköz keretrendszerének megvalósítása2 Az AST és a statikus-szemantikus információk adatbázisban

tárolásának megtervezése3 A kód tárolásának és megjelenítésének megvalósítása

4 A projektmunka keretében elemzett refaktor lépésekfeltételeinek megfelelően az algoritmusok megtervezése

5 A refaktor lépések lekódolása6 Az elemzés során készített tesztesetek (kb. 300 db)

mindegyikének lefuttatása, a kapott eredmények helyességénekellenőrzése

7 Az eszköz tesztelése egy iparból kapott nagyobb kódbázison8 A teljes eszköz jelenleg 5 refaktor lépést tartalmaz9 A kód jelenleg 10 000 Erlang sor, ami C kódra átszámítva

ennek többszörösét jelenti

Nagy Tamás és Víg Anikó ELTE IK Programozási Nyelvek és Fordítóprogramok Tanszék

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba OTDK 2007, Miskolc 19 / 19

Page 25: Egy Erlang refaktor lépés: Függvényparaméterek összevonása ...plc.inf.elte.hu/erlang/pub/tuple_fun_args_tdk_slides.pdf · ELTE IK Programozási Nyelvek és Fordítóprogramok

Bevezetés Erlang refaktorálás A kód tárolása Paraméterek összevonása tuple-ba Implementáció Eredmények

Elért eredményeink

1 Az eszköz keretrendszerének megvalósítása2 Az AST és a statikus-szemantikus információk adatbázisban

tárolásának megtervezése3 A kód tárolásának és megjelenítésének megvalósítása4 A projektmunka keretében elemzett refaktor lépések

feltételeinek megfelelően az algoritmusok megtervezése5 A refaktor lépések lekódolása

6 Az elemzés során készített tesztesetek (kb. 300 db)mindegyikének lefuttatása, a kapott eredmények helyességénekellenőrzése

7 Az eszköz tesztelése egy iparból kapott nagyobb kódbázison8 A teljes eszköz jelenleg 5 refaktor lépést tartalmaz9 A kód jelenleg 10 000 Erlang sor, ami C kódra átszámítva

ennek többszörösét jelenti

Nagy Tamás és Víg Anikó ELTE IK Programozási Nyelvek és Fordítóprogramok Tanszék

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba OTDK 2007, Miskolc 19 / 19

Page 26: Egy Erlang refaktor lépés: Függvényparaméterek összevonása ...plc.inf.elte.hu/erlang/pub/tuple_fun_args_tdk_slides.pdf · ELTE IK Programozási Nyelvek és Fordítóprogramok

Bevezetés Erlang refaktorálás A kód tárolása Paraméterek összevonása tuple-ba Implementáció Eredmények

Elért eredményeink

1 Az eszköz keretrendszerének megvalósítása2 Az AST és a statikus-szemantikus információk adatbázisban

tárolásának megtervezése3 A kód tárolásának és megjelenítésének megvalósítása4 A projektmunka keretében elemzett refaktor lépések

feltételeinek megfelelően az algoritmusok megtervezése5 A refaktor lépések lekódolása6 Az elemzés során készített tesztesetek (kb. 300 db)

mindegyikének lefuttatása, a kapott eredmények helyességénekellenőrzése

7 Az eszköz tesztelése egy iparból kapott nagyobb kódbázison

8 A teljes eszköz jelenleg 5 refaktor lépést tartalmaz9 A kód jelenleg 10 000 Erlang sor, ami C kódra átszámítva

ennek többszörösét jelenti

Nagy Tamás és Víg Anikó ELTE IK Programozási Nyelvek és Fordítóprogramok Tanszék

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba OTDK 2007, Miskolc 19 / 19

Page 27: Egy Erlang refaktor lépés: Függvényparaméterek összevonása ...plc.inf.elte.hu/erlang/pub/tuple_fun_args_tdk_slides.pdf · ELTE IK Programozási Nyelvek és Fordítóprogramok

Bevezetés Erlang refaktorálás A kód tárolása Paraméterek összevonása tuple-ba Implementáció Eredmények

Elért eredményeink

1 Az eszköz keretrendszerének megvalósítása2 Az AST és a statikus-szemantikus információk adatbázisban

tárolásának megtervezése3 A kód tárolásának és megjelenítésének megvalósítása4 A projektmunka keretében elemzett refaktor lépések

feltételeinek megfelelően az algoritmusok megtervezése5 A refaktor lépések lekódolása6 Az elemzés során készített tesztesetek (kb. 300 db)

mindegyikének lefuttatása, a kapott eredmények helyességénekellenőrzése

7 Az eszköz tesztelése egy iparból kapott nagyobb kódbázison8 A teljes eszköz jelenleg 5 refaktor lépést tartalmaz9 A kód jelenleg 10 000 Erlang sor, ami C kódra átszámítva

ennek többszörösét jelentiNagy Tamás és Víg Anikó ELTE IK Programozási Nyelvek és Fordítóprogramok Tanszék

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba OTDK 2007, Miskolc 19 / 19