ƒeské vysoké u ení technické v Praze Fakulta elektrotechnická Katedra po íta Bakalá ská práce Studentova Berli ka III - Jádro aplikace Jaromír Van k Vedoucí práce: Ing. Ji í Chludil Studijní program: Softwarové technologie a management, Bakalá ský Obor: Softwarové inºenýrství 18. dubna 2010
Pod kování iv
v Prohlá²ení Prohla²uji, ºe jsem práci vypracoval samostatn a pouºil jsem pouze podklady uvedené v p iloºeném seznamu. Nemám závaºný d vod proti uºití tohoto ²kolního díla 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 18. dubna 2010.............................................................
Abstract Translation of Czech abstract into English. Abstrakt Tato práce se zabývá návrhem a následnou realizací jádra systému Studentova berli ka, který byl vyvíjen v minulých letech v rámci bakalá ských a diplomových prací. Systém Studentova berli ka e²í problematiku elektronické komunikace mezi studenty, cvi ícími a p edná²ejícími. Ú elem je umoºnit studentovi být informován o svých studijních výsledcích, cvi ícím a p edná²ejícím kvalitn j²í a jednodu²²í organizaci p edm tu. Cílem práce je p epracovat stávající systém tak, aby mohl být do budoucna roz²i ován a integrován s dal²ími zásuvnými moduly. vi
Obsah 1 Úvod 1 1.1 Existující informa ní systémy........................... 1 1.1.1 Univerzitní informa ní systémy...................... 2 1.1.2 Systémy pro podporu jednotlivých p edm t.............. 2 1.1.3 Historie systému Studentova berli ka................... 2 2 Popis problému, specikace cíle 4 2.1 Sou asný stav systému Studentova berli ka................... 4 3 Analýza 5 3.1 Volba programovacího jazyka........................... 5 3.1.1 Java Enterprise Edition.......................... 5 3.1.2 PHP..................................... 5 3.1.2.1 Výhody.............................. 6 3.1.2.2 Nevýhody............................. 6 3.2 Databázové úloºi²t, komunikace s databází................... 6 3.2.1 PDO..................................... 6 3.2.2 MySQL................................... 7 3.2.3 Historie................................... 7 3.2.4 Výhody a nevýhody............................ 7 4 Návrh e²ení 9 4.1 Celkový pohled na architekturu.......................... 9 5 Realizace 11 6 Testování 12 7 Záv r 13 Literatura 14 vii
Seznam obrázk 1.1 Ukázka první verze systému Studentova berli ka. Zdroj [1]........... 2 3.1 Vloºená abstraktní datová vrstva......................... 8 4.1 Celkový pohled na architekturu jádra....................... 10 viii
Seznam tabulek 3.1 Podporované databázové systémy......................... 7 ix
Kapitola 1 Úvod Studium na dne²ní moderní vysoké ²kole klade na studenty vysoké nároky a velké mnoºství povinností. Aby mohl student t mto nárok m vyhov t musí být v prvé ád o svých povinnostech a výsledcích co nejlépe informován. D leºité je najít kompromis mezi náro ností na drahocenný as cvi ícího a informovaností studenta. V n kterých p edm tech není toto zatím vy e²eno, coº vede k n kterým nep íjemným jev m: cvi ící nosí výsledky test pouze v písemné form u sebe, nejsou nikde zve ejn ny studenti musí na výsledky ekat minimáln týden i p esto, ºe testy jsou opraveny dríve pokud student na cvi ení absentuje, nemá ²anci se své výsledky dozv d t studenti poté asto pí²í osobní e-maily s ºádostí o sv j výsledek, coº zdrºuje jak cvi ící, tak samotné studenty cvi ící zve ej uje výsledky na svých osobních webových stránkách neexistuje ºádný ociální rozcestník jednotlivých webových stránek, student tak netu²í, kde výsledky hledat údrºba vlastních stránek je pro cvi ícího zbyte n asov náro ná studijní výsledky jsou povaºovány za osobní údaj a nem ly by být bez souhlasu zve ej ovány 1.1 Existující informa ní systémy Na základ zmi ovaných nep íjemností vznikají r zné pomocné nástroje, které by komunikaci mezi studenty a kantory zjednodu²ovali. V rámci ƒvut, potaºmo Fakulty elektrotechnické existuje ada systém, které toto e²í. Jejich problémem ov²em v t²inou je, ºe kaºdý takový systém vystupuje sám za sebe, není nijak integrován s ostatními a není moºnost, jak ho dále vylep²ovat a roz²i ovat. Typicky se tak stává, ºe student pot ebuje ke svému fungování v rámci ²koly n kolik r zných uºivatelských jmen a hesel, aby do r zných systém mohl p istupovat (a koli je pravdou, ºe se situace za dobu mého studia znateln zlep²ila). 1
KAPITOLA 1. ÚVOD 2 1.1.1 Univerzitní informa ní systémy Jednou skupinou systém pro podporu výuky jsou velmi rozsáhlé informa ní systémy zam ené na studium na vysoké ²kole jako na celek. P íkladem takového systému je Komponenta Studium (známá jako KOS) doprovázející studenty po celou dobu studia na v²ech fakultách ƒvut. KOS umoº uje student m zápis p edm t, tvorbu a zobrazení rozvrhu, p ihla²ování ke zkou²kám, p ehled pln ní studijního plánu, p ehled známek z absolvovaných p edm t a adu dal²ích funkcí, které z velké ásti nahrazují osobní komunikaci se studijním odd lením. P edchozí odstavec p evzat z [2] 1.1.2 Systémy pro podporu jednotlivých p edm t Jak uº bylo zmín no. Nejjednodu²²í formou systému pro podpory je soubor statických webových stránek. Tento p ístup pouºívá Service - K336 Community Web Server 1, který pouºívá Katedra po íta. Lep²í moºností je vyuºití systému zaloºeném na koncepci wiki (pouºívá nap íklad Eduweb 2 ), z d vodu men²í náro nosti p i tvo ení a aktualizaci obsahu. Ideálním e²ením je pouºití úzce specializovaného systému, který je vytvo en p ímo a pouze pro podporu výuky. Takovým systémem je práv Studentova berli ka 3. 1.1.3 Historie systému Studentova berli ka První verze Studentovy berli ka byla vytvo ena v zimním semestru 2005/2006 pro pot eby p edm tu DSA (Datové Struktury a Algoritmy) vedeným Ing. Ji ím Chludilem. Jednalo se (alespo ve srovnání se sou asnou podobou) o primitivní dynamickou stránku, která umoºnovala zadávat a prohlíºet hodnocení v daných t ídách. Obrázek 1.1: Ukázka první verze systému Studentova berli ka. Zdroj [1] V druhé verzi do²lo k zobecn ní systému, aby mohl být pouºit i v jiných p edm tech neº jen DSA. Nová verze p inesla mnohá vylep²ení jako moºnost evidovat docházku nebo 1 http://service.felk.cvut.cz/service.html 2 http://eduweb.fel.cvut.cz/ 3 http://berlicka.jagu.cz
KAPITOLA 1. ÚVOD 3 zadávat semestrální práce a poté evidovat jejich výsledky. Od roku 2007 je systém pouºíván v ostrém provozu pro p edm ty TIN (Teoretická informatika) a DSA (Datové struktury a algoritmy). Podrobnosti k t mto dv ma verzím lze nalézt v bakalá ské a diplomové práci jejich autora Ji ího Hunky [1]. V dal²ích letech, konkrétn v akedemickém roce 2008/2009, bylo rozhodnuto, ºe dal²í vývoj Studentovi berli ky bude sm ován k modulární architektu e. V souvislosti s tím mohla být zahájena práce na n kolika paralelních samostatných projektech, které funk nost Berli ky roz²i ují: Plugn-in support (BP) Marek Sacha Managment webu semestrálních prací (BP) Jakub Fi²er Generování test (BP) Ji í And l Automatické vyhodnocení test (BP) Petr Kotek Rozhraní pro Studentovu Berli ku (SP, pokra uje do DP) Lud k Chmurovský
Kapitola 2 Popis problému, specikace cíle 2.1 Sou asný stav systému Studentova berli ka Popis e²eného problému, vymezení cíl DP/BP a poºadavk na implementovaný systém. Popis struktury DP/BP ve vztahu k vyty eným cíl m. Re²er²ní zpracování existujících implementací, pokud jsou známy. 4
Kapitola 3 Analýza 3.1 Volba programovacího jazyka P i výb ru programovacího jazyka pro webové aplikace p ipadaly v sou asné dob v úvahu dv nejpouºívan j²í varianty. Jazyk Java na platform Java EE, nebo skriptovací jazyk PHP [5]. 3.1.1 Java Enterprise Edition Java EE (d íve ozna ovaná jako J2EE) je platforma pro vývoj tzv. enterprise aplikací. Poskytuje sadu specikací pro vytvá ení a provoz v t²ích distribuovaných multivrstevnatých Java aplikací. Hlavním d vodem pro nepouºití této technologie pro vývoj jádra aplikace Berli ka je zbyte ná komplexnost. 3.1.2 PHP Skriptovací programovací jazyk ur ený hlavn k vývoji webových aplikací. Historie PHP sahá aº do roku 1995, kdy p vodní autor Rasmus Lerdorf p edstavil sadu skript, které nazval Personal Home Page Tools. Do roku 1997 byla vytvo ena verze 2.0, která uº byla implementována v jazyce C, zatímco p vodní skripty byly v jazyku Perl. V roce 1997 zárove p vodní zdrojové kódy p evzali pánové Andi Gutmans a Zeev Suraski. Tyto kompletn p epsali a v polovin roku vydali jako verzi PHP 3.0, která dokonce roku dosáhla 10% podílu mezi webovými servery na internetu. Okamºit po vydání t etí verze za ali oba auto i pracovat na dal²ím vylep²ení jazyka. Nová verze 4.0 zaloºená Zend Engine (Zend jako zkratka jmen Zeev a Andi) byla p edstavena v polovin roku 1999, zárove byla zaloºena rma Zend Technologies, která se o vývoj jazyka PHP stará dodnes. V sou asnosti nejpouºívan j²í verzí jazyka PHP je verze 5 (p edstavena v roce 2004) a od ní odvozené varianty (nap íklad v sou asné dob nejnov j²í verze 5.3.2). Nejd leºit j²ími novinkami, které p i²ly s verzí PHP 5, byla nová vylep²ená podpora OOP a abstraktní datová vrstva PDO, o které se také budu podrobn ji zmi ovat dále v textu v souvislosti se svojí prací.[4] 5
KAPITOLA 3. ANALÝZA 6 3.1.2.1 Výhody Velká rozsáhlost funkcí p ímo v základní verzi Velké mnoºství roz²i ujících knihoven, které pokryvají v t²inu b ºných pot eb Nativní podpora mnoha databázových systém Multiplatformnost Pravd podobn stále nejpouºívan j²í jazyk pro psaní webových aplikací a z toho vyplývající rozsáhlost uºivatelské komunity Jednoduchá instalace na serveru, velké mnoºství server podporující hosting PHP Dobrý manuál 3.1.2.2 Nevýhody Zatíºenost historickým vývojem Nedokonalá podpora OOP Míchání objektového a procedurálního p ístupu v²echny p vodní nativní funkce jsou pouºívány jako procedurální Nekonzistentní pojmenování nativních funkcí a nejednotnost v logice po adí parametr Není zaru ena zp tná kompatibilita Nativní funkce nevyhazují výjimky (ty byly p idány do PHP aº od verze 5) Po zpracování poºadavku se ztrácí kontext aplikace p i kaºdém poºadavku vzniká nové vlákno, p ípdn proces, musí se navázat nové spojení s databází apod. Z p edchozího bodu vyplývající slab²í výkon 3.2 Databázové úloºi²t, komunikace s databází Výb r konkrétní databáze byl áste n limitován moºnostmi jazyka PHP. Pro p ístup do databáze bylo pouºito rozhraní PDO[3], které podporuje v t²inu znám j²ích databázových systému. Kompletní seznam k dispozici níºe. 3.2.1 PDO PDO (PHP Data Object) je abstraktní datová vrstva slouºící k jednotnému p ístupu k r zným databázím z jazyka PHP. Jedná se o sadu databázových ovlada, z nichº kaºdý musí implementovat dané standardizované rozhraní. Tím je zaji²t na konzistence p i jejich pouºívání. PDO se v jazyce PHP objevuje od verze 5.1.
KAPITOLA 3. ANALÝZA 7 Ovlada Podporované databáze PDO_DBLIB FreeTDS / Microsoft SQL Server / Sybase PDO_FIREBIRD Firebird/Interbase 6 PDO_IBM IBM DB2 PDO_INFORMIX IBM Informix Dynamic Server PDO_MYSQL MySQL 3.x/4.x/5.x PDO_OCI Oracle Call Interface PDO_ODBC ODBC v3 (IBM DB2, unixodbc and win32 ODBC) PDO_PGSQL PostgreSQL PDO_SQLITE SQLite 3 and SQLite 2 PDO_4D 4D Tabulka 3.1: Podporované databázové systémy 3.2.2 MySQL Z vý²e uvedených moºností byla vybraná jako nejvhodn j²í kandidát databáze MySQL. D - vody byly následující: p vodní systém Berli ky pouºívá také databázi MySQL pro snaº²í migraci dat je vhodné pouºít stejnou databázi na testovacím serveru dostupná zku²enosti len týmu nejvíce s touto databází 3.2.3 Historie Vydání první verze databazového systému MySQL se usute nilo roku 1995 rmou MySQL AB (která se pozd ji stala sou ástí Sun Microsystems nyní sou ástí Oracle). Tato první verze fungovalo pouze pod OS Linux a UNIX. Verze pro opera ní systém MS Windows byla p idána v roce 1998. Od roku 2005, kdy vychází MySQL verze 5.0 se stává plnohodnotnou databáz, která podporuje funkce jako: p edp ipravené dotazy (prepared statements), uloºené procedury (stored procedures), triggery, pohledy (views), transakce (transactions). 3.2.4 Výhody a nevýhody ²í ena pod licencí GPL moºnost pouºití zdarma moºnost pouºití r zných úloºi² (storage engines) MyISAM, InnoDB, MEMORY, CSV...
KAPITOLA 3. ANALÝZA 8 Obrázek 3.1: Vloºená abstraktní datová vrstva
Kapitola 4 Návrh e²ení 4.1 Celkový pohled na architekturu A koliv se tato práce zabývá pouze návrhem jádra aplikace, je d leºité se podívat na celkovou architekturu z v t²í perspektivy. 9
KAPITOLA 4. NÁVRH E ENÍ 10 Obrázek 4.1: Celkový pohled na architekturu jádra
Kapitola 5 Realizace Popis implementace/realizace se zam ením na nestandardní ásti e²ení. 11
Kapitola 6 Testování Zp sob, pr b h a výsledky testování. Srovnání s existujícími e²eními, pokud jsou známy. 12
Kapitola 7 Záv r Zhodnocení spln ní cíl DP/BP a vlastního p ínosu práce (p i formulaci je t eba vzít v potaz zadání práce). Diskuse dal²ího moºného pokra ování práce. 13
Literatura [1] J. Hunka. Studentova Berli ka. 2007. [2] P. Kotek. Studentova berli ka II - Automatické vyhodnocení test. 2009. [3] PHP: PDO - Manual. http://php.net/manual/en/book.pdo.php. [4] PHP: History of PHP - Manual. http://cz.php.net/manual/en/history.php.php. [5] PHP: Hypertext Preprocessor. http://php.net/. 14