180 likes | 350 Views
Specifikāciju valodu pamati. Kursa saturs, ievada piezīmes. “Specifikācija”. Sistēmas specifikācija – sistēmas īpašību apraksts Sistēma – esoša vai projektējama Sistēma – programmatūra vai “dzelži” (vai vēl cita) Dažādas specifikācijas vienai sistēmai:
E N D
Specifikāciju valodu pamati Kursa saturs, ievada piezīmes
“Specifikācija” Sistēmas specifikācija – sistēmas īpašību apraksts Sistēma – esoša vai projektējama Sistēma – programmatūra vai “dzelži” (vai vēl cita) Dažādas specifikācijas vienai sistēmai: • Darbības specifikācija, dizaina specifikācija, programmas specifikācija • Prasību specifikācija, lietotājam kritisku īpašību uzskaitījums • Izpildāma specifikācija (piem. ar interpretatoru abstraktai mašīnai) • Realizācija – arī “īpašību apraksts”. Specifikācijas – dažādiem mērķiem. Dažādas prasības pret “specifikācijām”: lasāmība, precizitāte, izpildāmība, utt. … Sistēmas specifikācija – sistēmas modelis. Vai modelis “labs”?
Vai modelis “labs” (intuitīvi)? Modelis – realitātes atspoguļojums, realitāte (lietotāja prasības pret sistēmu) – neformāla, tādēļ nevar modeļa atbilstību realitātei definēt matemātiski. Kādas prasības mēs gribam izvirzīt pret specifikāciju kā pret modeli: • Lasāmība, precizitāte, • Būtisko sistēmas īpašību atspoguļojums, • Validācijas iespēja klienta klātbūtnē (izpildāmība), • Formālas analīzes iespēja attiecībā uz noteiktām lietotājam būtiskām īpašībām, formālas verifikācijas iespēja • Augsts abstrakcijas līmenis, iespēja modeli veidot agri sistēmas izstrādes procesā, kad daudzi dizaina un implementācijas jautājumi vēl nav risināti.
Valodu izmantošana specifikācijai Specifikāciju valoda – konstrukciju sistēma specifikāciju veidošanai Dabiskā valoda - ? Nav precizitātes, daudz “trokšņa”: • viens uz tas pats jēdziens dažādās vietās izteikts dažādi (sevišķi ja jēdzienu jālieto daudzkārt nelielā teksta fragmentā) • ir daudz lietas, kas rakstītājam var šķist skaidras bez rakstīšanas • “notikums a notiek pēc notikuma b” – gan “notiek”, gan “pēc” var tikt interpretēts vairāk, nekā vienā veidā. Shematiskas diagrammas – var palīdzēt labāk strukturēt specifikāciju Bet: arī diagrammai nav pašai par sevi precīzas semantikas (nozīmes), ja to nepapildina precīzas anotācijas Formālās specifikāciju valodas: matemātiski precīzi definēta konstrukciju sintakse un semantika.
Specifikāciju valodu raksturojumi [AP98] Formalitāte – valodas konstrukcijām ir skaidra sintakse un formāla semantika. Abstrakcija – valodas spēja definēt un apstrādāt datus loģiskā līmenī, neatkarīgi no to reprezentācijas. Modularitāte – konstrukcijas specifikācijas paplašināšanai, izmantojot bagātināšanu un kompozīciju. Modelēšana – valoda piedāvā modeli sistēmas objektu un to sadarbības aprakstam. Nedeterminitāte – nedeterminētas konstrukcijas netiešai pieejai datiem un brīvai darbību izvēlei no saraksta. Izveduma sistēma – deduktīva metode, kas pēc sistēmas apraksta ļauj konstatēt vēl citas tās īpašības Temporālie aspekti – laika specifikācija un tā saistīšana ar sistēmas objektu darbību.
Specifikācijas īpašības [AP98] Tipu korektība – specifikācijā nav sintakses vai semantikas kļūdu. Pietiekama pilnība – viss, ko ir jāapraksta, ir aprakstīts ar specifikāciju valodas līdzekļiem. Precizitāte – specifikācija precīzi un akurāti attēlo sistēmas īpašības. Konsistence – specifikācija nesatur pretrunīgus apgalvojumus. Operāciju pilnība – katrai operācijai specifikācijā atbilst implementācija. Loģiskie spriedumi – pastāv iespēja izdarīt loģiskus secinājumus no specifikācijas, kas ļauj noteikt, vai noteiktas īpašības ir sekas no prasībām, kā arī to, vai prasības ir interpretētas korekti programmu dizaina izstrādē.
Formālās metodes programmatūras dzīves ciklā Formālās metodes programmbūvē [AP98]: matemātikā balstītu līdzekļu izmantošana, lai attēlotu programmatūras sistēmas būvei nepieciešamu informāciju. Līdzekļi: - specifikācijas sintaktiska un semantiska analīze- specifikācijas trasējamība (sistemātisku pārbaužu veikšana)- specifikācijas validācija un formāla verifikācija Formāla specifikācija: abstrakts un precīzs sistēmas uzvedības un īpašību apraksts. Ja ir formāla specifikācija, tad var izmantot un var neizmantot formālās metodes. Formālo metožu izmantošana: ieguvuma pret izmaksām attiecība. Faktori: aplikācijas tips, apjoms un struktūra, formalitātes līmenis, noteiktu izstrādes posmu un sistēmas komponenšu izvēle.
Formālās specifikāciju valodas: klasifikācija “Modeļbāzētas” – valoda ļauj konstruēt specificējamās sistēmas matemātisko modeli, tipiski aprakstot sistēmas stāvokļus un iespējamās operācijas (VDM-SL, Z, B). Izmanto kopu teoriju kā semantisko pamatu. “Ekvacionālas” – datu struktūru specifikācija, izmantojot vienādības. Algebriskās specifikācijas: ACT ONE, COLD-K, OBJ. Loģiskās ekvacionālās specifikācijas: Larch. Uz procesiem balstītas: process kā primitīvs paralēlu un reaktīvu sistēmu darbības aprakstam. CCS, CSP, LOTOS. Valodas darbību secības atspoguļošanai. Temporālās loģikas. Loģiskas: pirmās kārtas predikātu loģika, augstākas kārtas predikātu loģika (HOL sistēma, u.c.), tipu teorijas (sk. NUPRL sistēma, u.c.). Salīdzināt: http://www.rbjones.com/rbjpub/cs/csfm02.htm
Specifikāciju valodu pamati: studiju kurss Kursā aplūkots:- formālas specifikācijas jēdziens- virkne klasisku modeļu jeb sistēmu formālu specifikāciju uzdošanai. Tiek aplūkoti pamati: - programmu moduļu ieejas-izejas darbības specifikācijai, - modeļbāzētām un ekvacionālām valodām sistēmu formālai specifikācijai, - valodām paralēlu un reaktīvu sistēmu darbības aprakstam. Kurss būs interesants un noderīgs studentam:- kas interesējas par formālām specifikāciju valodām, kas izmantojamas programmatūras un aparatūras darbības specifikācijā, vai arī - vēlas pilnīgāk apzināties pastāvošo saikni starp matemātiskām teorijām un programmēšanas praksi, vai arī - vēlas bagātināt savu programmēšanas un sistēmu izstrādes praksi ar atziņām, kas var tikt smeltas no teorijas.
Plānotais kursa saturs A. Ievads. Specifikācijas jēdziens, piemēri. Hoara loģika. A1. Specifikācijas jēdziens. Formālas specifikācijas, to raksturojumi un izmantošana programmatūras dzīves ciklā. A2. Procedūru interfeisa (ieejas - izejas) specifikācijas loģiskā formā. Daļējā un pilnā korektība. A3. Atbilstības specifikācijai konstatēšana: Hoara loģika, cikla invarianti, cikla varianti. B. Ekvacionālās un modeļbāzētās sistēmu specifikāciju valodas B1. Konstruktīvie datu tipi. B2. Algebriskās specifikācijas. Valoda ACT ONE. OBJ saimes valodas. B3. Valoda Larch: ekvacionāli loģiskās specifikācijas. B4. Modeļbāzētās specifikāciju valodas: B, Z. Ieskats valodu Object Z, VDM-SL konstrukcijās. C. Paralēlu un reaktīvu sistēmu specifikācija C1. Paralēlo procesu teorijas pamati. Procesu algebras, valoda CCS. C2. Valoda LOTOS notikumu temporālā sakārtojuma specifikācijai. C3. Temporālās loģikas, to varianti. Temporālā loģika TLA. Automāti uz bezgalīgiem vārdiem. C4. Petri tīkli sistēmu modelēšanā. Krāsainie Petri tīkli. C5. Reālā laika automāti. Audio kontroles protokola piemērs.
Kursa prasības un informatīvais atbalsts Prasības: • Mājas darbi (aptuveni 10, vienkārši uzdevumi uz izpratni) • Referāts (8-12 lapas, tēma saskaņojama, jāatrod pašam) • Eksāmens (vienkārši teorijas jautājumi un uzdevumi). Informatīvais atbalsts: www.ltn.lv/~karlisc/stud.htm,Specifikāciju valodu pamati Kursa saturs, prasības, mājas darbi, literatūras saraksts, papildmateriāli (slaidi elektroniskā formā, norādes uz tīmekļa vietnēm) E-pasts: Karlis.Cerans@mii.lu.lv Tel. 7213716 Vieta: LU MII 421. istaba.
Specifikācijas semantika Specifikācija – “modelis”, sistēmas īpašību apraksts. Formāla specifikācija – matemātiski precīza sintakse un semantika. Sintakse – lineāra, grafiska, … Semantika - ? Piemērs: specifikācija – automāts (automātu sistēma, SDL sistēma). Automātam – noteikti darbības likumi (pārejas starp stāvokļiem). Formāla sistēma, viss matemātiski precīzi. Kādas sistēmas atbilst automātam kā specifikācijai? Vai dotā uzprogrammētā sistēma X atbilst dotajai specifikācijai A ? Automāta stāvokļu pāreju likumi neatbild uz šiem jautājumiem. “Specifikācijas semantika” specifikāciju valodai L – dod formālus kritērijus, kā noteikt, kādas implementācijas atbilst katrai valodā L rakstītai specifikācijai. Spec – specifikāciju kopa, Sys – sistēmu kopa Sat Sys x Spec – atbilstības attiecība. I Sat S – implementācija (sistēma) I atbilst specifikācijai S. Ne visas specifikāciju valodas seko šai pieejai. Tomēr jautājumu par Sat var būt labi uzstādīt konkrētās situācijās. Vienam formālam objektam (t.sk. specifikācijai) var būt vairākas semantikas. Svarīgi, lai tās būtu saskaņotas.
Specifikāciju precizējuma jēdziens Spec – specifikāciju kopa, Sys – sistēmu kopa, Sat Sys x Spec – atbilstības attiecība. I Sat S – implementācija (sistēma) I atbilst specifikācijai S. Ja izveido kopu SysPlus – paplašinātā sistēmu kopa, kurai Spec, Sys SysPlus, un definē tajā Ref SysPlus x SysPlus, ar īpašībām:ja I Sys un S Spec, tad I Sat S I Ref S, Ref ir refleksīva un tranzitīva, tad Ref ir precizējuma (refinement) attiecība. Ja ir pieejama attiecība Ref, tad iespējamas metodoloģijas, kas atļauj iegūt I Sys no S Spec, lai I Sat S pakāpenisku transformāciju rezultātā, veidojot virkni: S = S0, S1, S2, … , Sn = I, kur Si SysPlus un i Si+1 Ref Si. Ja papildus tam Ref ir kompozicionāla: S Ref T C(S) Ref C(T) noteikta veida konteksta informācijas pievienošanas operatoriem C(piemēram S|X Ref T|X),tad katru no soļiem Si+1 Ref Sivar veikt atsevišķā sistēmas komponentē. Tipiski I un S būs sintaktiski pierakstītas dažādās valodās. Attiecība Ref veidojama kā attiecība starp I un S semantiskajiem objektiem. Izstrādes rezultātā, protams, I būs jāapmierina arī citas īpašības, ne tikai I Sat S.
Procedūru i / o specifikācijas: programmas Pieņēmumi:Dota kopa Data – datu vērtību universsDota kopa Types – datu tipu kopa: T Types: T Data; d Data T Types: d T Programma (procedūra): viss datu ievads sākumā, viss datu izvads beigās. Katrai programmai P galīga interfeisa mainīgo kopa ExtVar(P), x ExtVar(P) : TP(x) Types – katram mainīgajam ir tips. Programmas i/o stāvoklis (sākuma stāvoklis, beigu stāvoklis):: ExtVar(P) Data,x ExtVar(P) : (x) TP(x) ExtState(P) – visu šādu iespējamo stāvokļu kopaExtState(P)Fun(ExtVar(P), Data) Programmu raksturo ExtVar(P), TP, kā arī sekojoši 2 predikāti: P ExtState(P) x ExtState(P) : (, ’) P, ja programma, sākot darbu stāvoklī , var tā strādāt, ka pabeidz darbu stāvoklī ’. Rakstam P ’. P ExtState(P) : P, ja programma, sākot darbu stāvoklī , noteikti apstājas, sasniedzot beigu stāvokli. Definējam P= ExtState(P) \ P. Prasība: ( P ) ( ’ ExtState(P) : (, ’) P ).
Procedūru i / o specifikācijas: programmas (2) Programma (semantiski): P = ( ExtVar(P) , TP , P , P). P ir determinēta, ja: (1) ExtState(P) : ( P ’ P ’’) (’=’’) un (2) , ’ ExtState(P) : ((, ’) P ) ( P ) Determinētai programmai: ( P ) ( ’ ExtState(P) : (, ’) P ). Piemērs: while not ( x = y ) do if ( x < y ) then y := y – x else x := x – y fi od ExtVar(P) = {x,y} , TP (x) = TP (x) = Int P , P – definē programmēšanas valodas semantika Piemēram: <6,9> P <3,3>, <2,0> P , <2,-1> P . (Attēlojam , kam (x) = a un (y) = b kā <a,b>).
Specifikāciju valoda Programma (semantiski): P = ( ExtVar(P) , TP , P , P). Specifikācijas: S = <Var, T | p, q>Var – mainīgo kopa, x Var: T(x) Types, p,q – apgalvojumi par stāvokļiem (noteiktā loģiskā valodā), |= p. “Stāvokļa loģika”, formulas (PVar):Termi: t ::= c Data | X LVar | x PVar | f (t1, …, tn)Predikāti: r(t1,…, tn)Formulas: p :: = r | p1 | p1 p2 | p1 p2 | p1 p2 | X.p1 | X.p1 … x PVar: T(x) Types; X LVar: T(X) Types T(f) = T1 x … x Tn T0, i Ti Types, T(ti) = Ti ( T ( f(t1,…,tn) ) definē kā T0). T( r(t1,…, tn) ) = T(t1) x … x T(tn) {0,1} f – fiksēta funkcija (piemēram, “+”), r – fiksēts predikāts (piemēram,“<“). Formulas piemērs: p == (x + 5 < X - 7). Lai zinātu p patiesuma vērtību, jāzina, cik ir x un cik ir X. : PVar Data, I : LVar Data, ,I |= p – apgalvojums p ir patiess stāvoklī , ja (loģisko) parametru vērtības ir I.
Daļējā korektība Programma (semantiski): P = ( ExtVar(P) , TP , P , P). Specifikācija: S = <Var, T | p, q> , formulas (Var). Formulas patiesums: I : LVar Data, : Var Data: ,I |= p , ,I |= q (?) P Sat1 S: (1) ExtVar(P) = Var, x ExtVar(P): TP (x) = T(x) (2) I: ( ,I |= p ) ( P ’) ( ’,I |= q ) Ja p ir spēkā sākuma stāvoklī, un ja programma apstājas, tad q ir spēkā beigu stāvoklī. P ir “daļēji korekta” attiecībā pret S. Saīsināti raksta: {p} P {q}. { i = 5 } r := 1; while not (i = 0) do r := i * r; i := i - 1 od { r = 120 } { i = N N 0 } r := 1; while not (i = 0) do r := i * r; i := i - 1 od { r = N! } { i = -3 } r := 1; while not (i = 0) do r := i * r; i := i - 1 od { r = 17 }
Pilnā korektība Programma (semantiski): P = ( ExtVar(P) , TP , P , P). Specifikācija: S = <Var, T | p, q> , formulas (Var). Formulas patiesums: I : LVar Data, : Var Data: ,I |= p , ,I |= q (?) P Sat2 S: (1) ExtVar(P) = Var, x ExtVar(P): TP (x) = T(x) (2) I: ( ,I |= p ) (( P ) ’ ( P ’) ( ’,I |= q )) Ja p ir spēkā sākuma stāvoklī, tad programma noteikti apstājas, un q ir spēkā beigu stāvoklī. Determinētām programmām(2) var pārrakstīt kā: I: ( ,I |= p ) (’: ( P ’) ( ’,I |= q )). Viena specifikācija, divas semantikas: M1 [[S]] = {P | P Sat1 S} M2 [[S]] = {P | P Sat2 S} Piezīme: Nosacījumā (1) ExtVar(P) = Var var aizstāt ar ExtVar(P) Var . Piezīme:Specifikācijā var ieviest vēl papildus komponenti Mod Var un prasīt, lai programma nemaina tos mainīgos, kas ārpus Mod. Nākamā reize: kā pārliecināties, vai P Sat1 S, P Sat2 S ?