Arendusprotsess ja arhitektuur Tanel Kr Tnases loengus Aja
- Slides: 41
Arendusprotsess ja arhitektuur Tanel Käär
Tänases loengus Aja hindamine Tööde jagamine Koodi struktureerimine
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 Planeerimine Analüüs Arendus Testimine Vigade parandamine Juurutamine …
Work Breakdown Structure 100% reegel Kattuvuseta alamosad Tulemid, mitte tegevused Detailsus alamtöö kestus vs iteratsiooni pikkus
Three point estimation Ajahinnang (E) Optimistlik (a) Tõenäoline (m) Halvim (b)
Three point estimation Kaalutud keskmisega jaotus (Double. Triangular Distribution) E = (a + 4 m + b) / 6
Three point estimation Standardhälve SD = (b − a)/6 E +/- SD 68% E +/- 1. 645×SD 90% E +/- 2×SD 95% E +/- 2×SD 97. 7% Annab ajahinnangu soovitud tõenäosusega
Three point estimation Näide: a = 3, m = 5, b = 10 E = (3 + (4 x 5) + 10) / 6 = 5. 5 SD = (10 – 3) / 6 = 1. 67 68% => 5. 5 +/- 1. 67 = 3. 8 … 7. 1 90% => 5. 5 +/- 1. 67*1. 645 = 2. 8 … 8. 2 95% => 5. 5 +/- 1. 67*2 = 2. 1 … 8. 8
Three point estimation Kaalumata keskmine E = (a + m + b) / 3 Näide: a = 3, m = 5, b = 10 E = (3 + 5 + 10) / 3 = 6
Ebatäpsed ajahinnangud Uued tehnoloogiad Vähene kogemus Liigne enesekindlus Optimism Ei arvestatud testimist, silumist Realiseerunud riskid
Tambovi konstant „Kõrgkoolide füüsika ja teiste kursuste praktikumides kasutatav universaalne suurus, mis tuleb mõõtetulemusega liita, lahutada, korrutada või jagada, et saada vajalik tulemus„ Toomas Vabamäe Erineb meeskonnaliikmeti Muutub ajas
Ajahinnagute tagasivaade Mis põhjustas hinnagu erinevuse Kuidas mõjutab edasist projektiplaani
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 Vahendab suhtlust arendusmeeskonna liikmete vahel ja ka kliendiga Tekitab töövoo planeerimisest järelkontrollini Võimaldab töid ja ressursse planeerida Annab ülevaate progressist (ajahinnangud) Integreeritud koodihaldusvahenditega
Töövoog Arendusettepanek Analüüs Arendus Ülevaatus Testimine Järelkontroll
Töövoo näide Atlassian Jira workflow
Vahendid
Vahendid Apache bloodhound Bugzilla Redmine Atlassian Jira Microsoft TFS Teamwork Arenduskeskkonnad (Git. Hub, Google. Code)
Koodi struktureerimine
Harundamine (branching)
Eesmärgid Stabiilsete ja ebastabiilsete muudatuste isoleerimine Alammeeskondade isoleerimine Versioonide paralleelne arendus Vanade versioonide toetamine …
Harude strateegiad Mida suurem ja ajamahukam projekt, seda keerulisem strateegia Põhiharu Tarneharud Hooldusharu Funktsionaalsuse haru Arendustsüklite harud
Arendusprotsessi lepped Koodi struktuur, standardid, formattimine Tehtu kommenteerimine (wiki, kood, issue tracker) Tööhaldurisse kirja, mida tuleb testida Changesetide tagimine, kommenteerimine
Koodi struktureerimine Eesmärgid Hallatav Loetav Arendustööd ei sega üksteist Atomaarselt testitav Taaskasutatav
Koodi struktureerimine praktikas … echo '<h 1>New Users</h 1>'; $sql = "SELECT * FROM users ORDER BY date_registered"; $result = mysql_query($sql) or die(mysql_error()); echo '<table class="my-table-class">'; while($row = mysql_fetch_assoc($result)){ echo '<tr><td>'. $row['username']. '</td><td>'. $row['date_registered']. '</td></tr>'; } echo '</table>'; function random_custom_function($var){ $var = $var + 1; return '<span style="font-weight: bold; ">'. $var. '</span>'; } …
Koodi struktureerimine Eraldatud vertikaalsed kihid Andmed Teenused Esitlus Kujundus … Iga kiht peab olema eraldi arendatav Liidesed paika!
Koodi struktureerimine MVC, MVP, MVVM, MVW - erista mudel, vaade ja loogika Defineeri liidesed suhtluseks
OO parimad praktikad Klassid ja meetodid on lühikesed Iga klass ja meetod tegeleb AINULT oma ülesandega. Klasside ja meetodite nimed dokumenteerivad koodi
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 Kokkulepete järgimine Koodi kvaliteedi tagamine Kogemuste ja info jagamine Pre-commit / post-commit
Vahendid Changesetid githubis, view. VC-s Phabricator, Apache v 2 Atlassian crucible, tasuline Upsource (10 user free plan) Gerrit (Git), Apache v 2 Reviewboard, MIT Kalithea, GPL v 3 Rietveld, Apache v 2
Review demo
- Tanel kerikmäe
- Tanel linnus
- Tanel linnus
- Tanel tammet
- Tanel oppi
- Tordirõngas
- Funge x
- Tanel oppi
- Beetakiirgus
- Nõva rand veetemperatuur
- Delfi regio
- Tanel keres
- Sapveeb.ee
- Tanel kerikmäe
- Www.aja-online.org
- Genre film apa aja
- Relevansi tembang gambuh
- Aja registrars
- Aja.com
- Tata letak usaha
- Aja teisendamine
- Wangsalan rangkep
- Aja cortizo