ROUGH DRAFT authorea.com/16161
Main Data History
Export
Show Index Toggle 4 comments
  •  Quick Edit
  • Kanban board pro Gitlab

    Požadavky na systém

    Požadavky na systém klade zadavatel projektu. Určují, co má výsledný produkt splňovat.

    Fórum se zákazníkem

    Přihlášení přes google

    Systém bude umožňovat přihlášení přes google účet. Uživatel bude přihlášen jen tehdy, pokud je jeho e-mail zaznamenán v lokální databázi.

    Přidání požadavku

    Systém bude umožnovat přidat požadavky. Požadavek bude obsahovat název, popis, prioritu a identifikátor osoby, která požadavek vytvořila.

    Připojení souboru k požadavku

    Systém bude umožnovat přidat k požadavku obrázky, pdf sobory a rar/zip archivy.

    Stav požadavku

    Systém bude umožnovat přiřazení a změnu stavu k požadavku. Aktuální stav bude ovlivňovat barvu požadavku. Stavy budou: nový, rozpracovaný, k posouzení, dokončený.

    Komentování požadavku

    Systém bude umožnovat komentovat jednotlivé požadavky i jednotlivé komentáře. Komentáře budou mít stromovou strukturu.

    Připojení souboru ke komentáři

    Systém bude umožnovat přidat ke komentáři obrázky, pdf sobory a rar/zip archivy.

    Přidání nového uživatele

    Systém bude umožnovat osobám s právy administrátora přídání nového uživatele. Při přidávání se budou nastavovat uživatelská práva (zákazník, zaměstnanec, administrátor).

    Úprava/smazání uživatele

    Systém bude umožnovat osobám s právy administrátora upravit nebo smazat stávajícího uživatele.

    Stav komentáře

    Systém bude umožnovat ke komentáři přiřadit stav. Stavy budou vytvořený, vyřešený a neplatný.

    Rozdělení komentářů

    Systém bude komentáře rozdělovat do dvou sloupců podle stavu komentáře. Neplatné a vyřešené komentáře budou v samostatném sloupci a bude je moci zobrazit jen vývojář a administrátor, ne zákazník.

    Verze požadavku

    Systém bude umožnovat přidat novou verzi požadavku. Požadavek tedy půjde změnit, ale předchozí verze zůstane uložená a dohledatelná. Komentáře se budou vztahovat ke konkrétní verzi požadavku. S novou verzí požadavku tedy vznikne nové vlákno komentářů.

    Propojení s GitLabem

    Propojení s projektem na gitlabu

    Systém bude umožnovat propojení s existujícím projektem na gitlabu.

    Vytvořit issue

    Systém bude umožnovat vytvoření issue. Issue bude synchronizováno s gitlabem, včetně štítků.

    Přiřazení pracovníkovi

    Systém bude umožňovat přiřadit issue konkrétnímu uživateli. Pokud issue nebude nikomu přiřazeno, může ho kdodoliv přiřadit sám sobě. Bude synchronizováno gitlabem.

    Komentovat issue

    Systém bude umožňovat komentovat jednotlivá issue. Komentáře budou synchronizovány s gitlabem.

    Uzavřít issue

    Systém bude umožnovat uzavřít issue. Bude synchronizováno s gilabem.

    Agilní vývoj

    Backlog

    Všechna issue budou po vytvoření přiřazena do backlogu.

    Odhad pomocí story points

    Systém bude umožnovat přidat k issue odhad pomocí story points.

    Vytvoření iterace

    Systém bude umožnovat vytvořit iteraci. Iteraci půjde nastavit délka.

    Kanban board

    Systém bude obsahovat kanban board. Na kanban boardu se budou zobrazovat issue z právě probíhající iterace. Pozice na kanban boardu bude určovat stav issue.

    Přijmutí/nepřijmutí

    Systém bude umožňovat pro issues v sekci done možnosti přijmout nebo nepřijmout. Pokud bude zvoleno přijmout, issue se uzavře a bude považováno za splněné. Pokud se nepřijme, uživatel ho bude moci posunout na jinou pozici kanban boardu nebo vrátit do backlogu.

    Druhy issue

    Systém bude umožňovat k issue přiřadit druh. Druhy budou: feature, bug, (chore, release)

    Automatická tvorba iterace

    Systém bude umožňovat automatické vytvoření iterace podle pořadí issues v backlogu.

    Přidání issue do iterace

    Vedoucí pracovník bude moci přiřadit issue z backlogu do konkrétní iterace.

    Statistiky z kanban boardu

    Systém bude umožňovat zobrazit statistiku o pohybu issue na kanban boardu. Bude možné zobrazit v jakém časovém intervalu a na jaké pozici v kanban boardu se issue nacházelo.

    Mapování issue na požadavek

    Systém bude umožňovat přiřadít k issue konkrétní požadavek, ke kterému se issue vztahuje.

    Výkazy a statistiky

    Výkaz hodin

    Systém bude umožnovat přidat k issue počet hodin, které pracovník strávil při jeho plnění. Na jednom issue může pracovat více lidí.

    Statistika odpracovaných hodin

    Systém bude umožnovat zobrazení statistiky odpracovaných hodin. Odpracovaný čas bude možno filtrovat podle pracovníka a podle data.

    Stažení výkazů

    Systém bude umožňovat stažení a vytisknutí výkazu hodin.

    Burnout chart

    Systém bude zobrazovat burnout chart pro jednotlivé iterace i celkový projekt.

    Odchylky odhad-skutečnost

    Systém bude počítat odchylky mezi odhadovaným časem a skutečným časem stráveným nad projektem.

    Použité technologie

    MEAN Stack

    Mean stack je soubor technologií (MongoDB, Express, AngularJS, Node.js), založených na JavaScriptu, které se používají k tvorbě webových aplikací. Umožňuje tvořit servery i klienty. Klient komunikuje se serverem pomocí rest api. Mezi hlavní přednosti patří rychlost, jednoduchost a testovatelnost.

    AngularJS

    Angular je MVC framework pro tvorbu webových aplikací. Výrazně usnadňuje práci a také podporuje vysokou modularitu a testovatelnost. Vzhled prezentační vrstvy můžeme měnit pomocí direktiv. Direktivy určují, jak bude zacházeno s modelem. Zapisujeme je jako atributy HTML značek. Pokud máme například model items a chceme položky vypsat do seznamu, použijeme direktivu ng-repeat. <ul> <li ng-repeat='item in items'>{{item}}</li> </ul> Angular umožňuje i tvorbu uživatelských direktiv, což zjednodušuje znovupoužitelnost kódu. Další výhodou angularu je two-way data binding. Two-way data binding zajišťuje synchronizaci modelu a prezentační vrstvy. Změna modelu se tedy okamžitě projeví na obrazovce. Angular za nás také řeší závislosti mezi jednotlivými komponentami pomocí dependency injection.

    Node.JS

    Node je prostředí, umožňující běh JavaScriptu mimo webový prohlížeč, využívané zejména pro běh back-end serverů pro webové aplikace. Node běží vždy jen v jednom vlákně, souběžnost zajišťuje architektura řízená událostmi. Pokud vlákno provede nějaký požadavek (například dotaz do databáze), vlákno se nezablokuje, ale může vykonávat něco jiného. Pokud příde odpověď na náš požadavek, vyvolá se událost a provede se kód, který na událost reaguje. Například získání uživatele z databáze provedeme takto: User.FindById(id, function(user) {//provede se po získání uživatele z databáze})

    Express

    Express je NPM balíček (viz 2.2) pro tvorbu webových serverů v node.js, zkracující a zpřehledňující kód.

    MongoDB

    MongoDb je dokumentově orientovaná databáze. Jedná se o NoSQL databázi. Data se ukládají do dokumentů, které jsou tříděny do kolekcí. Filozofie spočívá v tom, že data, která spolu souvicí, jsou uložena v jednom dokumentu a měla by odpovídat požadovaným dotazům na databázi. Při dotazu na databázi tedy obvykle vracíme jen jeden dokument, což je mnohem snažší a rychlejší, než v klasických SQL databázích.

    NPM

    NPM je balíčkový manažer pro node.js a další technologie. Umožňuje jednoduše stahovat přídavné moduly pro naší aplikaci. Modul naistalujeme příkazem npm install nazev_modulu. Závislosti na modulech můžeme zapsat do souboru package.json a poté naistalovat najednou příkazem npm install. V mojí aplikaci jsem použil tyto moduly:

    • bcrypt - obsahuje hash funkci, používanou k šifrování hesel.

    • body-parser - umožňuje automaticky číst JSON v POST dotazu.

    • jwt-simple - umožňuje vytvářet a ověřovat JWT (JSON Web Token). Používá se pro autentizaci uživatele.

    • mongoose - usnadňuje přístup do databáze.

    • gitlab - umožňuje snadnou komunikaci s gitlab api.

    Bower

    Bower je balíčkový manažer pro frontend aplikace. Funguje podobně jako NPM. Pro instalaci modulu použijeme příkaz bower install nazev_modulu. Závislosti můžeme ukládat do souboru bower.json. V mojí aplikaci jsem použil tyto moduly:

    • angular-route - umožňuje měnit obsah stránky na základě URL

    • semantic-ui - css framework, pro tvorbu uživatelského rozhraní

    • jquery - potřeba pro funkčnost některých komponent semantic-ui

    Bower balíčky lze stahovat i pomocí NMP. Bower jsem použil kvůli oddělení závislostí pro backend a frontend.

    Gulp

    Gulp je nástroj pro automatizaci sestavovacího procesu. Umožňuje spojovat kód z více souborů do jednoho, minifikaci JavaScriptu, automatický rebuild při změně sledovaného souboru atd.

    Direktivy pro Angular

    ngDraggable

    Direktiva umožňující posouvat označené elementy pomocí myši. http://ngmodules.org/modules/ngDraggable