3.03.2015

Tänases loengus

Aja hindamine Tööde jagamine Koodi struktureerimine

Arendusprotsess ja arhitektuur Tanel Käär

Aja hindamine Aja hindamine

Varasem kogemus (kõhutunne) Süstemaatiline Work Breakdown Structure SMART (Specific, Measured, Approved, Realistic, Time boxed) Välised sõltuvused Muud riskid Kogu protsess?

Aja hindamine Work Breakdown Structure

Planeerimine 100% reegel Analüüs Kattuvuseta alamosad Arendus Tulemid, mitte tegevused Testimine Detailsus Vigade parandamine alamtöö kestus vs iteratsiooni pikkus Juurutamine …

1 3.03.2015

Three point estimation Three point estimation

Ajahinnang (E) Kaalutud keskmisega jaotus (Double- Optimistlik (a) Triangular Distribution) Tõenäoline (m) E = (a + 4m + b) / 6 Halvim (b)

Three point estimation Three point estimation

Standardhälve SD = (b − a)/6 Näide: E +/- SD 68% a = 3, m = 5, b = 10 E +/- 1.645×SD 90% E +/- 2×SD 95% E = (3 + (4 x 5) + 10) / 6 = 5.5 E +/- 2×SD 97.7% SD = (10 – 3) / 6 = 1.67 Annab ajahinnangu soovitud 68% => 5.5 +/- 1.67 = 3.8 … 7.1 tõenäosusega 90% => 5.5 +/- 1.67*1.645 = 2.8 … 8.2 95% => 5.5 +/- 1.67*2 = 2.1 … 8.8

Three point estimation Ebatäpsed ajahinnangud

Kaalumata keskmine Uued tehnoloogiad E = (a + m + b) / 3 Vähene kogemus Liigne enesekindlus Näide: Optimism a = 3, m = 5, b = 10 Ei arvestatud testimist, silumist E = (3 + 5 + 10) / 3 = 6 Realiseerunud riskid

2 3.03.2015

Tambovi konstant Ajahinnagute tagasivaade

„Kõrgkoolide füüsika ja teiste kursuste praktikumides Mis põhjustas hinnagu erinevuse kasutatav universaalne suurus, mis tuleb mõõtetulemusega liita, lahutada, korrutada või jagada, Kuidas mõjutab edasist projektiplaani et saada vajalik tulemus„ Toomas Vabamäe Erineb meeskonnaliikmeti Muutub ajas

Tööde jagamine Tööde jagamine

Sõltuvuste järgi Gantti diagramm Prioriteetide järgi Backlog 1 task korraga Erinevate inimeste tööd ei tohi ristuda Projektijuhtimine on ka töö!

Tööhaldur Töövoog

Vahendab suhtlust arendusmeeskonna Arendusettepanek liikmete vahel ja ka kliendiga Analüüs Tekitab töövoo planeerimisest Arendus järelkontrollini Ülevaatus Võimaldab töid ja ressursse planeerida Testimine Annab ülevaate progressist Järelkontroll (ajahinnangud) Integreeritud koodihaldusvahenditega

3 3.03.2015

Töövoo näide

Atlassian workflow

4 3.03.2015

Vahendid Vahendid

Apache bloodhound Redmine Atlassian Jira Microsoft TFS Teamwork Arenduskeskkonnad (GitHub, GoogleCode)

Koodi struktureerimine Harundamine (branching)

Eesmärgid Harude strateegiad

Stabiilsete ja ebastabiilsete Mida suurem ja ajamahukam projekt, muudatuste isoleerimine seda keerulisem strateegia Alammeeskondade isoleerimine Põhiharu Versioonide paralleelne arendus Tarneharud Vanade versioonide toetamine Hooldusharu … Funktsionaalsuse haru Arendustsüklite harud

5 3.03.2015

Arendusprotsessi lepped Koodi struktureerimine

Koodi struktuur, standardid, Eesmärgid formattimine Hallatav Tehtu kommenteerimine (, kood, Loetav issue tracker) Arendustööd ei sega üksteist Tööhaldurisse kirja, mida tuleb testida Atomaarselt testitav Changesetide tagimine, Taaskasutatav kommenteerimine

Koodi struktureerimine praktikas Koodi struktureerimine … echo '

New Users

'; Eraldatud vertikaalsed kihid $sql = "SELECT * FROM users ORDER BY date_registered"; $result = mysql_query($sql) or die(mysql_error()); Andmed Teenused echo ''; while($row = mysql_fetch_assoc($result)){ Esitlus echo ''; Kujundus } … echo '
' . $row['username'] . '' . $row['date_registered'] . '
'; Iga kiht peab olema eraldi arendatav function random_custom_function($var){ $var = $var + 1; Liidesed paika! return '' . $var . ''; } …

Koodi struktureerimine OO parimad praktikad

MVC, MVP, MVVM, MVW - erista Klassid ja meetodid on lühikesed mudel, vaade ja loogika Iga klass ja meetod tegeleb AINULT Defineeri liidesed suhtluseks oma ülesandega. Klasside ja meetodite nimed dokumenteerivad koodi

6 3.03.2015

Esitluskihis

HTML, JS, CSS eraldatud JS järgib OO reegleid! Kasuta JS nimeruume, defineeri moodulid, liidesed Globaalsete muutujate asemel Closured JSLint / JSHint staatiline analüüs

Koodi ülevaatused Vahendid Changesetid githubis, viewVC-s Kokkulepete järgimine , Apache v2 Koodi kvaliteedi tagamine Atlassian crucible, tasuline Kogemuste ja info jagamine Upsource (10 user free plan) Pre-commit / post-commit Gerrit (), Apache v2 Reviewboard, MIT Kalithea, GPL v3 Rietveld, Apache v2

Review demo

7