Úvod 1.1 Smysl tohoto dokumentu Cílem našeho projektu je vytvořit desktopovou multiplatformní aplikaci, která bude sloužit jako klient pro školní systém “Komponenta studenta” (dále pouze KOS). Dosavadní řešení (webová aplikace na adrese http://kos.cvut.cz ) je nedostačující a nepohodlné pro studenty i vyučující. Webová aplikace je v obdobích s vyšší zátěží nestabilní, nedostupná či minimálně přetížená. Chceme tedy zjednodušit správu uživatelských (studentských) účtů v této aplikaci pomocí oddělení klienta od webového rozhraní do našeho GUI, které bude navrženo s co nejvyšším důrazem na uživatelskou přívětivost a funkčnost. Bude tedy umožňovat nejdůležitější funkce, které obsahuje webový KOS a navíc i nějaké nové (viz níže). Vedlejším produktem bude také ulehčení webové aplikaci, jelikož veškerá komunikace se serverem bude probíhat pomocí HTTPS pomocí XML requestů (tedy nebude nutné vykreslovat web pro každého uživatele). Tento dokument detailně popisuje specifikaci našeho projektu od návrhu až po požadavky.
1.2 Konvence dokumentu Důležité výrazy jsou uvedeny tučně. Citace z jiných prací uvedeme kurzívou. Odkazy na internetové stránky budou vkládány do textu ve tvaru “http.//www.....com”
1.3 Pro koho je tento dokument určen Tento dokument je určen každému, kdo se chce dozvědět více o projektu aplikace KOS gui. Následující stránky obsahují obecnou specifikaci projektu.
1.4 Rozsah projektu Projekt není vyvíjen jako komerční produkt. Jde o projekt v rámci předmětu “Softwarové inženýrství 2 a 3” na Českém vysokém učení technickém v Praze. 1.4.1 Cíle: o o o o o
Usnadnit uživatelům (studentům) práci s KOSem Zjednoušit práci se školními systémy (UDB, UTVS,KOS) Poskytnout multiplatformí desktopovou alternativu pro KOS Novými funkcemi zpříjmenit používání KOSu Splnit požadavky “Softwarového inženýrství 2 a 3”
1.4.2 Benefity: o Open-source (možnost rozšíření, modifikací) o Rychlejší práce s aplikací o Pohodlné ovládání o Graficky i uživatelsky přívětivé prostředí o Sjednocení školních systémů na jednom místě (UDB, UTVS, KOS) o Možnost hodnotit předměty i vyučující, sdílet tyto informace Není cílem naší aplikace plně nahradit ovládání webové aplikace KOS pomocí webového prohlížeče, pouze poskytnout alternativu těm, kteří nejsou se stávajícím stavem spokojeni a stojí o změnu.
1.5 Odkazy na související materiály
Diplomová práce Specializovaný aplikační server pro WWW funkce KOS IS o Oleg Smirskyy, ČVUT FEL. o https://dip.felk.cvut.cz/browse/details.php?f=F3&d=K13136&y=2006&a=smirso1&t= dipl Diplomová práce Uživatelské rozhraní KOS pomocí Shockwave Flash o Jan Kořínek, ČVUT FEL o https://dip.felk.cvut.cz/browse/details.php?f=F3&d=K13136&y=2007&a=korinj1&t= dipl
2 Celkový popis 2.1 Perspektiva produktu Důvodem pro vznik tohoto projektu je dlouhodobá nespokojenost studentů ČVUT (zároveň členů vývojového týmu) se systémem aplikace KOS. Jak již bylo zmíněno v první části tohoto dokumentu, současná webová aplikace (http://kos.cvut.cz) je zastaralá, nestabilní a uživatelsky nepřívětivá. Navíc se zdá, že stále se množící připomínky nikdo neřeší a celý systém tak postupně upadá. Jelikož jsme nuceni s KOSem pracovat - zapisovat si rozvrhy, přihlašovat se na zkoušky, atd... je proto naší motivací uzpůsobit si tuto nutnou práci co nejvíce podle našich potřeb. Webová aplikace nám žádné možnosti úprav neumožňuje a proto jsme se rozhodli vyvinout v rámci školního projektu desktopovou aplikaci, která by nám naši práci usnadnila a co nejvíce zpříjemnila a zrychlila. Aplikace tedy je určená studentům ČVUT a hlavně pak studentům fakult FEL a FIT. Naše aplikace tedy navazuje na již existující systém KOSu, který je ovšem pro externí uživatele naprosto nepřístupný. Toto není způsobeno neochotou odpovědných lidí či byrokratickými překážkami, ale pouze a jenom jeho složitostí. Systém se vyvíjí již více než 18 let a zdá se, že nikdy neměl žádný koncept. Nové funkcionality byly přidávány bez jakékoli integrační myšlenky tak, aby fungovali a způsobily co možná nejméně chyb, což se ale samozřejmě časem vymklo kontrole. Na naši žádost o zpřístupnění dokumentace KOSu, případně pouze jeho externího rozhraní jsme dostali jednoduchou odpověď, že taková dokumentace neexistuje, a lidé, kteří znají alespoň jednotlivé části KOSu mají příliš mnoho práce, než aby se nám mohli věnovat. Pro fungování naší aplikace je ovšem důležité přistupovat k datům uživatelů, jejich rozvrhům či osobním údajům a proto je nutné vytvořit si vlastní FALEŠNÝ server, který bude simulovat databázi KOSu. Projekt navazuje na diplomovou práci Specializovaný aplikační server pro WWW funkce KOS IS (Oleg Smirsky, ČVUT FEL, odkaz). V této práci autor vytvořit aplikační server, který poskytoval API pro přístup k datům uživatelů KOS. Díky tomuto API další student Jan Kořínek vytvořil klienta pomocí technologie Flash, který uměl pracovat s KOSem (Uživatelské rozhraní KOS pomocí Shockwave Flash, ČVUT FEL, odkaz). Aplikační server RECVLITE od Olega Smirskyyho, který byl dříve nasazen na fakultním serveru felk.cvut.cz a sloužil k testování klientů, již není bohužel dostupný, a tak si bohužel musíme vytvořit
vlastní testovací server. Avšak v naší práci dodržíme RECVLITE API (DTD XML a komunikace na HTTPS), aby šlo v budoucnu tyto dvě aplikace propojit a funkčně nasadit.
Obrázek - Obecné schéma nasazení
2.2 Vlastnosti produktu Po přihlášení uživatel do svého profilu mu aplikace umožní spravovat svůj školní účet. Cílem je zachovat současné funkce aplikace KOS a přidat nové, případně připravit aplikaci tak, aby přidání těchto nových funkcionalit bylo co nejjednodušší. Stávající funkce KOSu Zápis a kontrola zapsaných předmětů Správa osobních údajů uživatele Přehled studijních výsledků Zobrazení rozvrhů a možnost jejich tvorby Přihlašování na jednorázové akce Nové funkce naší aplikace Integrace UTVS (aplikace ústavu tělesné výchovy) Integrace UDB (databáze uživatelů) Hodnocení učitelů Uživatelsky přívětivé GUI
2.3 Role v aplikaci V naší aplikaci bude vystupovat pouze jeden typ uživatele a to bude student. Je to dáno hlavně tím, že role studenta je jediná, ke které máme jako studenti přístup a kterou můžeme otestovat. Nebylo možné domluvit přístup do KOSu v roli administrátora, případně vyučujícícho a tak se musíme spokojit pouze s touto rolí. Protože je však aplikace určena studentům, tato role bude postačovat.
2.4 Operativní prostředí Aplikace bude pracovat jako desktopová aplikace na osobních počítačích jednotlivých uživatelů. Na HW těchto strojů nejsou kladeny vysoké nároky, neboť naše aplikace není složitá na výpočetní výkon. Aplikace je vyvíjena multiplatformně a proto ji lze spustit na operačních systémech Windows I Linux (jiné systémy nebudou testovány). Cílový operační systém musí mít grafické rozhraní, aplikace nepracuje v řežimu řádkového klienta. Je očekávána přítomnost internetového připojení bez ohledu na jeho rychlost.
2.5 Omezení návrhu a implementace Existuje několik limitujících faktorů, které v tomto projektu nastanou. Jedním z těch nejkritičtějších je jednoznačně nedostatek času. Podle hrubých odhadů bude pracnost tohoto projektu cca 500-600h, což při 4 členech v našem týmu znamená zhruba 150h na každého člena, což je velká časová zátěž vzhledem k našim dalším aktivitám. Dalším limitujícím faktorem je také přístup správců KOSu a obecně KOS jako takový. Nezdokumentovaný kolos jako je právě KOS by se mohl stát kamenem úrazu. Proto jsme se rozhodli pro falešný server a imitaci funkčnosti KOSu pouze pro naše účely. Možným omezujícím prvkem by také mohla být neochota osob odpovědných za UTVS a UDB, jelikož budeme potřebovat jejich spolupráci a poskytnutí přístupů do jejich systémů.
2.6 Uživatelská dokumentace Ke zdrojovému kódu aplikace bude napsána dokumentace a celý zdrojový kód bude řádně okomentovaný. V průběhu projektu bude napsán také tutoriál pro uživatele, kteří nevědí, jak aplikaci využívat. Myslíme si, že tyto dva dokumenty, společně s dokumenty souvisejícími s projektem (jako například tento), poskytnou dostatečnou informační základnu všem uživatelům, neboť náš projekt není rozsáhlý a i bez této dokumentace je snadno pochopitelný.
2.7 Předpoklady a závislosti Jedním z bodů, kterých chceme dosáhnout, je integrace UDB a UTVS aplikací do našeho projektu, což se ale také může ukázat jako problém. Pokud nám vedení těchto jednotlivých institucí nevyjde vstříc a neposkytne nám ke svým aplikacím potřebné dokumenty, budeme si muset nasimulovat i tyto systémy, případně jejich využití obejít (a například parsovat HTML).
3 Funkce systému 3.1 Napojení na KOS 3.1.1 Popis a priorita Aplikace se bude umět připojit a přihlásit na server KOS (v našem případě fiktivní testovací server) a komunikovat s ním. Tato funkčnost má nejvyšší prioritu a je z celé aplikace nejdůležitější.
3.1.2 Uživatelské akce a reakce systému Aplikace bude s uživatelem komunikovat pomocí GUI. Uživatel bude program ovládat pomocí formulářů a dialogových oken, aplikace tyto požadavky uživatele zpracuje a odešle je na KOS server. Když KOS server odpoví, aplikace přijatá data ze serveru přehledně zobrazí v GUI.
3.1.3 Funkční požadavky Uživatel bude vždy informován o stavu výsledku operace. Pokud se tedy operace nezdaří (např. předmět nepůjde zapsat), uživatel o tom bude informován. Stejně tak, pokud se operace zdaří (např. zapsání paralelky se zdařilo), uživatel je o tom informován. REQ-KOS-1: Odebrání poznámky z rozvrhu REQ-KOS-2: Odhlášení z "jednorázových akcí" REQ-KOS-3: Odhlášení ze zkoušky REQ-KOS-4: Přidání poznámky do rozvrhu REQ-KOS-5: Tisk rozvrhu REQ-KOS-6: Uživatel se může odhlásit ze systému KOS REQ-KOS-7: Uživatel se může připojit do systému KOS REQ-KOS-8: Zapsání na "jednorázové akce" REQ-KOS-9: Zobrazení "jednorázových akcí" REQ-KOS-10: Zobrazení detailních informací k předmětu REQ-KOS-11: Zobrazení možnosti přístupu do rozvrhu REQ-KOS-12: Zobrazení přehledu studijních výsledků REQ-KOS-13: Zobrazení rozvrhu REQ-KOS-14: Zobrazení studijního plánu REQ-KOS-15: Zobrazení termínů zkoušek REQ-KOS-16: Zobrazení zapsaných předmětů REQ-KOS-17: Zrušení zapsaného předmětu REQ-KOS-18: Zrušní zapsané paralelky cvičení, přednášky REQ-KOS-19: Zápis na zkoušku REQ-KOS-20: Zápis paralelky cvičení, přednášky REQ-KOS-21: Zápis předmětu
3.2 Napojení na UTVS 3.2.1 Popis a priorita Aplikace bude umožňovat zobrazení dostupných tělocviků z UTVS a jejich filtrování na základě určitých údajů, například typu sportu, času cvičení apod. To by mělo uživateli usnadnit vybírání tělocviků na základě svých priorit a školního rozvrhu. UTVS je aplikace sloužící k zapisování tělesné výchovy a letních/zimních kurzů. Priorita této funkčnosti je střední.
3.2.2 Uživatelské akce a reakce systému Aplikace bude s uživatelem komunikovat pomocí GUI. Uživatel bude program ovládat pomocí formulářů a dialogových oken, aplikace tyto požadavky uživatele zpracuje a odešle je na UTVS server. Když UTVS server odpoví, aplikace přijatá data ze serveru přehledně zobrazí v GUI.
3.2.3 Funkční požadavky REQ-UTVS-1: Vyhledávání paralelky podle parametrů REQ-UTVS-2: Zobrazení paralelek sportu REQ-UTVS-3: Zobrazení seznamu sportů REQ-UTVS-4: Zrušení zápisu cvičení (paralelky) REQ-UTVS-5: Zápis cvičení (paralelky)
3.3 Hodnocení vyučujících a předmětů (FelGuide) 3.3.1 Popis a priorita Aplikace bude umožňovat hodnotit vyučující a předměty, stejně jako prohlížet hodnocení jiných studentů. V současné době je tato funkcionalita pokryta pouze webovou stránku (odtud název FelGuide), která je ovšem neaktualizovaná a obsahově zastaralá. Naše aplikace se přesto bude napojovat na tento server a vyparsuje z něj všechny komentáře a hodnocení, která na něm již jsou. Priorita této funkčnosti je střední.
3.3.2 Uživatelské akce a reakce systému
Aplikace bude s uživatelem komunikovat pomocí GUI. Uživatel bude program ovládat pomocí formulářů a dialogových oken. V případě potřeby se aplikace připojí na server, na který uloží nové hodnocení, případně stáhne požadované hodnocení. Všechny tyto aktivity budou reflektovány přímo v aplikaci notifikací pro uživatele. 3.3.3 Funkční požadavky REQ-FELGUIDE-1: Přidáno hodnocení REQ-FELGUIDE-2: Vyhledávání v seznamu vyučujících REQ-FELGUIDE-3: Zobrazení hodnocení osoby REQ-FELGUIDE-4: Zobrazení seznamu předmětů REQ-FELGUIDE-5: Zobrazení seznamu vyučujících
4 Požadavky na vnější rozhraní 4.1 Uživatelské rozhraní Grafické rozhraní aplikace je vytvořeno pomocí grafických knihoven Pythonu. Místo textového popisu přikládáme přímo screenshoty.
4.1.1 Obecné – Přihlášení
4.1.2 Okno KOS – Studijní výsledky
4.1.3 Okno KOS – Sylaby předmětů
4.1.4 Okno KOS – Poznámky k předmětům
4.1.5 Okno KOS – Jednorázové akce
4.1.6 Okno KOS – Zapsané předměty
4.1.7 Okno KOS - Zápis předmětu podle studijního plánu
4.1.8 Okno KOS – Předměty podle studijního plánu
4.1.9 Okno KOS – Všechny předměty
4.1.10 Okno KOS – Zobrazit rozvrh
4.1.11 Okno KOS – Tvorba rozvrhu
4.1.12 Okno KOS – Termín zkoušek
4.1.13 Okno KOS – Přihlášené zkoušky
4.1.14 Okno UTVS – Seznam cvičících
4.1.15 Okno UTVS – Seznam sportů
4.1.16 Okno FEL Guide – Seznam předmětů
4.1.17 Okno FEL Guide – Seznam vyučujících
4.1.18 Okno FEL Guide – Vyhledávání
4.2 Hardware interface Aplikace nevyžaduje speciální hardware pro svůj běh, stačí průměrný počítač. Aplikace bude pouze potřebovat připojení k internetu a tiskárnu pro případný tisk rozvrhů. O samotnou komunikaci s hardwarem se bude starat pouze operační systém. Minimální požadavky: procesor 800MHz, paměť 128MB RAM, cca 50MB volného místa na disku.
4.3 Software interface Aplikace bude multiplatformní, takže nebude omezena jen na jeden systém. Aplikace bude potřebovat Python verze 2.7, knihovnu PyQt verze 4.7.7, aplikaci OpenSSL a knihovnu PyOpenSSL. Důležitou komponentou, na kterou budeme naši aplikaci integrovat je systém KOSu, UTVS a FelGuide. Jak již ale bylo v této specifikaci zmíněno, tyto systémy jsou pro externí uživatele prakticky uzavřené (hlavně tedy aplikace KOSu). Bylo proto nutné si vytvořit na základě diplomové práce Olega Smirskeho vlastní falešný server se stejným rozhraním jako má zmíněná diplomová práce. Mezi tímto serverem a aplikací bude probíhat veškeré komunikace týkající se KOSu pomocí XML. Na tento server se bude uživatel autentizovat a z něho získávat všechna data (seznamy zkoušek, předmětů, studijní výsledky). Tyto hodnoty budou samozřejmě falešné, ale aplikace bude napsána tak, aby bylo možné její nasazení na reálný server. Tímto problémem se ale náš projekt nezabývá Dále se aplikace bude připojovat k serveru UTVS. Po konzultaci s administrátorem serveru UTVS jsme přistoupili k tomu, že vytvoříme DTD pro XML export dat z UTVS a s ním budeme v aplikaci pracovat. Jelikož se plánuje vytvoření aplikace pro XML export dat z UTVS na příští rok, neměl by pak být s připojením na server problém. Samozřejmě za předpokladu, že naše DTD nepozmění.
4.4 Komunikační interface Aplikace bude komunikovat se servery pomocí TCP/IP protokolu. Se serverem KOS pak HTTPS, se serverem FEL guide a se serverem UTVS po normálním HTTP. Bude využívat formátu XML pro přenášení dat z a do KOS serveru, z UTVS serveru a parsování HTML z FEL guide serveru.
5
Ostatní (nefunkční) požadavky
5.1 Požadavky na výkon Aplikace by měla být rychlá i na starších počítačích a její výkonnost by neměla záviset na konkrétním hardwaru, pokud se nejedná o velmi starý stroj. Vzhledem k použitým technologiím, které jsou rychlé a nenáročné, a vzhledem k tomu, že projekt není až tak velký, aby měl signifikantní podíl na vytíženosti počítače, očekáváme rychlý chod programu a tedy bezproblémové užívání.
5.2 Požadavky na bezpečnost Nejdůležitějším požadavkem na bezpečnost bude, aby aplikace sama nezměnila studentovi údaje bez jeho vědomí. Také se nesmí poškodit informace uložené na disku počítače uživatele ani počítač (software) samotný. Aplikace by měla hlídat každý uživatelův krok a ve vážnějších rozhodnutích vyžadovat potvrzení, například při zrušení předmětu. Jelikož studentský uživatelský účet v KOSu obsahuje osobní informace o studentech a v podstatě na něm závisí jejich studium, je potřeba zajistit bezpečný přístup do uživatelského účtu na serveru. Komunikace se serverem tedy bude probíhat pomocí protokolu https, který nám zajistí, že se do komunikace mezi server a klientskou aplikaci nedostane někdo cizí. Dále je potřeba zajistit, že se data ze samotné aplikace nedostanou do cizích rukou, což bude vyřešeno tak, že dokud se student nepřihlásí přes https na server, nebude mu aplikace zpřístupněna.
5.3 Atributy kvality aplikace Důležité je navrhnout aplikaci tak, aby se dala v budoucnosti jednoduše rozšiřovat o další funkce. Samozřejmostí je také uživatelská přívětivost a správnost chodu. Aplikace by měla být stabilní. Aplikace by měla způsobovat menší zátěž serveru a menší datový traffic než stávající webová aplikace KOS.