11.10.2013 Views

Slides Part 2 (OOA, pages 1-128, pdf, 4 slides per page)

Slides Part 2 (OOA, pages 1-128, pdf, 4 slides per page)

Slides Part 2 (OOA, pages 1-128, pdf, 4 slides per page)

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

EXAMPLE: BANK<br />

Life-Cycle Bank system:<br />

Openacc;(Transaction|Query|Openacc) ∗<br />

Openacc = OpenaccNC | OpenaccKC<br />

Query = query balance;#current balance<br />

Transaction = deposit money | Withdrawal<br />

OpenaccNC = open new customer account;<br />

(Schufaquery|#customer already known)<br />

OpenaccKC = open known customer account;<br />

(#account opened|#account not opened)<br />

Withdrawal = withdraw money;<br />

(#give money|#no cover)<br />

Schufaquery = #schufa query;<br />

(credit worthiness ok; #account opened)<br />

|(credit worthiness not ok;<br />

#account not opened)<br />

117<br />

LIFE-CYCLE MODEL AS STATE MACHINE<br />

➠ System o<strong>per</strong>ations as events<br />

➠ Output events as actions<br />

➠ Transitions between states: event / action<br />

Example: life-cycle of an account<br />

2<br />

1<br />

no account<br />

3<br />

5<br />

no account<br />

Schufa<br />

queried<br />

1: open_known_customer_account / #account_not_opened<br />

2: open_new_customer_account / #customer_arlready_known<br />

3: open_new_customer_account / #schufa_query<br />

4: open_known_customer_account / #account_opened<br />

5: credit_worthiness_not_ok / #account_not_opened<br />

4<br />

6<br />

119<br />

account<br />

without<br />

deposit<br />

7<br />

7<br />

8<br />

account<br />

with<br />

deposit<br />

7: query_balance / #current_balance<br />

8: deposit_money<br />

9: withdraw_money / #give_money<br />

10: withdraw_money / #no_cover<br />

8<br />

6: credit_worthiness_ok / #account_opened<br />

9<br />

10<br />

PROBLEM<br />

We can only express that some account must be opened before a transaction<br />

or query can take place. We cannot express that before a transaction or query<br />

on account X can take place, X must have been opened before.<br />

Alternative: Describe life-cycle of specific objects.<br />

Example: Lifecycle Account: Open | n Open<br />

Open = NewAcc; (query balance;#current balance) ∗ ;<br />

deposit money; (Transaction|Query) ∗<br />

n Open = (open new customer account;#schufa query<br />

credit worthiness not ok;#account not opened)<br />

|(open new customer account;#customer already known)<br />

|(open known customer account;#account not opened)<br />

NewAcc = open new customer account;#schufa query;<br />

credit worthiness ok;#account opened |<br />

open known customer account;#account opened<br />

LIFE-CYCLE MODEL FOR INSURANCE AGENCY<br />

Summary of system o<strong>per</strong>ations and their output events:<br />

118<br />

Upd = update product;#product updated<br />

EntCDat = enter c data;#c data entered<br />

Query = c data present?;<br />

(#c data present!|#c not data present!)<br />

Offer = prepare offer;#offer prepared<br />

Appl = prepare application;<br />

(#check application || #application prepared)<br />

Acc = application accepted;#contract prepared<br />

NAcc = application not accepted;#contract not prepared<br />

Chg = change contract;#confirm change<br />

ChY = change confirmed;#contract changed<br />

ChN = change not confirmed;#contract not changed<br />

120

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!