1 / 28

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

Download Presentation
## Schemas in Z

**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.
Content is provided to you AS IS for your information and personal use only.
Download presentation by click this link.
While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.
During download, if you can't get a presentation, the file might be deleted by the publisher.

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

More Related