M F K I
Bc. Vojtěch Pilař
Analýza a tvorba groupware pro studentské projekty
M
Vedoucí práce: PhDr. Petr Škyřík
Brno, 2011
Prohlášení Prohlašuji, že tato magisterská diplomová práce je mým původním autorským dílem, které jsem vypracoval samostatně. Všechny zdroje, prameny a literaturu, které jsem při vypracování používal nebo z nich čerpal, v práci řádně cituji s uvedením úplného odkazu na příslušný zdroj.
V Brně dne 26. dubna 2011
Bc. Vojtěch Pilař
Poděkování Chtěl bych zde poděkovat především vedoucímu práce PhDr. Petru Škyříkovi za jeho cenné rady a nápady. Dále bych chtěl poděkovat Martinu Filipovi za jeho neocenitelnou pomoc, Evě Mlynářové, Martě Pavlovské a Janě Kratochvílové za jejich podporu.
Bibliografický záznam PILAŘ, Vojtěch. Analýza a tvorba groupware pro studentské projekty. Brno: Masarykova univerzita, Filozofická fakulta, Kabinet informačních studií a knihovnictví, 2011. 100 s. Vedoucí bakalářské práce PhDr. Petr Škyřík.
Shrnutí Magisterská diplomová práce pojmenovaná Analýza a tvorba groupware pro studentské projekty, se zabývá problematikou projektového managementu a tvorbou webové aplikace pro podporu projektového managementu s ohledem na informační architekturu, validitu, přístupnost, použitelnost a požadavky projektového managementu. Praktickým výstupem této práce je webová aplikace.
Abstract Thesis titled Analýza a tvorba groupware pro studentské projekty, deals with project management and creating a web application supporting project management regarding information architecture, validity, accessibility, usability and project management requirements. Final output of this thesis is a web application.
Klíčová slova Software, analýza, tvorba, groupware, projektovy management, projekty, CSCW, groupware, webová aplikace.
Keywords Software, analysis, development, groupware, project management, projects, CSCW, groupware, web application.
Obsah 1
Projekt a projektový management . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
1.1
Co je to projekt a projektový management . . . . . . . . . . . . . . . . . . . . . .
3
1.1.1
PM a ePM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
1.1.2
Řízení projektu a tým . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
Formální a virtuální týmy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
1.2.1
Výhody a nevýhody virtuálních týmů . . . . . . . . . . . . . . . . . . . .
6
1.2.2
Životní cyklus projektu . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
CSCW a Groupware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
1.2
2
3
4
2.1
Kategorizace groupware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2
Collaborative Project management tools a Collaborative management tools . . . . 12
2.3
Rozdíl mezi webovou a desktopovou aplikací . . . . . . . . . . . . . . . . . . . . . 13
Kritéria pro analýzu vybraných softwarových produktů . . . . . . . . . . . . . . . . 15 3.1
Komunikace a spolupráce jako základní požadavky . . . . . . . . . . . . . . . . . 15
3.2
Přístupnost . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.3
Použitelnost . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.4
Validita . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.5
Informační architektura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Popis a analýza vybraných softwarových produktů . . . . . . . . . . . . . . . . . . . 21 4.1
Komerční aplikace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.1.1
Basecamp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Popis funkcí aplikace Basecamp . . . . . . . . . . . . . . . . . . . . . . . 22 Analýza aplikace Basecamp . . . . . . . . . . . . . . . . . . . . . . . . 24
4.1.2
Glasscubes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Popis funkcí aplikace Glasscubes . . . . . . . . . . . . . . . . . . . . . . 26 Analýza aplikace Glasscubes . . . . . . . . . . . . . . . . . . . . . . . . 27
4.2
Open-source aplikace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 4.2.1
Teamlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Popis funkcí aplikace Glasscubes . . . . . . . . . . . . . . . . . . . . . . 30 Analýza aplikace TeamLab . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.2.2
dotProject . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Popis funkcí aplikace dotProject . . . . . . . . . . . . . . . . . . . . . . . 35
ix
Analýza aplikace dotProject . . . . . . . . . . . . . . . . . . . . . . . . 36 4.3 5
Návrh a jádro systému Cogveo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 5.1
5.2
6
Komparační tabulka a shrnutí . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Databáze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 5.1.1
MySQL vs. PostgreSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
5.1.2
Databázový návrh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Architektura (MVC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 5.2.1
Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.2.2
Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.2.3
View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.3
PHP a Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.4
Django . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5.5
jQuery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.6
Long polling, Comet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Ukončení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 6.1
6.2
Cogveo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 6.1.1
Logo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
6.1.2
Technické požadavky Cogveo . . . . . . . . . . . . . . . . . . . . . . . . 76
6.1.3
Hlavní menu Cogveo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
6.1.4
Menu konkrétního projektu . . . . . . . . . . . . . . . . . . . . . . . . . . 78
6.1.5
Browsershots.org, validita a přístupnost . . . . . . . . . . . . . . . . . . . 80
InHD na Cogveo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Použitá literatura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Seznam obrázků . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
x
Úvod Projekty a projektový management jsou v současnosti chápány jinak, než tomu bylo v minulosti. Zahrnují totiž často projekty, které jsou distribuovány na více místech zároveň. Požadavky na čas, rozpočet a kvalitu výsledného produktu jsou vzhledem ke konkurenci na trhu stále náročnější. Konkurenceschopnost člověka na trhu práce je do značné míry určena jeho schopnostmi, které by měly zahrnovat tyto základní dovednosti: Vysoký stupeň kreativity při řešení úloh, ” dobrou znalost angličtiny (písmem i slovem), schopnost práce v týmu a komunikační schopnosti.“¹. Cílem studentských projektů v Kabinetu informačních studií a knihovnictví realizovaných díky předmětu Aplikační seminář je zvýšit konkurenceschopnost absolventů tohoto oboru. V rámci výuky Aplikačního semináře jsou studenti vedeni ke skupinovému zpracování projektů. Díky tomu se učí spolupráci, komunikaci, práci s nástroji projektového managementu a získávají představu, jak vypadá práce projektového manažera. Studentské projekty se však odlišují od firemních projektů zjednodušením (z pohledu životního cyklu projektu), a proto by se i nástroje, které se v rámci výuky tohoto předmětu používají, měly přizpůsobit kladeným požadavkům na studenty. Téma této práce jsem si vybral, protože s nástroji projektového managementu, které jsou k dispozici v Kabinetu knihovnictví a informačních studií, pracuji již druhým rokem a spatřuji velké množství nedostatků a překážek vyskytujících se v těchto nástrojích. Dalším důvodem byla možnost uplatnění teoretických i praktických poznatků získaných za dobu studia, spolu se zkušeností s vývojem webových aplikací. Práce se nesnaží postihnout celou oblast projektového managementu, ale snaží se poukázat na význam nástrojů v projektovém managementu, zejména ve fázi, kterou se nejvíce zabývají studentské projekty. Vzhledem k tomu, že jedním z cílů této práce je též vytvořit nový nástroj pro podporu studentských projektů, akcentuji pohled programátora / vývojáře. Práce je rozčleněna na dvě hlavní části: teoretickou perspektivu a praktickou realizaci. První teoretická část se zabývá významem projektů a projektového managementu a poskytuje teoretický náhled na problematiku groupware. Dále se zabývá kritickým pohledem na 1. ČSSI-SPIS-CACIO a FIS VŠE Praha. Konkurenceschopnost absolventů IT oborů VŠ a VOŠ na trhu práce v ČR : společný projekt ČSSI-SPIS-CACIO ve spolupráci s FIS VŠE Praha. Praha : Vysoká škola ekonomická, 2007. 17 s. Dostupné z WWW:
.
1
vybrané groupware nástroje. Druhá praktická část je věnována praktickému využití znalostí získaných z kritického pohledu a zabývá se samotnou tvorbou nového nástroje.
2
Kapitola 1
Projekt a projektový management 1.1
Co je to projekt a projektový management Podle institutu projektového managementu je v USA na projekty vynakládáno ročně
celkově přes 2,3 bilionu dolarů. Institut odhaduje, že celosvětově je takto ročně vynaloženo přibližně 10 bilionů dolarů.¹ Proto je logické, že nejdůležitějšími faktory, na které je vyvíjen tlak, jsou v současnosti především rychlost, kvalita, a také kontrola nákladů. Nástroje projektového managementu umožňují projekt kontrolovat, korigovat či včas a s minimálními náklady zastavit, a to v případě, že projekt není možné z nějakého důvodu dokončit. Tyto nástroje také přinášejí celkové snížení nákladů, zkrácení času potřebného na vývoj, zlepšení produktivity i vyšší kvalitu daného projektu.1² Projekty v současnosti mají různorodý rozsah³:
Rozsah projektu
Procento
Místní
33 %
Krajské
20 %
Více krajů
28 %
V rámci jedné země
28 %
Více zemí
21 %
Více kontinentů
15 %
Tabulka 1.1: Rozsah projektů podle geografické rozlohy
Z tabulky je patrné, že značné množství projektů není možné díky jejich geografickému 1. Project Management Institute. The PMI Project Management Fact Book. Second Edition. Newtown Square (Pennsylvania) : Project Management Institute, Inc., 2001. The Project, s. 17-27. ISBN 1-880410-73-7. 2. SCHWALBE, Kathy. Řízení projektů v IT. Vyd. 1. Brno : Computer Press, 2007. Úvod do řízení projektů, s. 33-71. ISBN 978-80-251-1526-8. 3. Project Management Institute. Op. cit (převzato) – tabulka obsahuje více než 100%, protože respondenti měli možnost vybrat více možností.
3
1. P situování řešit synchronně a přímou komunikací tváří v tvář. Je u nich nutná velká koordinace a spolupráce, která není omezena časem a prostorem. Řešení přinášejí právě nástroje projektového managementu. Projekt, podle PMBOK⁴u, je: dočasné úsilí s cílem poskytnout jedinečný produkt nebo ” službu.“⁵ Tato definice poměrně přesně vymezuje rozdíl mezi projektem a běžně vykonávanou prací. Základní rozdíly jsou přehledně shrnuty v následující tabulce⁶: Provozní činnost
Projekt
Typ práce
Opakovaná, nekončící
Unikátní, často zahrnuje změny, sekvence kroků (navazujících úkolů
Zaměření
Úkony k efektivnímu plnění práce
Dokončení projektu
Nedefinovaný počátek i konec
Přesně definovaný čas určený na projekt – je dočasný
Čas Cíl
Nová služba, produkt nebo jiný výsledek
Tabulka 1.2: Srovnání provozní činnosti a projektové práce
Projektový management (také řízení projektů) je souborem nástrojů, modelů, principů a metod, které umožňují efektivní plánování a kontrolu projektu.⁷ Právě tyto metody, principy a nástroje umožňují, aby byl projekt dokončen včas, ve stanovených nákladech a splňoval všechna kritéria. V praxi je běžně v běhu několik projektů zároveň. Často dochází v různých místech k jejich vzájemnému prolínání a stejně tak jsou zaměstnanci jedné firmy mnohdy členy více různých projektů v jednom časovém okamžiku. Za těchto okolností význam projektového managementu a jeho nástrojů roste.
1.1.1 PM a ePM Jak již bylo zmíněno výše, současnost klade velké nároky na projekty v časovém ohledu (například rychlost reakce na dění v projektu bez ohledu na lokaci projektu). Aby bylo možné tyto nároky splňovat, bylo nutné implementovat ePM (electronic project management)⁸. 4. Project Management Institute. A Guide to the Project Management Body of Knowledge : PMBOK Guide. 2000 ed edition . Newton Square (Pennsylvania) : Project Management Institute, Inc., 2000. The Project management framework, s. 1-10. ISBN 978-1880410233. 5. A project is a temporary endeavor undertaken to provide a unique product or service. 6. BAKER, Sunny; BAKER, Kim. Complete Idiot’s Guide to Project Management. Indianapolis : Alpha Books, 2000. Projects, Projects Everywhere, s. 3-12. ISBN 978-0028639208. RICHMAN, Larry. Project Management Step-by-Step. 1st edition. New York : AMACOM, 2001. Understanding the importace of project managementm s. 3-11. ISBN 978-0814407271. 7. FIALA, Petr. Projektové řízení : modely, metody, analýzy. 1. vyd. . Praha : Professional Publishing, 2004. Úvod do projektového řízení, s. 12-25. ISBN 80-86419-24-X. 8. Česky: Elektronický projektový management
4
1. P Mezi zásadní výhody ePM patři⁹: •
možnost zaměstnat pracovníky nezávisle na jejich místě
•
možnost spolupráce stávajících zaměstnanců s dislokovanými
•
úspora času a peněz v cestování
•
dostupnost 24 hodin denně
•
změny v projektu se promítají okamžitě a jsou dostupné všem účastníkům Dobrým příkladem těchto výhod je ukázka, kterou uvádí Marcus Goncalves¹⁰ ve své
knize Managing Virtual Projects. Srovnává zde na příkladu zakázky jedné velké společnosti, jež má vytvořit webový portál pro celosvětový prodej, ePM s PM¹¹. Díky ePM se zakázku podařilo dokončit o 11 týdnů dříve, s daleko větším rozsahem portálu, který byl navíc doplněn o velké množství nadstandardních funkcí a o 40% levněji než konkurence. Ta svoji zakázku vedla klasickým projektovým managementem bez použití softwarových nástrojů.
1.1.2 Řízení projektu a tým Projektové řízení velmi úzce souvisí i s týmem. Ať se jedná o tým virtuální nebo formální (face to face)¹², oba mají společný cíl: vytvořit tým, který je schopný spolupráce a synergie. Tento je potom díky synergickému efektu schopen řešit projekt úspěšněji, než kdyby se jej pokoušel řešit každý samostatně, protože jednotliví členové týmu se ve svých schopnostech mohou doplňovat, obohacovat nebo inspirovat. Klíčovým faktorem je, aby každý člen projektového týmu věděl, jakou práci má udělat a kdy ji má udělat.
1.2
Formální a virtuální týmy Formální projektové týmy¹³, někdy také nazývané F2F (face to face) týmy, jsou tvořeny
lidmi, kteří se scházejí v reálném prostředí. Formální týmy¹⁴ vznikají často ve stejné organizaci, 9. GONCALVES, Marcus. Managing Virtual Projects. 1 edition. Blacklick (Ohio) : McGraw-Hill Professional Publishing, 2004. Introduction to ePM, s. 45-78. ISBN 978-007144451. 10. Tamtéž. 11. Srovnává svoji firmu (ePM – použili software Microsoft Enterprise Project Management) s konkurencí (PM), která pracovala na stejném projektu. 12. Česky: tváří v tvář 13. KOLAJOVÁ, Lenka. Týmová spolupráce : jak efektivně vést tým pro dosažení nejlepších výsledků. Praha : Grada Publishing, 2006. Základní charakteristiky týmu, s. 105. ISBN 80-247-1764-6. 14. HAYWARD, Andres. A comparison of face-to-face and virtual software development teams. Team Performance Management : An International Journal [online]. 2002, Volume 8, Number 1/2, [cit. 2011-03-19].
5
1. P jejich členové jsou standardně vyškolení a jejich role v týmu odpovídají (jsou podobné) těm, které zastávají v pracovní pozici. Nevýhodou pro formální týmy může být sociální aspekt prosazování názorů z pozice síly. Jejich výhodou je bezesporu stálé pracovní prostředí a synchronní spolupráce nejen v čase, ale i v místě. Výhodou formálních týmů je komunikace, protože se nemusí spoléhat pouze na technologie, jež jsou bezpochyby omezenými informačními kanály. Mezi typy informačních kanálů, které jsou technologiemi přenositelné obtížně, nebo vůbec ne patří: •
slovní narážky
•
mimika a pohledy
•
gesta
•
držení těla a fyzická blízkost Virtuální týmy definujeme jako týmy, jejichž členové bývají často z různých míst a ne-
musí být nutně ze stejné organizace. Členové jsou do týmu často vybráni na základě svých specifických schopností a kompetencí a jejich role v projektu se může časem měnit. Problematickým aspektem bývá důvěra mezi členy týmu a pochopitelná absence některých informačních kanálů, kterými formální tým běžně disponuje.
1.2.1 Výhody a nevýhody virtuálních týmů Virtuální týmy mají své výhody i nevýhody stejně jako týmy formální, avšak práce ve virtuálním týmu je pro účastníky náročnější, protože komunikace a spolupráce přes internet je oproti F2F rozdílná a v mnohém obtížná. •
Výhody: –
Virtuální pracovní prostředí umožňuje pracovat 24 hodin denně, 7 dní v týdnu, což přináší konkurenční výhodu a rychlejší zpracování projektu, protože týmy nejsou vázány na standardní pracovní dobu.
–
Pracovníci netráví zbytečný čas cestováním.
–
Virtuální prostředí rozšiřuje možnosti zapojení dalších participantů nebo týmů do projektu, a tím může zvyšovat pravděpodobnost dosažení cíle projektu.
–
Virtuální týmy jsou flexibilnější a přizpůsobivější díky využití elektronických nástrojů.
–
Virtuální týmy umožňují snazší zapojení handicapovaných uživatelů.
Dostupný z WWW: . ISSN 1352-7592.
6
1. P •
Nevýhody¹⁵: –
Vyšší nároky na kompetenci pracovat s elektronickými nástroji a mít možnost neustálého připojení k internetu.
–
Vyšší nároky na důvěru mezi členy týmu (spolehlivost, pravdomluvnost, kompetentnost).¹⁶
–
Vyšší nároky na důvěru v projektové aspekty (smysl projektu, efekt a procesy).¹⁷
–
Nedostatek osobního kontaktu, možnost pocitu osamocení a izolace.
–
Riziko pocitu nedostatku vykonané práce u některých členů. Z tohoto důvodu začnou pracovat déle a může vzniknout pracovní přetížení (burn out efekt).
–
Práce v týmu s lidmi, kteří se navzájem nikdy neviděli, může být ze sociálního hlediska obtížná a pro manažera na zvládnutí složitá.
–
Úkoly a zodpovědnost za ně musí být jasně definovány, aby nenastala situace, kdy všichni dělají totéž, nebo naopak nikdo nedělá nic.
1.2.2 Životní cyklus projektu Každý projekt má svůj počátek a svůj konec. Mezi těmito dvěma významnými body prochází projekt různými fázemi souhrně označovanými jako životní cyklus projektu. Podle metodiky MPMM¹⁸ se životní cyklus projektu skládá ze čtyř fází:¹⁹ •
iniciační fáze projektu
•
plánovací fáze projektu
•
fáze provedení projektu
•
fáze ukončení projektu
15. Small working
Business in
a
Service,
virtual
team
Kingsgate |
House.
Business
The
Link.
advantages
[cit.
and
2011-03-04].
disadvantages Dostupné
of
z WWW:
. 16. Snozová Martina. PARTSIP: Týmová spolupráce aneb Jak funguje virtuální tým?. Inflow: information journal [online]. 2011, roč. 4, č. 3 [cit. 2011-03-20]. Dostupný z WWW: . ISSN 1802-9736. 17. Tamtéž. 18. Method 123 Project Management Methodology 19. Method 123 Ltd. Project management guidebook [online]. La Habra : Method 123 Ltd., 2003 [cit. 201103-03]. Dostupné z WWW: . ISBN 0-47310445-8.
7
1. P Různé metodiky fáze životního cyklu projektu pojmenovávají jinak, ale přesto je definují podobně.²⁰ Pro všechny tyto fáze projektu existují softwarové nástroje, které mají za úkol práci v projektu ulehčit a zpřehlednit. Vzhledem k zaměření této práce převážně na studentské projekty, je důležité zmínit fakt, že tyto studentské projekty jsou poněkud specifické a ačkoliv projekty prochází podobnými fázemi, jsou zjednodušeny a zpřehledněny.
20. Např. metodika RUP od firmy IBM, životní cyklus podle Allena Warrena apod.
8
Kapitola 2
CSCW a Groupware Pojem CSCW (Computer supported cooperative work)¹, byl poprvé použit jako název workshopu vedeného Irene Grief a Paulem Cashmanem v roce 1984.² Smyslem tohoto názvu bylo spojení počítačových systémů a jedinců kooperujících na společném projektu. Přesto toto pojetí působí poněkud široce, a proto je Paul Wilson³ definoval jako obecné pojmenování, které v sobě ” kombinuje chápání práce v týmech s využitím možností technologie počítačových sítí a s nimi souvisejícího hardwaru, softwaru, služeb a technik.“⁴ CSCW se podle Wilsona zabývá primárně oblastí procesu týmové spolupráce a technologickou oblastí. Obě tyto oblasti dělí do dalších 4 kategorií. V oblasti týmové spolupráce jsou to: •
individuální lidské vlastnosti
•
organizační aspekty
•
problematika návrhu týmové spolupráce
•
dynamické aspekty týmu
Technologická oblast je dělena na: •
komunikační mechanismy (vzdálená komunikace na geograficky neomezenou vzdálenost)
•
sdílené pracovní prostředí (sdílená virtuální pracovní plocha)
•
sdílené informační zdroje (elektronické informační zdroje, vlastní datové sklady a nástroje na dolování dat“, stroje pro znovuzískání informací, systémy pro správu dokumentů) ”
1. Česky: počítačově podporovaná kooperativní práce 2. WILSON, Paul. Computer Supported Cooperative Work : An Introduction. 1st ed. Dordrecht : Kluwer Academic Publishers, 1991. What is CSCW, s. 6-13. ISBN 978-0-7923-1446-2. 3. Tamtéž. 4. a generic term which combines the understanding of the way people work in groups with the enabling ” technologies of computer networking and associated hardware, software, services and techniques.“
9
2. CSCW G •
nástroje na sdílenou týmovou práci (nástroje pro správu zdrojového kódu (SVN, GitHub), workflow systémy)
Pojem Groupware⁵ definuje Robert Johansen⁶, jenž tvrdí, že je to specializovaná počíta” čová pomůcka, která byla navržena pro užití spolupracujícími skupinami“⁷. Groupware je tvořen konkrétními nástroji pro podporu týmové práce, zefektivnění a zpřehlednění spolupráce, implementujícími metodiku CSCW.
2.1
Kategorizace groupware Groupware lze kategorizovat z více hledisek. Mnoho autorů⁸ se v současné době přiklání
k základní kategorizaci dle matice času a místa (Time/Place Matrix)⁹.
Stejné místo
Různá místa
Stejný čas
Diskuze F2F
Telefon
Různý čas
Samolepící poznámky
Dopis
Tabulka 2.1: Matice času a místa (Time / Space Matrix)
Podle této matice CSCW lze groupware snadno rozdělit do dvou základních skupin: •
Synchronní – jedná se o systémy pomáhající skupině jednotlivců spolupracovat ve stejném čase. Lze sem zahrnout např.: –
systémy DCS (Desktop conferencing systems)¹⁰ - základem této technologie je sdílení pracovní plochy pro kolaborativní činnost. V současnosti se hovoří spíše o web conferencing¹¹
–
systémy GDSS (Group decision support systems)¹²
5. Někdy také collaborative system (kolaborativní systémy), workgroup support systems (systémy pro podporu týmové práce), nebo group support systems (systémy pro podporu týmů) 6. JOHANSON, Robert. Groupware : Computer Support for Business Teams. Menlo Park : Macmillan, 1988 . Introducing groupware, s. 6-9. ISBN 9780029164914. 7. specialized computer aids that are designed for the use of collaborative work groups“ ” 8. Např. R. Griffiths, P. Wilson, R. Johanson, R. Whitetaker, G. DeSanctis, B. Gallupe, J. Finlay, R. Beale a další… 9. DIX, Alan, et al. Human-Computer Interaction. 3rd Edition. New Jersey : Prentice Hall, 2004. Groupware, s. 663-715. ISBN 0-13-046109-1. 10. V dnešní době tyto systémy, představují systémy webové konference. 11. Např. Cisco webex – umožňuje sdílení pracovní plochy, videokonferenci, kolaborativní psaní apod. Umí připojit do konference i mobilní zařízení (iPhone, Blackberry, Android) 12. Česky: Systémy pro podporu skupinového rozhodování. Např. smartSpeed Connect – webový nástroj, který umožňuje prostřednictvím internetu brainstorming, diskuze, volby atp.
10
2. CSCW G
•
–
videokonference
–
chaty
–
telefonní rozhovory
Asynchronní – tyto systémy podporují činnost a schopnost řešit problém napříč časem i prostorem, protože členové týmu mohou být mezi sebou vzdáleni na geograficky neomezenou vzdálenost. Spadá sem např. email, verzovací systémy1, workflow systémy, nástroje pro kolaborativní psaní a jiné. Další kategorizaci uvádí Petr Škyřík¹³ ve svém příspěvku Computer Supported Coopera-
tive Work, který přednesl na konferenci Knihovny současnosti 2009. Rozděluje je podle: •
Úrovně sdílení informací – s jakými informacemi uživatelé pracují, jaká je jejich prezentace a práva nad nimi
•
Objektu kooperativní činnosti – na co nebo na koho je cíleno zaměření (uživatel, dokument, proces nebo pracovník) Na konferenci systémových věd ve svém příspěvku Numamaker¹⁴ se svými kolegy před-
nesl nový systém rozdělení do pěti hierarchických úrovní podle úrovně spolupráce. Jsou to následující stupně: •
komunikační (Communicative)
•
kolektivní (Collective)
•
kooperativní (Cooperative)
•
koordinační (Coordinated)
•
vzájemné shody (Concerted) Každá úroveň má vyšší vliv na týmovou produkci než předchozí (např. při porovnání
úrovní kooperativní a vzájemné shody se jedná o rozdíl mezi součtem výkonů jednotlivců a součtem výkonů jednotlivců, ad hoc týmu a koordinovaného výkonu týmu). Každý projekt má svůj životní cyklus a metodiky pro jeho řešení rozebírající projekt na jednotlivé fáze a definující jednotlivé kroky. Příkladem takové metodiky je metodika Prince2¹⁵, 13. ŠKYŘÍK, Petr. Computer Supported Cooperative Work . Knihovnický zpravodaj Vysočina [online]. 2009, 10, 2, [cit. 2011-03-06]. Dostupný z WWW: . ISSN 12138231. 14. ROMANO, Nicolas; CHEN, Fang; NUMAMAKER, Jay. Collaborative project management software. In Proceedings of the 35th Hawaii International Conference on System Sciences : 2002. [s.l.] : The computer society, 2002. ISSN 0-7695-1435-8/02. 15. http://www.prince2.com/default.asp
11
2. CSCW G kterou ve svém dokumentu Guidelines for managing projects¹⁶ často doporučuje britský Ústav pro podnikání, inovace a dovednosti. Pro každou fázi projektu, definovanou touto metodikou, existují softwarové produkty, jež se snaží co nejvíce zjednodušit a ulehčit práci projektového manažera¹⁷. Vzhledem k charakteru a zaměření této práce na projekty studentské úrovně jsem se rozhodl věnovat největší pozornost dělení nástrojů na nástroje CPT (Collaborative project tools)¹⁸ a CPMT (Collaborative project management tools)¹⁹. Ačkoliv se v současnosti softwarové produkty snaží tyto dvě kategorie co nejvíce sloučit, lze je jednoznačně odlišit. Důležité je také zmínit rozdělení softwarových produktů podle těchto aspektů²⁰: •
řešení proprietární²¹ X řešení open-source²²
•
řešení klient-server (desktopové) X webové
2.2
Collaborative Project management tools a Collaborative management tools Z obecného pohledu softwarové nástroje pro spolupráci poskytují platformu pro společ-
nou práci směřující k jasně definovanému cíli. Tento prostor v sobě začleňuje nástroje pro komunikaci týmu na geograficky neomezené vzdálenosti, nástroje pro podporu společného řešení problémů, brainstorming, časové plánování, správu dokumentů a souborů, jejich verzování apod. Nástroje pro podporu projektového řízení (CPMT) a nástroje pro podporu projektové spolupráce (CMT) mají mnoho společných znaků a zahrnují v sobě výše zmíněné nástroje. Základním rozdílem mezi CMT a CPMT spočívá v jejich záběru z pohledu na životní cyklus projektu. Zatímco CPMT nástroje se zabývají co nejširší podporou projektu od jeho zahajovací fáze, přes rozpracování a tvorbu až po ukončení a předání projektu²³, nástroje CMT se zabývají spíše jednotlivou fází daného projektu. V případě studentských projektů se jedná o fázi tvorby.
16. Department of Business, Enterprise and Regulatory Reform.Guidelines for managing projects. [s.l.] : Crown, 2007. 48 s. Dostupné z WWW: . 17. ZEDEK, Martin. Tvorba softwaru 2005 [online]. 3.12.2008 [cit. 2011-03-18]. SW nástroje pro podporu projektového řízení v malých a středních firmách. Dostupné z WWW: . 18. Česky: Nástroje pro podporu projektové spolupráce 19. Česky: Nástroje pro podporu projektového řízení 20. KRŮTA, Tomáš. Software pro projektové řízení. Computerworld. 2010, Ročník XXI, 20, s. 29-30. ISSN 1210-9924. 21. Takové řešení neposkytuje zdrojový kód a je komerčního charakteru. 22. Tento typ řešení naopak poskytuje zdrojové kódy a je možné za určitých podmínek tento kód měnit a dále šířit. Jedná se o nekomerční software. 23. BERR Project lifecycle
12
2. CSCW G Základní rozdíly mezi oběma druhy softwarových aplikací by se daly shrnout takto²⁴: Collaborative project management tools (navíc oproti CMT obsahují)
Collaborative management tools
Vizuální nástroje (Ganttovy diagramy, PERT diagramy…)
Kalendářové aplikace
Systémy integrace projektu
Workflow systémy
Projektová dokumentace (včetně dokumentového repozitáře a verzovacích systémů)
Sociální softwarové prvky
Systémy řízení projektového portfolia (meziprojektové vazby, zdroje napříč projekty)
WYSWYG aplikace pro úpravu dokumentů
Systémy řízení a správy rizik
Systémy správy úkolů
Systémy správy zdrojů (finančních, lidských, materiálních…)
Systémy pro podporu projektového plánování
Systémy pro integrovatelnost na jiné oblasti (ERP systémy²⁵)
Bug tracking systémy
Nástroje pro monitoring projektu
Chat
Nástroje pro videokonference
E-mail
Moduly pro uživatele, projektové manažery i akcionáři
Samolepící poznámky
Help-desk aplikace
Tabulka 2.2: Porovnání funkcí CMT a CPMT aplikací
V současnosti se většina softwarových aplikací snaží zastat obě role vzhledem k modulárnosti uživatelského pohledu (tj. každý typ uživatele vidí projekt odlišně). Příkladem takových komplexních nástrojů jsou IBM Rational²⁶ nebo Hewlett-Packard PPM Project Management Module.²⁷
2.3
Rozdíl mezi webovou a desktopovou aplikací Výše zmíněné nástroje lze rozlišit i podle toho, zda se jedná o webovou nebo desktopovou
aplikaci. Webové aplikace běží ve webových prohlížečích nezávisle na platformě nebo architektuře. Desktopové aplikace jsou oproti tomu vázány operačním systémem a mnohdy i architekturou (nejen 32bit a 64bit, ale i typem procesoru: ARM, x86). Lze tedy konstatovat, že webové aplikace mají z tohoto pohledu výhodu oproti aplikacím desktopovým. Další nezanedbatelnou výhodou je i jejich dostupnost. Jsou totiž přístupné odkudkoliv z internetu, bez nutnosti instalace (s čímž souvisí i možnost vyhnout se například nákaze virem). Zároveň je také zajištěno, že aplikace je vždy aktualizovaná. 24. Collaborative software. In Wikipedia : the free encyclopedia [online]. St. Petersburg (Florida) : Wikipedia Foundation, 26 February 2002, last modified on 8 March 2011 [cit. 2011-03-21]. Dostupné z WWW: . ČEJKA, Jiří. Software pro řízení projektu : je nezbytným pomocníkem profesionálů. Computerworld. 2010, Ročník XXI, 16, s. 16-20. ISSN 1210-9924. KRŮTA, Tomáš. Software pro projektové řízení. Computerworld. 2010, Ročník XXI, 20, s. 29-30. ISSN 1210-9924. MÜLLER, Miroslav. Nástrojová podpora pro projektové řízení. Computerworld. 2008, Ročník XIX, 13, s. 28-29. ISSN 1210-9924. 26. http://www-01.ibm.com/software/cz/rational/ 27. https://h10078.www1.hp.com/cda/hpms/display/main/hpms_content.jsp?zn=bto&cp=1-11-16181̂326_4000_100__
13
2. CSCW G Na druhou stranu je nutné připomenout, že všechny webové aplikace před rokem 2000 trpěly nevýhodou v podobě nutnosti překreslení celé stránky při jakémkoliv požadavku (ať ze strany uživatele, nebo aplikace). Ke změně v této oblasti došlo v roce 2000 zavedením objektu XMLHttpRequest²⁸, který tuto nevýhodu odstranil. Další zásadním problémem webových aplikací byla jejich podstata fungování na protokolu HTTP pracujícího na principu dotaz – odpověď. To neumožňuje serveru zaslat klientovi data v případě, že došlo ke změně na serveru dat bez toho, aby uživatel (aplikace) znovu žádal o data (bez ohledu na způsob). Tato nevýhoda se často řešila opakovanou žádostí o data v pravidelném časovém intervalu (tzv. heartbeat“ technika). Řešení, jak se zbavit této zásadní nevýhody exis” tuje v současnosti několik. Příkladem je long polling²⁹ (comet³⁰), který funguje na principu dotazu klienta na server (comet pracuje na úrovni protokolu HTTP a Ajax techniky), který zašle nová data (pokud jsou k dispozici) a klient po přijetí okamžitě žádá o nová data (v tomto případě server nová data nemá). Avšak místo odpovědi, že žádná nová data nejsou, server čeká, dokud nová data nebudou k dispozici (popř. na vypršení času - timeout), a ta teprve pošle klientovi a celý proces se opakuje. Nejnověji se tento problém řeší technikou websockets³¹ (uvedené v HTML5). Tato umožňuje klientovi, aby se serverem navázal perzistentní spojení, jež je obousměrné a umožňuje zasílat oběma stranám data. Bohužel websockets jsou zatím ve fázi návrhu a vzhledem k bezpečnostním rizikům (Adam Barth³² předložil několik možností bezpečnostního zneužití) je nyní websockets v prohlížečích Opera i Mozilla Firefox zakázáno.³³ V současnosti webové aplikace využívají i externích programů a frameworků, které jsou v systému nainstalovány (např. Java, Adobe Flash, JavaScript apod.). Tyto aplikace umožnily vznik tzv. RIA (Rich Internet Aplication). Výhodou těchto RIA aplikací je, že se snaží smazat rozdíl mezi desktopovou a webovou aplikací jak z hlediska funkcí, tak i rozhraní a tím zvýšit komfort uživatele. Jejich funkce jim umožňují pracovat například s webkamerou, mikrofonem a omezeně umí pracovat i s 3D grafickým rozhraním (v HTML 5 existuje element canvas umožňující práci s 3D). Jediným zásadním rozdílem je fakt, že běží v prohlížeči a vyžadují připojení k internetu.
28. 29. 30. 31. 32. 33.
http://www.alexhopmann.com/xmlhttp.htm http://en.wikipedia.org/wiki/Push_technology http://en.wikipedia.org/wiki/Comet_%28programming%29 http://en.wikipedia.org/wiki/WebSockets http://www.ietf.org/mail-archive/web/hybi/current/msg04744.html http://hacks.mozilla.org/2010/12/websockets-disabled-in-firefox-4/
14
Kapitola 3
Kritéria pro analýzu vybraných softwarových produktů 3.1
Komunikace a spolupráce jako základní požadavky Aby bylo vůbec možné hovořit o hodnocení softwarového produktu, je nutné nejprve
stanovit základní funkční požadavky, které by měl daný nástroj splňovat. Martin Zedek¹ zmiňuje následující oblasti aplikací, jež by v projektu měly pomoci: •
sdílení a správa dokumentů
•
elektronická komunikace
•
systém správy úkolů Ke každé z těchto klíčových oblastí zmiňuje konkrétní nástroje splňující daný účel. Exis-
tují také nástroje, které v sobě integrují tyto vlastnosti a poskytují i další funkcionalitu. Zahrnují například následující funkce: •
kalendář a plánování
•
znalostní báze
•
sociální software a komunikační nástroje
•
nástroje pro sdílení souborů
•
verzovací nástroje
•
wiki systémy
•
nástroje pro správu úkolů Celkové hodnocení dané softwarové aplikace bude vycházet z toho, jaké má funkce, na-
kolik je v sobě integruje a zda umožňuje i napojení na další uživatelem používané aplikace (např. emailový klient s kalendářem Mozilla Thunderbird nebo Microsoft Outlook). 1. ZEDEK, Martin. Tvorba softwaru 2005 [online]. 3.12.2008 [cit. 2011-03-18]. SW nástroje pro podporu projektového řízení v malých a středních firmách. Dostupné z WWW: .
15
3. K Jako základní hodnotící kritéria jsem si zvolil: •
přehledy
•
projekty
•
skupiny
•
úkoly
•
milníky
•
kalendáře
•
soubory
•
diskuze
3.2
Přístupnost Přístupnost zahrnuji do hodnotících kritérií vybraných CMT produktů z praktického
hlediska, protože přístupná webová aplikace je aplikace bezbariérová“. Což znamená, že uži” vateli nejsou v používání takové aplikace kladeny žádné překážky. Naši potencionální členové týmu mohou mít nějakou specifickou potřebu (například zrakovou, sluchovou nebo kombinovanou). Přístupná aplikace, která jim nebude v práci překážet nebo ji dokonce znemožňovat, bude v konečném důsledku znamenat zvýšení efektivity týmu. Přístupnost však není omezena jen na uživatele se specifickými potřebami. Jedná se i o možnost používat webovou aplikaci na mobilním telefonu, jiné platformě nebo o možnost jejího ovládání pomocí klávesnice. Existuje velké množství standardů, které se zabývají přístupností webu (webových aplikací): •
Section 508²
•
WAI³
•
WCAG 2.0⁴ Přístupností se zabývá i legislativní úprava pro weby státní správy⁵. Základním hodno-
tícím kritériem je zda aplikace splňuje výše zmíněné standardy. 2. 3. 4. 5.
Dostupný na: http://www.section508.gov/ Dostupný na: http://www.w3.org/WAI/ Dostupný na: http://www.w3.org/TR/WCAG20/ Zákon č. 365/200Sb. Dostupný na: http://portal.gov.cz/wps/portal/_s.155/701?number1=365%2F2000
16
3. K
3.3
Použitelnost Použitelnost je vlastností (nejen) webu, která určuje, do jaké míry je použitelný:
•
zda se na něm uživatelé dokáží zorientovat
•
jak snadno na něm uživatel dosáhne své cíle
•
v jakém čase to dokáže
•
kolik chyb uživatel učinil, než dosáhl požadovaného cíle Z technického hlediska se použitelnost zabývá mnoha aspekty, jako příklad uveďme pro-
totypování, kognitivní procházku, uživatelské testování, rozměry stránky (pevný nebo pružný design, optimalizace pro cílové rozlišení), vizuální logiku (kontrast elementů, optický střed), kompozici obsahu (návyky uživatelů na pozice jednotlivých prvků), navigaci (globální navigace, subnavigace) nebo vyhledávání. Pro použitelnost existují následující obecné standardy: •
ISO/TR 16982:2002⁶ – tento standard je zaměřen převážně na projektové manažery; na pochopení významu ergonomických a lidských aspektů při návrhu designu jako takového. Doplňuje ho ISO 9241.
•
ISO 9241⁷ - tento standard je určen spíše pro techniky či vývojáře. Má mnoho částí, které se zabývají širokým spektrem ergonomie HSI⁸. Hodnotící kritéria použitelnosti vycházejí ze 113 doporučení, které uvádějí Jakob Nielsen
a Marie Tahir⁹.
3.4
Validita Na validitu webu neexistuje jednoznačný názor. Ptát se anonymní online komunity na
toto téma vyvolává rozporuplné názory a mnohdy i nepříjemnou diskuzi (flame). Martin Krčál ve své práci¹⁰ zmiňuje webové standardy jako důležitý prvek, zajišťující správné vykreslení webu. S jeho názorem beze zbytku souhlasím, protože nevalidní web je pro člověka totéž jako text s gramatickými chybami. Stejně jako prohlížeč si člověk umí domyslet 6. 7. 8. 9.
http://www.iso.org/iso/catalogue_detail?csnumber=31176 http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=21922 Human - System Interaction NIELSEN, Jakob; TAHIR, Marie. Použitelnost domovských stránek. Brno : Zoner Press, 2004. Doporučení
pro domovské stránky, s. 15-43. ISBN 80-86815-18-8. 10. KRČÁL, Martin. Tvorba webových stránek v prostředí vysokoškolských knihoven. Brno: Masarykova univerzita, Filozofická fakulta, Ústav české literatury a knihovnictví, Kabinet knihovnictví, 2004. 88 s. Vedoucí diplomové práce Dr. Ing. Zdeněk Kadlec.
17
3. K správný význam (zobrazení) textu, ale to neznamená, že tato schopnost jedince (i prohlížeče webu) je důvodem, proč nepsat gramaticky správně – tj. dle standardu českého jazyka. Častým argumentem odpůrců validity je fakt, že pokud se web zobrazí ve „většině“ prohlížečů, nemá smysl mít stránky validní. Na první pohled se jedná o rozumný a logický argument, avšak pod pojmem většina prohlížečů si odpůrci představují trio (kvarteto) prohlížečů: Internet Explorer, Mozilla Firefox, Opera (případně Google Chrome). Ale kromě nich existuje celá řada dalších programů: •
Prohlížeče pro mobilní zařízení jako např.: Opera Mobile, Opera Mini, Skyfire, Doplhin HD, Aquari Browser …
•
Hlasové čtečky pro slabozraké / nevidomé např.: GB-Soft TTS
Dalším často zmiňovaným argumentem je, že většina velkých“ webů není validní (např. ” Google.com, Lupa.cz, Seznam.cz). Skutečně např. Seznam i Google používají DOCTYPE html. Důvody vysvětluje Dustin Diaz ze společnosti Google na svém blogu¹¹: Opravdu neexistuje abso” lutně žádný důvod, proč byste potřebovali zbytek doctypu v deklaraci pokud nevalidujete kód. Navíc to ani neznamená, že by kód byl nevalidní. Pouze vaše stránky donutí prohlížeč, aby se zobrazily ve standardním módu, což je to, co se počítá. (Navíc je snadné si tuto definici zapamatovat).“¹² Další vysvětlení poskytuje i David Calhoun¹³, který říká: záleží na každém bajtu“.¹⁴ ” Z pohledu návštěvnosti výše zmíněných webů je tento argument velmi praktický. Návštěvnost a potažmo i datový tok je velký a každý ušetřený bajt se ve velkém promítne do časového zpracování požadavku, datového toku a konečně i do celkových nákladů na provoz. Jak je tedy vidět, ani argument o validitě velkých webů“ není stoprocentně správný. ” Mimo jiné je validita také spojena s jednodušší indexací pro roboty (byť se nijak významněji nepodepisuje na pozici SERP¹⁵ (Search engine results page), jelikož roboti jsou taktéž velice benevolentní, pokud je obsah stránek zajímavý). Validita je také dobrým nástrojem pro ladění webu (například neuzavřené tagy). Konečně validní web dodržuje standard - bez standardů by si každá společnost (dokonce i jedinec) mohla vytvářet weby podle svého vlastního jazyka a využí11. DIAZ, Dustin. I am dustin diaz : and while you’re at it... boosh. don’t worry about it. [online]. Monday, November 24th, 2008 [cit. 2011-03-13]. The Skinny on Doctypes. Dostupné z WWW: . 12. There is really, absolutely no reason you need the rest of the doctype in your declaration unless you’re validating code. Furthermore, it does not mean that your page is even invalid. In the end, it puts your webpages into standards mode, which is what really matters. (Plus it’s easy to memorize ;) 13. CALHOUN, David. David’s Web Development Blog : HTML, CSS, Javascript, PHP, and other assorted code [online]. Nov 29th, 2008 [cit. 2011-03-13]. All you need is . Dostupné z WWW: . 14. every byte matters 15. Na pozici na stránce výsledků vyhledávače (google, seznam atp.).
18
3. K vat k tomu vlastní přenosový protokol. Vývoj takových nástrojů však stojí nemalé zdroje, a proto je ekonomicky mnohem výhodnější spolehnout se na již vytvořené standardy. Hodnotícími kritérii validity jsou validita kódů xHTML a CSS.
3.5
Informační architektura Informační architektura je oborem, jenž se zabývá klasifikací, tříděním a organizová-
ním informací. Jejím cílem je, aby se uživatelé na stránkách snadněji orientovali a rychleji našli informaci, kterou hledají. Velký význam informační architektury spočívá v její souvislosti s použitelností webových stránek. V dnešní době se můžeme ptát, zda vůbec existuje někdo jako informační architekt. Jesse James Garrett na IA Summit¹⁶ v roce 2008 prohlásil: Neexistuje nic takového jako informační ar” chitekt, jsou a vždy budou jen designéři uživatelské zkušenosti.“¹⁷. Dokladem toho, že má pravdu, může být i graf¹⁸ zobrazující počet vyhledávání pojmu informační architekt (červená) a vzrůst termínu uživatelská zkušenost (modrá) v letech 2004 až 2010.
Obrázek 3.1: Porovnání vyhledávání v Google za roky 2004 – 2010
16. http://2011.iasummit.org/ 17. There is no such thing as information architects - there are only and have only ever been user experience ” (UX) designers.“ 18. KLYN, Dan. A Posting for a Job That Does Not Exist : How We Might Define Information Architects in Today’s Integrated“ Advertising Agency. Bulletin of the American Society for Information ” Science and Technology [online]. 2010, volume 36, number 6, [cit. 2011-03-19]. Dostupný z WWW: . ISSN 1550-8366.
19
3. K Zda je vhodnější raději používat pojem uživatelská zkušenost, nebo informační architektura, je otázka, kterou se v současnosti komunita informačních profesionálů zabývá. User experience je podle mého názoru vhodnější, protože se tento obor zaměřuje právě na uživatele a umožňuje lépe vystihnout povahu hodnocení z jeho pozice. Jako základní hodnotící kritéria jsem zvolil: •
organizace – tj. jaké organizační schéma převládá (exaktní nebo víceznačné)
•
navigace – jaká je globální, lokální nebo i kontextová navigace pro uživatele
•
vyhledávání – zda vůbec umožňují systémy vyhledávat, a pokud ano, jakým způsobem, jak řadí výsledky.
•
popisky (Labeling) – jaké jsou popisky navigačního systému, nadpisy a hypertextové odkazy.
20
Kapitola 4
Popis a analýza vybraných softwarových produktů Na trhu existuje velké množství produktů zaměřujících se na podporu projektového řízení. K hodnocení jsem vybral dva produkty komerční a dva nekomerční. Basecamp je produkt, který využívá Kabinet informačních studií a knihovnictví již několik let, a proto se stal v tomto hodnocení logickou volbou. Glasscubes jsem vybral po své účasti na semináři PARTSIP - elektronické informační zdroje a nadstavbové nástroje. Zde jsem diskutoval o softwarových nástrojích pro projektový management s manažerkou projektu PARTSIP Mgr. Ladislavou Suchou. Ta mi sdělila, že uvažuje o produktu Glasscubes. Tento byl shledán zajímavým a zahrnut do hodnocení. Z open sourceových produktů jsem vybral Teamlab. O přechodu na něj z komerčního Basecampu uvažoval Kabinet informačních studií a knihovnictví a první reakce na něj byly velmi pozitivní. Poslední vybranou aplikací měla být aplikace Codendi. Tu jsem zvolil, protože se jedná o produkt firmy Xerox, který se chlubí kompletním pokrytím životního cyklu projektu a nabízí i možnosti komerčních nástrojů vyšší třídy. Jak se však v průběhu testu ukázalo, jedná se především o nástroj pro vývoj softwaru, jenž sice pokrývá celý životní cyklus projektu a poskytuje 3 různé úrovně zobrazení podle typu uživatele, ale není určen pro projekty studentského typu. Poslední vybranou open source aplikací se stala aplikace dotProject.
4.1
Komerční aplikace
4.1.1 Basecamp Basecamp¹ je webová aplikace firmy 37Signals². Je poskytována formou SaaS (Software as a Service)³, není ji tedy možné hostovat na svém serveru, vše je poskytováno firmou 37Signals. Výhoda takového řešení plyne z nulových nákladů na údržbu a správu aplikace (aktualizace, zabezpečení) a hardwaru. Aktuálně je Basecamp k dispozici v pěti různých verzích. Základní plán nabízí zdarma správu pouze jednoho projektu, dvou writeboardů a 10MB úložného prostoru. Z opačného konce nabízí plán MAX neomezený počet projektů a uživatelů a 75GB úložného prostoru za cenu 149 1. http://basecamphq.com/ 2. http://37signals.com/ 3. Česky: Aplikace jako služba.
21
4. P dolarů měsíčně. Basecamp nedisponuje funkcí chat. Ta je k dispozici pouze jako modul Campfire⁴, který se přikupuje za měsíční poplatek. Výhodou Basecampu je jeho modularita a velké množství externích modulů⁵. Ty je možné přikoupit a propojit s Basecampem. Tím však vzrůstají měsíční náklady na provoz tohoto systému. V případě práce s více projekty Basecamp nabízí rychlý přehled v podobě modulu Dashboard, který obsahuje přehled nadcházejících milníků, kalendář milníků a úkolů a poskytuje náhled na poslední události v projektech, ve kterých uživatel participuje. Dashboard má nevýhodu, že se stává nepřehledným v momentě, kdy uživatel má více projektů současně (4 a více projektů). Stránka se stává zbytečně dlouhou a kalendář ztratí svůj účel, protože se v něm mísí všechny události ze všech projektů. Neexistuje zde ani kolizní systém, jenž by ukazoval překrytí dvou událostí. V případě, že uživatel má pouze jeden projekt, je zbytečné jej přesměrovávat na Dashboard a nutit jej prokliknout se z něho k jedinému projektu, který má k dispozici. Z Dashboardu je možné přepnout se do jednoho z projektů.
Popis funkcí aplikace Basecamp Pro konkrétní projekt Basecamp nabízí tyto moduly: •
Overview (přehled): Tento modul poskytuje rychlý přehled projektu. Zobrazuje kalendář milníků a úkolů a aktivitu v projektu. Obsahuje odkazy pro rychlé vytvoření nové zprávy, writeboardu, úkolů nebo nahrání nového souboru. Modul neposkytuje odkazy na úkoly, ačkoliv u writeboardů nebo zpráv je poskytuje. V pravé části se nachází seznam členů v projektu. Poněkud nelogicky jsou řazeni podle skupiny, ve které se nachází.
Obrázek 4.1: Basecamp a zobrazení overview v projektu
4. http://campfirenow.com/ 5. http://basecamphq.com/extras
22
4. P •
Messages (zprávy): Zobrazení a správa zpráv v projektu. Modul zobrazuje jako první seznam nejaktivnějších diskuzí a pod nimi seznam zpráv, řazených podle poslední přidané zprávy. Přepínač expanded a list view nemá na tuto volbu žádný vliv. A pouze přepíná v části zobrazující zprávy řazené chronologicky, zda je zobrazena poslední zpráva nebo jen odkaz na diskuzi k ní. Kategorie zpráv není možné skrýt.
•
To-Dos (úkoly): To-Dos je modul správy úkolů a seznamů úkolů. Umožňuje vytvářet seznamy úkolů a do nich přidávat konkrétní úkoly, které lze přiřadit konkrétní osobě v projektu. V přehledu je možné řadit tyto seznamy úkolů podle přání uživatele a filtrovat. Nevýhodný je primární způsob filtrování (všechny seznamy úkolů přiřazené komukoliv). Tím může vzniknout dlouhý seznam úkolů a zpracování stránky tím trvá dlouho, ačkoliv uživatele nejčastěji zajímají vlastní úkoly. Každý úkol je možné komentovat, ale právo mazat zprávy u úkolů má jen administrátor nebo vlastník Basecamp účtu.
•
Milestones (milníky): Správce milníků projektu dobře využívající barevného odlišení jednotlivých milníků. Zeleně jsou zobrazeny hotové, žlutě nadcházející a červeně zpožděné milníky. Modul umožňuje exportovat kalendář do formátu iCalendar a importovat jej do aplikace, kterou je uživatel zvyklý používat (Apple iCal nebo Mozilla Calendar…). Zásadní vadou je nemožnost k danému milníku nastavit čas a jediným řešením tohoto problému je dopsání konkrétního času do názvu milníku. Také chybí možnost označit více hotových milníků a smazat je najednou.
•
Writeboards (tabule): Writeboard slouží jako verzovaná tabule, kterou však není možné editovat v reálném čase (kolaborativní psaní). Writeboardy jsou ve výpisu řazeny podle abecedy, nikoliv dle data vytvoření či podle aktivity.
•
Time (správa času): Tento modul vynechávám, neboť se nepodařilo jej vhodně otestovat. Docházelo k potížím v zobrazení (některým uživatelům se zobrazoval, jiným nikoliv). Nastavení projektu neukázalo žádné související nastavení.
•
Files (správa souborů): Správce souborů umožňující verzování. Primárně jsou soubory řazeny podle poslední aktivity (nahrání, nahrání novější verze). Je možné je řadit podle autora a kategorie. Kategorie není možné upravovat ani editovat (tuto možnost má pouze administrátor a vlastník projektu). Chybí možnost řazení podle typu souboru. Stav nahrávání souboru zobrazuje obrázek (progress bar) bez číselného zobrazení a odhadu času dokončení. Obecně lze konstatovat, že nahrávání je velmi pomalé a u větších souborů (větších než 50MB) často docházelo k zastavení nahrávání bez ohlášení chyby. Stahování souborů je velmi pomalé i na dostatečně kvalitní lince⁶ (maximální rychlost stahování, které se podařilo dosáhnout, byla 125KB/s).
6. Testovaná linka dosáhla rychlosti stahování: 59,19Mb/s; nahrávání: 73,44Mb/s; ping: 8ms podle Speedtest.net. Konkrétní výsledek testu: http://www.speedtest.net/result/974523850.png
23
4. P •
People (seznam členů v projektu): Tato sekce zobrazuje všechny účastníky projektu, včetně jejich kontaktů, řazené podle abecedy a rozdělené podle příslušné skupiny. Administrátoři zde mohou nastavovat tři úrovně oprávnění k projektům a přidávat nebo odebírat účastníky projektu.
•
Search (vyhledávání): Vyhledávací políčko není k dispozici napříč moduly a je nutné se přepnout do sekce vyhledávání. Zde se nacházejí poslední vyhledávané výrazy. Vyhledávací políčko neobsahuje žádnou formu našeptávače. Nikde se v tomto modulu nenachází informace o syntaxi vyhledávání.
Analýza aplikace Basecamp •
Projektový management
Přehledy
Projekty
Skupiny
Úkoly
Poskytuje
Pouze vlastník
Pouze administrátoři a vlastníci
Poskytuje
Milníky
Kalendáře
Soubory
Diskuze
Poskytuje omezeně
Poskytuje
Poskytuje
Poskytuje
Tabulka 4.1: Analýza: Basecamp - Projektový managament
•
Přístupnost
Section 508
WCAG 2.0
Porušuje pravidla 1.1.1 a 1.1.2
Porušuje pravidlo 1.1 (a)
Tabulka 4.2: Analýza: Basecamp - Přístupnost
•
Použitelnost Basecamp nesplňuje několik doporučení z hlediska použitelnosti. Jako příklady lze uvést:
•
–
absence odkazu na hlavní stránku aplikace
–
zpracování data a času (kalendář začíná nedělí bez možnosti přenastavit na pondělí)
–
většinu doporučení ohledně URL adres
Validita Stránky generované aplikací Basecamp jsou naprosto nevalidní a nedodržují deklarovaný standard (XHTML 1.0 Transitional). Často se opakuje chyba v podobě několikanásobného využívání unikátního identifikátoru id. Běžně se vyskytují i chybné hodnoty
24
4. P atributů tagů (např. img align absmiddle) nebo neexistující atributy (div record). Basecamp pro svůj chod vyžaduje zapnutý JavaScript a odmítá bez něj fungovat.
HTML
CSS
Nevalidní
Nevalidní
70 chyb
210 chyb
Tabulka 4.3: Analýza: Basecamp - Validita
•
Informační architektura Organizační schéma je nejednoznačné, úkolově orientované, ale v některých sekcích exaktní - alfabetické. Navigace je víceúrovňová a rozložená na stránce na více místech (vpravo lokální, nahoře globální a lokální). Problém s navigací spočívá v její nekonzistenci - v případě otevření konkrétního writeboardu dochází k přesměrování na jinou doménu přes autentizační stránku, jež přesměrovává na samotný writeboard. Tento způsob znemožňuje využívat tlačítka zpět v prohlížeči (dojde k opětovnému přesměrování na writeboard) a je nutné využít odkazu v horní navigaci, který se z globálního back to dashboard“ mění na go back to project“. Další nekonzistentnost je vidět v zobrazení ” ” writeboards a messages. Zatímco messages zobrazují počet komentářů a umožňují dostat se přímým odkazem na poslední komentář, writeboardy nic takového neumožňují, ačkoliv komentářový systém mají. Dalším rozdílem je řazení, kdy writeboardy jsou řazeny podle abecedy a messages jsou podle data poslední zprávy. V případě většího počtu writeboardů to vede k většímu zmatení uživatele. Organizace
Navigace
Nejednoznačné, úkolově orientované | alfabetické organizační schéma
Víceúrovňová
Vyhledávání
Popisky
Základní
Konzistentní, srozumitelné Tabulka 4.4: Analýza: Basecamp - Informační architektura
4.1.2 Glasscubes Glasscubes je aplikací firmy stejného jména, založené v roce 2008. Aplikace je poskytována výhradně jako SaaS, přičemž nabízí dvě platební možnosti. Měsíční poplatky za poněkud omezené služby (počet projektů a velikost diskového prostoru) nebo enterprise verzi, kde jsou poskytované služby konfigurovatelné a platí se za uživatele (od £5 výše podle nastavení).
25
4. P Výhodou této aplikace je česká podpora od firmy Directive⁷ nabízející Glasscubes v českém rozhraní.
Popis funkcí aplikace Glasscubes Po přihlášení do aplikace jsou k dispozici nabídky Dashboard a Workspaces. Dashboard poskytuje přehled o jednotlivých workspaces a umožňuje jejich rychlé procházení. Další nabídky Files a Connect jsou skryty, ale je možné je povolit v administrační části nastavení Glasscubes. Files je funkčně shodný s documents ve workspace. Zajímavou sekcí je právě nabídka Connect, která obsahuje modul Opportunities. Tento modul umožňuje vést lépe přehled o prodeji, diskutovat o jeho příležitostech, odhadovat jejich pravděpodobnost a zobrazovat celkové zprávy o prodeji a příležitostech. Workspaces jsou v praxi konkrétní projekty (někdy také označované jako cubes). Při vytváření nového workspace se nastavuje název a krátký popis, poté aplikace umožňuje nastavit ty moduly, které budou využívány. K dispozici jsou následující moduly: •
Summary: Tento modul poskytuje rychlý přehled událostí v projektu, kde jsou jednotlivé události označeny přehledně barevně podle jejich typu. Přehled obsahuje kalendář zobrazující události od daného dne na týden dopředu a rychlé odkazy pro vytváření oznámení a ankety.
Obrázek 4.2: Glasscubes a zobrazení summary
•
Documents: V této části je možné sdílet dokumenty, vytvářet hierarchické složky a propojit je s dokumenty ze služby Google Docs. Dokumenty mají možnost nastavování oprávnění (editace, čtení, skrytí) a nastavení sdílení. Dále je možné přiřadit seznam dalších uživatelů, kteří daný dokument budou schvalovat.
7. http://www.directive.cz/glasscubes/
26
4. P •
Tasks: Tento modul umožňuje standardní práci s úkoly a nabízí i několik akcí navíc. Lze zde definovat odhadovaný počet hodin, které úkol zabere, a je možné vybrat i notifikaci formou SMS. Zajímavou možností je skrytí úkolu v projektu před určitým seznamem uživatelů. Dále má modul možnost úkolům přiřazovat podúkoly a řadit úkoly do kategorií. Aplikace umožňuje definovat, z kolika procent je již úkol hotov.
•
Discussion: Diskuzní modul poskytuje velmi jednoduchou funkcionalitu vytváření zpráv, reakcí na ně a současně i tvorbu anket.
•
Calendar & Calls: Tento modul je silnou stránkou aplikace Glasscubes, protože poskytuje velice přehledný měsíční kalendář s možností filtrování podle projektu. Umožňuje přidávat události, setkání (kdy je členům zaslána notifikace s pozvánkou) a konferenční hovory. Všechny události je možné sdílet prostřednictvím standardu iCal do dalších aplikací, jež je uživatel zvyklý používat a které tento formát podporují a umí s ním pracovat. Za zmínku bezesporu stojí i fakt, že týden v této aplikaci začíná pondělím.
•
Reports:Tento modul dovoluje jednoduchý export času stráveného prácí na projektu. Filtrovat lze pouze podle projektu nebo podle chronologického hlediska.
•
People: Modul zabývající se skupinami osob umožňuje pozvat uživatele jednotlivě zadáním emailové adresy nebo účastníky z jiného projektu zadáním jejich jména. Další možností je import uživatelů z aplikací AOL, MS Outlook, Yahoo, Gmail, Plaxo, CSV, Lotus Notes a mnoha dalších. Oprávnění je rozděleno do následujících tří úrovní: –
vlastník projektu (workspace owner)
–
uživatel (contributor)
–
přístup pouze pro čtení (read only)
Analýza aplikace Glasscubes •
Projektový management
Přehledy
Projekty
Skupiny
Úkoly
Poskytuje
Poskytuje
Poskytuje
Poskytuje
Milníky
Kalendáře
Soubory
Diskuze
Poskytuje
Poskytuje
Poskytuje
Poskytuje
Tabulka 4.5: Analýza: Glasscubes - Projektový managament
27
4. P •
Přístupnost
Section 508
WCAG 2.0
Splňuje
Splňuje
Tabulka 4.6: Analýza: Glasscubes - Přístupnost
•
Použitelnost Rozhraní je moderní, ale poněkud neintuitivní a uživatel musí hledat ovládací prvky (zatímco v jednom modulu jsou vpravo, v jiném jsou nahoře atd.). Ovládací prvky mají ve všech modulech jiný vzhled. Za zásadní porušení pravidel použitelnosti a přístupnosti lze považovat porušení pravidel nevtíravého skriptování⁸. Využití JavaScriptu je spíše obtěžující a matoucí (např. prvek zobrazený jako záložka je ve skutečnosti JavaScriptovým rozbalovacím menu). Při vypnutém JavaScriptu nefungují odkazy a skryté prvky se nezobrazí (např. rozbalovací menu). John Resig klade důraz na důležitý cíl: Psát kód v JavaScriptu tak, aby interakce s uživateli ” byla nenápadná a přirozená.“⁹ Toho není v této aplikaci vůbec dosaženo a je zřejmé, že v rámci testování, nebyly vzaty v úvahu testy zakázaného JavaScriptu nebo vypnutých kaskádových stylů (CSS).
•
Validita Stránky generované aplikací Glasscubes jsou nevalidní a nedodržují deklarovaný standard (XHTML 1.0 Transitional). Vyskytují se i nesmyslné chyby, jako například kombinování řádkových a blokových elementů (v tagu span je uzavřen tag form a v něm tag div), obrázky nemají definován povinný parametr alt.
HTML
CSS
Nevalidní
Nevalidní
17 chyb, 2 varování
6 chyb
Tabulka 4.7: Analýza: Glasscubes - Validita
•
Informační architektura Organizační schéma je nejednoznačné, úkolově orientované. Navigace je víceúrovňová a nekonzistentní (např. na stránce dashboard není zobrazen odkaz na vytvoření nového workspace, který se nachází v opticky neaktivní záložce workspaces. Po kliknutí na tuto neaktivní záložku se zobrazí nabídka na vytvoření nového workspacu).
8. Unobtrusive – tj. naprosté oddělení kódu HTML a JavaScriptu 9. RESIG, John. JavaScript a Ajax : Moderní programování webových aplikací. Vydání první. Brno : Computer Press a.s., 2007. Nevtíravé skriptování DOM, s. 138-142. ISBN 978-80-251-1824-5.
28
4. P Popisky používají termíny běžnému uživateli neznámé a působí matoucím dojmem. Orientaci a práci naopak usnadňuje český jazyk, který je v této aplikaci možné získat díky firmě Directive. Organizace
Navigace
Nejednoznačné, úkolově orientované organizační schéma
Víceúrovňová, nekonzistentní
Vyhledávání
Popisky
Základní
Nejasné a matoucí Tabulka 4.8: Analýza: Glasscubes - Informační architektura
4.2
Open-source aplikace
4.2.1 Teamlab TeamLab¹⁰ je dílem společnosti Ascensio Systém SIA z Litvy. Aplikace je dostupná ve třech formách: •
SaaS (Software as a Service) – v tomto případě je poskytován zdarma na serverech firmy Ascensio. Omezuje velikost nahrávaných souborů na maximálně 25 MB a dostačuje pro střední firmy do počtu 300 zaměstnanců.
•
Open source – na serveru sourceforge.net je aktuální zdrojový kód aplikace k dispozici a k volné úpravě. Tyto zdrojové kódy je nutné kompilovat operačním systémem Windows s nainstalovaným Microsoft .NET Framework 3.5 SP1. Základní nevýhodou takové aplikace je potom nutnost, aby webová aplikace běžela na serveru s operačním systémem Windows.¹¹
•
TeamLab AMI¹² - v této formě je poskytován zdarma na modelu IAAS (Infrastructure as a Service)¹³ - virtuálním serveru firmy Amazon běžícím na cloud¹⁴ platformě (Amazon EC2¹⁵). V tomto případě je nutné platit za takový virtuální server poplatky podle toho, jak je tento virtuální server využíván (RAM, CPU, přenos dat atd.).
10. TeamLab v2.2. rev16963 11. Velká většina web hostingů běží na operačním systému Linux a v případě takové aplikace je nutné řešit komplikace se spuštěním ASP aplikace na OS Linux. 12. Amazon Machine Image 13. Česky: infrastruktura jako služba 14. Jedná se o způsob poskytování služeb, programů nebo i hardware (za jejichž využívání se platí). 15. Amazon Elastic Compute Cloud - http://aws.amazon.com/ec2/
29
4. P Za zmínku stojí i informace, že současná aplikace je sice poskytována zdarma, ale jen v rámci startupu a v budoucnu budou další moduly nebo služby zpoplatněny.¹⁶
Popis funkcí aplikace Glasscubes Tato aplikace se snaží poskytovat širší základnu služeb pro projektový management tím, že kombinuje sociální funkce s funkcemi softwaru projektového managementu. Rozděluje svoje služby na 4 základní části: •
Community
•
Projects
•
Documents
•
Talk
•
Community - tato sekce obsahuje moduly: –
Dashboard: Tento modul poskytuje základní přehled o událostech ve všech následujících modulech, stejně jako rychlé odkazy pro vytváření obsahu.
–
Employees: Umožňuje vytvářet oddělení (departments) a zvát nové uživatele a rozřazovat je do jednotlivých oddělení.
–
Events: V tomto modulu lze vytvářet události (novinky, příkazy, oznámení), které mohou vidět ostatní uživatelé. K události není možné přiřadit datum, jež by se zobrazilo v kalendáři teamlabu a je nutné vypisovat datum a čas události ručně, což v případě setkání může způsobit nepříjemné zmatení uživatele.
–
Blogs: Každý uživatel si může vést svůj vlastní blog a ostatní uživatelé mohou číst.
–
Forums: Poskytuje standardní funkce diskuzního fóra, včetně rozřazování do kategorií, vytváření anket, odebírání témat atp.
–
Photos: Jedná se o jednoduché sdílení fotografií.
–
Bookmarks: Tato funkce umožňuje mezi uživateli sdílet záložky.
–
Wiki: Tento modul funguje stejně jako wikipedie, dodržuje její syntax a nastavení.
Sekce Community obsahuje velké množství sociálních funkcí (blog, forums, photos, bookmarks), ale v praxi na jejich využívání není dostatek času a jsou nadbytečné.
16. As a startup, we want to promote TeamLab platform and company image across the world. All the modules provided free of charge at the moment will remain free in future. However, as the platform is developed, we may charge fee for the new modules released or services offered.
30
4. P •
Projects - v této sekci se nacházejí moduly pro projektovou spolupráci. Jsou jimi: –
Dashboard: Rychlý přehled napříč projekty.
Obrázek 4.3: TeamLab a zobrazení Dashboardu
–
Projects: V této části je k dispozici detailnější pohled na všechny projekty uživatele.
–
My Tasks: Napříč projekty ukazuje úkoly daného uživatele.
–
Reports: Tento modul umožňuje generovat zprávy podle zaměření (problémy, statistiky, detailní zprávy).
–
Project templates: Tento modul umožňuje vytvořit šablonu projektu, kterou lze později při vytváření nového projektu použít a tím ušetřit čas s opětovným vytvářením milníků, úkolů nebo přiřazováním členů do projektu.
V konkrétním projektu jsou k dispozici moduly pro práci v daném projektu: –
Overview: Jedná se o jednoduché sdílení fotografií.
–
Milestones: Tato funkce umožňuje mezi uživateli sdílet záložky.
–
Tasks: Tento modul funguje stejně jako wikipedie, dodržuje její syntax a nastavení.
–
Discussions: Tento modul funguje stejně jako wikipedie, dodržuje její syntax a nastavení.
–
Documents: Tento modul funguje stejně jako wikipedie, dodržuje její syntax a nastavení.
–
Time Tracking: Tento modul funguje stejně jako wikipedie, dodržuje její syntax a nastavení.
–
History: Tento modul funguje stejně jako wikipedie, dodržuje její syntax a nastavení.
31
4. P Tato sekce poskytuje komplexní a téměř kompletní funkcionalitu nutnou pro práci v projektu. Bezesporu splňuje nároky na práci ve studentských projektech, avšak pro firemní projekty chybí možnosti napojení na další aplikace. Jediné spojení, které Teamlab umožňuje, je import projektů, uživatelů a dat z Basecamp aplikace. •
Documents - sekce dokumentů poskytuje v praxi stejnou funkcionalitu jako dokumenty v konkrétním projektu. Umožňuje vytvářet vlastní dokumenty, které pak lze sdílet s vybranými uživateli (nezávisle na projektu). Je možné již vytvořené dokumenty importovat ze služeb Google Docs, Zohoo nebo Box.net. Tato možnost importovat dokumenty ze služeb třetích stran není k dispozici pro dokumenty v konkrétním projektu.
•
Talk - Tato sekce není snadno dostupná a v globální navigaci se k ní nenachází přímý odkaz. Talk slouží jako instant messenger¹⁷ v rámci celého TeamLabu. Je postaven na technologii XMPP/Jabber a v případě, že použijeme některou z aplikací podporující tento protokol (např. Miranda, Trillian, Psi nebo Pidgin), je možné se připojit k chatu TeamLabu, i když neběží webový prohlížeč. Podporuje funkce konferenčních místnosti (chat) i standardního instant messengeru.
Analýza aplikace TeamLab •
Projektový management
Přehledy
Projekty
Skupiny
Úkoly
Poskytuje
Poskytuje
Poskytuje
Poskytuje
Milníky
Kalendáře
Soubory
Diskuze
Poskytuje
Poskytuje
Poskytuje
Poskytuje
Tabulka 4.9: Analýza: TeamLab - Projektový managament
17. Instant messager – aplikace využívající služeb instant messagingu (internetová komunikační služba v reálném čase).
32
4. P •
Přístupnost
Section 508
WCAG 2.0
Porušuje pravidla 1.1.1 a 1.1.2
Porušuje pravidlo 1.1 (a)
Tabulka 4.10: Analýza: TeamLab - Přístupnost
•
Použitelnost Obecně lze konstatovat, že přístupnost i použitelnost jsou na dobré úrovni a orientace uživatele není matena nekonzistencí rozhraní, které je naopak intuitivní a přehledné. Prohřeškem proti použitelnosti je týden začínající nedělí bez možnosti přenastavení. Jako editor je zde použit starší FCKeditor (novější verze se jmenuje CKeditor a celkově poskytuje vylepšení funkcí)¹⁸ a pro úpravu dokumentů přímo v aplikaci potom OpenOffice. Poněkud matoucím dojmem je tvrzení vývojářů, že k používání TeamLabu je zapotřebí pouze prohlížeč webu.¹⁹ Toto tvrzení je vzhledem k sekci dokumenty poněkud nepravdivé (informační panel s žádostí o instalaci se nedá vypnout).
•
Validita Stránky generované aplikací TeamLab jsou nevalidní a nedodržují deklarovaný standard (XHTML 1.0 Transitional). Stránka obsahuje nelogicky v sekci head prvek span, neobsahuje informaci o kódování (a tím dochází k občasným problémům s českými znaky). Ve všech odkazech ve zdrojovém kódu není validně zapsán znak & (který se v url adresách zapisuje ve formátu &²⁰).
HTML
CSS
Nevalidní
Nevalidní
180 chyb, 7 varování
87 chyb
Tabulka 4.11: Analýza: TeamLab - Validita
18. http://ckeditor.com/ 19. Do I need to install any additional software to use TeamLab? No, you don’t need to download any software in order to use TeamLab in the cloud. Your portal is 100% web-based and all you need is a webbrowser. 20. http://www.htmlhelp.com/tools/validator/problems.html#amp
33
4. P •
Informační architektura Organizace
Navigace
Nejednoznačné, úkolově orientované organizační schéma
víceúrovňová, dobře rozmístěná a rozlišená
Vyhledávání
Popisky
Základní
Konzistentní a srozumitelné
Tabulka 4.12: Analýza: TeamLab - Informační architektura
4.2.2 dotProject Jde o jedinou aplikaci, za níž nestojí žádná firma. Je vytvářena komunitou vývojářů, které spojuje jediný cíl – vytvořit aplikaci, jež bude dostupná zdarma a bude se zaměřovat na projektový management. Zatímco výše zmíněné aplikace jsou poskytovány i ve formě SaaS, dotProject je nutné hostovat na vlastním serveru. Aplikace podporuje architektury LAMP²¹, WAMP²² i WIMP²³. Nevýhodou je, že aplikace nepodporuje jiné databáze než MySQL a je nutné vše spravovat (zabezpečení, aktualizace, zálohování atd.). Aplikace dotProject poskytuje dobrou základnu funkcionalit pro projektový management, ale za cenu absence větší podpory spolupráce nebo sociálních funkcí, nicméně i přes to, je tato aplikace dobře použitelná na studentské a firemní projekty. Správa aplikace je rozsáhlá, a není proto nejjednodušší, ale umožňuje nastavit aplikace velice detailně. K dispozici je český překlad aplikace, který sice není dokonalý a trpí některými vadami v definicích (v&scarone), ale to je dáno chybou překladatele a aplikace umožňuje všechny definice překladu upravit v administračním modulu. Výchozí šablona aplikace není moderní, ale je přehledná a je možné si ji přizpůsobit, napsat novou šablonu nebo si z domovské stránky aplikace stáhnout jiné šablony (např. moderní a přehlednou šablonu poskytuje téma amp). V administraci je také možné aktivovat nebo deaktivovat některé moduly aplikace, a tím ji přiblížit potřebám organizace. Je možné z webových stránek aplikace přejít na web, kde jsou k dispozici další moduly a úpravy aplikace od komunity. Podpora této aplikace je zajištěna manuálem ve formě wikipedie a moderovaným diskusním fórem.
21. Linux, Apache, MySQL a PHP 22. Windows, Apache, MySQL a PHP 23. Windows, IIS, MySQL a PHP
34
4. P Popis funkcí aplikace dotProject Po přihlášení se uživateli zobrazí denní pohled uživatele (s možností přepnutí na týdenní a měsíční pohled) spolu se stručným tříměsíčním kalendářem (minulý měsíc, aktuální měsíc a budoucí měsíc), kde se s přehlednou legendou zobrazují úkoly a události. Je možné se přepnout i do zobrazení podle projektu a na přehled událostí. Aplikace poté poskytuje následující moduly: •
Skupiny: Tento modul umožňuje vytvářet skupiny uživatelů, přiřazovat jim projekty a rozdělovat participanty do skupin (klient, prodejce, dodavatel, konzultant, státní správa, interní, neaplikováno). Každé skupině je možné vytvořit neomezený počet oddělení a do nich přiřazovat uživatele.
•
Projekty: Projekty jsou vždy přiřazovány skupinám a mají velké množství nastavení. U projektu je možné nastavit plánované datum ukončení, rozpočet, cílový rozpočet, definovat webové stránky projektu, přiřadit prioritu, typ projektu a jeho status (návrh, plánovaný, právě realizovaný atd.), stejně jako vytvořit šablonu projektu a importovat úkoly z jiného projektu. Přehled projektů umožňuje filtrovat projekty podle jejich statusu a třídit podle procenta dokončení, názvu a dalších ukazatelů. Tento modul také dovoluje generovat detailní zprávy o projektu, vytvářet Ganttovy diagramy průběhu projektu atd.
•
Úkoly:
Obrázek 4.4: Zobrazení seznamu úkolů v aplikaci dotProject
Celkový přehled úkolů zobrazuje všechny úkoly v projektu. Ty je možné přehledně řadit a filtrovat. Lze je definovat buď jako úkol standardní, nebo jako milník. Kromě názvu a vlastníka úkolu je povoleno nastavit prioritu, procento dokončení, předpokládanou dobu zpracování, závislosti na dalších událostech a přiřadit více lidí k jednomu úkolu. •
Kalendář: Je přehlednou aplikací zobrazující aktuální měsíc, s možností filtrace záznamů podle skupiny a vlastníka události. Neobsahuje možnost exportu kalendáře do standardu iCal.
35
4. P •
Soubory: Jednoduchý správce souborů, umožňující nastavit verzi souboru, přiřadit jej do projektu, k úkolu a notifikovat uživatele, kterých by se soubor mohl týkat. Každému nahrávanému souboru je možné nastavit označení finální a tím znemožnit aktualizaci daného souboru další verzí. Soubory je možné rozřazovat do kategorií a nahrávat do hierarchicky seřazených složek.
•
Kontakty: Tento modul spravuje kontakty v celé aplikaci a dovoluje snadné vyhledávání a filtrování podle abecedy. Kontakty lze importovat ve formátu vCard a zároveň exportovat ve formátu CSV. Každému kontaktu lze nastavit velké množství informací a přiřadit jej do skupiny a oddělení.
•
Fóra: Fóra poskytují běžné funkce fóra včetně moderování a hierarchického řazení podle projektu. Témata i fóra je možné sledovat (odebírat novinky). Velmi zde chybí jakýkoliv WYSIWYG (What you see is what you get)²⁴ editor, který by umožnil jednoduché formátování vkládaného textu, nahrávání obrázků přímo do textu příspěvku a další funkce.
•
Hlášení o problémech: Modul poskytuje funkce správce chyb (bug report). Aplikace umožňuje přidávat tickety²⁵ a definovat jejich prioritu. Odpovědná osoba v projektu potom s daným hlášením pracuje a může na ně reagovat a nastavit status zpracování. Hlášení je možné vyexportovat ve formátu PDF, pokud server, na kterém aplikace běží, má nainstalovaná potřebná rozšíření.
•
Správa uživatelů: V této části lze spravovat uživatele, kteří mají přístup do aplikace. Je možné pozvat nové uživatele, přiřazovat je do projektů a nastavovat jim jejich typ. Další detailnější práci s uživateli umožňuje modul kontakty.
Analýza aplikace dotProject •
Projektový management
Přehledy
Projekty
Skupiny
Úkoly
Poskytuje
Poskytuje
Poskytuje
Poskytuje
Milníky
Kalendáře
Soubory
Diskuze
Poskytuje ve formě speciálního typu úkolu
Poskytuje
Poskytuje
Poskytuje
Tabulka 4.13: Analýza: dotProject - Projektový managament
24. Česky: co vidíš, to dostaneš – editory jako CKeditor, poskytují podobnou funkcionalitu jako MS Word nebo jiné podobné aplikace. 25. Ticket je zvláštním druhem zprávy, který slouží převážně k ohlášení chyby v aplikaci, požadavku na přidání nebo zlepšení funkcionality.
36
4. P
•
Přístupnost
Section 508
WCAG 2.0
Porušuje pravidla 1.1.1 a 1.1.2
Porušuje pravidlo 1.1 (a)
Tabulka 4.14: Analýza: dotProject - Přístupnost
•
Použitelnost Přístupnost i použitelnost jsou na dobré úrovni a orientace uživatele není matena nekonzistencí rozhraní, které je naopak velice intuitivní, přehledné a konzistentní. České rozhraní tomuto faktu velmi napomáhá.
•
Validita Aplikace má místy chyby ve zpracování znaku & v adresách a nedefinuje jej korektně. V kódu chybí povinná hodnota alt v tagu img. Stránky generované aplikací nejsou plně validní, ovšem obsahují méně vážných chyb než jiné výše zmíněné aplikace.
HTML
CSS
Nevalidní
Nevalidní
40 chyb
10 chyb
Tabulka 4.15: Analýza: dotProject - Validita
•
Informační architektura Organizační schéma je nejednoznačné, úkolově orientované. Navigace je víceúrovňová a nekonzistentní (např. na stránce dashboard není zobrazen odkaz na vytvoření nového workspace, který se nachází v opticky neaktivní záložce workspaces. Po kliknutí na tuto neaktivní záložku se zobrazí nabídka na vytvoření nového workspacu). Popisky používají termíny běžnému uživateli neznámé a působí matoucím dojmem. Orientaci a práci naopak usnadňuje český jazyk, který je v této aplikaci možné získat díky firmě Directive. Organizace
Navigace
Nejednoznačné, úkolově orientované organizační schéma
Víceúrovňová, dobře rozmístěná a rozlišená
Vyhledávání
Popisky
Základní
Konzistentní a srozumitelné
Tabulka 4.16: Analýza: dotProject - Informační architektura
37
4. P
4.3
Komparační tabulka a shrnutí Basecamp
Glasscubes
TeamLab
dotProject
Projektový management
3
2
1
3
Přístupnost
2
3
2
3
Použitelnost
2
3
2
2
Validita
2
4
3
2
Informační architektura
3
3
1
3
2,4
3
1,8
2,6
Celkové hodnocení
Tabulka 4.17: Komparační tabulka a shrnutí
Pro subjektivní zhodnocení aplikací je využita hodnotová řada 1-5, kde čím nižší hodnota, tím lépe jsou srovnávané nástroje hodnoceny (1 = výborně, 2 = chvalitebně, 3 = dobře, 4 = dostatečně, 5 = nedostatečně). Různé hodnoty vyjadřují nejen množství prohřešků vůči standardům a doporučením, ale také jejich závažnost. Všechny výše uvedené produkty jsou vhodnými nástroji pro práci v projektu a do jisté míry všechny napomáhají spolupráci v týmu. Každý z těchto nástrojů má své klady, ale i zápory. Aplikace Basecamp je ve svých schopnostech strohá, jednoduchá, ale dostačující. Jejím základním problémem je návrh jejích funkcí. Aplikace TeamLab ukazuje, že produkt s otevřeným zdrojovým kódem může být lepším řešením než komerční aplikace. Působí moderně a má velké množství funkcí. K jejímu záporu však patří právě i ono množství funkcí, které jsou místy spíše zbytečné, duplikují se a tím matou uživatele. Autoři aplikace Glasscubes se na první pohled zaměřili na uživatelské rozhraní. K jejich škodě je návrh rozhraní chybný a plný nejednoznačností. Funkcemi je na cestě mezi aplikacemi Basecamp a TeamLab, tedy je přesně tam, kde by měla být. Aplikace dotProject je spíše zaměřena na projektový management než na spolupráci uživatelů. Působí zastaralým dojmem, ačkoliv funkcemi mnohdy zastiňuje i TeamLab. Ideální produkt bezesporu neexistuje a vzhledem k tomu, že každý projekt je unikátní, nelze s jistotou konstatovat, který nástroj je nejblíže ideálu pro daný projekt.
38
Kapitola 5
Návrh a jádro systému Cogveo Jak bylo v předchozí kapitole zmíněno, ideální nástroj neexistuje, ale mým cílem je se pokusit se mu přiblížit z pohledu studentských projektů, protože jich mám za sebou již několik. Vytvořená aplikace se tedy bude zaměřovat na spolupráci uživatelů a projektový management.
5.1
Databáze
5.1.1 MySQL vs. PostgreSQL Existuje velké množství databázových systémů, přesto jsem vybíral jen mezi MySQL, se kterým mám již dlouholeté zkušenosti, a PostgreSQL, který jsem teprve začal zkoumat. PostgreSQL disponuje např.: •
příkazovou řádkou
•
kvalitně zpracovanými triggery
•
umožňuje používat uložené procedury v jazycích Python, Ruby, PHP, Perl a další
•
atomicita transakce¹ (obecněji ACID²) Vše jsou to vlastnosti, kterými MySQL nedisponuje, nebo je musí nějakým složitým způ-
sobem obcházet (např. příkazovou řádku). Výborným shrnutím rozdílů a důvodů, proč si pro náročnější aplikace vybrat PostgreSQL namísto MySQL (ačkoliv je mnohem rozšířenějším databázovým systémem), poskytuje přehled od firmy EnterpriseDB³.
1. Transakce je skupinou dotazů nebo procedur, které se buď vykonají všechny nebo žádný. Nesmí dojít k tomu, že by z této skupiny byla vykonána jen určitá část. 2. Atomicity, Consistency, Isolation, Durability 3. EnterpriseDB. PostgreSQL vs. MySQL : A comparison of Enterprise Suitability. Edison : EnterpriseDB, 2009. 10 s. Dostupné z WWW: .
39
5. N C 5.1.2 Databázový návrh
Kompletní obrázek databázového návrhu přesahuje rozměry možnosti této práce, a proto je k dispozici na přiloženém cd v souboru: databáze.png. Diagram ukazuje vztahy mezi jednotlivými tabulkami v databázi. Obrázky jsou zde pouze pro ilustrační náhled komplexnosti databázového návrhu aplikace Cogveo.
Obrázek 5.1: První část návrhu databáze
40
5. N C
Obrázek 5.2: Druhá část návrhu databáze
5.2
Architektura (MVC) Pojem architektura obecně označuje technické řešení, uspořádání nebo skladbu nějakého
složitějšího celku.⁴ Podle výkladu⁵ ANSIIEEE Std 1471-2000⁶ konsorciem OpenGroup⁷ je softwarová architektura definována jako struktura komponent programu, jejich vzájemné vazby, prin” cipy a předpisy určující jejich návrh a vývoj v průběhu času.“⁸ Stejně tak ji však lze chápat i jako architekturu složitých systémů, které mohou zahrnovat další nezávislé systémy či aplikace třetích stran. Takové systémy pak mohou být distribuovány 4. PETRÁČKOVÁ, Věra, et al. Akademický slovník cizích slov : [A-Ž]. 1. vyd. (dotisk). Praha : Academia, 2000. 834 s. ISBN 80-200-0607-9. 5. http://www.ewita.com/EA_Overview/Definitions/ArchitectureDefinitions.htm 6. http://standards.ieee.org/findstds/standard/1471-2000.html 7. http://www.opengroup.org/ 8. The structure of components, their interrelationships, and the principles and guidelines governing their design and evolution over time.
41
5. N C mezi více počítači nebo společnosti.⁹ Vzhledem k plánovanému rozsahu projektu je softwarová architektura chápana v prvním významu. Rozdělení aplikace do tří vrstev je poměrně častým řešením. Využívá ho i aplikace Cogveo.¹⁰ Ta je rozdělena na následující vrstvy: •
Datová – je zodpovědná za načtení dat z databáze, jejich zpětné uložení a je tzv. doménovým modelem.
•
Aplikační – obsahuje logiku aplikace, pracuje s objekty a celkově provazuje jednotlivé části.
•
Prezentační – umožňuje zobrazení dat a dalších prvků uživatelského rozhraní. Výhodou takového rozdělení aplikace je, že odděluje prezentaci a interakci od dat a jaká-
koliv úprava v jedné vrstvě má jen minimální dopad na vrstvy ostatní. V této konkrétní aplikaci byl vybrán architektonický vzor MVC (Model, View, Controller), který přesně dodržuje výše zmíněné výhody takového návrhu.
Obrázek 5.3: Obecný MVC návrh aplikace
9. SOMMERVILE, Ian. Software engineering. 9th ed. Boston : Pearson Education, 2010. 773 s. ISBN 0-137035515-2, ISBN-13: 978-0-13-703515-1. 10. PALETA, Petr. Co programátory ve škole neučí : aneb Softwarové inženýrství v reálné praxi. první vydání. Brno : Computer Press, 2003. Návrh struktury aplikace, s. 337. ISBN 80-251-0073-1.
42
5. N C
Obrázek 5.4: Konkrétní MVC návrh aplikace
Aplikace Cogveo je založena na tomto konkrétním návrhu. Uživatel (respektive jeho prohlížeč) komunikuje s aplikací Cogveo pomocí požadavků protokolu HTTP. Tyto požadavky přijímá server Apache a prochází mod_rewrite modulem, který má na starost blokování přístupu do určitých částí systému a zajišťuje, aby byl požadavek předán jedinému vstupnímu bodu aplikace. Výjimku tvoří pouze požadavek na faviconu. Vstupním bodem aplikace Cogveo je v tomto případě soubor main.php, který inicializuje celý systém, volá statickou metodu výstupu a volá statickou metodu třídy Page plnící funkci front controlleru (Page::processURL).
43
5. N C RewriteEngine On AcceptPathInfo on RewriteRule ^config
/
[F]
RewriteRule ^core
/
[F]
RewriteRule ^model
/
[F]
RewriteRule ^control
/
[F]
RewriteRule ^templates
/
[F]
RewriteRule favicon.ico$
/
[F]
RewriteCond
%{REQUEST_URI}
!^/images/favicon.png$
RewriteRule
^(.*/)?favicon\.png$ /images/favicon.png [L]
RewriteCond %{REQUEST_URI}
!^/favicon.png$
RewriteCond %{REQUEST_URI}
!^/robots.txt$
RewriteCond %{REQUEST_URI}
!^/css/
RewriteCond %{REQUEST_URI}
!^/images/
RewriteCond %{REQUEST_URI}
!^/js
RewriteCond %{REQUEST_URI}
!^/google.*\.html$
RewriteRule ^(.*)$
main.php?url=$1
[QSA,L]
Zdrojový kód 1: .htaccess
44
5. N C 5.2.1 Controller
!$m['publicControl']))->run(); $control->prepare($m['params'], $m['urlParams']); $control->run(); } ?>
Zdrojový kód 2: Front controller v třídě Page
45
5. N C Front controller se pokusí najít controller odpovídající požadavku, který přišel od uživatele. V tomto případě jde o jednoduchý požadavek na přihlášení s údaji v poli POST a s požadavkem URL v poli GET. Front controller zavolá controller Login (požadavek na něj byl odeslán v poli GET), jenž implementuje bázovou třídu Control.
doc = Page::getDoc(); $this->root = Page::getControlDataElement(); } public function prepare(array $params, array $urlParams) {} abstract public function run(); } ?>
Zdrojový kód 3: Abstraktní bázová třída Control
46
5. N C act_code = $urlParams['act_code']; } } public function run() { ExtManager::get('Menu', array())->run('tasks'); Page::setTitle('Cogveo.com > Přihlašte se'); $user = new User(); if (!empty($this->act_code)){ $result = DB::$DB->users->where('activate_code', $this->act_code); $row = $result->fetch(); $user->fillFromResult($row); $user['active'] = 1; $user->save(); Page::addMessage(MSG_INFO,'Účet byl aktivován. Můžete se přihlásit'); Output::setTemplate('login'); } if ((Input::get('login', T_STR, I_POST)!== false) && (Input::get('login', T_STR, I_POST)!="") || !empty($_COOKIE['remember'])){ if (!empty($_COOKIE['remember'])){ $susenka = $_COOKIE['remember']; $p = explode("|",$susenka); $login = mighty_strip_tags($p[0]); $password = mighty_strip_tags($p[1]); $remember = 1; }
Zdrojový kód 4: Controller Login 1/4
47
5. N C if ((Input::get('login', T_STR, I_POST)!== false) && (Input::get('login', T_STR, I_POST)!="") || !empty($_COOKIE['remember'])){ if (!empty($_COOKIE['remember'])){ $susenka = $_COOKIE['remember']; $p = explode("|",$susenka); $login = mighty_strip_tags($p[0]); $password = mighty_strip_tags($p[1]); $remember = 1; }else{ $login = Input::get('login', T_STR, I_POST); $password = sha1(Input::get('password', T_STR, I_POST)); $remember = Input::get('remember', T_STR, I_POST); } if($user->login($login, $password, $remember)){ Output::Redirect('/summary/'); }else{ Page::addMessage(MSG_ERROR, 'Neplatné uživatelské jméno nebo heslo. Obě pole jsou CaSeSeNsItIvE'); Output::setTemplate('login'); } }elseif((Input::get('reg_login', T_STR, I_POST)!== false) && (Input::get('reg_login', T_STR, I_POST)!="")){ $login = Input::get('reg_login', T_STR, I_POST); $password = sha1(Input::get('reg_password', T_STR, I_POST)); $password2 = sha1(Input::get('reg_password2', T_STR, I_POST)); $email = Input::get('reg_email', T_EMAIL, I_POST); $surname = Input::get('reg_surname', T_STR, I_POST); $name = Input::get('reg_name', T_STR, I_POST); if (empty ($password) OR empty ($password2) OR empty ($email) OR empty ($name) OR empty ($surname)){ Page::addMessage(MSG_ERROR,'Všechna pole registrace musí být vyplněna.'); Output::setTemplate('login'); }else{ if ($password == $password2){ $result = DB::$DB->users->where('login', $login); if (count($result) < 1) { $user['login'] = $login; $user['password'] = $password;
Zdrojový kód 5: Controller Login 2/4
48
5. N C $user['name'] = $name; $user['surname'] = $surname; $user['active'] = 0; $user['email'] = $email; $code = md5($surname.$password.$login); $user['activate_code'] = $code; $user->save(); $this->mail = new PHPMailer(); $this->mail->IsSMTP(); try{ $this->mail->AddReplyTo('[email protected]', 'Cogveo MailBot'); $this->mail->AddAddress($email,$name.' '.$surname); $this->mail->SetFrom('[email protected]', 'Cogveo MailBot'); $this->mail->Subject = 'Aktivace vašeho účtu na Cogveo.com'; $this->mail->MsgHTML("Děkujeme za registraci Pro aktivaci vašeho účtu prosím klikněte na následující odkaz: Aktivovat účet
S pozdravem Cogveo MailBot."); $this->mail->Send(); } catch (phpmailerException $e) { Page::addMessage(MSG_ERROR,'MailError:'.$e->errorMessage()); Output::setTemplate('login'); } catch (Exception $e) { Page::addMessage(MSG_ERROR,'MailError:'.$e->getMessage()); Output::setTemplate('login'); } Page::addMessage(MSG_INFO,'Vaše registrace je dokončena. Musíte však aktivovat účet, odkaz je ve vaší e-mailové schránce.'); Output::setTemplate('login'); }else{ Page::addMessage(MSG_ERROR,'Toto uživatelské jméno je již zabráno. Zapomněl jste heslo?'); Output::setTemplate('login'); } } }elseif((Input::get('fp_email', T_EMAIL, I_POST)!== false) && (Input::get('fp_email', T_EMAIL, I_POST)!="")){ $email = Input::get('fp_email', T_EMAIL, I_POST); $result = DB::$DB->users->where('email', $email); $row = $result->fetch();
Zdrojový kód 6: Controller Login 3/4
49
5. N C if (count($result) == 1) { $np = md5($email.time()); $user->fillFromResult($row); $user['password'] = sha1($np); $user->save(); $name = $user['name']; $surname = $user['surname']; $this->mail = new PHPMailer(); $this->mail->IsSMTP(); try{ $this->mail->AddReplyTo('[email protected]', 'Cogveo MailBot'); $this->mail->AddAddress($email,$name.' '.$surname); $this->mail->SetFrom('[email protected]', 'Cogveo MailBot'); $this->mail->Subject = 'Obnovení hesla na vašem účtu na Cogveo.com'; $this->mail->MsgHTML("Vašeho heslo bylo změněno na dočasné. Vaše dočasné heslo: <strong>$np
S pozdravem Cogveo MailBot."); $this->mail->Send(); } catch (phpmailerException $e) { Page::addMessage(MSG_ERROR,'MailError:'.$e->errorMessage()); Output::setTemplate('login'); } catch (Exception $e) { Page::addMessage(MSG_ERROR,'MailError:'.$e->getMessage()); Output::setTemplate('login'); } Page::addMessage(MSG_INFO,'Heslo bylo obnoveno. Zkontrolujte si svoji e-mailovou schránku.'); Output::setTemplate('login'); } }else{ Output::setTemplate('login'); } } } ?>
Zdrojový kód 7: Controller Login 4/4
50
5. N C V tomto controlleru dochází při zpracování požadavku na přihlášení uživatele k několika zásadním událostem: •
Vytvoření instance modelu User.
•
Volání metody login instance User.
•
Po úspěšné autentizaci dochází k přerušení zpracování a uživatel je přesměrován do nové lokace pomocí statické metody Output::redirect.
5.2.2 Model Modely, stejně jako controllery, mají vlastní abstraktní třídu Model. Tato abstraktní třída implementuje následující společné metody: ArayAccess - tato implementace rozhraní umožňuje přistupovat k objektům, jako by byla poli.1 Getter, setter - při čtení nebo zápisu nepřístupných vlastností jsou volány právě tyto metody.2 Základní metody pro práci s primárním klíčem a prací se záznamy •
ArayAccess - tato implementace rozhraní umožňuje přistupovat k objektům, jako by byla poli.¹¹
•
Getter, setter - při čtení nebo zápisu nepřístupných vlastností jsou volány právě tyto metody.¹²
•
Základní metody pro práci s primárním klíčem a prací se záznamy
Zdrojový kód 8: Model 1/2
11. http://php.net/manual/en/class.arrayaccess.php 12. http://www.php.net/manual/en/language.oop5.overloading.php#language.oop5.overloading.members
51
5. N C abstract public function getBindings(); abstract public function getElementName(); abstract public function getTableName(); private $pkey = null; private $doc = null; private $data = array(); public function __construct($id = null) { $this->doc = Page::getDoc(); $b = $this->getBindings(); if (count($b) < 1) { throw new ExceptionModelNoPrimaryKey(); } $k = array_keys($b); $this->pkey = $k[0]; if ($id !== null) { $this->loadById($id); } else { $this->fillEmpty(); } }
Zdrojový kód 9: Model 2/2
V konstruktoru bázové třídy je volána metoda getBindings. Tato metoda je definována až v konkrétní třídě a má za úkol tzv. Data Binding.¹³ Jedná se o techniku, jejímž úkolem je svázat dva datové zdroje dohromady (v tomto případě se jedná o svázání databáze PostgreSQL a proměnných v jazyce PHP). Výhoda této techniky spočívá v tom, že jakmile se změní hodnota provázané proměnné, pak se projeví ve všech s ní takto provázaných hodnotách. Metoda save() pak tyto změny ukládá do databáze, jakmile je zavolána nad instancí dané třídy. Další metody této třídy slouží k vytvoření elementu v XML stromu a jeho naplnění daty, získání primárního klíče databáze, definici geteru a seteru a metody k ukládání, nahrání a mazání dat.
13. http://en.wikipedia.org/wiki/Data_binding
52
5. N C public function createElement() { $element = $this->doc->createElement($this->getElementName()); foreach ($this->getBindings() as $k => $b) { if ($b[0] !== null) { $element->setAttribute($b[0], $this->__get($k)); } } return $element; } public function getPKey() { return $this->pkey; } public function __get($k) { if (array_key_exists($k, $this->data)) { return $this->data[$k]; } else { throw new ExceptionModelKeyNotFound($k); } } public function __set($k, $v) { if (array_key_exists($k, $this->data)) { $b =
$this->getBindings();
if (Validator::validate($v, $b[$k][1])) { $this->data[$k] = $v; } else { throw new ExceptionModelTypeNotValid($k); } } else { throw new ExceptionModelKeyNotFound($k); } } public function loadById($id) { $result = DB::$DB->{$this->getTableName()}->where($this->pkey, $id);
Zdrojový kód 10: Abstraktní bázová třída Model 1/3
53
5. N C if (count($result) < 1) { throw new ExceptionModelEntityNotFound($id); } elseif (count($result) > 1) { throw new ExceptionModelToManyEntities($id); } $row = $result->fetch(); $this->fillFromResult(&$row); } public function fillFromResult(&$row) { foreach ($this->getBindings() as $k => $b) { if (!isset($row[$k])) { throw new ExceptionModelDataNotPresent($k); } $this->data[$k] = $row[$k]; } } private function fillEmpty() { foreach ($this->getBindings() as $k => $b) { $this->data[$k] = null; } } // array access public function offsetExists($o) { return array_key_exists($o, $this->data); } public function offsetGet($o) { return $this->__get($o); } public function offsetSet($o, $v) { $this->__set($o, $v); } public function offsetUnset($o) { throw new ExceptionModelUnableToUnset(); }
Zdrojový kód 11: Abstraktní bázová třída Model 2/3
54
5. N C public function save() { if (!empty($this->data[$this->pkey])) { // update $result = DB::$DB->{$this->getTableName()}->where($this->pkey, $this->data[$this->pkey]); if (count($result) < 1) { throw new ExceptionModelEntityNotFound($id); } elseif (count($result) > 1) { throw new ExceptionModelToManyEntities($id); } $row = $result->fetch(); $row->update($this->data); } else { // insert $data = $this->data; unset($data[$this->pkey]); $id = DB::$DB->{$this->getTableName()}->insert($data, $this->getPrimarySequenceName()); $this->loadById($id); } } public function delete() { if (!empty($this->data[$this->pkey])) { // delete $result = DB::$DB->{$this->getTableName()}-> where($this->pkey, $this->data[$this->pkey]); if (count($result) < 1) { throw new ExceptionModelEntityNotFound($id); } elseif (count($result) > 1) { throw new ExceptionModelToManyEntities($id); } $row = $result->fetch(); $row->delete(); } else { throw new ExceptionModuleObjectNotLoaded(); } } }
Zdrojový kód 12: Abstraktní bázová třída Model 3/3
55
5. N C abstract class ModelSet { private $doc = null; private $objects = array(); abstract public function getSetName(); abstract public function getClassName(); public function __construct() { $this->doc = Page::getDoc(); $cn = $this->getClassName(); $c = new $cn(); $this->table = DB::$DB->{$c->getTableName()}; } public function addFromResult(&$row) { $className = $this->getClassName(); $class = new $className(); $pkey = $class->getPKey(); $class->fillFromResult(&$row); $pkeyId = $row[$pkey]; $this->objects[$pkeyId] = $class; } public function createElement() { $element = $this->doc->createElement($this->getSetName()); foreach ($this->objects as &$o) { $element->appendChild($o->createElement()); } return $element; } } ?>
Zdrojový kód 13: Abstraktní bázová třída ModelSet
Abstraktní bázová třída ModelSet je podobná třídě Model, ale s rozdílem, že pracuje se skupinami dat (sety), které se mají zpracovávat.
56
5. N C array ('users_id',T_INT),
// primary key
'login' => array ('login',T_TEXT), 'password' => array ('password',T_TEXT), 'title_before' => array ('title_before',T_TEXT), 'password' => array ('password',T_TEXT), 'name' => array ('name',T_TEXT), 'surname' => array ('surname',T_TEXT), 'title_after' => array ('title_after',T_TEXT), 'active' => array('active',T_INT), 'activate_code'=> array('activate_code',T_TEXT), 'email'=>array('email',T_EMAIL), ); } public function getPrimarySequenceName() { return "users_users_id_seq"; } public function getElementName() { return "User"; } public function getTableName() { return "users"; } public function isLogged(){ if (isset($_SESSION['isLogged'])&&!empty($_SESSION['isLogged'])){ return true; }else{ return false; } }
Zdrojový kód 14: Model User 1/2
57
5. N C public function getUserNameById($id){ $this->loadById($id); } public function logout(){ if (ini_get("session.use_cookies")) { $params = session_get_cookie_params(); setcookie(session_name(), '', time() - 42000, $params["path"], $params["domain"], $params["secure"], $params["httponly"] ); } setcookie("remember",'', time()-42000, "/login/"); session_destroy(); return true; } public function login ($login, $password, $remember){ $result = DB::$DB->users->where('login', $login)->where('password', $password); if (count($result) < 1) { return false; }else{ $row = $result->fetch(); $_SESSION['user_id'] = $row['users_id']; $_SESSION['login'] = $row['login']; $_SESSION['fn'] = $row['name']." ".$row['surname']; $_SESSION['isLogged'] = "1"; if ($remember==1){ setcookie ("remember",$login."|".$password,time()+7*24*3600); } return true; } } } ?>
Zdrojový kód 15: Model User 2/2
V Modelu User je implementována samotná metoda, která má na starosti autentizaci uživatele. V případě, že je jeho jméno a heslo nalezeno v databázi, dojde k autentizaci a uložení
58
5. N C klíčových údajů do session. Ověřování probíhá později kontrolou session, a pokud jsou zde nalezeny platné údaje, dochází k přesměrování na přihlašovací stránku (jako jediná část aplikace nevyžaduje autentizaci). Přihlašování je poměrně specifický příklad, protože po autentizaci dochází k přesměrování (Output::redirect) uživatele na novou stránku. Samotné přesměrování probíhá přes HTTP kód 302 Found a je zpracován požadavek na novou stránku. Zpracování probíhá stejně, jako je tomu u požadavku na přihlášení, jen není zpracování přerušeno přesměrováním, ale dochází k vytvoření XML stromu, který je předán View.
5.2.3 View View je vrstva zodpovědná za transformaci1 XML stromu vytvořeného během zpracování požadavku na HTML dokument. <page debugWeb="t"> Cogveo.com > Nastavení <messages/> <jsSet/> <extData> <User userId="2" login="pilar" fn="Vojtěch Pilař"/> <Menu>
Zdrojový kód 16: XML strom dat předávaný XSLT procesoru 1/2
59
5. N C <User users_id="2" login="pilar" title_before="Bc." active="1" title_after="" password="c80eeb9a01cbb6581a94dccba8ef41d32815d63c" activate_code="0" name="Vojtěch" surname="Pilař" email="[email protected]"/>
Zdrojový kód 17: XML strom dat předávaný XSLT procesoru 2/2
Takto vypadá jednoduchý XML strom generovaný po přihlášení uživatele. Obsahuje všechna potřebná data i strukturu, která se předává společně s odpovídající šablonou XSLT¹⁴ procesoru. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:include href="inc/global.xsl"/> <xsl:template match="controlData"> <xsl:apply-templates select="User"/>
<xsl:apply-templates select="ContactSet"/>
Zdrojový kód 18: Šablona pro XSL transformaci XML do HTML 1/3
14. eXtensible Stylesheet Language Transformations
60
5. N C
<xsl:apply-templates select="SystemSettings"/>
<xsl:template match="User"> <xsl:template match = "ContactSet"> …
Zdrojový kód 20: Šablona pro XSL transformaci XML do HTML 3/3
62
5. N C XSLT procesor je část aplikace, která díky XSL šabloně zpracuje XML dokument a vytvoří z něj jiný typ dokumentu (například SQL). U této aplikace se vždy jedná o HTML dokument, ale XSLT procesor umí transformovat i do dokumentu typu XSLT-FO¹⁵ . Ten lze zpracovat procesory FO¹⁶. Tyto procesory umí vytvořit z XSLT-FO dokumentu dokumenty typu PDF, PostScript nebo RTF.
5.3
PHP a Python PHP i Python jsou kvalitní programovací jazyky. Zatímco PHP se primárně orientuje
na web a vývoj aplikací pro něj, Python je jazyk obecně určený pro jakýkoliv typ aplikace. Oba jazyky jsou interpretačními jazyky¹⁷, jsou open-source a je možné je rozšířit moduly napsanými v jazycích C, C++ nebo JAVA.¹⁸ Mezi zajímavé vlastnosti jazyků patří: •
PHP je jazyk, který je svou syntaxí podobný jazykům C nebo Perl, má ternární operátory¹⁹, reference²⁰, modifikátory pro metody i vlastnosti objektů²¹.
•
Python je naproti tomu jazykem mající stručnou a jasnou syntax, lambda funkce²², vláknění²³, objektovou práci se soubory. V průběhu tvorby aplikace jsem došel k názoru, že ačkoliv jde vývoj správným směrem a
plní svůj účel (výše zmíněné jádro), trvá příliš dlouho a nebylo by možné stihnout vytvořit funkční prototyp aplikace včas. Při hledání alternativy jsem narazil na jazyk Python a webový framework Django²⁴. Možnost vyvíjet aplikace mnohem rychleji mne zaujala, a proto jsem se rozhodl jádro aplikace v jazyce PHP odložit na pozdější dokončení (vzhledem k rozšířenosti webhostingů poskytující možnost provozovat skripty v jazyce PHP v porovnání s jazykem Python) a začít pracovat v Pythonu s frameworkem Django. Jádro systému PHP je všeobecně napsané a lze ho použít na jakékoliv aplikace v jazyce PHP. 15. 16. 17. 18.
XSLT-Formatting Objects Např. XEP nebo FOP Zdrojové kódy nejsou překládány do spustitelné podoby, ale využívají služeb interpretačního programu. Python vs. Php. In Webware for Python Wiki [online]. Ian Bicking, 23 Nov 2001, last modified on 23 Jan
2010 [cit. 2011-03-19]. Dostupné z WWW: . 19. Jedná se o operátory, které v jazyce PHP převážně zkracují vyhodnocovací kód např. ($i % 2 == 0 ? sudé ” číslo“ : liché číslo“) ” 20. Reference umožňují řetězit proměnné, tj. nedocházelo ke kopírování, ale odkazování. 21. Z hlediska objektově orientovaného programování se jedná o zapouzdření a ochranu objektů nastavením vlastnosti public, protected nebo private. 22. Výhodou lambda (někdy anonymních) funkcí je, že odpadá nutnost definovat název funkce a lze tím zkrátit kód. Např. soucet = lambda a, b: a+b 23. Threading – Python umožňuje pracovat s více vlákny programu a podporuje více procesorů. 24. http://www.djangoproject.com/
63
5. N C
5.4
Django Django je webový framework napsaný v jazyce Python. Podobně jako jiné frameworky
se snaží usnadnit práci programátora tím, že poskytuje předdefinovaný systém, s jehož pomocí je mnohem snadnější psát aplikace, jelikož se tak lze vyhnout monotónní práci. Mezi zásadní vlastnosti tohoto frameworku patří: •
DRY (Don’t repeat yourself) – je velice praktická vlastnost, jejímž úkolem je zabránit rutinnímu psaní stejného kódu vícekrát v aplikaci.
•
MVC / MTV (Model View Controller) – rozvržení aplikace do tří vrstev, které již bylo zmíněno dříve.
•
ORM (Object-relation mapping) – technika návrhu propojení jinak nepropojitelných systémů. V tomto případě je databáze namapována na virtuální objekty, přes něž je možno k databázi přistupovat. Django pak práci s objekty převádí na dotazy do databáze a snaží se tyto dotazy optimalizovat.
•
KISS (Keep it short and simple) – opět praktická vlastnost umožňující, aby kód byl krátký, jednoduchý a přehledný. Tato vlastnost obecně patří jazyku Python. Architektura MVC je v podání Django prezentována jako architektura MTV. Model, Tem-
plate, View. Jak oficiální dokumentace uvádí, pojmenování jednotlivých vrstev je diskutabilní a nabízí vlastní vysvětlení²⁵: V naší interpretaci MVC, ’view’ popisuje data, která jsou prezentována ” uživateli. Není to nutně to, jak data vypadají, ale která data jsou prezentována. View popisuje, která data uvidíte, ne jak je uvidíte.“²⁶ Lze tedy konstatovat, že View a Django spolu tvoří Controller aplikace. Model je podobný modelu, který byl v jádře PHP. Na rozdíl od něj drží definici databázové struktury (a tím pádem odpadá i definice data bindingů) a doménovou logiku aplikace. from django.db import models from django.contrib.auth.models import User from django.db.models import Q from django.core.exceptions import ObjectDoesNotExist
Zdrojový kód 21: Model aplikace Account 1/3
25. http://docs.djangoproject.com/en/1.2/faq/general/#django-appears-to-be-a-mvc-framework-but-youcall-the-controller-the-view-and-the-view-the-template-how-come-you-don-t-use-the-standard-names 26. In our interpretation of MVC, the view“ describes the data that gets presented to the user. It’s not ” necessarily how the data looks, but which data is presented. The view describes which data you see, not how you see it.
64
5. N C from cogveo.project.models import Project class UserProfile(models.Model): user = models.ForeignKey(User, unique=True) title_before = models.CharField(max_length=16, blank=True, verbose_name='Titul před jménem') title_after = models.CharField(max_length=64, blank=True, verbose_name='Titul za jménem') def get_fullname(self): fn = self.title_before if self.user.first_name: if fn: fn = fn + " " fn = fn + self.user.first_name if self.user.last_name: if fn: fn = fn + " " fn = fn + self.user.last_name if self.title_after: if fn: fn = fn + ", " fn = fn + self.title_after return fn def get_projects(self): try: return self._projects except: pass self._projects = Project.objects.filter( Q(created_by=self.user) | Q(assignment__user=self.user) ).distinct() return self._projects class ContactType(models.Model): name =
models.CharField(max_length=64, unique=True,
verbose_name="Název typu kontaktu") regex =
models.TextField(blank=True,
verbose_name="Regulární výraz pro typ kontaktu") def __unicode__(self): return self.name
Zdrojový kód 22: Model aplikace Account 2/3
65
5. N C class Contact(models.Model): user =
models.ForeignKey(User)
type =
models.ForeignKey(ContactType, verbose_name="Typ kontaktu")
contact =
models.CharField(max_length=255, verbose_name="Kontakt")
def user_unicode(self): try: return "%s (%s)" % (self.get_profile().get_fullname(), self.username) except ObjectDoesNotExist: return "(%s)" % (self.username) User.__unicode__ = user_unicode
Zdrojový kód 23: Model aplikace Account 3/3
Definice struktury databáze v třídě UserProfile pak má za následek při spuštění příkazu syncdb následující SQL příkaz:
CREATE TABLE cogveo_ UserProfile ( "id" serial NOT NULL PRIMARY KEY, "title_before" varchar(16), "title_after" varchar(64) );
Zdrojový kód 24: SQL příkaz spuštěný při neexistenci tabulky UserProfile příkazem syncdb
Template je část, která se stará o vlastní zobrazení, tedy jak data uživatel uvidí“. K tomuto ” účelu Django přichází s vlastní sadou tagů a filtrů²⁷. Nicméně je možné nadefinovat i vlastní tagy a filtry, které Django zpracuje při vytváření HTML dokumentu.
27. http://docs.djangoproject.com/en/1.2/ref/templates/builtins/
66
5. N C {% extends "common/inc/outside.html" %} {% block title %}Přihlašte se{% endblock %} {% block head %}Přihlašte se{% endblock %} {% block content %} {% endblock %}
Zdrojový kód 25: Ukázka template – přihlašování
Další užitečnou vlastností architektury aplikace postavené na frameworku Django je rozdělení celé aplikace na další samostatné aplikace. Ty jsou rozděleny na výše zmíněné tři vrstvy. Uvedené aplikace je možné použít později i v jiném projektu nebo ve více projektech zároveň, protože databázový návrh je uložen v modelu konkrétní aplikace.
INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'cogveo.common', 'cogveo.account', 'cogveo.project', 'cogveo.task', 'cogveo.summary', 'cogveo.group', )
Zdrojový kód 26: Setting.py – nastavení aplikací
67
5. N C Architektura aplikace zůstala podobná jádru napsaném v jazyce PHP – tedy rozdělení do tří nezávislých vrstev.
Obrázek 5.5: Architektura MVC v podání Django
68
5. N C Pro úplnost uvádím i kompletní přehled architektury (převzato²⁸).
Obrázek 5.6: Kompletní workflow v Django
28. STACEY, J-P. Django internal architecture: a nice PDF | Graceful Exits [online]. 15.6.2009 [cit. 201103-04]. Graceful Exits. Dostupné z WWW: .
69
5. N C Ukázka přihlašování uživatele se díky Djangu zkrátí na pouhou definici v urls.py (URLConf), protože Django obsahuje mimo jiné zabudovaný systém autentifikace uživatelů.²⁹
from django.conf.urls.defaults import patterns urlpatterns = patterns('', (r'^login$', 'django.contrib.auth.views.login', {'template_name': 'account/login.html'}), )
Zdrojový kód 27: Přihlašování uživatele v Django
5.5
jQuery jQuery je JavaScriptová knihovna, která umožňuje jednoduché zpracování událostí, ani-
mací a ajaxové interakce. Výhodou jQuery je jeho velikost (přibližně 29KB při maximální kompresi Gzip a minifikaci), výborná podpora napříč prohlížeči³⁰ a schopnost pracovat s kaskádovými styly (selektory) ve verzích 1 až 3. Využívá ji velké množství společností a aplikací. I společnost Microsoft se rozhodla zabudovat ji jako nedílnou součást do Visual Studia.³¹ jQuery umí pracovat s objekty DOM (document object model)³², událostmi, kaskádovými styly (CSS), selektory a poskytuje základní funkcionalitu XPath. Dokáže vytvářet animace a efekty díky předdefinovaným kódům. Je rozšiřitelná pomocí pluginů a poskytuje velké množství dalších užitečných funkcí. Dalším důvodem, proč je v aplikaci Cogveo použita právě tato knihovna, je její vlastnost tzv. nevtíravého skriptování DOM (unobtrusive JavaScript). Díky této vlastnosti je zajištěno, že i při vypnutém JavaScriptu je aplikace stále použitelná a funkčně se nespoléhá na zapnutý JavaScript.
29. http://docs.djangoproject.com/en/dev/topics/auth/ 30. Internet Explorer 6.0 a novější, Mozilla Firefox 2.0 a novější, Opera 9.0 a novější… 31. GUTHRIE, Scott. ScottGu’s Blog [online]. 28-09-2008 [cit. 2011-03-30]. JQuery and Microsoft. Dostupné z WWW: . 32. Česky: objektový model dokumentu – umožňuje pracovat s dokumentem jako se stromem XML. Díky tomu je možné pracovat s obsahem, strukturou dokumentu pomocí tohoto rozhraní (API).
70
5. N C Příkladem takového použití je mazání kontaktních údajů z profilu uživatele. Odstranit
Zdrojový kód 28: Mazání kontaktů - uživatel
Na tento odkaz je navázán (skrze definici třídy) tento kód:
$('a.contactDelButton').live('click', function() { var url = $(this).attr('href'); $('#dialog').html(''); $('#dialog').attr('title', 'Odebrat kontakt'); $('#dialog').dialog({ autoOpen: true, width: 350, modal: true, }); $.get(url, function(data) { $('#dialog').html($(data).find('#contactDelForm')); $('#contactDelForm form').cform('#contactDelForm', '#dialog', '#contactList'); }); return false; });
Zdrojový kód 29: Mazání kontaktů - funkce
Návratová hodnota tohoto skriptu je false, a tím je zajištěno, že nedojde k přesměrování na stránku ve vlastnosti tref, ačkoliv uživatel klikl na standardní odkaz “. ”
71
5. N C
Obrázek 5.7: jQuery a potvrzovací dialog mazání kontaktu
Pokud by byl JavaScript vypnutý, nedojde k navázání události a uživatel je přesměrován na novou stránku umožňující tutéž funkcionalitu s tím rozdílem, že je nutné nahrát obsah stránky. Knihovny jQuery je využito i při validaci dat, zadávání datových údajů atp. Základní snahou bylo, aby knihovna jQuery zpříjemnila participantovi práci v aplikaci Cogveo na projektu.
5.6
Long polling, Comet Jak již bylo v této práci zmíněno, technika long pollingu je v současnosti velmi využíva-
nou v mnoha webových aplikacích. Vzhledem k tomu, že se jedná o techniku ověřenou, využívá ji i aplikace Cogveo. Této metodě server push se v případě webových aplikací využívajících ajaxu říká Comet³³.
33. Comet (programming). In Wikipedia : the free encyclopedia [online]. St. Petersburg (Florida) : Wikipedia Foundation, 8 July 2006, last modified on 11 March 2011 [cit. 2011-03-30]. Dostupné z WWW: .
72
5. N C
Obrázek 5.8: Průběh komunikace aplikace použitím Comet
Z obrázku je patrné, že komunikace POST event posílá serveru změny, které se staly na straně klienta (v tomto případě editace tabule). Následuje GET updates, kdy server místo prázdné odpovědi drží spojení (v obrázku je vidět 15 vteřin, ale v praxi je spojení udržováno i déle) a čeká na data, jež by mohl klientovi zaslat. Data jsou zasílána ve formátu JSON (JavaScript Object Notation)³⁴, což snižuje objem zasílaných dat oproti formátu XML. Na straně serveru se jedná o propojení django s aplikacemi: gevent³⁵, greenlet³⁶ a libevent.³⁷ Na straně klienta se o vše stará jQuery (s pluginy editableText³⁸, uuid³⁹ a cookie⁴⁰) skrze jednoduchou implementaci.
34. 35. 36. 37. 38. 39. 40.
Česky: JavaScriptový zápis objektů http://www.gevent.org/ http://codespeak.net/py/0.9.2/greenlet.html http://monkey.org/∼provos/libevent/ https://github.com/valums/editableText http://plugins.jquery.com/node/4131 http://plugins.jquery.com/project/Cookie
73
5. N C $(function(){ $('#wbpars').editableText({ urlEvent: '/project/wboard/3/event', myUserUUID: 'xxxxxx-yyyy-475f-b20f-zzzzzzzzzzz', parSelector: '.wbpar', parClass: 'wbpar', firstParId: 'firstPar', }); $('.wbpar').editableState('editable'); $('#wbpars').editableUpdater({ urlSync: '/project/wboard/3/sync', urlPoll: '/project/wboard/3/updates', }); });
Zdrojový kód 30: Jednoduchá implementace jQuery na straně klienta v modulu tabule
Tímto mechanismem je zajištěno, že každý uživatel dostane svůj jedinečný identifikátor, a tím se zabraňuje nejednoznačnostem při editaci. Za zmínku stojí implementace JavaScriptového kódu Lock: A Unified Locking Library od Jakoba Heusera, který řeší problematiku uzamčení elementu pro určitého vlastníka, protože prohlížeče Internet Explorer a Mozilla Firefox mají problémy s event stackem při window událostech⁴¹. Vlastník daného elementu může editovat obsah konkrétního elementu, které má právě otevřený, ale ostatní uživatelé jej vidí jako uzamčený neupravitelný element do doby, než jeho vlastník uvolní zámek tím, že dokončí úpravu obsahu elementu.
41. Bližší vysvětlení problematiky zámků a event stacku: HEUSER, Jakob. Felocity.org [online].
2007
[cit.
2011-03-31].
Javascript’s
Strange
Threaded
Nature.
Dostupné
z
WWW:
.
74
Kapitola 6
Ukončení 6.1
Cogveo Název projektu je složen ze dvou slov. Z anglického Cog – ozubené kolo a ze španělského
veo. Ozubené kolo vyjadřuje vlastnost člena v týmu. Bez potřebné synergie a spolupráce (zapadání ozubených kol do sebe) by totiž tým neměl smysl. Veo je první osoba jednotného čísla v přítomném čase slovesa ver - vidět. Aplikace se zaměřuje právě na uživatele vykonávající v daném projektu zejména činnost ve fázi řešení projektu. Již v názvu práce je zmíněno zacílení na studentské projekty, které se tolik nezabývají koncepční, plánovací a ukončovací fází projektu¹. Aplikace se právě z tohoto důvodu na tyto fáze významněji nezaměřuje. Testovací verze aplikace je k dispozici na adrese http://cogveo.com:8000/ •
Uživatelské jméno: tester
•
Uživatelské heslo: test Tato verze nemusí nutně odpovídat přesnému popisu, protože je neustále ve vývoji, a
některé části aplikace mohou být právě upravovány nebo nejsou ještě k dispozici na serveru.
6.1.1 Logo Logo aplikace bylo navrženo, aby odráželo význam vysvětlený výše. Klíčová byla také jednoduchost, protože ta se odráží v charakteru práce v aplikaci, jež se snaží být jednoduchá a nekomplikovaná, aby tím zvýšila svoji použitelnost. Finální logo je dobře čitelné, jednoduché a obsahuje prvek, který je využitelný po dalších úpravách jako např. favicon. 1. Podle PMBOK by se jednalo o střední fázi projektu, podle metodiky RUP o fáze rozpracování a budování (elaboration a construction), metodika Prince2 žádné pojmenování nemá. ŠONKA, Ivan. Project Management : Řízení projektu [online]. 19. 09. 2005 [cit. 2011-03-31]. Životní cyklus - fáze projektu. Dostupné z WWW: .
75
6. U
Obrázek 6.1: Návrh vektorového loga
Obrázek 6.2: Finální návrh loga
6.1.2 Technické požadavky Cogveo Vzhledem k tomu, že aplikace je napsaná v jazyce Python, jedná se o aplikaci multiplatformní. Mezi základní požadavky na systém, na kterém by měla aplikace být spuštěna, patří: •
Python 2.4 až 2.7², verze 3.0 není podporována
•
Psycopg2³ - databázový adaptér pro python
•
Greenlet⁴
•
Libevent⁵ - je nutné jej zkompilovat před instalací do pythonu
•
Gevent⁶
2. 3. 4. 5. 6.
http://www.python.org/getit/ http://www.initd.org/psycopg/ http://pypi.python.org/pypi/greenlet http://monkey.org/∼provos/libevent/ http://www.gevent.org/
76
6. U •
PostgreSQL⁷ - databáze
•
Web server s podporou Python – např. Apache a mod_wsgi, FastCGI, SCGI nebo AJP (Apache s mod_python je v současnosti již nepodporovaným řešením z mnoha technických důvodů⁸) Nároky na hardware souvisejí především s předpokládaným počtem uživatelů, rozsahem
projektů, nahrávaných souborů a dalšími parametry. Vývojový server měl následující parametry: •
Procesor: AMD Sempron(™) Processor LE-1250 (2,2 Ghz, 512 KB cache)
•
Paměť RAM: 2 GB
•
Pevný disk: RAID 1⁹ – kapacita: 2 TB
•
Připojení: 100 Mbit plně duplexní¹⁰ Oproti vývojovému serveru by v produkčním nasazení musel být server vybaven lepším
hardwarem.
6.1.3 Hlavní menu Cogveo
Obrázek 6.3: Hlavní menu aplikace
•
Přehled – poskytuje osobní náhled napříč projekty a zobrazuje všechny důležité informace týkající se konkrétního uživatele (úkoly, termíny apod.).
•
Projekty – tento modul spravuje všechny projekty v systému. Uživatel je u nich veden jako jejich vlastník. Lze zde vytvořit nový projekt, u kterého se nastavuje název, krátký popis a datum dokončení projektu. U stávajících projektů je možné prohlédnout si detailněji jeho vlastnosti a také je upravit podle požadavku vlastníka projektu.
•
Skupiny – dovoluje pracovat se skupinami. Skupiny lze vytvářet a nastavovat jim vlastníka, který může do skupiny přidat další uživatele.
7. http://www.postgresql.org/ 8. http://docs.djangoproject.com/en/dev/howto/deployment/modpython/?from=olddocs 9. RAID je typ zapojení pevných disků, umožňující zabezpečit data proti jejich ztrátě v případě selhání pevného disku. Typ 1 je zrcadlení, kdy dva disky (nebo více disků v případě 0+1) zrcadlí svůj obsah tak, že oba disky obsahují stejná data. 10. Plně duplexní připojení umožňuje komunikovat nominální rychlostí v obou směrech zároveň.
77
6. U •
Výběr projektu – Tato položka představuje výběr konkrétního projektu, pokud již uživatel má nějaký založený, nebo je v nějakém projektu veden jako jeho participant. Výběr konkrétního projektu poté vede na stránku zobrazující přehled konkrétního projektu.
•
Profil – Nastavuje údaje pro uživatele. Každý uživatel si zde může přidat neomezeně kontaktů, na kterých je k zastižení. Je také povoleno upravit si tyto údaje: křestní jméno, příjmení, e-mailovou adresu, titul před jménem, titul za jménem a přihlašovací heslo. Uživatelské přihlašovací jméno není možné po založení účtu již měnit.
6.1.4 Menu konkrétního projektu •
Přehled projektu – tento modul je zobrazen po vybrání konkrétního projektu v horním menu a zobrazuje komplexní přehled o událostech v projektu (nové úkoly v projektu, dokončené úkoly, nové zprávy apod.). Díky tomu má participant stále na první pohled přehled o dění v projektu.
•
Detaily projektu – v této části je možné si prohlédnout detailní informace o projektu (vlastník projektu, jeho účastníci a jejich pozice v projektu, datum dokončení apod.). Lze zde také přiřazovat nové účastníky do projektu a nastavovat jim status v projektu, stejně jako účastníky z projektu vyřadit. Status v projektu znamená pozici participanta v projektu. K dispozici jsou tři úrovně: garant projektu, účastník projektu a manažer projektu. Garant projektu má k dispozici práva k prohlížení projektu, ale nemůže do něj zasáhnout. Může psát zprávy a komentovat je. Manažer projektu naproti tomu může, stejně jako vlastník projektu, upravovat a přidávat vše, co systém nabízí. Pracovník má podobná práva jako manažer projektu s výjimkou práce s projektem (nemůže přidávat další účastníky nebo současné mazat, upravovat projekt apod.).
Obrázek 6.4: Detaily projektu
•
Úkoly – sekce, která umožňuje přehledně spravovat úkoly, poskytuje jejich aktuální přehled a umožňuje správu typu úkolů. V přehledu je vidět název úkolu, datum dokončení,
78
6. U zodpovědná osoba zpracovávající úkol a procentuální stav dokončení úkolu. Každý úkol je možné si detailně prohlédnout je zde vidět, kdo úkol vytvořil, jaký je popis a typ úkolu. Každý úkol je umožněno upravit. Při vytváření nového úkolu lze zadat název a typ úkolu, popis úkolu, zodpovědnou osobu, datum dokončení úkolu, z kolika procent je již úkol hotov. Dále také předpokládanou délku v člověkodnech¹¹, zda již úkol nebyl právě teď dokončen, a případně kdy byl dokončen. Každému úkolu je také možné přiřadit závislost na jiném úkolu. To znamená, že daný úkol nelze dokončit, dokud nejsou jeho všechny závislosti ukončeny. Tímto způsobem je možné seřadit více úkolů do řetězu a propojit jednotlivé úkoly navzájem závislostmi, což snižuje nutnost kontrolovat, zda některý z podúkolů je již dokončen nebo nikoliv. •
Kalendář – Je jednoduchým nástrojem poskytujícím rychlou orientaci v projektu, protože zobrazuje všechny události a úkoly přehledně v měsíčním kalendáři. Stojí možná za zdůraznění, že všechny kalendáře v systému pracují s pondělkem jako prvním dnem v týdnu.
•
Soubory – Modul poskytující verzované úložiště souborů. Všechny soubory je možné rozřadit do kategorií, které si uživatelé mohou vytvářet. Soubor nahraný v systému je možné přepsat“ novější verzi souboru. Starší verze nejsou ze systému vymazány, ale jsou ” i nadále k dispozici uživatelům ke stažení. Každý soubor je možné odstranit kompletně s celou jeho historií (archivované starší verze daného souboru).
•
Zprávy a diskuze – jednoduchý modul poskytující funkcionalitu diskuze. Každý participant v projektu zde může vytvořit nové téma, které mohou ostatní komentovat a diskutovat o něm.
•
Tabule – představuje jeden z nejzajímavějších nástrojů v projektu, protože poskytuje základní funkcionalitu kolaborativního psaní. Technická stránka tohoto nástroje již byla popsána v kapitole 5.6 Long polling, Comet. Z pohledu uživatele je k dispozici tabule, kdy každému uživateli v systému je umožněno pracovat v reálném čase na stejné tabuli jako ostatní. Tato tabule poskytuje neomezený počet odstavců. S každým odstavcem v daném čase může pracovat právě jedna osoba. Ostatním uživatelům se sice zobrazí, ale v červeném orámování (tzn. že tento odstavec je uzamčen ostatním). V červeném odstavci ostatní uživatelé vidí, co vlastník tohoto odstavce do něj píše v reálném čase. Jakmile vlastník odstavce dokončí svou práci a potvrdí to kliknutím mimo odstavec, je tento odstavec okamžitě k dispozici ostatním uživatelům k úpravě. To se v systému zobrazuje tak, že odstavce, se kterými je možno pracovat, jsou zobrazeny šedým orámováním. V současnosti se jedná spíše o prototyp nástroje ukazujícího možnosti takového nástroje online. Další vývoj se bude zaměřovat na podporu nástrojů WYSIWYG.¹²
11. Člověkoden je jednotka času odpovídající práci jedné osoby po dobu jednoho pracovního dne. 12. What you se is what you get – Česky: Co vidíte, to dostanete
79
6. U 6.1.5 Browsershots.org, validita a přístupnost Browsershots.org je webová aplikace poskytující multi-platformní test webových stránek. Jedná se o open-source aplikaci, která umožňuje každému se zapojit se svým systémem do sítě zpracovávajících strojů. Tyto stroje potom vyřizují požadavky zadávané z webové stránky browsershots.org. Tyto požadavky jsou vyřizovány tak, že daný stroj navštíví stránku zadanou uživatelem, a jakmile je plně načtena, vytvoří obrázek z obrazovky (screenshot) a ten zašle na web, kde je zpřístupněn uživateli. Tato služba je velmi výhodná pro rychlé a pohodlné testování webových stránek v mnoha různých prohlížečích v několika operačních systémech. Pro testování jsem si vybral operační systémy Linux, MS Windows a BSD. Prohlížeče jsem zvolil následovně: •
•
Linux: –
Chrome 5.0 - 10.0
–
Dillo 0.8 a 2.2
–
Epiphany 2.30 a 531.2
–
Firefox 1.0 - 4.0
–
Flock 2.6
–
Galeon 2.0
–
Iceape 1.1
–
Iceweasel 2.0 a 3.0
–
Kazehakase 0.5
–
Konqueror 3.5 - 4.5
–
Lynx 2.8
–
Minefield 3.7
–
MSIE 6.0
–
Navigator 9.0
–
Opera 10.60 - 11.
–
SeaMonkey 1.1 a 2.0
–
Shiretoko 3.5
MS Windows: –
Avant 11.7
–
Chrome 8.0 - 10.0
80
6. U
•
–
Firefox 2.0 - 4.0
–
Flock 2.6
–
K-Meleon 1.5
–
Minefield 3.7
–
MSIE 6.0 - 8.0
–
Netscape 8.1
–
Opera 8.54 - 9.80
–
Safari 4.0 a 5.0
–
Seamonkey 1.1 a 2.0
–
Shiretoko 3.5
BSD: –
Dillo 2.0
–
Epiphany 2.22
–
Firefox 3.0
–
Kazehakase 0.5
–
Konqueror 3.5
–
Opera 9.64
–
SeaMonkey 1.1 Celkově 62 prohlížečů (v kombinaci prohlížeč/operační systém). Z nich úspěšně proběhlo
jen 59. Některé prohlížeče měly problémy s načtením kompletní webové stránky (např. chybí načtení kaskádových stylů). Jinak test proběhl v pořádku a výsledek splnil očekávání. Výsledky testu jsou k dispozici na přiloženém CD ve složce browsershots.org. Z hlediska validity prošel web testem jako XHTML 1.0 Strict. Systém prošel i z pohledu přístupnosti podle pravidel WCAG 1.0 Priority 1,2,3.
81
6. U
6.2
InHD na Cogveo Vzhledem k tomu, že Cogveo je aplikací nově vyvíjenou, je zapotřebí, aby byla nejprve
otestována. Jako cílová skupina byla vybrána skupina členů projektu InHD, a to vzhledem k jejich vyšší úrovni počítačové gramotnosti. Jejich úkolem, bylo systém otestovat a nalézt případné nedostatky a chyby, které brání efektivní práci. Výstupem tohoto testování je textové hodnocení systému. Marta Pavlovská jej popisuje a hodnotí takto: Cogveo je rozdělené na 4 základní části a to Přehled, Projekty, Skupiny a výběr ” jednotlivých projektů. Po přihlášení se uživatel dostává na stránku svého přehledu. Zde jsou uceleně vypsány úkoly, za které je uživatel zodpovědný a kterým se má věnovat spolu s časovým harmonogramem. Celá tato část je doplněna přehledným kalendářem ve spodní části. V kalendáři jsou zobrazovány úkoly vzhledem k datům, která jsou k jednotlivým úkolům přiřazena. Vadí mi fakt, že jednotlivá jména úkolů nejsou zobrazena přímo ve formě odkazů, které by vedly na stánku s detaily o úkolu – pro zobrazení této stránky je nutné kliknout na detail“ na konci tabulky s úkoly, ” což je podle mě zbytečné a trochu neintuitivní.“ V další části s názvem Projekty jsou pak vypsány jednotlivé projekty, kterých je ” uživatel členem. Zde se také nalézá možnost založení nového projektu a editace starších projektů. Opět se zde vyskytuje již dříve zmíněná neintuitivnost v podobě nemožnosti prokliknout se přímo přes jméno projektu na jeho stránku.“ Další částí jsou Skupiny, kde se nachází výpis skupin, kterých je daný uživatel ” členem. Poslední, stěžejní částí, jsou samotné projekty. Zde si uživatel zvolí ten, se kterým chce dále pracovat, a zobrazí tak šestipoložkové menu, které již slouží výhradně pro práci s jedním, vybraným projektem.“ Celkově je Cogveo velmi přehledné a příjemné pro práci. Oproti Basecampu, který ” aktivně používám, je jeho výhoda spíše v drobnostech, než že by se jednalo o zcela odlišný princip. Ovšem právě tyto drobnosti mohou značně zlepšovat nebo ulehčovat práci. Jedná se například o český kalendář, který začíná správně pondělkem (na rozdíl od Basecampu, kde začíná nedělí, což může být často velmi matoucí), dále možnost mazat a editovat vše – to je opět v Basecampu problém, obvykle toto může dělat buď jen administrátor, nebo tvůrce dané zprávy. Tabule nabízí zajímavou funkci kolaborativního psaní – zde může několik uživatelů tvořit obsah zároveň – oproti Basecampovým writeboardům, které může editovat v jednom čase pouze jeden uživatel.“
82
Závěr Nástrojová podpora týmové spolupráce při řešení projektů představuje v současnosti jeden z významných trendů a ve spolupráci s metodikami projektového managementu vznikají i odpovídající nástroje. Množství v současnosti existujících nástrojů je velké, ale každý z nich poskytuje poněkud jiné schopnosti za různé ceny. Práce se snaží poukázat na to, že groupware trpí mnohými nedostatky, ačkoliv je dnešní době velmi významným nástrojem. Snaha analyzovat tyto nedostatky ve čtyřech nástrojích vyústila v práci na vlastní aplikaci, která by se těmto nedostatkům vyhnula a naopak z těchto nástrojů získala přednosti, které každý z nich bezesporu má. Samotný vývoj aplikace a technologická stránka ukazuje, že vývoj takové aplikace je velmi náročný nejen na hledisko funkčnosti, ale i technologie, která je do jisté míry stále ještě poněkud omezující, ačkoliv se aplikace RIA snaží tyto nedostatky smazat. Současný stav nástroje Cogveo je ve fázi testování a není momentálně volně přístupný, protože není ještě plně dokončen. Tomu se bohužel nedalo vyhnout vzhledem k časové dotaci na vývoj aplikace. Současná aplikace Cogveo by totiž měla tvořit jen část celého rámce Cogveo, který by měl zahrnovat sociální podporu projektů, propagaci projektů a velké množství dalších funkcí. Ty však nepatří do této práce. Nové trendy webu jako jsou HTML5, websockets nejsou stále dokončeny nebo nejsou funkční, a proto na ně nelze v současnosti spoléhat. Jakmile však bude dostatečně zajištěna podpora napříč webovými prohlížeči a vzniknou k nim i příslušné knihovny, bude možné posunout vývoj webových aplikací směrem k těm desktopovým a vytvořit nástroje, které je překonají.
83
Použitá literatura Monografie a články 1.
BAKER, Sunny; BAKER, Kim. Complete Idiot’s Guide to Project Management. Indianapolis : Alpha Books, 2000. 352 s. ISBN 978-0028639208.
2.
ČEJKA, Jiří. Software pro řízení projektu : je nezbytným pomocníkem profesionálů. Computerworld. 2010, Ročník XXI, 16, s. 16-20. ISSN 1210-9924.
3.
DIX, Alan, et al. Human-Computer Interaction. 3rd Edition. New Jersey : Prentice Hall, 2004. 817 s. ISBN 0-13-046109-1.
4.
DUGON, Sean; BIGGS, Maggie. Web-based project management. Infoworld. January 31, 2000, n. 1, s. 72-74. ISSN 0199-6649.
5.
GONCALVES, Marcus. Managing Virtual Projects. 1 edition. Blacklick (Ohio) : McGraw-Hill Professional Publishing, 2004. 400 s. ISBN 978-0071444514.
6.
GUTMANS, Andi, STIG, Bakken, DERICK, Rethan. Mistrovství v PHP5. 1. vyd. Brno : CP Books , 2005. 655 s. ISBN 80-251-0799-X.
7.
FIALA, Petr. Projektové řízení : modely, metody, analýzy. 1. vyd. . Praha : Professional Publishing, 2004. 276 s. ISBN 80-86419-24-X.
8.
JOHANSON, Robert. Groupware : Computer Support for Business Teams. Menlo Park : Macmillan, 1988 . 256 s. ISBN 9780029164914.
9.
JOHN, Resig. JavaScript a Ajax : Moderní programování webových aplikací. první. Brno : Computer Press, 2007. 360 s. ISBN 978-80-251-1824-5.
10.
KOLAJOVÁ, Lenka. Týmová spolupráce : jak efektivně vést tým pro dosažení nejlepších výsledků. první vydání. Praha : Grada Publishing, 2006. 105 s. ISBN 80-247-1764-6.
11.
KRŮTA, Tomáš. Software pro projektové řízení. Computerworld. 2010, Ročník XXI, 20, s. 29-30. ISSN 1210-9924.
12.
MÜLLER, Miroslav. Nástrojová podpora pro projektové řízení. Computerworld. 2008, Ročník XIX, 13, s. 28-29. ISSN 1210-9924.
13.
NIELSEN, Jakob; TAHIR, Marie. Použitelnost domovských stránek. Brno : Zoner Press, 2004. Doporučení pro domovské stránky, s. 15-43. ISBN 80-86815-18-8.
14.
PALETA, Petr. Co programátory ve škole neučí : aneb Softwarové inženýrství v reálné praxi. první vydání. Brno : Computer Press, 2003. 337 s. ISBN 80-251-0073-1.
84
6. U 15.
PETRÁČKOVÁ, Věra, et al. Akademický slovník cizích slov : [A-Ž]. 1. vyd. (dotisk). Praha : Academia, 2000. 834 s. ISBN 80-200-0607-9.
16.
PILGRIM, Mark. Ponořme se do Python(u) 3. Praha : CZ.NIC, 2010. 435 s. Dostupné z WWW: . ISBN 978-80-904248-2-1.
17.
Project Management Institute. A Guide to the Project Management Body of Knowledge : PMBOK Guide. 2000 ed edition . Newton Square (Pennsylvania) : Project Management Institute, Inc., 2000. 216 s. ISBN 978-1880410233.
18.
Project Management Institute. The PMI Project Management Fact Book. Second Edition. Newtown Square (Pennsylvania) : Project Management Institute, Inc., 2001. 160 s. ISBN 1-880410-73-7.
19.
RESIG, John. JavaScript a Ajax : Moderní programování webových aplikací. Vydání první. Brno : Computer Press a.s., 2007. 360 s. ISBN 978-80-251-1824-5.
20.
RICHMAN, Larry. Project Management Step-by-Step. 1st edition. New York : AMACOM, 2001. 288 s. ISBN 978-0814407271.
21.
ROMANO, Nicolas; CHEN, Fang; NUMAMAKER, Jay Collaborative project management software. In Proceedings of the 35th Hawaii International Conference on System Sciences : 2002. [s.l.] : The computer society, 2002. ISSN 0-7695-1435-802.
22.
ŠAFÁŘ, Pavel. IT podpora projektového řízení. Brno, 2009. 51 s. Bakalářská práce. Masarykova univerzita, Ekonomicko-správní fakulta. Dostupné z WWW: .
23.
ŠIMEK, Petr. Tvorba webového aplikace pro kontrolu činností spojených s prací na bakalářských a diplomových pracích. Zlín, 2008. Bakalářská práce. Univerzita Tomáše Bati ve Zlíně. Fakulta aplikované informatiky
24.
SCHWALBE, Kathy. Řízení projektů v IT. Vyd. 1. Brno : Computer Press, 2007. 720 s. ISBN 978-80251-1526-8.
25.
SOMMERVILE, Ian. Software engineering. 9th ed. Boston : Pearson Education, 2010. 773 s. ISBN 0-13-7035515-2, ISBN-13: 978-0-13-703515-1.
26.
VONDRÁČEK, Martin. Využití groupwarové aplikace v zájmové činnosti. Praha, 2009. Bakalářská práce. Vysoká škola ekonomická v Praze.
27.
WEST, David. Planning a project with the IBM Rational Unified Process. New York : IBM, 2003. 11 s.
28.
WESTNEY, Richard. Computerized management of multiple small projects. New York : Marcel Dekker, 1992. 357 s. ISBN 0-8247-8645-9.
29.
WILSON, Paul. Computer Supported Cooperative Work : An Introduction. 1st ed. Dordrecht : Kluwer Academic Publishers, 1991. 124 s. ISBN 978-0-7923-1446-2.
85
6. U Online zdroje 1.
CALHOUN, David. David’s Web Development Blog : HTML, CSS, Javascript, PHP, and other assorted code [online]. Nov 29th, 2008 [cit. 2011-03-13]. All you need is . Dostupné z WWW: .
2.
Collaborative software. In Wikipedia : the free encyclopedia [online]. St. Petersburg (Florida) : Wikipedia Foundation, 26 February 2002, last modified on 8 March 2011 [cit. 2011-03-21]. Dostupné z WWW: .
3.
Comet (programming). In Wikipedia : the free encyclopedia [online]. St. Petersburg (Florida) : Wikipedia Foundation, 8 July 2006, last modified on 11 March 2011 [cit. 2011-03-30]. Dostupné z WWW: .
4.
Computer supported cooperative work: The Journal of Collaborative Computing [online]. Springer Netherlands, 2002- [cit. 2010-04-14]. Vychází také v tištěné formě (ISSN 0925-9724). Dostupný z WWW: . ISSN 1573-7551
5.
ČSSI-SPIS-CACIO a FIS VŠE Praha. Konkurenceschopnost absolventů IT oborů VŠ a VOŠ na trhu práce v ČR : společný projekt ČSSI-SPIS-CACIO ve spolupráci s FIS VŠE Praha. Praha : Vysoká škola ekonomická, 2007. 17 s. Dostupné z WWW: .
6.
Department of Business, Enterprise and Regulatory Reform. Guidelines for managing projects. [s.l.] : Crown, 2007. 48 s. Dostupné z WWW: .
7.
DIAZ, Dustin. I am dustin diaz : and while you’re at it... boosh. don’t worry about it. [online]. Monday, November 24th, 2008 [cit. 2011-03-13]. The Skinny on Doctypes. Dostupné z WWW: .
8.
Django Software Foundation. Django : The Web framework for perfectionists with deadlines [online]. 1.2.0. c2011 [cit. 2011-03-04]. Dostupné z WWW: .
9.
EnterpriseDB. PostgreSQL vs. MySQL : A comparison of Enterprise Suitability. Edison : EnterpriseDB, 2009. 10 s. Dostupné z WWW: .
10.
GRIFFITHS, Richard. CSCW and Groupware [online]. c2000 [cit. 2011-01-11]. Computer Supported Co-operative Work (CSCW) and Groupware. Dostupné z WWW: .
11.
GUTHRIE, Scott. ScottGu’s Blog [online]. 28-09-2008 [cit. 2011-03-30]. JQuery and Microsoft. Dostupné z WWW: .
12.
HAYWARD, Andres. A comparison of face-to-face and virtual software development teams. Team Performance Management : An International Journal [online]. 2002, Volume 8, Number 12, [cit. 201103-19]. Dostupný z WWW: . ISSN 13527592.
13.
HEUSER, Jakob. Felocity.org [online]. 2007 [cit. 2011-03-31]. Javascript’s Strange Threaded Nature. Dostupné z WWW: .
86
6. U 14.
KLYN, Dan. A Posting for a Job That Does Not Exist : How We Might Define Information Architects in Today’s Integrated“ Advertising Agency. Bulletin of the American Society for Information Science ” and Technology [online]. 2010, volume 36, number 6, [cit. 2011-03-19]. Dostupný z WWW: . ISSN 1550-8366.
15.
Method 123 Ltd. Project management guidebook [online]. La Habra : Method 123 Ltd., 2003 [cit. 2011-03-03]. Dostupné z WWW: . ISBN 0-473-10445-8.
16.
Python vs. Php. In Webware for Python Wiki [online]. Ian Bicking, 23 Nov 2001, last modified on 23 Jan 2010 [cit. 2011-03-19]. Dostupné z WWW: .
17.
Small Business Service, Kingsgate House. The advantages and disadvantages of working in a virtual team | Business Link. [cit. 2011-03-04]. Dostupné z WWW: .
18.
SNOZOVÁ, Martina. PARTSIP: Týmová spolupráce aneb Jak funguje virtuální tým?. Inflow: information journal [online]. 2011, roč. 4, č. 3 [cit. 2011-03-20]. Dostupné z WWW: . ISSN 1802-9736.
19.
STACEY, J-P. Django internal architecture: a nice PDF | Graceful Exits [online]. 15.6.2009 [cit. 201103-04]. Django internal architecture: a nice PDF | Graceful Exits. Dostupné z WWW: .
20.
ŠKYŘÍK, Petr. Computer Supported Cooperative Work. Knihovnický zpravodaj Vysočina [online]. 2009, 10, 2, [cit. 2011-03-06]. Dostupný z WWW: . ISSN 1213-8231.
21.
ŠONKA, Ivan. Project Management : Řízení projektu [online]. 19. 09. 2005 [cit. 2011-03-31]. Životní cyklus - fáze projektu. Dostupné z WWW: .
22.
The Association for Computing Machinery. CSCW 2008 [online]. San Diego : ACM, 2008 [cit. 2010-0414]. Dostupné z WWW: . ISBN 978-1-60558007-4.
23.
The Association for Computing Machinery. CSCW 2010 [online]. San Diego : ACM, 2010 [cit. 201004-14]. Dostupné z WWW: < ftp://ftp.research.microsoft.com/users/danyelf/CSCW_ 10.zip>. ISBN 978-1-60558-XXX-X.
24.
ZEDEK, Martin. Tvorba Softwaru 2005 [online]. 3.12.2008 [cit. 2011-03-18]. SW nástroje pro podporu projektového řízení v malých a středních firmách. Dostupné z WWW: .
87
Seznam obrázků 3.1
Porovnání vyhledávání v Google za roky 2004 – 2010 19
4.1
Basecamp a zobrazení overview v projektu 22
4.2
Glasscubes a zobrazení summary 26
4.3
TeamLab a zobrazení Dashboardu 31
4.4
Zobrazení seznamu úkolů v aplikaci dotProject 35
5.1
První část návrhu databáze 40
5.2
Druhá část návrhu databáze 41
5.3
Obecný MVC návrh aplikace 42
5.4
Konkrétní MVC návrh aplikace 43
5.5
Architektura MVC v podání Django 68
5.6
Kompletní workflow v Django 69
5.7
jQuery a potvrzovací dialog mazání kontaktu 72
5.8
Průběh komunikace aplikace použitím Comet 73
6.1
Návrh vektorového loga 76
6.2
Finální návrh loga 76
6.3
Hlavní menu aplikace 77
6.4
Detaily projektu 78
88
Seznam zdrojových kódů 1
.htaccess . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2
Front controller v třídě Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3
Abstraktní bázová třída Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4
Controller Login 1/4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5
Controller Login 2/4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
6
Controller Login 3/4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
7
Controller Login 4/4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
8
Model 1/2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
9
Model 2/2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
10
Abstraktní bázová třída Model 1/3 . . . . . . . . . . . . . . . . . . . . . . . . . . 53
11
Abstraktní bázová třída Model 2/3 . . . . . . . . . . . . . . . . . . . . . . . . . . 54
12
Abstraktní bázová třída Model 3/3 . . . . . . . . . . . . . . . . . . . . . . . . . . 55
13
Abstraktní bázová třída ModelSet . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
14
Model User 1/2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
15
Model User 2/2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
16
XML strom dat předávaný XSLT procesoru 1/2 . . . . . . . . . . . . . . . . . . . 59
17
XML strom dat předávaný XSLT procesoru 2/2 . . . . . . . . . . . . . . . . . . . 60
18
Šablona pro XSL transformaci XML do HTML 1/3 . . . . . . . . . . . . . . . . . . 60
19
Šablona pro XSL transformaci XML do HTML 2/3 . . . . . . . . . . . . . . . . . . 61
20
Šablona pro XSL transformaci XML do HTML 3/3 . . . . . . . . . . . . . . . . . . 62
21
Model aplikace Account 1/3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
22
Model aplikace Account 2/3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
23
Model aplikace Account 3/3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
24
SQL příkaz spuštěný při neexistenci tabulky UserProfile příkazem syncdb . . . . . 66
25
Ukázka template – přihlašování . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
26
Setting.py – nastavení aplikací . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
27
Přihlašování uživatele v Django . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
28
Mazání kontaktů - uživatel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
29
Mazání kontaktů - funkce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
30
Jednoduchá implementace jQuery na straně klienta v modulu tabule . . . . . . . . 74
89
Seznam příloh CD-ROM – přiložen ke svazku
90