Loppudokumentaatio - AtlasCorporation/ProjectManagementTool GitHub Wiki

1. Asennuksessa huomioitavaa

  • Työkalu tarvitsee tietokannan toimiakseen.
  • Seuraavat NuGet-paketit lisättävä, jos ne puuttuvat:
    • MarkedNet
    • DHTMLX Gantt
    • Octokit

2. Tietoa ohjelmasta

Atlas - ProjectManagementToolin tarkoitus on toimia kuten sen nimi antaa ymmärtää, eli se on työkalu projektinhallintaan. Sen avulla voidaan tarkkailla työn etenemistä, työtunteja ja sitä kautta kustannusarvioita. Hallintatyökalu tulee jokaisen sen suunnittelijan portfolion liitteeksi, jossa ohjelmoijan projektien etenemistä voidaan tarkastella. Työkalu noudattaa kolmikerros-arkkitehtuuria.

  • ####Toteutuneet vaatimukset

    • GANTT-Chart
    • CRUD-toiminnot projekteille
    • Githubin API:sta kamaa (commit feedi, käytetyt koodikielet, käyttäjän repot)
    • MySQL Tietokannan pystytys
    • Tunnusten tallentaminen tietokantaan
    • Salasanojen hashaaminen
    • Työtuntien tallentaminen tietokantaan
    • UI tehty käyttäjäystävälliseksi
    • Autentikointi
  • ####Yli alkuperäisvaatimusten

    • Sisäänrakennettu markdown dokumenttien kirjoittamiseen
    • Käyttäjien authorisointi roolien perusteella
    • Syötteentarkistukset
    • Muiden käyttäjien lisääminen omaan projektiin
    • Public/private projektit
    • Responsiivisuus (Bootstrap)
  • ####Toteutumatta jääneet vaatimukset

    • Dokumenttien hakeminen Githubin wikistä (API:n kautta ei ollut mahdollista päästä wikiin käsiksi)
  • ####Toteutuneet ei-toiminnalliset vaatimukset

    • Skaalautuvuus
    • Tietoturva
    • Käytettävyys
    • Ylläpidettävyys
    • Integroitavuus

3. Kuvaruutukaappaukset tärkeimmistä käyttöliittymistä + lyhyet käyttöohjeet jollei "ilmiselvää"

###Piechart ja commitit Homessa näkyy valitun projektin tietoja, mukaanlukien tehdyn tuntimäärän ja viimeisimmät GitHub-commitit.

###Gantt-Chart Valitun projektin työtunnit gantt-charttiin mallinnettuna.

###Projektin asetukset

###Markdown dokumentaatio

###Projektin hallinnointi Tehtävien ja työtuntien hallintaa sekä tarkastelua.

4. Ohjelman tarvitsemat /mukana tulevat tiedostot/tietokannat

Tietokannan luontilauseet, sekä insertit löytyvät projektin juuresta kansiosta AtlasDatabase tai linkistä:

AtlasDatabase

Ohjelman kehityksessä käytetyn MySQL-tietokannan käyttäjätunnus salasanoineen on kovakoodattuna ohjelmassa ja on toiminnassa siihen saakka että toteutus saadaan arvioitua. Arvioinnin jälkeen sekä tietokanta että käyttäjätunnus tuhotaan.

ER-Kaavio tietokannasta

5. Tiedossa olevat ongelmat ja bugit sekä jatkokehitysideat

Ongelmat ja bugit

Visual studiolla ajaessa uuden projektin dokumentaatiotiedostoon ei voi kirjoittaa, ennen kuin käynnistetään visual studio uudelleen. Ongelma luultavasti johtuu siitä että tiedosto on lukittu visual studion käyttöön, jolloinka Atlas ei voi käyttää sitä. Muuten kaikki löydetyt ongelmat ja bugit on korjattu.

Jatkokehitysideat

  1. Trellon tyylinen Kanban-lauta:
  • taskeja voidaan laittaa muistilapuille ja kiinnittää niihin käyttäjiä
  • muistilappujen liikuttelu kategorioiden "To Do", "Doing" ja "Done" välillä

6. Mitä opittu, mitkä olivat suurimmat haasteet, mitä kannattaisi tutkia/opiskella lisää jne

####Mitä opittu? - Tietoturvaa (XSS ja SQL injection) - Octokitin/Github APIn käyttöä + asynkronisuus - MarkedNetin käyttöä - Gantt chart työkalun käyttöä - Chart-kontrollin käyttöä - CRUD-toimintojen toteuttaminen EntityFrameworkilla Mysqliin - Autentikoinnin ja authorisoinnin toteuttaminen - Bootstrapin käyttöä

####Haasteita Tietokannan rakenteen muotoilu oli hankala hahmottaa aluksi. Relaatiotietokantoja ei ole suunniteltu hierarkista dataa silmälläpitäen, joten jouduttiin tekemään tutkimustyötä ja opiskelua toivottujen tuloksen saavuttamiseksi tiedon tallentamisessa ja näyttämisessä.

Gantt-chart tuotti hankaluuksia useammassakin tapauksessa. Yksikään löydetty ilmaisversio Gantt-charteista ei kykene liittämään useita palkkeja samalle riville, jonka seurauksena jokainen merkintä tehdystä työstä lisää oman rivinsä ganttiin. Toivotunlaista toiminnallisuutta ei lähdetty itse kehittämään, sillä siinä olisi ollut työtunteja omaksi harjoitustyökseen. Gantt-kartan rivien suhteet menivät myös rikki, jos lapsen vanhemmalle riville oli merkitty pituus ja alkupäivämäärä. Jotta kartasta saatiin selkeän näköinen, suoritettiin parsinta kannasta haetuille tehtäville niin että vain hierarkian alimmille lapsille määritetään kesto ja alkamispäivämäärä. Näin vanhempien pituus määräytyy lastensa pituuden perusteella, jolloinka syntyy selkeä rakenne joka näyttää vanhempien pituudeksi alimpien lasten toteutumiseen kuluneen ajan.

Tietokannan datan parsinta käyttöliittymälle oli myös ongelmallista. Datan haku vaati rekursiivisia queryja kantaan jotka yhdistettin unionilla yhdeksi kokonaiseksi listaksi, joka oli itsessään jo hankala hahmottaa. Koska tietokannassa on määritelty, että yhdellä tehtävällä voi olla monta toteumaa, niin sen seurauksena syntyi yksilöintiongelma Gantt-chartille. Usealle tehtävälle jäi sama id tietokannan rakenteesta johtuen, jolloinka Ganttin kyky esittää dataa mureni. Ratkaisuna ongelmaan tehtiin tilapäis-identiteetit jokaiselle tehtävälle esitysvaiheeseen ja vältettiin näin konfliktit.

Mitä kannattaisi opiskella lisää?

Osalla kehitystiimistä ei vielä ole selvää kuinka .net websivu pystytetään. Projektia yritettiin pystyttää Linux-palvelimelle esittelyä varten, jossa ilmeni ongelmia. Dotnet-core ei asentunut oikein, eikä ole vieläkään selvillä miksi. Asiasta tullaan ottamaan selvää, sillä yhden Atlaksen kehittäjän portfoliopalvelimena toimii raspberry pi ja raspbian, joka on debianiin perustuva distro.

Mitään muuta selkeää puuttuvaa osaamisaluetta ei projektin alueista ilmennyt, jota täytyisi kehittää jotta sitä osattaisiin hyödyntää. Kuitenkin .NET:ssä on vielä paljon asioita jotka eivät ole tuttuja, kuten MVC, jotka aiotaan ottaa myöhemmin haltuun. Vastauksena kysymykseen; kaikkea kannattaa opiskella lisää.

7. Tekijät, vastuiden ja työmäärän jakautuminen

- Olli Nissinen
- Aleksi Vuorela
- Janne Möttölä

Ryhmän yhteistyö toimi hyvin ja mielestämme projekti on riittävän kattava sekä monipuolinen kiitettävään arvosanaan. Varsinkin kun huomioidaan osa-alueiden monipuolisuus ja määrä. Osa-alueet saimme jaettua hyvin ryhmän kesken.

Työtunti jakauma

Työtehtävä Olli Aleksi Janne
Tietokanta 12h 0h 5h
Gantt Chart 0h 0h 15h
Pie Chart 0h 0h 15h
Tehtäväpuu 0h 0h 12h
Projektien CRUD-toiminnot 0h 12h 3h
UI 6h 14h 8h
Tietoturva 4h 0h 0h
Kirjautuminen / Rekisteröinti 2h 0h 0h
Github API 0h 5h 0h
Suunnittelu 6h 6h 6h
Dokumentointi 5h 1h 1h
Integrointi 3h 3h 3h
Dokumentin kirjoitus työkalu 9h 4h 0h
Autentikointi / authorisointi 0h 10h 1h
Testaus 4h 0h 2h
Yht. 51h 55h 71h