581361 Ohjelmistoprosessit ja ohjelmistojen laatu (4op) Ohjelmistojärjestelmien syventävien opintojen kurssi Myös ohjelmistotekniikan profiilin pakollinen kurssi eli ohjelmistotekniikka-aiheisen gradun esitietovaatimus Esitietovaatimukset: Ohjelmistotuotantoprojekti ja sen esitietovaatimukset Luentoajat ja -paikat (10.3.2009 23.4.2009): Ti 10-12 CK112. To 10-12 CK112. Luennoija: Juha Taina (taina@cs.helsinki.fi) Tavattavissa huoneessa C229 (sovi aika sähköpostitse) Kotisivu (ilmoitusasiat, luennot, harjoitukset): http://www.cs.helsinki.fi/u/taina/opol/k-2009/ 1 Kurssin tavoitteet Perehdyttää osallistujat laadunvarmistuksen perusteisiin. Mitä laatu tarkoittaa? Mitä on laadunvarmistus? Mitä ovat mittaus ja mittarit? Esitellä modernin ohjelmistokehityksen mukaiset tärkeimmät prosessimallit ja niiden taustat. Minkä tyyppisiä ohjelmistoprosesseja on? Miksi ketterät prosessit ovat suosittuja? Antaa katsaus prosessin parannukseen. Miten prosessin hyvyyttä mitataan? Miksi prosessia pitää parantaa? 2 Taina 1
Kurssin suoritus Kurssimuotoisesti: harjoitustyö (max 20p) Katso kalvot 6-12. kurssikoe (max 40 p) Luennoilla ja harjoituksissa esitellyt asiat tulevat kurssikokeeseen. Erilliskokeella: Yksi koe, ei harjoitustyötä. Materiaali kuten kurssilla (ks. kurssikuvaus) Erilliskoe kesällä 2009: Ti 2.6.2009 klo 16-20 A111 Tämä on uusintakuulustelu, johon osallistujat saavat halutessaan harjoitustyön pisteet mukaan. 3 Aikataulu ja oppimateriaali Harjoitukset (16.3. 24.4.) to 14-16 B119 Juha Taina pe 10-12 B119 Juha Taina Kurssikoe kurssikoe ti 28.4. klo 9-12 Exactum A111. Käytettävät oppikirjat: Craig Larman, Agile & Iterative Development: A Manager's Guide. Pearson Education, 2004. ISBN 978-0-13-111155-4 (prosessit). Daniel Galin, Software Quality Assurance: From theory to implementation. Pearson Education, 2004. ISBN 0-201- 70945-7 (laatu ja laadunvarmistus). Larman on kurssin pääoppikirja. Luentokalvot ovat osa oppimateriaalia. 4 Taina 2
Alustava sisällysluettelo 1. Johdanto 2. Ohjelmiston laatu (Galin) 3. Ohjelmiston laadunvarmistus (Galin) 4. Mittaus ja mittarit (Galin + muita lähteitä) 5. Laatustandardit (Galin) 6. Suunnitelmakeskeiset prosessit (useita lähteitä) 7. Iteratiivinen ohjelmistokehitys (Larman) 8. Ketterä ohjelmistokehitys (Larman) 9. Scrum (Larman) 10. extreme programming (Larman) 11. Unified process (Larman) 12. Evo (Larman) 13. Ketterän ohjelmistokehityksen menetelmiä (Larman) 14. Yhteenveto 5 Harjoitustyö Harjoitustyöohje: http://www.cs.helsinki.fi/u/taina/opol/k-2009/ht Harjoitustyössä 3-4 hengen ryhmä tekee valitsemastaan sovelluksesta viisi versiota ketterällä prosessimallilla. Projekti tehdään ongelmalähtöisellä lähestymistavalla. Ryhmän jäsenet joutuvat itse ottamaan selville, miten harjoitustyö kannattaa tehdä. Harjoitustyö tehdään Java-kielellä ja sitä testataan JUnit-sovelluskehyksellä. Harjoitustyö on vapaaehtoinen mutta suositeltava. 6 Taina 3
Harjoitustyön rakenne Harjoitustyö tehdään kuudessa syklissä. Ensimmäinen sykli alkaa ensimmäisestä luennosta ja päättyy ensimmäiseen harjoituskertaan. Seuraavat syklit alkavat menevän viikon harjoituskerrasta ja päättyvät seuraavaan harjoituskertaan. Jokaisella syklillä on yksi tai useampi teema. Teemat liittyvät ketteriin ohjelmistoprosesseihin ja/tai ohjelmistojen laatuun. Kukin ryhmä esittelee syklin aikana tekemänsä sovelluksen harjoituksissa. Kaikki paikalla olevat päättävät sen jälkeen yhdessä, mitä ryhmä tekee seuraavassa syklissä. Viimeisessä syklissä on tuotteen luovutus. 7 Ryhmän järjestäytyminen Ryhmät järjestäytyvät kurssin ensimmäisellä viikolla. Kukin ryhmä ilmoittaa luennoijalle (taina@cs.helsinki.fi) ryhmän nimen, ryhmän jäsenet ja sähköpostiosoitteet ja toteutettavan sovelluksen. Ne henkilöt, jotka eivät itse löydä ryhmää, voivat ilmoittautua luennoijalle. Luennoija etsii heille ryhmän. Ryhmät käyttävät kehitystyössä Scrumprosessimallin varianttia, jossa syklin pituus on yksi viikko. Ryhmien odotetaan hankkivan itse tietoja Scrumista ja soveltavan sitä omaan projektiin. 8 Taina 4
Syklien teemat Ensimmäinen sykli Teema: Laatu ketterissä prosesseissa Miten laatu nähdään ketterissä prosesseissa? Ryhmät tekevät yhteenvedot harjoituksiin Toinen sykli Teema: Laadunvarmistussuunnitelma Miten ryhmä valvoo ja varmistaa tehtävän tuotteen laatua? Teema: Projektissa käytettävät mittarit Kukin ryhmä valitsee projektissaan käyttämänsä laadunvarmistuksen mittarit. 9 Syklien teemat 2 Kolmas sykli Teema: CMMI ja ketterät prosessit CMMI on tunnettu prosessien kypsyysmalli, mutta toimiiko se ketterien prosessien kanssa? Teema: Oman prosessin kuvaus Ryhmät kuvaavat lyhyesti, mitä ryhmän käyttämä prosessi sisältää. Neljäs sykli Teema: Ketterien prosessien skaalautuvuus Miten ketterät prosessit toimivat, kun projektissa on mukana satoja työntekijöitä? Teema: Testauslähtöinen ohjelmistokehitys Neljännen syklin tuotos tehdään testauslähtöisellä ohjelmistokehityksellä. 10 Taina 5
Syklien teemat 3 Viides syklli Teema: Riskienhallinta ketterissä prosesseissa Miten riskienhallinta sopii ketteriin prosesseihin ja miten sitä toteutetaan niissä? Teema: Laatuyhteenveto Ryhmä tekee yhteenvedon siitä, miten laadunvarmistus toteutui projektissa ja miten se näkyy ohjelmiston laadussa. Teema: Tuotteen palautus Ohjelmisto ja sen dokumentaatio palautetaan syklin lopuksi. Työstä ei tarvitse tehdä käyttöohjetta Jätetty ohjelmisto ja dokumentaatio arvostellaan pisteytyksellä 0-20. Pisteytys on henkilökohtainen. 11 Empiirinen tutkimus Harjoitustyön tekijät osallistuvat empiiriseen tutkimukseen, jossa selvitetään jatkuvan parannuksen vaikutusta projekteissa. Tutkimukseen osallistuminen on osa harjoitustyötä, mutta siihen annetut vastaukset eivät vaikuta arvosteluun. Annetut vastaukset ovat täysin anonyymeja. Tutkimuksen tekijät eivät tiedä vastaajien henkilöllisyyksiä. Kurssin arvostelijat eivät näe annettuja vastauksia. Lisätietoja tutkimuksesta antaa Yliopistontutkija Marko Salmenkivi (Marko.Salmenkivi@cs.helsinki.fi). Harjoitustyön kotisivulla on lyhyt kuvaus tutkimuksesta. 12 Taina 6