320 likes | 495 Views
Schemas in Z. Chapter 6 in Potter Sinclair and Till. Schemas. Z’s main representational mechanism of structure and functions. Example: initialStock: Stock # initialStock < maxlines i :ITEM; n : N | (i,n) e initalStock / n < 100 stockItem : P ITEM
E N D
Schemas in Z Chapter 6 in Potter Sinclair and Till SWE 623: Fall 2002
Schemas • Z’s main representational mechanism of structure and functions. • Example: initialStock: Stock # initialStock < maxlines i :ITEM; n : N | (i,n)einitalStock /\ n<100 stockItem : P ITEM stockItems = dom initialStock SWE 623: Fall 2002
Schemas Describing Abstract States Account Opened Regular Withdrawal AuthorizedWithdrawal Account in Good Standing AccountOverdrawn Overdraft Paid Off Deposit Account closed SWE 623: Fall 2002
Schemas Describing Abstract States Example 1: BankAccount 1 total, minBalance: R ` total > minBalance Example 2: BankAccount 2 total, minBalance: R ` inGoodStanding: BOOLEAN inGoodStanding (total > minBalance) SWE 623: Fall 2002
Schemas Describing Operations BankAccount with Operations total, minBalance: R withdraw : R BOOL overDraft: R x BOOL R total > minBalance x?:R;out!:Bool. [total – x? < minBalance => out! = withdraw(x?)/\out! = TRUE /\ total’ = total-x] \/[total – x? > minBalance => out! =FALSE /\ out! = withdraw(x?)/\ total’ = total ] SWE 623: Fall 2002
Schema Calculus: Operations on Schemas • Schemas can be built from other schemas. • Schema calculus has some operations on schemas to build new schemas from the old. • Operations: • Inclusion • Decoration • Disjunction • Conjunction • Negation • composition SWE 623: Fall 2002
Inclusion - 1 BankAccount with Operations Bank Account 1 Bank Overdraft Where Bank Overdraft can be defined separately SWE 623: Fall 2002
Inclusion - 2 Bank Regular Withdraw total, minBalance: R withdraw : R BOOL overDraft: R x BOOL R total > minBalance x?:R;out!:Bool. [total – x? < minBalance => out! = withdraw(x)/\out! = TRUE /\ minBalance’ = minBalance-x?] \/[total – x? > minBalance => out! =FALSE /\ out! = withdraw(x?)/\ total’ = total ] SWE 623: Fall 2002
Decoration • Adding ?, ! And ‘ to variables is referred to as decoration. • Can use ‘ for schemas themselves. • Example: Double Min Balance Bank Account, Bank Account’ doubleMinBalance: R R monBalance’ = 2*minBalance SWE 623: Fall 2002
Full Expansion of a Decorated Schema • Replace primed entities by their definitions Double Min Balance total, total’, minBalance, minBalance’ :R doubleMinBalance : R R total > minBalance /\ total’ > minBalance’ SWE 623: Fall 2002
Schema Disjunction • Want to specify define two cases separately and state that they are two cases of the same “thing”. • Example: • Bank WithdrawCash = Bank RegularWithdraw \/ Bank Overdraft • Bank Regular Withdraw defined earlier SWE 623: Fall 2002
Schema Disjunction - 2 Bank Overdraft Bank Account 1, Bank Account 1’ overdraft : R x BOOL BOOL x?: R, approve?: BOOL x?:R;out!:Bool. [approve? => (out! /\ total’=total-x?) total’ = total-x?] \/[not approve? => (not out! /\ total’=total)] SWE 623: Fall 2002
Schema Conjunction • When one schema can be written specified as “two specifications” • Results in taking the conjunction of both constraints • Example: Bank Overdraft = sendMessage/\adjustBalance SWE 623: Fall 2002
Schema Conjunction - 2 send Message Bank Account 1, Bank Account 1’ overdraft : R x BOOL BOOL x?: R, approve?: BOOL x?:R;out!:Bool. [approve? => out! /\total’=total-x?)] \/[ approve? => ( out! /\ total’=total)] SWE 623: Fall 2002
Schema Conjunction - 3 Adjust Total Bank Account 1, Bank Account 1’ overdraft : R x BOOL BOOL x?: R, approve?: BOOL x?:R;out!:Bool. [approve? => out! /\ total’ t=total-x?] \/[ approve? => ( out! /\ total’=total)] SWE 623: Fall 2002
Schema Negation Example 1: BankAccount 1 total, minBalance: R ` total > minBalance Bad bank Account = = Bank Account 1 Bad BankAccount total, minBalance: R (total > minBalance) SWE 623: Fall 2002
Schema Hiding Operations • Used to hide some variables and declarations of already known schemas. • Use to hide variables. • Format • [Decs | Pred] \ Hidden variables • [Reduced Decs | Hidden Decs . Predicate] SWE 623: Fall 2002
Schemas Hiding Example -1 BankAccount with Operations total, minBalance: R withdraw : R BOOL overDraft: R x BOOL R total > minBalance x?:R; app?out!:Bool. [total – x? < minBalance=>out! = overDraft x?, app? /\out! /\ total’ = total-x] \/[total – x? < minBalance => out! =FALSE /\ out! = overDraft(x?,app?)/\ total’=total] SWE 623: Fall 2002
Schemas Hiding Example -2 BankAccount with Operations total, minBalance: R withdraw : R BOOL overDraft: R x BOOL R total > minBalance x?:R; app?out!:Bool. [total – x? < minBalance=>out! = overDraft x?, app? /\out! /\ total’ = total-x] \/[total – x? < minBalance => out! =FALSE /\ out! = overDraft(x?,app?)/\ total’=total] SWE 623: Fall 2002
Schema Composition • Recall that function composition: • If f : S1 -> S2 and g: S2 -> S3 then • fog : S1 -> S3 • Schema Composition imports this idea to schemas. • Example: Consider overdrawn bank account • To close account: • Must pay up to minimum balance • Then close account from account in good standing SWE 623: Fall 2002
Schema Composition Method • Replace primed variables (‘)in first schema with double primed variables (“) S[“/’] • Replace un-primed variables in second schema with double primed variables (“) T[‘/] • Existentially quantify variables in double primed state (“) State” . S[“/’]/\T[“/] SWE 623: Fall 2002
Schema Composition Example -1 toGoodStanding D Bank Account 1 toGoodStanding: R -> NULL total < minBalance x?:R ( x+total > minBalance) => total’ = total + x? SWE 623: Fall 2002
Schema Composition Example -2 closeInGoodStanding D Bank Account 1 close: BOOL -> R total > minBalance x?:BOOL, return!:R ( total>minBalance) => return!=total /\ total’=0 closeFromDefault = toGoodStanding o closeFromGoodStanding SWE 623: Fall 2002
Schema Composition Example -3 closeFromDefault D Bank Account 1 close: BOOL -> R Bank Account” x?: R toGoodStanding x /\ close true return’ SWE 623: Fall 2002
Schema Preconditions • Applicable only to schemas representing operations • Pre Op = = State’; Out! . Op • Means that the schema should be applied to those state that result in the given predicate satisfies in the post state. • Here: Op is the operation SWE 623: Fall 2002
Schema Precondition Example Simple x,y: N x < y NonEndPoint D Simple; Z!:N x < x’ < z! < y’ < y SWE 623: Fall 2002
Constructing pre NonEndPoint preNonEndPoint Simple x’,y’,z!: N x < x’ < z < y’ < y Can simplify the statement x’,y’,z!: N x < x’ < z < y’ < y to x+3 < y SWE 623: Fall 2002
Schema Types • A way to record data types by specifying filed and their types of a structure. • Example Book title, author, isbn, publisher : String Pubdate, pages: Z slength title < 80, slength author < 80, (checksum isbn) mode 11 = 0 O < pages /\ 1800 < pubdate < 2050 SWE 623: Fall 2002