Ohjelmistotuotanto, s2001 3/6/2003

Samankaltaiset tiedostot
Ohjelmistotekniikka kevät 2003 Laatujärjestelmät

Avoimen lähdekoodin kehitysmallit

Ohjelmistoprosessit ja ohjelmistojen laatu Kevät Ohjelmistoprosessit ja ohjelmistojen laatu. Projektinhallinnan laadunvarmistus

CMMI CMMI CMM -> CMMI. CMM Capability Maturity Model. Sami Kollanus TJTA330 Ohjelmistotuotanto

CMM Capability Maturity Model. Software Engineering Institute (SEI) Perustettu vuonna 1984 Carnegie Mellon University

CMMI CMM -> CMMI. CMM Capability Maturity Model. Sami Kollanus TJTA330 Ohjelmistotuotanto Software Engineering Institute (SEI)

Prosessien kehittäminen. Prosessien parantaminen. Eri mallien vertailua. Useita eri malleja. Mitä kehitetään?

Ohjelmistotuotanto, syksy laatu Ohjelmiston laatu

Linux. 00 Keskeiset piirteet. Unix ja Linux Helsingin ammattikorkeakoulu Stadia Vesa Ollikainen (muokannut M.Mäki-Uuro) Kysymyksiä

Software engineering

Laadun hallinta. Laatukustannukset. Laadun kustannuksista. Sami Kollanus TJTA330 Ohjelmistotuotanto

Laadun hallinta. Laatukustannukset. Sami Kollanus TJTA330 Ohjelmistotuotanto

8. Laadunvalvonta. Mitä laatu on?

Laatukustannukset. Laadun hallinta. Laadun kustannuksista

Ohjelmistotuotteen hallinnasta

Historiaa. Unix kirjoitettiin kokonaan uudestaan C-kielellä Unix jakautui myöhemmin System V ja BSDnimisiin. Kuutti, Rantala: Linux

Kehittää ohjelmointitehtävien ratkaisemisessa tarvittavia metakognitioita!

Ohjelmistoarkkitehtuurit, syksy

Malliperustainen ohjelmistokehitys - MDE Pasi Lehtimäki

Avointen ohjelmistojen käyttö ohjelmistokehityksessä

Ohjelmistotuotanto, laadunvalvonta Syksy Laadunvalvonta. Mitä laatu on? Laadun komponentit. Laatuvaatimukset.

Avoin lähdekoodi hankinnoissa Juha Yrjölä

Open Source -ohjelmien perusteet

Menetelmäraportti - Konfiguraationhallinta

Innovointiprosessi. Lili Aunimo Lili Aunimo

Prosessiajattelu. Prosessikuvaukset ja elinkaarimallit. Organisaation prosessikuvaus - CMMI. Sami Kollanus TJTA330 Ohjelmistotuotanto 3.4.

Prosessiajattelu. Organisaation prosessikuvaus - CMMI. Prosessikuvaukset ja elinkaarimallit. Organisaation prosessien määritys CMMI käytänteet

Globaalisti Hajautettu Ohjelmistokehitys Mitä, Miksi & Miten? Maria Paasivaara

VALO ja tietoyhteiskunnan kehitysvaihtoehdot

KYMENLAAKSON AMMATTIKORKEAKOULU

Testaus käsite. Sekalaista testausasiaa. Testauksen käsitteestä. Kattavuusmitat. Jos ajatellaan, että testaus = V&V, voidaan erottaa:

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Käyttäjien tunnistaminen ja käyttöoikeuksien hallinta hajautetussa ympäristössä

Ohjelmien lisensoinnista

Web-sisällönhallintajärjestelmät. Sisältö. Mitä on web-sisällönhallinta?

Tutkittua tietoa. Tutkittua tietoa 1

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS CT10A Kandidaatintyö ja seminaari

Avoimen ohjelmistotuotteen hallinta julkisella sektorilla. Jukka Kääriäinen VTT Oy , Oskari-verkostopäivä

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Web-sisällönhallintajärjestelmät

Testaus teoriassa ja käytännössä. Jukka Paakki Helsingin yliopisto Tietojenkäsittelytieteen laitos

Virheraportoijien virhemäärien jakaumat virhetietokannassa

Ohjelmistotekniikka - Luento 2 Jouni Lappalainen

Testausdokumentti. Kivireki. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

T Projektikatselmus

Avoimen lähdekoodin ohjelmistot julkisessa hallinnossa

Ohjelmistojen mallintaminen, Johdatus ohjelmistotuotantoon

FLOSS. Terhi Kilamo, assistentti

Luento 8. Ohjelmistokehykset Tuoteperheet CSM14101 Ohjelmistoarkkitehtuurit

Koulutuksen suhdannevaihtelut. Zeppeliinistä suihkukoneaikaan

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS Ti Kandidaatintyö ja seminaari

Demo 13. Aihe: Linux. Opettaja: Antti Ekonoja. Tekijä: Heini Puuska

Fujitsu SPICE Lite. Kimmo Vaikkola Fujitsu Finland Oy Laatu ja liiketoimintatavat. Copyright 2010 FUJITSU

Digi-tv vastaanottimella toteutettavat interaktiiviset sovellukset Selvitys GPL-lisensoinnin tuomat ongelmat

ITK130 Ohjelmistoprosessi

Laskennallisen fysiikan esimerkkejä avoimesta tutkimuksesta Esa Räsänen Fysiikan laitos, Tampereen teknillinen yliopisto

Ohjelmistoarkkitehtuurit. Kevät

Matematiikan oppifoorumi Projektisuunnitelma

KONEAUTOMAATION LAATU JA TURVALLISUUS Marko Varpunen

Ohjelmistotekniikka - Luento 2

Ohjelmistoarkkitehtuurit. Syksy 2010

Manu Setälä Suomen open source -keskus COSS

Eclipse 3.2 pikku opas versio 1.0. Esittely Uuden projektin perustaminen Sovelluksen luominen Koodin siistiminen Vinkkejä

Tik Tietojenkäsittelyopin ohjelmatyö Tietotekniikan osasto Teknillinen korkeakoulu. LiKe Liiketoiminnan kehityksen tukiprojekti

Testauksen hallinta Testaustyökalut Luento 7 Antti-Pekka Tuovinen

Convergence of messaging

DESCA-sopimuksen ohjelmistomoduuli ja avoimen lähdekoodin ohjelmistot

Ohjelmointitekniikka lyhyesti Survival Kit 1 Evtek KA ELINKAARIMALLEISTA

Suomen avoimien tietojärjestelmien keskus COSS ry

Ylläpito. Ylläpito. Ylläpidon lajeja Ohjelmistotuotanto, syksy 1998 Ylläpito

WINE API ja Virtualisointiohjelmistot

Laskennallisen fysiikan esimerkkejä avoimesta tutkimuksesta Esa Räsänen Fysiikan laitos, Tampereen teknillinen yliopisto

OTM viikoilla 18 ja 19

Ohjelmistojen mallintaminen. Luento 11, 7.12.

UCOT-Sovellusprojekti. Testausraportti

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen Kevät 2016

Avoin lähdekoodi. Jani Kylmäaho Maanmittauslaitos

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

L models. Tekninen määrittely. Ryhmä Rajoitteiset

Kehyksillä toteuttettujen tuotelinjojen rakenteellinen optimointi

Ohjelmistokehykset (software frameworks)

Aluksi. Riskien hallinta. Riskityyppejä. Riskillä on kaksi ominaisuutta. Reaktiivinen strategia. Proaktiivinen strategia

Johdanto. Mitä on ohjelmistotuotanto? Tämän kurssin näkökulma. Sami Kollanus TJTA330 Ohjelmistotuotanto

Mitä on ohjelmistotuotanto?

Työkalut ohjelmistokehityksen tukena

TARKASTUSMENETTELYT JA NIIDEN APUVÄLINETUKI

Ohjelmistokehykset ohjelmistorunkoja uudelleenkäyttö olioperustaisista ohjelmistorunko

Yhteenveto. Menettelytavat

T Tietojenkäsittelyopin ohjelmatyö Hirviöryhmä loppukatselmointi. Hirviö. Projektikatselmointi

GNU/Linux kotikäytössä

Ohjelmistoprosessit ja ohjelmistojen laatu Ohjelmistoprosessit ja ohjelmistojen laatu (4op)

JulkICTLab Eteneminen Mikael Vakkari, VM

A4.1 Projektityö, 5 ov.

10. Tuoterunkoarkkitehtuurit

7.4 Variability management

Projektin suunnittelu

SYSTEEMITYÖ. Tärkeitä sanoja

LINUX LINUX. Viisi hyvää syytä käyttää Linuxia MUISTA! GNU Free Documentation License

Määrittelydokumentti NJC2. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Qt kaikkialla?

Transkriptio:

Ohjelmistotuotannon laatujärjestelmät Ohjelmistotuotannon laatujärjestelmät Laatujärjestelmä: ohjelmistotuotannon laadun hallinnassa tarvittavat organisaatiorakenteet, menettelyt, prosessit ja resurssit määrittelee laadukkaan prosessin menetelmät tarjoaa tavan mitata prosessin ja sitä noudattavien projektien laatua auditointi: prosessin / projektin arviointi suhteessa johonkin tiettyyn laatujärjestelmään esimerkkejä: ISO 9000 -sarja, CMM, Bootstrap, SPICE 1 Harri Laine, Jukka Paakki 2 Laatujärjestelmät CMM CMM (Capability Maturity Model): W.S. Humphrey: Managing the Software Process. Addison-Wesley, 1990 alkuperäinen tavoite: USA:n puolustusministeriön käyttämien ohjelmistoalihankkijoiden auditointi kehittäjä: Carnegie-Mellonin yliopiston Software Engineering Institute (SEI) joukko ohjelmistoprojekteissa hyviksi havaittuja käytäntöjä jaettuna viiteen kypsyystasoon ollakseen tietyllä kypsyystasolla on organisaation kaikkien projektien noudatettava kaikkia ko. tason (ja sitä alempien tasojen) käytäntöjä ( avainprosesseja ) pääpaino prosessissa ja sen hallinnassa, ei tekniikassa Harri Laine, Jukka Paakki 3 1. Alustava (initial) CMM-kypsyystasot 2. Toistettava (repeatable) 3. Määritelty (defined) 4. Hallittu (managed) 5. Optimoiva (optimizing) Standardoitu ohjelmistoprosessi Projektinhallinnan perusasiat Ad hoc toimintaa, kaikki kelpaa Itseään kehittävä prosessi Mitattava, hallinnassa oleva prosessi Harri Laine, Jukka Paakki 4 CMM-avainprosesit (key process areas) 1. Alustava prosessi ei avainkäytäntöjä 2. Toistettava prosessi vaatimusten hallinta (requirements management) projektin suunnittelu (software project planning) projektin seuranta (software project tracking and oversight) alihankinnan hallinta (software subcontract management) laadunvarmistus (software quality assurance) tuotteenhallinta (software configuration management) CMM-avainprosesit (key process areas) 3. Määritelty prosessi organisaatiokulttuuri (organization process focus) prosessien määrittely (organization process definition) koulutusohjelma (training program) integroitu ohjelmistonhallinta (integrated software management) vaihekohtaiset tuotantotekniikat (software product engineering) ryhmien koordinointi (intergroup coordination) katselmoinnit (peer reviews) Harri Laine, Jukka Paakki 5 Harri Laine, Jukka Paakki 6 HY/TKTL 1

CMM-avainprosessit (key process areas) 4. Hallittu prosessi tilastollinen prosessinhallinta (quantitative process management) laadunhallinta ja mittaaminen (software quality management) 5. Optimoiva prosessi virheiden välttäminen (defect prevention) teknologiamuutosten hallinta (technology change management) prosessimuutosten hallinta (process change management) CMM-avainkäytännöt (key practices) Kullekin avainprosessille on määritelty joukko konkreettisia toimenpiteitä Projektin seuranta: dokumentoidun projektisuunnitelman käyttö projektin etenemisen seuraaminen suhteessa suunnitelmaan projektisuunnitelman päivittäminen tarvittaessa ulkoisten muutostarpeiden katselmointi ja hyväksyminen muutoksista tiedottaminen organisaation johdolle ohjelmiston koon ja laadun seuranta projektin resurssien, kustannusten ja aikataulun seuranta projektin riskien hallinta projektin pääetappien ja tulosten formaali katselmointi Harri Laine, Jukka Paakki 7 Harri Laine, Jukka Paakki 8 Tuoteperheet Ohjelmistojen tuoteperheet Tuoteperhe(product family): joukko (ohjelmisto-) tuotteita, joilla on sama perustoiminnallisuus tietty sovellusalue (kännykät, sairaalajärjestelmät,...) sama (ohjelmisto)arkkitehtuuri: yhtenevyys (commonality) tuotekohtaiset erot: muunneltavuus (variability) yhteinen peruskoodi: tuoterunko tarjoaa suuren mittakaavan uudelleenkäyttöä yli projektirajojen: vaatimukset, arkkitehtuuri, tuoterunko, komponentit, testiaineisto kehittäminen ja testaaminen haasteellisia 9 Harri Laine, Jukka Paakki 10 Tuoteperheet esimerkki Tuoteperheet Rita TCP connection Type Mail client Receive Send Runtime platform Rita (framework integration and testing application): tuoteperheiden testaamista tutkiva laitoksen projekti Signature file Emacs Edit Pop3 IMAP Windows Linux Internal editor Ominaisuus Valinnainen ominaisuus koostaminen xor tuoteperhe = olioperustainen sovelluskehys keskitytään erityisesti sovelluskehyksen ja sovellusten välisen erikoistamisrajapinnan ( hot spots ) toimivuuden testaamiseen testauksen laatukriteeri: erilaiset kattavuusmitat Rita-työkalu tuottaa sovelluskehyksestä (Java-ohjelmasta) vuokaavion, jonka perusteella kattavuus mitataan Ulkoinen komponentti Harri Laine, Jukka Paakki 11 Harri Laine, Jukka Paakki 12 HY/TKTL 2

Tuoteperheet Rita Rajapintakerros Rajapinta1 Rajapinta2 Kehyksen ydinkerros Sovelluskerros luokka 1 luokka 1 luokka 2 luokka 2 luokka 3 luokka 3 hot spot kattavuus riippumattomien polkujen kattavuus (McCabe) lause- ja haarakattavuus Avoimen lähdekoodin ohjelmistokehitys hot spot Harri Laine, Jukka Paakki 13 14 Avoimen lähdekoodin ohjelmistot Binäärikoodin lisäksi lähdekoodi ( source ) annetaan ohjelmiston mukana lähdekoodi lukukelpoista ja vapaasti muokattavissa ( open ) lähdekoodia saa jaella vapaasti ( free software ) erilaisia erityislisenssejä yksityisen kaupallistamisen estämiseksi (GNU General Public License, GPL) muokattu koodi levitettävä edelleen hyötykäyttöön samalla avoimella lisenssillä Juuret 1970- ja 1980-luvuilla Internet, Unix Richard Stallman ja GNU (GNU s Not Unix) idealististen hakkeriyhteisöjen synty Kohu 1990-luvulla WWW, Apache Linus Torvalds ja Linux teollisuus peliin: bisnesmallien kokeiluja 1998 free software open source software Harri Laine, Jukka Paakki 15 Harri Laine, Jukka Paakki 16 Runsaasti laadukkaita ja halpoja (jopa ilmaisia) ohjelmistonkehitystyökaluja varusohjelmistot ja käyttöliittymät: Linux, Apache, Netscape/Mozilla, GNOME, KDE,... ohjelmointi: GNU (emacs, gcc, gdb,...), Eclipse, Perl, Erlang,... toimistojärjestelmät: Sun / StarOffice, OpenOffice erikoissovelluksia: WAP-kehitysympäristöt, pelinkehitysalustat, UML-editorit,... Piilokustannuksia asennuspaketit uusien versioiden käyttöönotto open source -kehitystyön seuraaminen työntekijöiden koulutus (mahdollisesti) virheiden korjaaminen (tarvittaessa) omiin tarpeisiin virittäminen organisaatiossa oltava töissä teknisesti taitavia hakkereita Harri Laine, Jukka Paakki 17 Harri Laine, Jukka Paakki 18 HY/TKTL 3

Avoin ohjelmistonkehitysmalli pienen ryhmän (usein yhden henkilön) kehittämä ohjelmiston runko (ydin) ytimen laajentamiseen ja korjailemiseen keskittyvä hajautettu, vapaaehtoinen hakkeriyhteisö selkeä ohjelmistoarkkitehtuuri : ydin + rajapinnat + laajentavat komponentit lähdekoodi eri versioineen kaikkien vapaasti saatavilla (Internet) eri suuntiin rönsyilevä kehitys virallisen version kehittymistä valvova ydinryhmä Ydinryhmä Uusia piirteitä Virhekorjauksia Virallinen versio Rönsyjä muihin ympäristöihin, paikallisia virityksiä,... $ $ Harri Laine, Jukka Paakki 19 Harri Laine, Jukka Paakki 20 Linux Tutkimus (I.T. Bowman, R.C. Holt, N.V. Brewster: 21st Int. Conference on Software Engineering, 1999): Linux-ytimen arkkitehtuurin esiinkaivaminen reverse architecting tekniikalla yksinkertaisuus on valttia oppikirjan mukainen perusrakenne mutta : huomattavasti mutkikkaampi todellinen rakenne mutta : rajapintoja ei ole tarkasti noudatettu mutta : tehokkuus >> arkkitehtuurin noudattaminen Hakkerit tarvitsevat yhteisen, yksinkertaisen ohjelmistoarkkitehtuurin, mutta eivät jaksa tai halua noudattaa sitä loppuun saakka Apache Apache : WWW-palvelinten markkinajohtaja (yli 50%, noin 5 miljoonaa asennusta) Kehitystyö: alkoi 2/1995, versio 1.0 1/1996, jatkuu Tutkimus (A. Mockus, R.T. Fielding, J.D. Herbsleb: 22nd Int. Conference on Software Engineering, 2000): kehityshistoria 2/1995-5/1999 50.000 sähköpostiviestiä, osa muutosehdotuksia versiohistoria 4000 ongelmaraporttia vertailu viiteen tavalliseen tuoteprojektiin Harri Laine, Jukka Paakki 21 Harri Laine, Jukka Paakki 22 Apache Toisin kuin tavallisissa, toimivissa projekteissa : ei määriteltyä prosessia, ei projektisuunnitelmaa, ei aikataulua, ei tarkkaa teknistä suunnittelua, ei tuotoslistaa, ei dokumentaatiota Toisin kuin tavallisissa, hyvin johdetuissa projekteissa : ei projektipäällikköä, ei tiukkaa kehitystiimiä, ei tehtävänjakoa, ei seurantamekanismeja, ei projekti- tai johtoryhmäkokouksia, ei yhteistä työtilaa vaan hajautettu ja dynaamisesti vaihtuva projektiryhmä Kuitenkin : kehitystyötä koordinoiva ydinryhmä (8-25 jäsentä), joka tekee kaikki tärkeät päätökset Apache Ongelman havaitseminen - vapaaehtoisten etsiminen - (ratkaisu - ratkaisun testaaminen paikallisilla Apache-kopioilla - ydinryhmän suorittama katselmointi)* - koodin vienti kirjastoon ja viralliseen Apache-versioon jakelua varten Vaihtoehtoisia ratkaisuja arvioimassa koko yhteisö Jokaisella virallisella julkistuksella vastuuhenkilö Kehittäjät työskentelevät pääasiassa ainoastaan heille tutun koodin parissa koodi ei rönsyile liikaa Jakeluun hyväksytyillä versioilla 400 ohjelmoijaa 460 kehittäjää tuotti muutoksiin johtaneet virheraportit 2600 kehittäjän raportit eivät johtaneet ohjelmamuutoksiin Toisin kuin tavallisissa projekteissa (?): pieni ydinporukka hoiti kehitystyön, valtaosa tuottamattomia vapaamatkustajia Harri Laine, Jukka Paakki 23 Harri Laine, Jukka Paakki 24 HY/TKTL 4

Apache 15 ydingurua tuotti 83% muutosehdotuksista ja 88% koodista Yli 3000 hakkeria tuotti virheraportteja eli osallistui testaukseen (tosin valtaosin turhaan, ilman muutosvaikutuksia) 15 ahkerimmasta virheraportoijasta ydinguruja oli vain 3 15 (osa-aikaisen) Apache-gurun keskim. tuottavuus 4300 riviä / vuosi, (päätoimisissa) tuoteprojekteissa 5400-38600 riviä / vuosi Vastaava muutosehdotusten käsittelyteho: Apache 110 / vuosi, tuoteprojektit 20-90 / vuosi Muutosehdotuksista 50% (ne, joista useimmat käyttäjät olivat riippuvaisia) ratkaistiin ja korjaukset levitettiin 1 päivässä Ydinryhmä n henkeä, korjausryhmä 10n henkeä, testausryhmä 100n henkeä (viimeinen massakin tarvitaan ehdottomasti) Kehittäjät ovat myös käyttäjiä Apache Käyttäjien raportoima virhetiheys: Apache 2.6 virhettä / 1000 riviä uutta koodia, tuoteprojektit 0.1-0.11 virhettä Kehittäjien raportoima virhetiheys (ennen julkistusta): Apache 2.6 virhettä / 1000 riviä uutta koodia, tuoteprojektit 5.7-6.9 virhettä Apache-projektista puuttuu varsinainen validointi- ja hyväksymistestausvaihe: hakkerit testaavat koodia vain omasta kokeneen käyttäjän näkökulmastaan Hakkerit tuottavat rakenteellisesti ( white-box ) parempaa koodia ja katselmoivat koodinsa yksityiskohdat paremmin Harri Laine, Jukka Paakki 25 Harri Laine, Jukka Paakki 26 Täyttäkää kurssikysely Lähiajan kokeet http://www.cs.helsinki.fi/kurssit/kyselyt/ 1. Kurssikoe: tiistai 18.3, klo 16-20, päärakennuksen sali 1 2. Uusintakoe / erilliskoe: perjantai 4.4, klo 14-18, auditorio Harri Laine, Jukka Paakki 27 Harri Laine, Jukka Paakki 28 HY/TKTL 5