Vize projektu v rámci KIV/ASWI 2011 – GoTeam!
Západočeská univerzita v Plzni Fakulta Aplikovaných věd KIV/ASWI
Dokument Architektura Zvýšení komunikačních možností aplikace Artfolio
Tým : Členové :
Verze : Datum :
GoTeam! Michal Bokr, A10N0052P Michal Koktan, A10N0033P František Liška, A10N0085P Petr Pícha, A10N0092P 1.0 11.4.2011
0
Vize projektu v rámci KIV/ASWI 2011 – GoTeam!
1. Úvod Vzhledem k tomu, že naším projektem je rozšíření již existující aplikace Artfolio, je převážná většina prvků popisujících architekturu systému stejná jako dosud, a tudíž převzatá od týmů, které na Artfoliu v minulosti pracovali.
2. Technické parametry prostředí systému Od Ing. Švamberga, zástupce CIVu, na jehož serveru aplikace v současné době běží a běžet bude i po skončení našeho projektu byly získány hardwarové i softwarové parametry tohoto serveru. Tyto parametry byly zaneseny v dokumentaci týmu z roku 2008, ale bylo nutné ověřit, že se nezměnily. Parametry jsou následující: 4jádrový Intel Xeon E5420 @ 2.50GHz, 4GB RAM, 1GB síťové rozhraní, 390GB volného místa ve /var/www, 39GB volného místa pro /var (zde je MySQL databáze), OS Debian Lenny i686 on Linux 2.6.21.7, PHP 5 5.2.6, Apache 2 2.2.9, MySQL 5.0.51a, WebAuth 3.6.0.
3. Model nasazení Model nasazení aplikace (v našem případě spíše jejího upgradu) zůstává stejný jako v předchozím vývoji systému a je zachycen na obrázku 1. Na obrázku je aplikace Artfolio označena jako „Application KVK-ATE“. Jak je patrné, aplikace spolupracuje se systémem STAG, odkud jsou správcem (Mgr. Lukavským) na začátku akademického roku importovány informace o studentech, vyučujících, předmětech, rozvrhových akcích a jejich vzájemné příslušnosti. Zároveň je přihlašování do Artfolia řešeno přes univerzitní systém ověřování totožnosti uživatele, WebAuth. Konkrétní zadání a požadavky na náš projekt však do těchto částí aplikace nezasahují. Samotné provedení nasazení (upgradu) pak bude probíhat s pomocí Ing. Šnajberka z KIVu, který je správcem aplikace po technické stránce.
1
Vize projektu v rámci KIV/ASWI 2011 – GoTeam!
Obrázek 1 – Model nasazení
4. Architektura systému Samotná aplikace v sobě spojuje technologie MySQL, PHP, Smarty, XHTML, CSS a JavaScript. Schéma spolupráce těchto jednotlivých komponent systému zachycuje obrázek 2. Architektura odpovídá standardnímu 3vrstvému modelu. Datovou vrstvu představuje MySQL databáze. S tou komunikují objektové PHP třídy z logické (aplikační) vrstvy, které zde plní funkci jak DAO, tak bean objektů. Jejich metody pak volají jednotlivé neobjektové PHP soubory a získávají tak objekty a pole naplněné daty z databáze. Tyto jednotlivé soubory načítá soubor index.php. Na základě aktuální URI vybere patřičný PHP soubor, který získanými daty naplní příslušnou Smarty šablonu (soubory .tpl). Poslední částí logické vrstvy je soubor .htaccess, který se stará o překlad plnovýznamových adres pro index.php. Systém šablon Smarty pak tvoří jakýsi přechod mezi logickou a prezentační vrstvou. Každá šablona se vyplní v závislosti na datech obdržených z PHP souborů, připojí se skripty JavaScriptu, obrázky a další grafické prvky, příslušný kaskádový styl a výsledné XHTML stránky pak již tvoří samotnou prezentační vrstvu aplikace.
2
Vize projektu v rámci KIV/ASWI 2011 – GoTeam!
Obrázek 2 – Architektura systému
5. Databáze Databáze je první komponentou systému, kterou je pro účely našeho zadání a dohodnutých požadavků potřeba upravit. Původní strukturu databáze popisuje její ERA model na obrázku 3. V jejím rozšíření se momentálně soustředíme na požadavky nejvyšší priority, kterými jsou nástěnka, přehled aktualit a rozesílání hromadného emailu v rámci kroužků (podrobnosti viz Dokument vize projektu). Do ERA modelu proto primárně přibývají 3 tabulky (actualities, actuality_type a bulletin) a jejich připojení na tabulku groups. Rozšíření ilustruje obrázek 4. Tabulka bulletin reprezentuje příspěvky na nástěnce a její atributy mají následující význam:
id – primární klíč (unikátní) id_group – identifikátor kroužku, k němuž příspěvek náleží (primární klíč tabulky groups) name – křestní jméno autora příspěvku surname – příjmení autora příspěvku description – samotný text příspěvku date_added – datum a čas vložení příspěvku na nástěnku
3
Vize projektu v rámci KIV/ASWI 2011 – GoTeam!
Obrázek 3 – Původní ERA model databáze
Tabulka actuality_type obsahuje pouze primární klíč (id) a pojmenování typu aktuality (name). To popisuje akci, která vedla k vytvoření aktuality (o které je potřeba informovat uživatele). Její obsah bude pevně daný a z pohledu aplikace neměnný. Ilustruje jej následující tabulka (konkrétní hodnoty nejsou definitivní a mohou se měnit): id 1 2 3 4 5 6 7 8
name komentář příspěvek na nástěnce odevzdání díla úprava díla označení díla za hotové ohodnocení díla nový úkol úprava úkolu
Tabulka actualities reprezentuje samotné aktuality (nové události v rámci kroužku), o kterých je uživateli poskytována informace. Význam jejích atributů je následující:
id – primární klič (unikátní),
4
Vize projektu v rámci KIV/ASWI 2011 – GoTeam!
id_group – identifikátor kroužku, k němuž se aktuality vztahuje (primární klíč tabulky groups), name – křestní jméno uživatele, jehož akce vyvolala uložení aktuality, surname – příjmení uživatele, jehož akce vyvolala uložení aktuality, description – automaticky generovaný text aktuality, date_added – datum a čas provedení akce, která vyvolala uložení aktuality, id_type – typ akce, která vyvolala uložení aktuality (primární klíč tabulky actuality_type), id_link – odkaz na stránku, kde se stala akce, která vyvolala uložení aktuality.
Obrázek 4 – Rozšíření databáze pro požadavky nejvyšších priorit
6. Soubory V tomto oddíle se opět primárně zabýváme soubory souvisejícími s požadavky nejvyšší priority. Pro rozšíření funkčnosti bude samozřejmě zapotřebí upravit některé stávající, ale hlavně vytvořit i některé nové zdrojové soubory. Adresářová struktura však zůstává nezměněna oproti předchozímu vývoji aplikace a vypadá následovně:
/ ... – konfigurační soubor, php pro přístup k databázi a základní funkce, odstavka/ ... – informační stránka pro případ, kdy se nepodaří připojit k databázi, plugins/ ... – moduly obsahující funkce zejména pro komunikaci s databází, plugins_smarty/ ... – vlastní modifikátory a funkce pro šablonovací systém, smarty/ ... – šablonovací systém, artfolio/.htaccess ... – překlad adres, artfolio /index.php ... – hlavní (řídící) php soubor,
5
Vize projektu v rámci KIV/ASWI 2011 – GoTeam!
artfolio /css/ ... – kaskádové styly, artfolio /errorpage/ ... – řešení chybových stránek, artfolio /img/ ... – grafické prvky pro stránky, artfolio /js/ ... – javascriptové funkce v externích souborech, artfolio /php/ ... – php soubory pro řízení jednotlivých podstránek v systému, artfolio /templates/ ... – šablony prezentační vrstvy, artfolio /templates_c/ ... – cache vygenerovaných šablon.
Dále je uveden seznam souborů, u nichž je již v současné době jisté, že je bude třeba pro novou funkčnost aplikace vytvořit, a stručný popis jejich funkce (u objektových PHP souborů navíc uvažované metody): Jméno souboru studium-prehled-krouzku.php studium-prehled-aktualit.php studium-nastenka.php studium-email.php prehled-krouzku.tpl prehled-aktualit.tpl nastenka.tpl email.tpl menu-krouzek.tpl ate-group.css Actualities.php Bulletin.php
funkce hlavní stránka kroužku stránka se seznamem aktualit stránka s nástěnkou stránka pro odeslání hromadného emailu šablona hlavní stránky kroužku šablona stránky aktualit šablona stránky nástěnky šablona stránky hromadného emailu šablona menu kroužku kaskádový styl pro nové funkčnosti objektové php pro aktuality
metody -
insertActuality(všechny potřebné informace), getActualities(id kroužku) objektové php pro insertBulletin(všechny potřebné příspěvky na nástěnce informace), getBulletins(id kroužku)
Posledním uváděným seznamem je seznam souborů, které bude pravděpodobně potřeba upravit, a důvody k tomuto kroku:
.htaccess – úprava překladů cest, tak aby odpovídaly nové hierarchii stránek, index.php – zahrnutí nového kaskádového stylu, prehled-ukolu.tpl – zobrazení údaje o mezním termínu odevzdání (požadavek nižší priority), přidání menu kroužku, úprava navigace, editace-ukolu.tpl – vytvoření aktuality, přidání menu kroužku, úprava navigace, prehled-studentu.tpl – přidání menu kroužku, úprava navigace, 6
Vize projektu v rámci KIV/ASWI 2011 – GoTeam!
prehled-del.tpl – přidání menu kroužku, úprava navigace, editace-dila.tpl – vytvoření aktuality, přidání menu kroužku, úprava navigace, prehled-del-ucitel.tpl – přidání menu kroužku, úprava navigace, komentare-dila.tpl – přidání menu kroužku, úprava navigace, vlozit-komentar-dila.tpl – vytvoření aktuality, přidání menu kroužku, úprava navigace, hodnoceni-dila.tpl – vytvoření aktuality, přidání menu kroužku, úprava navigace, Groups.php – získání informací pro hlavní stránku kroužku, Students.php - získání informací pro hlavní stránku kroužku a hromadný email, Subjects.php - získání informací pro hlavní stránku kroužku, Tasks.php - získání informací pro hlavní stránku kroužku, Teachers.php - získání informací pro hlavní stránku kroužku a hromadný email.
7. Mimofunkční požadavky Pokud se týče mimofunkčních požadavků jako je rychlost, snadnost užití atd., bude výsledné rozšíření alespoň tak kvalitní jako dosavadní verze aplikace.
7