290 likes | 429 Views
Ohjelmistotekniikka Tarkastukset ja katselmukset. Kevät 2002 Päivi Ovaska LTKK/Tite. Sisältö. Johdanto: terminologia Tarkastukset Esimerkki kustannusvaikutuksista Tarkastusmenettelyn vaiheet T arkastuslistat Tarkastusten vaikutus Ongelmat Case Bell Case Ellemtel.
E N D
OhjelmistotekniikkaTarkastukset ja katselmukset . Kevät 2002 Päivi Ovaska LTKK/Tite
Sisältö • Johdanto: terminologia • Tarkastukset • Esimerkki kustannusvaikutuksista • Tarkastusmenettelyn vaiheet • Tarkastuslistat • Tarkastusten vaikutus • Ongelmat • Case Bell • Case Ellemtel
Terminologiaa • Audit, assesment, arviointi: laatujärjestelmän ja organisaation toiminnan tarkastamista. • Management review = johdon katselmus, tarkastetaan projektin tilanne (tai koko laatujärjestelmän tilanne, ISO 9001). • Verifiointi, todentaminen: tuote on määrittelynsä mukainen. • Validointi, kelpoistaminen: tuote sopii käyttötarkoitukseensa. • Virhe (error, fault, failure) • väärin, ei speksin mukainen (speksin täydellisyys?) • ristiriita • puuttuu • liikaa • Virheiden luokittelu: vakava, lievä, kosmeettinen tms.
…terminologiaa • (Technical) Review = katselmus, tekninen katselmus • Tarkoituksena vaiheen päättymisen toteaminen, eli siis tehdä prosessin eteneminen näkyväksi. • Tärkeimmissä etapeissa, esimerkiksi määrittely- tai suunnitteluvaiheen päättyessä. Kattaa kokonaisen vaihetuotteen. • Paljon osallistujia, myös ulkopuolisia. • Inspection = tarkastus: • Tarkoituksena virheiden löytäminen. • Joustava aikataulutus, vaiheen aikana useita. • Tarkastettavana pienehkö kokonaisuus (tai osa laajempaa kokonaisuutta). • Muutamia osallistujia 3-6, projektin sisäinen. • Walkthrough = läpikäynti • Läpikäynti on epämuodollinen tarkastuksen muoto, joka tehdään yleensä vain koodille. • Tekijä selittää, mitä hän "luulee ohjelmansa tekevän". Termien katselmus, tarkastus ja läpikäynti käyttöedellä esitetyllä tavalla ei ole vakiintunut.
Tarkastukset • Tarkastusmenettely on systemaattinen yleisesti käytetty ryhmätyöhön perustuva menettely virheiden etsimiseksi mistä tahansa dokumentista ja myös ohjelmakoodista. • 5% to 15% projektin kustannuksista. • Miksi käytetään? • Tehokkaampi virheenetsimiskeino kuin testaus. • Mahdollista löytää 80% virheistä. • Virheet löytyvät aikaisemmin. • Parantaa etenemisen näkyvyyttä. • Toimii tiedonvälityskanavana. • Varmistetaan, että kaikki ymmärtävät asiat samalla tavalla. • Toimii koulutustilaisuutena. • Sitouttaa tuloksiin. • Stabiloi speksit..
Virhekustannusten kertautuminen Mitä kauemmin virhe on järjestelmässä, sen kalliimmaksi se tulee. On useasti näytetty toteen, että yli puolet (60%) tuotteesta käytön aikana löytyvistä virheistä on peräisin ohjelmointia edeltävistä vaiheista (määrittely, suunnittelu). Testaukseen ja virheiden poistamiseen kuluu 50-80% projektin ajasta. Ylläpitoon kuluu lisäksi yli puolet elinkaarikustannuksista. Johtopäätös: virheiden ennaltaehkäisyyn ja havaitsemiseen ajoissa kannattaa panostaa.
Esimerkki: virheiden etsiminen testaamalla Löytyvättarkastamalla ja osittain järj. testauksessa Löytyvättestaamalla ja tarkastamalla Löytyvätmoduulitestaamalla Moduulitestaus Ei löydytarkastamallaeikä testaamalla Korjausaika 0.5pv / virhe Järjestelmätestaus Korjausaika 2pv / virhe Ajankäyttö: 0.5pv*10+2pv*4= 13pv Asiakas
Esimerkki: virheiden etsiminen tarkastamalla Löytyvättarkastamalla ja ositain järj. testauksessa Löytyvättestaamalla ja tarkastamalla Tarkastus Löytyvätmoduulitestaamalla Korjausaika 0.2pv / virhe Ei löydytarkastamallaeikä testaamalla Moduulitestaus Korjausaika 0.5pv / virhe Ajankäyttö: 0.2pv*12 +0.5pv*5= n. 5pv Järjestelmätestaus Asiakas Korjausaika 2pv / virhe
Materiaali jaetaan ja esitellään lyhyesti. 15 min Sovitaan tarkastusistunnosta: aika, roolit. Vaiheet Ei saa olla Keskeneräinen, Alle 50 sivua. Osallistujat, aikataulu Tekijä korjaa Max. 2 tuntia Virheiden analysointi prosessin kehittämiseksi Materiaaliin tutustuminen, kirjataan: - "ei ymmärrä" -lista - virhelista - pikkuvirhelista (kirj. virheet) Joku osallistujista yhdessä korjaukset tehneen/tehneiden kanssa
Roolit • 2-6 henkeä. • Moderaattori eli juontaja eli puheenjohtaja: huolehtii aikataulussa pysymisestä ja asian etenemisestä kokouksessa (ei mielellään tekijän linjaesimies). Ohjeita puheenjohtajalle: hillitse selittelyä; huolehdi aikataulussa pysymisestä; estä rönsyily ja liika ideointi; rohkaise/provosoi passiivisia. • Tekijä (syytetty :-). Ohjeita tekijälle: älä selittele; älä tuo keskeneräistä tuotetta tarkastettavaksi. • Esittelijä: esittelee materiaalia (voi olla tekijä). • Sihteeri: kirjaa virheet (voi olla tekijä). • Tarkastaja: kaikki toimivat tarkastajina. • Muita rooleja: sovellusalueen tai jonkun teknologian asiantuntija, kieliasun tarkastaja, käyttäjänäkökulman edustaja… • Ohjeita kaikille: valmistaudu huolellisesti; ole ystävällinen, varo loukkaamasta tekijää; pysyttele teknisissä asioissa -- arvioi tuotetta, älä tekijää; anna myös positiivisia kommentteja; osoita ongelmat; älä esitä korjausehdotuksia; anna korjaukset pikkuvirheisiin.
Tarkastusistunto • Max. 2 tuntia. • Pitäisi syntyä synergiaa: löytyy uusia puuteita/virheitä. • Ei selitellä ja puolustella. • Ei pisteiden keräilyä. • Tilaisuus ei saa muuttua ideointipalaveriksi. • Etsitään virheet -- ei korjata. • Ei syytellä. • Sovitaan lopputuloksesta ja jälkiseurannasta. • Dokumenttina syntyy tarkastuspöytäkirja, johon tulos kirjataan: • osallistujat • ajankäyttö / osallistuja • hyväksytty / hylätty • korjausaikatauluyhteenveto virheistä • mahd. Seurantamenettely
Mitä tarkastetaan? • Seuraava lista suunnilleen prioriteettijärjesteyksessä. • Tarjous, sopimus(ISO 9001). • Määrittelydokumentit (toiminnallinen määrittely). • Projektisuunnitelma. • Suunnitteludokumentit (tekninen määrittely). • Testaussuunnitelmat. • Koodi. • Käyttäjälle menevä dokumentaatio. • Koulutusmateriaali, koulutussuunnitelma. • Käyttöönottosuunnitelma.
Tarkastuslistat • Käytetään apuna tarkastuksissa. • Laaditaan (ja ylläpidetään) kutakin vaihetuotetta varten kokemusten perusteella. • Tarkastuslistat voivat olla projekti/tuotekohtaisesti - dynaamisia (=uusia kohtia lisätään tarkastustenyhteydessä). • Esimerkki, opetusohjelman muuttaminen jonkun kurssin osalta • Soveltuvuus pääaineeseen, vs. sivuaineet • Koulutusohjelman vaihtajat • Koulutusohjelman rakenne • Rajapinnat muihin kursseihin, päällekäisyys • Kurssien rytmitys lukujärjestykseen • Käytettävissä olevat opettajat • Laitteet/ohjelmistot • Opetustilavaikutukset • Kustannusvaikutukset • Toimintamallit siirtymäkaudelle • Imago ja politiikka
Tarkastusten vaikutuksesta • Tarkastusten käyttö muuttaa kustannusjakauman etupainotteisemmaksi. • Monet virheet eivät löydy testaamalla • Tarkoituksena on löytää virheitä => inhimillisesti ottaen "arkaluontoinen" prosessi. • Tarkastuksella voidaan löytää tyypillisesti n. 80% virheistä (= enemmän kuin esimerkiksi testaamalla). • Tarkastukset yleensä n. 5-15% projektin kokonaistyömäärästä. • Tarkastuksilla on myös muita etuja. • Varahenkilö • Oppiminen • Perehtyminen toisten tekemään työhön. • Sitoutuminen projektin tuloksiin.
Staffing costs Without inspections Staff resources With inspections Req’s Design Coding Testing
Pahimmat ongelmat • Pahimmat kompastuskivet: asenteet ja organisointi. • Tarkastustilaisuudessa • Valmistautumattomuus • Perehtymisen työmäärä • Motivointi, asenteet • Rönsyily • Lepsu puheenjohtaja • Ideointi, korjailu • Työmäärää ei oteta huomioon aikataulutuksessa (varsinkin muiden projektien tarkastuksiin osallistuminen) • Liikaa materiaalia
Experience with Inspections in Ultra-Large Scale Developments. • Raportti Bell-Northern Researchin tarkastusten käyttöönotosta. • Toimittaa puhelinkeskuksia, koodin kokonaismäärä 15 miljoonaa riviä. • Tuloksia 2.5 miljoonan koodirivin tarkastuksista (rivimäärät eivät sisällä kommentteja). • Tarkastus neljän hengen ryhmissä: pj, sihteeri, esittelijä, tekijä. • Työteho: 0.8-1 virhettä/htt (henkilötyötunti). • htt sisältää myös valmisteluun käytetyn ajan. • 2-4 kertaa nopeampaa kuin virheiden etsiminen ja korjaaminen testaamalla. • Asiakkaan raportoiman virheen korjaus vie keskimäärin 4.5 työ päivää. • Tarkastusvauhti 150 riviä tunnissa (Fagan: esittelyssä 500 riviä, valmistautuessa 125 riviä tunnissa ja tarkastuksessa 90 riviä tunnissa).
Havaintoja • Koodissa aluksi virheitä n. 40-50 kpl tuhatta riviä kohti. • Näistä 80% on löydettävissä tarkastamalla (sopivalla vauhdilla). • Virheitä, jotka eivät löydy testaamalla • turha koodi, • standardeja noudattamaton koodi ja • kommenteissa olevat virheet.
Virheiden poistaminen tarkastamalla koodia on huomattavasti testausta halvempaa. Miksi? • Testaus • Testin suunnittelu. • Testiympäristön pystyttäminen. • Testin suorittaminen. • Tulosten tarkastaminen => virheet. • Virheiden jäljitys (debug). • Virheiden korjaus. • Tarkastaminen. • Yleiskatsaus. • Valmistautuminen. • Tarkastus. • Korjaus: jäljitystä ei tarvita, korjaukset usein ilmeisiä.
Ongelmia • Tarkastusten tehokkuudesta ei ole käytettävissä todisteita. • Tarkastukset vievät paljon aikaa (virheet vievät vielä enemmän). • Väärinkäsitykset tarkastustekniikasta: mitä tahansa kommentointia pidetään tarkastuksena. • "Low tech" -tekniikan imago, ihmiset luulevat, että testaus ja jäljitys on nopeampaa.
Case 2 - ELLEMTEL (=Ericsson) OS32 • Changing operating system for a new processor • Size: 200 khours = 115 man-years • Total number of people: 73 • Duration: ~ 30 months • Compiler developed in parallel with this project • Processor board developed in parallel with this project -> Neither target machine nor compiler for the machine were not available for SW designers
Case 2 - ELLEMTEL OS32 • Cleanroom technology • Incremental developments • Extensive reviews of ALL documents: 2 days/week • No compilation until system design test phase • No unit debugging • Think Tank - Cross functional team to solve technical problems early • Work in teams instead of one designer per block • Used to be: “Reviews take ‘my’ time so ‘I’ can’t follow my schedule”
Case 2 - ELLEMTEL OS32 EXTENSIVE REVIEWS • 40% preparation and review time planned per designer • One day for preparation, one day for reviews per week • If not enough material for review, the day will be used for work meetings. • 60 weeks of design -> 120 days for reviews. • 120 days for reviews instead of debugging: no loss of calendar time • A way to ensure that everybody is working for the same goal • To spread knowledge • Weak designers get more support • Improved follow-up and feed-back
Case 2 - ELLEMTEL OS32 RESULTS • Planned hours vs. accrued +/- 5% on yearly basis. • Time schedule compliance within 2-3 weeks on yearly basis • In testing it takes 17,3 man hours to find one defect • In reviews it takes 0,9 man hours to find one defect • The most important benefit: iterative development by frequent reviews • The use of development teams was a success • Loss of prestige is avoided by teamwork and by reviewing it before errors cumulate. • Improved follow-up and feedback
Case 2 - ELLEMTEL OS32 RESULTS Typical Ericsson Cleanroom Unit • Efficiency: 2,06 6 LOC/man hour • Internal faults 0,6 1,7-3,4 F/KLOC (From the 1st execution) • Faults during operation ? 0-0,1 F/KLOC