Tarkvara projekt seminar 10 19. aprill 2007 Ivo Mägi
Kava Administratiivset V iteratsiooni tulemite tutvustus Eriseminar: Miks mõned projektid õnnestuvad ja mõned ebaõnnestuvad? 26.04.2007 Ivo Mägi, Webmedia AS 2
Hindamine rutiinivabaks! Iteratsiooni plaanist: Neljandas iteratsioonis peab valmima rakendus mida julgeb näidata ka lõppkasutajale. Tööle peavad hakkama vormide validatsioonid, otsingud, filtreerimised ja logardid. Defineeritakse ja realiseeritakse arvete genereerimine ja väljatrükk. 26.04.2007 Ivo Mägi, Webmedia AS 3
Hindamine rutiinivabaks! Mida nimetatakse globaliseerumiseks: global $xxxx_xxxxxxxx_xxxxxxxx; global $xxxx_xxxxxxxx_xxxxxxxxx; global $xxxx_xxxxxxxx_xxxxxxx; global $xxxx_xxxxxxxx_xxxxxxxxx; global $xxxx_xxxxxxxx_xxxxx; global $xxxx_xxxxxxxx_xxxxxxxx; global $xxxx_xxxxxxxx_xxxxxxxx; global $xxxx_xxxxxxxx_xxxxxxxx_xxxxxx; global $xxxx_xxxxxxxx_xxxxxx; global $xxxx_xxxxxxxx_xxxx; global $xxxx_xxxxxxxx_xxxxxx; global $xxxx_xxxxxxxx_xxx; global $xxxx_xxxxxxxx_xxxxx; global $xxxx_xxxxxxxx_xxxx; global $xxxx_xxxxxxxx_xxxxxxx_xxxx_xxxxxxx; global $xxxx_xxxxxxxx_xxxxxxxxx_xxxxxx_xxxxxxx; global $xxxx_xxxxxxxx_xxxxxxx_xxxxxx_xxxxxxx; global $xxxx_xxxxxxxx_xxxxxxxxx_xxxxxxx; global $xxxx_xxxxxxxx_xxxxxx_xxxxxxx; global $xxxx_xxxxxxxx_xxxxx_xxxxxxx; global $xxxx_xxxxxxxx_xxxxx_xxxxxx; global $xxxx_xxxxxxxx_xxxxxxxx_xxxxxx_xxxxxxx; global $xxxx_xxxxxxxx_xxxxxxxx_xxxxxx; global $xxxx_xxxxxxxx_xxxxxxxx_xxxxxx_xxxxxxx; global $xxxx_xxxxxxxx_xxxxxxxx_xxxxxx_xxxxxxx; 26.04.2007 Ivo Mägi, Webmedia AS 4
Hindamine rutiinivabaks Tagastame! 1. return (MyClass) null; 2. return (Object) myobject; 3. return (x > 0)? true : false; 4. If (x) return 1; else if (Y) return 2; else if (Z) return 3; else if (W) return 4; 26.04.2007 Ivo Mägi, Webmedia AS 5
Hindamine rutiinivabaks! Nõuete dokument ja EKI Ilma igasuguse irooniata on mul hea meel et on lõpuks aine kontekstis leitud teema mis elavat diskussiooni tekitab. 26.04.2007 Ivo Mägi, Webmedia AS 6
Risthindamisest Kuna AIESEC loobus, siis neid risthinnanud rühmadel on kergem elu, saate oma punktid ainult ühe rühma hindamisega kätte Juhul kui hinnatav rühm hilines tulemi esitamisega, siis pääsete selle rühma risthindamisest. Seega - ärge hilinege, teete oma konkurentidele kingituse! Risthindamise käigus tuleb kindlasti süsteem installeerida 26.04.2007 Ivo Mägi, Webmedia AS 7
Iteratsioonide planeerimine Andke oma projektijuhtidele vastu pead Kui raske saab olla panna kirja kes, mida ja millal iteratsiooni käigus teeb? Kõigil rühmadel puudu toodangusse juurutamiseks tehtavate tegevuste planeerimine 26.04.2007 Ivo Mägi, Webmedia AS 8
Iteratsioonide kokkuvõtted Iteratsiooni kokkuvõttest peab näha olema mida projekti juures iteratsiooni käigus tehti, nn changelog Iteratsiooni kokkuvõtetes ei ole mahte hinnatud tegevuspõhiselt 26.04.2007 Ivo Mägi, Webmedia AS 9
Tagasiside tulemitele Risthindamise ja tagasiside mõte on anda rühmadele võimalus oma tööd paremini teha See on rühmale väga hea viis saada konstruktiivset kriitikat Miks te seda ei kasuta? 26.04.2007 Ivo Mägi, Webmedia AS 10
Analüüsi teema kokkuvõte Antud aine raames nõutu oli tegelikult suhteliselt pealiskaudne Tegelikult sisaldab spetsifikatsioon: Prototüübi pilti Reegleid andmete valideerimiseks Võimalike tegevuste kirjeldust Andmebaasivälju, kust loetakse ja kuhu salvestatakse Lisaks: õiguste kontroll, kirjete arvu hinnangud jne 26.04.2007 Rein Raudjärv, Webmedia AS 11
Spetsifikatsioon Spekke kirjutatakse selleks, et ei peaks sama asja korduvalt seletama: Arendajale Testijale Kliendi esindajale Juhul kui keegi neist vahetub Päris projektis ei säästa miski teid sisulisest tööst ei metoodika (XP) ega vahendid 26.04.2007 Rein Raudjärv, Webmedia AS 12
Süsteemitestid Viimases iteratsioonis peavad olema ka mittefunktsionaalsed nõuded testitud Jälle sama jutt vahend ei tähenda, et sisulist tööd ei pea tegema Näiteks see, et te kirjeldate testid Changelogic us ei tähenda, et tegelikult testima ei peaks PS: testjuhtumeid CL-is kirjeldama ei pea 26.04.2007 Rein Raudjärv, Webmedia AS 13
Testide kokkuvõte Süsteemitestide dokument näitab väga selgelt kaugel see süsteem on Mitu kasutussituatsiooni on tehtud, mitu testitud jne Kokkuvõttes on näha süsteemi arengut Testide kokkuvõte vt rühm LAIS 26.04.2007 Rein Raudjärv, Webmedia AS 14
Ehitusskriptid PHP projektide puhul nõuti ehitusskriptidelt minimaalselt funktsionaalsust. Seda ei ole ju raske tööle panna? Ehitusskriptid enamikel Java rühmadel töötasid Overengineering Copy-paste liigsete targetitega Sõltuvuste väärkasutamine Snaphot ei tohi sisaldada tühje kaustu ega faile.classpath ja.project Veenduge et ehitusskript töötab suvalises masinas 26.04.2007 Ivo Mägi, Webmedia AS 15
Kood: üldine Kõige olulisem koodi hindamise kriteerium on väga lihtne: Kood peab töötama 26.04.2007 Ivo Mägi, Webmedia AS 16
Kood: üldine Kuigi selles iteratsioonis installatsioonijuhendit ei hinnatud, siis koodi ometigi hinnati Installatsioonijuhendid ei arvesta inkrementaalse paigaldusega Kui teie release järgmises iteratsioonis ei tööta siis te saate 340 punktist täpselt null punkti. Pooltel rühmadel release kas üldse ei tööta või töötab pärast mõningast ennustamist. Testige oma installatsioon läbi! Miks ma pean ennustama mis järjekorras baasiskripte sisse lasta? Kuskohast peaksin ma ära arvama administraatori parooli? Jne... 26.04.2007 Ivo Mägi, Webmedia AS 17
Kood: üldine Palju sarnast/korduvat koodi, mis keskendub madalataseme operatsioonidele ja sõltub täielikult HTTP päringutest või JDBC operatsioonidest Kood räägib ainult kuidas teha ja ei peegelda seda mida tehakse 26.04.2007 Rein Raudjärv, Webmedia AS 18
Kood: üldine Raskesti loetav Puuduvad kommentaarid Pikad veaohtlikud meetodid Ülearused sõltuvused Kood ei ole jaotatud loogilisteks taaskasutatavateks osadeks 26.04.2007 Rein Raudjärv, Webmedia AS 19
Kood: kommentaarid... puuduvad peaaegu täielikult Kood on raskesti loetav ja hallatav Teadmised on ainult arendaja peas Välja kommenteeritud kood! 26.04.2007 Rein Raudjärv, Webmedia AS 20
Kood: stiil Läbisegi eesti ja inglise keel Tühikute pealt ei tasu kokku hoida! Vigane treppimine 26.04.2007 Rein Raudjärv, Webmedia AS 21
Kood: struktuur Paketistruktuuris puudub äriloogika ja presentatsioonikihi eristus JSP-d ei ole jaotatud alamkaustadeks 26.04.2007 Rein Raudjärv, Webmedia AS 22
Kood: Java keel Staatiline vs. mittestaatiline Extendimine staatilise meetodi lühemaks kasutamiseks Kui klassi asemel saab kasutada liidest, siis kasutage! Serialiseeruvatel klassidel puudub serialversionuid Kasutage Generirc-uid! 26.04.2007 Rein Raudjärv, Webmedia AS 23
Kood: Ründeohtlik SQL injection URL-ist otsitava objekti ID lugemine 26.04.2007 Rein Raudjärv, Webmedia AS 24
Kood: Hooletus Kasutamata kood 26.04.2007 Rein Raudjärv, Webmedia AS 25
Kood: Raskesti muudetav Teated kirjutatakse otse koodi 26.04.2007 Rein Raudjärv, Webmedia AS 26
Kood: PHP Kuna kõik kasutajatelt tulev sisend on vaikimisi ebaturvaline, tuleks sellega ka vastavalt ümber käia. $_POST[$post_key] = htmlspecialchars($post_value) - klassi/funktsiooni alguses sellise asja tegemine on mõttetu, kuna võib muuta töötlemisele minevate andmete väärtuseid. Varjestamist tuleb teha alles andmeid brauseris kuvama hakates. Ning kui koodis üritatakse dünaamiliselt midagi includeda, tuleks enne kontrollida, kas antud sisend on valiidne. Milleks üldse kasutada objekt orienteeritud koodi, kui alamklassid defineeritakse globaalse muutujaga ülemklassi objekt. Alamklass saab ülemklassi meetoditele ilusti ligi. 26.04.2007 Ivo Mägi, Webmedia AS 27
Kood: PHP Ei ole otstarbekas klassi igas meetodis luua mingist klassist objekt. Selle asemel tuleks kasutada objekti klassi atribuudina. Tuleb kasutada logimisraamistikku, mis pakuks võimalust logitasemeid sisse-välja lülitada Kuidas saadakse teada toodangus tekkivatest vigadest? Vigu peab logima 26.04.2007 Ivo Mägi, Webmedia AS 28
Punktiseis Tulemused Punktid 450,00 400,00 350,00 300,00 250,00 200,00 150,00 100,00 50,00 0,00 Series1 Rühmad 26.04.2007 Ivo Mägi, Webmedia AS 29
Hindamisest Parimal rühmal hetkel 81% maksimaalsetest võimalikest punktidest Nõrgim tulemus hetkel 45% maksimaalsetest võimalikest punktidest Pingutage, see on viimane iteratsioon. Iga projekti esimene release ongi kõige raskem... 26.04.2007 Ivo Mägi, Webmedia AS 30