DevHelpVR

From ICO wiki
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).

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