Johdanto Sami Kollanus TJTA330 Ohjelmistotuotanto 6.3. Mitä on ohjelmistotuotanto? Ohjelmistotekniikka (Software Engineering) tarkoittaa pätevien insinööriperiaatteiden vakiinnuttamista ja käyttämistä siten, että voidaan tuottaa taloudellisesti ohjelmisto, joka on luotettavaa ja toimii tehokkaasti todellisissa koneissa. Naur & Randel (1969) 2 Tämän kurssin näkökulma Software engineering Liiketoiminta Operationaalinen johtaminen Tekniikka Tämä kurssi 3 1
Kurssin suhde muuhun opetukseen CORE-opinnot -Johdatus ohjelmistotekniikkaan -Oliokeskeinen TJ kehittäminen Ylläpito OHJELMISTO- TUOTANTO Testaus ja laadunvarmistus Projektiopinnot -Projektin hallinta -Sovellusprojekti -Projektin hallinta -Projektitoiminnan kehittäminen Tietojärjestelmien Kehittämismenetelmät 4 Kurssin tavoite Muodostaa kokonaiskuva ohjelmistotuotannon osa-alueista Ymmärtää erilaisia ohjelmistotuotannon menetelmiä ja niiden merkitystä ohjelmistotuotantorpsessille Mitä? Miksi? Milloin? 5 Weinbergin teesit (1/3) Parhaiten onnistuvat ne, jotka eivät luota viimeisimpiin poppakonsteihin, mutta ovat silti valmiita itse kokeilemaan uusia ideoita, vaikka ne esitettäisiinkin karnevaalihumussa mainosmiesten pötypuheiden seassa. Mikään ei korvaa ratkaistavan ongelman perusteellista ymmärtämistä joskus voi tosin käydä hyvä tuuri Haikala & Märijärvi 2002 6 2
Weinbergin teesit (2/3) Mikään ratkaisu ei sovellu kaikkiin tehtäviin ja johonkin tilanteeseen parhaiten soveltuva lähestymistapa voi olla toisessa tilanteessa kaikista huonoin. (oma kommentti: ajattelen, että todellinen ammattitaito on laajaa näkemystä asioihin ja eri vaihtoehtojen tunnistamista. Vasara kädessä kaikki ongelmat alkavat näyttää nauloilta.) On olemassa monia hyödyllisiä lähestymistapoja, jotka toimivat useammassa kuin yhdessä tilanteessa, joten kannattaa tutustua sellaiseen, mikä on toiminut aiemmin. Haikala & Märijärvi 2002 7 Weinbergin teesit (3/3) Ongelman ratkaisun niksi ei ole pelkästään miten menetelmiä sovelletaan (know-how), vaan mieluummin milloin niitä sovelletaan (know-when) tämä antaa mahdollisuuden sovittaa ratkaisumenetelmän ongelmaan, eikä päinvastoin. (siis mielestäni tämä on sitä ammattitaitoa) Riippumatta siitä, kuinka hyvin taidat edellisen kohdan miten ja milloin, on olemassa ongelmia, jotka ovat nykytietämyksellä mahdottomia ratkaista tai joiden perimmäisiä ominaisuuksia kukaan ei ymmärrä riittävän hyvin: nöyryys on siis aina paikallaan (tämä on vähän tekninen näkökulma asiaan, tähän kohtaan sopii ehkä projektien riskien arviointi. Voidaan tunnustaa, että projektia ei voida tai ei kannata tehdä vaatimusten mukaan) Haikala & Märijärvi 2002 8 OT:n kehitys Koskinen ym. (2001) Programming in the small, 50- ja 60 luku Programming in the large, 70-luku Programming in the many, 80-luku 2000-luku: tietoyhteiskunta, prosessien systemaattinen kehittäminen, kertynyttä tutkimustietoa (vrt. Weinbergin teesit) 9 3
OT-nykypäivänä Brooks (1986): Monimutkaisuus Näkymättömyys Mukautuvuus Muuttuvuus Skaalautumattomuus Kasvaneet järjestelmät Kasvanut tehokkuus(vaatimus) OT Monenlaiset ympäristöt: -Sulautetut järjestelmät -Internet -Integrointi, standardit -Mobiililaitteet Markkinat: Kilpailu Laatujärjestelmät 10 Software Engineering IEEE 610.12: The application of a systematic, disciplined, quantifiable development, operation and maintenance of software. Haikala & Märijärvi 2002 11 Prosessiajattelu Sisään Prosessi Ulos ohjaus mittaus Haikala & Märijärvi 2002 12 4
prosesseissa keskeistä siis Prosessilla on syöte (työvoima ja muut resurssit) Tuotos (dokumentit ja valmis ohjelma) Voi olla useampi prosessi erilaisiin projekteihin Prosessia täytyy mitata ja ohjata 13 Ohjelmistotuotanto on Prosesseja Jokaisessa organisaatiossa on joka tapauksessa joukko prosesseja! Implisiittiset, näkymättömät prosessit Eksplisiittiset, määritellyt prosessit 14 Ohjelmistotuotantoprosessi(t) PROSESSIN KEHITYS, KOULUTUS SYÖTE ANALYYSI SUUNNITTELU PROJEKTIN HALLINTA TUOTOS TOTEUTUS LAADUN HALLINTA TESTAUS YLLÄPITO MITTAUS, KONTROLLI 15 5
CMMI -prosessialueet Level5 Level4 Organizational Innovation and Deployment Causal Analysis and Resolution Organizational Process Performance Quantitative Project Management Level3 Requirements Development Technical Solution Product Integration Verification Validation Organizational Process Focus Organizational Process Definition Organizational Training Integrated Project Management Risk Management Integrated Teaming Integrated Supplier Management Decision Analysis and Resolution Organizational Environment for Integration Level2 Requirements Management Project Planning Project Monitoring and Control Supplier Agreement Management Measurement and Analysis Process and Product Quality Assurance Configuration Management Level1 16 Toimintaympäristö vaikuttaa Tavallinen ohjelmistokehitys vs. systeemisuunnittelu Tuoteliiketoiminta vs. projektiliiketoiminta Hajautettu kehitys Markkinoiden vaikutus (Matkapuhelin vs. taloushallinnon ohjelmisto) Suuret vs. pienet projektit 17 Toimintaympäristö vaikuttaa Toimiala (ydinvoimala vs. verkkokauppa) Organisaation koko Asiakassuhteen asettamat vaatimukset (DoD, Nokia, julkishallinto) Tuotetekijät 18 6
Tuotteen ominaisuuksia Ohjelmiston koko Käsiteltävän tiedon määrä Vasteaika ja reaaliaikavaatimukset Luotettavuusvaatimukset Hajautusaste Tuotteistusaste (massatuote vs. räätälöity) Haikala & Märijärvi 2002 19 Ohjelmistotuotanto on... Dokumenttien tuottamista! 20 Dokumentteja... Esitutkimus ää ääö 21 7
Esitutkimus - dokumentteja Alustava sopimus Alustava projektisuunnitelma Alustava toiminnallinen määrittely Alustava toteutussuunnitelma Alustava testaussuunnittelu Alustava tuotteenhallintasuunnitelma Alustava laatusuunnitelma Dokumentointisuunnitelma Haikala & Märijärvi (2002, 73) 22 Määrittely - dokumentteja Tarkennettu sopimus Tarkennettu projektisuunnitelma Toiminnallinen määrittely Alustava tekninen määrittely Tarkennettu testaussuunnitelma Tarkennettu tuotteenhallintasuunnitelma Tarkennettu laatusuunnitelma Alustava käyttöohje Haikala & Märijärvi (2002, 73) 23 Suunnittelu - dokumentteja Tekninen määrittely Integrointisuunnitelma Tarkennettu käyttöohje Alustava ylläpito-ohje Alustava operointi-/huolto-ohje Alustava asennusohje Haikala & Märijärvi (2002, 73) 24 8
Toteutus - dokumentteja Moduulisuunnitelmat Moduulitestaussuunnitelmat Moduulitestauspöytäkirjat Koodimoduulit Integrointitestaussuunnitelma Integrointitestauspöytäkirjat Integroitu ohjelmisto Tarkennettu ylläpito-ohje Tarkennettu operointi/huolto-ohje Tarkennettu asennusohje Haikala & Märijärvi (2002, 73) 25 Testaus - dokumentteja Järjestelmätestauspöytäkirjat Hyväksymistestauspöytäkirjat Paketointiohje Koulutusmateriaali Tuotedokumenttien viimeistellyt versiot Haikala & Märijärvi (2002, 73) 26 Miksi ohjelmistotuotanto? Siis miksi systemaattinen työskentely ja loputon dokumenttien tuottaminen? Miksi kunnon koodari ei voi tehdä työtä niin kuin huvittaa???? 27 9
Laatu Iranilainen matkustajakone Sädehoitokone Ariane kantoraketti Huono laatu maksaa! Koskaan ei ehditä tekemään kunnolla, mutta aina ehditään tekemään kahteen kertaan 28 Laatu 40-1000X Virheen korjaamisen suhteellinen kustannus 1 3-6X 10X 15-40X 30-70X (82X IBM keskiarvo) Vaatimusmäärittely Suunnittelu Koodaus Kehitys- Testaus Hyväksymis- Käyttöönotto, Testaus Ylläpito Ja kaikkihan meistä tekevät virheitä! 29 Prosessin laatu Prosessin laatu = Tuotteen laatu + Tuotannon Tehokkuus 30 10
Projektien onnistuminen CHAOS report (1994) 1. Täysin onnistunut 16,2 % 2. Osittain onnistunut 52,7 % 3. Täysin epäonnistunut 31,1 % www.standishgroup.com 31 Kustannusten ylitys, (Chaos report 1994) www.standishgroup.com 32 Ajan ylitys (Chaos report 1994) www.standishgroup.com 33 11
Chaos report eri vuosilta 1994 2000 2004/Q3 Onnistuneet 16,2 % 28 % 29 % Osittain onnistuneet Täysin epäonnistune et 52,7 % 31,1 % 49 % 23 % www.standishgroup.com 53 % 18 % 34 Projektitoiminnan tarpeita Jos toimintaa ei tunneta, sitä ei voida ennustaa. Systemaattisen toiminnan, vakiintuneiden prosessien ja seurannan avulla voidaan oppia: Estimoimaan työmäärä ja aikataulu Saadaan näkyvyyttä projekteihin Tiedetään, mikä toimii Ei kannata aina keksiä pyörää uudelleen! 35 Miksi dokumentteja? Asiakassuhde: Sopimukset, suunnitelmat, seuranta Tekniset tarpeet: Kommunikointi, ylläpito Johdon tarpeet: Seuranta, toiminnan ohjaus Oppiminen: virheiden jäljitys, päätösten perustelut, toiminnan kehittäminen 36 12