40
Техника формалних трансформација WSL и FermaT алат Електротехнички факултет Београд, јануар 2009. Аутор: Милан Делибашић (2007/3069) Професор: Драган Бојић

Техника формалних трансформација WSL и FermaT алат

  • Upload
    kirra

  • View
    64

  • Download
    0

Embed Size (px)

DESCRIPTION

Техника формалних трансформација WSL и FermaT алат. Електротехнички факултет Београд, јануар 2009. Аутор: Милан Делибашић (2007/3069) Професор: Драган Бојић. Садржај. Основни појмови. Wide Spectrum Language. FermaT алат. Интегрисани оквир за еволуцију и EWSL. Увод. - PowerPoint PPT Presentation

Citation preview

Page 1: Техника формалних трансформација WSL  и  FermaT  алат

Техника формалнихтрансформација

WSL и FermaT алат , Електротехнички факултет Београд јануар 2009.: (2007/3069)Аутор МиланДелибашић

: Професор Драган Бојић

Page 2: Техника формалних трансформација WSL  и  FermaT  алат

Садржај1. Основни појмови.2. Wide Spectrum Language.3. FermaT алат.4. Интегрисани оквир за еволуцију и EWSL.

2 Теорија формалних трансформација – WSL и FermaT алат

Page 3: Техника формалних трансформација WSL  и  FermaT  алат

Увод Често се јавља потреба да се програмима

продужи век трајања:1. превођењем кода из застарелог

у модернији програмски језик, и/или2. прерађивањем кода у логички еквивалентну форму

лакшу за одржавање. Теорија формалних трансформација је базирана

на формалној логици. Пружа основу за развој алата који у великој мери

аутоматизују процес прераде кода програма, и/или превођење у савременији програмски језик.

3 Теорија формалних трансформација – WSL и FermaT алат

Page 4: Техника формалних трансформација WSL  и  FermaT  алат

О програмима Компјутерски програми се најчешће посматрају

као низ наредби које се секвенцијално извршавају. Алтернативни начин посматрања је да имамо:

променљиве које програм користи и мења им вредности; стање као уређена торка вредности свих променљивих; конвенционални програм је опис функције (спецификација)

која улазно стање пресликава у завршно стање. Намеће се закључак да једна таква спецификација

може да се имплементира на више начина.

4 Теорија формалних трансформација – WSL и FermaT алат

Page 5: Техника формалних трансформација WSL  и  FermaT  алат

О програмима Следећи програм има 2 променљиве (z и n)

и пролази кроз низ међустања:

Други начин за приказивањеове математичке функције (кроз 1 међустање) је:

z: = 1;while n > 0 do

z:=z*x; n:= n – 1od

z:= xn;n:=0;

5 Теорија формалних трансформација – WSL и FermaT алат

Page 6: Техника формалних трансформација WSL  и  FermaT  алат

Спецификације Види се да су спецификације описи функције, али исто

тако могу да буду у форми која не може тривијално да се мапира у низ инструкција. На пример:

Оваква спецификација има већ помињано својство да оставља више суштински различитих могућности за имплементацију, 2 најочигледније су доделе x := 2 или x := -2.

Ове 2 имплементације се називају сужењима (refinement) почетне спецификације, јер су им скупови коначних стања подскупови скупа коначних стања почетне спецификације.

x := x′:(x′2 = 4)

6 Теорија формалних трансформација – WSL и FermaT алат

Page 7: Техника формалних трансформација WSL  и  FermaT  алат

Спецификације Видимо да спецификација представља виши ниво

апстракције од програма (имплементације кроз низ инструкција), и као таква је блиска основној идеји коју је човек имао.

Извлачење спецификације из постојећег програма инверзним инжењерингом (reverse engineering) је пожељно јер тиме спецификација добија могућност да надживи постојећу имплементацију, и буде касније имплементирана на други начин и/или коришћењем неког савременијег програмског језика.

7 Теорија формалних трансформација – WSL и FermaT алат

Page 8: Техника формалних трансформација WSL  и  FermaT  алат

Садржај1. Основни појмови.2. Wide Spectrum Language.3. FermaT алат.4. Интегрисани оквир за еволуцију и EWSL.

8 Теорија формалних трансформација – WSL и FermaT алат

Page 9: Техника формалних трансформација WSL  и  FermaT  алат

WSL - Увод За напредне потребе описа спецификација измишљен

је нови језик – WSL (Wide Spectrum Language). Овај језик је развијен крајем `80-тих година, а највећи

допринос је дошао са Универзитета у Лестеру. Циљ је био осмислити језик који садржи конструкције

и ниског и високог нивоа. Овакав језик је онда идеалан за инверзни

инжењеринг јер се издвајање спецификације добија серијом формалних трансформација над самим конструкцијама језика, за које је доказиво да чувају семантичку еквивалентност програма.

9 Теорија формалних трансформација – WSL и FermaT алат

Page 10: Техника формалних трансформација WSL  и  FermaT  алат

WSL - Увод У изградњи WSL језика и теорије трансформација је

вођено рачуна о следећим захтевима:1. Генералне спецификације у свакој довољно прецизној нотацији

(математичке логике) треба да буду укључене у језик (на пример Z и VDM спецификације).

2. Намерно треба укључити дозу недетерминисаности у спецификацији, да би имплементатору била остављена ширина могућности за ефикасну имплементацију.

3. Потребан је прецизно развијен каталог доказаних трансформација.

4. Неопходне су технике за премошћавање разлике апстракционог нивоа између спецификација и програма.

5. Језик мора да буде применљив на праве програме, а не само “језик за играње”.

6. Језик мора да буде применљив на велике и комплексне програме.

10 Теорија формалних трансформација – WSL и FermaT алат

Page 11: Техника формалних трансформација WSL  и  FermaT  алат

Зашто изуметиWSL? За потребе реструктурирања кода је корисно радити у

оквиру језика који: има једноставну, регуларну и формално дефинисану

семантику; поседује једноставну, јасну и недвосмислену синтаксу; има широк дијапазон трансформација са једноставним,

механички проверивим условима ваљаности. За инверзни инжењеринг је јако корисно радити у

оквиру једног “језика широког спектра”, у којем се на лак начин могу представити како програмски низак ниво, тако и спецификацијски високи ниво апстракције.

11 Теорија формалних трансформација – WSL и FermaT алат

Page 12: Техника формалних трансформација WSL  и  FermaT  алат

Зашто изуметиWSL?( математички доказан каталогтрансформација) Формална природа WSL-а је есенцијална за успех, јер

је раније неретко долазило до примена недовољно проверених трансформација (које су “личиле као исправне”) за које се касније утврђивало да нарушавају еквивалентност добијеног програма за почетним.

Имајући у виду да алати који употребљавају WSL примењују огроман број трансформација на програм, свака непроверена трансформација би имала велики утицај на исправност програма-деривата.

Из наведених разлога велики напор је уложен на доказивање коректности свих трансформација које се примењују.

12 Теорија формалних трансформација – WSL и FermaT алат

Page 13: Техника формалних трансформација WSL  и  FermaT  алат

Зашто изуметиWSL? ( )наставак Битно је уочити да за разлику од осталих програмских

језика WSL није Тјуринг-еквивалентан, већ да има виши ниво “израчунљивости” (видети на пример guard и join изразе).

За потребе миграције је такође значајно да језик трансформационог система не буде “искривљен” и близак неком специфичном одредишном или циљном језику.

Онда се израдом преводиоца за специфичне програмске језике долази до вишенаменског и моћног трансформационог система.

13 Теорија формалних трансформација – WSL и FermaT алат

Page 14: Техника формалних трансформација WSL  и  FermaT  алат

WSL – 0- језик језгра ти ниво изградњејезика WSL је изграђен из серије нивоа, при чему је у основи

мало језгро, а сваки нови ниво се изводи из претходног. Језгро (0-ти ниво) се састоји из 4 примитивна исказа:

1. Assertion: {P} - ако је формула P тачна, исказ се завршава, у супротном извршавање се прекида.

2. Guard: [P] – исказ обезбеђује да је у том тренутку формула P тачна, без мењања вредности променљивих. Служи за сужавање произвољности у спецификацији.

3. Додавање променљивих: add(x) – додаје променљиве у листи променљивих x у простор стања, са произвољним вредностима.

4. Уклањање променљивих: remove(x) – уклања наведене променљиве из простора стања.

14 Теорија формалних трансформација – WSL и FermaT алат

Page 15: Техника формалних трансформација WSL  и  FermaT  алат

WSL – Грађење исказа Из 4 примитивна (основна) исказа граде се остали

изкази језика применом разних правила: Секвенца наредби: S1; S2 (наредбе се извршавају једна за

другом) Недетерминистички избор: S1 ʓ S2 (случајно се бира и

извршава једна од наредби) Рекурзија: μX.S1 (рекурзивно позивање процедуре

S1применом променљиве-наредбе X. Спецификација (као исказ језика): x := x′.Q (додела

променљивама у листи x променљивих у x′ тако да је задовољена формула Q, која је у функцији од x′)

...

15 Теорија формалних трансформација – WSL и FermaT алат

Page 16: Техника формалних трансформација WSL  и  FermaT  алат

WSL – Грађење виших нивоа језика Полазећи од исказа 0. нивоа (језгра), применом

наведених правила граде се виши нивои WSL језика. Искази неког нивоа се дефинишу преко исказа

претходних нивоа, па тако све што важи за ниже нивое (укључујући и каталог трансформација) важи и за дотични ниво језика.

Тако се на пример у 1. нивоу налазе конструкције као што су доделе вредности променљивима, if-then(-else), while и for петље, једноставне процедуре, итд.Други ниво рецимо доноси петље са више излаза, док трећи ниво на пример додаје локалне променљиве и параметре процедура и функција, исказе са бочним дејством итд.

16 Теорија формалних трансформација – WSL и FermaT алат

Page 17: Техника формалних трансформација WSL  и  FermaT  алат

Садржај1. Основни појмови.2. Wide Spectrum Language.3. FermaT алат.4. Интегрисани оквир за еволуцију и EWSL.

17 Теорија формалних трансформација – WSL и FermaT алат

Page 18: Техника формалних трансформација WSL  и  FermaT  алат

FermaT - Увод FermaT је генерички назив за више алатки,

организованих у пакете, које се све заснивају на теорији формалних трансформација,интерно користе WSL језик, и служе за намене анализе и одржавања асемблерског кода, као и његову миграцију у апстракцијски више програмске језике (C и COBOL).

Развој је започет крајем ’80-тих година прошлог века на De Montfort Универзитету у Лестеру (УК), и текао је паралелно са развијањем теорије формалних трансформација и WSL језика.

Главни инжењер иза целог овог пројекта је Мартин Ворд (Martin Ward).

18 Теорија формалних трансформација – WSL и FermaT алат

Page 19: Техника формалних трансформација WSL  и  FermaT  алат

FermaT Transformation System Основна компонента свих FermaT решења чини FermaT

Transformation System. (познат и кратко као FermaT алат, као и под другим сличним именима), који је доступан под GNU GPL лиценцом.

FermaT алат барата спецификацијама програма у WSL-у: Програм се преводи у WSL. Најчешће је улазни језик на којем је програм написан Асемблер:

користе се листинг фјалови (не .asm) јер садрже експанзије макроа и друге корисне информације.

На добијену WSL спецификацију се примењују трансформације које алат садржи у каталогу, овиме се спецификација доводи у прегледнију и логички једноставнију форму.

Финална (“сређена”) WSL спецификација се преводи у језик високог нивоа (C, COBOL).

19 Теорија формалних трансформација – WSL и FermaT алат

Page 20: Техника формалних трансформација WSL  и  FermaT  алат

FermaT: Схема процеса превођења

20 Теорија формалних трансформација – WSL и FermaT алат

Page 21: Техника формалних трансформација WSL  и  FermaT  алат

FermaT комерцијални алати Енглеска компанија Software Migrations Ltd. (SML)

је откупила права развоја FermaT алата, и унапредила га избацивањем решења која се уз проширен каталог трансформација и измењен интерфејс углавном ослања на оригинални FermaT алат.

Два њихова главна производа су: FermaT Workbench: је окружење алатки намењених

анализи, визуелизацији употребе, одржавању и документацији асемблерског кода.

FermaT Migration Service: је решење које има могућност превођења Асемблера у C и COBOL, и ослања се у великој мери на оригинални FermaT алат.

21 Теорија формалних трансформација – WSL и FermaT алат

Page 22: Техника формалних трансформација WSL  и  FermaT  алат

FermaT: Дијаграм архитектуре

22 Теорија формалних трансформација – WSL и FermaT алат

Page 23: Техника формалних трансформација WSL  и  FermaT  алат

FermaT Workbench У оквиру FermaT Workbench-а су укључени

следећи алати: function catalogue function call graph data catalogue interactive program flowchart interactive editor interactive data tracker business rule extraction (code slicing) batch data tracker report generator

23 Теорија формалних трансформација – WSL и FermaT алат

Page 24: Техника формалних трансформација WSL  и  FermaT  алат

FermaT Workbench

24 Теорија формалних трансформација – WSL и FermaT алат

Page 25: Техника формалних трансформација WSL  и  FermaT  алат

(Каталог функција Function Catalogue) Обезбеђује детаљне информације о сваком фајлу или

модулу у пројекту, као што су име, тип, структура, верзија, међузависности.

25 Теорија формалних трансформација – WSL и FermaT алат

Page 26: Техника формалних трансформација WSL  и  FermaT  алат

(Граф позива функција Function Call Graph) Приказује структуру међусобних позивања модула

пројекта у виду графа позива.

26 Теорија формалних трансформација – WSL и FermaT алат

Page 27: Техника формалних трансформација WSL  и  FermaT  алат

(Каталог података Data Catalogue) Комплементарна перспектива података програма:

приказују се информације о типовима, променљивама, броју појављивања, величини и иницијалним вредностима,...

27 Теорија формалних трансформација – WSL и FermaT алат

Page 28: Техника формалних трансформација WSL  и  FermaT  алат

Дијаграм тока програма(Interactive Program Flowchart) Интерактивни дијаграм логичког тока програма на

нивоу основних блокова.

28 Теорија формалних трансформација – WSL и FermaT алат

Page 29: Техника формалних трансформација WSL  и  FermaT  алат

(Интерактивни едитор Interactive Editor)

29 Теорија формалних трансформација – WSL и FermaT алат

Page 30: Техника формалних трансформација WSL  и  FermaT  алат

Садржај1. Основни појмови.2. Wide Spectrum Language.3. FermaT алат.4. Интегрисани оквир за еволуцију и EWSL.

30 Теорија формалних трансформација – WSL и FermaT алат

Page 31: Техника формалних трансформација WSL  и  FermaT  алат

Integrated Evolution Framework Позабавимо се на крају проблемом еволуције

објектно-оријентисаних програма. Унификовани приступ еволуцији система, базира се на

проширењу WSL-а (Extended WSL - EWSL). Развијен је јединстевни Интегрисани оквир за

еволуцију да би подржао овакав приступ.

31 Теорија формалних трансформација – WSL и FermaT алат

Page 32: Техника формалних трансформација WSL  и  FermaT  алат

Архитектура EWSL-а

32 Теорија формалних трансформација – WSL и FermaT алат

Page 33: Техника формалних трансформација WSL  и  FermaT  алат

Ток активности у EWSL

33 Теорија формалних трансформација – WSL и FermaT алат

Page 34: Техника формалних трансформација WSL  и  FermaT  алат

ITL (Interval Temporal Logic) ITL је најабстрактнији логички слој нашег језика и служи се за давање

спецификацијски-оријентисаног значења TGCL–у и ObTAM–у. Све трансформације, сужења, издвајања објеката и правила су прецизно

доказана у ITL-у. Изрази у ITL-у укључују константе, статичке променљиве (које се не мењају

током интервала), променљиве стања (које се могу мењати током интервала), функције примењене на изразем и нотацију ia : f где је a статичка променљива а f је предикат.Ово враћа вредност за a такав да јеf (a) тачно. Ако не постоји таква вредност, ia : f враћа било коју вредност из опсега од a.

Формуле у ITL-у садрже предикате p(e1,…en) и следеће композиције формула: ∀v·f је тачно ако је f(v) тачно за све вредности v. skip је тачно за сваки јединични интервал (сваки s са |s| = 1). f1:f2 је тачно ако се интервал може декомпоновати на префиксни и

суфиксни интервал, тако да је f1 тачно на префиксном а f2 на суфиксном, или ако је интервал коначан и f1 је тачан за тај интервал.

f* је тачно ако је интервал декомпонован у коначан број интервала таквих да је за сваки од њих f тачно, или ако је интервал бесконачан и може се декомпоновати у бесконачан број коначних интервала за које је f тачно.

34 Теорија формалних трансформација – WSL и FermaT алат

Page 35: Техника формалних трансформација WSL  и  FermaT  алат

TGCL (Timed Guarded Command Language) Базиран на основним структурама Дејкстриног

guarded command language-а, TGCL уводи: време конкурентност комуникацију

TGCL променљива је или атомска променљива, структурална променљива, или поље структуралне променљиве (x.d).

Уводи концепт shunt променљиве у TAM. Shunt-ови су дељене променљиве преко који којих се обавља комуникација између TAM агената.

35 Теорија формалних трансформација – WSL и FermaT алат

Page 36: Техника формалних трансформација WSL  и  FermaT  алат

ObTAM (OO Temporal Agent Model) TAM има за циљ да буде реалистичан метод за развој

система у реалном времену. ObTAM проширује TAM са објектно-оријентисаним

могућностима. Генерални елементи, као и елементи за реално време су

исти као они у TGCL–у. Објектно-оријентисани елементи:

x : T дефинише x као променљиву типа T. T <sub T′ декларише класу T као под-класу класе T′. T = {xi : Ti, mj(In pinjk : Tk, Out poutjl :T′l){[Aj]}} је

декларација за дефиницију класе. Овако смо дефинисали класу T, која има поља xi типа Ti, i ∊ 1..n, и методе mj, j ∊ 1..r. pinjk су улазни параметри (по вредности) метода mj, а poutjl излазни параметри (по референци). Aj су тела метода mj.

x.d је референца на поље d објекта x. x.m(In ek : Tk, Out poutl :Tl′) је позив методе.

36 Теорија формалних трансформација – WSL и FermaT алат

Page 37: Техника формалних трансформација WSL  и  FermaT  алат

CSL (Common Structural Language) CSL је развијен да би обогатио исказе из TGCL-а и

учинио EWSL компатибилним са WSL-ом у FermaT алату.

Искази у CSL-у више подсећају на програмске. CSL у ствари представља екстензију FermaT –овог

WSL-а са додатком времена, конкурентности и типова, или као “програмичнија” варијација TGCL-а која садржи већи избор исказа.

CSL је најконкретнији процедурални слој EWSL-а.

37 Теорија формалних трансформација – WSL и FermaT алат

Page 38: Техника формалних трансформација WSL  и  FermaT  алат

COOL (Common OO Language) Синтакса COOL-а је иста као синтакса CSL-а, без

процедуралног дела, али са слдећеим додатним објектно-оријентисаним додатком: Дефиниција класе: class T { Ti : xi; mj(In pinjk : Tk, Out

poutjl : T’l) {Aj} } Хијерархија класа: T extends T’ Референцирање поља објекта: x.d Позивање метода: x.m(In ek, Out yl) Декларција објекта: T:x

38 Теорија формалних трансформација – WSL и FermaT алат

Page 39: Техника формалних трансформација WSL  и  FermaT  алат

Закључак Током ове презентације имали смо прилику да се

упознамо са основним елементима теорије формалних трансформација, као и са софтвером заснованом на њој.

FermaT алат са својим референцама у миграцији великих комерцијалних пројеката из Асемблера у C и COBOL са једне стране, и са својом проширивошћу и отвореношћу за новије објектно-оријентисане језике са друге стране представља робустан алат са јасном пословном применом.

Page 40: Техника формалних трансформација WSL  и  FermaT  алат

Литература Hongji Yang и Martin Ward - Successful

Evolution of Software Systems (2003) http://

www.cse.dmu.ac.uk/~mward/fermat.html (FermaT)

http://www.smltd.com/solutions.htmSML’s FermaT Solutions

http://www.cse.dmu.ac.uk/STRL/research/software/index.html STRL - De Montfort University (Лестер, УК)

Matthias Ladkau - A Wide-Spectrum Type System for Transformation Theory

40 Теорија формалних трансформација – WSL и FermaT алат