IB053 Simulátor řízené křižovatky Zadávací dokumentace projektu Název projektu: IB053 Simulátor řízené křižovatky Účel projektu: zápočtový příklad Verze dokumentu: 1.0 Datum: 8.3.2018 Autor: Petr Steinmetz Zadavatel: Petr Steinmetz Řešitel: studenti IB053 1 Obsah  Obsah Cíl projektu Úvod projektu Součásti řešení projektu Analytická část (pro vedoucího týmu) Vývojová část (programování) Minimální zadání 2 Cíl projektu  Cílem projektu je vytvoření aplikace - simulátor křižovatky. Aplikace je rozdělena na dvě části - řídící jednotka a vizuální prezentace. Obě části mohou běžet odděleně a komunikují spolu přes webovou službu. Serverem je řídící jednotka i prezentační část, jde tedy o dvě webové služby. Každá z části poskytuje jednu z nich a druhá jí přes ni posílá události nebo pokyny. Webová služba je typu RESTful, data předávaná oběma směry jsou v JSON. Úvod projektu  Projekt vytvoří (až) tříčlenný tým, mezi jednotlivé osoby je potřeba rozdělit tyto úkoly: vytvoření grafické prezentace, komunikační vrstva a řídící server. Jeden ze členů je vedoucím týmu, který upřesní detaily zadání, koordinuje práce a řídí testování. Server je možné vytvořit v libovolném programovacím jazyku. Pokud ale půjde o jiný jazyk než Java, C/C++, C# nebo Python, je nutno výběr konzultovat se zadavatelem. Předání díla spočívá v předvedení funkčnosti, předání zdrojových textů mailem a obhájení zdrojových textů před zadavatelem (bude velmi šťouravý) :-) Součásti řešení projektu  Projekt se skládá z části analytické a vývojové. Analytická část (pro vedoucího týmu)  - upřesnit rozhraní webové služby (tj. jaké položky se budou jednotlivými službami předávat) - rozdělit aplikaci na nezávislé moduly a sepsat zadání podle kterého bude možné jednotlivé moduly naprogramovat - najít dostupné knihovny pro zvolený programovací jazyk, které usnadní vývoj - sepsat strategii testování aplikace Výsledkem této části jsou dokumenty. Dokumentaci každého modulu a plán postupu testování je potřeba v průběhu řešení zaslat zadavateli k odsouhlasení. Vývojová část (programování)  - programování modulů dle rozdělení mezi jednotlivé členy týmu - testování, koordinace Úkolem vedoucího týmu je - sledovat a mít přehled o průběhu práce jednotlivých řešitelů - určit časový harmonogram a zajistit jeho dodržení - přebírat a kontrolovat dokumenty s návrhem modulů 3 - přebírat a testovat dodané moduly Předání hotového řešení je věcí všech řešitelů. Minimální zadání  Světelná křižovatka se skládá ze dvou křížících se ulic, na jedné z nich jezdí tramvaj. Na každé z ulic je před i za křižovatkou přechod pro chodce, celkem tedy čtyři. Na dvou z nich běží normální cyklus, na zbylých dvou svítí trvale červená a chodec si musí stisknout tlačítko, aby se rozsvítila zelená. Pokud se ke křižovatce blíží tramvaj, dostane automaticky v nejkratší době zelenou. Tramvaje jezdí v náhodných intervalech, stejně tak auta. Pokud má vozdilo červenou, tak počká před křižovatkou. Celá grafika může být jen velmi symbolická (pohybující se obdélníčky - auta a tramvaje). Uživatel ovládá buď myší nebo klávesnicí tlačítka pro chodce. Prezentační část posílá řídící jednotce události, kterými jsou - blížící se tramvaj z jednoho směru - blížící se tramvaj z druhého směru - stisknutí tlačítka na jednom přechodu - stisknutí tlačítka na druhém přechodu Řídící jednotka vydává pokyny - ovládání všech semaforů Křižovatka by měla běžet v nějaké standardním intervalu s tím, že v jednom směru se předpokládá větší intenzita dopravy než v kolmém směru. Tomu je potřeba interval přizpůsobit. K narušení intervalu dochází příjezdem tramvaje nebo stisknutím tlačítka na přechodu. Zadání neřeší kde každá z částí vezme IP adresu a port webové služby té druhé části. To si rozhodne každý tým sám (konfigurační soubor, dotaz na uživatele po spuštení apod.) 4