1 / 32

Projektide alustamine

Projektide alustamine. Targo Tennisberg Arendusjuht ja isehakanud guru http://www.targotennisberg.com/tarkvara Oktoober 2008. Projektijuhtide roll. Projektijuhid pole mitte lihtsalt selleks, et klienti ja programmeerijat teineteise eest kaitsta

abby
Download Presentation

Projektide alustamine

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Projektide alustamine Targo Tennisberg Arendusjuht ja isehakanud guru http://www.targotennisberg.com/tarkvara Oktoober 2008

  2. Projektijuhtide roll • Projektijuhid pole mitte lihtsalt selleks, et klienti ja programmeerijat teineteise eest kaitsta • Tarkvaraprojekt sisaldab põhimõtteliselt tundmatust • Muutuvad tehnoloogiad, kliendid, vahendid jne • Tundmatus -> ebakindlus -> risk -> vajadus riske hallata • Lõputult asju, mis võivad puusse minna • Peamine ülesanne enne projekti algust on riskide identifitseerimine ja maandamine • Vahe tähtajas ja eelarves lõppeva projekti ning “tahtsime parimat, aga välja tuli nagu alati” projekti vahel • Enamik riske õnneks kontrollitav vastavate kontrollküsimuste nimistute abil

  3. Riskihaldus • Risk pole iseenesest midagi hirmsat • Riski teadvustamine ja vastavate meetmete kasutamine on pool võitu • Riskihaldus peaks olema formaliseeritud • Miinimumvariandis lihtsalt mingisse dokumenti kirja panna • Osalistel võimalik riske teadvustada • Struktuurne mehhanism probleemide ennetamiseks • Riskide tõsidusega arvestamine aitab meil keskenduda õigele probleemile • Aitab arvutada õige suurusega projektilõtku • Riskide dokumenteerimine projektist projekti aitab vältida vigade kordamist • Vaja hoida värsket nimistut “meie top 10 riski”

  4. Projektiriskide testid • Pea igas tarkvaraarenduse / projektijuhtimise käsiraamatus on mõni test/nimistu • Lugege raamatuid  • Software Project Survival Guide, Steve McConnell • Practical Project Initiation, Karl Wiegers • http://www.targotennisberg.com/tarkvara/survival_test.html (Steve McConnelli ainetel) • http://www.targotennisberg.com/tarkvara/2008/06/06/eduka-projekti-retsept • Joeli test • http://www.joelonsoftware.com/articles/fog0000000043.html • Enne projekti alustamist tuleb mõelda, kuidas neist testidest hiljem kuiva nahaga pääseda

  5. Tüüpriskid - juhtimine • Ebapiisav planeerimine ja ülesannete identifitseerimine • Projektistaatuse ebapiisav läbipaistvus • Ebaselge projektijuhtimise ja otsuste tegemise struktuur • Antud ebarealistlikud lubadused • Ebarealistlike ootustega juhtkond või kliendid • Isiksuste konfliktid personali hulgas

  6. Tüüpriskid - nõuded • Selge projektivisiooni puudumine • Nõuetealase kokkuleppe puudumine • Kliendi (ja kasutaja) puudulik osalus nõuete defineerimisel • Prioritiseerimata nõuded • Ebaselgete nõuetega uus turg • Kiiresti muutuvad nõuded • Ebaefektiivne nõuete muutmise protsess • Nõuete muutmiste tagajärgede ebapiisav hindamine

  7. Tüüpriskid – puudulikud teadmised • Puudulik koolitus • Puudulik arusaam meetoditest, vahenditest ja tehnoloogiast • Vähene arusaam ärilisest rakendusvallast • Uued tehnoloogiad või arendusmeetodid • Ebaefektiivne või halvasti dokumenteeritud arendusprotsess (või ignoreeritakse seda üldse) • Tehnilised lähenemised, mis ei pruugi töötada

  8. Tüüpriskid – sõltuvused / liidestus • Kliendi omaloodud andmestruktuurid v –hoidlad • Sisemised või välised allhankijad • Komponentide vahelised sõltuvused • Vastavate kogemustega inimeste olemasolu • Komponentide taaskasutus ühest projektist teise

  9. Tüüpriskid - allhankimine • Tellija nõuded on ebaselged, valed või mittetäielikud • Tellija ei vasta allhankija küsimustele täielikult ja operatiivselt • Allhankijal puuduvad asjakohased tarkvaraarendus- ja juhtimisprotsessid • Allhankija ei tarni tähtajaks piisava kvaliteediga komponente • Allhankija ostetakse üles kellegi teise poolt, satub finantsraskustesse või lõpetab tegevuse

  10. Tüüpriskid – allhankimine 2 • Allhankija annab ebarealistlikke lubadusi, et hanget saada • Allhankija ei anna projekti staatusest täpset ja operatiivset infot • Lepingus kirjeldatud projektiskoobi üle puhkevad vaidlused • Kui allhankija asub teises riigis, võivad tekkida probleemid impordi/ekspordiseadustega • Kommunikatsioon, materjalide edastamine ja edasi-tagasi sõitmine aeglustavad projekti käiku

  11. Projekti edu tagamise sammud • Eelnevalt oli juttu sellest, mis võib valesti minna, mida me saame teha, et läheks hästi? • Defineerida ärilised eesmärgid • Identifitseerida osapooled ja nende huvid • Identifitseerida ja prioritiseerida projekti kitsendused • Koguda nõuded • Tuletada projekti edukriteeriumid • Projekti skoop täpselt piiritleda • Luua kirjalik projektiplaan • Luua operatiivsete kokkulepete struktuur kliendiga • Defineerida ja katta vastutusalad • Defineerida projektis kasutatavad protsessid • Luua vajalik tehniline infrastruktuur

  12. Ärilised eesmärgid • Puuduvad hämmastavalt paljudes projektides • Teeme midagi, aga keegi ei tea, miks • Peavad olema selged kõigile projekti osalistele (konsensus) • SMART – Specific, Measurable, Achievable, Relevant, Time-specific • Näiteid: • Saavutada X kuuga Y regioonis Z% turuosa • Jõuda X kuuga kasumisse • Töödelda X transaktsiooni päevas Y täpsusega • Rahuldada valitsuse määruses nr X toodud nõuded • Vähendada kasutajate teenindamiseks kuluvat aega X tunni võrra Y% juhtudest • Meie situatsioonis on eesmärgid tihti nõuete kujul (eriti riigihangetel) • Sellegipoolest oluline ärilisi eemärke mõista • Klient ei pruugi teada, mida ta tegelikult tahab

  13. Osalised ja nende huvid • Osalised on kõik, keda projekt mõjutab või kes mõjutavad projekti • Sisemiste osaliste näiteid: • Projektijuht, analüütikud, sponsor juhtkonnast, arendajad, testijad, IT, sisemised partnerid, omanikud, marketing, tootmine, finants, juristid, müük • Väliste osaliste näiteid: • Kasutajad (otsesed ja kaudsed), tellijad, valitsuse nõuete seadjad, audiitorid, standardiorganisatsioonid, allhankijad, materjalide tarnijad, seonduvate toodete haldajad ja kasutajad, äripartnerid, avalikkus • Osalistel on soovid, eelkujundatud suhtumised, võidulävi ja piirangud, mis tuleb identifitseerida • Võivad projekti käigus muutuda – tähtsamate osalistega tuleb suhelda läbi kogu projekti

  14. Osalised ja nende huvid 2 • Tuleb defineerida, kuidas me lahendame osalistevahelisi huvide konflikte • Näiteid: konsensus, erinevate kaaludega hääletamine, üks inimene on diktaator, komitee otsustab mingi analüüsi põhjal • Peamine on, et me mõistame ja järgime otsustusreegleid • Kõige olulisem osaline on projekti sponsor • Sponsor maksab meie laste leiva eest • Ilma sponsorita projekt tavaliselt hävib • Sponsorlust tuleb hoida kogu projekti jooksul! • Tähtsamad osalised peavad olema ühel nõul järgmistes punktides: • Ajakava • Ressursid • Skoop • Nõutav kvaliteet

  15. Projekti piirangud/paindlikkus • Tarkvaratootmises on alati ebakindluse aspekt • Paindlikkuse telgedel 1=projekti täielik ebaõnnestumine, kui piirangute piires ei tulda toime • Ilma mingi paindlikkuseta projektid (väga väikese pindalaga viisnurk) ebaõnnestuvad tavaliselt • Vaja teada, mida esimesena ohverdada kui häda käes • Oluline tähtsamate osalistega läbi rääkida • Tähtajast mõeldakse tihti kui fikseeritud suurusest • Enamasti tegelikult teatud paindlikkus

  16. Nõuded • Milleks meile nõuded? • Kui me ei tea, mis on meie vajadused, siis me ei tea, millal me valmis oleme • Täpsemad nõuded -> projekti tähtaja parem ennustatavus -> $$ • 3 nõuete taset • Ärilised • Rahuldavad ärilisi vajadusi (vt eespool) • Kasutajanõuded • Kirjeldavad, mida peab kasutaja saama produktiga teha • Funktsionaalsed • Süsteemi kirjeldus erinevates tingimustes • Kõik peavad olema kirjeldatud!

  17. Nõuded • Otsest funktsionaalsust mittepuudutavad nõuded • Jõudlus • Milline on maksimaalne samaaegne kasutajate arv? • Milline on keskmine ühe kasutaja poolt teostatavate operatsioonide arv minutis? • Millised on eeldatavad andmemahud põhitabelites? • Milline on andmete hulga kasv päevas/kuus/aastas põhitabelites? • Millised on enamkasutatavad operatsioonid? • Millise ajaga peavad olema teostatud enamkasutatavad/tavalised operatsioonid arvestades ülaltoodud operatsioonide arve ja andmemahte? • Käideldavus: • Mis on tegelik maksimaalne lubatud downtime? • Kuidas mõõdame SLAle (service level agreement) vastavust? • Kuidas teostatakse vigade parandust toodangus ning millised on reageerimisajad?

  18. Projekti edukriteeriumid (xkcd)

  19. Projekti edukriteeriumid • Tehnilised mõõdikud, mis on tuletatud ärilistest eesmärkidest • Arendajatele ei saa seada eesmärgiks “saavutada 40% turuosa” • Projektijuhtimise ülesanne on tõlkida ärilised eesmärgid tehnilisteks • Eesmärgid peavad olema • Realistlikud • Kvantifitseeritud • Binaarselt kontrollitavad (jah/ei) • Näiteid • Projekti maksumus on X% piires ettenähtud eelarvest ja tähtajast • Defektide arv on <X • Veebisait kannatab välja X üheaegset kasutajat keskmise viitega Y sekundit • Pärast koodi kliendile üleandmist ei esine üle X ärikriitilise vea • Kogu 1. prioriteedi funktsionaalsus antakse üle X tähtajaks • Eesmärke peab olema mõistlik hulk – tuleb prioritiseerida

  20. Skoop • Skoobikirjeldus on leping tellija ning projektimeeskonna vahel, mis kirjeldab: • Mida projektis tehakse • Ja ka seda, mida seal ei tehta • Piir peab olema selgelt paigas • Soovitavaid muudatusi lihtne testida, kas nad on ühel või teisel pool piiri • Eriti tähtis juhul, kui projekt on vaid väike osa suurest visioonist • Uued ja uued visiooni osad “imenduvad” projekti • Skoopi hea kirjeldada kontekstidiagrammiga • Piiritleb süsteemi sisendid ja väljundid

  21. Kontekstidiagrammi näide

  22. Projektiplaan • Sagelilevinud arvamus, et igasugused plaanid ja dokumendid on mõttetu ajaraiskamine • “Hakkame parem ometi koodi kirjutama” • Plaani kirjutamine on tegelikult lihtne • Võib kasutada mõnd olemasolevat plaanipõhja ja valida sealt relevantsed kohad • http://www.slideshare.net/ahmedhasan/ieee-1058-1998-software-project-management-plan/ • IEEE standard – väga põhjalik • Raske osa on tegelik planeerimine  • Kirjaliku plaani vajadus sunnib meid selle kohe ära tegema • Millalgi tuleb need küsimused niikuinii vastata ja hiljem on ajakulu palju suurem

  23. Projektiplaani osad • Kõrgtaseme ajagraafik • Peamiste ülesannete kirjeldus • Personal, eelave ja muud ressursid • Rollid ja vastutusalad • Kuidas vajalikke inimesi leida ja koolitada • Eeldused, sõltuvused ja riskid • Peamiste komponentide kirjeldused ja tähtajad • Identifitseeritud tarkvara loomise metoodika • Projekti monitoorimise protsessi kirjeldus • Kogutavad ja analüüsitavad mõõdikud • Suhted allhankijatega

  24. Kokkulepped kliendiga • Tihedad tarned • Kiire tagasiside tarnetele • Tarnete paigaldusprotsess (kes paigaldab, kes ehitab, kuidas propageeritakse andmestruktuur ja andmed, etc) • Tarne vastuvõtukriteeriumid • Kiire arendusse minevate tööde kinnitamise protsess • Skoobimuudatuste haldamise protsess (funktsionaalsuse vahetamine, lisarahastus, vms)

  25. Kokkulepped kliendiga 2 • Ligipääsud nende sisevõrgu ressurssidele • Testkeskkond (rakendusserver, andmebaas): vähemalt logid • Integreeritavad süsteemid (AD, ERPid, vms) • Taaskasutatav infoarhitektuur (kliendid, arved, kasutajad, tooted vms) • Tarnitava dokumentatsiooni nimekiri ja sisukirjeldus • Kes koolitab lõppkasutajaid? • Ligipääs rakenduse lõppkasutajatele töö monitoorimiseks ja tagasiside saamiseks (motiveeritud inimesed) • Kokkulepped kasutatavate tehnoloogiate ja teekide osas  (ka siis kui kliendil on “ükskõik” tuleb “jah” sõna kätte saada) • Kuupäevad, mil saame ligipääsu asjadele millest meie projekt sõltub • Kui klient neid ei pea, siis me ei garanteeri enam oma tähtaegu

  26. Vastutusalad projektis • Allpool näiteid mitmesugustest projekti tegevustest • Igal tegevusel peab olema konkreetne vastutaja • Vastutaja peab teadma, milliste valdkondade eest ta vastutab  • Iga tegevus peab kajastuma projekti graafikus • Tehnilised • Kõrgtaseme arhitektuur • Tehniline (detailne) disain • Koodikirjutamine • Detailsete etapiviisiliste ajagraafikute koostamine • Installatsiooniprogrammi loomine • Vanast süsteemist andmete konverteerimine • Integreerimine (projekti omavahelised komponendid ja liidestused teiste süsteemidega) • Testimine (sh funktsionaalne, suitsu-, integratsiooni-, jõudluse ja koormustestimine) • Dokumenteerimine • Plaanide, hinnangute, arhitektuuri, disaini, etapiplaanide, koodi, testimisplaanide ülevaatused • Ülevaatuste ja testimise käigus leitud vigade parandamine • Versioonikontrollisüsteemi haldamine • Ehitusskriptide haldamine • Vanade projektide toetamine • Hädaolukordade lahendamine

  27. Vastutusalad projektis • Mittetehnilised • Üldine (tehniline ja mittetehniline) koordineerimine • Riskihaldus • Projektiplaani koostamine ja värskendamine • Projektigraafiku jälgimine • Tellijaga suhtlemine • Lõppkasutajaga suhtlemine • Etapitulemuste demonstreerimine juhtkonnale, tellijale ja kasutajatele • Nõuete muudatustega tegelemine • Muudatuste mõju hindamine (tehnilise meeskonna poolt) • Testijate küsimustele vastamine • Dokumenteerijate küsimustele vastamine • Tehnilise meeskonna koolitamine • Projekti hiljem toetavate inimeste koolitamine • Etapitulemuste üleandmine

  28. Protsessid projektis • Kvaliteedi tagamise protsess • Tehnilised ülevaatused (spetsifikatsioon, arhitektuur, kood) • Veahaldus • Testimismetoodika ja –põhjalikkus • Unit testing • Funktsionaalne testimine • Integratsiooni testimine • Kvaliteedi tagamiseks eraldatud pädevad inimesed • Mitte lihtsalt kõige noorem ja vähemkogenum projekti liige • Muudatuste tegemise protsess • Millise suurusega muudatusi on võimalik/lubatud teha • Kes ütleb lõpliku sõna muudatuste tegemise osas • Kommunikatsiooniplaan • Lihtne tabel: asjaosalised, kommunikatsiooniaeg ja –viis • Näiteid: projekti sponsor, emailida iga 2 nädala tagant, juhtiv arendaja, koosolek igal teisipäeval, tellija esindaja, helistada esmaspäeviti ja neljapäeviti

  29. Projekti infrastruktuur ja vahendid • Enne tööleasumist tuleb planeerida ja üles seada • Versioonihalduse repositoorium • Ülesannete haldus (ChangeLogic, TFS) • Ehitusskriptid • Nightly build system (kui ei kasutata ChangeLogicut) • Testkeskkond (rakendusserverid, andmebaasid, muu) • Kujundus • Tellida vajalik kujundus • Lõigata lahti taaskasutatavateks elementideks

  30. Kokkuvõte • Tegevusi on palju • Paljud võimalik delegeerida, aga nad peavad tehtud saama • Tegevustele tuleb planeerida vastav aeg ja inimressurss • Tegemata tööd tuleb millalgi ikka ära teha, aga arvatavasti kallima hinnaga

  31. Thank You. Questions?

More Related