Mitä on ohjelmistotuotanto? Johdanto Sami Kollanus TJTA330 Ohjelmistotuotanto 9.1.2007 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) OHTU 2007 Sami Kollanus 2 Tämän kurssin näkökulma Kurssin suhde muuhun opetukseen Liiketoiminta CORE-opinnot -Johdatus ohjelmistotekniikkaan -Oliokeskeinen TJ kehittäminen Software engineering Operationaalinen johtaminen Tekniikka Tämä kurssi Ylläpito - Business Models and Software Companies - Software and Services Sourcing OHJELMISTO- TUOTANTO Projektiopinnot -Projektin hallinta -Sovellusprojekti -Projektin hallinta -Projektitoiminnan kehittäminen Testaus ja laadunvarmistus - Tietojärjestelmien kehittämismenetelmät - Menetelmien käyttö ja sovittaminen OHTU 2007 Sami Kollanus 3 OHTU 2007 Sami Kollanus 4
Kurssin tavoite Weinbergin teesit (1/3) Muodostaa kokonaiskuva ohjelmistotuotannon osa-alueista Ymmärtää erilaisia ohjelmistotuotannon menetelmiä ja niiden merkitystä ohjelmistotuotantorpsessille Mitä? Miksi? Milloin? 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 OHTU 2007 Sami Kollanus 5 OHTU 2007 Sami Kollanus 6 Weinbergin teesit (2/3) Weinbergin teesit (3/3) Mikään ratkaisu ei sovellu kaikkiin tehtäviin ja johonkin tilanteeseen parhaiten soveltuva lähestymistapa voi olla toisessa tilanteessa kaikista huonoin. (lisäys: 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. 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. 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 OHTU 2007 Sami Kollanus 7 OHTU 2007 Sami Kollanus 8
OT:n kehitys OT-nykypäivänä 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) 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 OHTU 2007 Sami Kollanus 9 OHTU 2007 Sami Kollanus 10 Software Engineering Prosessiajattelu IEEE 610.12: The application of a systematic, disciplined, quantifiable development, operation and maintenance of software. Sisään Prosessi Ulos OHTU 2007 Sami Kollanus 11 ohjaus mittaus OHTU 2007 Sami Kollanus 12
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 Ohjelmistotuotanto on Prosesseja Jokaisessa organisaatiossa on joka tapauksessa joukko prosesseja! Implisiittiset, näkymättömät prosessit Eksplisiittiset, määritellyt prosessit OHTU 2007 Sami Kollanus 13 OHTU 2007 Sami Kollanus 14 Ohjelmistotuotantoprosessi(t) CMMI -prosessialueet PROSESSIN KEHITYS, KOULUTUS SYÖTE ANALYYSI LAADUN HALLINTA SUUNNITTELU TOTEUTUS TESTAUS PROJEKTIN HALLINTA YLLÄPITO TUOTOS Level5 Level4 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 Organizational Innovation and Deployment Causal Analysis and Resolution Organizational Process Performance Quantitative Project Management MITTAUS, KONTROLLI OHTU 2007 Sami Kollanus 15 OHTU 2007 Sami Kollanus 16
Toimintaympäristö vaikuttaa Toimintaympäristö vaikuttaa Tavallinen ohjelmistokehitys vs. systeemisuunnittelu Tuoteliiketoiminta vs. projektiliiketoiminta Hajautettu kehitys Markkinoiden vaikutus (Matkapuhelin vs. taloushallinnon ohjelmisto) Suuret vs. pienet projektit Toimiala (ydinvoimala, sotateollisuus) Organisaation koko Asiakassuhteen asettamat vaatimukset (DoD, Nokia, julkishallinto) Tuotetekijät OHTU 2007 Sami Kollanus 17 OHTU 2007 Sami Kollanus 18 Tuotteen ominaisuuksia Ohjelmiston koko Käsiteltävän tiedon määrä Vasteaika ja reaaliaikavaatimukset Luotettavuusvaatimukset Hajautusaste Tuotteistusaste (massatuote vs. räätälöity) Ohjelmistotuotanto on... Dokumenttien tuottamista! OHTU 2007 Sami Kollanus 19 OHTU 2007 Sami Kollanus 20
Dokumentteja... Esitutkimus - dokumentteja Esitutkimus Määrittely Mittaus, kontrolli, prosessin kehitys yms. Suunnitte lu Toteutus Päätöksenteko, projektinhallinta, yms. Testaus OHTU 2007 Sami Kollanus 21 Alustava sopimus Alustava projektisuunnitelma Alustava toiminnallinen määrittely Alustava toteutussuunnitelma Alustava testaussuunnittelu Alustava tuotteenhallintasuunnitelma Alustava laatusuunnitelma Dokumentointisuunnitelma OHTU 2007 Sami Kollanus 22 Määrittely - dokumentteja Suunnittelu - dokumentteja Tarkennettu sopimus Tarkennettu projektisuunnitelma Toiminnallinen määrittely Alustava tekninen määrittely Tarkennettu testaussuunnitelma Tarkennettu tuotteenhallintasuunnitelma Tarkennettu laatusuunnitelma Alustava käyttöohje Tekninen määrittely Integrointisuunnitelma Tarkennettu käyttöohje Alustava ylläpito-ohje Alustava operointi-/huolto-ohje Alustava asennusohje OHTU 2007 Sami Kollanus 23 OHTU 2007 Sami Kollanus 24
Toteutus - dokumentteja Testaus - dokumentteja Moduulisuunnitelmat Moduulitestaussuunnitelmat Moduulitestauspöytäkirjat Koodimoduulit Integrointitestaussuunnitelma Integrointitestauspöytäkirjat Integroitu ohjelmisto Tarkennettu ylläpito-ohje Tarkennettu operointi/huolto-ohje Tarkennettu asennusohje Järjestelmätestauspöytäkirjat Hyväksymistestauspöytäkirjat Paketointiohje Koulutusmateriaali Tuotedokumenttien viimeistellyt versiot OHTU 2007 Sami Kollanus 25 OHTU 2007 Sami Kollanus 26 Miksi ohjelmistotuotanto? Ohjelmistotuotanto on ylläpitoa Siis miksi systemaattinen työskentely ja loputon dokumenttien tuottaminen? Miksi kunnon koodari ei voi tehdä työtä niin kuin huvittaa? vaatimukset 2 % määrittely 5 % suunnittelu 6 % koodaus 5 % integrointi 7 %??? ylläpito 67 % testaus 8 % OHTU 2007 Sami Kollanus 27 OHTU 2007 Sami Kollanus 28
Ohjelmistotuotanto on koko toiminnan hallintaa Ajatellaan projektin onnistumista osatekijöiden tulona: 1 * 1 * * 1 = 100 % onnistuminen Millään osa-alueella ei voi tehdä huonoa työtä! Ajattele vaikka totaalista epäonnistumista vaatimusten määrittelyssä Laatu Iranilainen matkustajakone Sädehoitokone Ariane kantoraketti Huono laatu maksaa! Koskaan ei ehditä tekemään kunnolla, mutta aina ehditään tekemään kahteen kertaan OHTU 2007 Sami Kollanus 29 OHTU 2007 Sami Kollanus 30 Laatu Prosessin laatu Ja kaikkihan meistä tekevät virheitä! 40-1000X Virheen korjaamisen suhteellinen kustannus 1 3-6X 10X 15-40X 30-70X (82X IBM keskiarvo) Prosessin laatu = Tuotteen laatu + Tuotannon Tehokkuus Vaatimusmäärittely Suunnittelu Koodaus Kehitys- Testaus Hyväksymis- Testaus Käyttöönotto, Ylläpito Boehm 1981 OHTU 2007 Sami Kollanus 31 OHTU 2007 Sami Kollanus 32
Projektien onnistuminen Kustannusten ylitys, (Chaos report 1994) CHAOS report (1994) 1. Täysin onnistunut 16,2 % 2. Osittain onnistunut 52,7 % 3. Täysin epäonnistunut 31,1 % www.standishgroup.com OHTU 2007 Sami Kollanus 33 www.standishgroup.com OHTU 2007 Sami Kollanus 34 Ajan ylitys (Chaos report 1994) Chaos report eri vuosilta 1994 2000 2004/Q3 Onnistuneet 16,2 % 28 % 29 % Osittain onnistuneet 52,7 % 49 % 53 % Täysin epäonnistun eet 31,1 % 23 % 18 % www.standishgroup.com OHTU 2007 Sami Kollanus 35 www.standishgroup.com OHTU 2007 Sami Kollanus 36
Projektitoiminnan tarpeita Miksi dokumentteja? 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! 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 OHTU 2007 Sami Kollanus 37 OHTU 2007 Sami Kollanus 38 Kuitenkin ihmisten osaaminen ratkaisee Data base size Schedule constraint Turnaraund time Virtual machine experience Software tools Virtual machine volatility Modern programming practices Storage constraint Application experience Timing constraint Required reliability Product complexity 1,23 1,23 1,32 1,34 1,49 1,49 1,51 1,56 1,57 1,66 1,87 2,36 Software productivity range Yhteenvetoa No silver bullet Systemaattinen kehittäminen kannattaa Täytyy ymmärtää toiminnan kokonaisuus Toiminta suhteutettava tilanteeseen Ihmiset kuitenkin ratkaisevat, eivät prosessit Personel / team capacity 4,18 0 0,5 1 1,5 2 2,5 3 3,5 4 4,5 Boehm 1981 OHTU 2007 Sami Kollanus 39 OHTU 2007 Sami Kollanus 40