VYSOK ´
E U ˇ
CEN´I TECHNICK ´
E V BRN ˇ
E
BRNO UNIVERSITY OF TECHNOLOGY
FAKULTA INFORMA ˇ
CN´ICH TECHNOLOGI´I
´
USTAV INFORMA ˇ
CN´ICH SYST ´
EM ˚
U
FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INFORMATION SYSTEMS
INFORMA ˇ
CN´I SYST ´
EM PRO ZU ˇ
S
INFORMATION SYSTEM OF ART SCHOOL
BAKAL ´
A ˇ
RSK ´
A PR ´
ACE
BACHELOR’S THESISAUTOR PR ´
ACE
PAVEL SLAB ´
Y
AUTHOR
VEDOUC´I PR ´
ACE
Mgr. ROMAN TRCHAL´IK
SUPERVISOR
Abstrakt
Pr´ace pojedn´av´a o v´yvoji informaˇcn´ıho syst´emu pro z´akladn´ı umˇeleckou ˇskolu. Jednot-liv´e kapitoly se vˇenuj´ı anal´yze poˇzadavk˚u z´akazn´ıka, n´avrhu syst´emu podle poˇzadavk˚u, pl´anov´an´ı projektu (Gantt˚uv diagram, ˇr´ızen´ı rizik), samotn´e implementaci syst´emu v ja-zyce Ruby za pouˇzit´ı frameworku Ruby on Rails a jeho testov´an´ı a nasazen´ı v re´aln´ych podm´ınk´ach.
Abstract
This work deals with the development of the Information System for Primary Art School. Individual chapters contains the analysis of customer requirements, system designing ac-cording to the requirements, project planning (Gantt chart, risk management), the imple-mentation written in the Ruby language using the framework Ruby on Rails and its testing and deployment in real-world conditions.
Kl´ıˇ
cov´
a slova
informaˇcn´ı syst´em, ZUˇS, z´akladn´ı umˇeleck´a ˇskola, Ruby, RUby on Rails, management pro-jektu, ˇr´ızen´ı rizik, pl´anov´an´ı, Gantt˚uv diagram
Keywords
Information System, School of Music, Art School, Ruby, Ruby on Rails, project manage-ment, risk managemanage-ment, planning, Gantt Chart
Citace
Informaˇ
cn´ı syst´
em pro ZUˇ
S
Prohl´
aˇ
sen´ı
Prohlaˇsuji, ˇze jsem tuto bakal´aˇrskou pr´aci vypracoval samostatnˇe pod veden´ım pana Mgr. Ro-mana Trchal´ıka.
. . . . Pavel Slab´y 14. kvˇetna 2013
Podˇ
ekov´
an´ı
Dˇekuji panu Mgr. Tom´aˇsi Zouharovi a Alenˇe Svobodov´e, Dis. za odborn´e konzultace.
c
Pavel Slab´y, 2013.
Tato pr´ace vznikla jako ˇskoln´ı d´ılo na Vysok´em uˇcen´ı technick´em v Brnˇe, Fakultˇe in-formaˇcn´ıch technologi´ı. Pr´ace je chr´anˇena autorsk´ym z´akonem a jej´ı uˇzit´ı bez udˇelen´ı opr´avnˇen´ı autorem je nez´akonn´e, s v´yjimkou z´akonem definovan´ych pˇr´ıpad˚u.
Obsah
1 Uvod´ 4
2 Anal´yza poˇzadavk˚u 5
2.1 Z´ısk´av´an´ı informac´ı. . . 5
2.1.1 Interview . . . 5
2.1.2 Anal´yza st´avaj´ıc´ıch ˇreˇsen´ı . . . 5
2.2 Poˇzadavky na syst´em. . . 6
3 N´avrh syst´emu 7 3.1 Diagram pˇr´ıpad˚u uˇzit´ı . . . 7
3.2 Entity Relationship Diagram . . . 8
4 Pl´anov´an´ı 11 4.1 Zivotn´ı cyklus softwareˇ . . . 11
4.1.1 Etapy ˇzivotn´ıho cyklu software . . . 11
4.1.2 Modely ˇzivotn´ıho cyklu software . . . 11
4.2 Pl´an v´yvoje . . . 12
4.2.1 Definice rol´ı. . . 12
4.3 Gantt˚uv diagram . . . 12
4.4 R´ızen´ı rizikˇ . . . 14
4.4.1 Seznam rizik . . . 14
4.4.2 Skuteˇcnˇe projeven´e probl´emy . . . 14
5 Implementace 16 5.1 Datov´y model . . . 16 5.2 Importov´an´ı. . . 16 5.3 Ruby . . . 17 5.3.1 Duck Typing . . . 17 5.4 Ruby on Rails . . . 19
5.4.1 Model – View – Controller (MVC) . . . 19
5.4.2 ActiveRecord . . . 19
5.4.3 Polymorfick´a vazba . . . 19
5.4.4 Convention over Configuration . . . 19
5.4.5 DRY . . . 20
5.5 RubyGems . . . 20
6 Testov´an´ı a moˇznosti rozˇs´ıˇren´ı 22
6.1 Testov´an´ı . . . 22
6.2 Moˇzn´a rozˇs´ıˇren´ı. . . 23
7 Z´avˇer 24 A Obsah CD 26 A.1 Adres´aˇrov´a struktura na CD . . . 26
B Instalace a spuˇstˇen´ı 27 B.1 Instalace. . . 27
B.1.1 Prerekvizity . . . 27
B.1.2 Instalace. . . 27
B.1.3 Konfigurace . . . 27
Seznam obr´
azk˚
u
3.1 Diagram pˇr´ıpad˚u uˇzit´ı. . . 7
3.2 Entity relationship diagram. . . 8
3.3 Stavov´y diagram ˇz´adosti – worflow. . . 10
4.1 Gantt˚uv diagram.. . . 13
4.2 Seznam ´ukol˚u Ganttova diagramu. . . 15
5.1 N´ahled pˇrehledu. . . 17
5.2 N´ahled detailu. . . 18
Kapitola 1
´
Uvod
C´ılem t´eto pr´ace je popsat v´yvoj z´akaznick´eho software – informaˇcn´ıho syst´emu pro z´akladn´ı umˇeleck´e ˇskoly. Z´akladn´ı umˇeleck´e ˇskoly maj´ı specifick´e poˇzadavky na informaˇcn´ı syst´em, proto nen´ı ´uplnˇe pˇrirozen´e pouˇz´ıvat informaˇcn´ı syst´emy urˇcen´e pro z´akladn´ı nebo stˇredn´ı ˇskoly. Hlavn´ım rozd´ılem je pˇrevaˇzuj´ıc´ı pod´ıl individu´aln´ı v´yuky nad skupinovou.
V 2. ˇc´asti pr´ace popisuji zp˚usob z´ısk´av´an´ı informac´ı o potˇreb´ach uˇzivatel˚u, hodnot´ım konkurenˇcn´ı ˇreˇsen´ı a stanovuji c´ıle, kter´ych chci bˇehem implementaˇcn´ı f´aze dos´ahnout.
V 3. kapitole navrhuji informaˇcn´ı syst´em pˇredevˇs´ım pomoc´ı popisn´eho jazyka UML. Cel´y projekt pl´anuji s kapitole4.
Kapitola5je vˇenov´ana samotn´e implementaci syst´emu, popisu specifik pouˇzit´eho jazyka
a frameworku. Objasˇnuji v n´ı detaily moj´ı implementace.
V kapitole6ukazuji moˇznosti testov´an´ı a ukazuji mnou pouˇzit´e testovac´ı procedury. Na konci t´eto kapitoly tak´e ukazuji pˇr´ıpadn´y moˇzn´y smˇer dalˇs´ıho v´yvoje.
Kapitola 2
Anal´
yza poˇ
zadavk˚
u
Impulsem k vytvoˇren´ı informaˇcn´ıho syst´emu je obvykle snaha uˇsetˇrit uˇzivatel˚um ˇcas. Umoˇznit jim efektivnˇe vyˇrizovat potˇrebnou agendu. V´ypoˇcetn´ı technologie umoˇzˇnuj´ı tak´e spoustu operac´ı automatizovat. Nejdˇr´ıve je tedy nutn´e z´ıskat informace o tom, jak uˇzivatel´e bˇeˇznˇe pracuj´ı, nal´ezt kritick´a m´ısta tˇechto pracovn´ıch proces˚u.
V´ystupem t´eto f´aze v´yvoje aplikace je seznam poˇzadavk˚u, kter´e by mˇela splˇnovat.
2.1
Z´ısk´
av´
an´ı informac´ı
2.1.1 Interview
Interview spoˇc´ıv´a v rozhovoru s budouc´ım uˇzivatelem syst´emu. Rozhovor m˚uˇze b´yt voln´y, nebo pˇredepsan´y protokolem (pˇredevˇs´ım pro potˇreby porovn´av´an´ı v´ysledk˚u u r˚uzn´ych uˇzivatel˚u nebo pro sjednocen´ı v´ıce dotazovatel˚u). P´ısemn´a forma interview se naz´yv´a do-tazn´ık.
S´am jsem voln´ym zp˚usobem vyslechl potˇreby nˇekolika uˇzivatel˚u. Hlavn´ım uˇzivatelem tohoto informaˇcn´ıho syst´emu bude Mgr. Tom´aˇs Zouhar, ˇreditel Z´akladn´ı umˇeleck´e ˇskoly
Tiˇsnov. D´ale jsem podrobil voln´emu interview Alenu Svobodovou, Dis., uˇcitelku klav´ıru
brnˇensk´e Z´akladn´ı umˇeleck´e ˇskoly Frantiˇska J´ılka.
Z interview s tˇemito dvˇema lidmi vyplynuly n´asleduj´ıc´ı poˇzadavky popsan´e v kapitole 2.2
2.1.2 Anal´yza st´avaj´ıc´ıch ˇreˇsen´ı
Pˇredpokl´ad´am, ˇze existuje moˇznost, ˇze se touto problematikou jiˇz nˇekdo zab´yval. Proto je potˇreba nejdˇr´ıve proj´ıt, pˇr´ıpadnˇe i vyzkouˇset st´avaj´ıc´ı ˇreˇsen´ı a posoudit jejich vhodnost k nasazen´ı v c´ılov´e organizaci.
Fedena
Prvn´ı z´astupce konkurenˇcn´ıho software je Fedena psan´a v jazyce Ruby a s frameworkem
Ruby on Rails. Tento projekt je ˇs´ıˇren jako open-source Jej´ı pozitiva jsou kvalitn´ı grafick´y n´avrh a mobiln´ı verze.
iZUˇS ˇ
Cesk´y projekt webov´eho informaˇcn´ıho syst´emu iZUˇS vypad´a velmi nadˇejnˇe. M´a ale mnoho souˇc´ast´ı, kter´e podle ˇreditele Mgr. Tom´aˇse Zouhara jeho ˇskola nepotˇrebuje, napˇr´ıklad tˇr´ıdn´ı kniha. Cen´ık tohoto syst´emu nez´avis´ı na vyuˇz´ıvan´ych souˇc´astech, ale pouze na poˇctu ˇz´ak˚u, coˇz je nev´yhodn´e.
Klasifikace
Jedn´a se ˇcesk´y projekt psan´y v jazyce Visual C++ napsan´y Pavlem Holcem. Tento syst´em je dosus pouˇz´ıvan´y v ZUˇS v Tiˇsnovˇe, pro kterou je tento syst´em urˇcen. Jeho nev´yhodou je, ˇ
ze se mus´ı instalovat na pracovn´ı stanice. V tomto programu tak´e chyb´ı moˇznost pˇresun˚u v´yuky a t´ım tak´e moˇznosti vyplˇnov´an´ı v´ykaz˚u pracovn´ı doby.
ˇ
Reˇsen´ı pro z´akladn´ı a stˇredn´ı ˇskoly
Z´akladn´ı umˇeleck´e ˇskoly maj´ı specifick´e poˇzadavky na informaˇcn´ı syst´em, proto nen´ı ´uplnˇe pˇrirozen´e pouˇz´ıvat informaˇcn´ı syst´emy urˇcen´e pro z´akladn´ı nebo stˇredn´ı ˇskoly. Hlavn´ım rozd´ılem je pˇrevaˇzuj´ıc´ı pod´ıl individu´aln´ı v´yuky nad skupinovou.
2.2
Poˇ
zadavky na syst´
em
• Syst´em mus´ı umoˇznit spravovat matriku (evidence ˇz´ak˚u, jejich rodiˇc˚u, uˇcitel˚u). • Syst´em mus´ı umoˇznit efektivnˇe spravovat pracovn´ı dobu. Nejd˚uleˇzitˇejˇs´ı dokumenty
z t´eto oblasti jsou Dohoda o pracovn´ı dobˇe a V´ykaz pracovn´ı doby.
Dohodu o pracovn´ı dobˇe by mˇel vyplnit kaˇzd´y uˇcitel na zaˇc´atku kaˇzd´eho ˇskoln´ıho roku a pˇri kaˇzd´e dlouhodob´e zmˇenˇe. Zahrnuje pˇr´ımou i nepˇr´ımou pracovn´ı povinnost. V´ykaz pracovn´ı doby vyplˇnuje uˇcitel na konci kaˇzd´eho mˇes´ıce skuteˇcnˇe odpracovan´e
hodiny. Do tohoto dokumentu se prom´ıtnou zmˇeny oproti Dohodˇe o pracovn´ı dobˇe
jako napˇr´ıklad zmˇeny ve v´yuce, nemoci, dovolen´e a dalˇs´ı.
• Syst´em mus´ı b´yt snadno pˇr´ıstupn´y nejen ze ˇskoln´ı s´ıtˇe, ale i z internetu, aby uˇcitel´e mohli tuto agendu ˇreˇsit i z m´ıst, kde vykon´avaj´ı nepˇr´ımou pracovn´ı povinnost, napˇr. doma.
• Bylo by vhodn´e nemuset instalovat do poˇc´ıtaˇce ˇz´adnou klientskou aplikaci. Ide´aln´ı je tenk´y klient – dnes vˇsudypˇr´ıtomn´y webov´y prohl´ıˇzeˇc.
• Syst´em mus´ı umoˇzˇnovat pl´anov´an´ı akc´ı, napˇr. koncert˚u nebo exkurz´ı, v ciz´ım mˇestˇe. Mˇel by umoˇzˇnovat uˇcitel˚um pos´ılat dokumenty k tˇemto akc´ım z´akonn´ym z´astupc˚um
a jim umoˇznit potvrzovat tyto dokumenty.
• Syst´em by mˇel umoˇznit efektivn´ı komunikaci mezi ˇreditelem a uˇciteli, mezi uˇciteli a studenty.
Kapitola 3
N´
avrh syst´
emu
V t´eto kapitole pop´ıˇsu n´avrh syst´emu tak, aby splˇnoval poˇzadavky z kapitoly 2.2.
Pro rychl´e pochopen´ı modelovan´eho syst´emu zaˇcnu v kapitole3.1 diagramem pˇr´ıpad˚u uˇzit´ı (Use Case Diagram).
3.1
Diagram pˇ
r´ıpad˚
u uˇ
zit´ı
V poˇzadavc´ıch formulovan´ych v kapitole2.2m˚uˇzeme rozpoznat tˇri hlavn´ı skupiny uˇzivatel˚u: studenty, rodiˇce a uˇcitele. Posledn´ı jmenovan´e m˚uˇzeme d´ale rozdˇelit na prost´e zamˇestnance, uˇcitele, ˇreditele (v diagramu je pojmenov´an admin, protoˇze to bude uˇzivatel s nejvyˇsˇs´ımi pr´avy z uˇzivatel˚u) a root s nejvyˇsˇs´ımi pr´avy. Toto rozdˇelen´ı jsem modeloval jako dˇediˇcnost.
3.2
Entity Relationship Diagram
Entity Relationship Diagram ukazuje pˇredevˇs´ım vztahy mezi entitami. ER diagram
nalez-nete na obr´azku3.2. Popis entit a jejich v´yznamn´ych atribut˚u n´asleduje.
Obr´azek 3.2: Entity relationship diagram.
Student
Student je re´aln´y ˇz´ak, kter´y bude navˇstˇevovat ˇskolu.
Skupina
Skupina je skupina ˇz´ak˚u. Na mnoha m´ıstech v syst´emu je moˇzn´e pracovat bud’ s jedn´ım konkr´etn´ım ˇz´akem nebo celou skupinou takov´ych ˇz´ak˚u. Kaˇzd´y uˇcitel m˚uˇze m´a vlastn´ı
sku-piny. Skupina m´a platnost pouze v jednom ˇskoln´ım roce.
Rodiˇc
Rodiˇc je osoba rodiˇce ˇz´aka. Skuteˇcnost, ˇze rodiˇc m˚uˇze m´ıt v syst´emu v´ıce dˇet´ı, nebude implementov´ana v r´amci t´eto iterace v´yvoje.
Uˇcitel
Uˇcitel je re´aln´a osoba uˇcitele.
Uˇcebna
Uˇcebna pˇredstavuje re´alnou uˇcebnu vyskytuj´ıc´ı se v urˇcit´e budovˇe. Zmˇena uˇceben m˚uˇze b´yt pomˇernˇe ˇcast´a z´aleˇzitost, proto je v´az´ana na ˇskoln´ı rok.
Budova
Budova pˇredstavuje poboˇcku ˇskoly. Je charakterizovan´a sv´ym n´azvem, kter´y v sobˇe pravdˇepodobnˇe ponese svou adresu.
Pˇredmˇet
Pˇredmˇet pˇredstavuje vyuˇcovan´y pˇredmˇet. Je charakterizov´an sv´ym n´azvem, nicm´enˇe na vysvˇedˇcen´ı se pouˇz´ıvaj´ı ofici´alnˇejˇs´ı n´azvy, proto je zde tak´e ofici´aln´ı n´azev.
Rozvrh
Rozvrh hodin je kolekce hodin, kter´a patˇr´ı jednomu uˇciteli. Speci´aln´ım typem rozvrhu je Dohoda o pracovn´ı dobˇe. Dohoda o pracovn´ı dobˇe je zakl´ad´ana jako bˇeˇzn´y rozvrh a pot´e m˚uˇze uˇcitel poˇz´adat o ustaven´ı rozvrhu dohodou. Kaˇzd´y uˇcitel m˚uˇze m´ıt libovoln´y poˇcet rozvrh˚u, ale pouze jeden jako aktivn´ı Dohodu. Tak´e by mˇel m´ıt kaˇzd´y mˇes´ıc nˇejakou do-hodu platnou, podle re´aln´ych zkuˇsenost´ı vˇsak k vyplˇnov´an´ı dohod doch´az´ı ˇcasto aˇz zpˇetnˇe (obzvl´aˇst’ na zaˇc´atku ˇskoln´ıho roku z toho d˚uvodu, ˇze se jedn´a o individu´aln´ı v´yuku a jej´ı domluva je tak´e individu´aln´ı).
Hodina
Hodina je kl´ıˇcovou entitou informaˇcn´ıho syst´emu. Vztah mezi hodinou a rozvrhem naz´yv´ame kompozice, kter´a vyjadˇruje, ˇze hodina nem´a smysl bez odpov´ıdaj´ıc´ıho rozvrhu. Hodina se odehr´av´a v jedn´e uˇcebnˇe. Uˇc´ı j´ı pr´avˇe jeden uˇcitel a jeden ˇz´ak nebo skupina ˇz´ak˚u.
ˇ Z´adost
ˇ
Z´adost libovoln´eho uˇzivatele k ˇrediteli. M˚uˇze m´ıt konkr´etn´ı pˇredmˇet (napˇr´ıklad prohl´aˇsen´ı rozvrhu za Dohodu o pracovn´ı dobˇe) nebo nemus´ı. V pˇr´ıpadˇe, ˇze ˇz´adost m´a konkr´etn´ı pˇriˇrazen´y pˇredmˇet a akci, postar´a se syst´em o vykon´an´ı t´eto akce s´am. Pokud ale nem´a konkr´etn´ı pˇredmˇet pˇriˇrazen, je d˚uleˇzit´y text ˇz´adosti, kter´y ˇreditel mus´ı analyzovat a poˇzadovanou akci uˇcinit ruˇcnˇe.
ˇ
Z´adost je proces, kter´y je pops´an pomoc´ı sch´ematu naz´yvan´eho workflow. Toto workflow obsahuje tyto stavy: nov´a, podan´a, poˇzadov´ano doplnˇen´ı,zam´ıtnut´a a schv´alen´a. Vazby mezi tˇemito stavy jsou zn´azornˇeny v obr´azku3.3.
Pˇresun
Pˇresun pˇredstavuje pˇresun, kter´y patˇr´ı jedn´e konkr´etn´ı hodinˇe. Pˇresun mus´ı b´yt schvalov´an, proto je k nˇemu vˇzdy vytvoˇrena ˇz´adost. Pˇresun se zobrazuje v rozvrz´ıch, ale pokud jiˇz je nˇejak´a hodina pˇresunuta, nem˚uˇze b´yt rozvrh prohl´aˇsen za Dohodu o pracovn´ı dobˇe.
Obr´azek 3.3: Stavov´y diagram ˇz´adosti – worflow.
Zpr´ava
Zpr´ava pˇredstavuje zpr´avu od jednoho uˇzivatele jin´emu. Pˇri urˇcit´ych situac´ıch v syst´emu (napˇr´ıklad schv´alen´a ˇz´adost) budou zas´ıl´any zpr´avy z´uˇcastnˇen´ym uˇzivatel˚um. Zpr´ava by tak´e do budoucna mˇela m´ıt svou prioritu a syst´em bude vysoce prioritn´ı zpr´avy pˇrepos´ılat na email a ty nejurgentnˇejˇs´ı jako SMS do mobiln´ıho telefonu. Ale toto rozˇs´ıˇren´ı pˇrepos´ıl´an´ı nebude implementov´ano v t´eto iteraci v´yvoje syst´emu.
Kapitola 4
Pl´
anov´
an´ı
Pl´anov´an´ı je proces stanoven´ı postup˚u pro ˇr´ızen´ı a kontrolu pl´anovan´e ˇcinnosti. Pl´anovat lze napˇr´ıklad lidsk´e zdroje, rizika, n´aklady nebo proces implementace.
Informaˇcn´ı syst´em tak, jak byl navrˇzen v kapitole3, lze podle doby trv´an´ı povaˇzovat za stˇrednˇedob´y aˇz dlouhodob´y projekt. Podle poˇctu ˇclovˇekodn´ı jej m˚uˇzeme zaˇradit mezi mal´e aˇz stˇrednˇe velk´e projekty.
V kapitole4.4 najdete anal´yzu rizik.
Kapitola 4.1.2pojedn´av´a o modelech ˇzivotn´ıho cyklu software.
4.1
Zivotn´ı cyklus software
ˇ
Model ˇzivotn´ıho cyklu definuje etapy v´yvoje softwaru a jejich ˇcasovou n´aslednost, definuje nutn´e ˇcinnosti kaˇzd´e etapy a pro kaˇzdou etapu definuje jej´ı vstupy a v´ystupy.
4.1.1 Etapy ˇzivotn´ıho cyklu software
• Anal´yza – poˇzadavky z´akazn´ıka jsou analyzov´any
• N´avrh – na z´akladˇe analyzovan´ych poˇzadavk˚u z´akazn´ıka je navrˇzen syst´em
• Implementace – podle n´avrhu je syst´em implementov´an
• Testov´an´ı – testov´an´ı implementovan´eho software podle poˇzadavk˚u • Provoz a ´udrˇzba – nasazen´ı syst´emu a jeho udrˇzov´an´ı
4.1.2 Modely ˇzivotn´ıho cyklu software
Vodop´adov´y
Tento model je typick´ym z´astupcem line´arn´ıch (sekvenˇcn´ıch) model˚u. N´asleduj´ıc´ı etapa zaˇc´ın´a aˇz po ukonˇcen´ı t´e pˇredch´azej´ıc´ı. V tomto modelu existuje moˇznost n´avratu k pˇredch´azej´ıc´ı etapˇe.
Jeho hlavn´ı v´yhodou je nejlepˇs´ı struktura v´ysledn´eho syst´emu (za pˇredpokladu nemˇenn´ych poˇzadavk˚u). Nev´yhody pˇrevaˇzuj´ı nad v´yhodami: z´akazn´ık takˇrka nikdy nen´ı schopen urˇcit hned na poˇc´atku v´yvoje vˇsechny poˇzadavky a spustitelnou verzi dostane aˇz v z´avˇereˇcn´ych f´az´ıch projektu.
Spir´alov´y
Model spir´alov´y ˇrad´ıme mezi iterativn´ı modely. Syst´em se vyv´ıj´ı v jednotliv´ych iterac´ıch, pˇriˇcemˇz v´ystupem kaˇzd´e iterace je re´aln´y v´ysledek. Takov´ehoto v´yvoje se z´akazn´ık aktivnˇe ´
uˇcastn´ı (pr˚ubˇeˇzn´e akceptaˇcn´ı testov´an´ı, zmˇeny specifikace). Inkrement´aln´ı
Inkrement´aln´ı model patˇr´ı do skupiny hybrid˚u mezi sekvenˇcn´ımi a iterativn´ımi modely. Na z´akladˇe specifikace se stanov´ı ˇc´asti syst´emu a kaˇzd´a z nich je jiˇz vyv´ıjena line´arn´ım pˇr´ıstupem. Samotn´y model nen´ı konkr´etnˇe urˇcen, ale naopak m´a nˇekolik variant (napˇr´ıklad jako sekvence vodop´ad˚u nebo poˇc´ateˇcn´ı f´aze – anal´yza, n´avrh – jsou provedeny vodop´adem a jednotliv´e ˇc´asti jsou implementov´any vodop´adem bez tˇechto etap).
Pouˇzit´y model
Ve sv´e pr´aci bylo napl´anov´ano vyuˇzit´ı inkrement´aln´ı model ˇzivotn´ıho cyklu software. Anal´yza poˇzadavk˚u a n´avrh syst´emu bude proveden vodop´adov´ym modelem. Syst´em je rozdˇelen na nˇekolik logicky souvisej´ıc´ıch oblast´ı a kaˇzd´a z tˇechto oblast´ı byla zpracov´ana samostatn´ym vodop´adem (zkr´acen´ym o anal´yzu, n´avrh a akceptaˇcn´ı testov´an´ı). Detailn´ı pl´an popisuji v kapitole4.2.
4.2
Pl´
an v´
yvoje
4.2.1 Definice rol´ı
Pavel Slab´y bude m´ıt na starosti anal´yzu, n´avrh syst´emu, komunikaci se z´akazn´ıkem,
implementaci syst´emu, testov´an´ı a ´udrˇzbu syst´emu. V Ganttovˇe diagramu vystupuje pod zkratkou SL.
Mgr. Tom´aˇs Zouhar vystupuje v roli z´akazn´ıka – je zadavatelem. Je ˇreditelem Z´akladn´ı umˇeleck´e ˇskoly Tiˇsnov. V diagramu vystupuje sv´ymi inici´aly TZ.
Alena Svobodov´a, Dis. je jedn´ım z uˇcitel˚u brnˇensk´e Z´akladn´ı umˇeleck´e ˇskoly Frantiˇska J´ılka. Nebude pˇr´ım´ym uˇzivatelem syst´emu, ale pˇresto jej´ı pohled je v mnoh´em uˇziteˇcn´y. Pom˚uˇze obzvl´aˇst’ anal´yzu situace, kter´a pˇri vysvˇetlov´an´ı jednou osobou je znaˇcnˇe zkreslena.
4.3
Gantt˚
uv diagram
Gantt˚uv diagram ukazuje ˇcasovou souslednost ˇcinnost´ı a jejich z´avislosti.
Na obr´azku 4.1je zobrazen Gantt˚uv diagram zobrazuj´ıc´ı pl´an projektu. ˇCervenou bar-vou je zobrazena kritick´a cesta.
27 03 IX 2012 10 17 24 01 X 2012 08 15 22 29 05 XI 2012 12 19 26 03 XII 2012 10 17 24 31 07 I 2013 14 21 28 04 II 2013 11 18 25 04 III 2013 11 18 25 01 IV 2013 08 15 22 29 06 V 2013 13 SL;TZ;AS SL;TZ SL SL;TZ SL SL SL SL;TZ TZ SL SL SL;TZ TZ SL SL SL;TZ TZ SL SL;TZ SL;TZ SL SL;TZ TZ SL;TZ ZUŠ IS - stránka1 13
4.4
R´ızen´ı rizik
ˇ
4.4.1 Seznam rizik
Nejdˇr´ıve definuji uv´adˇen´e vlastnosti rizik. Z´avaˇznost na stupnici 1 − 3 (3 je nejz´avaˇznˇejˇs´ı) ud´av´a jak z´avaˇzn´y dopad by toto riziko mˇelo v pˇr´ıpadˇe projeven´ı. Pravdˇepodobnost´ı v´yskytu se snaˇz´ım urˇcit, jak moc pravdˇepodobn´e je, ˇze se toto riziko projev´ı. Popis rizika ukazuje moˇzn´y pr˚ubˇeh rizika, moˇzn´e dopady a d˚uvody, proˇc jej uvaˇzuji. Popis vypoˇr´ad´an´ı ˇr´ık´a, jak tomuto riziku pˇredch´azet, a jak´ym zp˚usobem zm´ırnit jeho dopady.
Porucha poˇc´ıtaˇce
Z´avaˇznost: 1
Pravdˇepodobnost v´yskytu: 10 %
Popis rizika: M˚uˇze doj´ıt k poruˇse m´eho poˇc´ıtaˇce a t´ım ke ztr´atˇe dat, znemoˇznˇen´ı pr´ace. Popis vypoˇr´ad´an´ı: V tomto pˇr´ıpadˇe je kl´ıˇcov´a prevence. Je d˚uleˇzit´e m´ıt data z´alohov´ana (k tomuto ´uˇcelu pouˇz´ıv´am Dropbox ). Abych eliminoval dopad znemoˇznˇen´ı pr´ace je vhodn´e m´ıt z´aloˇzn´ı poˇc´ıtaˇc, mohu tak´e vyuˇz´ıt poˇc´ıtaˇce v CVT naˇs´ı fakulty.
Zastaven´ı spolupr´ace ze strany ˇreditele
Z´avaˇznost: 3
Pravdˇepodobnost v´yskytu: 30 %
Popis rizika: M˚uˇze se st´at, ˇze ˇreditel ZUˇS ztrat´ı z´ajem o dokonˇcen´ı, z´ajem o spolupr´aci. Z´avaˇznost z´aleˇz´ı pˇredevˇs´ım na tom, jak moc pˇrestane komunikovat. Pokud by ´uplnˇe ztratil z´ajem o dokonˇcen´ı projektu je to pro projekt velmi kritick´e. Pokud by ovˇsem nekomunikoval pouze kr´atkodobˇe, napˇr´ıklad z d˚uvodu vyt´ıˇzenosti, mohlo by to zp˚usobit zdrˇzen´ı konkr´etn´ı etapy projektu. Protoˇze ale nˇekter´e ˇcinnosti z jeho strany stoj´ı v kritick´e cestˇe, mohlo by se i st´at, ˇze by se projekt mohl zadrhnout ´uplnˇe.
Popis vypoˇr´ad´an´ı: V pl´anov´an´ı jsem se snaˇzil ˇrediteli pl´anovat ˇcinnosti tak, aby nest´aly vˇzdy v kritick´e cestˇe. Pokud by ovˇsem podobn´a situace nastala, nen´ı moˇznosti ´uniku. Nˇekter´e jeho ˇcinnosti mohou zastat i jin´e osoby z oboru, ale v nˇekter´ych je nezastupiteln´y.
Zmˇeny v poˇzadavc´ıch
Z´avaˇznost: 2
Pravdˇepodobnost v´yskytu: 70 %
Popis rizika: Zadavatel m˚uˇze zjistit, ˇze vyv´ıjen´y syst´em nen´ı podle jeho pˇredstav, nebo ˇze chce nˇejakou funkˇcnost pˇridat.
Popis vypoˇr´ad´an´ı: Prevenc´ı je peˇcliv´a anal´yza a zapojen´ı zadavatele do procesu v´yvoje. V pˇr´ıpadˇe v´yskytu takov´eto zmˇeny m˚uˇze b´yt potˇrebn´e posunout term´ın dokonˇcen´ı.
4.4.2 Skuteˇcnˇe projeven´e probl´emy
Doˇslo k v´yskytu rizika Zastaven´ı spolupr´ace ze strany ˇreditele. Jak bylo naps´ano v popisu pr˚ubˇehu, m˚uˇze j´ıt o velmi z´avaˇzn´y aˇz kritick´y probl´em. ˇReditel mˇel za ´ukol uˇzivatelsk´e testov´an´ı a pˇredevˇs´ım akceptaˇcn´ı testov´an´ı a byla pl´anovan´a jeho ´uˇcast u nasazen´ı syst´emu v ZUˇS Tiˇsnov. Z tohoto d˚uvodu byly tyto aktivity v´yraznˇe zpoˇzdˇeny a jejich vyhodnocen´ı nebylo dostupn´e v dobˇe psan´ı t´eto zpr´avy.
1 Získávání informací 5 dní 3.9.12 8:00 7.9.12 17:00 SL;TZ;AS 2 Analýza požadavků 5 dní? 10.9.12 8:00 14.9.12 17:00 1 SL;TZ 3 Návrh systému (rámcový) 14 dní? 17.9.12 8:00 22.9.12 0:00 2 SL 4 Konzultace a upravování analýzy a návrhu 50 dní? 24.9.12 8:00 30.11.12 17:00 3 SL;TZ 5 Návrh systému (detailní) 265,12 dní? 24.9.12 8:00 21.12.12 17:00 3 SL 6 Implentace obecné funkčnosti 28 dní? 2.1.13 8:00 8.2.13 17:00 4;5
7 Progamování 112,12 dní? 2.1.13 8:00 8.2.13 17:00 4;5 SL
8 Implentace modulu Matrika 32 dní? 2.1.13 8:00 15.2.13 0:00 4;5
9 Progamování modulu 112,12 dní? 2.1.13 8:00 8.2.13 17:00 4;5 SL 10 Funkční testování 1 den? 11.2.13 8:00 11.2.13 17:00 9 SL;TZ 11 Uživatelské testování 1 den? 12.2.13 8:00 12.2.13 17:00 10 TZ 12 Úprava podle připomínek z testování 5 dní? 13.2.13 8:00 15.2.13 0:00 10;11 SL 13 Implementace modulu Rozvrhy 20 dní? 11.2.13 8:00 10.3.13 17:00 6
14 Progamování modulu 55,12 dní? 11.2.13 8:00 1.3.13 17:00 6 SL 15 Funkční testování 2 dní? 4.3.13 8:00 5.3.13 17:00 14 SL;TZ 16 Uživatelské testování 1 den? 6.3.13 8:00 6.3.13 17:00 15 TZ 17 Úprava podle připomínek z testování 10,12 dní? 7.3.13 8:00 10.3.13 17:00 15;16 SL 18 Implementace modulu Akce 15 dní? 11.2.13 8:00 1.3.13 17:00 6
19 Programování modulu 34,12 dní? 11.2.13 8:00 22.2.13 17:00 6 SL 20 Funkční testování 1 den? 25.2.13 8:00 25.2.13 17:00 19 SL;TZ 21 Uživatelské testování 1 den? 26.2.13 8:00 26.2.13 17:00 20 TZ 22 Úprava podle připomínek z testování 7,12 dní? 27.2.13 8:00 1.3.13 17:00 20;21 SL 23 Design 10 dní? 11.3.13 8:00 22.3.13 17:00 6;8;13;18 SL;TZ 24 Celková kontrola produktu 5 dní? 25.3.13 8:00 29.3.13 17:00 23 SL;TZ 25 Případné úpravy 13,12 dní? 1.4.13 8:00 5.4.13 17:00 24 SL 26 Nasazení systému v ZUŠ Tišnov 1 den? 1.4.13 8:00 1.4.13 17:00 24 SL;TZ 27 Testovací provoz 10 dní? 2.4.13 8:00 15.4.13 17:00 26 TZ 28 Vyhodnocení testovacího provozu 2 dní? 16.4.13 8:00 17.4.13 17:00 27 SL;TZ
Jméno Trvání Začátek Konec Předchůdci Iniciály zdroje
ZUŠ IS
Kapitola 5
Implementace
Rozhodl jsem se vytvoˇrit webov´y informaˇcn´ı syst´em. Dnes je nˇekolik bˇeˇznˇe pouˇz´ıvan´ych jazyk˚u pro v´yvoj webov´ych str´anek. Jedn´ım nejmodernˇejˇs´ıch je Ruby. Tak´e je velmi sloˇzit´e napsat webov´e str´anky ”z ˇcist´eho listu”, proto se dnes velmi ˇcasto pouˇz´ıvaj´ı frameworky, kter´e za program´atora obstar´avaj´ı typick´e a ˇcasto opakovan´e probl´emy. Bezesporu nej-pouˇz´ıvanˇejˇs´ım frameworkem v jazyce Ruby je Ruby on Rails (v´ıce v kapitole 5.4).
V´ysledek m˚uˇzete vidˇet na obr´azc´ıch 5.1a 5.2
5.1
Datov´
y model
Datov´y model odpov´ıd´a Entity Relationship Diagramu (viz kapitola3.2) s nˇekolika drobn´ymi odliˇsnostmi. Tyto odliˇsnosti prob´ır´am na n´asleduj´ıc´ıch ˇr´adc´ıch.
Celkov´y pohled na datomv´y model ukazuji v obr´azku 5.3
Uˇzivatel´e
V Entity Relatioship Diagramu vystupuj´ı entity student, uˇcitel a rodiˇc. Tyto tˇri entity
bychom obvykle modelovali jako dˇediˇcnost (konkr´etnˇe Multi-Table Inheritance), ale v mnou zvolen´em frameworku tato moˇznost nen´ı. Jako moˇznou alternativu lze pouˇz´ıt polymorfickou vazbu. Princip polymorfick´e vazby vysvˇetluji v kapitole5.4.3.
Dalˇs´ı zmˇeny
Pˇrid´ana tabulka imports, kter´a obsahuje informace o tom, kdo a kdy prov´adˇel import, a zda byl ´uspˇeˇsn´y.
5.2
Importov´
an´ı
Podle poˇzadavk˚u je potˇreba implementovat vstup data nejen pˇr´ımo od uˇzivatele, ale tak´e nepˇr´ımo pˇres jiˇz pouˇz´ıvan´y syst´em (popsan´y v kapitole 2.1.2). Tento syst´em nem´a da-tab´azovou strukturu kompatibiln´ı s mnou navrˇzenou, proto je nutn´e pouˇz´ıvat oddˇelen´e datab´aze. Klasifikace tak´e neˇreˇs´ı nˇekter´e moduly mnou vyv´ıjen´eho syst´emu (pl´anov´an´ı akc´ı, pˇresuny v´yuky).
Kv˚uli moˇzn´emu soubˇeˇzn´emu pouˇz´ıv´an´ı obou syst´em˚u je potˇreba zav´est zp˚usob, jak importovat nebo synchronizovat data.
Obr´azek 5.1: N´ahled pˇrehledu.
Pˇri importov´an´ı dat nast´av´a nˇekolik probl´em˚u. Jedn´ım z nich je neexistence loginu a hesla. Login generuji z jm´ena a pˇr´ıjmen´ı. Heslo si m˚uˇze uˇzivatel zvolit po prvn´ım pˇrihl´aˇsen´ı. ActiveRecord nen´ı na podobn´e operace pˇripraven, proto je potˇreba import prov´adˇet vykon´av´an´ım pˇr´ıkaz˚u v
”surov´em“ jazyce SQL.
5.3
Ruby
Jazyk Ruby ˇrad´ıme mezi interpretovan´e objektovˇe orientovan´e skriptovac´ı jazyky.
Imple-mentace tohoto jazyka byla naps´ana v jazyce C jedin´ym ˇclovˇekem Yukihiro Matsumoto
v komunitˇe v´yvoj´aˇr˚u zn´am´y sp´ıˇse jako Matz [4]. Jazyk Ruby je plnˇe objektovˇe orientovan´y, coˇz znamen´a, ˇze vˇse je objekt.
Jazyk Ruby je velmi intuitivn´ı a ˇciteln´y, svou syntax´ı se velmi podob´a anglick´emu jazyku.
5.3.1 Duck Typing
Duck typing je princip uplatnˇen´y v jazyce Ruby. Jeho myˇslenka je ´udajnˇe odvozena od
v´yroku Jamese Whitcomba Rileyho:
”When I see a bird that walks like a duck and swims like a duck and quacks
like a duck, I call that bird a duck.“ [11]
Tato myˇslenka ˇr´ık´a, ˇze jazyk nezkoum´a, kter´a rozhran´ı tˇr´ıda implementuje, ale jednoduˇse
mu zkus´ı zaslat zpr´avu. Tˇr´ıda, kter´a implementuje metodu, tedy nemus´ı implementovat
Tento jev zp˚usobuje rychlejˇs´ı psan´ı k´odu. M´a ale i sv´e nev´yhody. M˚uˇze se vyskytnout probl´em v pˇr´ıpadˇe, ˇze se v jednom prostˇred´ı vyskytuje napˇr´ıklad tˇr´ıda Hodiny s metodou nat´ahni a souˇcasnˇe napˇr´ıklad Facka. Takov´ato z´amˇena by mohla m´ıt pro program fat´aln´ı d˚usledky. Jako kaˇzd´y programovac´ı prostˇredek je nutn´e b´yt si vˇedom odpovˇednosti, kter´a pˇri jeho poˇzit´ı pˇrich´az´ı.
5.4
Ruby on Rails
5.4.1 Model – View – Controller (MVC)
MVC je n´avrhov´y vzor, kter´y oddˇeluje datovou vrstvu, ˇr´ıdic´ı vrstvu a vrstvu prezentaˇcn´ı. Jednotliv´e ˇc´asti popisuji v n´asleduj´ıc´ıch odstavc´ıch.
Model Model je abstrakce objekt˚u z re´aln´eho svˇeta, obvykle jsou jeho data uloˇzeny
v jedn´e tabulce. Nejedn´a se ovˇsem pouze o data, ale tak´e o bl´ızkou business logiku jako napˇr´ıklad validace vstup˚u.
View View, neboli pohled, zajiˇst’uje prezentaˇcn´ı vrstvu aplikace.
Controller Controller, ˇcesky ˇradiˇc, zajiˇst’uje ˇr´ızen´ı aplikace. Controller je meziˇcl´ankem mezi modelem a view. Jeho starost´ı je zobrazit spr´avn´y pohled. Pˇri vyvol´an´ı akce ve view se ˇr´ızen´ı opˇet pˇred´a ˇradiˇci, aby zareagoval a vykreslil spr´avn´e view pˇr´ıpadnˇe aktualizoval model.
5.4.2 ActiveRecord
Vˇetˇsina modern´ıch framework˚u poskytuje nˇejakou formu ORM (Object – Relational
Map-ping). ORM je automatick´y zp˚usob, jak v relaˇcn´ı datab´azi uloˇzit stav objektu z objektovˇe orientovan´eho jazyka [5].
Ve frameworku Ruby on Rails je persistence dat zajiˇstˇena pomoc´ı ActiveRecord.
5.4.3 Polymorfick´a vazba
Polymorfick´a vazba je specialitou frameworku Ruby on Rails. Pˇri bˇeˇzn´e asociaci vytvoˇr´ıme jeden sloupec v tabulce, kter´y ud´av´a odkaz na hodnotu v jin´e tabulky. Obvykle za ´uˇcelem udrˇzen´ı referenˇcn´ı integrity syst´emu definujeme tak´e ciz´ı kl´ıˇce. Polymorfick´a vazba nevytvoˇr´ı pouze jeden sloupec, ale sloupce dva. Prvn´ı sloupce typu integer, ud´av´a id (prim´arn´ı kl´ıˇc) v jin´e tabulce, a sloupce typu varchar, kter´y ud´av´a, ve kter´e tabulce se id m´a hledat.
Za ´uˇcelem zrychlen´ı vyhled´av´an´ı jsem definoval sloˇzen´y index na sloupce pod´ılej´ıc´ı se na polymorfick´e vazbˇe.
5.4.4 Convention over Configuration
Convention over Configuration je n´azev principu hojnˇe vyuˇz´ıvan´eho v Ruby on Rails.
Spoˇc´ıv´a v tom, ˇze m´ısto sloˇzit´e konfigurace kaˇzd´e drobnosti v konfiguraˇcn´ıch souborech se pouze vydaj´ı nejlepˇs´ı osvˇedˇcen´e postupy, kter´ych by se v´yvoj´aˇri mˇeli drˇzet. Tento prin-cip by mˇel umoˇznit rychlejˇs´ı v´yvoj a udrˇzovatelnˇejˇs´ı k´od.
Tento princip je vyuˇzit napˇr´ıklad v n´azvov´ych konvenc´ıch, konvenc´ıch pojmenov´an´ı soubor˚u, n´azv˚u sloupc˚u v datab´azi apod.
5.4.5 DRY
DRY znamen´a Don’t repeat yourself (Neopakuj se). Jedn´a se o princip, kdy by se
pro-gram´ator mˇel snaˇzit nepsat stejn´y k´od v´ıcekr´at, ale pouze nastat poprv´e a pak jen volat. Tento princip nut´ı program´atora ps´at pˇrehlednˇejˇs´ı, ˇcistˇs´ı a t´ım tak´e udˇzovatelnˇejˇs´ı k´od.
5.5
RubyGems
RubyGems je bal´ıˇckovac´ı syst´em pro programy, resp. knihovny v jazyce Ruby [6]. Podob´a se bal´ıˇckovac´ım syst´em˚um yum nebo apt-get z prostˇred´ı Linuxu.
RubyGems nepouˇz´ıv´a podepisov´an´ı zdrojov´ych k´od˚u certifik´aty [7], proto se ˇcasto st´av´a terˇcem ´utok˚u [8].
5.5.1 Pouˇzit´e gemy
”Gem je zabalen´a aplikace nebo knihovna v jazyce Ruby. Je definov´ana sv´ym jm´enem a verz´ı.“ [6]
Protoˇze komunita v´yvoj´aˇr˚u v Ruby je pomˇernˇe poˇcetn´a, existuje jiˇz velk´e mnoˇzstv´ı gem˚u, kter´e usnadˇnuj´ı pr´aci. Tak´e j´a jsem v t´eto pr´aci nˇejak´e vyuˇzil a v t´eto kapitole popisuji jejich ´uˇcel.
CanCan
CanCan [9] je knihovna, kter´a umoˇzˇnuje na jednom m´ıstˇe zapsat ACL (Access Control List) – seznam opr´avnˇen´ı pro ˇr´ızen´ı pˇr´ıstupu. Jej´ı hlavn´ı v´yhodou je, ˇze k´od je lokalizov´an do jedin´eho souboru app/models/ability.rb a cel´y k´od je ps´at deklarativnˇe.
Workflow
Knihovna workflow [10] umoˇzˇnuje, jak n´azev napov´ıd´a, jednoduˇse deklarovat workflow pro model. Workflow m˚uˇzeme definovat jako sch´ema ˇcinnosti procesu. ˇCasto je implementov´an jako koneˇcn´y automat, pˇr´ıpadnˇe Petriho s´ıt’. D´ıky pouˇzit´ı gemu Workflow se tˇemito imple-mentaˇcn´ımi detaily nemus´ım zab´yvat.
Workflow se skl´ad´a ze stav˚u, pˇrechod˚u mezi nimi. Pˇrechody mohou b´yt opatˇreny str´aˇz´ı a pˇred, resp. po vykon´an´ı pˇrechodu mohou vykon´avat nˇejakou funkci.
Sorted a will paginate
Pro bˇeˇzn´e pouˇz´ıv´an´ı je velmi potˇrebn´e ˇrazen´ı, str´ankov´an´ı a filtrov´an´ı seznam˚u. Pom´ah´a to nejen v tom, aby uˇzivatel nebyl zahlcen data, ale tak´e umoˇzˇnuje urychlit zpracov´an´ı str´anky.
ˇ
Razen´ı a str´ankov´an´ı jsem pˇrenechal tˇemto gem˚um, ale filtrov´an´ı jsem naprogramoval s´am, protoˇze jsem nenaˇsel jiˇz implementovan´y filtrovac´ı mechanismus tak jednoduch´y, tak rychl´y a z´aroveˇn tak uˇzivatelsky efektivn´ı.
Validates Timeliness
Kapitola 6
Testov´
an´ı a moˇ
znosti rozˇ
s´ıˇ
ren´ı
Testov´an´ı je jedna z metod zajiˇst’ov´an´ı kvality software. Jeho c´ılem je odhalit chyby v´yvoje a prok´azat poˇzadovan´e vlastnosti. Existuje nˇekolik typ˚u rozdˇelen´ı testov´an´ı, napˇr´ıklad sta-tick´e a dynamick´e, ˇcern´a skˇr´ıˇnka a b´ıl´a skˇr´ıˇnka nebo automatick´e a amanu´aln´ı.
Probl´em testov´an´ı se m˚uˇze vyskytnout v pˇr´ıpadˇe, ˇze tester hled´a chybu a ona neexistuje. Tato situace se d´a vyˇreˇsit vyhrazen´ım ˇcasu pro tento proces.
Dalˇs´ım probl´emem je situace, kdy testov´an´ı je ´uspˇeˇsn´e (nenalezlo chybu). Tento v´ysledek ale nevypov´ıd´a o bezchybnosti software.
6.1
Testov´
an´ı
Funkcion´aln´ı testov´an´ı
Jeden ze zp˚usob˚u testov´an´ı ˇcern´e skˇr´ıˇnky. Tester porovn´av´a pouze vstupy a v´ystupy.
Testoval jsem pomoc´ı tzv. n´ahodn´ych proch´azek. Ty pomohou urˇcit, zda v programu
nejsou z´asadn´ı chyby.
Testov´an´ı uk´azalo, ˇze souˇcasn´a kontrola chyb je nedostateˇcn´a. Kontrola je takto m´ırn´a proto, ˇze importov´an´ım z datab´aze souˇcasn´eho syst´emu dost´av´ame pomˇernˇe ˇcasto nevalidn´ı data a ztˇeˇzovalo by to pouˇz´ıv´an´ı syst´emu. Toto oˇsetˇrov´an´ı povaˇzuji za smˇer dalˇs´ıho v´yvoje (viz6.2).
Akceptaˇcn´ı testov´an´ı
Akceptaˇcn´ı testov´an´ı prov´ad´ı zadavatel. Na z´akladˇe jeho v´ysledku se rozhoduje, zda smlouva o v´yvoji software byla ˇr´adnˇe splnˇena ˇci nikoliv.
V m´em pˇr´ıpadˇe ovˇsem doˇslo k propuknut´ı probl´emu, kdy si zadavatel neudˇelal dostatek ˇ
casu na vˇcasn´e testov´an´ı a v´ysledky akceptaˇcn´ıch test˚u v dobˇe odevzd´an´ı t´eto pr´ace nejsou k dispozici (v´ıce informac´ı o tomto probl´emu naleznete v kapitole4.4.2).
Pilotn´ı testov´an´ı
Jedn´a v podstatˇe o testovac´ı nasazen´ı syst´emu. Testuj´ı ho jiˇz skuteˇcn´ı budouc´ı uˇzivatel´e. V m´em pˇr´ıpadˇe byl syst´em spuˇstˇen na testovac´ı dom´enˇe. V dobˇe odevzd´an´ı t´eto pr´ace ale jeˇstˇe nebyly k dispozici zanalyzovan´e v´ysledky (v´ıce informac´ı o tomto probl´emu naleznete v kapitole4.4.2).
Automatick´e testov´an´ı
Automatick´e testy jsou prov´adˇeny na z´akladˇe pˇresnˇe dan´eho postupu automaticky – bez pozornosti uˇzivatele. Jeho hlavn´ı v´yhodou je rychlost. Jedn´a se o nezbytnost v pˇr´ıpadˇe Test-Driven Development (testy ˇr´ızen´y v´yvoj). Automatick´e testy tak´e velmi usnadˇnuj´ı refactoring (refaktorizaci). Refaktorizace je proces zmˇeny k´odu tak, aby byl ˇcitelnˇejˇs´ı, udrˇzovatelnˇejˇs´ı, rychlejˇs´ı, optimalizovanˇejˇs´ı apod. bez zmˇeny vstup-v´ystupn´ıch dat.
Framework Ruby on Rails poskytuje prostˇredky pro automatick´e testov´an´ı, bohuˇzel
jsem jich nevyuˇzil dostateˇcnˇe, proto se velmi zkomplikovalo fin´aln´ı refaktorov´an´ı.
6.2
Moˇ
zn´
a rozˇ
s´ıˇ
ren´ı
D´ıky evidenci pracovn´ıch nepˇr´ıtomnost´ı (dovolen´a, nemocensk´a, apod.) by syst´em mohl b´yt schopen V´ykaz pracovn´ı doby generovat ´uplnˇe bez z´asahu ˇclovˇeka. O uˇziteˇcnosti t´eto moˇznosti bude nutn´e nejdˇr´ıve pˇresvˇedˇcit uˇzivatele syst´emu z ˇrad uˇcitel˚u.
Dalˇs´ı funkc´ı, kter´a by mohla b´yt zv´aˇzena pro budouc´ı implementaci je oboustrann´a syn-chronizace do datab´aze p˚uvodn´ıho syst´emu.
Pro lepˇs´ı kontroly zadan´ych ´udaj˚u je potˇreba pˇridat mnoˇzstv´ı evidovan´ych ´udaj˚u. Napˇr´ıklad abych mohl kontrolovat, zda m´a uˇcitel pˇriˇrazen spr´avn´y poˇcet ˇz´ak˚u, zda m´a spr´avn´y poˇcet vyuˇcovac´ıch hodin nebo zda m´a spr´avn´y poˇcet hodin nepˇr´ım´e pracovn´ı povinnosti, bych mu-sel do syst´emu zan´est informaci o velikosti ´uvazku a poˇcet hodin t´ydnˇe, kter´e m´a dan´y ˇz´ak zaplacen´y. Zad´av´an´ı tˇechto ´udaj˚u je potˇreba natolik zautomatizovat, aby se uˇcitel, resp. ˇreditel, mohl vˇenovat jin´e ˇcinnosti, kter´a je obzvl´aˇstˇe na zaˇc´atku ˇskoln´ıho roku potˇreba v jin´ych oblastech.
Tento syst´em jsem implementoval tak, by bylo snadn´e pˇridat evidenci vˇsech zamˇestnanc˚u a evidovat jejich pracovn´ı dobu.
Z datab´aze p˚uvodn´ıho syst´emu dost´av´ame nˇekdy nevhodn´a data. Napˇr´ıklad rodiˇc, kter´y m´a na jedn´e ˇskole v´ıce ˇz´ak˚u, dostane pro kaˇzd´e rodiˇcovstv´ı vlastn´ı pˇrihlaˇsovac´ı a heslo. Tyto duplicity je moˇzn´e odstranit napˇr´ıklad t´ım, ˇze vazba mezi rodiˇcem a ˇz´akem vznikne v syst´emu aˇz pozdˇeji neˇz importem, napˇr´ıklad t´ım, ˇze rodiˇc zad´a ´udaje ˇz´aka, kter´e ho v syst´emu identifikuj´ı.
Kv˚uli t´eto skuteˇcnosti jsou po cel´em syst´emu pouze minim´aln´ı kontroly zadan´ych dat (nejtristnˇejˇs´ı dopad je asi u validac´ı koliz´ı v rozvrhu). To je potˇreba pro pln´e pouˇz´ıv´an´ı tak´e zmˇenit.
Pˇrepos´ıl´an´ı doˇsl´ych zpr´av na email nebo SMS podle priority, bude tak´e implementov´ano pozdˇeji.
Pro bˇeˇzn´e pouˇz´ıv´an´ı budou tak´e nutn´e tiskov´e sestavy jejichˇz podobu jsem nestihl
Kapitola 7
Z´
avˇ
er
C´ılem tohoto textu bylo popsat proces v´yvoje informaˇcn´ıho syst´emu. Tento proces byl
pops´an od anal´yzy poˇzadavk˚u z´akazn´ıka, pˇres n´avrh syst´emu podle poˇzadavk˚u, pˇres pl´anov´an´ı cel´eho procesu v´yvoje a ˇr´ızen´ı rizik, aˇz po popis samotn´e aplikace a jej´ıho testov´an´ı.
Poˇzadavky z´akazn´ıka jsem ˇcerpal z nˇekolika zdroj˚u. Prvn´ım byl Mgr. Tom´aˇs Zouhar, ˇreditel Z´akladn´ı umˇeleck´e ˇskoly Tiˇsnov. Druh´y zdrojem byla uˇcitelka Alena Svobodov´a, Dis., uˇcitelka klav´ıru brnˇensk´e Z´akladn´ı umˇeleck´e ˇskoly Frantiˇska J´ılka. T´eto problematice se vˇenuje kapitola2.
Kapitolu 3jsem vˇenoval n´avrhu informaˇcn´ıho syt´emu. Podle tohoto n´avrhu jsem v ka-pitole5 uk´azal detaily implementace tohoto syst´emu.
Hlavn´ı c´ıle tohoto projektu (vytvoˇrit syst´em podle poˇzadavk˚u) se podaˇrilo splnit. Pro-jekt jsem peˇclivˇe napl´anoval, analyzoval rizika projektu, jak popisuji v kapitole4.2. Bˇehem v´yvoje se vyskytly probl´emy, jejichˇz dopad jsem se snaˇzil minimalizovat. Hlavn´ım probl´emem byl ´upadek z´ajmu zadavatele syst´emu, kter´y popisuji v kapitole 4.4.2.
Snaˇzil jsem se informace od nˇeho nahradit informacemi z jin´ych zdroj˚u, nˇekter´e vˇsak (napˇr´ıklad pilotn´ı testov´an´ı) bez zadavatele uskuteˇcnit nelze. Informaˇcn´ı syst´em byl tedy
implementov´an, ale pilotn´ı nasazen´ı a jeho vyhodnocen´ı nestihlo probˇehnout do doby
ode-vzd´an´ı t´eto pr´ace.
V r´amci ˇreˇsen´ı tohoto projektu jsem se zdokonalil v jazyce Ruby a detailnˇeji si osvojil pr´aci s MVC frameworkem Ruby on Rails. Vyzkouˇsel jsem nˇekter´e z mnoha pˇredpˇripraven´ych knihoven (gem˚u), kter´e jsem volnˇe k dispozici a kter´e velmi usnadˇnuj´ı a urychluj´ı v´yvoj. Tak´e jsem si prakticky ovˇeˇril, jak d˚uleˇzit´e jsou d˚ukladn´a anal´yza a pl´anov´an´ı v´yvoje.
Tento informaˇcn´ı syst´em je moˇzn´e d´ale vylepˇsovat v nˇekolika smˇerech. Nam´atkou vyberu z kapitoly6.2zas´ıl´an´ı zpr´av do emailu nebo do mobiln´ıho telefonu jako SMS, synchronizace s datab´az´ı p˚uvodn´ıho syst´emu, reset hesla nebo rozˇs´ıˇren´ı evidovan´ych dat tak, aby bylo moˇzno nˇekter´e operace automatizovat (napˇr´ıklad generov´an´ı v´ykaz˚u pracovn´ı doby zcela automaticky).
Tento syst´em se budu snaˇzit d´ale rozv´ıjet a dot´ahnout k ´uspˇeˇsn´emu nasazen´ı v Z´akladn´ı umˇeleck´e ˇskole Tiˇsnov.
Literatura
[1] HOLZNER, S. Zaˇc´ın´ame programovat v Ruby on Rails. Vyd. 1. Pˇreklad Karel
Vor´aˇcek. Brno: Computer Press, 2007, 384 s. ISBN 978-80-251-1630-2.
[2] KR ´AL, J. Informaˇcn´ı syst´emy. 1. vyd. Brno: Science, 1998, 357 s. ISBN 80-86083-00-4.
[3] HARTL, M. Ruby on Rails Tutorial. 2012. 2. Dostupn´e z:
http://ruby.railstutorial.org/ruby-on-rails-tutorial-book
[4] About Ruby [online]. [cit. 2013-04-30]. Dostupn´e z:http://www.ruby-lang.org/en/
[5] Active Record Basics [online]. [cit. 2013-04-29]. Dostupn´e z:
http://guides.rubyonrails.org/active_record_basics.html
[6] RubyGems User Guide — RubyGems Manuals [online]. [cit. 2013-04-29]. Dostupn´e z:
http://docs.rubygems.org/read/chapter/1%20Introducing%20RubyGems
[7] BOßLET, M. We Need to Sign Ruby Gems! But How? [online]. [cit. 2013-05-14].
Dostupn´e z:http:
//emboss.github.io/blog/2013/02/15/we-need-to-sign-ruby-gems-but-how/
[8] KOETSIER, J. RubyGems.org hacked, interrupting Heroku services and putting sites using Rails at risk [online]. [cit. 2013-04-30]. Dostupn´e z:
http://venturebeat.com/2013/01/30/rubygems-org-hacked-interrupting-heroku-services-and-putting-millions-of-sites-using-rails-at-risk/
[9] DOBRIAKOV, V. CanCan Home [online]. [cit. 2013-04-29]. Dostupn´e z:
https://github.com/ryanb/cancan/wiki
[10] DOBRIAKOV, V. What is workflow? [online]. [cit. 2013-04-30]. Dostupn´e z:
http://www.geekq.net/workflow/
[11] HEIM, M. Exploring Indiana highways: trip trivia. Wabasha, Minn: T.O.N.E. Pub, 2007. ISBN 978-097-4435-831.
Pˇ
r´ıloha A
Obsah CD
A.1
Adres´
aˇ
rov´
a struktura na CD
Na CD naleznete tyto sloˇzky:
Navod k instalaci a spusteni obsahuje PDF soubor s n´avodem k instalaci, konfiguraci
a spuˇstˇen´ı.
Technicka zprava pdf obsahuje PDF soubor s s touto technickou zpr´avou.
Technicka zprava zdroj obsahuje soubory, kter´e jsou potˇreba pro vys´azen´ı technick´e
zpr´avy pomoc´ı programu LATEX.
Navod k instalaci a spusteni obsahuje PDF soubor s n´avodem k instalaci, konfiguraci
Pˇ
r´ıloha B
Instalace a spuˇ
stˇ
en´ı
B.1
Instalace
B.1.1 Prerekvizity
Pˇred samotnou instalac´ı syst´emu je potˇreba m´ıt nainstalovan´e (konkr´etn´ı verze jsou do-poruˇcen´e, je moˇzn´e ˇze syst´em bude fungovat i pˇri jin´e konfiguraci):
• Ruby 1.9.3 • RubyGems 1.8 • Bundler
• Ruby on Rails 3
• JSRuntime kompatibiln´ı s ExecJS podle https://github.com/sstephenson/execjs
• Datab´azov´y server.
B.1.2 Instalace
Nakop´ırujte vˇsechny soubory do sloˇzky na disku. Vstupte do t´eto sloˇzky.
Zad´an´ım n´asleduj´ıc´ıho pˇr´ıkazu do termin´alu nainstalujete vˇsechny potˇrebn´e gemy: > bundle install
B.1.3 Konfigurace
Je potˇreba nastavit pˇrihlaˇsovac´ı ´udaje k datab´azi v config/database.yml. Pot´em je potˇreba spustit vytvoˇren´ı datab´aze, a naplnˇen´ı daty pomoc´ı: > rake db:setup
B.1.4 Spuˇstˇen´ı
Pomoc´ı n´asleduj´ıc´ıho pˇr´ıkazu spust´ıte serverovou aplikaci: > rails s