specifik ciju valoda vdm n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Specifikāciju valoda VDM PowerPoint Presentation
Download Presentation
Specifikāciju valoda VDM

Loading in 2 Seconds...

play fullscreen
1 / 18

Specifikāciju valoda VDM - PowerPoint PPT Presentation


  • 216 Views
  • Uploaded on

Specifikāciju valoda VDM. Specifikāciju valodu pamati. VDM: ievada piezīmes. VDM: modeļbāzēta sistēmu specifikācijas valoda (analoģiski kā B un Z), sistēma tiek aprakstīta kā abstrakta mašīna ;

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Specifikāciju valoda VDM' - cain-wilson


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
specifik ciju valoda vdm

Specifikāciju valoda VDM

Specifikāciju valodu pamati

vdm ievada piez mes
VDM: ievada piezīmes
  • VDM: modeļbāzēta sistēmu specifikācijas valoda (analoģiski kā B un Z), sistēma tiek aprakstīta kā abstrakta mašīna;
  • VDM - plašāks līdzekļu kopums, VDM-SL: specifikāciju valoda, agrāk pazīstama kā META-IV; šeit VDM un VDM-SL - sinonīmi;
  • VDM 2 pamata virzieni: programmēšanas valodu semantika, vispārēja specifikāciju valoda (šeit - otrais virziens)
  • Sistēmas stāvoklis VDM: kopu teorijas terminos – t.s. datu reprezentācijas abstrakcija VDM;
  • Pamata datu strukturizācijas līdzekļi:
    • kompozītie objekti (ierakstu analogi), kopas, attēlojumi, virknes
  • Operācijas VDM: uzdotas ar sākuma un beigu nosacījumiem (netiek fiksētas algoritmiskās realizācijas detaļas) – t.s. operāciju abstrakcija VDM;
  • Algoritmiskā un datu refinement (reification) – detalizācijas aspekti;
  • Spriedumu veikšana: LPF - Logic of Partial Functions, loģika ar vairāk, nekā 2 vērtībām: (true, false, undefined);
  • VDM-SL: pastāv ISO standarts
  • Literatūra: sk. Specification of Software Systems (Alagar, Periyasamy), pieejama bibliotēkā. Pieejama arī cita literatūra (sk. kursa mājas lapa, resursi tīmeklī).
vdm specifik cijas strukt ra
VDM: specifikācijas struktūra

Specifikācijas struktūra: bloki, nav jābūt uzdotiem noteiktā kārtībā:

types< tipu definīcijas > Valodā ir iebūvēti tipi, un arī iespēja lietotājam definēt tipus

values< vērtību definīcijas > Iespējams definēt konstantes

state < stāvokļa vārds > of Stāvoklis definē globālo mainīgo telpu, < stāvokļa definīcija > globālie mainīgie izmantoti operācijās

end

functions< funkciju definīcijas >

operations Operācijas ir līdzīgas funkcijām, bet papildus < operāciju definīcijas > var lasīt un izmainīt stāvokļu komponentes (globālos mainīgos).

Tālāk var runāt arī par specifikāciju strukturizāciju moduļos, apskatot moduļu interfeisus, u.c. – sk. Cliff Jones, Systematic Software Development Using VDM,mazliet moduļa elementus redzēsim piemērā.

vdm tipu sist ma
VDM: tipu sistēma

Tipi valodā VDM: 1) Vienkāršie tipi: a) Primitīvie tipi: Z, N, N1, R, Q, B, char, tokentoken – sanumurējams dažādu vērtību kopums, iekšējā reprezentācija netiek fiksēta (tā var tikt izvēlēta vēlāk implementācijas laikā).b) Konstanšu tipi (Quote types):SARKANS – izteiksme, kas apzīmē gan tipa nosaukumu, gan arī vienīgo vērtību šajā tipā (rakstam izteiksmes ar visiem lielajiem burtiem).

2) Saliktie tipi:a) Tipu apvienojums: T = T1 | T2 | … | Tnb) Kopas tipi. Kopu uzdošana: - ar uzskaitījumu: {1,2,3,4,5,6,7,8,9}, - ar predikātu { n  N | n mod 2 = 0 }, - P-set – kopa, kas sastāv no visām galīgajām P tipa objektu kopām.c) Virknes: T*, T+ - visas un netukšās virknes ar elementiem no tipa T[‘a’, ‘e’, ‘i’, ‘o’, ‘u’], [ n  3 | n  {3,2,1} ]  [1, 8, 27]d) Dekarta reizinājumiT1  T2 …  Tn elementi – korteži: mk-(x,y)

vdm tipu sist ma turpin ts
VDM: tipu sistēma (turpināts)

Tipi valodā VDM:

1) Vienkāršie tipi: …

2) Saliktie tipi:…

e) Attēlojumu (galīgo funkciju) tipi: D m R, D – definīcijas tips, R – vērtību tipsX = {1,2,3}, Y = {1,8,27}M1 = { 1  1, 2  8, 3  27}M2 = { n  m | n X  m Y  m = n3 }Operācijas: dom, rng, M-1, , † (pārdefinēšana),  (kompozīcija), () - aplikācija, <| - def. apg. sašaurināšana, <-| - izslēgšana no def. apg., |>, |->

f) Ierakstu (kompozītie tipi), sk. nākamo slaidu

g) Funkciju tipi: F: N  N , tad ( n:N  n * 2)  F. Funkcijas: - nevar būt kā parametri / vērtības operācijām (bet var būt funkcijām), - nevar būt kā elementi kopās un attēlojumos, - tās nevar būt kā stāvokļu komponentes vai lokālie mainīgie, - tām nav definēta vienādība.

ierakstu tips valod vdm
Ierakstu tips valodā VDM

Ierakstu (kompozīto objektu) tips: T :: v1 : T1 v2 : T2 … vn : Tn

Piemērs: Datec :: year: N day: {1,…,31}

Pilnais pieraksts: Datec = compose Datec of year: N day: {1,…,366}end

Konkrētu Datectipa objektu iegūst ar mk-Datec(x,y), x, y var būt konstantes, mainīgie, izteiksmes.

Šādi veidotam objektam var lietot selektorus:mk-Datec(x,y).year = x, mk-Datec(x,y).day = y

Kompozīta objekta komponentes modificēšana:

Ja dt = mk-Datec(2014,14), tad  (dt, day 317) = mk-Datec(2014,317), (dt, year 2004) = mk-Datec(2004,14)

Uzmanību: simbolamvalodās VDM un Z ir atšķirīga, pilnīgi cita nozīme!!!

ierakstu tipi invarianti
Ierakstu tipi: invarianti

Ierakstu (kompozīto objektu) tips: T :: v1 : T1 v2 : T2 … vn : Tn

Piemērs: Datec :: year: {1900,…,2099} day: {1,…,31}

Funkcija:

garaisgads {1900,…,2099}  B

garaisgads(x)  if (x mod 4) = 0 and not (x = 1900) then false else true

Invariants:inv-Datec(mk-Datec(x,y))  garaisgads(x)  y  365

Raksta saīsināti: Datec :: year: {1900,…,2099} day: {1,…,31} inv(mk-Datec(x,y))  garaisgads(x)  y  365

funkciju un oper ciju defin cijas
Funkciju un operāciju definīcijas

Funkcijas un operācijas tiek izmantotas, lai no ieejas datu vērtībām iegūtu izejas datu vērtības. Papildus tam operācijas var lasīt un modificēt globālos mainīgos (stāvokļu komponentes).

Divu veidu definīcijas funkcijām un operācijām:

1. Tiešas definīcijas:

f: t1 t2 …  tn t - funkcijas tips f(p1, p2, …, pn)  E - izteiksme pre B - izpildāmības (sākuma) nosacījums (neobligāts)Operācijām:op: t1 t2 …  tno t - operācijas tips f(p1, p2, …, pn)  St - operators (sk. vēlāk) pre B - izpildāmības (sākuma) nosacījums (neobligāts)

2. Netiešas (implicītas) definīcijas:

Funkcijām: fun (p1: t1, p2: t2, …, pn: tn)  p: tpre B - sākuma nosacījumspost B’ - beigu nosacījums

find (S: X+, x:X) result : Npre card elems S = len Spost (i{1, …, len(S)}  S(i) = x)  result = i  ( i{1, …, len(S)}  S(i) = x)  result = 0

implic to oper ciju not cija
Implicīto operāciju notācija

LOAD (i: N) SHOW() r: N DIVIDE(d: N) r: Nextwr reg: N ext rd reg: N ext wr reg: Npost reg = i post r = reg pre d  0post d*r+reg=reg  reg<d

LOAD – ielādē ieejas parametra i vērtību stāvokļa komponentē reg

SHOW – izvada stāvokļa komponenti reg izejas mainīgajā r

DIVIDE – dala stāvokļa komponenti reg ar ieejas mainīgo d, dalījums ievietots izejas mainīgajā r, atlikums – stāvokļa komponentes reg jaunā vērtība.

Vispārējais operāciju formāts (bez kļūdu apstrādes):

OP(p: Tp) r: Trext rd u: Tu,wr v: Tvpre .. p .. u .. v .. post .. p .. u .. v .. r .. v ..

ext – ārējo mainīgo kopa, kas pieejami šai programmai

ext rd – mainīgie, kuru vērtības programma var lasīt

ext wr – mainīgie, kuru vērtības programma var lasīt un modificēt

pre – operācijas sākuma nosacījums

post – operācijas beigu nosacījums, saista sākuma un beigu vērtības (sākuma vērtības apzīmētas ar dekorāciju , beigu vērtībām nav dekorācijas).

Ievērojam, ka funkcijām nebija vajadzīga sākuma vērtības apzīmējošā dekorācija.

vienk r s piem rs
Vienkāršs piemērs

typesPerson = token

state Registrs ofemployed: Person -setunemployed: Person -setinv mk-Registrs(e, u)  e  u = {}init mk-Registrs(e, u)  e = {}  u = {}

end

operations

register (p: Person)ext wr unemployed: Person -set rd employed: Person -setpre p unemployed  p employed post unemployed = unemployed  {p}

change-status (p: Person)ext wr unemployed: Person -set wr employed: Person -setpre p  unemployed post unemployed = unemployed \ {p}  employed = employed  {p}

vdm da ji defin to funkciju lo ika lpf
VDM: daļēji definēto funkciju loģika (LPF)

Vai apgalvojums "(5/0 = 17)  (5/0 = 17)" ir patiess?

Loģikā LPF - 3 patiesuma vērtības: true, false,  (nedefinēts)

Nav spēkā arī t.s. "dedukcijas teorēma": no E1 E2 neseko  E1  E2.

Ja E1 E2 , tad seko, ka (E1) E1  E2.

(E1) – izteiksme E1 ir definēta.

Klasiskās loģikas tautoloģijas ir spēkā, ja zināms, ka izteiksmes ir definētas.

piem rs rel ciju datu b ze
Piemērs: relāciju datu bāze

module NDB -- Sk. Understanding differences between VDM and Z

parameters

types Value, EsetNm, RNm: Triv

exports operations ADDES, ADDENT, ADDREL, ADDTUP, DELES, DELENT, DELREL, DELTUP

definitions

defined types

Eid = token

MapTp = {OneOne, OneMany, ManyOne, ManyMany}

Tuple :: fv : Eid

tv : Eid

Relation = Tuple -set

Rinf :: tp : MapTp r : Relation

inv (mk-Rinf(tp,r)))  arity-match(tp,r)

Rkey :: nm : RNm

fs : EsetNm

ts : EsetNm

rel ciju datu b ze st voklis
Relāciju datu bāze: stāvoklis

Tuple :: fv : Eid Relation = Tuple -set

tv : Eid

Rinf :: tp : MapTp r : Relation

inv (mk-Rinf(tp,r)))  arity-match(tp,r)

Rkey :: nm : RNm fs : EsetNm ts : EsetNm

state

Ndb :: esm : EsetNm -m-> Eid-set

em : Eid -m-> Value

rm : Rkey -m-> Rinf

inv (mk-Ndb(esm, em, rm)) dom em = rng esm rk dom rm  {rk.fs, rk.ts} dom esm 

mk-Tuple(fv,tv)  rm(rk).r  fv  esm(fs)  tv  esm(ts)

init (ndb)  ndb = mk-Ndb({},{},{})

initvarēja pierakstīt arī kāinit (mk-Ndb(esm, em, rm))  esm={}  em={}  rm={}

rel ciju datu b ze funkcijas
Relāciju datu bāze: funkcijas

Tuple :: fv : Eid Relation = Tuple -set

tv : Eid

Rinf :: tp : MapTp r : Relation

inv (mk-Rinf(tp,r)))  arity-match(tp,r)

Rkey :: nm : RNm fs : EsetNm ts : EsetNm

defined functions

arity­match(tp, r) 

(tp = OneMany t1, t2 r  t1.tv = t2.tv  t1.fv = t2.fv) 

(tp = OneMany t1, t2 r  t1.fv = t2.fv  t1.tv = t2.tv) 

(tp = OneMany t1, t2 r  t1.tv = t2.tv  t1.fv = t2.fv)

rel ciju datu b ze oper cijas
Relāciju datu bāze: operācijas

defined operations

ADDES (es : EsetNm)

ext wr esm : EsetNm -m-> Eid-set

pre es dom esm

post esm = esm  {es  {}}

DELES (es : EsetNm)

ext wr esm : EsetNm -m-> Eid-set

rd rm : Rkey -m-> Rinf

pre es dom esm  esm(es) = {} rk dom rm • es rk.fs  es  rk.ts

post esm = { es } <-| esm

ADDENT (memb: EsetNm-set, val:Value) eid: Eid

ext wr esm : EsetNm -m-> Eid-set

wr em : Eid -m-> Value

pre memb dom esm

post eid dom em  em = em  {eid  val } 

esm = esm † { es  esm(es)  {eid} | es  memb }

rel ciju datu b ze oper cijas turpin ts
Relāciju datu bāze: operācijas - turpināts

DELENT (eid : Eid)

ext wr esm : EsetNm -m-> Eid-set

wr em : Eid -m-> Value

rd rm : Rkey -m-> Rinf

pre eid dom em  t  {ri.r | ri  rng rm } • t.fv eid  t.tv  eid

post esm = { es  esm(es) – {eid} | es  dom esm }  em = {eid } <-| em

ADDREL (rk: Rkey, tp: Maptp)

ext rd esm : EsetNm -m-> Eid-set

wr rm : Rkey -m-> Rinf

pre {rk.fs, rk.ts } dom esm  rk dom rm

post rm = rm  {rk mk-Rinf(tp,{})}

DELREL (rk: Rkey)

extwr rm : Rkey -m-> Rinf

pre rk dom rm  r(rm(rk)) = {}

post rm = {rk} <-| rm

rel ciju datu b ze oper cijas turpin ts 2
Relāciju datu bāze: operācijas – turpināts (2)

ADDTUP (fval, tval: Eid, rk: Rkey)

extrd esm : EsetNm -m-> Eid-set

wr rm : Rkey -m-> Rinf

pre rk dom rm  let mk-Rkey(nm,fs,ts) = r in

let mk-Rinf(tp,r) = rm(rk) in

fval  esm(fs)  tval  esm(ts)  arity-match(tp, r mk-Tuple(fval,tval))

post rm = rm † { rk (rm(rk), r r (rm(rk)) - { mk-Tuple(fval,tval)})

DELTUP (fval, tval: Eid, rk: Rkey)

ext wr rm : Rkey -m-> Rinf

pre rk dom rm

post let ri = (rm(rk), r r (rm(rk)) - { mk-Tuple(fval,tval)}) in

rm = rm † { rk  ri }

endmodule NDB

vdm algoritmisk detaliz cija
VDM: algoritmiskā detalizācija

Aprakstam specifikāciju un implementāciju kā VDM operācijas (tipiski – specifikāciju kā netiešu operāciju, implementāciju – kodētu atklātā veidā).

Detalizācijas (refinement) attiecība starp VDM operācijām: op1  op2 nozīmē, ka op2 ir “vairāk detalizēta” (tuvāka implementācijai).

Daži likumi attiecībā uz , ko var izmantot, transformējot specifikācijas par programmām ( apzīmēts kā 0):

1. Ja P[w0/w]  w=E [w0/w]  Q, tad Piešķiršanas operatora likums

ext wr w rd r pre P post Q  w:=E

2. ext wr w rd r pre P post Q Zarošanās operatora likums

if c thenextwr w rd r pre Pc post Q elseext wr w rd r pre Pc post Q

3. ext wr w rd r pre P post inv b 

ext wr w rd r pre P post inv ; while b do Cikla operatora likums

ext wr w rd r pre b  inv post inv  (0  V < V [w0/w] ) end

4. ja P  P' un P[w0/w]  Q'  Q, tad Nosacījuma pavājināšanas likums ext wr w rd r pre P post Q ext wr w rd r pre P' post Q'

5. ext wr w rd r pre P post Q ext wr w, xrd r pre P post Q  x0 = x