Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:miw:miw08_ardcase_cs:bankomat [2008/05/19 18:23] miw |
pl:miw:miw08_ardcase_cs:bankomat [2019/06/27 15:50] (aktualna) |
====== Introduction ====== | ====== Introduction ====== |
Celem niniejszego opracowania jest próba zamodelowania bankomatu w ARD/XTT bazując na wiedzy ogólnej na temat budowy i zasady działania, oraz korzystania z bankomatu, dostępnych dokumentacjach, a przede wszystkim modelach UML systemu. Do stworzenia modelu, należy bazując na modelu UML wyszczególnić iterakcje pomiędzy zewnętrzem, a modelowanym systemem, wyodrębnienić wejścia i wyjścia modelowanego systemu (IMHO może to być zależne od przypadku użycia), następnie próba specyfikacji elementów wiedzy (w postaci atrybutów), na podstawie której działa system, oraz odnalezienia i opisania za pomocą zdefiniowanych atrybutów reguł według jakich działa system. | Celem niniejszego opracowania jest próba zamodelowania bankomatu w ARD/XTT bazując na wiedzy ogólnej na temat budowy i zasady działania, oraz korzystania z bankomatu, dostępnych dokumentacjach, a przede wszystkim modelach UML systemu. Do stworzenia modelu, należy bazując na modelu UML wyszczególnić iterakcje pomiędzy zewnętrzem, a modelowanym systemem, wyodrębnienić wejścia i wyjścia modelowanego systemu (IMHO może to być zależne od przypadku użycia), następnie próba specyfikacji elementów wiedzy (w postaci atrybutów), na podstawie której działa system, oraz odnalezienia i opisania za pomocą zdefiniowanych atrybutów reguł według jakich działa system. |
| |
| |
==== Wybrany przykład: ==== | ==== Wybrany przykład: ==== |
P1: [[http://www.emn.fr/x-info/jroyer/cashpoint.pdf|Another quite good documented Cashpoint Model]] {{:pl:miw:miw08_ardcase_cs:cashpoint.pdf|local copy}} | P1: {{:pl:miw:miw08_ardcase_cs:cashpoint.pdf|Another quite good documented Cashpoint Model <local copy>}} |
| |
== Pozostałe przykłady == | == Pozostałe przykłady == |
P2: [[http://cis.paisley.ac.uk/mcmo-ci0/SoftDev/Text/UML%20QuickGuide.pdf|Quite good documented Cashpoint Model]] {{:pl:miw:miw08_ardcase_cs:uml_quickguide.pdf|local copy}} | P2: {{:pl:miw:miw08_ardcase_cs:uml_quickguide.pdf|Quite good documented Cashpoint Model <local copy>}} |
| |
P3: [[http://www4.in.tum.de/lehre/da/DA_Wimmel.ps.gz|One more Cashpoint Model]] {{:pl:miw:miw08_ardcase_cs:da_wimmel.ps.ps|local copy}} | P3: {{:pl:miw:miw08_ardcase_cs:da_wimmel.ps.ps|One more Cashpoint Model <local copy>}} |
| |
==== Uzasadnienie wyboru i porównanie ==== | ==== Uzasadnienie wyboru i porównanie ==== |
| |
Elementy wiedzy: Akcja wybrana przez użytkownika (dziedzina: saldo/wyplata), wpisany pin (dziedzina 0000-9999), uwierzytelnianie, saldo, pożądana kwota, czy istnieje możliwość wypłaty, czy bankomat posiada środki. | Elementy wiedzy: Akcja wybrana przez użytkownika (dziedzina: saldo/wyplata), wpisany pin (dziedzina 0000-9999), uwierzytelnianie, saldo, pożądana kwota, czy istnieje możliwość wypłaty, czy bankomat posiada środki. |
| |
| |
| |
| |
Jeśli akcją jest wypłata to pozostałe reguły. | Jeśli akcją jest wypłata to pozostałe reguły. |
| |
Jeśli dobry PIN -> kontynuacja | Jeśli dobry PIN -> kontynuacja |
| |
Jeśli zły -> druga próba ; Jeśli dobry -> Kontynuacja ; Jeśli zły -> zabranie karty | Jeśli zły -> druga próba ; Jeśli dobry -> Kontynuacja ; Jeśli zły -> zabranie karty |
| |
Jeśli stan konta (+ ew.prowizja) lub karta debetowa -> (autoryzowany użytkownik posiadający środki) możliwość wypłaty | Jeśli stan konta (+ ew.prowizja) lub karta debetowa -> (autoryzowany użytkownik posiadający środki) możliwość wypłaty |
| |
Jeśli są pieniądze i możliwość wypłaty -> wyplata pieniędzy/drukowanie potwierdzenia lub stan konta dla akcji sprawdzania konta | Jeśli są pieniądze i możliwość wypłaty -> wyplata pieniędzy/drukowanie potwierdzenia lub stan konta dla akcji sprawdzania konta |
| |
Po wypłacie należy zaktualizować ilość pieniędzy w bankomacie | Po wypłacie należy zaktualizować ilość pieniędzy w bankomacie |
| |
| |
===== Analysis ===== | ===== Analysis ===== |
| |
| |
| |
===== Conceptual design ===== | ===== Conceptual design ===== |
**TBC: czy do fizycznej możliwości wypłaty (ilość dostępnych w bankomacie pieniędzy) nie powinna iść pożądana kwota, bo ten znacznik od tego zależy, ale czy moze sie zdarzyc, zeby od wybranej kwoty zależały dwie rzeczy i na ARD od kwoty odchodziły dwie zależności ; jak to zrobić w PROLOGu?** | |
| |
Poziom 0: Bankomat | Poziom 0: Bankomat |
| |
Poziom 1: Życzenia Klienta, Dane, Fizyczna Możliwość Wypłaty, Działanie bankomatu | Poziom 1: Finalizacja Bankomatu na: Opcja menu, Autentyfikaja, Czy klient dysponuje środkami, Czy bankomat posiada środki, Aktywność bankomatu |
| |
Poziom 2: Życzenia Klienta + Dane + Fizyczna Możliwość Wypłaty -> Działanie bankomatu | Poziom 2: Split (ustalenie zależności): Opcja menu -> Aktywność bankomatu, |
| Opcja menu -> Aktywność bankomatu, Autentyfikaja -> Aktywność bankomatu, Czy klient dysponuje środkami -> Aktywność bankomatu, Czy bankomat posiada środki -> Aktywność bankomatu |
| |
Poziom 3: Dane (finalizacja na:) Wprowadzona Kwota, PodanyPIN, PINwBanku, WolneSrodki, uwierzytelnienie, klient dysponuje środkami | Poziom 3: Finalizacja Autentyfikacji: Podany PIN, PINwBanku, Ilość nieudanych prób, uwierzytelnienie |
| |
Poziom 4: Wprowadzona Kwota + PodanyPIN + PINwBanku + WolneSrodki -> uwierzytelnienie + klient dysponuje środkami | Poziom 4: Split (ustalenie zależności): Podany PIN -> uwierzytelnienie , PINwBanku -> uwierzytelnienie , Ilość nieudanych prób -> uwierzytelnienie, Podany PIN -> Ilość nieudanych prób, PINwBanku -> Ilość nieudanych prób, uwierzytelnienie -> Aktywność bankomatu, Ilość nieudanych prób-> Aktywność bankomatu |
| |
Poziom 5: Działanie bankomatu (finalizacja na:) działanie bankomatu | Poziom 5: Finalizacja Czy klient dysponuje środkami na: Pożądana kwota, Wolne środki, czy klient dysponuje środkami |
| |
Poziom 6: Wprowadzona Kwota, Wolne Sroki, PodanyPIN, PINwBanku -> klient dysponuje środkami + uwierzytelnienie -> działanie bankomatu | Poziom 6: Split: Pożądana kwota -> czy klient dysponuje środkami, Wolne środki -> czy klient dysponuje środkami, czy klient dysponuje środkami -> Aktywność bankomatu |
| |
Poziom 7: Wprowadzona Kwota + Wolne Środki -> klient dysponuje środkami ; Podany PIN + PINwBanku -> uwierzytelnienie | Poziom 7: Finalizacja Aktywność bankomatu -> aktywność bankomatu |
| |
Poziom 8 i kolejne: Splity na [PodanyPIN, PINwBanku] -> [Podany PIN], [PINwBanku] oraz [WprowadzonaKwota,WolneSrodki] = [WprowadzonaKwota],[WolneSrodki] + finalizacje | Poziom 8: Finalizacja Czy bankomat posiada środki na: Ilość pieniędzy w bankomacie, (znacznik) Czy bankomat ma dostatecznie dużo środków |
| |
| Poziom 9: Split: Ilość pieniędzy -> Czy bankomat ma dostatecznie dużo środków, Czy bankomat ma dostatecznie dużo środków -> Aktywność bankomatu |
| |
| Poziom 10-17: Finalizacja Ilość pieniędzy -> ilość pieniędzy, Czy bankomat ma dostatecznie dużo środków -> czy bankomat ma dostatecznie dużo środków, Opcja menu -> opcja menu, Pożądana kwota -> pożądana kwota, Podany PIN -> podany PIN, Wolne środki -> wolne środki, PIN w bazie -> PIN w bazie, Ilość nieudanych prób -> ilość nieudanych prób |
| |
| Poziom 18: Ręczne dodanie zależności (do poziomu 9) pożądana kwota -> czy bankomat ma dostatecznie dużo środków |
| |
==== General Conceptual Design ==== | ==== General Conceptual Design ==== |
| |
| |
====== V3 ====== | ===== V4 ===== |
link do strony z plikami http://student.agh.edu.pl/~makamin/MiW/v3/bankomat/ | |
| |
==== Directed Conceptual Design ==== | ==== Directed Conceptual Design ==== |
| |
| Kody w PROOGu, kod .dot i rysunki ARD/TPH i XTT wygenerowane przez VARDA dostępne dodatkowo pod linkiem poniżej |
| |
| {{:pl:miw:miw08_ardcase_cs:cashpoint_v4.pl|Kod w PROLOGu}} |
| |
| {{:pl:miw:miw08_ardcase_cs:cashpoint_v4-ard.dot|Plik .dot ARD}} |
| |
| {{:pl:miw:miw08_ardcase_cs:cashpoint_v4-tph.dot|Plik .dot TPH}} |
| |
| |
=== Full ARD Model === | === Full ARD Model === |
| |
| ARD: |
| |
| <graphviz file="pl:miw:miw08_ardcase_cs:cashpoint_v4-ard.dot"> |
| </graphviz> |
| |
| TPH: |
| |
| <graphviz file="pl:miw:miw08_ardcase_cs:cashpoint_v4-tph.dot"> |
| </graphviz> |
| |
==== Refined Conceptual Design ==== | ==== Refined Conceptual Design ==== |
| |
====== V2 ====== | |
| |
| ===== V3 ===== |
| |
| |
==== Directed Conceptual Design ==== | ==== Directed Conceptual Design ==== |
| |
Chwilowo kod tutaj: http://student.agh.edu.pl/~makamin/MiW/ARD%20XTT/ | Kody w PROOGu, kod .dot i rysunki ARD/TPH i XTT wygenerowane przez VARDA dostępne dodatkowo pod linkiem poniżej |
| |
| {{:pl:miw:miw08_ardcase_cs:cashpoint_v3.pl|Kod w PROLOGu}} |
| |
| {{:pl:miw:miw08_ardcase_cs:cashpoint-ard_v3.dot|Plik .dot ARD}} |
| |
| {{:pl:miw:miw08_ardcase_cs:cashpoint-tph_v3.dot|Plik .dot TPH}} |
| |
=== Full ARD Model === | === Full ARD Model === |
ARD: | ARD: |
| |
<graphviz url="http://student.agh.edu.pl/~makamin/MiW/ARD%20XTT/bankomat/cashpoint-ard.dot"> | <graphviz file="pl:miw:miw08_ardcase_cs:cashpoint-ard_v3.dot"> |
</graphviz> | </graphviz> |
| |
TPH: | TPH: |
| |
<graphviz url="http://student.agh.edu.pl/~makamin/MiW/ARD%20XTT/bankomat/cashpoint-tph.dot"> | <graphviz file="pl:miw:miw08_ardcase_cs:cashpoint-tph_v3.dot"> |
</graphviz> | </graphviz> |
| |
XTT: | ==== Refined Conceptual Design ==== |
| |
| ===== V2 ===== |
| |
| |
| ==== Directed Conceptual Design ==== |
| |
| Kody w PROOGu, kod .dot i rysunki ARD/TPH i XTT wygenerowane przez VARDA dostępne dodatkowo pod linkiem poniżej |
| |
| {{:pl:miw:miw08_ardcase_cs:cashpoint_v2.pl|Kod w PROLOGu}} |
| |
| {{:pl:miw:miw08_ardcase_cs:cashpoint-ard_v2.dot|Plik .dot ARD}} |
| |
| {{:pl:miw:miw08_ardcase_cs:cashpoint-tph_v2.dot|Plik .dot TPH}} |
| |
| |
| === Full ARD Model === |
| |
| ARD: |
| |
| <graphviz file="pl:miw:miw08_ardcase_cs:cashpoint-ard_v2.dot"> |
| </graphviz> |
| |
| TPH: |
| |
<graphviz url="http://student.agh.edu.pl/~makamin/MiW/ARD%20XTT/bankomat/cashpoint-xtt.dot"> | <graphviz file="pl:miw:miw08_ardcase_cs:cashpoint-tph_v2.dot"> |
</graphviz> | </graphviz> |
| |
Plik HQED http://student.agh.edu.pl/~makamin/MiW/ARD%20XTT/bankomat/xtt.svg | |
| |
==== Refined Conceptual Design ==== | ==== Refined Conceptual Design ==== |
| |
====== V1 ====== | ===== V1 ===== |
| |
==== Directed Conceptual Design ==== | ==== Directed Conceptual Design ==== |
| |
{{:pl:miw:miw08_ardcase_cs:cashpoint-tph.dot|Plik .dot TPH}} | {{:pl:miw:miw08_ardcase_cs:cashpoint-tph.dot|Plik .dot TPH}} |
| |
{{:pl:miw:miw08_ardcase_cs:cashpoint-xtt.dot|Plik .dot XTT}} | |
| |
__//**TBC: Zapytac jak pisac sciezke do plikow lokalnych na wiki, bo https://ai.ia.agh.edu.pl/wiki/_media/pl:miw:miw08_ardcase_cs:cashpoint-ard.dot nie dziala - narazie wklejony kod!!!**//__ | |
| |
Kopie na studencie! http://student.agh.edu.pl/~makamin/MiW/Graph/bankomat/ | |
| |
ARD: | ARD: |
| |
<graphviz> | <graphviz file="pl:miw:miw08_ardcase_cs:cashpoint-ard.dot"> |
digraph G { | |
rankdir=LR | |
node [shape=box, fontsize=9, height=0.1, width=0.05 ] | |
edge [arrowsize=0.5, len=0.1] | |
"cashpointActivity\n" | |
"clientHasFreeFunds\n" | |
"authentication\n" | |
"numberOfBills\n" | |
"enoughCashInCashpoint\n" | |
"menuOption\n" | |
"desiredAmount\n" | |
"enteredPIN\n" | |
"freeFunds\n" | |
"pINInDatabase\n" | |
"numberOfFailedAttempts\n" | |
"authentication\n"->"cashpointActivity\n" | |
"clientHasFreeFunds\n"->"cashpointActivity\n" | |
"numberOfBills\n"->"enoughCashInCashpoint\n" | |
"enoughCashInCashpoint\n"->"cashpointActivity\n" | |
"menuOption\n"->"cashpointActivity\n" | |
"desiredAmount\n"->"clientHasFreeFunds\n" | |
"enteredPIN\n"->"authentication\n" | |
"freeFunds\n"->"clientHasFreeFunds\n" | |
"pINInDatabase\n"->"authentication\n" | |
"numberOfFailedAttempts\n"->"cashpointActivity\n" | |
"desiredAmount\n"->"enoughCashInCashpoint\n" | |
} | |
</graphviz> | </graphviz> |
| |
| |
TPH: | TPH: |
| |
<graphviz> | <graphviz file="pl:miw:miw08_ardcase_cs:cashpoint-tph.dot"> |
digraph G { | |
rankdir=LR | |
node [shape=box, fontsize=9, height=0.1, width=0.05 ] | |
edge [arrowsize=0.5, len=0.1] | |
"Cashpoint\n"->"MenuOption\nData\nDoesCashpointHaveEnoughCash\nNumberOfFailedAttempts\nCashpointActivity\n" | |
"MenuOption\nData\nDoesCashpointHaveEnoughCash\nNumberOfFailedAttempts\nCashpointActivity\n"->"MenuOption\n" | |
"MenuOption\nData\nDoesCashpointHaveEnoughCash\nNumberOfFailedAttempts\nCashpointActivity\n"->"Data\n" | |
"MenuOption\nData\nDoesCashpointHaveEnoughCash\nNumberOfFailedAttempts\nCashpointActivity\n"->"DoesCashpointHaveEnoughCash\n" | |
"MenuOption\nData\nDoesCashpointHaveEnoughCash\nNumberOfFailedAttempts\nCashpointActivity\n"->"NumberOfFailedAttempts\n" | |
"MenuOption\nData\nDoesCashpointHaveEnoughCash\nNumberOfFailedAttempts\nCashpointActivity\n"->"CashpointActivity\n" | |
"Data\n"->"DesiredAmount\nEnteredPIN\nFreeFunds\nPINInDatabase\nauthentication\nclientHasFreeFunds\n" | |
"DesiredAmount\nEnteredPIN\nFreeFunds\nPINInDatabase\nauthentication\nclientHasFreeFunds\n"->"DesiredAmount\nFreeFunds\nEnteredPIN\nPINInDatabase\n" | |
"DesiredAmount\nEnteredPIN\nFreeFunds\nPINInDatabase\nauthentication\nclientHasFreeFunds\n"->"clientHasFreeFunds\nauthentication\n" | |
"CashpointActivity\n"->"cashpointActivity\n" | |
"clientHasFreeFunds\nauthentication\n"->"clientHasFreeFunds\n" | |
"clientHasFreeFunds\nauthentication\n"->"authentication\n" | |
"DesiredAmount\nFreeFunds\nEnteredPIN\nPINInDatabase\n"->"DesiredAmount\nFreeFunds\n" | |
"DesiredAmount\nFreeFunds\nEnteredPIN\nPINInDatabase\n"->"EnteredPIN\nPINInDatabase\n" | |
"EnteredPIN\nPINInDatabase\n"->"EnteredPIN\n" | |
"EnteredPIN\nPINInDatabase\n"->"PINInDatabase\n" | |
"DesiredAmount\nFreeFunds\n"->"DesiredAmount\n" | |
"DesiredAmount\nFreeFunds\n"->"FreeFunds\n" | |
"DoesCashpointHaveEnoughCash\n"->"NumberOfBills\nEnoughCashInCashpoint\n" | |
"NumberOfBills\nEnoughCashInCashpoint\n"->"NumberOfBills\n" | |
"NumberOfBills\nEnoughCashInCashpoint\n"->"EnoughCashInCashpoint\n" | |
"NumberOfBills\n"->"numberOfBills\n" | |
"EnoughCashInCashpoint\n"->"enoughCashInCashpoint\n" | |
"MenuOption\n"->"menuOption\n" | |
"DesiredAmount\n"->"desiredAmount\n" | |
"EnteredPIN\n"->"enteredPIN\n" | |
"FreeFunds\n"->"freeFunds\n" | |
"PINInDatabase\n"->"pINInDatabase\n" | |
"NumberOfFailedAttempts\n"->"numberOfFailedAttempts\n" | |
} | |
</graphviz> | </graphviz> |
| |
| ==== Refined Conceptual Design ==== |
| |
| ===== Physical Attribute Specification ===== |
| |
| ===== Structuralization ===== |
| |
| |
| |
| |
| |
| ===== Logical design ===== |
| |
| |
| |
| |
| |
| |
| ==== V4 ==== |
| {{:pl:miw:miw08_ardcase_cs:cashpoint_v4-xtt.dot|Plik .dot XTT}} |
| |
XTT: | XTT: |
| <graphviz file="pl:miw:miw08_ardcase_cs:cashpoint_v4-xtt.dot"> |
| </graphviz> |
| |
<graphviz> | Plik HQED {{:pl:miw:miw08_ardcase_cs:cashpoint_v4-xttml.xttml|XTTML}} |
digraph G{ node [shape=record, fontsize=9, height=0.1, width=0.05]; edge [style=dashed, arrowsize=0.5, len=0.1] | |
subgraph "cluster_Cashpoint" { | |
"[[authentication], [clientHasFreeFunds], [enoughCashInCashpoint], [menuOption], [numberOfFailedAttempts]]|[[cashpointActivity]]" | ==== V3 ==== |
} | {{:pl:miw:miw08_ardcase_cs:cashpoint-xtt_v3.dot|Plik .dot XTT}} |
subgraph "cluster_Cashpoint" { | |
"[[numberOfBills], [desiredAmount]]|[[enoughCashInCashpoint]]" | XTT: |
} | <graphviz file="pl:miw:miw08_ardcase_cs:cashpoint-xtt_v3.dot"> |
subgraph "cluster_Cashpoint" { | |
"[[desiredAmount], [freeFunds]]|[[clientHasFreeFunds]]" | |
} | |
subgraph "cluster_Data" { | |
"[[desiredAmount], [freeFunds]]|[[clientHasFreeFunds]]" | |
} | |
subgraph "cluster_Cashpoint" { | |
"[[enteredPIN], [pINInDatabase]]|[[authentication]]" | |
} | |
subgraph "cluster_Data" { | |
"[[enteredPIN], [pINInDatabase]]|[[authentication]]" | |
} | |
subgraph "cluster_Cashpoint" { | |
label="Cashpoint" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_MenuOption" { | |
label="MenuOption" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Cashpoint" { | |
label="Cashpoint" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_Data" { | |
label="Data" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Cashpoint" { | |
label="Cashpoint" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_DoesCashpointHaveEnoughCash" { | |
label="DoesCashpointHaveEnoughCash" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Cashpoint" { | |
label="Cashpoint" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_NumberOfFailedAttempts" { | |
label="NumberOfFailedAttempts" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Cashpoint" { | |
label="Cashpoint" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_CashpointActivity" { | |
label="CashpointActivity" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Cashpoint" { | |
label="Cashpoint" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_menuOption" { | |
label="menuOption" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Cashpoint" { | |
label="Cashpoint" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_DesiredAmount" { | |
label="DesiredAmount" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Cashpoint" { | |
label="Cashpoint" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_FreeFunds" { | |
label="FreeFunds" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Cashpoint" { | |
label="Cashpoint" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_desiredAmount" { | |
label="desiredAmount" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Cashpoint" { | |
label="Cashpoint" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_freeFunds" { | |
label="freeFunds" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Cashpoint" { | |
label="Cashpoint" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_EnteredPIN" { | |
label="EnteredPIN" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Cashpoint" { | |
label="Cashpoint" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_PINInDatabase" { | |
label="PINInDatabase" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Cashpoint" { | |
label="Cashpoint" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_enteredPIN" { | |
label="enteredPIN" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Cashpoint" { | |
label="Cashpoint" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_pINInDatabase" { | |
label="pINInDatabase" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Cashpoint" { | |
label="Cashpoint" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_clientHasFreeFunds" { | |
label="clientHasFreeFunds" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Cashpoint" { | |
label="Cashpoint" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_authentication" { | |
label="authentication" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Cashpoint" { | |
label="Cashpoint" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_NumberOfBills" { | |
label="NumberOfBills" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Cashpoint" { | |
label="Cashpoint" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_EnoughCashInCashpoint" { | |
label="EnoughCashInCashpoint" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Cashpoint" { | |
label="Cashpoint" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_numberOfBills" { | |
label="numberOfBills" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Cashpoint" { | |
label="Cashpoint" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_enoughCashInCashpoint" { | |
label="enoughCashInCashpoint" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Cashpoint" { | |
label="Cashpoint" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_numberOfFailedAttempts" { | |
label="numberOfFailedAttempts" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Cashpoint" { | |
label="Cashpoint" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_cashpointActivity" { | |
label="cashpointActivity" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_MenuOption" { | |
label="MenuOption" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_menuOption" { | |
label="menuOption" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Data" { | |
label="Data" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_DesiredAmount" { | |
label="DesiredAmount" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Data" { | |
label="Data" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_FreeFunds" { | |
label="FreeFunds" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Data" { | |
label="Data" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_desiredAmount" { | |
label="desiredAmount" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Data" { | |
label="Data" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_freeFunds" { | |
label="freeFunds" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Data" { | |
label="Data" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_EnteredPIN" { | |
label="EnteredPIN" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Data" { | |
label="Data" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_PINInDatabase" { | |
label="PINInDatabase" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Data" { | |
label="Data" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_enteredPIN" { | |
label="enteredPIN" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Data" { | |
label="Data" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_pINInDatabase" { | |
label="pINInDatabase" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Data" { | |
label="Data" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_clientHasFreeFunds" { | |
label="clientHasFreeFunds" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Data" { | |
label="Data" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_authentication" { | |
label="authentication" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_DoesCashpointHaveEnoughCash" { | |
label="DoesCashpointHaveEnoughCash" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_NumberOfBills" { | |
label="NumberOfBills" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_DoesCashpointHaveEnoughCash" { | |
label="DoesCashpointHaveEnoughCash" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_EnoughCashInCashpoint" { | |
label="EnoughCashInCashpoint" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_DoesCashpointHaveEnoughCash" { | |
label="DoesCashpointHaveEnoughCash" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_numberOfBills" { | |
label="numberOfBills" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_DoesCashpointHaveEnoughCash" { | |
label="DoesCashpointHaveEnoughCash" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_enoughCashInCashpoint" { | |
label="enoughCashInCashpoint" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_NumberOfFailedAttempts" { | |
label="NumberOfFailedAttempts" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_numberOfFailedAttempts" { | |
label="numberOfFailedAttempts" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_CashpointActivity" { | |
label="CashpointActivity" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_cashpointActivity" { | |
label="cashpointActivity" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_DesiredAmount" { | |
label="DesiredAmount" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_desiredAmount" { | |
label="desiredAmount" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_EnteredPIN" { | |
label="EnteredPIN" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_enteredPIN" { | |
label="enteredPIN" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_FreeFunds" { | |
label="FreeFunds" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_freeFunds" { | |
label="freeFunds" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_PINInDatabase" { | |
label="PINInDatabase" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_pINInDatabase" { | |
label="pINInDatabase" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_NumberOfBills" { | |
label="NumberOfBills" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_numberOfBills" { | |
label="numberOfBills" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_EnoughCashInCashpoint" { | |
label="EnoughCashInCashpoint" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_enoughCashInCashpoint" { | |
label="enoughCashInCashpoint" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
"[[numberOfBills], [desiredAmount]]|[[enoughCashInCashpoint]]"->"[[authentication], [clientHasFreeFunds], [enoughCashInCashpoint], [menuOption], [numberOfFailedAttempts]]|[[cashpointActivity]]" | |
"[[desiredAmount], [freeFunds]]|[[clientHasFreeFunds]]"->"[[authentication], [clientHasFreeFunds], [enoughCashInCashpoint], [menuOption], [numberOfFailedAttempts]]|[[cashpointActivity]]" | |
"[[enteredPIN], [pINInDatabase]]|[[authentication]]"->"[[authentication], [clientHasFreeFunds], [enoughCashInCashpoint], [menuOption], [numberOfFailedAttempts]]|[[cashpointActivity]]" | |
} | |
</graphviz> | </graphviz> |
| |
Wstępna wersja xtt (nie wrzucana na wiki, ponieważ jest wstępna) tutaj: http://student.agh.edu.pl/~makamin/MiW/Graph/bankomat/MIW-cashpoint-xtt.pdf | Plik HQED {{:pl:miw:miw08_ardcase_cs:cashpoint-xttml_v3.xttml|XTTML}} |
| |
==== Refined Conceptual Design ==== | ==== V2 ==== |
| {{:pl:miw:miw08_ardcase_cs:cashpoint-xtt_v2.dot|Plik .dot XTT}} |
| |
===== Physical Attribute Specification ===== | XTT: |
| <graphviz file="pl:miw:miw08_ardcase_cs:cashpoint-xtt_v2.dot"> |
| </graphviz> |
| |
===== Structuralization ===== | Plik HQED {{cashpoint_v2.xttml|XTTML}} |
| |
| ==== V1 ==== |
| |
| {{:pl:miw:miw08_ardcase_cs:cashpoint-xtt.dot|Plik .dot XTT}} |
| |
| {{:pl:miw:miw08_ardcase_cs:miw-cashpoint-xtt.pdf |Nieoficjalna (bez użycia HqEd) wersja XTT }} |
| |
| XTT: |
| |
===== Logical design ===== | <graphviz file="pl:miw:miw08_ardcase_cs:cashpoint-xtt.dot"> |
| </graphviz> |
| |
| ==== V0 - opis ogólny ==== |
Wynikowe działanie bankomatu zależy od następujących rzeczy: | Wynikowe działanie bankomatu zależy od następujących rzeczy: |
- czy klient podał prawidłowy PIN (uwierzytelnienie) | - czy klient podał prawidłowy PIN (uwierzytelnienie) |
| |
Uwierzytelnienie zależy od PINu zapisanego na karcie/w bazie banku, oraz PINu podanego przez klienta | Uwierzytelnienie zależy od PINu zapisanego na karcie/w bazie banku, oraz PINu podanego przez klienta |
| |
To czy klient dysponuje środkami zależy od pożądanej przez klienta kwoty, oraz stanu jego konta | To czy klient dysponuje środkami zależy od pożądanej przez klienta kwoty, oraz stanu jego konta |
| |
Tak powstałe reguły powinny być opisane w taki sposób aby otrzymane tabele były zupełne | Tak powstałe reguły powinny być opisane w taki sposób aby otrzymane tabele były zupełne |
| |
| |
| |
| |
| ===== CASE ===== |
| Ze względów projektowych trzeba było dodawać zależności ręcznie (abstrahując, że i tak koncepcja później została zmieniona) pojawiły się dwie tabele o identycznych warunkach (czemu nie zostały połączone?). Fakt nie były od początku projektowane jako jedna tabela o danych warunkach i dwóch konkluzjach (ale wynikło to z projektu, gdzie jedna z konkluzji była wywiedziona od innego atrybutu) |
| |
| {{:pl:miw:miw08_ardcase_cs:cashpoint_case.pl|Kod w PROLOGu}} |
| |
| {{:pl:miw:miw08_ardcase_cs:cashpoint_case-ard.dot|Plik .dot ARD}} |
| |
| {{:pl:miw:miw08_ardcase_cs:cashpoint_case-tph.dot|Plik .dot TPH}} |
| |
| {{:pl:miw:miw08_ardcase_cs:cashpoint_case-xtt.dot|Plik .dot XTT}} |
| |
| {{:pl:miw:miw08_ardcase_cs:cashpoint_case-xttml.xttml|Plik .dot XTTML}} |
| |
| <graphviz file="pl:miw:miw08_ardcase_cs:cashpoint_case-xtt.dot"> |
| </graphviz> |
| |
===== Ostatnie zmiany ===== | ===== Ostatnie zmiany ===== |
| 26.05.2008 - dodanie case opisywanego w sprawozdaniu ; dodanie v4 - podczas dogrywania case autor zauważył brak uaktualniania atrybutu numberOfBills (o nieco mylącej nazwie - reprezentującego ilość pieniędzy w banknotach w bankomacie), zostało to poprawione w wersji v4 |
| |
| 24.05.2008 - uporządkowanie, usunięcie linków zewnętrznych i zastąpienie lokalnymi, drobne zmiany |
| |
28.04.2008 - drobne modyfikacje modelu, użycie nowej wersji VARDA, oraz użycie HQED | 28.04.2008 - drobne modyfikacje modelu, użycie nowej wersji VARDA, oraz użycie HQED |
| |
19.05.2008 - modyfikacja modelu, nowe ARD,XTT - na chwile obecna link do strony, wieczorem wklejenie localcopy etc | 18.05.2008 - modyfikacja modelu, nowe ARD,XTT - na chwile obecna link do strony, wieczorem wklejenie localcopy etc |
| |
| 19.05.2008 - poprawa(uaktualnienie) opisu, dodanie kopii lokalnych plików, usunięcie starych uwag, dodanie nowych uwag do sprawozdania |