Arendusprotsess ja arhitektuur Tanel Kr Tnases loengus Aja

  • Slides: 41
Download presentation
Arendusprotsess ja arhitektuur Tanel Käär

Arendusprotsess ja arhitektuur Tanel Käär

Tänases loengus Aja hindamine Tööde jagamine Koodi struktureerimine

Tänases loengus Aja hindamine Tööde jagamine Koodi struktureerimine

Aja hindamine

Aja hindamine

Aja hindamine Varasem kogemus (kõhutunne) Süstemaatiline Work Breakdown Structure SMART (Specific, Measured, Approved, Realistic,

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 …

Aja hindamine Planeerimine Analüüs Arendus Testimine Vigade parandamine Juurutamine …

Work Breakdown Structure 100% reegel Kattuvuseta alamosad Tulemid, mitte tegevused Detailsus alamtöö kestus vs

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 Ajahinnang (E) Optimistlik (a) Tõenäoline (m) Halvim (b)

Three point estimation Kaalutud keskmisega jaotus (Double. Triangular Distribution) E = (a + 4

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

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

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

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

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

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

Ajahinnagute tagasivaade Mis põhjustas hinnagu erinevuse Kuidas mõjutab edasist projektiplaani

Tööde jagamine

Tööde jagamine

Tööde jagamine Sõltuvuste järgi Gantti diagramm Prioriteetide järgi Backlog 1 task korraga Erinevate inimeste

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öö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öövoog Arendusettepanek Analüüs Arendus Ülevaatus Testimine Järelkontroll

Töövoo näide Atlassian Jira workflow

Töövoo näide Atlassian Jira workflow

Vahendid

Vahendid

Vahendid Apache bloodhound Bugzilla Redmine Atlassian Jira Microsoft TFS Teamwork Arenduskeskkonnad (Git. Hub, Google.

Vahendid Apache bloodhound Bugzilla Redmine Atlassian Jira Microsoft TFS Teamwork Arenduskeskkonnad (Git. Hub, Google. Code)

Koodi struktureerimine

Koodi struktureerimine

Harundamine (branching)

Harundamine (branching)

Eesmärgid Stabiilsete ja ebastabiilsete muudatuste isoleerimine Alammeeskondade isoleerimine Versioonide paralleelne arendus Vanade versioonide toetamine

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

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,

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 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

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

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

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

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,

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

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

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

Review demo