DevHelp
Meeskond ja rollid
- Martin Jääger - projektijuht
- Mikk Erlenheim
- Kristo Leemets
Idee
DevHelp: arendusmeeskonna tööd organiseerida aitav töövahend.
Tehnoloogia
- C#
Rakenduse sisu
- Võimaldab üles märkida user storysid
- Võimaldab määrata user storydele story pointe
- Saab märkida, kes milliste user storydega tegelevad
- Saab vaadata kliendipõhiselt user storysid
- User storyde kategoriseerimine olulisuse, raskusastme, ajakulu ja hetketäidetuse põhjal
- Saab lisada/vaadata user storydele märkusi
- Kasutaja loomine ja sisselogimise funktsionaalsus
Nice to have:
- Eemalt ligipääasetavus (remote access)
- Kuvab projekti Burn Down Charti
Projekti algus
11.10.2016
Projekti idee kirjapanek, rühma moodustamine, wiki loomine.
Projekti analüüs
31.10.2016
Mida rakendus endas sisaldab?
Rakendus sisaldab erinevaid funktsionaalsusi, mis võimaldavad tarkvaraarendajatel oma tööd paremini organiseerida. Rakendus arendatakse Microsoft Visual Studio arenduskeskkonnas ja on loodud C# programmeerimiskeelt kasutades. Rakendus kasutab info salvestamiseks ja taasesitamiseks MySql andmebaasi. Kasutajaliidese loomisel kasutatakse Windows Presentation Foundationit. Oluline on rakenduse loomisel kasutada ka sobivaid arendusmustreid. Rakenduses on olemas sisselogimise funktsionaalsus - seeläbi on erinevatel kasutajatel oma profiiliseaded, käimasolevate projektide vaade ja sobivad õigused. Projekti laiem eesmärk on projekti juhtimise ja vajalike ülesannete täitmise lihtsustamine. Selle jaoks on võimalik luua süsteemi erinevaid arendusprojektide profiile. Kuna arendusprojektid koosnevad mitmetest väiksematest ülesannetest ja tegevustest, saab ka neid kirjeldada ja eraldi kategoriseerida. Väiksematele ülesannetele on võimalik juurde lisada nende lühikirjeldus ja pikem lahtiseletus, samuti ka täitmiseks kuluv eeldatav aeg ja täitmise prioriteet. Oluline on ka igale tegevusele seotud isikute määramise funktsionaalsus. Iga isik saab näha endaga seotud erinevate projektide arendusprotsesside käekäiku. Oluline on välja tuua ka, et user storyd jaotatakse rakenduses kuvatavale tahvlile - seeläbi on vajalikel tegevustel lihtne silma peal hoida. Vastavad kategooriad oleksid siis: veel alustamata, täitmisel, täidetud ja lõpetatud. Kategooriate sees saab kasutajalugusid vastavalt täitmise olulisusele ja muudele parameetritele järjestada.
Mis on rakenduse eesmärk?
Rakenduse eesmärk on aidata organiseerida erinevate arendusmeeskondade tööd kasutajasõbraliku projektihaldusprogrammi abil. Rakendus annab projektijuhile ning arendusmeeskonnale ülevaate projektis toimuvast user storyde näol. Rakenduse üks eesmärk on user storyde filtreerimine erinevate parameetrite järgi. Projekti kogukestvus on kirjeldatud story pointide kaudu. Olgu siinkohal selgitusena ära toodud, et story pointi all mõtleme selle originaaltähendust, ehk sellist töömahtu, mille täidaks üks programmeerija ühe tööpäeva jooksul.
Mida tavakasutaja sellega teha saaks?
Tavakasutaja saab kasutada DevHelp programmi erinevate arendustööde organiseerimisel, sest see annab ülevaate kõikidest meeskonna arendusprojektidest ja sellega kaasnevatest tegudest. Programmis on võimalik lisada user storysid ning neid filtreerida. Tavakasutajal on võimalik programmi sisselogida ning samuti uutel kasutajatel ennast registreerida. Suuremate õigustega kasutaja saab määrata tavakasutajatele erinevaid user storysid ning määrab user storyidele story pointe. Laias laastus jagunevad kasutajad kolmeks: suuremate õigustega kasutaja, vaatlemisõigustega kasutaja ning tavakasutaja. Nii tavakasutaja kui ka suuremate õigustega kasutaja saab vaadata erinevate klientide user storysid ning samuti neid filtreerida kliendipõhiselt. Tavakasutaja ja suuremate õigustega kasutaja saab lisada ja vaadata erinevatele user storydele lisamärkusi. Kõiki user storysid on võimalik kasutajatel kategoriseerida olulisuse, raskusastme, ajakulu ja hetketäidetuse põhjal. Vaatlemisõigustega kasutaja saab vaadata projekti kulgu ning hoida silma peal, kas vajalikud user storyd saavad tähtaegadeks realiseeritud. Tavakasutajatel on võimalik vaadata erinevate user storyde staatust ning näha, kellele user storyd on määratud.
Milliste osade realiseerimine võib osutuda problemaatiliseks?
Problemaatiliseks võib osutada erinevate õigustega kasutajagruppide loomine ning vastavalt nende õigustele erinevate vaadete ja võimaluste kuvamine. Andmebaaside sidumine omavahel ning andmebaasides oleva info haldamine. Kuna rakenduses kasutatakse user storyde filtreerimiseks mitmeid erinevaid parameetreid, siis võib ka antud funktsionaalsuse rakendamine osutuda keeruliseks. Arhiveerimis funktsionaalsuse lisamisega võib tekkida olukord, kus andmete salvestamine võib teha rakenduse aeglaseks.
Milline on tööjaotus?
Tööjaotuse poole pealt peame vajalikuks, et iga rühmaliige oleks võimalikult palju kogu projekti arendusprotsessi kaasatud. Kuna tegemist on ühe esimese tiimis tehtava arendustööga, annab see mitmekesi arendamisest hea ülevaate ning häid kogemusi. Plaanis on arendus teha etapiliseks, esmalt paika panna front end pool, disainida andmebaas ning seejärel kirjeldada äriloogikat. Need etapid jagame omakorda väiksemateks osadeks mis täidetakse eri rühmaliikmete poolt. Hiljem käiakse loodud kood tiimikaaslaste poolt üle ja vajadusel viiakse sisse parandusi või esitatakse märkusi.
Millised funktsionaalsused kindlasti rakendusse sisse kirjutame?
- Arendusmeeskonna projektide loetelu nägemine
- Projektiga seotud isikute vaatamine
- User Storyde ja user pointide lisamise võimalus
- User storyde määramine kasutajatele
- User storyde filtreerimine määramata ning määratud user storyde lõikes
- User storyde filtreerimine kasutajate lõikes
- User storyde kategoriseerimine olulisuse, raskusastme, ajakulu ja hetketäidetuse põhjal
- User storydele märkuste lisamise võimalus
- Kasutaja loomine
- Sisselogimise funktsionaalsus
- Erinevate õigustega kasutajad
- Arhiivi olemasolu (tehtud user storyd ning need seotud projektidega).
Millised oleksid nice to have funktsionaalsused?
Kasutajatele eemalt ligipääsetavuse tagamine (remote access) ning projektide burn down charti vaatamise võimalus. Ideaalis võiks projektile olla võimalik ligi pääseda ka veebi kaudu. Vaatlejaõigustega kasutajale üldise projekti staatuse näitamine (progress bar). Ideaalis võiks antud rakendusega olla võimalik ära defineerida teemasid (theme), epicuid, user storysid ning ülesandeid (tasks). Kui jääb aega, siis võiks programmil olla võimalus eksportida projekt koos sisuga pdf faili, et vajadusel kiiresti ülevaade paberkandjale välja printida, et koosolekule kaasa võtta, et anda ülevaade projekti hetkeseisust.
Retsensioon meeskonnale Garden of Towers
13.11.2016
Prototüübi väljaarendamine
05.12.16-11.12.16 prototüübi loomine
Prototüübi saab leida siit: [1]
Lõpptoote väljaarendamine
05.12.16-17.01.17 lõpptoote väljaarendamine
Lõpptoote saab leida siit: LINK SIIA
Projekti jaoks loodud andmebaasiskeemi saab leida siit: Andmebaasiskeem
Tarkvaralahenduse kasutajajuhendi saab leida siit: Juhend
Projekti lõppkirjeldus:
Käesolev tarkvaralahendus realiseerib süsteemi, mis on abiks tarkvaraprojektide arendamise planeerimisel. Esmalt saab kasutaja luua konto. Konto loonud kasutajaid saab märkida kas projekti või kasutajalooga seotud isikuteks. Ühtlasi tagab konto loomine ja kasutamine ligipääsu süsteemile. Luua saab uusi projekte, projektidele saab lisada iteratsioone ning iteratsioonidele omakorda kasutajalugusid. Kõiki kolme, nii projekte, kasutajalugusid kui ka iteratsioone saab eraldiseisvatena kustutada. Ülemkategooria kustutamisel kaovad ka kõik tema alamüksused.
Nii projektidele, iteratsioonidele kui ka kasutajalugudele saab lisada nende seletavaid kirjeldusi ja planeeritud algus- ning teostustähtaegu. Kasutajalugudele saab lisada muuhulgas kasutajaloo punkte ehk tema teostamiseks kuluvate ajaühikute hulga. Samuti on kirjeldatav kasutajalugude prioriteetsus ning täidetuse staatus. Juba eelnevalt salvestatud projekte, iteratsioone ja kasutajalugusid saab muuta ning muutusi on võimalik salvestada. Kasutajalugusid saab vastavalt atribuutidele kindlas tabelis järjestada.
Projekti loomise käik:
Kui projekti idee oli paigas ning seda ka lähemalt analüüsitud, asusime seda reaalselt arendama. Arendamisel otsustasime kasutada database first lähenemist. Ehk siis kirjeldasime loodud probleemi ja lõime sellele vastava andmebaasiskeemi lähtudes kõikvõimalikest hetkevajadustest ja mõningatest tulevikuvajadustest. Loodud andmebaasi skeem lõi hea vundamendi, millele projekti looma hakata. Samuti lihtsustas see projektiliikmete vahelist teinetesemõistmist projekti funktsionaalsuste väljaarendamisel. Kogu andmebaasiskeem sellisel määral projektis kasutust ei leia, kuid see-eest kirjeldab ta läbi andmebaaside loogika meie loodud probleemile lahenduse ilusasti ära.
Töö kordineerimine toimus õppejõu soovitatud versioonihaldussüsteemi abil. Põhiliseks suhtluskanaliks osutusid arendusperioodidel peaaegu igaõhtused skype kõned. Esmalt lõime lihtsamad funktsionaalsused nagu kasutaja loomine ja sisselogimine. Peale seda hakkasime projektis kasutama rohkem andmetabeleid, näiteks projekti lisamisel. Edaspidi lõime ka igale projektile iteratsioonide lisamise funktsionaalsuse ning igale iteratsioonile kasutajalugude loomise võimaluse, sealhulgas ka eraldi üksuste ja nende alamgruppide kustutamise ja muutmise funktsionaalsused. Lisasime ka kasutajate tegevuste logimise mehhanismid. Eraldi väljakutse oli kogu kasutaja interface saada kuvama selliselt, et kõik tunduks loogiline ja sõbralik. Projekti väljaarendamise käigus esines ka vigade otsimist ja veendumist selles, et kogu toimimisloogika ka tegelikult toimiv oleks ning et programmi kokkujooksmisi ei esineks.
Rakendus on loodud kasutades WPF-i ning MVVM struktuuri. Rakendus on jaotatud loogilistesse kihtidesse. Eelkõige vaated, vaatemudelid, service-klassid ja business objectid.
Kogu projekti koodi kirjutamine ja väljaarendamine jagunes ühtlaselt Martini ja Kristo vahel. Kui üks tegi suuremaid muudatusi, siis selgitas ta selle kindlasti üle ka teisele. Kõik projekti arenemissuunad ja muudatused rääkisime omavahel üle ning otsustasime koos.