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 Jira workflow
4 3.03.2015
Vahendid Vahendid
Apache bloodhound Bugzilla 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 (wiki, 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 '' . $row['username'] . ' | ' . $row['date_registered'] . ' |
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 Phabricator, Apache v2 Koodi kvaliteedi tagamine Atlassian crucible, tasuline Kogemuste ja info jagamine Upsource (10 user free plan) Pre-commit / post-commit Gerrit (Git), Apache v2 Reviewboard, MIT Kalithea, GPL v3 Rietveld, Apache v2
Review demo
7