[[
✎ pl:miw:miw08_ardcase_cs:bankomat
]]
aiWiki
Pokaż stronę
Ostatnie zmiany
Indeks
Zaloguj
Ta strona jest tylko do odczytu. Możesz wyświetlić źródła tej strony ale nie możesz ich zmienić.
====== Analiza bankomatu i design ====== ====== 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. ==== 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}} == 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}} 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}} ==== Uzasadnienie wyboru i porównanie ==== Wybrałem przykład P1 ponieważ zawiera stosunkowo najwięcej opisu UML i jest merytorycznie najlepszy. Przykład P2 zawiera mniej diagramów UML, mniej danych o systemie, a przedstawione diagramy w mniejszym stopniu oddają specyfikę systemu. Przykład P3 zawiera diagramy UML, ale przedstawione tam diagramy wydają się być niekompletne i dobrane tak, aby tłumaczyć myśl główną zawartą w dokumencie tj. testowanie systemów. ===== Description ===== W przypadku podstawowym w bankomacie wyróżnić możemy dwa podstawowe przypadki użycia: 1. Zapytanie o saldo 2. Wypłata pieniędzy Użycie bankomatu ogranicza się d o dwóch akcji prezentowanych na use-case. Może to być zapytanie o saldo lub wypłata środków. Dla każdej z akcji trzeba się uwierzytelnić poprzez podanie PINU. PIN jest sprawdzany w bazie, jeśli jest porpawny praca jest kontynuowana, jeśli nie to następują kolejne próby, jeśli są udane - dalsza praca, jeśli nie karta jest zatrzymywana. Dalsza praca polega na : - dla zapytania o saldo na wypisaniu komunikatu/wydrukowaniu potwierdzenia - dla wypłaty pieniędzy wybraniu z dostępnych lub podaniu niestandardowej kwoty, następnie sprawdzana jest ilość środków na koncie i jeśli są wolne środki lub limit kredytowy to sprawdzane jest, czy bankomat posiada środki, jeśli wszystko OK to wypłata i potwierdzenie, jeśli nie, to odpowiedni komunikat. Możliwe działania wynikowe bankomatu - drukowanie potwierdzenia, wydawanie pieniędzy, zabranie karty, prośba o ponowne wprowadzenie PINu ===== Conceptualization ===== W niniejszym rozdziale następuje próba specyfikacji wejść, wyjść, atrybutów, oraz reguł w systemie ==== Vocabulary ==== Wejścia: Karta, PIN, decyzje podejmowane przez użytkownika na kolejnych ekranach (akcja, pożadana kwota) Wyjście: Potwierdzenie/pieniądze/komunikat Stany wewnętrzne: Uwierzytelnienie (jeśli wpisany PIN jest zgodny z PINem w bazie), Saldo (kwota wolnych środków na koncie klienta), Mozliwosc wypłaty(czy bankomat ma pożądana kwotę/banknoty) 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. ==== Original Rules ==== Reguły: Z wybranej akcji wynika jakie reguły stosować dalej. Jeśli akcją jest zapytanie o saldo to uwierzytelnienie; jeśli uwierzytelnienie to wydruk potwierdzenia/wypisanie na ekranie Jeśli akcją jest wypłata to pozostałe reguły. Jeśli dobry PIN -> kontynuacja 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 są pieniądze i możliwość wypłaty -> wyplata pieniędzy/drukowanie potwierdzenia lub stan konta dla akcji sprawdzania konta ===== Analysis ===== ===== 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 1: Życzenia Klienta, Dane, Fizyczna Możliwość Wypłaty, Działanie bankomatu Poziom 2: Życzenia Klienta + Dane + Fizyczna Możliwość Wypłaty -> Działanie bankomatu Poziom 3: Dane (finalizacja na:) Wprowadzona Kwota, PodanyPIN, PINwBanku, WolneSrodki, uwierzytelnienie, klient dysponuje środkami Poziom 4: Wprowadzona Kwota + PodanyPIN + PINwBanku + WolneSrodki -> uwierzytelnienie + klient dysponuje środkami Poziom 5: Działanie bankomatu (finalizacja na:) działanie bankomatu Poziom 6: Wprowadzona Kwota, Wolne Sroki, PodanyPIN, PINwBanku -> klient dysponuje środkami + uwierzytelnienie -> działanie bankomatu Poziom 7: Wprowadzona Kwota + Wolne Środki -> klient dysponuje środkami ; Podany PIN + PINwBanku -> uwierzytelnienie Poziom 8 i kolejne: Splity na [PodanyPIN, PINwBanku] -> [Podany PIN], [PINwBanku] oraz [WprowadzonaKwota,WolneSrodki] = [WprowadzonaKwota],[WolneSrodki] + finalizacje ==== General Conceptual Design ==== ==== Directed Conceptual Design ==== === Full ARD Model === 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.pl|Kod w PROLOGu}} {{:pl:miw:miw08_ardcase_cs:cashpoint-ard.dot|Plik .dot ARD}} {{: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 lokalnychna wiki, bo https://ai.ia.agh.edu.pl/wiki/_media/pl:miw:miw08_ardcase_cs:cashpoint-ard.dot nie dziala - narazie wklejony kod!!!**//__ ARD: <graphviz> 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> 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> 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]]" } subgraph "cluster_Cashpoint" { "[[numberOfBills], [desiredAmount]]|[[enoughCashInCashpoint]]" } 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> ==== Refined Conceptual Design ==== ===== Physical Attribute Specification ===== ===== Structuralization ===== ===== Logical design ===== Wynikowe działanie bankomatu zależy od następujących rzeczy: - czy klient podał prawidłowy PIN (uwierzytelnienie) - czy środki na koncie klienta są w stanie pokryć koszty transakcji (klient dysponuje środkami) - życzenie klienta (wybrana akcja) - fizyczna możliwość wypłaty (czy bankomat dysponuje pożądaną kwotą/odpowiednimi banknotami) 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 Tak powstałe reguły powinny być opisane w taki sposób aby otrzymane tabele były zupełne
pl/miw/miw08_ardcase_cs/bankomat.1208121127.txt.gz
· ostatnio zmienione: 2019/06/27 15:59 (edycja zewnętrzna)
Pokaż stronę
Poprzednie wersje
Menadżer multimediów
Do góry