Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:miw:miw08_ardcase_cs:biletomat [2008/04/15 09:39] miw |
pl:miw:miw08_ardcase_cs:biletomat [2019/06/27 15:50] (aktualna) |
====== Analiza biletomatu i design ====== | ====== Analiza biletomatu i design ====== |
| |
| |
| |
==== Wybrany przykład: ==== | ==== Wybrany przykład: ==== |
[[http://student.agh.edu.pl/~makamin/MiW/TPa%b3osz,MMazur%20-%20Automat.pdf|Well documented Vending Machine Model by T. Pałosz, M. Mazur (AiR IV)]] {{:pl:miw:miw08_ardcase_cs:tpa_b3osz_mmazur_-_automat.pdf|localcopy}} | {{:pl:miw:miw08_ardcase_cs:tpa_b3osz_mmazur_-_automat.pdf|Well documented Vending Machine Model by T. Pałosz, M. Mazur (AiR IV) <localcopy> }} |
| |
== Pozostałe przykłady == | == Pozostałe przykłady == |
| |
===== Description ===== | ===== Description ===== |
W udostępnionym przykładzie zamodelowanym w UML możliwe jest jedynie kupowanie biletu, w niniejszym modelu rozważone będzie także doładowanie KKM (Krakowska Karta Miejska ; to lokalizuje rozwiązanie ale w skali światowiej nie jest to bardzo innowacyjne rozwiązanie, więc można to zrobić bez straty ogłolności) | W udostępnionym przykładzie zamodelowanym w UML możliwe jest jedynie kupowanie biletu, w niniejszym modelu rozważone będzie także doładowanie KKM (Krakowska Karta Miejska ; to lokalizuje rozwiązanie ale w skali światowej nie jest to bardzo innowacyjne rozwiązanie, więc można to zrobić bez straty ogólności) |
| |
Użycie biletomatu polega na wybraniu opcji - zakup biletu bądz doładowanie karty okresowej. Po wybraniu opcji należy wrzucić odpowiednią ilość pieniędzy - jak w use-case. Jeśli przez zbyt długi czas użytkownik nie wpłaci pieniędzy aby sfinalizować transakcje przyjęte pieniądze są oddawane. | Użycie biletomatu polega na wybraniu opcji - zakup biletu bądz doładowanie karty okresowej. Po wybraniu opcji należy wrzucić odpowiednią ilość pieniędzy - jak w use-case. Jeśli przez zbyt długi czas użytkownik nie wpłaci pieniędzy aby sfinalizować transakcje przyjęte pieniądze są oddawane. |
| |
===== Conceptualization ===== | ===== Conceptualization ===== |
W ninejszym rozdziale następuje próba specyfikacji wejść, wyjść, atrybutów, oraz reguł w systemie | W niniejszym rozdziale następuje próba specyfikacji wejść, wyjść, atrybutów, oraz reguł w systemie |
| |
| |
Wyjście: Potwierdzenie/reszta/komunikat | Wyjście: Potwierdzenie/reszta/komunikat |
| |
Stany wewnętrzne: ?? | Elementy wiedzy: Akcja wybrana przez użytkownika (dziedzina: bilet/karta), typ biletu/dane do karty, czy istnieje możliwość drukowania, czy biletomat może wydać resztę. |
| |
Elementy wiedzy: Akcja wybrana przez uzytkownika (dziedzina: bilet/karta), typ biletu/dane do karty, czy istnieje możliwość drukowania, czy biletomat może wydać resztę. | |
| |
==== Original Rules ==== | ==== Original Rules ==== |
Reguły: | Reguły: |
| |
- Jeśli akcją jest zakup biletu to należy wybrać typ biletu | - Jeśli akcją jest zakup biletu to należy wybrać typ biletu |
| |
- Jeśli akcją jest doładowanie karty to należy podać dane | - Jeśli akcją jest doładowanie karty to należy podać dane |
| |
- Należy wpłacić pieniądze | - Należy wpłacić pieniądze |
| |
- Jeśli wpłacono to drukowanie biletu/wydanie reszty, jeśli nie to po pewnym czasie zwrot pieniędzy | - Jeśli wpłacono to drukowanie biletu/wydanie reszty, jeśli nie to po pewnym czasie zwrot pieniędzy |
| |
| |
| |
| ===== Conceptual design ===== |
| |
| Poziom 0: Biletomat |
| |
| Poziom 1: Finalizacja Biletomatu na: Czas, Pieniądze, Dostępność, Aktywność biletomatu |
| |
===== Conceptual design ===== | Poziom 2: Split: Czas -> Aktywność biletomatu, Pieniądze -> Aktywność biletomatu, Dostępność -> Aktywność biletomatu |
**TBC: Czy to nie za skromny model? Co dodac? Czemu na ARD pomimo finalizacji nie zaszła finalizacja (widac to na tph ; na ARD dużymi literami atrybuty)? Czy czas jakos dzielic na czas rozpoaczecia kupowania i czas ktory uplywa (zwykle jak sie nie wplaci pieniedzy przez okolo minute to wyrzuca dotychczas wplacone)** | |
| |
Poziom 0: Biletomat | Poziom 3: Finalizacja Czas na : Czas obecny, Czas rozpoczęcia, przekroczenie limitu czasu |
| |
Poziom 1: Czas, DostepneSrodki(ile bankomat ma pieniedzy na reszte), WyborDzialania(bilet czy karta), WplaconeSrodki, FizycznaMozliwoscWyplaty(czy jest papier/tusz), Cennik, Dzialanie | Poziom 4: Split: Czas obecny -> przekroczenie limitu czasu, Czas rozpoczęcia -> przekroczenie limitu czasu |
| |
Poziom 2: Czas + DostepneSrodki + WyborDzialania + WplaconeSrodki + FizycznaMozliwoscWyplaty + Cennik -> Dzialanie | Poziom 5,6: Finalizacja Czas obecny -> czas obecny ; Czas rozpoczęcia -> czas rozpoczęcia |
| |
Poziom 3: finalizacje (TBC: nie wiem czemu nie zaszly?) | Poziom 7: Finalizacja Dostępność na: Pieniądze w biletomacie, (znacznik) Wystarczająca ilość pieniędzy do wydania reszty |
| |
==== General Conceptual Design ==== | Poziom 8: Split: Pieniądze w biletomacie -> Wystarczająca ilość pieniędzy do wydania reszty, Wystarczająca ilość pieniędzy do wydania reszty -> Aktywność biletomatu |
| |
| Poziom 9: Finalizacja Pieniądze na: Wpłacona kwota, Cena do zapłacenia, Reszta |
| |
| Poziom 10: Split: Cena do zapłacenia -> Reszta, Wpłacona kwota -> Reszta, Reszta -> Aktywność biletomatu |
| |
| Poziom 11: Finalizacja Cena do zapłacenia na: Wybrany produkt, Lista cen, Cena |
| |
| Poziom 12: Split: Wybrany produkt -> Cena, Lista cen -> Cena, Cena -> Reszta |
| |
| Poziom 13-20: Finalizacja Pieniądze w biletomacie -> pieniądze w bletomacie, Wybrany produkt -> wybrany produkt, Wpłacona kwota -> wpłacona kwota, Wystarczająca ilość pieniędzy do wydania reszty -> wystarczająca ilość pieniędzy do wydania reszty, Reszta -> reszta, Lista cen -> lista cen, Cena -> cena, Aktywność biletomatu -> aktywność biletomatu |
| |
| Poziom 21: Ręczne dodanie zależności pieniądze w biletomacie -> aktywność biletomatu (konieczne do wyznaczenia działania biletomatu) |
| |
| Poziom 22: Ręczne dodanie zależności reszta -> wystarczająca ilość pieniędzy do wydania reszty (konieczne do ustalenia czy mamy tyle pieniędzy) |
| |
| Poziom 23: Ręczne dodanie zależności pieniądze w biletomacie -> pieniądze w biletomacie (konieczne do pomniejszenia ilości pieniędzy po ich wydaniu) |
| |
| Poziom 24: Ręczne dodanie zależności cena -> pieniądze w biletomacie (konieczne do pomniejszenia ilości pieniędzy po ich wydaniu) |
| |
| Poziom 25: Ręczne dodanie zależności aktywność bilatomatu -> pieniądze w biletomacie (konieczne do pomniejszenia ilości pieniędzy po ich wydaniu) |
| |
| ==== General Conceptual Design ==== |
| |
| |
| |
| |
| |
| ==== V3 ==== |
| |
==== Directed 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 |
Kody w PROOGu, kod .dot i rysunki ARD/TPH i XTT wygenerowane przez VARDA dostępne dodatkowo pod linkiem poniżej (update 13.04 - still working on it ; na razie brak kopii lokalnej) | |
| |
http://student.agh.edu.pl/~makamin/MiW/Graph/biletomat/ | {{:pl:miw:miw08_ardcase_cs:vendingmachine_v3.pl|Kod w PROLOGu}} |
| |
| {{:pl:miw:miw08_ardcase_cs:vendimgmachine-ard_v3.dot|Plik .dot ARD}} |
| |
| {{:pl:miw:miw08_ardcase_cs:vendimgmachine-tph_v3.dot|Plik .dot TPH}} |
| |
| === Full ARD Model === |
| |
ARD: | ARD: |
| |
<graphviz> | <graphviz file="pl:miw:miw08_ardcase_cs:vendimgmachine-ard_v3.dot"> |
digraph G { | |
rankdir=LR | |
node [shape=box, fontsize=9, height=0.1, width=0.05 ] | |
edge [arrowsize=0.5, len=0.1] | |
"minute\n" | |
"second\n" | |
"fundsInMachine\n" | |
"chosenProduct\n" | |
"remittance\n" | |
"enoughCashToChange\n" | |
"pricelist\n" | |
"activity\n" | |
"second\n"->"minute\n" | |
"fundsInMachine\n"->"enoughCashToChange\n" | |
"minute\n"->"activity\n" | |
"chosenProduct\n"->"activity\n" | |
"remittance\n"->"activity\n" | |
"enoughCashToChange\n"->"activity\n" | |
"pricelist\n"->"activity\n" | |
"fundsInMachine\n"->"activity\n" | |
"pricelist\n"->"enoughCashToChange\n" | |
"remittance\n"->"enoughCashToChange\n" | |
"chosenProduct\n"->"enoughCashToChange\n" | |
} | |
</graphviz> | </graphviz> |
| |
TPH: | TPH: |
| |
<graphviz> | <graphviz file=":pl:miw:miw08_ardcase_cs:vendimgmachine-tph_v3.dot"> |
digraph G { | |
rankdir=LR | |
node [shape=box, fontsize=9, height=0.1, width=0.05 ] | |
edge [arrowsize=0.5, len=0.1] | |
"Vendingmachine\n"->"Time\nChosenProduct\nRemittance\nFundsInMachine\nEnoughCashToChange\nPricelist\nActivity\n" | |
"Time\nChosenProduct\nRemittance\nFundsInMachine\nEnoughCashToChange\nPricelist\nActivity\n"->"Time\n" | |
"Time\nChosenProduct\nRemittance\nFundsInMachine\nEnoughCashToChange\nPricelist\nActivity\n"->"ChosenProduct\n" | |
"Time\nChosenProduct\nRemittance\nFundsInMachine\nEnoughCashToChange\nPricelist\nActivity\n"->"Remittance\n" | |
"Time\nChosenProduct\nRemittance\nFundsInMachine\nEnoughCashToChange\nPricelist\nActivity\n"->"FundsInMachine\nEnoughCashToChange\n" | |
"Time\nChosenProduct\nRemittance\nFundsInMachine\nEnoughCashToChange\nPricelist\nActivity\n"->"Pricelist\n" | |
"Time\nChosenProduct\nRemittance\nFundsInMachine\nEnoughCashToChange\nPricelist\nActivity\n"->"Activity\n" | |
"FundsInMachine\nEnoughCashToChange\n"->"FundsInMachine\n" | |
"FundsInMachine\nEnoughCashToChange\n"->"EnoughCashToChange\n" | |
"Time\n"->"Minute\nSecond\n" | |
"Minute\nSecond\n"->"Minute\n" | |
"Minute\nSecond\n"->"Second\n" | |
"Minute\n"->"minute\n" | |
"Second\n"->"second\n" | |
"FundsInMachine\n"->"fundsInMachine\n" | |
"ChosenProduct\n"->"chosenProduct\n" | |
"Remittance\n"->"remittance\n" | |
"EnoughCashToChange\n"->"enoughCashToChange\n" | |
"Pricelist\n"->"pricelist\n" | |
"Activity\n"->"activity\n" | |
} | |
</graphviz> | </graphviz> |
| |
XTT: | |
| |
<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_Vendingmachine" { | ==== Refined Conceptual Design ==== |
"[[second]]|[[minute]]" | ==== V2 ==== |
} | |
subgraph "cluster_Time" { | |
"[[second]]|[[minute]]" | ==== Directed Conceptual Design ==== |
} | |
subgraph "cluster_Vendingmachine" { | Kody w PROOGu, kod .dot i rysunki ARD/TPH i XTT wygenerowane przez VARDA dostępne dodatkowo pod linkiem poniżej |
"[[fundsInMachine], [pricelist], [remittance], [chosenProduct]]|[[enoughCashToChange]]" | |
} | {{:pl:miw:miw08_ardcase_cs:vendingmachine_v2.pl|Kod w PROLOGu}} |
subgraph "cluster_Vendingmachine" { | |
"[[minute], [chosenProduct], [remittance], [enoughCashToChange], [pricelist], [fundsInMachine]]|[[activity]]" | {{:pl:miw:miw08_ardcase_cs:vendingmachine-ard_v2.dot|Plik .dot ARD}} |
} | |
subgraph "cluster_Vendingmachine" { | {{:pl:miw:miw08_ardcase_cs:vendingmachine-tph_v2.dot|Plik .dot TPH}} |
label="Vendingmachine" | |
color=blue | === Full ARD Model === |
fontcolor=blue | |
fontsize=8 | ARD: |
fontname=sans | |
labeljust=l | <graphviz file="pl:miw:miw08_ardcase_cs:vendingmachine-ard_v2.dot"> |
subgraph "cluster_Time" { | |
label="Time" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Vendingmachine" { | |
label="Vendingmachine" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_ChosenProduct" { | |
label="ChosenProduct" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Vendingmachine" { | |
label="Vendingmachine" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_Remittance" { | |
label="Remittance" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Vendingmachine" { | |
label="Vendingmachine" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_Pricelist" { | |
label="Pricelist" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Vendingmachine" { | |
label="Vendingmachine" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_Activity" { | |
label="Activity" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Vendingmachine" { | |
label="Vendingmachine" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_Minute" { | |
label="Minute" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Vendingmachine" { | |
label="Vendingmachine" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_Second" { | |
label="Second" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Vendingmachine" { | |
label="Vendingmachine" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_minute" { | |
label="minute" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Vendingmachine" { | |
label="Vendingmachine" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_second" { | |
label="second" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Vendingmachine" { | |
label="Vendingmachine" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_chosenProduct" { | |
label="chosenProduct" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Vendingmachine" { | |
label="Vendingmachine" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_remittance" { | |
label="remittance" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Vendingmachine" { | |
label="Vendingmachine" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_FundsInMachine" { | |
label="FundsInMachine" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Vendingmachine" { | |
label="Vendingmachine" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_EnoughCashToChange" { | |
label="EnoughCashToChange" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Vendingmachine" { | |
label="Vendingmachine" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_fundsInMachine" { | |
label="fundsInMachine" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Vendingmachine" { | |
label="Vendingmachine" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_enoughCashToChange" { | |
label="enoughCashToChange" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Vendingmachine" { | |
label="Vendingmachine" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_pricelist" { | |
label="pricelist" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Vendingmachine" { | |
label="Vendingmachine" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_activity" { | |
label="activity" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Time" { | |
label="Time" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_Minute" { | |
label="Minute" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Time" { | |
label="Time" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_Second" { | |
label="Second" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Time" { | |
label="Time" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_minute" { | |
label="minute" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Time" { | |
label="Time" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_second" { | |
label="second" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_FundsInMachine" { | |
label="FundsInMachine" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_fundsInMachine" { | |
label="fundsInMachine" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_ChosenProduct" { | |
label="ChosenProduct" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_chosenProduct" { | |
label="chosenProduct" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Remittance" { | |
label="Remittance" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_remittance" { | |
label="remittance" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_EnoughCashToChange" { | |
label="EnoughCashToChange" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_enoughCashToChange" { | |
label="enoughCashToChange" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Pricelist" { | |
label="Pricelist" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_pricelist" { | |
label="pricelist" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Activity" { | |
label="Activity" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_activity" { | |
label="activity" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Minute" { | |
label="Minute" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_minute" { | |
label="minute" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
subgraph "cluster_Second" { | |
label="Second" | |
color=blue | |
fontcolor=blue | |
fontsize=8 | |
fontname=sans | |
labeljust=l | |
subgraph "cluster_second" { | |
label="second" | |
color=blue | |
fontcolor=blue | |
fontsize=10 | |
fontname=sans | |
labeljust=l | |
} | |
} | |
"[[second]]|[[minute]]"->"[[minute], [chosenProduct], [remittance], [enoughCashToChange], [pricelist], [fundsInMachine]]|[[activity]]" | |
"[[fundsInMachine], [pricelist], [remittance], [chosenProduct]]|[[enoughCashToChange]]"->"[[minute], [chosenProduct], [remittance], [enoughCashToChange], [pricelist], [fundsInMachine]]|[[activity]]" | |
} | |
</graphviz> | </graphviz> |
| |
Wstępna wersja xtt (nie wrzucana na wiki, ponieważ jest wstępna) tutaj: http://student.agh.edu.pl/~makamin/MiW/Graph/biletomat/MiW-vendingmachine-xtt.pdf | TPH: |
| <graphviz file="pl:miw:miw08_ardcase_cs:vendingmachine-tph_v2.dot"> |
| </graphviz> |
| |
| ==== Refined Conceptual Design ==== |
| |
| ==== V1 ==== |
| |
| |
| |
| |
| |
| |
| ==== 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:vendingmachine.pl|Kod w PROLOGu}} |
| |
| {{:pl:miw:miw08_ardcase_cs:vendingmachine-ard.dot|Plik .dot ARD}} |
| |
| {{:pl:miw:miw08_ardcase_cs:vendingmachine-tph.dot|Plik .dot TPH}} |
| |
| === Full ARD Model === |
| |
| ARD: |
| |
| <graphviz file="pl:miw:miw08_ardcase_cs:vendingmachine-ard.dot"> |
| </graphviz> |
| |
| TPH: |
| |
| <graphviz file="pl:miw:miw08_ardcase_cs:vendingmachine-tph.dot"> |
| </graphviz> |
| |
==== Refined Conceptual Design ==== | ==== Refined Conceptual Design ==== |
| |
===== Structuralization ===== | ===== Structuralization ===== |
| |
| |
| |
| |
===== Logical design ===== | ===== Logical design ===== |
Wynikowe dzialanie biletomatu zalezy od nastepujacych rzeczy: | |
| |
| |
| |
| |
| |
| |
| |
| ==== V3 ==== |
| {{:pl:miw:miw08_ardcase_cs:vendimgmachine-xtt_v3.dot|Plik .dot XTT}} |
| |
| XTT: |
| |
| <graphviz file="pl:miw:miw08_ardcase_cs:vendimgmachine-xtt_v3.dot"> |
| </graphviz> |
| |
| Plik HQED {{vendingmachine-xttml_v3.xttml|XTTML}} |
| |
| |
| |
| ==== V2 ==== |
| {{:pl:miw:miw08_ardcase_cs:vendingmachine-xtt_v2.dot|Plik .dot XTT}} |
| |
| XTT: |
| |
| <graphviz file="pl:miw:miw08_ardcase_cs:vendingmachine-xtt_v2.dot"> |
| </graphviz> |
| |
| Plik HQED {{vendingmachine_v2.xttml|XTTML}} |
| |
| |
| |
| ==== V1 ==== |
| |
| {{:pl:miw:miw08_ardcase_cs:vendingmachine-xtt.dot|Plik .dot XTT}} |
| |
| {{:pl:miw:miw08_ardcase_cs:miw-vendingmachine-xtt.pdf|Nieoficjalna (bez użycia HqEd) wersja XTT}} |
| |
| |
| XTT: |
| |
| <graphviz file="pl:miw:miw08_ardcase_cs:vendingmachine-xtt.dot"> |
| </graphviz> |
| |
| |
| |
| ==== V0 - opis ogólny ==== |
| Wynikowe działanie biletomatu zależy od następujących rzeczy: |
| |
- co zostało wybrane (jaka akcja) | - co zostało wybrane (jaka akcja) |
- fizyczna możliwość wypłaty (czy jest tusz do drukowania/pieniądze do wydania reszty) | - fizyczna możliwość wypłaty (czy jest tusz do drukowania/pieniądze do wydania reszty) |
| |
| |
| |
| |
| ===== Ostatnie zmiany ===== |
| 24.05.2008 - usunięcie linków zewnętrznych, dodane kopii lokalnych, drobne zmiany |
| |
| 28.04.2008 - od poprzedniej wersji ARD/XTT (v1) przy użyciu nowej wersji VARDA wygenerowano poprawione ARD, a za pomocą HQed XTT (v2). Ważne - w wersji v1 w tabelach reguł występowały działania, które należało wyeliminować. W tym celu wprowadzono nowy atrybut - reszta. Po zmianach okazało się, iż aby wyliczyć, w jakiej kwocie należy wydać resztę należy odjąć atrybut - cena produktu (priceList[chosenProduct]), od atrybutu wpłacona przez klienta kwota (remittance). Reszta=wpłata-cena. Tak powstały atrybut należy dalej wykorzystać do sprawdzenia, czy biletomat posiada środki do wydania reszty. Powoduje to porównanie atribute2atribute, które może zostać zapisane niejednoznacznie tj. gdy fundsInMachine<change lub change>fundsInMachine atrybut enoughCashToChange jest prawdą, aby nie powodować reguł redundantnych koniecznym wydaje się przyjęcie jednolitej konwencji np w postaci ustalania jednego (np. skrajnie prawego w tabeli) jako dowolnego/stałego i dopasowywanie prawego jako większego/mniejszego niż prawy. Pytanie co stanie się przy większej ilości atrybutów |
| |
| 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 |