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 v souboru FoodChain.html.

Description
No description provided
Readme 961 KiB