41 lines
2.3 KiB
Markdown
41 lines
2.3 KiB
Markdown
***
|
|
**Funkční požadavky:**
|
|
- F1: package node
|
|
- F2: package operation
|
|
- F3: OperationBase / lastOperation
|
|
- F4: FoodChainReportVisitor
|
|
- F5: package channel
|
|
- F6: scénář double-spending-scenario.xml + kontrola při změně productState (konkr. změna na stav IN_REQUIREMENT)
|
|
- F7: lastOperation se nastavuje pouze v konstruktoru a není možné ji ji přepsat zpětně => nelze odsimulovat
|
|
- F8: Product => setStateTo...()
|
|
- F9: Requirement + NodeBase / update()
|
|
- F10: package reporting
|
|
***
|
|
**Použité návrhové vzory:**
|
|
- Facade - FactoryManager
|
|
- Object pool - Skupina tříd v package pool
|
|
- Simple factory - Skupina tříd v package factory
|
|
- Strategy - ScenarioStep + odděděné třídy
|
|
- Observer - Kombinace channel + node (observable + observer)
|
|
- State - State machine ve třídě produktu
|
|
- Visitor - Skupina tříd použitá v reportingu
|
|
- Singleton - Využit u poolů a factory
|
|
- Builder - Report builder
|
|
***
|
|
**Nefunkční požadavky:**
|
|
- Aplikace nepožaduje autentizaci ani autorizaci.
|
|
- Do konzole se při každém ticku vypisují provedené úkony. Z toho pak vzniká TransactionReport.
|
|
- V systému není centrální autorita, jednotlivé nody na sebe nevidí a jediná třída přes kterou procházejí všechny transakce je SignatureManager, který je v tomto směru naprosto neutrální. Aplikace běží pouze v jednom threadu.
|
|
- Všechny proměnné jsou private nebo protected. Většina proměnných je final, abychom se vyhnuli např. změtným úpravám transakcí.
|
|
- SignatureManager přidává na transakce Signature, které následně i validuje. Node zahazuje (ukládá jako neplatné) všechny nevalidní transakce.
|
|
- Reporty se generují do stejnojmenných textových souborů.
|
|
- Konfigurace probíhá pomocí XML souborů (defaultně ve složce conf).
|
|
***
|
|
**Požadované výstupy:**
|
|
- Diskrétní kroky jsou realizovány pomocí třídy Ticker resp. metody tick() na jednotlivých třídách.
|
|
- Diagramy jsou ve složce resources v souboru FoodChain.eap.
|
|
- Javadoc je ve složce resources/javadoc.
|
|
***
|
|
Pro spuštění aplikace s jiným scénářem napište jeho cestu (tedy např. conf/double-spending-scenario.xml) jako první parametr při spuštění programu.
|
|
Druhá varianta je vypsání cest ke všem scénářům jako argumenty programu v pořadí: kanály, nody, produkty, scénáře.
|
|
*** |