Informační systém pro speciální školu

Podobné dokumenty
Základní školení pro administrátory

Směrnice pro provoz webové aplikace Katedra

Evidence požadavků uživatelů bytů a nebytových prostor

Studijní skupiny. 1. Spuštění modulu Studijní skupiny

Nemocnice. Prvotní analýza a plán projektu

Elektronické zpracování dotazníků AGEL. Verze

Už ivatelska dokumentace

Studijní informační systém. Tvorba rozvrhu ve Studijním informačním systému (SIS) I. Obecné principy

Uživatelská příručka

CUZAK. Uživatelská příručka. Verze

Informační systém Národní soustavy kvalifikací (IS NSK) Návod na obsluhu interního webu - tvorba kvalifikačního a hodnoticího standardu

UŽIVATELSKÁ PŘÍRUČKA UČITEL

Reportní systém MANTIS

POKYNY K REGISTRACI PROFILU ZADAVATELE

Docházkový systém modul E-PORTÁL

Uživatelská příručka

Školící dokumentace administrátorů IS KRIZKOM (úroveň ÚSÚ) role ( administrátor )

Nápověda pro systém moje.i-zakovska.cz

Školící dokumentace administrátorů IS KRIZKOM (úroveň KRAJ) (role manager, administrátor )

Informační manuál IS STUDIUM HROCH.CZU.CZ

Uživatelská příručka

Webové rozhraní informačního systému Bakaláři

Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná.

Gymnázium a Jazyková škola s právem státní jazykové zkoušky Zlín. Novinky v elektronické žákovské knížce

Prohlížení a editace externích předmětů

Uživatelský manuál pro aplikaci Panda (pro rodiče)

Informační systém pro e-learning manuál

Web-Exam. Průvodce lektora administrační částí

TERMÍNY ZKOUŠEK VYPISOVÁNÍ (verze 2)

Manuál PVU zadavatel Platnost pro elektronický nástroj X-EN verze 3 a novější

Personální evidence zaměstnanců

Postupy práce se šablonami IS MPP

Uživatelská příručka administrativního rozhraní Vědecké knihovny v Olomouci

Průvodce aplikací FS Karta

1 Administrace systému Moduly Skupiny atributů Atributy Hodnoty atributů... 4

W E B O V Á A P L I K A C E P R O G R A M U B A K A L Á Ř I

Použití informačního systému Helios Orange Personalistika

Elektronické výpisy v BankKlientovi

CUZAK. Uživatelská příručka. Verze

Převod na nový školní rok

Návod k elektronické žákovské knížce

Manuál PVU zadavatel Platnost pro elektronický nástroj X-EN verze 4 a novější

Evidence přítomnosti dětí a pečovatelek. Uživatelský manuál

STŘEDNÍ ŠKOLA INFORMAČNÍCH TECHNOLOGIÍ A SOCIÁLNÍ PÉČE

Manuál. Omluvenky online

Lokality a uživatelé

Popis aplikace Portál práce pro oblast bezpečnostních služeb

Modul NEPŘ Í TOMNOSTÍ

Zápis předmětů a rozvrhu

Příručka pro uživatele. Zaměstnanci školy a profesoři

Práce s osobními údaji studentů a uchazečů o studium

PRÁCE S APLIKACÍ Evidence městských knih

Use Case Model - Complete Report Grouped by Item Kind, Full Descriptions

Výtisk č.: Počet listů 19. Přílohy: 0 ÚZIS ČR. Role žadatel - postup

Manuál pro InspIS HELPDESK

PROFI TDi s.r.o , Želetice 40 Návod k používání systému OTDI.CZ

Manuál pro práci s modulem Otázky a odpovědi

Technologické postupy práce s aktovkou IS MPP

Bakaláři elektronická žákovská knížka (přístup rodičů)

APOLLO, stručný manuál

K práci je možné přistoupit následujícím způsobem. Odkaz na práci se nachází na osobním webu autora práce:

PRO PRÁCI S APLIKACÍ SKV - VÝBĚR KVALITNÍCH VÝSLEDKŮ

ČNHP. Příručka pro pacienty. Institut biostatistiky a analýz. Vytvořil:

ZÁZNAMNÍK UČITELE - 1. BLOK

Provozní dokumentace. Seznam orgánů veřejné moci. Příručka pro běžného uživatele

Elektronická třídní kniha Manuál na ovládání webového rozhraní systému Bakaláři

Informační systém pro nemocnici

PhD. Milan Klement, Ph.D. Použití systému studijní agendy STAG

Ostatní portálové aplikace

Příručka ke zřízení a užívání profilu zadavatele. Příručka určená pro uživatele elektronického nástroje E-ZAKAZKY společnosti OTIDEA CZ s.r.o.

Novinky verze systému Spisové služby (SpS) e-spis LITE

Kurzy. v 2.0. Níže popsaný návod je určen pro uživatele s rolí Administrátor, není-li uvedeno jinak. Základní popis kurzu 2

5 Evidence manželských smluv

Řízení prací na vodovodních sítích

KSRZIS. Příručka - Role žadatel. Projekt - ereg - Úprava rezortních registrů a konsolidace rezortních. dat v návaznosti na základní registry VS

SPRÁVA STÁTNÍCH HMOTNÝCH REZERV

Jednoduchý uživatelský manuál k programu Cat s Paradise

E-learningovýsystém Moodle

Uživatelská příručka epusa. Březen Brojova 16, Plzeň IČO: , DIČ: CZ ,

Externí spolupracovníci

Úvod...1 Instalace...1 Popis funkcí...2 Hlavní obrazovka...2 Menu...3 Práce s aplikací - příklad...5

Dotace na podporu sociální práce

UŽIVATELSKÁ PŘÍRUČKA PRO SLUŽBU INTERNETBANKING PPF banky a.s.

Akce spojené s osobami

NÁVOD K ELEKTRONICKÉ ŽÁKOVSKÉ KNÍŽCE

Návod pro uživatele ISIS

CRM - manuál. Vypracovala: Monika Balažovičová [1] Softapp s.r.o., Kouty 1419, Valašské Meziříčí, tel.:

1. Pro přihlášení k odběru novinek klikněte na tlačítko Registrace nového uživatele.

Obsah. 1.1 Práce se záznamy Stránka Dnes Kontakt se zákazníkem... 5

Provozní dokumentace. Seznam orgánů veřejné moci. Příručka pro běžného uživatele

Postup instalace síťové verze Mount Blue

Jednotný identitní prostor Provozní dokumentace

Stručný průvodce aplikací Sběr dat pro RIV

1. Pro přihlášení k odběru novinek klikněte na tlačítko Registrace nového uživatele.

Registrace a aktivace uživatelského profilu k přístupu do systému erecept pro pacienta

ZAMĚSTNANECKÝ PORTÁL nastavení a práce v ESO9 PAM

Pravidla a plánování

Uživatelské účty k modulům APV OKnouze/Okslužby pro kraje

Povinně Volitelné a Volitelné předměty INFORMACE & ZÁPIS SIS

Transkript:

České vysoké učení technické v Praze Fakulta elektrotechnická Diplomová práce Informační systém pro speciální školu Pavel Digaňa Vedoucí práce: Ing. Michal Voráček Studijní obor: Elektrotechnika a informatika Obor: Výpočetní technika 2007 / 2008

II

Zadání Navrhněte a implementujte studijní informační systém určený pro Speciální školu v Přerově. Systém bude umožňovat vést celkovou agendu o žákovi (tj. prospěch, absence na jednotlivých hodinách, odstudované předměty atp.), udržovat potřebné informace o učitelích a předmětech, vytvářet rozvrh, zasílat zprávy uživatelům. Uživatelé budou komunikovat se systémem pomocí webového prohlížeče. Systém bude podporovat uživatelské role. Systém bude lokalizovatelný. Další požadované funkce systému budou dány výsledkem analýzy. Analytická dokumentace bude součástí práce. K implementaci použijte programovací jazyk Java spolu s vhodnými J2EE frameworky a vhodnou relační databází. III

IV

Poděkování Na tomto místě bych chtěl poděkovat všem, kteří mě podporovali při psaní této diplomové práce. Především bych chtěl poděkovat vedoucímu diplomové práce Ing. Michalu Voráčkovi za jeho rady a připomínky. Poděkování patří také pedagogům ze ZŠ a MŠ Přerov, kteří mi pomohli praktickými radami a mým rodičům, kteří mě po celou dobu studia podporovali. V

VI

Prohlášení Prohlašuji, že jsem svou diplomovou práci vypracoval samostatně a použil jsem pouze podklady uvedené v přiloženém dokumentu. Nemám závažný důvod proti užití tohoto dokumentu ve smyslu 60 Zákona č. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů (autorský zákon). V Praze dne 16.5.2008.. VII

VIII

Abstract This thesis deals with the analysis requirements of school information system for Základní školu a Mateřskou školu Přerov, design and its own implementation. The final information system should be used by employees of the school and pupil s parents, mainly to improve mutual communication across subjects involved into the system and in the efect make them the work easier and more effective. Abstrakt Tato diplomová práce se zabývá analýzou požadavků na školní informační systém pro Základní školu a Mateřskou školu Přerov, návrhem a jeho vlastní implementací. Výsledný informační systém by měl sloužit pro zaměstnance školy a rodiče žáků, hlavně k zlepšení komunikace mezi subjekty zapojených do systému a ve výsledku by měl celý systém ulehčit a zefektivnit jejich práci. IX

X

Obsah 1. Úvod... 1 1.1. Cíl práce... 1 1.2. Odborný článek... 1 1.2.1. Vymezení a popis procesů na základní škole... 2 1.2.2. Vymezení rozsahu a funkcí informačního systému... 3 1.2.3. Nefunkční požadavky... 5 2. Analýza... 6 2.1. Uživatelé... 6 2.2. Diagramy případů užití... 7 2.2.1. Akademický rok... 7 2.2.2. Předměty...21 2.2.3. Studijní info...25 2.2.4. Uživatelé...33 2.2.5. Zprávy...38 2.3. Diagramy tříd...41 2.3.1. Balíček Business...41 2.3.2. Balíček Communication...42 2.3.3. Balíček Resources...42 2.3.4. Balíček Study...43 2.3.5. Balíček Subject...44 2.3.6. Balíček Users...45 2.4. Diagram aktivit...45 2.5. Vytvoření školního roku...46 2.6. Sekvenční diagramy...46 2.6.1. Založení nového školního roku...46 2.6.2. Vypsání předmětů pro akademický rok...47 2.6.3. Vytvořit úvazek pro učitele pro školní rok...48 2.6.4. Založení tříd pro akademický školní rok...48 2.6.5. Založení vyučovacích hodin...49 2.6.6. Tvorba rozvrhu...50 2.7. Slovníček pojmů...51 3. Návrh...53 XI

3.1. Návrh architektury IS...53 3.2. Diagram nasazení (Deployment diagram)...56 3.3. Diagram komponent...57 3.4. Platform Specific Model (PSM)...58 3.4.1. Balíček Business...58 3.4.2. Balíček Communication...59 3.4.3. Balíček Resources...60 3.4.4. Balíček Study...60 3.4.5. Balíček Subject...61 3.4.6. Balíček Users...62 3.5. Model uložení dat...63 3.6. Menu...66 4. Use Ability testy...70 4.1. Účastnící testů...70 4.2. Definice úkolů...70 4.2.1. Úkol 1...70 4.2.2. Úkol 2...71 4.2.3. Úkol 3...71 4.2.4. Úkol 4...71 4.2.5. Úkol 5...72 4.2.6. Úkol 6...72 4.2.7. Úkol 7...72 4.3. Záznam řešení...72 4.3.1. Úkol 1...72 4.3.2. Úkol 2...73 4.3.3. Úkol 3...75 4.3.4. Úkol 4...76 4.3.5. Úkol 5 a 6...78 4.3.6. Úkol 7...79 4.4. Seznam problémů a návrh řešení...80 4.4.1. Úkol 1...80 4.4.2. Úkol 2...81 4.4.3. Úkol 3...81 4.4.4. Úkol 4...81 XII

4.4.5. Úkol 5 a 6...82 4.4.6. Úkol 7...82 5. Závěr...83 6. Literatura...84 7. Přílohy...85 7.1. Příloha DVD...85 7.1.1. Obsah DVD...85 7.1.2. Spuštění aplikace pod VMWare...85 7.2. Screenshoty aplikace...86 7.2.1. Přihlašovací stránka...86 7.2.2. Menu po přihlášení pod rolí Director...87 7.2.3. Seznam vypsaných předmětů pro školní rok...87 7.2.4. Rozvrh žáka...88 7.2.5. Zapisování absence učitelem...89 7.2.6. Přeřazení žáka do jiné třídy...90 7.2.7. Vytvoření nové zprávy...90 7.2.8. Příklad anglické lokalizace na detailu přijaté zprávy...91 7.2.9. Zobrazení prospěchu žáka...91 7.2.10. Vytvoření nového žáka přes roli UserManager...92 XIII

XIV

Seznam obrázků Obrázek 1: Diagram uživatelských rolí... 6 Obrázek 2: UC Akademický rok... 7 Obrázek 3: UC Předměty...21 Obrázek 4: UC Studijní info...25 Obrázek 5: UC Uživatelé...33 Obrázek 6: UC Zprávy...38 Obrázek 7: Diagram tříd - Business...42 Obrázek 8: Diagram tříd Communication...42 Obrázek 9: Diagram tříd Resources...43 Obrázek 10: Diagram tříd - Study...44 Obrázek 11: Diagram tříd - Subject...45 Obrázek 12: Diagram tříd - Users...45 Obrázek 13: AD - Vytvoření školního roku...46 Obrázek 14: Sekvenční diagram - Založení nového školního roku...47 Obrázek 15: Sekvenční diagram Vypsání předmětů pro akademický rok...47 Obrázek 16: Sekvenční diagram - Vytvořit úvazek pro učitele pro školní rok...48 Obrázek 17: Sekvenční diagram - Založení tříd pro akademický školní rok...49 Obrázek 18: Sekvenční diagram - Založení vyučovacích hodin...50 Obrázek 19: Sekvenční diagram - Tvorba rozvrhu...51 Obrázek 20: Příklad realizace vazeb mezi třídami IS...55 Obrázek 21: Diagram nasazení...56 Obrázek 22: Diagram komponent...57 Obrázek 23: Balíček tříd Business...59 Obrázek 24: Balíček tříd Communication...59 Obrázek 25: Balíček tříd Resources...60 Obrázek 26: Balíček tříd Study...61 Obrázek 27: Balíček tříd Subject...62 Obrázek 28: Balíček tříd Users...63 Obrázek 29: Model uložení dat, část 1....64 Obrázek 30: Model uložení dat, část 2....65 Obrázek 31: Model uložení dat, část 3....66 Obrázek 32: Menu role Director a Vice director...67 XV

Obrázek 33: Menu role Teacher...68 Obrázek 34: Menu role Pupil...68 Obrázek 35: Menu role UserManager...69 Obrázek 36: Screenshot - přihlašovací stránka...86 Obrázek 37: Screenshot - menu po přihlášení pod rolí Director...87 Obrázek 38: Screenshot - seznam vypsaných předmětů pro školní rok...87 Obrázek 39: Screenshot - rozvrh žáka...88 Obrázek 40: Screenshot - zapisování absence učitelem...89 Obrázek 41: Screenshot - přeřazení žáka do jiné třídy...90 Obrázek 42: Screenshot - vytvoření nové zprávy...90 Obrázek 43: Screenshot - příklad anglické lokalizace na detailu přijaté zprávy...91 Obrázek 44: Screenshot - zobrazení prospěchu žáka...91 Obrázek 45: Screenshot - vytvoření nového žáka přes roli UserManager...92 XVI

Úvod 1. Úvod Informační systém pro základní školy je specializací obecného informačního systému. Informační systém slouží pro ukládání, zpracování a poskytování informací a dat. Informační systém má za úkol zjednodušit a zefektivnit práci uživatelů, kteří s ním pracují. Obecný informační systém nemusí být založen na využití prostředků výpočetní techniky, ale je možno jej vnímat pouze jako způsob zaznamenávání a evidence informací. Příkladem mohou být papírové kartotéky všeho druhu, např. v knihovnách, a nebo kartotéky obsahující záznamy katastrálních území apod. Výpočetní technika je pouze prostředkem k zefektivnění práce s tímto systémem. V této práci budeme informační systém, dále IS, vnímat jako softwarový produkt. Hlavním důvodem využívání IS ve školství, je snadná dostupnost mnoha informací o žákovi, zlepšení komunikace učitel-rodič a tím možného docílení zlepšení prospěchu žáka. Další důležitou funkcí tohoto systému je snadná dostupnost historických dat. 1.1. Cíl práce Cílem této diplomové práce je analýza požadavků, návrh analytických tříd, výběr vhodných frameworků pro implementaci, provedení Use ability testů na prototypu a následná implementace. Návrh vychází z reálných požadavků školy Základní škola a Mateřská škola Přerov, Malá Dlážka 4, 750 00 Přerov. V první fázi projektu, kterému se věnuje tato diplomová práce, byl kladen důraz na vytvoření obecného jádra, který je znovupoužitelný na většině základních škol, popř. některých středních škol. Hlavním cílem bylo vytvořit moderní a lehce rozšiřitelný systém, jež obsahuje obecnou agendu společnou pro většinu škol a přitom již obsahuje střípky nového školního vzdělávacího programu nastaveném Ministerstvem školství, mládeže a tělovýchovy. V dalších fázích projektu se počítá s přidáváním dalších komponent do systému jako rozšíření Školního vzdělávacího programu, rozšíření agendy učitelů (suplování, žádosti o dovolenou apod.), správa budovy a jejího majetku. 1.2. Odborný článek Tato kapitola vymezuje rozsah a funkce informačního systému, dále IS, pro základní školy a popisuje procesy na škole. Rozsah a funkce IS nejsou popisovány detailně ve smyslu přesné analýzy a konkrétních scénářů, ale jedná se o popis ideové koncepce systému a zmapování představ zadavatele a aktuální situace. 1

Úvod 1.2.1. Vymezení a popis procesů na základní škole Součástí školy jsou: Základní škola praktická, Základní škola speciální, Školní družina, Základní škola a Mateřská škola při zdravotnickém zařízení. Základní škola praktická poskytuje vzdělávání žákům, u kterých byly zjištěny speciálně vzdělávací potřeby na základě psychologického vyšetření školským poradenským zařízením (Pedagogicko-psychologická poradna) a jejich závažnost je důvodem k zařazení do speciálního vzdělávání. Bližší informace o vzdělávání dětí, žáků a studentů se speciálními vzdělávacími potřebami upřesňuje vyhláška č. 73/2005 Sb. Žáci jsou vzděláváni podle vzdělávacího programu č.j. 22 980/97-22 Zvláštní škola ze dne 20.6.1997. Procesy v základní škole praktické jsou nastavené jako v klasické základní škole. Hlavní rozdíl je v objemu vyučované látky za školní docházku. Pro splnění povinné školní docházky je potřeba absolvovat 9 let. Základní škola má ředitele, jednoho nebo více zástupců ředitele, různý počet učitelů, administrativní pracovníky a údržbáře. Každá škola má jednu a nebo více budov, ve kterých se nacházejí učebny, kabinety, sborovny, popřípadě tělocvična a šatny. K místnostem může být přiřazen inventář jako stoly, židle apod. Ředitel nebo zástupce ředitele vytváří každoročně školní rozvrh, což obnáší definici tříd a přiřazení žáků do těchto tříd, určení třídního učitele, který se stará o docházku žáků a eviduje omluvenou a neomluvenou absenci. Jestliže žák ví o nepřítomnosti předem, je povinen ji oznámit dopředu. Každé pololetí jsou vytvořeny z těchto nepřítomností souhrnné výstupy, které se zapisují na vysvědčení. Jednotlivé předměty se v týdnu vyučují většinou vícekrát, jsou rozděleny do tzv. vyučovacích hodin, které mají přiřazen čas vyučování a učebnu. Počet vyučovaných hodin za týden a za předmět se nazývá dotace hodin předmětu. Podle Školního vzdělávacího programu ZŠ a MŠ Přerov, dále ŠVP, každá vzdělávací oblast má svou charakteristiku, která se skládá ze tří hlavních větví Obecné údaje, Kompetence a Výchova. Tyto větve se dále dělí: Obecné údaje Název, Obecný popis. Kompetence Kompetence k učení, Kompetence k řešení problémů, Komunikativní kompetence, Kompetence sociální a personální, Kompetence občanské, Kompetence pracovní. Výchova Osobnostní a sociální výchova, Výchova demokratického občana, Výchova v myšlení v evropských globálních souvislostech, Multikulturní výchova, Enviromentální výchova, Mediální výchova. Každá charakteristika je pokryta předměty za celou školní docházku. Žáci jsou za své dosažené znalosti hodnoceni stupnicí známek od 1 do 5. Učitelé rozlišují za jaký typ hodnocení známku získal. Do dalšího ročníku žák postupuje v případě, že jeho znalosti 2

Úvod odpovídají předepsané míře, která je hodnocena dosaženými známkami za pololetí školního roku. Žák může přestoupit na jinou základní školu a nebo ze závažných důvodů přerušit docházku. Základní škola speciální je ustanovena jako desetiletá škola organizačně dělená do 4 stupňů. Mnoho dětí je také vzděláváno individuálně a mají vypracován individuální vzdělávací program. Děti s těžkým mentálním postižením jsou vzdělávány podle Rehabilitačního vzdělávacího programu pomocné školy č.j. 15 988/2003-24, ostatní žáci základní školy speciální jsou vzděláváni podle Vzdělávacího programu č.j.24 035/97-22 Školní družina slouží jako doplněk školní docházky, supluje částečně rodinné prostředí, zejména dětem, které pocházejí z rodin sociálně znevýhodněných a dysfunkčních. Úkolem Školní družiny je především zájmová činnost, rozvoj citových a osobnostních vztahů a návyk na soužití v kolektivu. Mateřská škola při zdravotnickém zařízení se stará o vzdělávání dětí, jejichž současný zdravotní stav jim nedovoluje navštěvovat kmenovou školu. Děti jsou zde vzdělávány individuálně s ohledem na vzdělávací program kmenové školy, zdravotní stav a jejich znalosti a potřeby. 1.2.2. Vymezení rozsahu a funkcí informačního systému V první fázi projektu je potřeba navrhnout a implementovat informační systém pro Základní školu praktickou, dále IS. Pokud dále v textu bude zmíněný pojem Základní škola, je na mysli Základní škola praktická. IS musí být dostupný z internetu přes webový prohlížeč. IS musí splňovat webové standardy podle komunity http://www.w3.org/. Přihlašování do systému bude pomocí unikátního uživatelského jména a vygenerovaného silného hesla různá kombinace velkých a malých písmen a číslic, nesmí být shodné s uživatelským jménem. IS bude obsahovat uživatelské role ředitel, zástupce ředitele, učitel, žák, uživatelský administrátor. Pro zlepšení komunikace mezi zaměstnanci je požadováno, aby každý uživatel s přístupem do systému měl právo posílat zprávy ostatním uživatelům, tudíž je potřeba vytvořit interní komunikační kanál podobný emailu. Uživatel smí vytvořit zprávu a také na ni být schopen 3

Úvod odpovědět i s citací zprávy původní. Nejsou zde žádné omezení týkající se komunikace mezi různými rolemi. Role ředitel a zástupce ředitele jsou ekvivalentní, zástupce musí být schopen v nepřítomností ředitele zastávat všechny jeho funkce. Ředitel, resp. zástupce ředitele, vytváří rozvrh pro celý školní rok a v průběhu roku upravuje. Vypisuje týdenní úvazky učitelů pro daný školní rok. Vytváří školní třídy, které budou existovat ve školním roce, přiřazuje těmto třídám třídní učitele a docházející žáky. Každý rok se určuje jaké předměty a jaké hodiny jsou vyučovány a k těmto předmětům, resp. vyučovacím hodinám, jsou přiřazováni učitelé, jež je učí. Rozlišujeme předměty na povinné a nepovinné v rámci školní docházky. Do povinných dochází všichni žáci určené třídy a do nepovinných se žáci sami přihlašují. Ředitel musí mít možnost připravit rozvrh, aniž by k němu měli přístup ostatní uživatelé a určuje sám čas, kdy jej zpřístupní i ostatním. U předmětu je nutné evidovat tyto atributy Název, Povinnost, Rok školní docházky a popis. Každý předmět je přiřazen charakteristice. Ředitel a Uživatelský administrátor zakládají nové zaměstnance a žáky a také jim ruší již existující účty a zamezují přístupu. S každým novým zaměstnancem čí žákem je automaticky vytvořen uživatelský účet v IS a tento účet je po založení ihned aktivní. V případě zapomenutého hesla do IS, Ředitel a Uživatelský administrátor musí být schopen vygenerovat nové heslo. K zamezení zbytečné administrativy učitel smí vygenerovat heslo pro žáky, pro něž je třídním učitelem. Takto vygenerované heslo a nebo nový uživatelský účet je zaslán na email uživatele, který jej vygeneroval či vytvořil. Toto heslo je pak v papírové podobě předáno uživateli. U každého uživatele je potřeba vést osobní údaje: jméno, příjmení, bydliště, datum a místo narození, národnost, občanství, zdravotní pojišťovna. U zaměstnance dále: počet dětí, vzdělání, platová třída a stupeň, datum zdravotní prohlídky. U žáka dále: rok školní docházky, studijní stav, datum zápisu do 1. třídy a školy, typ postižení, nemoci a číslo závěrečného vysvědčení. Učitel má přístup jak k aktuálním, tak k historickým rozvrhům všech žáků i učitelů za roky, kdy měl vypsán úvazek. Třídní učitel omlouvá a zapisuje nepřítomnost žáků. V IS existují 4 druhy nepřítomnosti nepřítomný, plánovaná nepřítomnost, omluvená nepřítomnost, neomluvená nepřítomnost. Žák si může pouze naplánovat absenci do budoucnosti, ale nesmí rušit plánované absence v minulosti. Učitel zapisuje bez omezení a má přístup k souhrnné sestavě nepřítomností za každé pololetí ve školním roce. 4

Úvod Učitelům IS poskytuje seznam vyučovaných předmětů, u kterých si každý učitel zvlášť určí druhy známek, např. zkoušení, čtvrtletní práce apod. Známky jsou vždy vztaženy k pololetí daného školního roku. U každé známky je potřeba vést datum obdržení, kdo zapsal, druh známky a poznámka. Žák po přihlášení do systému musí mít přístup k jeho celkové nepřítomnosti, prospěchu ze všech studovaných i odstudovaných předmětů, k osobnímu rozvrhu. Každý uživatel musí mít přístup ke svému osobnímu profilu pro případnou kontrolu vedených informací. 1.2.3. Nefunkční požadavky Do nefunkčních požadavků uvádím požadavky, které přímo nesouvisí s nabízenými službami, ale přesto nějakým způsobem s vlastním systémem souvisejí. N1: Systém bude provozován na linuxovém serveru. N2: Systém bude dostupný přes webový prohlížeč z internetu N3: Systém bude odpovídat standardům W3.org N4: Systém bude lehce rozšiřitelný o další komponenty. 5

Analýza 2. Analýza Analýza vychází z reálných požadavků pro školní informační systém. Je postavena na Odborném článku a byla upřesněna díky rozhovorům se zadavatelem a koncovými uživateli. 2.1. Uživatelé composite structure Uživatelé User Employee Director Pupil Zastupuje Teacher UserManager Vice Director Obrázek 1: Diagram uživatelských rolí Každý přihlášený uživatel má přiřazenu jednu uživatelskou roli, podle které se určuje k jakým funkcím má přístup. Tyto funkce vyplývají z diagramu případů užití. Do systému je zavedeno 5 následujících rolí: Role Director je uživatelská role určená pro ředitele.školy. Vice Director je určena pro zástupce ředitele a tato role má nastaveny stejná práva a má přístup ke stejným volbám jako ředitel školy, aby byl bezezbytku zastupitelný. Role Teacher se zavádí pro učitele. Role UserManager odpovídá uživatelskému administrátorovi a je určená pro administrativní pracovníky školy. Role Pupil je pro rodiče žáka, resp. pro samotného žáka, pokud je plnoletý. 6

Analýza 2.2. Diagramy případů užití Každý případ užití je popsán scénáři až na úroveň formuláře. Každý z těchto formulářů má svůj unikátní identifikátor v systému. 2.2.1. Akademický rok uc Akademický rok Informační systém Rozvrhy učitelů «extend» Rozvrh uživatele Tvorba rozvrhů Seznam a založení nov ého školního roku «include» «include» Vypsání předmětů pro akademický rok Pupil (from Users) «extend» Vytv oření akademického roku «include» Rozvrhy žáků «include» Přidat žáka do třídy «include» «include» «include» Seznam a založení v yučov acích hodin Teacher (from Users) Založení a editace třídy pro akademický rok Vytvořit úv azek učitele pro školní rok «extend» «extend» Director (from Users) Smazání třídy «extend» Seznam tříd pro školní rok Seznam žáků v e třídě Employee (from Users) «extend» Osobní rozvrh Změnit třídu žáka User (from Users) Obrázek 2: UC Akademický rok 7

Analýza Osobní rozvrh Každý učitel a žák zapsaný do školního roku má osobní rozvrh. Pokud je učitel zapsaný do školního roku, má záznam v třídě InscribeInSchoolYear. Žák má rozvrh, pokud je zapsaný ve třídě vypsané pro daný školní rok. Uživatelům se zobrazí v seznamu školních roků jen ty roky, kde měli osobní rozvrh. Formulář 009 - Hlavní cesta 1. Uživatel zvolí z menu zobrazení osobního rozvrhu. 2. Systém nabídne uživateli osobní rozvrh pro aktuální školní rok. Formulář 009 - Změna školního roku - Hlavní cesta 1. Uživatel změní školní rok a změnu potvrdí tlačítkem 'Změnit školní rok'. 2. Systém nabídne uživateli osobní rozvrh pro vybraný školní rok. Přidat žáka do třídy K vybrané třídě je potřeba přiřadit žáky. Na formuláři pro přiřazení žáka do třídy se zobrazí seznam žáků, kteří ještě nemají přiřazenou třídu v daném roce a jejich SessionState je různý od FINISHED_STUDY. Formulář 029 - Hlavní cesta 1. Uživatel zvolil na formuláři Seznam žáků pro třídu (Formulář 028) volbu Přiřadit nového žáka. 2. Systém nabídl seznam všech žáků, kteří nemají přiřazenu třídu v daném školním roce a jejichž SessionState je různý od FINISHED_STUDY. 3. Uživatel zvolí žáka, kterého chce přiřadit do třídy. 4. Systém přiřadí žáka do třídy a zvýší rok školní docházky o 1. 8

Analýza Rozvrh uživatele Pokud je zvolen uživatel, který je učitel a uživatel je přihlášen pod rolí director, uživateli se zobrazí na rozvrhu volby pro editaci rozvrhu: Vložit hodinu, Odstranit hodinu. Pro ostatní případy se zobrazí pouze rozvrh uživatele. Formulář 040 - Hlavní cesta 1. Uživatel zvolil ze seznamu Rozvrhy žáků (Formulář 038) nebo Rozvrhy učitelů (Formulář 039) uživatele, pro kterého chce rozvrh zobrazit. 2. Přihlášený uživatel v roli Director a uživatel přichází z rozvrhu učitelů: Systém zobrazí Rozvrh učitele spolu s tlačítky pro editaci rozvrhu. Více viz. UC Tvorba rozvrhů. 2A. Přihlášený uživatel nemá roli Director: Uživateli se zobrazí rozvrh vybraného uživatele. Rozvrhy učitelů Uživatel si může zobrazit rozvrh jiného uživatele bez omezení. Aplikace omezuje jen zobrazení v různých školních rocích. Naplnění seznamu pro školní rok: Role Director - všechny školní roky Role Teacher - všechny školní roky, kde má osobní rozvrh Role Pupil - aktuální školní rok Formulář 039 - Hlavní cesta 1. Uživatel zvolil z menu Rozvrhy učitelů. 2. Systém nabídl seznam učitelů zapsaných pro daný školní rok. 3. Uživatel vybral učitele, pro kterého chce zobrazit rozvrh. 4. Systém přešel na Rozvrh učitele (Formulář 040). 9

Analýza Formulář 039 - Změna školního roku - Hlavní cesta 1. Uživatel změní školní rok a změnu potvrdí tlačítkem 'Změnit školní rok'. 2. Systém nabídne seznam učitelů pro vybraný školní rok. Naplnění seznamu pro školní rok: Role Director - všechny školní roky Role Teacher - všechny školní roky, kde má osobní rozvrh Role Pupil - aktuální školní rok Rozvrhy žáků Uživatel si může zobrazit rozvrh jiného uživatele bez omezení. Aplikace omezuje jen zobrazení v různých školních rocích. Naplnění seznamu pro školní rok: Role Director - všechny školní roky Role Teacher - všechny školní roky, kde má osobní rozvrh Role pupil - aktuální školní rok Formulář 038 - Hlavní cesta 1. Uživatel zvolil z menu Rozvrhy žáků. 2. Systém nabídl seznam žáků zapsaných pro daný školní rok. 3. Uživatel vybral žáka, pro kterého chce zobrazit rozvrh. 4. Systém přešel na Rozvrh žáka (Formulář 040). Formulář 038 - Změna školního roku - Alternativní cesta 1. Uživatel změní školní rok a změnu potvrdí tlačítkem 'Změnit školní rok'. 2. Systém nabídne seznam žáků pro vybraný školní rok. 10

Analýza Naplnění seznamu pro školní rok: Role Director - všechny školní roky Role Teacher - všechny školní roky, kde má osobní rozvrh Role pupil - aktuální školní rok Seznam a založení nového školního roku Založí se školní rok a k němu se vytvoří příslušná pololetí, 1. a 2. pololetí. Typ pololetí se bere z číselníku SchoolYearType. Při zakládání je školní rok nepublikovaný, publikování se děje až po vytvoření rozvrhu. Formulář 012 - Hlavní cesta 1. Uživatel z menu zvolí Seznam školních roků. 2. Systém nabídne Seznam školních roků seřazených sestupně. 3. Uživatel může odpublikovat dosud nepublikované školní roky. Formulář 012 - Publikace - Alternativní cesta 1. Uživatel zvolil publikaci školního. roku. 2. Systém se zeptá na potvrzení volby. 3. Uživatel potvrdí a systém nastaví atribut publicated na true. Formulář 013 - Hlavní cesta 1. Uživatel zvolí změnu Vytvoření nového školního roku. A1. Uživatel zvolí Vytvoření školního roku ze seznamu školních roků. 2. Systém nabídne položky pro vytvoření školního roku. 3. Uživatel vyplní začátek a konec školního roku a formulář odešle. 4. Systém potvrdí úspěšné uložení. 11

Analýza Seznam a založení vyučovacích hodin Ve vyučovací hodině fyzicky přiřazujeme učitele na předmět a určujeme pro jakou třídu je předmět vyučován a určujeme zda je hodina povinná pro celou třídu. Jestliže je hodina povinná, musí být určena třída. Formulář 035 - Hlavní cesta 1. Uživatel vybere z menu Vyučovací hodiny. 2. Systém nabídne uživateli seznam vyučovacích hodin. Formulář 035 - Změna školního roku - Alternativní cesta 1. Uživatel změnil aktuální školní rok. 2. Systém nabídne seznam vyučovacích hodin pro školní rok. Formulář 035 - Smazání vyučovací hodiny - Alternativní cesta 1. Uživatel vybere ze seznamu vyučovacích hodin, hodinu, kterou chce smazat. 2. Pokud je tato hodina v rozvrhu, tzn. má záznam v LessonTime, systém hodinu nesmaže, ale upozorní uživatele. 2A. Pokud hodina není v rozvrhu. Systém hodinu smaže. Formulář 036 - Vytvoření vyučovací hodiny. - Hlavní cesta 1. Uživatel zvolí ze Seznamu vyučovacích hodin (Formulář 035) volbu 'Vytvořit novou vyučovací hodinu'. 2. Systém nabídne uživateli formulář na vytvoření nové vyučovací hodiny. - Předmět - povinné - Seznam vypsaných předmětů pro školní rok. - Učitel - povinné - Seznam učitelů s úvazkem. - Povinný ve třídě - Určuje zda je povinný pro všechny žáky ve třídě. - Třída - Pokud je povinný ve třídě, také povinné. Jinak není povinné. 12

Analýza 3. Uživatel vyplní a odešle. 4. Systém uloží a zobrazí hlášku o správném uložení Formulář 037 - Úprava vyučovací hodiny - Hlavní cesta 1. Uživatel zvolí ze Seznamu vyučovacích hodin (Formulář 035) hodinu, kterou chce upravit. 2. Systém nabídne uživateli formulář na úpravu vyučovací hodiny. - Předmět - povinné - Seznam vypsaných předmětů pro školní rok. - Učitel - povinné - Seznam učitelů s úvazkem. - Povinný ve třídě - Určuje zda je povinný pro všechny žáky ve třídě. - Třída - Pokud je povinný ve třídě, také povinné. Jinak není povinné. 3. Uživatel vyplní a odešle. 4. Systém uloží a zobrazí hlášku o správném uložení. Seznam tříd pro školní rok Seznam tříd vypsaných pro daný školní rok. Každá třída má přiřazeného třídního učitele a počet hodin, které se v této třídě učí. Na seznamu se zobrazuje počet přiřazených žáků ve třídě. Formulář 025 - Hlavní cesta 1. Uživatel zvolil z menu Školní třídy. 2. Systém nabídne seznam tříd pro vybraný školní rok. Formulář 025 - Změna školního roku - Hlavní cesta 1. Uživatel změnil aktuální školní rok 2. Systém nabídne seznam tříd pro změněný školní rok. Seznam žáků ve třídě Seznam žáků přiřazených do třídy. 13

Analýza Formulář 028 - Hlavní cesta 1. Uživatel zvolí ze seznamu tříd(formulář 025) třídu, pro kterou chce zobrazit seznam žáků. 2. Systém zobrazí seznam žáků ve vybrané třídě(formulář 028). Smazání třídy Ze seznamu tříd je možné vybranou třídu smazat. Před smazáním se provede kontrola, zda do dané třídy nejsou přiřazeni někteří žáci. Formulář 025 - Smazání třídy - Hlavní cesta 1. Uživatel zvolil z menu Školní třídy. 2. Systém nabídne seznam tříd pro vybraný školní rok. 3. Uživatel zvolí třídu, kterou chce smazat. 4. Do třídy nejsou přiřazeni žádní žáci. Systém třídu smaže. 4A. Do třídy jsou přiřazeni žáci. Systém nahlásí, že není možno třídu smazat. Tvorba rozvrhů Založením vyučovacích hodin je vytvořena definice počtu hodin, které se mají zapsat do rozvrhu. Tvorba rozvrhu je už jen fyzické rozmístnění hodin do určitých hodin a místností. Ředitel může měnit pouze aktuální rozvrh a rozvrhy budoucí. Formulář 010 - Hlavní cesta 1. Uživatel zvolil z menu Školní rozvrh. 2. Systém nabídne uživateli rozvrh: - pondělí-pátek - hodiny rozvržené podle systémového parametru SCHEDULE_PATTERN - v každém políčku rozvrhu se nachází tlačítko pro vložení nové hodiny 14

Analýza Formulář 010 - Změna školního roku - Alternativní cesta 1. Uživatel změnil aktuální školní rok. 2. Systém nabídne rozvrh pro vybraný školní rok. Formulář 010 - Vložení nové hodiny do rozvrhu - Alternativní cesta 1. Uživatel klikne na tlačítko vložit v buňce rozvrhu. 2. Systém otevře popup okno s výběrem dané hodiny (Formulář 011). 3. Uživatel vybere hodinu a stiskne tlačítko Přidat hodinu do rozvrhu. 4. Systém změny uloží a zavře popup okno. Reloadne se výchozí stránka se školním rozvrhem. Pozn.: Práce s popup oknem je popsána v Scénář 'Formulář 011 - Přidání nové hodiny'. Formulář 010 - Smazání hodiny v rozvrhu - Alternativní cesta 1. Uživatel vybere v rozvrhu hodinu, kterou chce smazat, poklepáním na ikonku 'Odstranit hodinu'. 2. Systém se uživatele zeptá, zda chce hodinu opravdu odstranit. 3. Uživatel potvrdí odstranění. 4. Systém hodinu smaže a reloaduje rozvrh. Formulář 011 - Přidání nové hodiny - Hlavní cesta 1. Uživateli se zobrazí okno po stisknutí tlačítka rozvrhu 'Vložit novou hodinu'. 2. Systém zobrazí detail vybraného časového úseku, seznam dostupných učeben, seznam nevložených hodin do rozvrhu. 3. Uživatel zvolí ze seznamu nevložených hodin do rozvrhu a stiskne na tlačítko 15

Analýza 'Vyber'. 4. Systém přenese vybranou hodinu do detailu vybraného časového úseku. 5. Uživatel může vybrat jinou hodinu ze seznamu nevložených hodin. 5A1. Uživatel může zrušit již vybranou hodinu stisknutím na tlačítka smazat. 5A2 Uživatel vybere místnost a stiskne tlačítko 'Přidat hodinu do rozvrhu'. 6. Systém změny uloží a zavře okno. 7. Zavřením okna se reloaduje rodičovská stránka (stránka, ze které bylo popup okno otevřeno). Vypsání předmětů pro akademický rok Vypsání předmětů pro školní rok a určení dotaci hodin.systém nabídne seznam všech předmětů z tabulky Subject. Každý takto zapsaný předmět se bude v daném školním roce vyučovat. Uživatel může smazat takto zapsaný předmět. Formulář 014 - Hlavní cesta 1. Uživatel zvolil z menu Vypsat předmět. 2. Systém nabídne seznam již zapsaných předmětů pro aktuální školní rok. Formulář 014 - Smazání vypsaného předmětu - Alternativní cesta 1. Uživatel vybere ze seznamu vypsaných předmětů, který chce smazat. 2. Systém předmět smaže. 2A. Systém uživateli nedovolí smazat předmět, pokud existují vypsané hodiny pro tento vypsaný předmět. Formulář 014 - Změna školního roku - Alternativní cesta 1. Uživatel změnil aktuální školní rok. 16

Analýza 2. Systém nabídne seznam zapsaných předmětů pro školní rok. Formulář 015 - Hlavní cesta 1. Uživatel zvolil ze seznamu vypsaných předmětů (Formulář 014) - Vypsat nový předmět. 2. Systém nabídne seznam všech předmětů z tabulky Subject, které ještě nebyly vypsány pro daný školní rok. 3. Uživatel vybere předmět, který chce vypsat pro školní rok. 4. Systém přejde na Formulář 016. Formulář 016 - Hlavní cesta 1. Uživateli se zobrazí detail vybraného předmětu. 2. Uživatel zapíše dotaci hodin pro školní rok a volbu odešle. 3. Systém oznámí úspěšné zapsaní a přejde na seznam zapsaných předmětů (Formulář 014). Vytvořit úvazek učitele pro školní rok Každý učitel musí mít pro rok, ve kterém bude vyučovat vypsán úvazek. Aby mohl být učitel určen jako třídní učitel, musí mít aktivní úvazek. Velikost tohoto úvazku je určující pro tvorbu rozvrhu, může učit tolik hodin, pro jaký má vytvořený úvazek. Formulář 031 - Hlavní cesta 1. Uživatel zvolí z menu 'Úvazek učitelů'. 2. Systém nabídne seznam učitelů, kteří mají pro vybraný školní rok vytvořen úvazek Formulář 031 - Změna školního roku - Alternativní cesta 1. Uživatel změnil aktuální školní rok. 2. Systém nabídne seznam zapsaných předmětů pro školní rok. 17

Analýza Formulář 031 - Smazání úvazku učitele - Alternativní cesta 1. Uživatel vybere ze seznamu učitele, pro kterého chce smazat úvazek. 2. Systém úvazek smaže. 2A. Systém nedovolí smazat v úvazek, pokud je učitel v tomto školním roce učen jako třídní učitel a nebo již vyučuje některou hodinu. Formulář 032 - Vytvoření úvazku - Hlavní cesta 1. Uživatel zvolí volbu 'Vytvořit nový úvazek' ze Seznamu úvazků (Formulář 031). 2. Systém nabídne seznam učitelů, kteří jsou aktivní a nemají ještě úvazek v daném školním roce (Formulář 033). 3. Uživatel vybere učitele, kterému chce vytvořit úvazek. 4. Systém zobrazí detail úvazku učitele. - Jméno a příjmení učitele - Týdenní úvazek - může nabývat hodnot <1,100> 5. Uživatel klikne na tlačítko pro vytvoření úvazku a vypíše hlášku o úspěšném vytvoření. 6. Systém úvazek uloží a přejde na Seznam učitelů bez úvazku (Formulář 033). Formulář 033 - Seznam učitelů bez úvazků pro školní. rok - Hlavní cesta 1. Uživatel zvolí volbu 'Vytvořit nový úvazek' ze Seznamu úvazků (Formulář 031). 2. Systém nabídne seznam učitelů, kteří jsou aktivní a nemají ještě úvazek v daném školním roce (Formulář 033). Formulář 034 - Úprava úvazku učitele - Hlavní cesta 1. Uživatel vybere učitele ze Seznamu učitelů (Formulář 031), kterému chce úvazek upravit. 18

Analýza 2. Systém zobrazí detail úvazku učitele: - Jméno a příjmení učitele - Týdenní úvazek - může nabývat hodnot <1,100> Nepovolí snížit úvazek pod hodnotu počtu hodin, které má učitel zapsán v rozvrhu. 3. Uživatel klikne na tlačítko pro uložení úvazku a vypíše hlášku o úspěšném uložení. 4. Systém úvazek uloží a přejde na Seznam úvazků učitelů (Formulář 031). Založení a editace třídy pro akademický rok Pro každý školní rok je možné vytvořit třídu. Přiřadit třídního učitele a určit dotaci hodin pro danou třídu. Jedná se o minimální počet hodin, které musí každý žák, přiřazený do třídy absolvovat. Formulář 026 - Hlavní cesta 1. Uživatel zvolí "Vytvořit novou třídu" ze seznamu tříd (Formulář 025). 2. Systém nabídne uživateli formulář pro vytvoření. 3. Uživatel vyplní a uloží: - Název - Třídní učitel. Seznam učitelů, kteří mají vytvořen úvazek pro daný školní rok a již nedělají třídního učitele pro tento rok. - Dotace hodin - Rok školní docházky 1-9 4. Systém třídu uloží a přejde na seznam tříd. (Formulář 025) Formulář 027 - Editace třídy - Hlavní cesta 1. Uživatel vybere ze Seznamu tříd(formulář 025) třídu, kterou chce upravit. 2. Systém zobrazí detail třídy. 3. Uživatel provede změny a změny uloží. 19

Analýza Formulář 027 - Smazání třídy - Alternativní cesta 1. Uživatel vybere ze seznamu tříd(formulář 025) třídu, kterou chce upravit. 2. Systém zobrazí detail třídy. 3. Uživatel zvolí smazání třídy. 4. Systém provede kontrolu do dané třídy není přiřazen žák. Pokud existuje žák, který spadá pod třídu, systém oznámí chybu, že se nepodařilo danou třídu smazat, protože existuje žák, který je do třídy přiřazen. Pokud takový neexistuje, systém třídu smaže. Změnit třídu žáka Uživatel musí být schopen změnit třídu žáka/přeřadit žáka v daném školním roce. Formulář 030 - Hlavní cesta 1. Uživatel vybere žáka ze Seznamu žáků ve třídě(formulář 028), kterému chce změnit třídu. 2. Systém nabídne formulář pro změnu třídy - Seznam všech dostupných tříd ve školním roce. 3. Uživatel vybere novou třídu a změnu uloží a přejde na seznam žáků původní třídy ze které žák přišel. 3A. 3. Uživatel vybere novou třídu a změnu uloží a přejde na seznam žáků nové třídy. 20

Analýza 2.2.2. Předměty uc Předměty Informační systém Seznam předmětů «extend» Editace předmětu «extend» Vytv ořit nov ý předmět Teacher (from Users) Editace charakteristiky předmětu Director (from Users) «extend» Seznam charakteristiky předmětů «extend» Vytv ořit nov ou charakteristiku Obrázek 3: UC Předměty Vytvořit novou charakteristiku Director musí být schopen vytvořit novou charakteristiku Formulář 018 - Hlavní cesta 1. Uživatel zvolil volbu 'Vytvořit novou charakteristiku' ze Seznamu charakteristik (Formulář 017). 2. Systém nabídne formulář pro vyplnění nové charakteristiky. 3. Uživatel formulář vyplní a změny odešle. 4. Systém provede validaci povinných položek a data uloží, popř. vyhodí chybovou hlášku. V případě úspěchu, systém přejde na seznam charakteristik (Formulář 017). 21

Analýza Editace charakteristiky předmětu Uživatel musí být schopen upravovat již vytvořenou charakteristiku předmětu Formulář 019 - Hlavní cesta 1. Uživatel zvolil charakteristiku, kterou chce upravit ze seznamu Charakteristik předmětů (Formulář 017). 2. Systém nabídl uživateli detail charakteristiky pro úpravu. 3. Uživatel provedl a uložil změny. 4. Systém provede validaci povinných položek a data uloží, popř. vyhodí chybovou hlášku. V případě úspěchu, systém přejde na seznam charakteristik (Formulář 017). Seznam charakteristiky předmětů Školní vzdělávací plán. Pro každý předmět je souhrnná charakteristika předmětu, která postihuje všech 9 let školní docházky pro daný předmět. Formulář 017 - Hlavní cesta 1. Uživatel zvolil z menu ŠVP - Seznam charakteristiky předmětů. 2. Systém nabídl uživateli seznam všech charakteristik na dané škole. Formulář 017 - Smazání charakteristiky - Alternativní cesta 1. Uživatel pod rolí Director vybere ze seznamu charakteristik předmětů, charakteristiku, kterou chce smazat. 2. Systém charakteristiku předmětu smaže. 2A. Systém uživateli nedovolí smazat charakteristiku předmětu, pokud existují už předměty pro tuto charakteristiku. Formulář 020 - Zobrazení detailu charakteristiky - Alternativní cesta 1. Uživatel zvolil ze seznamu charakteristik detail požadované charakteristiky (Formulář 017). 22

Analýza 2. Systém nabídl uživateli detail charakteristiky. Vytvořit nový předmět Director musí být schopen vytvořit nový předmět. Vždy k předmětu přiřadí charakteristiku. Formulář 022 - Hlavní cesta 1. Uživatel zvolil volbu 'Vytvořit nový předmět' ze Seznamu předmětů (Formulář 021). 2. Systém nabídne formulář pro vyplnění nového předmětu. 3. Uživatel formulář vyplní a změny odešle. 4. Systém provede validaci povinných položek a data uloží, popř. vyhodí chybovou hlášku. V případě úspěchu, systém přejde na seznam předmětů (Formulář 021). Editace předmětu Uživatel musí být schopen upravovat již vytvořené předměty Formulář 024 - Hlavní cesta 1. Uživatel zvolil předmět, který chce upravit ze seznamu předmětů (Formulář 021). 2. Systém nabídl uživateli detail předmětu pro úpravu. 3. Uživatel provedl a uložil změny. 4. Systém provede validaci povinných položek a data uloží, popř. vyhodí chybovou hlášku. V případě úspěchu, systém přejde na seznam předmětů (Formulář 021). Seznam předmětů Seznam předmětů, které se na dané škole vyučují. Každý předmět musí být vypsán pod určitou charakteristikou podle ŠVP. Např. Charakteristika Matematika - předměty Matematika 1. až Matematika 9. 23

Analýza Formulář 021 - Hlavní cesta 1. Uživatel vybere z menu Seznam předmětů. 2. Systém zobrazí seznam všech předmětů. Formulář 021 - Smazání předmětu - Alternativní cesta 1. Uživatel pod rolí Director vybere ze Seznamu předmětů předmět, který chce smazat. 2. Systém předmětu smaže. 2A. Systém uživateli nedovolí smazat předmět, pokud již byl tento předmět v minulosti vypsán. Formulář 023 - Zobrazení detailu předmětu - Alternativní cesta 1. Uživatel zvolil ze Seznamu předmětů detail požadovaného předmětu (Formulář 021). 2. Systém nabídl uživateli detail předmětu. 24

Analýza 2.2.3. Studijní info uc Studijní info Informační systém Pupil (from Users) Prohlížení a zápis absence žákem Vytv oření a editace typy známky předmětu Zápis známky z předmětu Prospěch žáka Známky žáků v rámci předmětu Celkov á absence žáka Director (from Users) Seznam v yučov aných předmětů Teacher (from Users) Prohlížení a zápis absence zaměstnancem UserManager (from Users) Obrázek 4: UC Studijní info Celková absence žáka Pohled na absenci žáka rozdělený na typ absence za obě pololetí ve školním roce. Formulář 045 - Hlavní cesta 1. Uživatel v roli Pupil zvolí z menu Studijní info - Celková absence. 1A. Uživatel v roli Teacher, Director, UserManager zvolí přejde na Celkovou absenci stisknutím tlačítka na formuláři pro Prohlížení a zapsání absence zaměstnancem" (Formulář 044). 2. Systém nabídne zobrazení celkové absence za školní rok rozdělený do dvou 25

Analýza pololetí. Na formuláři se zobrazí součet za tyto druhy absencí: - Počet hodin zapsané absence - Počet hodin plánované absence - Počet omluvených hodin - Počet neomluvených hodin Formulář 045 - Změna školního roku - Alternativní cesta 1. Uživatel zvolí ze seznamu požadovaný školní rok. 2. Systém zobrazí celkovou absenci pro vybraný školní rok. Prohlížení a zápis absence zaměstnancem Zaměstnanec, resp. učitel, prohlíží a zapisuje absence žáka. Učiteli se zobrazí rozvrh žáka, ve kterém může učitel pro každý týden určit ke každé hodině absenci těchto typů: - přítomný - žák nemá absenci a účastnil se vyučování - zapsané - žák nebyl na hodině a absence je zapsaná, povětšinou se zapisuje na začátku hodiny, když se kontroluje docházka. - plánované - plánovaná absence do budoucnosti - omluvené - absence, kterou žák omluvil - neomluvené - absence, kterou žák neomluvil Učitel může libovolně měnit typ absence. Učitel může libovolně procházet absence v minulosti Formulář 044 - Hlavní cesta 1. Uživatel zvolil z menu Studijní info - Moje třída. 2. Systém zobrazí uživateli rozvrh na aktuální týden. 3. Uživatel stisknutím tlačítka vybere typ absence, který chce zapsat - přítomný, zapsané, plánované, omluvené, neomluvené. 26

Analýza 4. Sytém zvýrazní vybraný typ absence. 5. Uživatel vybere hodinu v rozvrhu a stisknutím tlačítka na hodinu zapíše absenci. 6. Systém zapíše absenci a nebo změní na jiný typ. 7. Uživatel krok opakuje krok 3 až do vyplnění požadované absence. Formulář 044 - Změna školního roku a týdne - Alternativní cesta 1. Uživatel zvolil z menu Studijní info - Absence. 2. Systém zobrazí uživateli rozvrh na aktuální týden. 3. Uživatel se rozhodne změnit aktuální školní rok. Uživatel vybere požadovaný rok a stiskem tlačítka 'Změnit školní rok', tuto volbu odešle. 4. Systém zobrazí rozvrh pro vybraný školní rok a týden. 3A. Uživatel se rozhodne změnit týden ve školním roce. Uživatel vybere ze seznamu požadovaný týden v roce a stiskem tlačítka 'Změnit týden' tuto volbu odešle. 4A. Systém zobrazí rozvrh pro vybraný týden a školní rok. Prohlížení a zápis absence žákem Uživatel s rolí Pupil smí prohlížet své absence na hodinách a plánovat nové absence do budoucnosti, popř. rušit absence, které jsou naplánovány v budoucnosti. Jakékoli záznamy v minulosti nesmí měnit. Tuhle možnost má pouze učitel. Formulář 044 - Hlavní cesta 1. Uživatel zvolil z menu Studijní info - Absence. 2. Systém zobrazí uživateli rozvrh na aktuální týden. 3. Uživatel stisknutím tlačítka na hodinu v rozvrhu vybere hodinu plánované absence. 4. Systém zkontroluje zda je daná hodina v budoucnosti. Pokud ano, povolí naplánování absence, pokud ne, uživateli se zobrazí hláška o neúspěšném naplánování absence. 27

Analýza 5. Uživatel krok opakuje krok 3 až do naplánování jeho celkové absence. Formulář 044 - Změna školního roku a týdne - Alternativní cesta 1. Uživatel zvolil z menu Studijní info - Absence. 2. Systém zobrazí uživateli rozvrh na aktuální týden. 3. Uživatel se rozhodne změnit aktuální školní rok. Uživatel vybere požadovaný rok a stiskem tlačítka 'Změnit školní rok', tuto volbu odešle. 4. Systém zobrazí rozvrh pro vybraný školní rok a týden. 3A. Uživatel se rozhodne změnit týden ve školním roce. Uživatel vybere ze seznamu požadovaný týden v roce a stiskem tlačítka 'Změnit týden' tuto volbu odešle. 4A. Systém zobrazí rozvrh pro vybraný týden a školní rok. Prospěch žáka Pohled na známky žáka za všechny jeho studované předměty rozdělené do typů známek pro předmět. Formulář 052 - Hlavní cesta 1. Uživatel v roli Director a Teacher zvolí ze Seznamu žáků (Formulář 006) žáka, pro kterého chce zobrazit prospěch. 1B. Uživatel v roli Pupil zvolí z menu Studijní info - Prospěch. 2. Systém zobrazí seznam všech známek seřazených do typů známek a typy seřazené podle předmětů. Nad každou známkou je v tooltipu zobrazení času zapsání známky, kdo zapsal známku a text popisu. Př.: Předmět: Matematika Desetiminutovka 1, 2, 1 28

Analýza Zkoušení 2, 3 Předmět: Český jazyk Zkoušení 2, 5 Formulář 052 - Změna pololetí - Alternativní cesta 1. Uživatel zvolí ze seznamu všech pololetí žáka. 2. Systém zobrazí známky pro vybrané pololetí Seznam vyučovaných předmětů Seznam předmětů, které učitel učí pro vybraný školní rok. Seznam existuje z důvodu toho, aby učitel mohl provádět operace nad předměty, které učí. - zobrazení seznamu žáků docházející na předmět - zobrazení a zápis známek žáků - definice druhů známek pro předmět. Formulář 046 - Hlavní cesta 1. Uživatel zvolí z menu Studijní agenda - Zápis známek. 2. Systém zobrazí uživateli seznam předmětů pro daný školní rok. Formulář 046 - Změna školního roku - Alternativní cesta 1. Uživatel zvolí ze seznamu požadovaný školní rok. 2. Systém zobrazí seznam předmětů pro vybraný školní rok. Vytvoření a editace typy známky předmětu Každý učitel si může k jeho vyučovanému předmětu určit typ známky k rozlišení z čeho žák známku získal. Např.: zkoušení, desetiminutovka, čtvrtletní práce apod. Vytvoření alespoň jednoho typu je povinné, každá zapsaná známka musí být přiřazena k určitému typu. 29

Analýza Formulář 048 - Hlavní cesta 1. Uživatel stiskl ikonku seznam typů známek na seznamu vyučovaných předmětů (Formulář 046). 2. Systém zobrazil seznam již vytvořených typů známek k předmětu. Formulář 048 - Smazání typu známky - Alternativní cesta 1. Uživatel si vybere typ známky, který chce smazat a stiskne tlačítko smazat. 2. Systém zobrazí okno z potvrzením zda chceme opravdu typ známky smazat. 3. Uživatel zvolí ano. 4. Systém provede kontrolu, zda k typu známky již nejsou přiřazeny známky. Pokud nejsou, typ je smazán a zobrazena zpráva o úspěšném smazání, jinak se typ nesmaže a systém zobrazí chybovou hlášku. 3A. Uživatel zvolí ne. 4A. Systém okno zavře. Formulář 049 - Vytvoření druhu známky - Hlavní cesta 1. Uživatel stiskem tlačítka 'Vytvořit druh známky' ze seznamu typů známek pro předmět (Formulář 048) přejde na formulář pro vytvoření nového typu. 2. Systém zobrazí detail typu známky. - Název - Popis 3. Uživatel vyplní formulář a stiskem tlačítka 'Vytvořit druh známky' vytvoří nový typ známky. 4. Systém typ vytvoří a přejde na stránku Seznamu typů známek pro předmět (Formulář 048) Formulář 050 - Editace typu známky - Hlavní cesta 30

Analýza 1. Uživatel zvolil ze seznamu typů známek pro předmět (Formulář 048), typ známky, kterou chce editovat. 2. Systém zobrazí detail typu známky: - Název - Popis 3. Uživatel provede změny a stiskem tlačítka uložit změny uloží změněné údaje. 4. Systém změny uloží a přejde na stránku Seznamu typů známek pro předmět (Formulář 048). Zápis známky z předmětu Uživatel si prvně zobrazí předmět, ze kterého chce zapsat známku, vybere žáka ze seznamu žáků docházející na hodinu, žáka vybere a známku zapíše. Formulář 047 - Seznam žáků docházející na hodinu - Hlavní cesta 1. Uživatel vybere hodinu z formuláře (Formulář 046), pro kterou chce zapsat známku a stiskne tlačítko pro seznam žáků. 2. Systém zobrazí seznam žáků docházejících na hodinu. Formulář 051 - Zápis známky - Hlavní cesta 1. Uživatel vybere ze seznamu žáků docházející na hodinu žáka, kterému chce známku zapsat. (Formulář 047). 2. Systém zobrazí formulář pro zapsání známky: - Výběr pololetí školního. roku - Známka z číselníku GradeType - Druh známky - Popis k známce 31

Analýza Uživateli se také zobrazí seznam již obdržených známek žáka za vybraný předmět. 3. Uživatel vyplní formulář a stiskem tlačítka Zapsat známku, známku zapíše. 4. Systém data uloží do systému a uživateli zobrazí hlášku o správném uložení. Přejde na formulář Seznam žáků docházející na hodinu (Formulář 047). Známky žáků v rámci předmětu Uživatel v roli Teacher musí mít přehled, které známky dostali žáci v rámci předmětu. Jedná se o seznam žáků docházející na předmět a jejich známek rozdělených podle typu známky. Formulář 053 - Hlavní cesta 1. Uživatel Teacher zvolí ze Seznamu vyučovaných předmětů (Formulář 046) předmět, pro který chce zobrazit známky. 2. Systém zobrazí seznam všech žáků docházející na předmět a jejich známek seřazených do typů známek. Nad každou známkou je v tooltipu zobrazení času zapsání známky, kdo zapsal známku a text popisu. Př.: Žák: Jan Tomáš Desetiminutovka 1, 2. 1 Zkoušení 2, 3 Žák: Tomáš Martin Desetiminutovka 3, 2. 1 Zkoušení 5, 3 Formulář 053 - Změna pololetí - Alternativní cesta 1. Uživatel vybere pololetí školního roku - 1. pololetí, 2. pololetí. 2. Systém zobrazí známky pro dané pololetí. 32

Analýza 2.2.4. Uživatelé uc Uživatelé Informační systém Změna detailu žáka Můj profil User (from Users) Třída třídního učitele Pov olení a zakázání uživ atelského účtu Seznam zaměstanců Teacher (from Users) «extend» Změna detailu zaměstnance «extend» Vygenerov ání nov ého hesla Seznam žaků Director (from Users) Založení nov ého zaměstnance UserManager (from Users) Založení nov ého žáka Obrázek 5: UC Uživatelé Můj profil Pohled zobrazení detailních informací o uživateli, které jsou uloženy v systému, bez možnosti editace. Formulář 005 - Hlavní cesta 1. Uživatel vybere z menu položku můj profil. 33

Analýza 2. Systém zobrazí pouze pro čtení informace zanesené do systému o daném uživateli. Seznam zaměstnanců Tento UC pokrývá zobrazení seznamu zaměstnanců. Uživateli se zobrazí všichni uživatelé/zaměstnanci, kteří jsou zaregistrování v systému, i z minulosti. Formulář 007 - Hlavní cesta 1. Uživatel zvolí z menu Lidé - Seznam zaměstnanců. 2. Systém zobrazí seznam zaměstnanců, kteří jsou v systému zaregistrovaní. Filtr bude implicitně nastaven tak, aby zobrazil pouze aktivní zaměstnance. Třída třídního učitele Tento UC pokrývá zobrazení seznamu žáků pro roli Teacher a Director. Učiteli se zobrazí jen žáci třídy, kde je třídním učitelem. Řediteli se zobrazí všichni žáci, kteří na škole studují a nebo studovali. Formulář 006 - Hlavní cesta 1. Uživatel zvolí z menu Studijní agenda - Moje třída. 2. Systém zobrazí seznam žáků třídy, kde je uživatel třídním učitelem. Povolení a zakázání uživatelského účtu Uživatelé pod rolí Director a UserManager mají možnost měnit povolení přístupu do systému. Tato volba je přístupna z detailu uživatele (Formulář 008 a Formulář 041) a je vyvolána stiskem tlačítka na detailu. Vždy se zobrazí pouze jedna volba Zakázat a nebo Povolit v závislosti na aktuálním stavu. 34

Analýza Seznam žáků Tento UC pokrývá zobrazení seznamu žáků pro roli Teacher a Director. Učiteli se zobrazí jen žáci třídy, kde je třídním učitelem. Řediteli se zobrazí všichni žáci, kteří na škole studují a nebo studovali. Formulář 006 - Hlavní cesta 1. Uživatel zvolí z menu Lidé - Seznam žáků. 2. Systém zobrazí seznam žáků, kteří jsou v systému zaregistrovaní, tzn. kteří studovali a nyní studují. Filtr bude implicitně nastaven tak, aby zobrazil pouze žáky, kteří aktuálně studují. Uživatel tento filtr může změnit. Vygenerování nového hesla V případě zapomenutého hesla, může oprávněný uživatel vygenerovat uživateli heslo nové. Toto heslo je odesláno na email uživatele, který tuto změnu provedl a zobrazeno taktéž na stránce. Učitel může generovat nové heslo pouze žákům, ke kterým má vztah třídní učitel a toto heslo je povinen předat uživateli. 041). Volba je zobrazena v rámci tlačítka na formuláři detailu uživatele (Formulář 008, Formulář Vygenerování nového hesla - Hlavní cesta 1. Uživatel zvolí volbu Vygenerovat nové heslo z Formuláře 008 a nebo z Formuláře 041. 2. Systém změní uživateli heslo a toto heslo zašle na email uživatele, který jej vygeneroval. Založení nového zaměstnance Uživatel přihlášený pod rolí Director a nebo UserManager smí vkládat do systému nové zaměstnance, resp. uživatele. S každým vytvořením zaměstnance se v systému vytvoří i uživatelský účet pro přístup. Uživatelské jméno a heslo je vygenerováno systémem a zasláno na email zakládajícího uživatele, který je na toto upozorněn i v rámci odpovědi aplikace. 35

Analýza Uživatel je poté povinen přihlašovací údaje předat zodpovědné osobě, která bude mít do systému přístup. Formulář 042 - Hlavní cesta 1. Uživatel zvolil z menu volbu Lidé - Nový zaměstnanec 2. Systém zobrazí formulář pro založení nového zaměstnance 3. Uživatel vyplní požadované údaje a pokusí se jej uložit. 4. Systém provede validaci vložených dat a případně uživatele vyzve k opravě. Pokud je vše v pořádku, zadané údaje uloží, vygeneruje uživatelské jméno, které je složeno z prvního znaku jména a pěti znaků příjmení, popř. číslovaného postfixu, pokud již uživatelské jméno existuje. Jestliže nelze vygenerovat už. jméno o délce 6 znaků z důvodu krátkého jména a příjmení, použije se tedy dostupný počet znaků. Systém vygeneruje také heslo složené z číslic a písmen. Vygenerované informace vypíše na obrazovku a odešle na email zadávajícího uživatele. Založení nového žáka Uživatel přihlášený pod rolí Director a nebo UserManager smí vkládat do systému nové žáky, resp. uživatele. S každým vytvořením žáka se v systému vytvoří i uživatelský účet pro přístup pod rolí Pupil. Uživatelské jméno a heslo je vygenerováno systémem a zasláno na email zakládajícího uživatele, který je na toto upozorněn i v rámci odpovědi aplikace. Uživatel je poté povinen přihlašovací údaje předat zodpovědné osobě, která bude mít do systému přístup. Formulář 043 - Hlavní cesta 1. Uživatel zvolil z menu volbu Lidé - Nový žák. 2. Systém zobrazí formulář pro založení nového žáka. 3. Uživatel vyplní požadované údaje a pokusí se jej uložit. 4. Systém provede validaci vložených dat a případně uživatele vyzve k opravě. Pokud je vše v pořádku, zadané údaje uloží, vygeneruje uživatelské jméno, které je složeno z prvního znaku jméno a 5 znaků příjmení, popř. číslovaného postfixu, pokud 36

Analýza již uživatelské jméno existuje. Jestliže nelze vygenerovat už. jméno o délce 6 znaků z důvodu krátkého jména, příjmení, použije se tedy dostupný počet znaků. Systém vygeneruje také heslo složené z číslic a písmen. Vygenerované informace vypíše na obrazovku a odešle na email zadávajícího uživatele. Změna detailu žáka Změna vedených informací o žáku. Formulář 041 - Hlavní cesta 1. Uživatel zvolí žáka, kterému chce změnit osobní informace ze Seznamu žáků (Formulář 006). 2. Systém zobrazí detail žáka. 3. Uživatel provede požadované změny a stiskne tlačítko pro uložení. 4. Systém provede validaci vložených dat a změny uloží. V případě problému, zobrazí uživateli podrobnou hlášku. V případě úspěšného uložení, bude informovat o úspěšném uložení. 37

Analýza 2.2.5. Zprávy uc Zprávy Informační systém Poslání nov é zpráv y User (from Users) Seznam přijatých zpráv Detail přijaté zprávy Obrázek 6: UC Zprávy Poslání nové zprávy Jakýkoli uživatel je oprávněn posílat zprávy kterémukoli uživateli. Posílat zprávy lze jen aktivním uživatelům. Formulář 003 - Hlavní cesta 1. Uživatel zvolil z menu 'Pošli novou zprávu'. 2. Systém nabídne formulář pro novou zprávu. 3. Uživatel vyplní Příjemce zprávy, vybere ze seznamu popup okna (Formulář 004), Předmět zprávy a Tělo zprávy a uživatel stiskne tlačítko odeslat. 4. Systém zkontroluje, zda uživatel vyplnil příjemce a Předmět zprávy a zprávu uloží. Formulář 004 - Hlavní cesta 1. Uživatel zvolil na formuláři 'Vytvořit novou zprávu' (Formulář 003) volbu Vybrat příjemce. 2. Systém otevře nové popup okno se seznamem osob. Zobrazí pouze aktivní uživatele. 38

Analýza 3. Kliknutím na Uživatele vybere uživatele, kterému chce zprávu poslat. 4. Systém uzavře popup okno a vyplní příjemce v rodičovském okně. Seznam přijatých zpráv emailů. Uživatelé mezi sebou posílají zprávy. Jedná se o posílání v rámci systému, nikoliv posílání Formulář 001 - Hlavní cesta 1. Uživatel vybere z menu seznam přijatých zpráv. 2. Systém nabídne uživateli seznam přijatých zpráv. V záhlaví seznamu nabídne seznam kategorií zpráv. Formulář 001 - Smazání přijaté zprávy - Alternativní cesta 1. Uživatel vybere ze seznamu zprávu, kterou chce smazat. 2. Systém se zeptá uživatele, zda chce opravdu zprávu smazat. 3. Uživatel potvrdí smazání. 4. Systém zprávu smaže. 3A. Uživatel volbu odmítne. 4A. Systém neprovede nic. Formulář 001 - Změna kategorie zpráv - Alternativní cesta 1. Uživatel stiskne tlačítko kategorie, kterou chce zobrazit. 2. Systém nabídne uživateli seznam zpráv dané kategorie. Detail přijaté zprávy Uživatel může přijatou zprávu Smazat, Přeřadit do jiné skupiny zpráv (složky) a na danou zprávu odpovědět. 39

Analýza Formulář 002 - Hlavní cesta 1. Uživatel stiskne tlačítko na jménu uživatele na Seznamu přijatých zpráv (Formulář 001). 2. Systém zobrazí detail dané zprávy a zapíše do databáze čas přečtení zprávy. Formulář 002 - Smazání zprávy - Alternativní cesta 1. Uživatel stiskne tlačítko pro smazání zprávy. 2. Systém se zeptá uživatele, zda chce opravdu zprávu smazat. 3. Uživatel potvrdí smazání. 4. Systém zprávu smaže. 3A. Uživatel volbu odmítne. 4A. Systém neprovede nic. Formulář 003 - Odpovědět na zprávu - Alternativní cesta 1. Uživatel z detailu přijaté zprávy stiskne tlačítko 'Odpovědět'. 2. Systém zobrazí detail zprávy: Předvyplní příjemce odesílatelem původní zprávy, Předmět stylem 'RE: '+ předmět minulé zprávy Tělo zprávy stylem: '-----' Odesílatel napsal(a) : tělo původní zprávy 3. Uživatel doplní tělo zprávy svou zprávou a stiskne tlačítko odeslat. 3A. Uživatel doplní tělo zprávy svou zprávou a změní odesílatele( tím je docíleno přeposlání zprávy) a stiskne tlačítko odeslat. 40

Analýza 2.3. Diagramy tříd Diagramy tříd ve fázi analýzy jsou prvním návrhem tříd a jejich vzájemných vazeb. Hlavní důvod pro vytvoření těchto diagramů je, že poskytují abstraktnější pohled na modelovaný systém. Díky absenci tříd, které jsou potřeba pro vlastní implementaci a nesouvisí přímo s modelovaným systémem (třídy nutné pro spojení s databází, třídy použitých knihoven apod.), je tento pohled více srozumitelnější pro další analýzu. Model vytvořený v této fázi by měl být nezávislý na jazyku, ve kterém bude systém implementován. Celý IS je složen z několika balíčků obsahující jednotlivé třídy. Závislostí jednotlivých balíčků ukazuje obrázek zobrazený níže. pkg Package Model Resources Communication + Message + MessageGroup + Article + ArticleType + Building + Room + School «use» «use» «use» «use» Users + Employee + Person + Pupil + Role + User Business + GeneralRegistry + GeneralRegistryType + SystemParameter «use» «use» Subject + Subject + SubjectCharacteristic + TeacherSubject «use» «use» «use» Study + Absence + AnnouncedSubject + BindPupilAndClass + BindPupilAndLesson + Certificate + CertificateMarks + Class + InscribeInSchoolYear + Lesson + LessonTime + Marks + MarkType + SchoolHalfYear + SchoolYear 2.3.1. Balíček Business Balíček obsahuje třídy pro ukládání systémových parametrů, které definují chování IS. Dále obsahuje třídu, kde jsou definovány typy obecných číselníků a třídu pro definici hodnot číselníků. Každý obecný číselník je zařazen pod typ číselníků. 41

Analýza pkg Business SystemParameter GeneralRegistryType +grtype GeneralRegistry 1 0..* Obrázek 7: Diagram tříd - Business 2.3.2. Balíček Communication Balíček obsahuje třídy pro ukládání poslaných zpráv a rozdělení zpráv do skupin pro každého uživatele. U uložených zpráv se ukládá odesílatel a příjemce zprávy. pkg Communication Message 0..* +recipent 1 Users::Person +sender 0..* 0..* 1 1 +messagegroup 1 MessageGroup 1..* Obrázek 8: Diagram tříd Communication 2.3.3. Balíček Resources Balíček obsahuje třídy pro správu zdrojů školy jako třídy pro seznam budov školy, dále třídy pro seznam místností v budově a seznam pomůcek zařazených do tříd rozdělených podle typů, které jsou definovány třídou ArticleType. 42

Analýza pkg Resources Building 0..* +building 1 0..* Room +school 1 School +room 1 0..* Article +articletype ArticleType 0..* 1 Obrázek 9: Diagram tříd Resources 2.3.4. Balíček Study Balíček study obsahuje třídy pro evidenci studijních výsledků žáků za školní rok, resp. za pololetí, jako známky, omluvené a neomluvené nepřítomnosti. V rámci tohoto balíčku ukládáme vytvořený a naplánovaný rozvrh pro jednotlivé roky, vypsané předměty, úvazky učitelů, docházející žáky na předměty a třídy včetně třídních učitelů. 43

Analýza pkg Study Certificate CertificateMarks +certificate SchoolHalfYear +schoolhalfyear Subj ect::subj ect 1 1..* 0..* 1 0..* 2 +subject 1 +schoolclass 1 Class 0..* +schoolyear 1 +schoolyear SchoolYear 1 +schoolyear InscribeInSchoolYear +schoolclass 1 1 0..* +schoolyear 1 0..* 0..* BindPupilAndClass 0..* BindPupilAndLesson 0..* AnnouncedSubj ect 0..* +teacher 1 Person Users::Employee 0..* 1 +announcedsubject +teacher 1 MarkType 0..* +lesson +lesson 1 0..* 0..* Lesson +marktype 1 0..* Absence 0..* 1 +lesson 1 +lesson 1 0..* 0..* Marks 0..* +pupil 1+pupil 1 1 Person +pupil Users::Pupil 1 +pupil 0..* LessonTime 0..* Resources::Room +room 1 0..* 1 Obrázek 10: Diagram tříd - Study 2.3.5. Balíček Subject Balíček Subject slouží pro udržování informací o studijním plánu pro celou školní docházku. Pro každý okruh učiva je vytvořena charakteristika předmětů, která je poté rozdělena a definována předměty, které se mohou na škole vyučovat. Dle povahy charakteristiky a nebo předmětu je určeno, zda tímto předmětem musí nebo nemusí projít každý žák. 44

Analýza pkg Subject Subj ect Subj ectcharacteristic +subjectcharacteristic 0..* 1 +subject 1 0..* TeacherSubj ect Obrázek 11: Diagram tříd - Subject 2.3.6. Balíček Users Balíček Users udržuje informace o uživatelích, kteří mají a nebo měli v minulosti přístup do IS a rolích, které identifikují typ uživatele. pkg Users Person +person User 1 1 +user 0 Employee Pupil 1..* Role Obrázek 12: Diagram tříd - Users 2.4. Diagram aktivit Diagram aktivit je používám v UML k zobrazení sekvence aktivit. Diagram aktivit ukazuje workflow určité části systému od počátku do konce popisující mnoho způsobů, jež jsou zobrazeny jako cesty systému, které existují ve vývoji událostí obsažených v aktivit. Mohou být použity k upřesnění situací pro paralelní zpracování některých aktivit. Aktivity diagramy jsou užitečné pro modelování pracovních postupů. 45

Analýza 2.5. Vytvoření školního roku Tento aktivity diagram popisuje pracovní postup vytvoření školního roku. Jedná se o znázornění sekvencí, které musí uživatel provést, aby školní rok mohl být vytvořen. Aktivity jsou pojmenovány jako případy užití, které svými scénáři, resp. sekvenčními diagramy tuto aktivitu popisují. To znamená, že nejprve musíme vytvořit instanci nového školního roku (Seznam a založení školního roku) a poté můžeme vypisovat předměty pro akademický rok a nebo vytvářet úvazky učitelů, případně založit třídy. K založení nových vyučovacích hodin můžeme přejít až po splnění předchozích třech aktivit. Abychom mohli přistoupit k samotnému vytváření rozvrhu, je potřeba vytvořit vyučovací hodiny a posléze můžeme rozvrh uvolnit k používání. act Activ ity diagram Vypsání předmětů pro akademický rok Start Seznam a založení nov ého školního roku Vytv ořit ův azek pro učitele pro školní rok Založení a editace tříd pro akademický školní rok Seznam a založení v yučov acích hodin FlowFinal Uv olnění rozv rhu Tv orba rozv rhu Obrázek 13: AD - Vytvoření školního roku 2.6. Sekvenční diagramy Sekvenční diagramy zobrazují výměny zpráv mezi vybranými objekty pro danou situaci, resp. případ užití, s důrazem na časovou posloupnost událostí.. Velká část případů užití(dále UC) je zobrazení seznamu a práce s tímto seznamem. U těchto UC není nutné diagramy pro popis vytvářet a jsou jasně definované scénáři v jednotlivých UC diagramech. Následující sekvenční diagramy postupně ukazují.realizaci Vytvoření nového školního roku UC. 2.6.1. Založení nového školního roku Tento sekvenční diagram doplňuje a popisuje UC Seznam a založení školního roku. 46

Analýza sd Seznam a založení šk. roku study::schoolyear study::schoolhalfyear Director Vytvoř školní rok() Vytvoř 1. pololetí() Vytvoř 2. pololetí() return() (from Users) Obrázek 14: Sekvenční diagram - Založení nového školního roku. 2.6.2. Vypsání předmětů pro akademický rok Tento sekvenční diagram doplňuje a popisuje UC Vypsání předmětů pro akademický rok. sd Vypsání předmětů pro akademický rok subject::subject study::announcedsubject Director Vrať seznam všech předmětů() Seznam předmětů() loop počet předmětů Vypiš předmět pro školní rok() Urči dotaci hodin předmětu() return() (from Users) Obrázek 15: Sekvenční diagram Vypsání předmětů pro akademický rok 47

Analýza 2.6.3. Vytvořit úvazek pro učitele pro školní rok Tento sekvenční diagram doplňuje a popisuje UC Vytvořit úvazek učitele pro školní rok. sd Vytv ořit úv azek učitele pro školní rok users::employee study::inscribeinschoolyear Director Vrať seznam všech aktivních učitelů() Seznam učitelů() loop počet učitelů Vytvoření úvazku učittele pro školní rok() return() (from Users) Obrázek 16: Sekvenční diagram - Vytvořit úvazek pro učitele pro školní rok 2.6.4. Založení tříd pro akademický školní rok Tento sekvenční diagram doplňuje a popisuje UC Založení a editace tříd pro akademický školní rok. 48

Analýza sd Založení a editace tříd pro akademický školní rok study::class study::bindpupilandclass Director loop počet tříd Vytvoření třídy pro školní rok() loop počet žáků Přiřazení třídního učitele() Postoupení žáka do dalšího ročníku() return() Přiřazení žáků po jednom() return() return() (from Users) Obrázek 17: Sekvenční diagram - Založení tříd pro akademický školní rok 2.6.5. Založení vyučovacích hodin Tento sekvenční diagram doplňuje a popisuje UC Seznam a založení vyučovacích hodin. 49

Analýza sd Seznam a založení v yučov acích hodin study::lesson Director loop počet v yuč. hodin Vytvoření nové vyučovací hodiny() Přiřadit učitele k hodině() return() (from Users) Obrázek 18: Sekvenční diagram - Založení vyučovacích hodin 2.6.6. Tvorba rozvrhu Tento sekvenční diagram doplňuje a popisuje UC Tvorba rozvrhu. 50

Analýza sd Tvorba rozvrhu study::lessontime study::lesson resources::room study::inscribeinschoolyear Director Vrať seznam nepřiřazených hodin() Seznam nepřiřazených hodin() loop počet volných hodin Zapiš hodinu() Vrať seznam vypsaných učitelů() Seznam učitelů() Vrať seznam učeben() Seznam učeben() Urči čas vyučování() return() (from Users) Obrázek 19: Sekvenční diagram - Tvorba rozvrhu 2.7. Slovníček pojmů Slovníček pojmů slouží především k upřesnění významu pojmů používaných v analýze tak, aby použitým termínům rozuměli všichni, kdo se projektu nějakým způsobem účastní. Termín Popis 1. pololetí Pololetí školního roku od 1.září do 31. ledna 2. pololetí Pololetí školního roku od 1.února do 30.června Absence Akademický rok Druh známky Charakteristika předmětu Nepřítomnost žáka. viz. Školní rok. Určuje za co byla známka získána, např. zkoušení, desetiminutovka. Vzdělávací oblast, která je tvořena předměty po celých 9 let školní docházky. 51

Analýza Neomluvená absence Omluvená absence Plánovaná absence Silné heslo Školní docházka Školní rok ŠVP Úvazek učitele Vyučovací hodina Nepřítomnost, která nebyla řádně omluvena. Nepřítomnost, která byla řádně omluvena. Nepřítomnost, kterou žák omlouvá do budoucnosti. Různá kombinace velkých a malých písmen a číslic, nesmí být shodné s uživatelským jménem 9-ti letá povinná školní docházka. Časový úsek od 1.září do 30.června následujícího kalendářního roku. Školní vzdělávací program Týdenní úvazek učitele, tj. počet hodin, které učitel učí za týden. Časový úsek dlouhý 45 min během, které se žáci učí. 52

Návrh 3. Návrh Pro implementaci byla vybrána vícevrstvá architektura, kterou popisuje níže uvedený Diagram Component. Tato aplikace je postavena na principu třívrstvé architektury. Model třívrstvé architektury je pokračovatelem dvouvrstvé architektury. Každá vrstva poskytuje navenek určité rozhraní, přes které s ní může druhá vrstva komunikovat. Není tedy žádný problém např. změnit druh databáze. Hlavní rozdíl mezi dvouvrstvou a třívrstvou architekturou je, že klientovi není dovoleno přímo komunikovat s datovou vrstvou. Použití třívrstvé architektury neznamená, že pro každou vrstvu musí být vyhrazen samostatný počítač. Není totiž vůbec výjimkou, kdy jsou všechny tři vrstvy provozovány na jednom počítači. Model třívrstvé architektury rozlišuje tyto vrstvy: Prezentační vrstva obsahuje funkce uživatelského rozhraní. Obvykle existuje několik prezentačních vrstev pro různé druhy zařízení, platformy a prostředí Aplikační vrstva tvoří prostředníka mezi vrstvou prezentační a vrstvou datovou. Obsahuje tzv. business logiku aplikace. V této vrstvě dochází k transformací dat mezi vstupně / výstupními požadavky a datovou vrstvou. Datová vrstva obsahuje funkce pro přístup k informacím v datovém úložišti Ve složitějších aplikacích je možné definovat i více než tři vrstvy. Vždy je ale od sebe odstíněna prezentační vrstva od vrstvy datové. Příkladem může být např. vrstva pro kontrolu přístupových práv a zabezpečení, vrstva pro správu systémových prostředků, apod. Na výše zmíněné vrstvy se dá ale také nahlížet jako na podvrstvy aplikační vrstvy z třívrstvé architektury, ale také jako na samostatné vrstvy. Záleží pouze na úhlu pohledu. 3.1. Návrh architektury IS Pro každou třídu z Diagramu byla vytvořena třída BO (Business Objektů), jejichž atributu mapují jedna ku jedné tabulku, která této třídě odpovídá. Vytváření mapování objektů je pomocí XDoclet, kterým jsou taktéž generovány mapovací soubory pro Hibernate. Ke každé třídě BO je vytvořena jedna třída DAO (Data Access Object). Tato implementace odpovídá návrhovému vzoru pro J2EE aplikace od Sun Microsystems 1. Každé DAO má předka, který obsahuje metody pro ukládání BO (save), pro dotažení celého objektu pomocí ID záznamu (getinfo) a metodu pro 1 Více na adrese http://java.sun.com/blueprints/corej2eepatterns/patterns/dataaccessobject.html 53

Návrh smazání podle ID záznamu (delete). DAO třídy také obsahují metody pro selecty objektů z DB, které již nejsou pevně definované a jejich názvy se standardně odvíjí od funkce, kterou implementují. Pro každou DAO třídu je vytvořena třída Service, která je v aplikačním kontextu definována jako Springovská transakční beana. Přímo v Service je možno volat metody DAO tříd, které patří pod stejný balíček jako Service. Pokud bychom potřebovali volat metody DAO z jiného balíčku, musíme toto volání vykonat přes volání metody dané příbuzné Service. Blíže popisuje Obrázek 20: Příklad realizace vazeb mezi třídami IS. Pro implementaci webového rozhraní byly použity JSF. Tudíž pro každý formulář byla vytvořena ManagedBean, ze které jsou posléze volány metody Service tříd, nelze volat přímo metody DAO objektů. Nové instance objektů jsou vytvářeny voláním příslušných metod na třídách Service. 54

Návrh class J2EE pattern view IPersonBo com.digi.ischosys.users.bo:: PersonBoImpl - id: Long «property get» + getid() : Long «property set» + setid(long) : void IMessageBo com.digi.ischosys.communication.bo:: MessageBoImpl - id: Long «property get» + getid() : Long «property set» + setid(long) : void com.digi.ischosys.w ebapp.action:: MessageListManagedBean - messageservice: IMessageService «property set» + setmessageservice(imessageservice) : void «property get» + getmessageservice() : IMessageService IMessageGroupBo com.digi.ischosys.communication.bo:: MessageGroupBoImpl - id: Long «property get» + getid() : Long «property set» + setid(long) : void -messageservice «interface» com.digi.ischosys.communication.service::imessageservice «interface» com.digi.ischosys.communication.dao::imessagegroupdao + getinfo(long) : IMessageGroupBo + save(imessagegroupbo) : void + delete(long) : void «interface» com.digi.ischosys.users.service::ipersonservice -messagegroupdao -personservice com.digi.ischosys.communication.dao:: MessageGroupDaoHibenate + getinfo(long) : IMessageGroupBo + delete(long) : void + save(imessagegroupbo) : void «interface» com.digi.ischosys.communication.dao::imessagedao + getinfo(long) : IMessageBo + save(imessagebo) : void + delete(long) : void -messagedao com.digi.ischosys.communication.serv ice:: MessageServ iceimpl - messagedao: IMessageDao - messagegroupdao: IMessageGroupDao - personservice: IPersonService «property get» + getmessagedao() : IMessageDao + getmessagegroupdao() : IMessageGroupDao + getpersonservice() : IPersonService «property set» + setmessagedao(imessagedao) : void + setmessagegroupdao(imessagegroupdao) : void + setpersonservice(ipersonservice) : void com.digi.ischosys.users.serv ice:: PersonServ iceimpl - persondao: IPersonDao «property set» + setpersondao(ipersondao) : void «property get» + getpersondao() : IPersonDao +persondao «interface» com.digi.ischosys.users.dao::ipersondao + getinfo(long) : IPersonBo + save(ipersonbo) : void + delete(long) : void com.digi.ischosys.communication.dao:: MessageDaoHibernate + getinfo(long) : IMessageBo + delete(long) : void + save(imessagebo) : void com.digi.ischosys.users.dao:: PersonDaoHibernate + getinfo(long) : IPersonBo + delete(long) : void + save(ipersonbo) : void Obrázek 20: Příklad realizace vazeb mezi třídami IS 55

Návrh 3.2. Diagram nasazení (Deployment diagram) IS je vyvíjen a bude provozován na open source databázi PostgreSQL 2. Pro běh aplikace je potřebný aplikační server. Plnohodnotné aplikační servery poskytují velké množství funkcionality, kterou náš systém nevyužije, a proto si vystačíme se serverem Apache Tomcat 5.0.28 3. Na produkčním prostředí kvůli zvýšení bezpečnosti předsadíme Apache Web Server 2.2 4. Hlavním důvodem k výběru těchto řešení je, že všechny tyto produkty jsou vydávány pod GPL či BSD licencí a tudíž je jejich použití zdarma. V případě potřeby zvýšení výkonu lze toto řešení lehce použít pro rozdělení zátěže mezi více serverů tím, že Apache Web Server použijeme jako loadbalancer a Apache Tomcat nainstalujeme na jednotlivé servery. deployment Deployment diagram «execution environment» Client:Personal Computer Monitor Klávesnice/Myš Web browser User (from Users) Http Request Http Response Apache Web Server Http Request Http Response J2EE Server Database server Apache Tomcat Postgre SQL JDBC Connection IS Application Obrázek 21: Diagram nasazení 2 Dostupné na adrese http://www.postgresql.org/ 3 Dostupné na adrese http://tomcat.apache.org/ 4 Dostupné na adrese http://httpd.apache.org/ 56

Návrh 3.3. Diagram komponent Pro realizaci byly vybrány open source frameworky. O komunikaci s perzistentní vrstvou se stará Hibernate 5. Implementaci vrstvy aplikační logiky Spring framework 6. Acegi Security je použit pro autentifikaci a autorizaci 7. Pro prezentační vrstvu byly vybrány Java Server Faces (JSF) 8. cmp Component Model Client Http request Authorization IS Application Acegi Security Request Java Server Faces Invoke Spring framework Open transaction Persistent layer JDBC Connection Translate Hibernate Sql query Database Server Obrázek 22: Diagram komponent Důvodem výběru Hibernate je hlavně jeho praktická zkušenosti s tímto systémem a značná oblíbenost v Java světě. Ačkoliv tento systém není papírovým standardem, je za standard považován a uznáván a je ověřenou technologií. Pro použití Hibernate mluví také velmi dobrá 5 Dostupné na adrese http://hibernate.org/ 6 Dostupné na adrese http://www.springframework.org/ 7 Dostupné na adrese http://www.acegisecurity.org/ 8 Dostupné na adrese http://myfaces.org/ 57

Návrh podpora v aplikačním frameworku Spring, který je použit pro aplikační vrstvu a byla jasnou volbou. Jedná se o široce používanou technologii při vývoji J2EE aplikací, odladěnou a prověřenou časem. Použití EJB je podmíněno použitím plnohodnotného aplikačního serveru, což nevyhovuje požadavkům. JSF jsem zvolil z důvodu jeho velmi dobré znalosti a také díky jeho architektuře, možnosti znovupoužití kódu napříč celou aplikací. Společně s JSF jsem použil knihovnu RichFaces 9 umožňující použití AJAXu. 3.4. Platform Specific Model (PSM) Balíčky mapovacích tříd persistentních objektů. Třídy odpovídají tabulkám v databázi. Balíček Business obsahuje třídy pokrývající nastavení systému jako systémové parametry a obecné číselníky. Balíček Communication ukládá komunikaci uživatelů a zařazení zpráv do skupin. Balíček Resources se plní při instalaci IS a obsahuje nastavení školy, tj. definici místností a budov školy. Balíček Study pokrývá informaci o celém studiu žáka(nepřítomnosti, prospěchu, odstudovaných předmětech), nastavení školního roku, definici závazků učitelů. V balíčku Subject najdeme záznamy o ŠVP předmětech a jejich charakteristikách definované ředitelem školy. V balíčku Users jsou umístěny tabulky držící informaci o aktuálních uživatelích, jejich rolích a účtech. 3.4.1. Balíček Business Balíček obsahuje třídy pro ukládání systémových parametrů, které definují chování IS. Dále obsahuje třídu, kde jsou definovány typy obecných číselníků a třídu pro definici hodnot číselníků. Každý obecný číselník je zařazen pod typ číselníků. 9 Dostupné na adrese http://www.jboss.org/jbossrichfaces/ 58

Návrh class com.digi.ischosys.business.bo.impl IdentifiedBo ISystemParameterBo SystemParameterBoImpl - active: Boolean - name: String - value: String IdentifiedBo IGeneralRegistryTypeBo GeneralRegistryTypeBoImpl - code: String - description: String - editable: Boolean - name: String +grtype 1 +id 0..* - code: String GeneralRegistryBoImpl - active: Boolean - description: String - grtype: IGeneralRegistryTypeBo - name: String - special1: String AuditedObject IGeneralRegistryBo Obrázek 23: Balíček tříd Business 3.4.2. Balíček Communication Balíček obsahuje třídy pro ukládání poslaných zpráv a rozdělení zpráv do skupin pro každého uživatele. U uložených zpráv se ukládá odesílatel a příjemce zprávy. class com.digi.ischosys.communication.bo.impl - name: String - person: IPersonBo MessageGroupBoImpl +messagegroup 0..1 IdentifiedBo IMessageGroupBo * MessageBoImpl IdentifiedBo IMessageBo - body: String - messagegroup: IMessageGroupBo - readdate: Calendar - readed: Boolean - recipent: IPersonBo - senddate: Calendar - sender: IPersonBo - subject: String Obrázek 24: Balíček tříd Communication 59

Návrh 3.4.3. Balíček Resources Balíček obsahuje třídy pro správu zdrojů školy jako třídy pro seznam budov školy, dále třídy pro seznam místností v budově a seznam pomůcek zařazených do tříd rozdělených podle typů, které jsou definovány třídou ArticleType. class com.digi.ischosys.resources.bo.impl BuildingBoImpl IdentifiedBo IBuildingBo - name: String - school: ISchoolBo - street: String - zipcode: String - town: String +id * +building 1 +id * RoomBoImpl - identifier: String - building: IBuildingBo - description: String - roomtype: IGeneralRegistryBo +room 1 IdentifiedBo IRoomBo +school 1 SchoolBoImpl - name: String - street: String - zipcode: String - town: String IdentifiedBo ISchoolBo +id * ArticleBoImpl - serialcode: String - room: IRoomBo - description: String - articletype: IArticleTypeBo AuditedObject IArticleBo +id * +articletype 1 ArticleTypeBoImpl - code: String - name: String - description: String IdentifiedBo IArticleTypeBo Obrázek 25: Balíček tříd Resources 3.4.4. Balíček Study Balíček study obsahuje třídy pro evidenci studijních výsledků žáků za školní rok, resp. za pololetí, jako známky, omluvené a neomluvené nepřítomnosti. V rámci tohoto balíčku ukládáme vytvořený a naplánovaný rozvrh pro jednotlivé roky, vypsané předměty, úvazky učitelů, docházející žáky na předměty a třídy včetně třídních učitelů. 60

Návrh class com.digi.ischosys.study AuditedObject ICertificateBo impl::certificateboimpl 1 - schoolyear: ISchoolYearBo - pupil: IPupilBo AuditedObject ICertificateMarksBo AuditedObject impl::certificatemarksboimpl ISchoolHalfYearBo impl::schoolhalfyearboimpl - schoolhalfyear: ISchoolHalfYearBo * 1 1..* - lesson: ILessonBo - halfyeartype: IGeneralRegistryBo - certificate: ICertificateBo - schoolyear: ISchoolYearBo - mark: IGeneralRegistryBo * 0..* 1 AuditedObject ISchoolYearBo impl::schoolyearboimpl - datefrom: Calendar - dateto: Calendar - publicated: Boolean 1 * 1 1 AuditedObject IInscribeInSchoolYearBo impl::inscribeinschoolyearboimpl * - schoolyear: ISchoolYearBo - teacher: IEmployeeBo - lessonload: Integer AuditedObject IBindPupilAndLessonBo impl:: BindPupilAndLessonBoImpl - pupil: IPupilBo 0..* - lesson: ILessonBo AuditedObject IAnnouncedSubjectBo impl::announcedsubj ectboimpl - subject: ISubjectBo - schoolyear: ISchoolYearBo - lessonload: Integer 1 * AuditedObject AuditedObject IClassBo IBindPupilAndClassBo impl::bindpupilandclassboimpl impl::classboimpl +lesson 0 0..* 0..* 1 - name: String 1 AuditedObject - pupil: IPupilBo - schoolyear: ISchoolYearBo -schoolclass ILessonBo - schoolclass: IClassBo - teacher: IEmployeeBo impl::lessonboimpl - classbooknumber: Integer - yearofattendance: Integer 1 0..* - lessonload: Integer - teacher: IEmployeeBo - announcedsubject: IAnnouncedSubjectBo AuditedObject - schoolclass: IClassBo IMarkTypeBo 0..* 1 - classmandatory: Boolean impl::marktypeboimpl +lesson 1 1 - name: String AuditedObject - description: String IAbsenceBo - lesson: ILessonBo impl::absenceboimpl 0..* - lesson: ILessonBo 1 - pupil: IPupilBo 0..* - datefrom: Calendar 0..* AuditedObject - dateto: Calendar ILessonTimeBo AuditedObject - absencetype: IGeneralRegistryBo impl::lessontimeboimpl IMarksBo impl::marksboimpl - classroom: IRoomBo - lesson: ILessonBo - gradetype: IGeneralRegistryBo - from: Calendar - schoolhalfyear: ISchoolHalfYearBo - to: Calendar - pupil: IPupilBo - dayofweek: IGeneralRegistryBo - marktype: IMarkTypeBo - description: String Obrázek 26: Balíček tříd Study 3.4.5. Balíček Subject Balíček Subject slouží pro udržování informací o studijním plánu pro celou školní docházku. Pro každý okruh učiva je vytvořena charakteristika předmětů, která je poté rozdělena a definována předměty, které se poté mohou na škole vyučovat. Dle povahy charakteristiky a nebo předmětu je určena, zda tímto předmětem musí nebo nemusí projít každý žák. 61

Návrh class com.digi.ischosys.subject.bo.impl Subj ectboimpl AuditedObject ISubjectBo - name: String - description: String - subjectcharacteristic: ISubjectCharacteristicBo - mandatory: Boolean - yearofattendance: Integer AuditedObject ITeacherSubjectBo TeacherSubj ectboimpl - teacher: IEmployeeBo - subject: ISubjectBo * 1 * AuditedObject ISubjectCharacteristicBo SubjectCharacteristicBoImpl 1.. - name: String - commondescription: String - learningcompetence: String - solutionsolvingcompentence: String - communicativecompetence: String - socialpersonalcompetence: String - civilcompetence: String - workingcompetence: String - personalsocialeducation: String - democraticcitizeneducation: String - euroglobalcontexteducation: String - multiculturaleducation: String - enviromentaleducation: String - mediaeducation: String Obrázek 27: Balíček tříd Subject 3.4.6. Balíček Users Balíček Users udržuje informace o uživatelích, kteří mají a nebo měli v minulosti přístup do IS a rolích, které identifikují typ uživatele. 62

Návrh class com.digi.ischosys.users.bo.impl PersonBoImpl - firstname: String - surname: String - street: String - town: String - country: IGeneralRegistryBo - dayofbirth: Calendar - placeofbirthtown: String - placeofbirthprovince: String - nationality: IGeneralRegistryBo - insurencetype: IGeneralRegistryBo - citizenshipqualificator: IGeneralRegistryBo - persontype: IGeneralRegistryBo - email: String - active: Boolean AuditedObject IPersonBo 1 +id 1 User BaseObject Serializable UserDetails - serialversionuid: long = 3832626162173359411L {readonly} # person: IPersonBo # username: String # password: String # confirmpassword: String # version: Integer # roles: Set = new HashSet() # enabled: boolean # accountexpired: boolean # accountlocked: boolean # credentialsexpired: boolean 1 EmployeeBoImpl IEmployeeBo PupilBoImpl IPupilBo - childrencount: TODO&ASK: Integer : - highesteducationtype: - Další vzdělávání, asi IGeneralRegistryBo nejvíce BOZP dávkové - nextmedicalcheckdate: zadání Calendar - nextrisesalarydate: - Preventivní prohlídky Calendar - vést všechny - lastrisesalarydate: záznamy<br>- Průběh Calendar předchozího zaměstnání - salaryclass: IGeneralRegistryBo - salarygrade: IGeneralRegistryBo - teacher: Boolean - employeetype: IGeneralRegistryBo - schoolyear: Integer - studystate: IGeneralRegistryBo - firstclasssigndate: Calendar - firstclasssignschool: String - signinthisschooldate: Calendar - individualplan: Boolean TODO&ASK: - deseases: String - výchovná opatření - certificatenumber: String - handicaptype: IGeneralRegistryBo - sessionstate: IGeneralRegistryBo 1..* Role BaseObject Serializable GrantedAuthority - serialversionuid: long = 3690197650654049848L {readonly} - name: String - description: String - version: Integer - users: Set Obrázek 28: Balíček tříd Users 3.5. Model uložení dat Model uložení dat je vytvořen zpětným refactoringem z databáze. Obsahuje vazby a názvy klíčů, tak jak jsou skutečně v databázi. Tento model odpovídá třídám z PSM, to znamená, že pro každou třídu z PSM nalezneme vždy jednu tabulku v diagramech modelu uložení dat. 63

Návrh dm db_model1 ischosys_t_subj ectcharacteristic *PK id: bigint * name: varchar(255) commondescription: text learningcompetence: text solutionsolvingcompentence: text communicativecompetence: text socialpersonalcompetence: text civilcompetence: text workingcompetence: text personalsocialeducation: text democraticcitizeneducation: text euroglobalcontexteducation: text multiculturaleducation: text enviromentaleducation: text mediaeducation: text * whencreate: time whenchange: time * whocreate: varchar(20) whochange: varchar(20) ischosys_t_teachersubject *PK id: bigint *FK teacher_id: bigint *FK subject_id: bigint * whencreate: time whenchange: time * whocreate: varchar(20) whochange: varchar(20) +fkc96180a72de31e11 +fkc96180a7920ccced +pk_ischosys_t_employee (teacher_id = id) +pk_ischosys_t_employee ischosys_t_employee *pfk id: bigint *FK highesteducationtype_id: bigint childrencount: integer * lastrisesalarydate: time * nextmedicalcheckdate: time * nextrisesalarydate: time *FK salaryclass_id: bigint *FK salarygrade_id: bigint *FK employeetype_id: bigint * teacher_id: char(1) (teacher_id = id) +pk_ischosys_t_employee +fk598b5a0b25536b2b +pk_ischosys_t_employee +fk598b5a0b1b02711a +fk598b5a0b494311ea +fk598b5a0b4831b6b0 (teacher_id = id) +pk_ischosys_t_subjectcharacteristic (subject_id = id) +fk12c27a62920ccced +fk97403b3b920ccced (subjectcharacteristic_id = id) +fk25e7822feb1eb691 +pk_ischosys_t_subject ischosys_t_subject *PK id: bigint * name: varchar(255) * description: varchar(255) *FK subjectcharacteristic_id: bigint * mandatory: char(1) yearofattendance: integer * whencreate: time whenchange: time * whocreate: varchar(20) whochange: varchar(20) +pk_ischosys_t_subject +fkec46be0e2de31e11 (subject_id = id) ischosys_t_announcedsubject *PK id: bigint *FK subject_id: bigint *FK schoolyear_id: bigint * lessonload: integer * whencreate: time whenchange: time * whocreate: varchar(20) whochange: varchar(20) ischosys_t_inscribeinschoolyear ischosys_t_class *PK id: bigint *PK id: bigint *FK schoolyear_id: bigint * name: varchar(50) *FK teacher_id: bigint *FK schoolyear_id: bigint * lessonload: integer *FK teacher_id: bigint * whencreate: time * yearofattendance: integer whenchange: time * lessonload: integer * whocreate: varchar(20) * whencreate: time whochange: varchar(20) whenchange: time * whocreate: varchar(20) whochange: varchar(20) +fk12c27a62ee3ac05f +fk97403b3bee3ac05f +pk_ischosys_t_class (schoolyear_id = id) (schoolyear_id = id) +pk_ischosys_t_schoolyear +pk_ischosys_t_schoolyear (teacher_id = id) ischosys_t_schoolyear *PK id: bigint * datefrom: time * dateto: time * publicated: char(1) +pk_ischosys_t_schoolyear * whencreate: time (schoolclass_id = whenchange: time id) (schoolyear_id = * whocreate: varchar(20) id) whochange: varchar(20) +fkec46be0eee3ac05f +pk_ischosys_t_schoolyear +pk_ischosys_t_announcedsubject (schoolyear_id = id) (highesteducationtype_id (salarygrade_id (employeetype_id (salaryclass_id = = id) id) = id) +pk_ischosys_c_registry ischosys_c_registry *PK id: bigint * active: char(1) * description: varchar(255) *FK grtype_id: bigint * name: varchar(255) special1: varchar(255) code: varchar(10) * whencreate: time whenchange: time * whocreate: varchar(20) whochange: varchar(20) +pk_ischosys_c_registry (halfyeartype_id = id) (announcedsubject_id = id) +fk5fc853d5646d54a3 ischosys_t_marktype *PK id: bigint * name: varchar(50) * description: varchar(255) *FK lesson_id: bigint * whencreate: time whenchange: time * whocreate: varchar(20) whochange: varchar(20) +fk5fc853d5f0766a1f +pk_ischosys_t_lesson (lesson_id = id) +fk2127dae43e317d9f ischosys_t_lesson +fk5fc853d5920ccced +fk20da5801ee3ac05f +fk20da580187b8382e *PK id: bigint *FK teacher_id: bigint ischosys_t_schoolhalfyear *FK announcedsubject_id: bigint FK schoolclass_id: bigint * classmandatory: char(1) *PK id: bigint * whencreate: time *FK halfyeartype_id: bigint whenchange: time (gradetype_id = *FK schoolyear_id: bigint * whocreate: varchar(20) id) +pk_ischosys_t_lesson * whencreate: time whochange: varchar(20) whenchange: time * whocreate: varchar(20) +pk_ischosys_t_schoolhalfyear whochange: varchar(20) (lesson_id = id) +fke9cbd4bb3e317d9f +pk_ischosys_t_marktype (schoolhalfyear_id = id) ischosys_t_bindpupilandlesson (marktype_id = id) +fk97c8650978f14e0a ischosys_t_marks *PK id: bigint *FK gradetype_id: bigint *FK schoolhalfyear_id: bigint *FK pupil_id: bigint *FK marktype_id: bigint * whencreate: time whenchange: time * whocreate: varchar(20) whochange: varchar(20) +fk97c865093c35bd5f +fk97c865096ceded67 *PK id: bigint *FK pupil_id: bigint *FK lesson_id: bigint * whencreate: time whenchange: time * whocreate: varchar(20) whochange: varchar(20) Obrázek 29: Model uložení dat, část 1. 64

Návrh dm db_model2 ischosys_t_employee +fk598b5a0b25536b2b *pfk id: bigint *FK highesteducationtype_id: bigint +fk598b5a0b1b02711a (salarygrade_id childrencount: integer +fk598b5a0b4831b6b0 (highesteducationtype_id (employeetype_id = id) +pk_ischosys_c_registry * lastrisesalarydate: time = id) = id) * nextmedicalcheckdate: time +fk598b5a0b494311ea ischosys_c_registry * nextrisesalarydate: time (salaryclass_id = +pk_ischosys_c_registry *FK salaryclass_id: bigint id) *FK salarygrade_id: bigint *PK id: bigint *FK employeetype_id: bigint * active: char(1) * teacher_id: char(1) * description: varchar(255) *FK grtype_id: bigint ischosys_t_bindpupilandclass * name: varchar(255) +pk_ischosys_t_employee +pk_ischosys_t_employee special1: varchar(255) code: varchar(10) (teacher_id = id) *PK id: bigint * whencreate: time *FK pupil_id: bigint whenchange: time *FK schoolclass_id: bigint * whocreate: varchar(20) * classbooknumber: integer whochange: varchar(20) +fk97403b3b920ccced +fka3f60595646d54a3 * whencreate: time whenchange: time * whocreate: varchar(20) +pk_ischosys_c_registry +pk_ischosys_c_registry +pk_ischosys_c_registry ischosys_t_class (mark_id = id) (schoolclass_id = whochange: varchar(20) id) +fk26fcbe6cf515d8ab *PK id: bigint +pk_ischosys_t_class +fka3f605955ef2fced * name: varchar(50) *FK schoolyear_id: bigint ischosys_t_certificatemarks *FK teacher_id: bigint * yearofattendance: integer * lessonload: integer *PK id: bigint ischosys_t_lessontime (dayofweek_id = * whencreate: time *FK schoolhalfyear_id: bigint id) whenchange: time *FK lesson_id: bigint * whocreate: varchar(20) *FK certificate_id: bigint (teacher_id = id) *PK id: bigint whochange: varchar(20) *FK mark_id: bigint *FK classroom_id: bigint * whencreate: time *FK lesson_id: bigint +fk26fcbe6c3e317d9f whenchange: time * lessonfrom: time * whocreate: varchar(20) +pk_ischosys_t_class * lessonto: time whochange: varchar(20) *FK dayofweek_id: bigint * whencreate: time whenchange: time +fkd956b4229c572851 +fk26fcbe6c3c35bd5f +fk26fcbe6c6eb93fc4 * whocreate: varchar(20) whochange: varchar(20) (schoolclass_id = id) +fkd956b4223e317d9f (lesson_id = id) (lesson_id = id) +fk5fc853d5646d54a3 +pk_ischosys_t_lesson (halfyeartype_id = id) +fk5fc853d5920ccced ischosys_t_lesson +pk_ischosys_t_lesson *PK id: bigint *FK teacher_id: bigint *FK announcedsubject_id: bigint FK schoolclass_id: bigint * classmandatory: char(1) * whencreate: time whenchange: time * whocreate: varchar(20) whochange: varchar(20) +pk_ischosys_t_lesson +pk_ischosys_t_schoolhalfyear (schoolhalfyear_id = id) (pupil_id = id) ischosys_t_certificate +pk_ischosys_t_certificate (certificate_id = id) *PK id: bigint *FK schoolyear_id: bigint *FK pupil_id: bigint * whencreate: time whenchange: time * whocreate: varchar(20) whochange: varchar(20) (studystate_id (handicaptype_id = id) = id) ischosys_t_schoolhalfyear +fk9d68351a5ef2fced *PK id: bigint *FK halfyeartype_id: bigint *FK schoolyear_id: bigint (lesson_id * = whencreate: id) time whenchange: time * whocreate: varchar(20) whochange: varchar(20) +fk20da580187b8382e (pupil_id = id) +pk_ischosys_t_pupil +pk_ischosys_t_pupil +fk97fbbb31408b4930 +fk97fbbb314eba9266 +fke9cbd4bb3e317d9f ischosys_t_pupil ischosys_t_bindpupilandlesson *PK id: bigint *FK pupil_id: bigint *FK lesson_id: bigint * whencreate: time whenchange: time * whocreate: varchar(20) whochange: varchar(20) +fke9cbd4bb5ef2fced (pupil_id = id) +pk_ischosys_t_pupil *pfk id: bigint certificatenumber: varchar(255) deseases: varchar(255) * firstclasssigndate: time * firstclasssignschool: varchar(255) FK handicaptype_id: bigint * schoolyear: integer * signinthisschooldate: time *FK studystate_id: bigint * individualplan: char(1) * sessionstate_id: bigint Obrázek 30: Model uložení dat, část 2. 65

Návrh dm db_model3 ischosys_c_registrytype ischosys_t_school ischosys_c_systemparameter +pk_ischosys_c_registrytype *PK id: bigint * code: varchar(10) * description: varchar(255) * editable: char(1) name: varchar(40) *PK id: bigint * name: varchar(50) * street: varchar(50) * town: varchar(50) * zipcode: varchar(5) *PK id: bigint * active: char(1) * name: varchar(20) * value: varchar(255) ischosys_c_registry (grtype_id = id) (school_id = id) +pk_ischosys_t_school +fkbd228611f31d1364 *PK id: bigint * active: char(1) * description: varchar(255) *FK grtype_id: bigint * name: varchar(255) special1: varchar(255) code: varchar(10) * whencreate: time whenchange: time * whocreate: varchar(20) whochange: varchar(20) +fkb064208b1ba0592d +pk_ischosys_c_registry (roomtype_id = id) +pk_ischosys_c_registry (citizenshipqualificator_id = id) +pk_ischosys_c_registry (nationality_id = id) (insurancetype_id +pk_ischosys_c_registry = id) ischosys_t_building *PK id: bigint * name: varchar(50) *FK school_id: bigint * street: varchar(50) * town: varchar(50) * zipcode: varchar(5) (building_id = +fk25f02ab84e72bfe3 +pk_ischosys_t_building +fk25f02ab8f6b51024 id) +pk_ischosys_c_registry (persontype_id = id) (country_id = id) +fk669b41f24b75ad04 +fk669b41f2c6c9075c +fk669b41f2ae64bbd8 ischosys_t_room *PK id: bigint *FK building_id: bigint description: varchar(255) *FK roomtype_id: bigint * identifier: varchar(20) ischosys_t_articletype *PK id: bigint code: varchar(20) description: varchar(255) * name: varchar(128) +fk669b41f2e9e2c829 ischosys_t_person +pk_ischosys_t_articletype +pk_ischosys_t_room (room_id = id) (articletype_id = id) +fk669b41f2866ae742 *PK id: bigint *FK citizenshipqualificator_id: bigint FK country_id: bigint dayofbirth: time * firstname: varchar(50) *FK insurancetype_id: bigint *FK nationality_id: bigint placeofbirthprovince: varchar(50) placeofbirthtown: varchar(50) * street: varchar(50) * surname: varchar(50) * town: varchar(50) *FK persontype_id: bigint email: varchar(255) active: char(1) * whencreate: time whenchange: time * whocreate: varchar(20) whochange: varchar(20) +pk_ischosys_t_person +pk_ischosys_t_person (person_id = id) +fk6995f9f9fa48f804 +fk6995f9f94deb052a ischosys_t_article *PK id: bigint *FK articletype_id: bigint description: varchar(255) *FK room_id: bigint serialcode: varchar(30) * whencreate: time whenchange: time * whocreate: varchar(20) whochange: varchar(20) role *PK name: varchar(20) * version: integer description: varchar(255) +pk_role +pk_ischosys_t_person (role_name = name) +fk459c5729e5ce7681 app_user +fk143bf46ab9911673 (recipent_id (sender_id = id) (person_id = id) *PK username: varchar(20) * version: integer +fk143bf46a95b77dea (username +pk_app_user = * password: varchar(255) username) account_enabled: char(1) * account_expired: char(1) * account_locked: char(1) * credentials_expired: char(1) FK person_id: bigint user_role *pfk username: varchar(20) *pfk role_name: varchar(20) +fkce282d0a2aef15a2 +fkce282d0ab4df0ba1 ischosys_t_message +fkabdd5fb5e5ce7681 *PK id: bigint body: varchar(255) FK messagegroup_id: bigint readdate: time * readed: char(1) *FK recipent_id: bigint * senddate: time *FK sender_id: bigint * subject: varchar(255) +fkce282d0a745b7033 +pk_ischosys_t_messagegroup (messagegroup_id = id) ischosys_t_messagegroup *PK id: bigint * name: varchar(50) *FK person_id: bigint Obrázek 31: Model uložení dat, část 3. 3.6. Menu Každá role, případně uživatel, má přirozeně přístup k různým částem a funkcím systému. Uživatel s určitou rolí vybírá funkce, které má k dispozici, pomocí menu a přechází na požadované stránky. Přechody z menu na stránky jsou popsány přímo ve scénářích případů užití. 66

Návrh Menu root značí kořen celého menu. Pod kořenem se nachází kořenové položky, které jsou v menu přímo viditelné. Tyto kořenové položky mohou mít pod sebou další položky, které se rozbalí až po najetí kurzorem. Nazývejme je listy menu a již nejsou dále dělitelné. Společné kořenové položky pro všechny role jsou Domů, Zprávy a Můj profil. cmp Director menu Menu root Director (from Users) Domů Zpráv y Rozv rh Lidé Školní rok ŠVP Můj profil Přijaté zprávy Osobní rozvrh Seznam žáků Seznam školních roků Charakteristika předmětů Pošli nov ou zpráv u Školní rozvrh Nový žák Vytv ořit školní rok Seznam předmětů Rozv rh žáků Seznam zaměstnanců Vypsané předměty Rozvrhy učitelů Nov ý zaměstnanec Úvazek učitelů Školní třídy Vyučov ací hodiny Obrázek 32: Menu role Director a Vice director 67

Návrh cmp Teacher menu Menu root Teacher (from Users) Domů Zpráv y Rozv rh Studijní agenda ŠVP Můj profil Přijaté zprávy Osobní rozvrh Moje třída Charakteristika předmětů Pošli nov ou zpráv u Rozv rh žáků Zápis známek Seznam předmětů Rozv rhy učitelů Obrázek 33: Menu role Teacher cmp Pupil menu Menu root Pupil (from Users) Domů Zpráv y Rozvrh Studijní info Můj profil Pošli novou zprávu Osobní rozvrh Absence Přijaté zprávy Celkov á absence Prospěch Obrázek 34: Menu role Pupil 68

Návrh cmp User manager menu Menu root UserManager (from Users) Zpráv y Lidé Můj profil Pošli nov ou zpráv u Seznam žáků Přijaté zprávy Nový žák Seznam zaměstnanců Nov ý zaměstnanec Obrázek 35: Menu role UserManager 69

Use Ability testy 4. Use Ability testy Testy proběhly na budoucích uživatelích přímo ve škole, pro kterou je tento systém vyvíjen. Celkem byl program testován na 9 osobách. Test probíhal průměrně v délce 30 min. Zvládnutí testu osobami bylo přímo úměrné počítačové gramotnosti testovaných osob. Respondentům s větší zkušeností v práci s počítačem a internetem, nedělalo velké problémy zvládnutí práce s menu a s běžnými funkcemi.. 4.1. Účastnící testů Testovací osoby byli vybrány z řad učitelského sboru. Jednalo se o osoby, které přicházejí celkem pravidelně do styku s počítačem a internetem. Pro účely testování se jevili nevhodní uživatelé, kteří mají s počítačem nebo internetem malé či vůbec žádné zkušenosti. Tito uživatelé by negativně ovlivnili výsledek testu. Zdáli se nevhodní i přesto, že tento systém budou takoví uživatelé používat. Pro tyto uživatele by mělo proběhnout proškolení a v budoucnosti by měl být k dispozici jednoduchý manuál, který bude popisovat základní funkce systému. Osoby, které se zúčastnili testu víceméně odpovídali nastavenému profilu a žádná z těchto osob nijak negativně neovlivnila výsledek testu. 4.2. Definice úkolů 4.2.1. Úkol 1 Přihlaste se, prosím, do systému jako Ředitel. Přihlašovací jméno: director Přihlašovací heslo: tomcat a) Zorientujte se v systému. Projděte si postupně nabídky v menu. Nebojte se na nic kliknout. b) Pokuste se změnit jazyk na anglický. c) Změňte jazyk nazpět na český. Cíl: zjistit zda nedělá problémy přihlašování otestovat změnu lokalizace zda je tato volba dobře viditelná a srozumitelná 70

Use Ability testy 4.2.2. Úkol 2 Kromě celkové agendy žáků, budete moci v systému mezi uživateli posílat zprávy. a) Tedy zkuste si přečíst všechny Vaše přijaté zprávy. b) Nalezněte všechny zprávy, které Vám poslal pouze Hajný c) Na jednu zprávu od Hajného odpovězte. d) Jednu zprávu přeřaďte do složky osobní. Cíl: orientace v menu filtrace na seznamu položek práce se záznamy seznamu položek výběr záznamu (detail nebo operace nad záznamem) 4.2.3. Úkol 3 Pošlete novou zprávu uživateli Administrátor. Cíl: celková orientace v systému použití LOV (list of values) vybrání záznamu z popup okna 4.2.4. Úkol 4 a) Vraťte se na seznam přijatých zpráv. b) Seřaďte tyto zprávy podle datumu odeslaní. c) Nejstarší zprávu smažte. d) 4 zprávy na list je pro Vás málo. Nastavte, aby se Vám zobrazovalo na jednu stránku 10 zpráv. Cíl: práce se seznamem položek setřídění záznamů podle nějakého sloupečku (vzestupně, sestupně) práce se seznamem položek změna počtu položek v seznamu 71

Use Ability testy 4.2.5. Úkol 5 a) Zaveďte do systému nového žáka. b) Jakmile je nový žák založen, zobrazte seznam všech žáků v systému. Cíl: práce s detailem, uložení detailu test tlačítkové lišty práce s kalendářem 4.2.6. Úkol 6 U zaměstnance Mandlová změňte název ulice a města. Změňte datum narození. Všechny tyto změny uložte. Cíl: práce s detailem, uložení detailu test tlačítkové lišty práce s kalendářem 4.2.7. Úkol 7 Odhlaste se ze systému. Cíl: Tlačítko pro odhlášení v menu liště a nebo pod uživatelskými informacemi? 4.3. Záznam řešení 4.3.1. Úkol 1 Osoba 1 Na první pohled nemohla nelézt menu hledala nějakou ikonku menu Jazyk měnila v nástrojové liště Osoba 2 Po projití aplikace se chtěla dostat na původní obrazovku po přihlášení Jazyk měnila v nástrojové liště 72

Use Ability testy Osoba 3 Nemohla nalézt menu nebylo jasné co je menu Jazyk měnila v nástrojové liště nakonec lokalizaci sama našla Osoba 4 Úkol provedla bez problémů Osoba 5 Úkol provedla bez problémů Osoba 6 Úkol provedla bez problémů Osoba 7 Změnu jazyka neprovedla. Nemohla najít tuto volbu. hledala v menu Osoba 8 Nebylo jasné co je menu. Očekávala nějaký popis Jazyk změnila bez problémů. Osoba 9 Úkoly provedla bez problému, po splnění úkolů se chtěla dostat do stavu jako po přihlášení. Hledala odkaz na úvodní obrazovku. 4.3.2. Úkol 2 Osoba 1 Úkol nemohl být proveden kvůli špatnému nastavení testu. Osoba 2 a) Přijaté zprávy našla bez zjevných problému. b) Práce s filtrem dělala problémy. Zkoušela tlačítko vyber. Vyfiltrovat Hajného se nepodařilo. 73

Use Ability testy c) Přejít na detail zprávy a odpověď byly bez problémů. d) Úkol přeskočen kvůli špatnému nastavení testu. Osoba 3 a) Ok. b) Ok. c) Prvně odpovědět hledala na seznamu zpráv, poté zkusila detail a odpověděla. d) Nebylo jí jasné, co znamená popisek skupina zpráv hledala něco jako složka zpráv. Po potvrzení, že složka je to, co skupina, úkol splnila. Osoba 4 a) Přijaté zprávy našla bez zjevných problémů. b) Filtrace Hajného ok. c) Ok. d) Ok. Osoba 5 a) Ok b) Nebylo jí jasné, co je filtrační formulář, hledala nějaký nadpis Filtrace apod., po ukázání co je filtrační formulář, poté úkol splnila bez problémů. c) Ok. d) Ze seznamu zpráv nevěděla jak zprávu přeřadit, hledala nějakou volbu přímo u zprávy. Po navedení na detail zprávy, úkol nakonec splnila. Osoba 6 a) Ok. Pro zbytek úkolů chybí zápis. Osoba 7 a) Ok. b) Prvně zkouší tlačítko vyber, očekává nějaké okno. Nebylo jí vůbec jasné k čemu slouží pole nad seznamem. Vyfiltrovat zkoušela tak, že se snažila kursorem označit uživatele a poté zmáčknout tlačítko vyber. Úkol neprovedla. c) Odpovědět hledá v seznamu zpráv, poté chtěla odpovědět přes volbu nová zpráva. Nakonec volbu na detailu našla. 74

Use Ability testy d) Zkouší klikat na text Skupina zpráv a poté hledá uložit. Po sdělení, že skupina je to samé jako složka, tak úkol splnila. Očekávala nějakou hlášku, že zpráva byla přeřazena. Osoba 8 a) Ok. Pro zbytek úkolů chybí zápis. Osoba se v tom ztrácela, byla netrpělivá a nechtěla v úkolu pokračovat. Osoba 9 a) Ok. b) Zkouší kliknout na tlačítko vyber, nebylo jí jasné, co znamenají pole nad seznamem. Úkol se nepovedlo splnit.. c) Ok. d) Skupinu zpráv nenašla, hledala na seznamu zpráv. Ani po nápovědě, aby se zaměřila na detail zprávy, úkol nesplnila. 4.3.3. Úkol 3 Osoba 1 Uživatel byl na seznamu zpráv a novou zprávu chtěl poslat napsáním Administrátor do pole pro filtrování odesílatele. Po nápovědě, že je tohle úplně špatně, našla volbu poslání nové zprávy a pak úkol splnila. Osoba 2 Formulář pro napsaní nové zprávy našla bez problémů. Nevěděla jak vybrat uživatele, kterému má zprávu poslat. Zkoušela napsat Administrátor přímo do pole. Ikonku našla s nápovědou. Pak už ok. Osoba 3 Z počátku chtěla psát příjemce přímo do kolonky, když jí to nešlo, pak se začala soustředit na ikonku. Osoba 4 Do políčka pro příjemce chce vypsat Administrátor. Dlouho hledala, jak vyplnit políčko 75

Use Ability testy pro příjemce, nakonec sama našla. Zajímavé je, že při plnění předešlého úkolu, chtěla odpovědět Hajnému přes novou zprávu a políčko pro příjemce vyplnila bez problémů. Osoba 5 Volbu nová zpráva hledala na seznamu přijatých zpráv. Poté v menu formulář našla a úkol provedla bez problémů. Osoba 6 Chybí zápis. Osoba 7: Novou zprávu hledala na seznamu uživatelů. Volbu hledala tak, že chce někomu něco poslat, tak si prvně najde onoho člověka. Jakmile klikla na ikonku pro LOV uživatelů, nevěděla, kde se nachází a co má vlastně LOV dělat. Osoba 8: Chce psát přímo do položky pro příjemce. Chce otevřít nějaké okno a tak zkouší kliknout na text Příjemce. Neví, co znamená hvězdička, co znamenají povinné položky. Osoba 9 Při výběru příjemce jako první klikla na text Příjemce, poté zkusila přímo tlačítko. 4.3.4. Úkol 4 Osoba 1 a) Úkol nesplnila. Zkoušela kliknout na filtrační formulář. b) Nemůže najít ikonku pro smazání, zkoušela se dostat do detailu. c) Kam se má zapsat počet stránek našla bez problému. Potvrzení provedla tím, že klikla na ikonku pro další stránku. Osoba 2 a) Úkol nesplnila. Vůbec netušila, kde je záhlaví seznamu. Čekala by záhlaví více zvýrazněné. b) Ok. 76

Use Ability testy c) Ok. Osoba 3 a) Úkol nesplnila. b) Volbu našla vcelku bez problému, jen smazala nejstarší záznam na stránce. Netušila, že existují i jiné listy seznamu. c) Ok. Osoba 4 a) Seřazení zkoušela tlačítkem Vyber. Po chvilce tápaní seznam seřadila. b) Záznam smazala přes detail. Ikonky na konci seznamu si nevšimla. c) Ok. Vyplněnou hodnotu potvrdila přes ikonku pro další stránku. Osoba 5 a) Seřazení bez problémů našla. Jen seznam již byl seřazen, tak zaváhala, protože neviděla žádnou akci. b) Ok. c) Ok. Vyplněnou hodnotu potvrdila klávesou Enter. Osoba 6 a) Seřadit zkoušela tak, že se snažila označit celý řádek. Úkol nesplnila. b) Smazání záznamu hledala přes detail. Ikonky na konci seznamu si nevšimla. Poprvé na detailu volbu neviděla, tudíž ho opustila, ale pak se vrátila a smazala. c) Zvyšovat počet záznamů chtěla přes šipky pro stránkování. Poté ji napadlo změnit hodnotu a potvrdila klávesou Enter. Osoba 7 a) Úkol nesplnila. b) Ok. Prvně šla na detail záznamu, poté se vrátila a smazala záznam ze seznamu. c) Políčko pro změnu našla okamžitě, potvrdila klávesou Enter. Osoba 8 a) Úkol splnila bez problémů, okamžitě věděla, co se po ní chce. b) Záznam smazala přes detail. c) Počet záznamů změnila bez problémů, hledala nějaké tlačítko pro potvrzení Potvrdit. 77

Use Ability testy Nakonec potvrdila tlačítkem Vyber. Osoba 9 a) Úkol splnila bez problémů, okamžitě věděla co se po ní chce. b) Ok. c) Ok. 4.3.5. Úkol 5 a 6 Úloha 5 a 6 typově stejná, pro nedostatek času jsem je u některých osob sloučil do jedné. Osoba 1 Nebylo jasné jak skočit detailu člověka. Nemohla najít sloupeček s operací. Nebylo jasné co tlačítko dělá, nepočkala si kurzorem na title. Prvně datum chtěla vyplnit přímo. Poté si tlačítka všimla a datum bez problémů vypsala. Neví co znamená hvězdička u povinných položek. Osoba 2 Volbu nového žáka hledala na seznamu žáků. Při vkládání datumu bez problémů vybrala rok a měsíc, ale problémy dělalo vybrat den. Zkoušela kliknout na celé políčko, poté sama přišla, že musí pouze na text. Osoba 3 V menu se orientovala bez problémů. Datum chtěla psát přímo do políčka, ikonka byla o řádek níže kvůli velikosti okna prohlížeče. Až si uvědomila, že ikonka patří k políčku, tak poté datum změnila bez problémů. Osoba 4 Při práci s kalendářem vybírá jako první den, což mělo za následek zavření kalendáře. Při opětovném otevření kalendáře a po vybrání správného roku a měsíce, neuměla vybrat den. Počítala s tím, že bude aktivní celé okno pro den. 78

Use Ability testy Osoba 5 V kalendáři se orientuje bez problémů. Neví, co znamená hvězdička u povinných položek. Osoba 6 Datum chtěla vyplnit přímo. Ikonku později našla, ale podle jejich slov si připadala docela zmatená, nevěděla proč má datum vybírat přes nějakou komponentu. Den chtěla potvrdit opět přes celé políčko. Osoba 7 Datum vyplnila bez problémů. Osoba 8 Datum vyplnila bez problémů. Volbu vložení nového žáka hledá na seznamu všech žáků. Osoba 9 Volbu vložení nového žáka hledá na seznamu všech žáků. Neví, co znamená hvězdička u povinných položek. Povinné položky by čekala zvýrazněné tlustým písmem. 4.3.6. Úkol 7 Osoba 1 Odhlášení hledala prvně nad ikonkou ischosys. Poté se úspěšně odhlásila. Osoba 2 Odhlášení bez problémů. Osoba 3 Při odhlášení zkoušela tlačítko zpět v prohlížeči. Hledala základní zobrazení jako po přihlášení. 79

Use Ability testy Osoba 4 Odhlášení bez problémů. Osoba 5: Odhlášení bez problémů. Osoba 6 Odhlášení očekávala v menu. Osoba 7 Odhlášení bez problémů. Osoba 8 Při odhlášení zkouší v prohlížeči tlačítko zpět. Očekávala u tlačítka pro odhlášení nějakou ikonku. Nakonec se odhlásila. Osoba 9 Odhlášení hledá na počáteční stránce. Nakonec se odhlásila. 4.4. Seznam problémů a návrh řešení 4.4.1. Úkol 1 První orientace podle slov testovaných osob byla bez problémů. Systém jim nepřipadal na první pohled nějak nepřehledný a uživatelsky nepříjemný. Při prvním úkolu, pokud měli změnit lokalizaci, tak většina osob hledala změnu jazyka přímo ve Windows jako návrh padlo, že by vedle textů pro lokalizaci mohla být vlaječka příslušného jazyka, tímto by byla volba více zřetelná. Jakmile se osoby pouze se systémem seznamovali, nečinilo jim žádné problémy s přecházením z formuláře na formulář, ale jakmile měli vybrat nějakou volbu z menu, nevěděli, kde se menu nachází. Tohle by mohlo činit problémy při čtení uživatelské příručky. Jako řešení navrhuji přidat do uživatelské příručky obrázek s vymezením pojmů na obrazovce a nebo v aplikaci jasně pojmenovat volbu. Osoby očekávali nápis Menu. 80

Use Ability testy 4.4.2. Úkol 2 Práce s filtrem dělala problémy většině testovaných osob. Nebylo jim zcela jasné, zda formulář nad seznamem patří k seznamu a k čemu vlastně slouží. Nejspíše by pomohlo obtáhnout seznam a filtr tenkou linkou, aby se zvýraznilo, že tyto oblasti patří k sobě. Dále např. přidat k filtru nápis Filtr hodnot v seznamu. Tato komponenta se bude v aplikaci velice honě využívat, takže by měla být co nejvíce uživatelsky příjemná. Logické a o co se nejvíce uživatelé snažili, bylo vybrání hodnoty ze seznamu přes celý řádek. Práce s detailem záznamu byla bez problémů. Kontextové menu by mohlo být více zvýrazněné. Po přeřazení zprávy do jiné složky se neobjevuje hláška, že byla nějaká operace provedena. Uživatel nevěděl, co se stalo. Navrhuji, při každé operaci vypsat hlášku, že něco bylo provedeno a s jakým výsledkem. 4.4.3. Úkol 3 Formulář hledala asi polovina uživatelů na seznamu zpráv. Většina uživatelů jako první zkoušela přímo vypsat jméno příjemce než aby si ho vybrala ze seznamu. Pokud se jim to nedařilo, tak většina uživatelů správně klikla na přidruženou ikonku. Na seznamu položek je uživatelsky příjemnější vybrat záznam přes celý řádek, někteří uživatelé se snažili označit myší celý řádek a pak CTRL+C a CTRL+V tento záznam zkopírovat. 4.4.4. Úkol 4 V tomto úkolu dělalo uživatelům největší problém setřídění záznamů. Pro uživatele záhlaví není dostatečně zřetelné. Bylo by potřeba více odlišit všechny položky seznamu. Po stisku tlačítka vyber očekávali nějaké okno. Jedná se o jednu komponentu, která bude v aplikaci velice používána bez zvláštních modifikací, takže to lze vyřešit popsáním v helpu a nebo uživatelské příručce. Nejspíše jde o to, že je to pro nezkušené uživatele jiný princip, než na jaký jsou zvyklí z ostatních aplikací. Potvrdilo se, že pokud bylo uživatelům vysvětleno, jak funguje tato komponenta, neměli s prací velké problémy. Ikonky u každého záznamu uživatelé těžko hledali, mazání záznamu dělali povětšinou přes detail. Důležité volby bych dával i do detailu. Uživatelům nebylo zcela jasné, jaký smysl má stránkování nebo nepoznali, že je to stránkování. Bylo by lepší vložit popisky nad tlačítko, forvard, fast forward apod. 81

Use Ability testy 4.4.5. Úkol 5 a 6 Asi polovině uživatelů nebylo jasné co znamená hvězdička u textového pole. Možná by bylo vhodné pod každý takový formulář vypsat řádek * značí povinnou položku. Při práci s kalendářem byla snaha zvolit den v tomhle pořadí den, měsíc, rok, což z funkcionality kalendáře není nyní možné. Většinu uživatelů zmátlo, že nemohou vybrat den kliknutím na celé okno pro den a to je vedlo k úvaze, že něco dělají úplně špatně. Velice bych doporučoval, aby den šel vybrat přes celé políčko. 4.4.6. Úkol 7 Uživatelé se odhlásili bez problémů. Jen by pro ně bylo příjemnější, kdyby tlačítko odhlásit bylo v menu a nebo alespoň zvýrazněno ikonkou. 82

Závěr 5. Závěr Hlavního cíle, zanalyzovat, navrhnout a následně implementovat informační systém v J2EE frameworcích, se podařilo dosáhnout. Byly použity moderní a mainstreamové opensource frameworky, takže v případě nasazení do provozu nevznikají další náklady na zakoupení licencí třetích stran. Touto diplomovou prací vznikla funkční aplikace, kterou je možno okamžitě nasadit do testovacího provozu. Druhotný cíl, navrhnout celý informační systém tak, aby byl lehce rozšiřitelný a existovala možnost customizace na různých základních školách, byl rovněž dosažen. Po provedení počáteční analýzy, se pokračovalo v udržování dokumentace během vývoje a tudíž vznikl ucelený analytický balíček vedený v Enterprise Architectu. Jeden z dalších důvodů, proč tato webová aplikace vznikla, bylo usnadnit práci a zlepšit komunikaci mezi subjekty zapojené do chodu školy. Díky tomu, že práce pokrývá mnoho důležitých procesů na základní škole, mohl by být i tento cíl splněn. 83

Literatura 6. Literatura [1] Bernd Oestereich, Developing software with UML. Addison Wesley, 1999. [2] UML 2.1 Tutorial, Sparx Systems, http://www.sparxsystems.com.au/resources/uml2_tutorial/ [3] Školní vzdělávací program, http://www.rvp.cz/sekce/52 [4] Spring Framework documentation, http://www.springframework.org/documentation [5] Hibernate documentation, http://www.hibernate.org/5.html [6] PostgreSQL documentation, http://www.postgresql.org/docs/ [7] MyFaces documentation, http://wiki.apache.org/myfaces/ [8] Acegi Security Reference Guide, http://www.acegisecurity.org/guide/springsecurity.html [9] RichFaces documentation, http://www.jboss.org/jbossrichfaces/docs/index.html 84

Přílohy 7. Přílohy 7.1. Příloha DVD 7.1.1. Obsah DVD /app/ischosys.war Zkompilovaná a zabalená aplikace v souboru war včetně všech knihoven. /doc/diplomova_prace.pdf Tento dokument v elektronické podobě. /doc/analysis.eap Analýza v Enterprise Architectu. /doc/instalacni_prirucka.pdf Instalační příručka. /install/* Instalační adresář. /src/* Java zdrojové kódy informačního systému /VMWareImage/Ubuntu804Server VMWare Image s nainstalovaným Ubuntu 8.04 serverem, pod kterým je nainstalovaná spustitelná aplikace včetně PostgreSQL serveru a Apache Tomcatu. /VMWareImage/Player/VMware-player-2.0.3-80004.exe Přehrávač vmware obrazů pod Windows. 7.1.2. Spuštění aplikace pod VMWare Pro spuštění je potřeba zkopírovat image na pevný disk nebo na jinou jednotku s možností zápisu a mít nainstalováno na cílovém počítači přinejmenším VMWare Player a případně jakoukoli vyšší verzi (VMWare Server a nebo VMWare Workstation). Přehrávač lze nalézt na 85

Přílohy DVD adresáři /VMWareImage/Player a nebo aktuální verze je dostupná na adrese http://www.vmware.com/products/player/. Po spuštění image přes přehrávač, musíme nejprve získat IP adresu, na které server běží. Přihlásíme se do linuxu jako user, heslo: user. Zadáme příkaz ipconfig eth0 tímto získáme IP adresu Získanou IP adresu zadáme do prohlížeče. Aplikace běží na portu 8080 a kontext aplikace je ischosys. Příklad adresy: http://192.168.1.2:8080/ischosys 7.2. Screenshoty aplikace 7.2.1. Přihlašovací stránka Obrázek 36: Screenshot - přihlašovací stránka 86

Přílohy 7.2.2. Menu po přihlášení pod rolí Director Obrázek 37: Screenshot - menu po přihlášení pod rolí Director 7.2.3. Seznam vypsaných předmětů pro školní rok Obrázek 38: Screenshot - seznam vypsaných předmětů pro školní rok 87

Přílohy 7.2.4. Rozvrh žáka Obrázek 39: Screenshot - rozvrh žáka 88

Přílohy 7.2.5. Zapisování absence učitelem Obrázek 40: Screenshot - zapisování absence učitelem 89

Přílohy 7.2.6. Přeřazení žáka do jiné třídy Obrázek 41: Screenshot - přeřazení žáka do jiné třídy 7.2.7. Vytvoření nové zprávy Obrázek 42: Screenshot - vytvoření nové zprávy 90

Přílohy 7.2.8. Příklad anglické lokalizace na detailu přijaté zprávy Obrázek 43: Screenshot - příklad anglické lokalizace na detailu přijaté zprávy 7.2.9. Zobrazení prospěchu žáka Obrázek 44: Screenshot - zobrazení prospěchu žáka 91

Přílohy 7.2.10. Vytvoření nového žáka přes roli UserManager Obrázek 45: Screenshot - vytvoření nového žáka přes roli UserManager 92