• No results found

Information System of Art School

N/A
N/A
Protected

Academic year: 2021

Share "Information System of Art School"

Copied!
30
0
0

Loading.... (view fulltext now)

Full text

(1)

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 THESIS

AUTOR PR ´

ACE

PAVEL SLAB ´

Y

AUTHOR

VEDOUC´I PR ´

ACE

Mgr. ROMAN TRCHAL´IK

SUPERVISOR

(2)

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

(3)

Informaˇ

cn´ı syst´

em pro ZUˇ

S

Prohl´

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.

(4)

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

(5)

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

(6)

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

(7)

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.

(8)

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.

(9)

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.

(10)

Kapitola 3

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.

(11)

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.

(12)

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.

(13)

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.

(14)

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.

(15)

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.

(16)

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

(17)

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.

(18)

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

(19)

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.

(20)

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

(21)
(22)

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.

(23)

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

(24)
(25)

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).

(26)

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

(27)

Kapitola 7

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.

(28)

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.

(29)

r´ıloha A

Obsah CD

A.1

Adres´

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

(30)

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

References

Related documents

To capture CNVs within CDH candidate regions, we developed and tested a targeted array comparative genomic hybridization platform to identify CNVs within 140 regions in 196 patients

This slope is inconsistent with theories of spiral galaxy structure, which predict metal-rich inner regions and relatively metal-poor outer regions; the observed oxygen

Three measurements of the longitudinal field over a time interval of 64 days are reported by Mathys & Hubrig (1996): all yielded a field close to − 2. Since we found that it

In summary, our basic model suggests that the health share rises over time as income grows if the joy associated with living an extra year does not diminish as quickly as the

A heat balance sheet is pre- pared to know the various heat losses in two different two-pass combination tube boilers, using low grade coal and rice husk as a fuel.. Also, the

To facilitate course and program submissions universities, colleges, and career-technical institutions we will be using program accreditations or state board approvals as proof

 The relation between action and desire: because user’s actions are mainly determined by his desire and the current context values, and there is only one active user during a

This will entail conceiving language as an essential social and ideological instrument which enables learners to question methods and procedures and contributes to