DevHelpVR

From ICO wiki
Revision as of 17:49, 25 May 2017 by Mjaager (talk | contribs)
Jump to navigationJump to search

Meeskond

Martin Jääger
Kristo Leemets

Idee

Idee põhineb varasemalt C# aines loodud DevHelp rakendusel. Rakendus aitab arendajatel oma tööd paremini planeerida. Seekord on eesmärgiks aga saada see tööle võrgus kasutatavana.

Projekt

Projekti analüüs

16.04.2017

Mida rakendus endas sisaldab?

Rakendus sisaldab erinevaid funktsionaalsusi, mis võimaldavad tarkvaraarendajatel oma tööd paremini organiseerida. Oluline on rakenduse loomisel kasutada ka sobivaid arendusmustreid. 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. 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. Rakendus peab toimima läbi keskse veebiteenuse, mis teeb võimalikuks rakenduse kasutamise erinevate kasutajate jaoks üle võrgu.


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 läbi kasutajalugude ja iteratsioonide organiseerimise. Projekti kogukestvust kirjeldavad story pointid.


Mida tavakasutaja sellega teha saaks?

DevHelp rakendust saab kasutada erinevate arendustööde organiseerimisel, see annab ülevaate meeskonna arendusprojektidest ja sellega kaasnevatest tegevustest. Rakenduses saab lisada user storysid ja iteratsioone ning neid filtreerida. Tavakasutajal on võimalik programmi sisse logida 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. 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.


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
  • User storyde iteratsioonidesse kategoriseerimise funktsionaalsus
  • Rakenduse toimimine üle võrgu
  • Iteratsioonide filtreerimine vastavalt projektile


Millised oleksid nice to have funktsionaalsused?

  • Oluline on välja tuua ka, et user storyd jaotatakse rakenduses kuvatavale tahvlile- seeläbi on vajalikel tegevustel lihtne silma peal hoida. Projektide burn down charti vaatamise võimalus.
  • 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).


DevHelp rakenduse andmebaasi skeem

XML

XML

Projektid koos iteratsioonide ja kasutajalugudega.

<?xml version="1.0" encoding="utf-8" ?>
<projects>
  <project id="1">
    <name>
      <![CDATA[Koduleht firmale Test OÜ]]>
    </name>
    <description>
      <![CDATA[Projekti kirjeldus]]>
    </description>
    <iterations>
      <iteration id ="1" start_date="11.03.17" end_date="18.03.17">
        <name>
          <![CDATA[Iteratsioon 1]]>
        </name>
        <description>
          <![CDATA[Iteratsiooni 1 lisatakse kõik kasutajalood, mis on keerulisemad ning mis nõuavad rohkem aega]]>
        </description>
        <userstories>
          <userstory id="1" story_points="2" story_status="1">
            <name>
              <![CDATA[Sisselogimisaken]]>
            </name>
            <description>
              <![CDATA[Sisselogimisakna tegemine]]>
            </description>

          </userstory>
          <userstory id="2" story_points="1" story_status="0">
            <name>
              <![CDATA[Formaadid]]>
            </name>
            <description>
              <![CDATA[Formaatide loomine]]>
            </description>
          </userstory>
        </userstories>
      </iteration>
      <iteration id ="2" start_date="20.03.17" end_date="27.03.17">
        <name>
          <![CDATA[Iteratsioon 2]]>
        </name>
        <description>
          <![CDATA[Iteratsioonis 2 tegeletakse peamiselt UI-ga]]>
        </description>
        <userstories>
          <userstory id="3" story_points="4" story_status="1">
            <name>
              <![CDATA[Kasutajamenüü]]>
            </name>
            <description>
              <![CDATA[Kasutajamenüü loomine]]>
            </description>
          </userstory>
          <userstory id="4" story_points="6" story_status="0">
            <name>
              <![CDATA[Menüü]]>
            </name>
            <description>
              <![CDATA[Menüü UI tegemine]]>
            </description>
          </userstory>
        </userstories>
      </iteration>
    </iterations>
  </project>  
  <project id="2">
    <name>
      <![CDATA[Laohaldusprogramm Ladu OÜ-le]]>
    </name>
    <description>
      <![CDATA[Projekti 2 kirjeldus]]>
    </description>
    <iterations>
      <iteration id ="3" start_date="11.06.17" end_date="18.06.17">
        <name>
          <![CDATA[Iteratsioon 1]]>
        </name>
        <description>
          <![CDATA[Laohaldusprogrammi esmase versiooni loomine]]>
        </description>
        <userstories>
          <userstory id="5" story_points="3" story_status="1">
            <name>
              <![CDATA[Kaupade sisestamine]]>
            </name>
            <description>
              <![CDATA[Kaupade sisestamine lattu]]>
            </description>
          </userstory>
          <userstory id="6" story_points="2" story_status="0">
            <name>
              <![CDATA[Valikumenüü]]>
            </name>
            <description>
              <![CDATA[Valikumenüü riba]]>
            </description>
          </userstory>
        </userstories>
      </iteration>
      <iteration id ="4" start_date="20.05.17" end_date="27.05.17">
        <name>
          <![CDATA[Iteratsioon 2]]>
        </name>
        <description>
          <![CDATA[User Interface korrastamine]]>
        </description>
        <userstories>
          <userstory id="7" story_points="3" story_status="1">
            <name>
              <![CDATA[Kauba kustutamine]]>
            </name>
            <description>
              <![CDATA[Kauba kustutamise funktsioon]]>
            </description>            
          </userstory>
          <userstory id="8" story_points="5" story_status="0">
            <name>
              <![CDATA[UI konfigureerimise funktsioon]]>
            </name>
            <description>
              <![CDATA[UI konfigureerimise funktsiooni lisamine]]>
            </description>
          </userstory>
        </userstories>
      </iteration>
    </iterations>
  </project>
</projects>

XML schema (XSD)

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="projects">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" name="project">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="name" type="xs:string" />
              <xs:element name="description" type="xs:string" />
              <xs:element name="iterations">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element maxOccurs="unbounded" name="iteration">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="name" type="xs:string" />
                          <xs:element name="description" type="xs:string" />
                          <xs:element name="userstories">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element maxOccurs="unbounded" name="userstory">
                                  <xs:complexType>
                                    <xs:sequence>
                                      <xs:element name="name" type="xs:string" />
                                      <xs:element name="description" type="xs:string" />
                                    </xs:sequence>
                                    <xs:attribute name="id" type="xs:integer" use="required" />
                                    <xs:attribute name="story_points" type="xs:integer" use="required" />
                                    <xs:attribute name="story_status" type="xs:integer" use="required" />
                                  </xs:complexType>
                                </xs:element>
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                        <xs:attribute name="id" type="xs:integer" use="required" />
                        <xs:attribute name="start_date" type="xs:string" use="required" />
                        <xs:attribute name="end_date" type="xs:string" use="required" />
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="id" type="xs:integer" use="required" />
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

XSLT 1

XSLT => HTML

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
    <xsl:output method="html" indent="yes"/>

    <xsl:template match="/">
      <html>
        <head>
          <title>Projektid</title>
        </head>
        <body>
          <h1>Käesolevad projektid</h1>

          <xsl:for-each select="/projects/project">
            <h2>
              <xsl:value-of select="name"/>
            </h2>
            <ul>
              <xsl:for-each select ="iterations/iteration">
                <li>
                  <xsl:value-of select="name"/>, alates
                  <xsl:value-of select="@start_date"/> kuni <xsl:value-of select="@end_date"/>
                    <ul>
                      <xsl:for-each select ="userstories/userstory">
                        <li>
                          <xsl:value-of select="name"/>
                           <ul>
                             <li>
                               Kirjeldus:
                               <xsl:value-of select="description"/>
                             </li>
                             <li>
                               ID:
                               <xsl:value-of select="@id"/>
                             </li>
                             <li>
                               Story pointid:
                               <xsl:value-of select="@story_points"/>
                             </li>
                             <li>
                               Staatus:
                               <xsl:value-of select="@story_status"/>
                             </li>
                           </ul>
                        </li>  
                      </xsl:for-each>                                       
                    </ul>
                </li>
              </xsl:for-each>
            </ul>
          </xsl:for-each>

        </body>
      </html>
    </xsl:template>
</xsl:stylesheet>

XSLT 2

XSLT => XML, kuvab kõik kasutajalood, mis on järjestatud kahanevas järjekorras kasutajaloo punktide järgi. Samuti kuvatakse kasutajalugude koguhulk ja kasutajapunktide kogusumma.

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
    <xsl:output method="xml" indent="yes"/>
    <xsl:template match="/">      
      <userstories>
        <total_userstories>
          <xsl:value-of select="count(/projects/project/iterations/iteration/userstories/userstory)"/>
        </total_userstories>
        <sum_userpoints>         
          <xsl:value-of select="sum(/projects/project/iterations/iteration/userstories/userstory/@story_points)"/>         
        </sum_userpoints>
        <xsl:for-each select="/projects/project/iterations/iteration/userstories/userstory">
          <xsl:sort select="@story_points" order="ascending"/>
          <userstory id ="{@id}" story_points ="{@story_points}" story_status ="{@story_status}">
            <total></total>
            <xsl:value-of select="name"/> -  <xsl:value-of select="description"/>
          </userstory>          
        </xsl:for-each>       
      </userstories>     
    </xsl:template>
</xsl:stylesheet>

Retsensioonid

XML failide retsensioon tiimile Ticketer, 26.03.2017: Talk:Ticketer


22.04.2017 - 25.05 Lõpptoode

Lõpptoote saab leida siit: Lõpptoode

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.