Техника формалних трансформација WSL и FermaT алат Електротехнички факултет Београд, јануар 2009. Аутор: Милан Делибашић (2007/3069) Професор: Драган Бојић
Садржај Основни појмови. Wide Spectrum Language. FermaT алат. Интегрисани оквир за еволуцију и EWSL. Теорија формалних трансформација – WSL и FermaT алат
Увод Често се јавља потреба да се програмима продужи век трајања: Често се јавља потреба да се програмима продужи век трајања: превођењем кода из застарелог у модернији програмски језик, и/или прерађивањем кода у логички еквивалентну форму лакшу за одржавање. Теорија формалних трансформација је базирана на формалној логици. Пружа основу за развој алата који у великој мери аутоматизују процес прераде кода програма, и/или превођење у савременији програмски језик. Теорија формалних трансформација – WSL и FermaT алат
О програмима Компјутерски програми се најчешће посматрају као низ наредби које се секвенцијално извршавају. Алтернативни начин посматрања је да имамо: променљиве које програм користи и мења им вредности; стање као уређена торка вредности свих променљивих; конвенционални програм је опис функције (спецификација) која улазно стање пресликава у завршно стање. Намеће се закључак да једна таква спецификација може да се имплементира на више начина. Теорија формалних трансформација – WSL и FermaT алат
О програмима Следећи програм има 2 променљиве (z и n) и пролази кроз низ међустања: Други начин за приказивање ове математичке функције (кроз 1 међустање) је: z: = 1; while n > 0 do z:=z*x; n:= n – 1 od z:= xn; n:=0; Теорија формалних трансформација – WSL и FermaT алат
Спецификације Види се да су спецификације описи функције, али исто тако могу да буду у форми која не може тривијално да се мапира у низ инструкција. На пример: Оваква спецификација има већ помињано својство да оставља више суштински различитих могућности за имплементацију, 2 најочигледније су доделе x := 2 или x := -2. Ове 2 имплементације се називају сужењима (refinement) почетне спецификације, јер су им скупови коначних стања подскупови скупа коначних стања почетне спецификације. x := x′:(x′2 = 4) Теорија формалних трансформација – WSL и FermaT алат
Спецификације Видимо да спецификација представља виши ниво апстракције од програма (имплементације кроз низ инструкција), и као таква је блиска основној идеји коју је човек имао. Извлачење спецификације из постојећег програма инверзним инжењерингом (reverse engineering) је пожељно јер тиме спецификација добија могућност да надживи постојећу имплементацију, и буде касније имплементирана на други начин и/или коришћењем неког савременијег програмског језика. Теорија формалних трансформација – WSL и FermaT алат
Садржај Основни појмови. Wide Spectrum Language. FermaT алат. Интегрисани оквир за еволуцију и EWSL. Теорија формалних трансформација – WSL и FermaT алат
WSL - Увод За напредне потребе описа спецификација измишљен је нови језик – WSL (Wide Spectrum Language). Овај језик је развијен крајем `80-тих година, а највећи допринос је дошао са Универзитета у Лестеру. Циљ је био осмислити језик који садржи конструкције и ниског и високог нивоа. Овакав језик је онда идеалан за инверзни инжењеринг јер се издвајање спецификације добија серијом формалних трансформација над самим конструкцијама језика, за које је доказиво да чувају семантичку еквивалентност програма. Теорија формалних трансформација – WSL и FermaT алат
WSL - Увод У изградњи WSL језика и теорије трансформација је вођено рачуна о следећим захтевима: Генералне спецификације у свакој довољно прецизној нотацији (математичке логике) треба да буду укључене у језик (на пример Z и VDM спецификације). Намерно треба укључити дозу недетерминисаности у спецификацији, да би имплементатору била остављена ширина могућности за ефикасну имплементацију. Потребан је прецизно развијен каталог доказаних трансформација. Неопходне су технике за премошћавање разлике апстракционог нивоа између спецификација и програма. Језик мора да буде применљив на праве програме, а не само “језик за играње”. Језик мора да буде применљив на велике и комплексне програме. Теорија формалних трансформација – WSL и FermaT алат
Зашто изумети WSL? За потребе реструктурирања кода је корисно радити у оквиру језика који: има једноставну, регуларну и формално дефинисану семантику; поседује једноставну, јасну и недвосмислену синтаксу; има широк дијапазон трансформација са једноставним, механички проверивим условима ваљаности. За инверзни инжењеринг је јако корисно радити у оквиру једног “језика широког спектра”, у којем се на лак начин могу представити како програмски низак ниво, тако и спецификацијски високи ниво апстракције. Теорија формалних трансформација – WSL и FermaT алат
Зашто изумети WSL? (математички доказан каталог трансформација) Из наведених разлога велики напор је уложен на доказивање коректности свих трансформација које се примењују. Теорија формалних трансформација – WSL и FermaT алат
Зашто изумети WSL? (наставак) Битно је уочити да за разлику од осталих програмских језика WSL није Тјуринг-еквивалентан, већ да има виши ниво “израчунљивости” (видети на пример guard и join изразе). За потребе миграције је такође значајно да језик трансформационог система не буде “искривљен” и близак неком специфичном одредишном или циљном језику. Онда се израдом преводиоца за специфичне програмске језике долази до вишенаменског и моћног трансформационог система. Теорија формалних трансформација – WSL и FermaT алат
WSL језик језгра – 0-ти ниво изградње језика Језгро (0-ти ниво) се састоји из 4 примитивна исказа: Assertion: {P} - ако је формула P тачна, исказ се завршава, у супротном извршавање се прекида. Guard: [P] – исказ обезбеђује да је у том тренутку формула P тачна, без мењања вредности променљивих. Служи за сужавање произвољности у спецификацији. Додавање променљивих: add(x) – додаје променљиве у листи променљивих x у простор стања, са произвољним вредностима. Уклањање променљивих: remove(x) – уклања наведене променљиве из простора стања. Теорија формалних трансформација – WSL и FermaT алат
WSL – Грађење исказа Из 4 примитивна (основна) исказа граде се остали изкази језика применом разних правила: Секвенца наредби: S1; S2 (наредбе се извршавају једна за другом) Недетерминистички избор: S1 ʓ S2 (случајно се бира и извршава једна од наредби) Рекурзија: μX.S1 (рекурзивно позивање процедуре S1применом променљиве-наредбе X. Спецификација (као исказ језика): x := x′.Q (додела променљивама у листи x променљивих у x′ тако да је задовољена формула Q, која је у функцији од x′) ... Теорија формалних трансформација – WSL и FermaT алат
WSL – Грађење виших нивоа језика Искази неког нивоа се дефинишу преко исказа претходних нивоа, па тако све што важи за ниже нивое (укључујући и каталог трансформација) важи и за дотични ниво језика. Тако се на пример у 1. нивоу налазе конструкције као што су доделе вредности променљивима, if-then(-else), while и for петље, једноставне процедуре, итд. Други ниво рецимо доноси петље са више излаза, док трећи ниво на пример додаје локалне променљиве и параметре процедура и функција, исказе са бочним дејством итд. Теорија формалних трансформација – WSL и FermaT алат
Садржај Основни појмови. Wide Spectrum Language. FermaT алат. Интегрисани оквир за еволуцију и EWSL. Теорија формалних трансформација – WSL и FermaT алат
FermaT - Увод FermaT је генерички назив за више алатки, организованих у пакете, које се све заснивају на теорији формалних трансформација,интерно користе WSL језик, и служе за намене анализе и одржавања асемблерског кода, као и његову миграцију у апстракцијски више програмске језике (C и COBOL). Развој је започет крајем ’80-тих година прошлог века на De Montfort Универзитету у Лестеру (УК), и текао је паралелно са развијањем теорије формалних трансформација и WSL језика. Главни инжењер иза целог овог пројекта је Мартин Ворд (Martin Ward). Теорија формалних трансформација – WSL и FermaT алат
FermaT Transformation System Основна компонента свих FermaT решења чини FermaT Transformation System. (познат и кратко као FermaT алат, као и под другим сличним именима), који је доступан под GNU GPL лиценцом. FermaT алат барата спецификацијама програма у WSL-у: Програм се преводи у WSL. Најчешће је улазни језик на којем је програм написан Асемблер: користе се листинг фјалови (не .asm) јер садрже експанзије макроа и друге корисне информације. На добијену WSL спецификацију се примењују трансформације које алат садржи у каталогу, овиме се спецификација доводи у прегледнију и логички једноставнију форму. Финална (“сређена”) WSL спецификација се преводи у језик високог нивоа (C, COBOL). Теорија формалних трансформација – WSL и FermaT алат
FermaT: Схема процеса превођења Теорија формалних трансформација – WSL и FermaT алат
FermaT комерцијални алати Енглеска компанија Software Migrations Ltd. (SML) је откупила права развоја FermaT алата, и унапредила га избацивањем решења која се уз проширен каталог трансформација и измењен интерфејс углавном ослања на оригинални FermaT алат. Два њихова главна производа су: FermaT Workbench: је окружење алатки намењених анализи, визуелизацији употребе, одржавању и документацији асемблерског кода. FermaT Migration Service: је решење које има могућност превођења Асемблера у C и COBOL, и ослања се у великој мери на оригинални FermaT алат. Теорија формалних трансформација – WSL и FermaT алат
FermaT: Дијаграм архитектуре Теорија формалних трансформација – 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 Теорија формалних трансформација – WSL и FermaT алат
FermaT Workbench Теорија формалних трансформација – WSL и FermaT алат
Каталог функција (Function Catalogue) Обезбеђује детаљне информације о сваком фајлу или модулу у пројекту, као што су име, тип, структура, верзија, међузависности. Теорија формалних трансформација – WSL и FermaT алат
Граф позива функција (Function Call Graph) Приказује структуру међусобних позивања модула пројекта у виду графа позива. Теорија формалних трансформација – WSL и FermaT алат
Каталог података (Data Catalogue) Комплементарна перспектива података програма: приказују се информације о типовима, променљивама, броју појављивања, величини и иницијалним вредностима,... Теорија формалних трансформација – WSL и FermaT алат
Дијаграм тока програма (Interactive Program Flowchart) Интерактивни дијаграм логичког тока програма на нивоу основних блокова. Теорија формалних трансформација – WSL и FermaT алат
Интерактивни едитор (Interactive Editor) Теорија формалних трансформација – WSL и FermaT алат
Садржај Основни појмови. Wide Spectrum Language. FermaT алат. Интегрисани оквир за еволуцију и EWSL. Теорија формалних трансформација – WSL и FermaT алат
Integrated Evolution Framework Позабавимо се на крају проблемом еволуције објектно-оријентисаних програма. Унификовани приступ еволуцији система, базира се на проширењу WSL-а (Extended WSL - EWSL). Развијен је јединстевни Интегрисани оквир за еволуцију да би подржао овакав приступ. Теорија формалних трансформација – WSL и FermaT алат
Архитектура EWSL-а Теорија формалних трансформација – WSL и FermaT алат
Ток активности у EWSL Теорија формалних трансформација – 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 тачно. Теорија формалних трансформација – WSL и FermaT алат
TGCL (Timed Guarded Command Language) Базиран на основним структурама Дејкстриног guarded command language-а, TGCL уводи: време конкурентност комуникацију TGCL променљива је или атомска променљива, структурална променљива, или поље структуралне променљиве (x.d). Уводи концепт shunt променљиве у TAM. Shunt-ови су дељене променљиве преко који којих се обавља комуникација између TAM агената. Теорија формалних трансформација – WSL и FermaT алат
ObTAM (OO Temporal Agent Model) 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′) је позив методе. Теорија формалних трансформација – WSL и FermaT алат
CSL (Common Structural Language) CSL је развијен да би обогатио исказе из TGCL-а и учинио EWSL компатибилним са WSL-ом у FermaT алату. Искази у CSL-у више подсећају на програмске. CSL у ствари представља екстензију FermaT –овог WSL-а са додатком времена, конкурентности и типова, или као “програмичнија” варијација TGCL-а која садржи већи избор исказа. CSL је најконкретнији процедурални слој EWSL-а. Теорија формалних трансформација – 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 Теорија формалних трансформација – WSL и FermaT алат
Закључак Током ове презентације имали смо прилику да се упознамо са основним елементима теорије формалних трансформација, као и са софтвером заснованом на њој. FermaT алат са својим референцама у миграцији великих комерцијалних пројеката из Асемблера у C и COBOL са једне стране, и са својом проширивошћу и отвореношћу за новије објектно-оријентисане језике са друге стране представља робустан алат са јасном пословном применом.
Литература 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.htm SML’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 Теорија формалних трансформација – WSL и FermaT алат