food-chain/README.MD
2021-01-05 14:37:26 +01:00

38 lines
2.1 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á PartiesReport.
- 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. BahavioralDiagram byl náš prvotní návrh a není aktuální. Ostatní reporty odpovídají realitě.
- Javadoc je ve složce resources v souboru FoodChain.html.
***