Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
Tarkvara projekt – seminar III
28.veebruar 2008Ivo Mägi
Seminari kava
� Kliendisuhtlusest� Infrastruktuur� I iteratsiooni tulemite nõuded
Projektiplaan
28. veebruar 2008 Ivo Mägi, Webmedia AS 2
� Projektiplaan� Riskide maandamise plaan� Ainemudel� Nõuete dokument� Testide plaan� Süsteemi arhitektuur� Esimese iteratsiooni kokkuvõte� Teise iteratsiooni plaan
Kliendisuhtlus
� Suhtluskanali tähtsus� Näost näkku� Telefon/Skype� Instant messenger
28. veebruar 2008 Ivo Mägi, Webmedia AS 3
� Instant messenger� E-mail
� Nõuete kogumine� Tagasiside hankimine
Kliendisuhtlus: võimalikud probleemid
� Mahuhinnang� Klient peab aru saama et töömaht peab
olema vahemikus 480-720h
� Klient peab olema valmis osalema
28. veebruar 2008 Ivo Mägi, Webmedia AS 4
� Klient peab olema valmis osalema nõuete täpsustamisel ning tagasiside andmisel
� Konfliktide tekkimisel palun otsekohe aine korraldajatele märku anda
Infrastruktuur
� Erinevad keskkonnad. Miks?� Arenduskeskkond� Testkeskkond
� Toodangukeskkond
28. veebruar 2008 Ivo Mägi, Webmedia AS 5
� Toodangukeskkond
� Propageerimine
Operatsioonisüsteem
� CentOS Linux 5.0� MS Windows XP� Eksootilisemaid variante (Solaris, HP-
UX, …) prooviksime elimineerida
28. veebruar 2008 Ivo Mägi, Webmedia AS 6
UX, …) prooviksime elimineerida
ats.cs.ut.ee
� Autentimine teie ülikooli kasutajatunnusega
� Grupikuuluvus on määratud grupi koosseisu järgi. Grupi nimi on võetud koosseisu järgi. Grupi nimi on võetud wikist
� Grupi kodukataloog (tulemite publitseerimiseks)� /projects/home/tvp2008/<group_name>
28. veebruar 2008 Ivo Mägi, Webmedia AS 7
Andmebaas
� MySQL� MS SQL Server� Postgres
28. veebruar 2008 Ivo Mägi, Webmedia AS 8
� Oracle
MySQL� Igal rühmal on olemas MySQL baas:
� server: mysql.cs.ut.ee� database: tvp2008_<project_name>� username: tvp2008_<project_name>� password: vaata � password: vaata
/projects/home/tvp2008/<project_name>/mysqlpasswd
� phpMyAdmin on kasutatav URLilt http://ats.cs.ut.ee/utils/phpmyadmin/
28. veebruar 2008 Ivo Mägi, Webmedia AS 9
PostgreSQL
� Igal rühmal on olemas Postgresibaas:� server: ats.cs.ut.ee� database: tvp2008_<project_name>� database: tvp2008_<project_name>� username: tvp2008_<project_name>� password: look at
/projects/home/tvp2008/<project_name>/postgresqlpasswd
28. veebruar 2008 Ivo Mägi, Webmedia AS 10
Rakendusserver
� Apache Tomcat� MS IIS
28. veebruar 2008 Ivo Mägi, Webmedia AS 11
Tomcat
� Igal rühmal on kasutada üks Tomcatiinstants� server: ats.cs.ut.ee� Väline proxy (via AJP) to URL: � Väline proxy (via AJP) to URL:
http://ats.cs.ut.ee/tvp2008/<project_name>� instance path:
/usr/share/tomcat5/instances/tvp2008_<project_name>
� start-stop script: /usr/share/tomcat5/instances/tvp2008_<project_name>/catalina.sh
28. veebruar 2008 Ivo Mägi, Webmedia AS 12
Veebiserver
� Apache HTTP Server� MS IIS
28. veebruar 2008 Ivo Mägi, Webmedia AS 13
Virtuaalmasinad
� JVM for Java� CLR for C#
28. veebruar 2008 Ivo Mägi, Webmedia AS 14
Tugitarkvara
� Versioonihaldus: SVN� Ehitamine: ANT for Java projects� Knowledge management: Wiki
28. veebruar 2008 Ivo Mägi, Webmedia AS 15
� Taskihaldus: Changelogic� Juhtumeid kus ülaltoodud komplekt ei
sobi käsitleme case-by-case
SVN
� Igal rühmal on repositooriumsvn://ats.cs.ut.ee/courses/tvp2008 /<project_name>
� Kasutajakontod on samad mis ülikooli � Kasutajakontod on samad mis ülikooli serverite omad
� Paroolid leiate /projects/home/tvp2008/<project_name>/svnpasswd
28. veebruar 2008 Ivo Mägi, Webmedia AS 16
Changelogic
� http://ats.cs.ut.ee/changelogic� Kasutajanimed ja paroolid on samad
mis SVN puhul� Projektid on loomisel� Projektid on loomisel
28. veebruar 2008 Ivo Mägi, Webmedia AS 17
Ehitusskriptid: kohustuslikud targetid
� snapshot: kogu lähtekood ja dokumentatsioon pakituna
� release: käivitatav rakendus, installatsioonijuhend ning muu
28. veebruar 2008 Ivo Mägi, Webmedia AS 18
installatsioonijuhend ning muu installatsiooniks vajalik
� build: arenduses ehitamine� test: automaattestide käivitamine� clean: puhastus
Wiki� http://courses.cs.ut.ee/2008/tvp/Teams/Teams� Igal projektil peab olema oma Wiki leht. Seal peab sisalduma
vähemalt järgnev:� Info kliendi kohta� Info projekti kohta� Projekti liikmete nimekiri ja liikmete rollid� Projektijuhi kontaktandmed
28. veebruar 2008 Ivo Mägi, Webmedia AS 19
� Projektijuhi kontaktandmed� Kõikide iteratsioonide tulemid (snapshot+release)� Viited
� Koodi dokumentatsioon (javadoc, …)� ViewVC� Changelogic
� Kõik valminud dokumendid� Näide eelmisest aastast
Struktuur: nõuded
28. veebruar 2008 Ivo Mägi, Webmedia AS 20
Tulemite esitamine� Märgendada versioonihalduses uus haru� Võtta vastav versioon versioonihaldusest� Java projektides:
� ant snapshot� ant release
� Kopeeride release ja snapshot
28. veebruar 2008 Ivo Mägi, Webmedia AS 21
� Kopeeride release ja snapshot /projects/home/tvp2008/<groupname>/public_html kataloogi ning viidata neile projekti Wikist
� Saata kursuse üldlisti kiri kus sisaldub� SHA1 räsi snapshotist. Miks?� SHA1 räsi releasest. Miks?� Viit grupi wikile kus on lingitud valminud tulemid ning
viited snapshotile ja releasele.� Kirja subjekt peab olema [ryhm] iteratsioon <iter.
nr> tulemus, näiteks [kosmos] iteratsioon 1 tulemus
sha1sum: näide arvutamisest
28. veebruar 2008 Ivo Mägi, Webmedia AS 22
Nõuded I iteratsiooni tulemitele� Meeldetuletusena: me ei õpeta siin aines midagi
� Anname võimaluse õpitut rakendada� Aitame lahendada rakendamisel tekkivaid probleeme� Anname tagasisidet tehtud tööle
� Et hoida meeskondi mingis kindlas rütmis kirjutame ette � Et hoida meeskondi mingis kindlas rütmis kirjutame ette tehtavad tulemid� Juhul kui mõni tehnoloogia ei võimalda antud tulemit
teostada või soovib klient mingit alternatiivset tulemit siis palun kohe kontakteeruda aine korraldajatega.
28. veebruar 2008 Ivo Mägi, Webmedia AS 23
Tulemid: projekti plaan
� Aine eripärad projektijuhtimise seisukohalt� Teie tiimi liikmed paiknevad hajali� Teie tiimi liikmed teevad tööd ainult ühe � Teie tiimi liikmed teevad tööd ainult ühe
päeva nädalas� Teie tiimi liikmed on erinevates
ajavööndites� Teil puudub otsene võimalus oma
tiimiliikmeid motiveerida
28. veebruar 2008 Ivo Mägi, Webmedia AS 24
Projekti plaan: sisu
� Arendusmetoodika� Rollide jaotus� Ajagraafik
28. veebruar 2008 Ivo Mägi, Webmedia AS 25
Projekti plaan: arendusmetoodika� Metoodika peab olema iteratiivne ja kergekaaluline. Soovitame
ühte järgnevaist:� Scrum� Crystal Clear� dX� XP
� Projekti plaanis peab olema kirjeldatud� Mis moel valitud metoodikat praktikas rakendada kavatsetakse � Mis moel valitud metoodikat praktikas rakendada kavatsetakse
arvestades aine eripärasid võrreldes “tavalise” tarkvaraarendusega� Kuidas toimub suhtlus. Kasutatavad suhtlusvahendid
� Wiki� E-mail� Instant Messenger� Telefon� Näost-näkku kohtumine
� Metoodika osas peab olema näha et teema on enese jaoks läbi mõeldud
28. veebruar 2008 Ivo Mägi, Webmedia AS 26
Projekti plaan: rollide jaotus I� Meeskonna liikmed� Liikmete CVd� Roll(-id) mida liige projektis täidab. Üks liige ei pea olema
ainult ühes rollis! Kõik rollid peavad olema täidetud. Võib vajadusel tekitada lisarolle� Projektijuht
28. veebruar 2008 Ivo Mägi, Webmedia AS 27
� Projektijuht� Projekti plaan ja kokkuvõte� Riskide tuvastamise ja maandamise dokument� Iteratsiooni plaan ja kokkuvõte� Üleandmise-vastuvõtmise akt� Tööülesannete jälgimine ja planeerimine
� Analüütik� Visioon� Nõuete dokument (Funktsionaalsed nõuded)� Ainemudel (koostöös disaineriga)� Prototüüp
Projekti plaan: rollide jaotus II� Rollid: jätkub
� Disainer� Ainemudel (koostöös analüütikuga)� Disainidokument
� Arhitekt� Arhitektuuridokument
� Arendaja� Kood (kommenteeritud)
28. veebruar 2008 Ivo Mägi, Webmedia AS 28
� Kood (kommenteeritud)� Ühiktestid� Ehitusskriptid
� Testija� Testimise plaan� Süsteemitestid� (Tööülesannete jälgimine ja planeerimine)
� Dokumenteerija� Kasutajajuhend� Installatsioonijuhend� Rakenduse esitlus
Projekti plaan: tööde planeerimine ja jälgimine
� Tööülesanded� Nimekiri� Sõltuvused. Te ei saa näiteks testida
enne kui kood on valmis
28. veebruar 2008 Ivo Mägi, Webmedia AS 29
enne kui kood on valmis� Mahtude hinnangud tundides
(planeeritud, tegelik)� Teostajad
� Tähtsad verstapostid (milestones). Meie puhul iteratsioonide lõpud.
Projekti plaan: tööülesanded
� “Kood” – 30h ei ole tööülesanne� Igal tööülesandel peab olema
mõõdetav tulem, näiteks:� Kõrvaldada “NullPointer Exception” arve � Kõrvaldada “NullPointer Exception” arve
salvestamisel� Realiseerida arvete väljatrüki komponent� Lisada arve vaatamise kuvale link
kreeditarvele (kui kreeditarve eksisteerib)
28. veebruar 2008 Ivo Mägi, Webmedia AS 30
Tulemid: iteratsiooni plaan
� Eesmärgid� Tööülesanded
� Tööülesannete seos konkreetse teostajaga
28. veebruar 2008 Ivo Mägi, Webmedia AS 31
teostajaga� Mõõdetava tulemiga (jällegi – “Testimine
20h” ei ole mõõdetav� Ülesannete vahelised seosed
� Mahtude hinnangud
Tulemid: iteratsiooni kokkuvõte
� Kas eesmärgid olid saavutatud? (tulemused vs eesmärgid)
� Reaalsed tegevuste mahud� Probleemid, mis tekkisid
28. veebruar 2008 Ivo Mägi, Webmedia AS 32
� Probleemid, mis tekkisid� Järeldused tulevikuks� Võtke iteratsioon kokku meeskonna
koosolekul, mitte ärge imege tund enne tähtaega pastakast välja
Tulemid: riskide haldamine
� Millised võimalikud ohud projekti edukat täitmist ähvardavad?
� Mis on riski realiseerumise mõju projektile
28. veebruar 2008 Ivo Mägi, Webmedia AS 33
projektile� Milline on riski realiseerumise
tõenäosus.� Kuidas ja milliseid riske maandatakse ning milliste riskidega elatakse
Tulemid: Nõuete dokument
28. veebruar 2008 Ivo Mägi, Webmedia AS 34
FURPS
� Functionality (funktsionaalsus)� Usability (kasutatavus)� Reliability (käideldavus)
28. veebruar 2008 Ivo Mägi, Webmedia AS 35
� Performance (jõudlus)� Supportability (toetus)
Funktsionaalsed nõuded
� Esitatakse kasutussituatsioonidena� Alternatiivsete esitussoovide korral
lepime eraldi kokku
28. veebruar 2008 Ivo Mägi, Webmedia AS 36
Kasutussituatsioon
� Tegutseja� Stsenaarium
� Põhivoog� Alternatiivsed vood
28. veebruar 2008 Ivo Mägi, Webmedia AS 37
� Alternatiivsed vood
� Tulemus� Näide � Tekst või diagramm?
Kasutussituatsioonid I
� Formaalsuse astmed� Ainult põhivoog� Lisada alternatiivsed vood� Lisada eel- ja järeltingimused
28. veebruar 2008 Ivo Mägi, Webmedia AS 38
� Lisada eel- ja järeltingimused
� Kliendile arusaadavas keeles� HALB: Tehakse uus Oracle baasi kirje
tabelisse new_orders ning seotakse see välisvõtmega uue order_process külge
� HEA: Süsteem salvestab kasutaja paketivahetuse andmed
Näide: lift
� Peab saama lifti kutsuda� Peab saama korrust valida
28. veebruar 2008 Ivo Mägi, Webmedia AS 39
� Peab saama abi kutsuda� Peab saama uksi sulgeda� Peab saama uksi avada� Peab saama lifti peatada
Kasutatavus (usability)
� Sobivus kasutaja mõttemudeliga� Esteetika (disain, pildid, ikoonid)� Õpitavus
28. veebruar 2008 Ivo Mägi, Webmedia AS 40
� Tagasiside aeg (response time)� Lihtne navigeerimine� Kasutajaliidese ühtlus� Abiinfo, dokumentatsioon
Näide: lift
� Lihtne kutsumine� Selge korruse valik� Info käesoleva korruse kohta
28. veebruar 2008 Ivo Mägi, Webmedia AS 41
� Info kutsenupu seisundi kohta� Valitud korruse indikaator peab olema
eristatav ka värvipimedale
Käideldavus (reliability)
� Lubatav vigade arv ning tõsidus� Vigade esinemisele vahele jääv
ajavahemik (MTBF – mean time between failures)
28. veebruar 2008 Ivo Mägi, Webmedia AS 42
between failures)� Taastatamisele kuluv aeg� Väga kriitilised ärirakendused,
reaalajasüsteemid� Service Level Agreement
Näide: lift
� Ei tohi juhtuda rohkem kui üks selline tõrge aastas, mille tulemusena inimesed jäävad lifti lõksu
� Sellist tüüpi vead tuleb lahendada 30
28. veebruar 2008 Ivo Mägi, Webmedia AS 43
� Sellist tüüpi vead tuleb lahendada 30 minuti jooksul
Jõudlus (performance)
� Tegevuse kestus (keskmine, maks)� Tegevuste arv (tegevusi sekundis)� Võimsus (maks samaaegsete klientide
arv)
28. veebruar 2008 Ivo Mägi, Webmedia AS 44
arv)� Piirkoormus, lubatavad jõudluse
languse piirid kõrge koormuse tingimustes
Näide: lift
� Lift peab suutma teenindada 300 inimest tunnis
� Lifti keskmine tulekuaeg peab jääma alla 1 minuti, tippajal kuni 2 minuti
28. veebruar 2008 Ivo Mägi, Webmedia AS 45
alla 1 minuti, tippajal kuni 2 minuti jooksul
Toetatavus (supportability)
� Kui palju raha peab kulutama süsteemi käigus hoidmisele?
� Testitavus (vigade diagnoosimise lihtsus)
28. veebruar 2008 Ivo Mägi, Webmedia AS 46
lihtsus)� Hooldatavus (regulaarsed uuendused)� Konfigureeritavus (runtime vs koodis)� Laiendatavus� Lokaliseeritavus
Näide: lift
� Lifti tarkvara uuendamine ei tohi võtta üle 10 minuti
� Lift ei tohi nõuda hooldust tihemini kui kord aastas
28. veebruar 2008 Ivo Mägi, Webmedia AS 47
kui kord aastas
Nõuded: kommunikeerimine
� Kes viitsib lugeda 500 lk dokumenti?� Prototüüp
28. veebruar 2008 Ivo Mägi, Webmedia AS 48
Nõuded: prioritiseerimine
� Väärtus kliendile� Makse tegemine internetipangas
� Suur risk� Integreerimine välise süsteemiga
28. veebruar 2008 Ivo Mägi, Webmedia AS 49
� Integreerimine välise süsteemiga
� Mõju arhitektuurile� Peab teenindama 5000 samaaegset
kasutajat
Nõuded: seos projektiplaaniga
� Seega järjestage töid projektiplaani lihtsa valemi järgi� Tellija äri jaoks olulisemad protsessid
esmajärjekorras. Prioriteedid määrab esmajärjekorras. Prioriteedid määrab tellija esindaja.
� Riskantsemad komponendid esmajärjekorras. Komponent loetakse riskantseks kui ta on kas tehniliselt keerukas või on äriprotsess ebaselge.
28. veebruar 2008 Ivo Mägi, Webmedia AS 50
Teie tulem: nõuete dokument
� FURPS mudeli järgi� Peab sisaldama kõiki sektsioone � Funktsionaalsed nõuded
kasutuslugudena
28. veebruar 2008 Ivo Mägi, Webmedia AS 51
kasutuslugudena� Esialgses versioonis EI PEA ja EI
SOOVITA kirjutada lahti kõiki kasutuslugusid maksimaalse täpsusega. Vähemasti loetleda tuleb kõik.
Tulemid: Ainemudel
28. veebruar 2008 Ivo Mägi, Webmedia AS 52
Ainemudel (i.k. domain model)
� Reaalse maailma kontseptuaalsete klasside esitus.� Klassid� Seosed
28. veebruar 2008 Ivo Mägi, Webmedia AS 53
� Seosed� Atribuudid
� Esitus: tavaliselt UML klassdiagrammina
� Erinevus andmemudelist
Ainemudel: näide
28. veebruar 2008 Ivo Mägi, Webmedia AS 54
Ainemudel: protsess
� Leia klassid� Joonista leitud klassid
klassdiagrammile� Lisa vajalikud seosed
28. veebruar 2008 Ivo Mägi, Webmedia AS 55
� Lisa vajalikud seosed� Lisa vajalikud atribuudid� Klass või atribuut?
Ainemudel: käitumine
� Isendite võimalike tegevuste kirjeldamine
� Kas peaks olema ainemudeli osa?� Low coupling, high cohesion
28. veebruar 2008 Ivo Mägi, Webmedia AS 56
� Low coupling, high cohesion
� Näited� Arve oskab leida oma käibemaksu� Arve oskab ennast maksta luues uue
Makse� Klient oskab leida oma käibe üle kõigi
oma Arvete
Teie tulem: ainemudel
� Valdkonna mõistete esitus� Visuaalne� Ei pea olema UML� Soovitavalt sisaldab käitumist
28. veebruar 2008 Ivo Mägi, Webmedia AS 57
� Soovitavalt sisaldab käitumist� Võib olla andmemudel
� Ei pea esimeses tarnes veel sisaldama kõiki seoseid ja tunnuseid. Kõik olemid peaksid juba eksisteerima
Tulem: arhitektuuridokument I
� Loogiline arhitektuur� Füüsiline arhitektuur� Arhitektuursed otsused
28. veebruar 2008 Ivo Mägi, Webmedia AS 58
� Platvorm, tehnoloogiad� Kasutatavad teegid, viited
� Vabavaralised� Ostetavad
� Laienduse ja edasiarenduse võimalused
Tulem: arhitektuuridokument II
� Kihid (horisontaalne)� Funktsionaalsus (vertikaalne)� Aspektid (läbilõige)
28. veebruar 2008 Ivo Mägi, Webmedia AS 59
Tulem: testimisplaan
� Kes, millal, kuidas ning mida testib?� Milliseid automaatseid testimise vahendeid
kasutatakse? Mis otstarbel?� NB! Kas ühiktestid või automaatsed � NB! Kas ühiktestid või automaatsed
kasutajaliidese testid on kohustuslikud!
� Mis hetkedel ning mida testitakse käsitsi� Kuidas teostatakse ülevaatusi?� Kuidas raporteeritakse ning parandatakse
vigu?
28. veebruar 2008 Ivo Mägi, Webmedia AS 60
Tähtaeg: märts 2008
� Tuletan meelde: hilinemine ei ole soovitav:� Kuni 24 tundi hilinedes kaotate 25%
punktidest
28. veebruar 2008 Ivo Mägi, Webmedia AS 61
punktidest� Kuni 48 tundi hilinedes kaotate 50%
punktidest� Üle 48 tunni hilinedes kaotate kõik
punktid
Tähtaeg: tarnitavad tulemid
� Teil on kohustus tarnida ainult “paberit”
� Aga: suure tõenäosusega aga need rühmad kes selleks ajaks pole rühmad kes selleks ajaks pole hakanud koodi kirjutama ainest läbi ei saa
28. veebruar 2008 Ivo Mägi, Webmedia AS 62