Ohjelmisojen suunnielumeneelmä ja -yökalu Seminaariyö esauksesa Annemari Auvinen (annauvi@s.jyu.i) Anu Niemi (anniemi@s.jyu.i) 0.6.00
Sisällyslueelo Tesaus osana ohjelmisoprosessia.... Tesivaihee..... Luokkaesaus..... Komponeniesaus... 3..3 Inegraaioesaus... 3..4 Järjeselmäesaus... 3..5 Vaiheiden oisaminen... 4. Tesausmeneelmä... 4.3 Tesisuunnielma... 5.4 Tesauksen suoriaminen... 6 Huomaamaa jääneiden virheiden lukumäärän arvioini... 9. Kaselmoinnissa huomaamaa jääneiden virheiden määrän arvioini... 9.. Capure-recapure -malli... 0.. Erilaise esimaaori.....3 Tukimusulokse... 3. Niiden komponenien lukumäärän arvioini, joissa esiinyy virheiä julkaisun jälkeen, mua ei esauksen aikana... 4.. Virheellisen komponenien lukumäärän arvioini... 5.. Case sudy... 6 3 Tesauksen liiyminen muihin luenoihin sekä aikaisemmin käyyihin kursseihin...
4 Lähdelueelo...
Tesaus osana ohjelmisoprosessia Vaikka esaus onkin ohjelmisoprosessin viimeinen vaihe, siä suunniellaan ja oeueaan koko prosessin ajan. Tesauksen suunnielu aloieaan jo analyysi- ai suunnieluvaiheessa ja siä ehdään koko oeuuksen ajan. Tesauksen arkoiuksena on löyää virheiä sekä osoiaa, eä ohjelmiso oimii aseeujen vaaimusen mukaisesi. Virheiden löyäminen mahdollisimman aikaisessa vaiheessa ohjelmisoprosessia mahdollisaa aloudellisen resurssien paremman hyödynämisen. Virheiden korjaaminen ohjelmison julkaisemisen jälkeen on moninkerroin kalliimpaa kuin silloin, jos virhe olisi löydey jo prosessin aikaisemmassa vaiheessa. Lisäksi virheen löyyminen julkaisusa uoeesa aiheuaa yriykselle huonoa mainea. Kuienkin esaus on usein se, missä sääseään ja puolivalmis ohjelmiso laieaan markkinoille ja ajaellaan, eä asiakas esaa. Lisäksi yleinen myyi on, eä virhee ova huonojen ohjelmoijien vikoja. Sopivien esaajien valina on ärkeää. Joskus uusi yönekijä saaaa olla hyvä valina, koska hänellä on kova halu löyää virheiä ohjelmisosa ja näyää oma kykynsä. Toisaala esausryhmä ei saa myöskään olla kokemaomin, vaan sen piäisi olla mahdollisimman monipuolinen. Huonoa ohjelmoijaa ei ikinä saa laiaa esaamaan. Tesaajan piäisi olla myös ongelma-alueen asianunija ja osaa käyää ohjelmisoa kuen loppukäyäjä. Ohjelmoijan ekemää omaa ohjelmisoa piää olla aina esaamassa joku muukin. Ohjelmoija kyllä ieää oman koodinsa vaaranpaika, mua saaaa esaa siä liian helläkäisesi. Koska äydellinen esaus on yleisesi oaen mahdoona, esin kaavuudelle aseeaan yleensä arvo, joka on esauksessa läpikäyyjen koodirivien prosenuaalinen osuus kaikisa riveisä. Kaavuuden minimivaaimus on avallisesi 75%. Kaavuua käyeään luokka- ja komponeniesauksessa. Ennen esauksen aloiamisa äyyy sopia esauksen aloiamis- ja lopeamiskrieeri. Lisäksi jokaisella esivaiheella äyyy olla arkasi määriely lopeamiskrieeri eli eho, jonka saavuamisen jälkeen voidaan siiryä seuraavaan esivaiheeseen. Yleensä ämä eho koosuu onnisuneiden esiapauksien
suheellisesa lukumääräsä ja kaavuudesa, joka piää saavuaa. Lisäksi ehdossa on määriely korjaamaomien virheiden salliu lukumäärä kaegorioiain (ks. luku.4), kuienkin niin, eä yleensä aaaleja ja vakavia virheiä ei saa esiinyä lainkaan. Käyännössä esausehoon kuuluva usein myös projekin virsanpylvää.. Tesivaihee Tesaus jakauuu luokka-, komponeni-, inegraaio- ja järjeselmäesaukseen sekä mahdollisesi hyväksymisesaukseen. Jokaisessa vaiheessa esaaan ieyä ohjelmison oiminnallisuua ja henkilö, meneelmä ja yökalu vaiheleva. Kussakin projekissa vaadiu esausvaihee on määrielävä projekisuunnielmassa. Tesauksen edeessä siirryään vaihe vaiheela yleisemmälle asolle ja samalla esikaavuus pienenee. Löydeyjä virheiä on vähemmän, mua ne ova hankalampia korjaa... Luokkaesaus Luokkaesaus on eriäin ärkeää eenkin käyeäessä C++-ohjelmoinikielä, joka on osoiimiensa ja muisin hallinansa akia aliimpi virheille kuin esimerkiksi Java. Käyöliiymä jäeään yleensä luokkaesauksen ulkopuolelle. Henkilö, joka on oeuanu luokan, esaa sen normaalisi jo hei luokan valmisuua eikä äsä kirjoiea esisuunnielmaa. Ajureia kannaaa käyää aina kun se on mahdollisa, koska niiden avulla voidaan sääsää aikaa. Ajuri on ohjelma, joka kusuu luokan meodeja ja se voi oimia myös esisuunnielmana. Tesikaavuus on luokkaesauksessa normaalisi 75%, mua käyännössä kannaaa pyrkiä parempaan kaavuueen. Kirjasoille aseeu kaavuus on yleensä 85%-00% ja urvallisuuskriiisissä ohjelmisoissa vaadiaan äydellisä kaavuua. Luokkaesauksessa kaikki meodi ulisi esaa kaikilla mahdollisilla syöeillä, eriyisesi kaikki syöeiden erikoisapaukse ulisi käydä läpi. Myös kaikki mahdollise vasee ulee saada. Toeuusa ei ule ikinä muuaa vain esikaavuuden saavuamiseksi. Kaavuuden laskemiseen sekä ajonaikaisen virheiden ja muisivuoojen huomaamiseen kannaaa käyää yökaluja, joiden mahdollisesi uoama rapori käyvä esiraporeisa.
3.. Komponeniesaus Komponeniesauksessa esaaan luokkien välisä oiminaa. Tää vaihea kusuaan myös moduuliesaukseksi ja siiä kirjoieaan aina esisuunnielma. Tesiskripejä ja simulaaoreia kannaaa käyää apuna, jos se on mahdollisa. Suunnieludokumenia käyeään pohjana komponeniesaukselle. Tesauksessa on käyävä läpi kaikki siinä aseeu oiminnallisuude. Tyypillisiä esiapauksia ova esimerkiksi käynnisäminen, pysäyäminen ja ieokanayheyde. Tesiraporiin kirjaaan päivämäärä ja esaaja, esiapauksen ulos, mahdollisesi kommeneja sekä yheenveo suorieuisa eseisä...3 Inegraaioesaus Inegraaioesaus suorieaan, jos ohjelmiso kosuu useammasa kuin yhdesä komponenisa. Tässä vaiheessa esauksen koheena on komponenien välinen oimina. Tesisuunnielma voidaan kirjoiaa ja kaselmoida arkkiehuurin suunnielun jälkeen, kuienkin viimeisään ennen oeuusa. Tesiapaukse luodaan arkkiehuurisuunnielmassa kuvaun oiminnallisuuden pohjala. Tesauksen suoriava projekin jäsene yleensä konrolloiduissa laboraorioolosuheissa. Toimivan esausympärisön luomisesa vasaava avallisesi muu kuin projekin jäsene, koska esaajien on pysyävä keskiymään pelkäsään ohjelmison eikä ympärisön esaamiseen. Inegraaioesauksessa ulisi simulaaoreiden sijaan käyää oikeaa maeriaalia ja oikeia laieia...4 Järjeselmäesaus Järjeselmäesaus on viimeinen esausvaihe. Se varmisaa, eä kaikki oimii niin kuin on suunnielu. Tesaus suorieaan loppukäyäjän näkökulmasa käyöapauksien avulla ja sen arkoiuksena on löyää virheiä järjeselmän oiminnassa. Tesauksen suoriava avallisesi projekin ulkopuolise henkilö.
4..5 Vaiheiden oisaminen Luokkaesaus suorieaan yleensä vain kerran. Inegraaio- ai järjeselmäesauksessa löydeyn virheen korjaamisen jälkeen suorieaan komponeniesaus uudelleen. Ieraiivisessa ja inkremenaalisessa prosessissa esaus suorieaan mona keraa. Muueu ai uude ominaisuude ulee esaa sekä vanha esiapaukse ajaa uudelleen. Aikaisemma esiapaukse ulee ajaa uudelleen myös aina virheiden korjaamisen ai uuden ominaisuuden lisäämisen jälkeen. Tämän arkoiuksena on varmisaa, eeivä muuokse aiheua virheiä niihin ohjelmison osiin, joka oimiva aikaisemmin oikein.. Tesausmeneelmä Musalaaikkoesaus keskiyy oiminnallisuuden esaamiseen loppukäyäjän näkökulmasa. Ohjelmison syöee ja vasee nähdään, mua ei varsinaisa oeuusa. Tesaajala ei vaadia ohjelmoinikokemusa ja yleensä esaaja onkin joku muu kuin suunnielija, esimerkiksi loppukäyäjä. Lasilaaikkoesauksen avoieena on virheiden löyäminen oeuuksesa. Sovellus esaaan järjeselmällisesi läpikäymällä mm. kaikki unkio, luoka, dialogi ja käyöliiymäkomponeni. Tesaajala vaadiaan oeuuksen rakeneen ymmärämisä, joa myös mahdollise heiko kohda löydeään. Tesaaja voi olla suunnielija ai muu projekin jäsen. Harmaalaaikkoesaus on musalaaikko- ja lasilaaikkoesauksen välimuoo. Tesaajan äyyy ymmärää joakin koodin oiminnasa ja esiapauksia esiään koodin avulla. Alhaala ylöspäin suunauuvassa esauksessa esaus aloieaan komponeneisa, joka eivä riipu muisa moduuleisa, ja seuraava mukaan oeava komponeni riippuva aina edellisisä esauisa komponeneisa. Tää jakeaan kunnes kaikki komponeni on esau ja yhdisey oisiinsa. Tämä meneelmä on suosiuin komponeni- ja inegraaioesauksessa.
5 Ylhäälä alaspäin ehävässä inegraaiossa käyeään inkremenaalisa lähesymisapaa ohjelman rakeneeseen. Siinä aloieaan pääohjelmasa ja siirryään aina alaspäin hierarkiassa. Moduuleia voidaan yhdisää joko syvyys- ai leveyssuunnassa. Syvyyssuunnassa oeaan avallisesi ensin kaikki ärkeimmässä konrollipolussa oleva moduuli ja sen jälkeen käydään läpi seuraava haara. Leveyssuunaisessa läpikäynnissä moduuli oeaan aina aso kerrallaan..3 Tesisuunnielma Jokainen esauksen vaihe jakauuu esausympärisön dokumenoiniin ja esiapausen luomiseen. Tesisuunnielma äyyy aina kaselmoida ja hyväksyä. Tesiympärisön dokumenoinnin avulla voidaan ympärisö arviaessa luoda uudesaan sekä löyää ympärisön aiheuama virhee. Ympärisösä ulisi dokumenoida mm. käyey käyöjärjeselmä, käänäjä, verkko-ohjelmiso, ieokanna, esiajuri, esidaan generoija, esianalysaaori, laieison osa ja ympärisön pysyämisohjee. Tesiapauksilla arkoieaan skenaarioia, joka kaava esaavan asian oiminnallisuuden. Tapaus koosuu esiehdoisa, sen kuvauksesa, käyeyisä yökaluisa, suoriusohjeisa, oleeuisa uloksisa sekä uloksien arkasusohjeisa ja kommeneisa, joia ova esimerkiksi esauspäivämäärä, esin ulos ja esaaja. Jokaisen esiapauksen ulee olla yksikäsieinen eikä useampi apaus saa käsiellä samaa asiaa. Tesiapauksen ulisi olla niin yksiyiskohainen, eä kuka ahansa projekin jäsen ai ulkopuolinen henkilö pysyy sen suoriamaan. Lisäksi esiapauksen ulisi olla yksinkerainen, mielellään alle kymmenen vaihea yhdessä apauksessa. Mahdoomia apauksia kannaaa välää, kuen operaaion suoriamisa ja samanaikaisa ieokannan alasajoa, jossa operaaion suorius saaaa olla niin nopea, eei muua ehdiä ekemään. Tesaussuunnielman yleisiin virheisiin kuuluu yksiäisen oiminojen esaus käyöapauksien sijaan. Tesaaminen eri ympärisöissä saaeaan myös unohaa. Asennusskiripien esaus piää muisaa myös lisää suunnielmaan. Beeaesaajien lisäksi piää muisaa esaa muillakin ryhmillä, koska beeaesaaja saaaa piää ärkeinä aivan eri asioia kuin loppukäyäjä ai hyväksyä epävakaankin ohjelman, koska ei ole maksanu siiä.
6.4 Tesauksen suoriaminen Tesi suorieaan ehdyn suunnielman mukaan apaus kerrallaan. Jos yksi esi epäonnisuu, muu pyriään sili suoriamaan, mikäli apaukse eivä riipu oisisaan. Jokaisesa suoriuksesa raporoidaan komponenin versio, esin ulos ja mahdollisen virheiden kuvaus. Virhee piää kuvaa niin arkasi, eä sama virhe voidaan generoida arviaessa uudesaan. Virhee piäisi pysyä kaegorisoimaan esimerkiksi aaaleihin, vakaviin, vähäisiin ja kosmeeisiin virheisiin. Virhe on aaali, jos jokin oiminnallisuus ei oimi lainkaan. Vakava virhe aas voi olla esimerkiksi vaadiua hiaampi suorius. Jos jokin ominaisuus on hieman hankala käyää, mua se voidaan kierää helposi, voidaan puhua vähäisesä virheesä. Virhee kannaaa kaegorisoida järjeselmällisesi ja lisäksi käyää alakaegorioia. Lisäksi kannaaa luoda oma kaegoria virheille, joka mahdollisesi korjaaan seuraavissa versioissa sekä niille virheille, joka huomaaan myöhemmin aiheeomiksi. Kaegorioinijärjeselmäsä piää ehdä mahdollisimman yksinkerainen ja selkeä sekä virheiden luokielusa kaegorioihin ulee anaa selkeä ohjee esaajille. Uusien apausen luoni esin aikana on suosielavaa. Ne lisäään suunnielmaan ja voidaan hyväksyä myöhemmin. Tesiapauksen ulkopuolella löydey virhee piää myöskin raporoida, koska suunnielemaoma virhee oeuuva odennäköisemmin kuin suunniellu. Näiä virheiä voidaan käyää myös uusien esiapausen pohjana. Uusia apauksia ulee luoua auomaaisesi myös silloin, kun ohjelmisoa käyeään. Eri ihmise käyävä samaakin ohjelmisoa eri avalla eikä suunnielmaa usein noudaea kirjaimellisesi. Käyöliiymää esaaan komponeniesauksessa sekä inegraaio- ja järjeselmäesauksessa, joissa esiapaukse ajeaan käyöliiymän kaua. Tesiapauksia saaaa olla saoja, esimerkiksi ohjelman käynnisäminen ja sulkeminen, avusukse, painikkeiden ja valikoiden oiminnallisuus, siiryminen ikkunasa oiseen, ikkunoiden koon muuaminen, ikkunoiden siiräminen ja sulkeminen, kopioini ja liiäminen, raahaaminen ja ipuaminen sekä ohjelman vakaus. Käyöliiymää esaaan käyeävyysesauksella jo käyöliiymän suunnielun yheydessä.
7 Inegraaio- ja järjeselmäesaukseen kuuluu myös usein suoriuskyvyn, kuormiuksen ja vakauden esaus sekä joskus myös kuormiuksesa erillään sressiesaus. Näiden esien jääminen viime hekiin on yleinen virhe. Mikäli joain hälyävää löyyy, saaeaan jouua ekemään suuria muuoksia ja esaamaan uudelleen, mikä saaaa viedä paljon aikaa. Toisaala nämä ova asioia, joia on vaikea esaa sovelluksen ollessa keskeneräinen. Yheensopivuusesauksessa esaaan, eä ohjelmiso ukee kolmannen osapuolen oimiamien komponenien eri versioia ja usein esaus eroeaan varsinaisesa ohjelmison kehiysprosessisa. Hyväksymisesauksen suoriaa asiakas sen jälkeen, kun ohjelmiso on oimieu. Toimiaja voi avusaa valmisauumisessa esimerkiksi kirjoiamalla esisuunnielman. Tesausa voi helpoaa ja nopeuaa huomaavasi sopivilla yökaluilla. Tesikaavuuden laskemiseen on olemassa esimerkiksi C++-kielelle CTC++ ja PureCovegare yökalu sekä Javalle JProbe Coverage ja Opimizei Code Coverage. Näillä voidaan esimerkiksi laskea kaavuus jokaiselle unkiolle ja iedosolle. Ajonaikaisen virheiden ja muisivuoojen havaisemisen avuksi löyyy C++-kielelle Puriy ja Insure sekä Javalle JProbe Proile ja Opimizei Proiler yökalu. JUni on yökalu esiajureiden kirjoiamiseen Java-luokille. Lisäksi löyyy auomaisoiuja yökaluja käyöliiymäesaukseen. Niissä esiskripi nauhoieaan kuen makro, skripi ukeva useia ohjelmoinikieliä ja esi voidaan ajaa hiljaisena aikana. Yksi näisä yökaluisa on Vermon HighTes, joka on arkoieu Windows-ympärisöön. Raional Robo puolesaan oimii usealla eri alusalla ja sama generoiu skripi voidaan ajaa useilla alusoilla. Luokkaesaus pysyään helposi auomaisoimaan käyämällä komenoiedosoja esimerkiksi ajurien käynnisämiseen ja uloksien arkasamiseen. Komenoiedosoja voidaan käyää myös komponeniesauksessa. Auomaaisella esauksella samoja esejä pysyään ajamaan yhä uudelleen ja uudelleen. Se on kuienkin invesoini, jonka edu verrauna kusannuksiin ulee arvioida. Aivan kaikkea ei pysyä auomaisoimaan, esimerkiksi ulosen arvioinia, esiehojen määrielemisä ai ympärisön aseamisa. Auomaisoini on kuienkin
8 käyännöllisä ja kannaavaa eriyisesi inkremenaalisessa ja ieraiivisessa prosessissa ai kun ohjelmison piää ukea useia alusoja. Auomaisoini ei kuienkaan korvaa hyvää esisuunnielmaa.
9 Huomaamaa jääneiden virheiden lukumäärän arvioini Valisimme kaksi esaukseen läheisesi liiyvää arikkelia, joka molemma käsielivä huomaamaa jääneiden virheiden lukumäärän arvioinia. James Millerin arikkeli [] käsieli kaselmoinnin jälkeisä ilannea. Toisessa Sringellowin, Andrewsin, Wohlinin ja Peerssonin arikkelissa [3] arvioiiin niiden komponenien lukumäärää, joissa esiinyy virheiä julkaisun jälkeen, mua ei esauksen aikana. Kaselmoinnissa huomaamaa jääneiden virheiden määrän arvioini Kaselmoiniapahuman arkoius on löyää dokumeneisa mahdollisia virheiä. Miä aikaisemmassa vaiheessa virhee kyeään havaisemaan siä suurempi on sääsö. Valieavasi usea yriykse eivä kuienkaan määriele kaselmoiniprosessiaan arpeeksi arkasi eikä esimerkiksi kaselmoiniapahuman lopeuspääös perusu mihinkään suoranaiseen miariin. Miareia on kuienkin olemassa. Yksi käyeyimmisä on se, eä arvioidaan kuinka mona virheä kaselmoiavassa dokumenissa on jäljellä. Tämä arvio voidaan perusaa joko siihen, kuinka paljon virheiä on dokumeneisa löyyny ai hisoriaan. Lähde [] keskiyy arvioimaan jäljellä olevien vikojen määrää kaselmoinnissa jo löydeyjen vikojen lukumäärän pohjala. Kaselmoiniapahumaan ja eenkin siihen käyeäviin resursseihin liiyy aina bisnesavoiee, joka vaiheleva apauskohaisesi. Mikäli kaselmoiavalle uoeelle on aseeu esimerkiksi korkea saaavuusavoiee, on odennäköisesi ärkeämpää, eä löydeään jäljellä oleva virhee, kuin se, eä minimoidaan resurssien käyöä. Tällöin käyeään yleensä jäljellä olevien vikojen arvioinnissa esimaaoria, joka mielellään yliarvioi jäljellä olevien vikojen määrän. Usein uoeen luoeavuus on ärkeä, mua ei kuienkaan kriiinen ekijä uoeen menesyksen kannala. Tällöin uoeen valmisuskusannus on yksi ärkeä ekijä mieiäessä resurssien käyöä. Näissä apauksissa voidaan käyää kaselmoinnin jälkeen jäljellä olevien vikojen arvioiniin esimaaoria, joka saaaa anaa hieman odellisuua paremman kuvan.
0.. Capure-recapure -malli Capure-recapure-malleissa oleeaan, eä kun kaselmoiava dokumeni on juliseu kaselmoiavaksi, siä ei enää muuea. Lisäksi kaselmoijan yön ulee olla asalaauisa, esimerkiksi jos sama dokumeni anneaisiin uudelleen kaselmoiavaksi, kaselmoijan ulisi löyää yhä paljon puueia. Kaselmoijien ei ule myöskään paljasaa löydöksiään muille kaselmoijille ja heidän piää dokumenoida kaikki löyämänsä virhee. Lisäksi kaselmoiniprosessin aikana ei ule hylää yhään oikeaa huomioa puueisa. Kaikille kaselmoijille ulee oimiaa sama kaselmoiavaan maeriaaliin liiyvä inormaaio. Capure-recapure-mallia on kehiey yli 40 vuoa. Tänä aikana ilasoieeilijä ova luokiellee malleja kolmen vaihelevuua aiheuavan ekijän, käyäyymisen, heerogeenisyyden ja ajan, mukaan. Käyäyymiseen perusuvissa malleissa yksiäisen virheen löyymisodennäköisyys vaihelee ajanheken mukaan. Tämän luokan mallien sovelamisa kaselmoinnissa käyeäviksi ei ole juuri harkiu. Heerogeenisyydellä arkoieaan siä, eä jokaisella yksiäisellä virheellä on eri odennäköisyys jäädä kiinni. Tähän luokkaan perusuvien arvioinimallien oeuaminen on varsin vaikeaa, koska mallien hyödynäminen vaaisi kaikkien mahdollisen kaselmoiniskenaarioiden yypiämisen. Lisäksi luokielun ulisi olla oiseavaa. Ajan mukaan luokielaessa virheen löyymisen odennäköisyys vaihelee ajankohdan mukaan. Kaselmoiniin sovelleaessa aikaekijänä käyeään yksiäisä kaselmoijaa, koska kaselmoijien kyky löyää virheiä vaihelee. Tämän luokan malleisa kaikisa yksinkeraisin on Lincoln-Peerson-esimaaori. Esimaaorin käyöä kaselmoiiin hankaloiaa kuienkin se, eä kyseinen esimaaori on arkoieu ainoasaan kahden kaselmoijan apaukselle. Vaikka malli voidaan pääsäänöisesi jakaa näihin luokkiin, esimaaori voiva myös yliää luokkien raja.
.. Erilaise esimaaori Esielävissä kaavoissa M on arvio virheiden lukumääräsä, D on erillisen löydöksien lukumäärä, N kuuluu kokonaislukujoukkoon N joka on alkaa luvusa D, n on löydöksien lukumäärä ja on kaselmoiniapahumien lukumäärä. Null-esimaaori perusuu hypergeomerisiin unkioihin. Muisa esielävisä esimaaoreisa poikeen Null-esimaaoria ei voida luokiella mihinkään ylläolevisa luokisa. M N! maxln nln( n) ( N n)ln( N n) N ln( N) ( N D)! N Jacknie-esimaaori on heerogeeninen esimaaori. Siä käyeäessä i -ermillä kuvaaan siä, kuinka monesi sama virhe i löydeiin, eli D i i Useia erillisiä esimaaoreia on rakenneu Jacknie-esimaaorin pohjala. Jakossa Jacknie-esimaaoreisa käyeään ermejä J, J, J3, J4 ja J5. D M J 3 D ( ) M J 3 6 D 3 5 9 3 ( 3) ( ) M J 3 3
Chaon heerogeenisyysesimaaorin mukaan sama virhe löydeään odennäköisimmin kerran ai kahdesi oisin kuin aas Jacknie-esimaaori olei. Tähän esimaaoriin viiaaan merkinnällä Chao H. Maximum likelihood -esimaaori MLE voidaan ajaella olevan laajennus Nullesimaaoriin lisäparamerina aika. Chaon aikaesimaaoriin viiaaan merkinnällä Chao T. Chaon heerogeenisyys-aikaesimaaoriin kuuluu kolme eri esimaaoria, joissa odennäköisyys vaihelee aika- ja heerogeenisyysmuuujien mukaan. Jakossa näihin esimaaoreihin viiaaan merkinnöillä Chao TH, Chao TH ja Chao TH3. i i i i i i M N N n N n N n n D N N N ) ln( ) )ln( ( ) ln( )! (! ln max D M J 4 4 3 3 4 3) )( ( 4) ( ) ( 75 48 4 3 55 36 0 0 4 D M J 5 5 4 5 5 3 3 5 4) 3)( )( ( 5) ( 3) )( ( 5) ( 4) ( ) ( 660 485 0 0 5 70 0 5 5 D M ) ( Z D M i i
3 M k k k M k k k M 3 3 6 ( )( ) k k k..3 Tukimusulokse Tukimuksessa ryhmän koon ollessa kolme Chaon malli uoiva äärimmäisen suuria maksimiarvoja. Chaon TH -malli oliva eriäin epävakaia, kuienkin TH-mallin mediaani oli lähimpänä nollaa. Aikaluokkaan kuuluva malli aliarvioiva virheiden lukumäärän 75% apauksisa, heerogeenise malli pärjäsivä paremmin verailussa. Jacknie-esimaaori anoiva ässä apauksessa kaikisa sabiileimma arvio. Eenkin J-esimaaori vaikui käyökelpoisela kolmen kaselmoijan apauksessa. Neljän kaselmoijan apauksessa Chaon malli uoiva parempia uloksia. Ne oliva sabiilimpia kuin aiemmin, vaikka edelleen ne anoiva suuria maksimiarvoja. J-malli oli ässäkin apauksessa paras vaihoeho. J-malli oli edelleen paras viiden kaselmoijankin apauksessa. Muukin malli näyivä ulevan vakaammiksi, vaikka edelleen aliarvioinia apahuikin. Ryhmän koon ollessa kuusi J-malli oli edelleen paras, mua ällä ryhmäkoolla sen rinnalla voiaisiin käyää myös Chaon TH esimaaoreia, joka ryhmän koon kasvamisen myöä muuuiva vakaammiksi.
4. Niiden komponenien lukumäärän arvioini, joissa esiinyy virheiä julkaisun jälkeen, mua ei esauksen aikana Komponeni, joissa on virheiä julkaisun jälkeen, mua ei esauksen aikana, osoiava, eä esausprosessissa on aukkoja. Joko komponeneja ei ole esau arpeeksi ai vanhoihin komponeneihin on ullu virheiä uudelleenkäyössä. Viimeksi mainiu on pahempi, koska asiakkaa anava usein helpommin aneeksi sen, eä jokin uusi piirre ei oimi kunnolla, kuin eä jo olemassa oleva oimino lakkaa oimimasa. Tukimuksessa keskiyiin nimenomaan virheellisen komponenien eikä yksiäisen virheiden lukumäärän arvioiniin käyäen capure-recapure ja curve-iing-malleja. Verailuna käyeiin yksinkeraisa kokemusperäisä meodia. Arvioia voidaan käyää pääökseen siiä, lopeeaanko esaus ja julkaisaanko uoe vai ei. Loppuuloksesa näkyy, eä meodi oimiva melko hyvin. Kokemuspohjaise arvioinimeodi käyävä hisoriaieoja, joka on saau saman julkaisun aikaisemmisa vaiheisa ai aikaisemmisa julkaisuisa. Sen sijaan capurerecapure ja curve-iing-meodi pohjauuva useiden kaselmoijien kaselmoiniraporeihin eiväkä arvise hisoriaieoja. Tukimuksessa käyeiin capure-recapure mallin seuraavia neljää kaegoriaa:. Tesiapauksilla oleeaan olevan sama kyky löyää virheiä ja eri virhee löydeään samalla odennäköisyydellä. Mallia kusuaan M0. Täsä kaegoriasa mukana oli Maximum-likelihood -meodi (m0ml).. Tesiapauksilla oleeaan olevan sama kyky löyää virheiä, mua erilaise virhee löydeään eri odennäköisyyksillä (malli Mh). Tukimuksessa käyeiin Jacknie-meodia mhjk. 3. Tesiapauksilla oleeaan olevan eri kyky löyää virheiä ja kaikki virhee löydeään samalla odennäköisyydellä. Mallisa M mukana oliva Maximumlikelihood -meodi (mml) sekä Chapman-meodi (mchpm).
5 4. Tesiapauksilla on eri kyky löyää virheiä ja eri virhee löydeään eri odennäköisyyksillä. Mallisa Mh mukana oli Chaon meodi (mhchao). Curve-iing malli oava esidaaa esiapauksisa ja sijoiava ne maemaaiseen unkioon, joa käyeään arvioinnissa. Perusajauksena on käyää daan graaisa esiysä arvioinnissa. Täsä on olemassa kaksi mallia:. Laskeva malli: Malleissa verraaan löydeyjä virheiä niiden esiapauksien lukumäärään, joka löysivä virheiä. Virhee järjeseään laskevasi esiapauksien lukumäärän peruseella. Tämän mallin esimaaori perusuva Deecion Proile meodiin (Dpm). Dpm(exp)-esimaaori perusuu eksponeniaaliseen käyrän soviukseen, kun aas dpm(lin) lineaariseen.. Kasvava malli: Malleissa verraaan kumulaiivisa löydeyjen virheiden määrää esimisapahumien kokonaislukumäärään. Järjesäminen ehdään samoin kuin laskevassakin mallissa. Arvioinimallina käyeiin kumulaiivisa meodia... Virheellisen komponenien lukumäärän arvioini Tesauksen alussa esipäällikkö aseaa kynnysarvoksi salliujen virheellisen komponenien lukumäärän. Jos esausa suoriaa useampi esiryhmä, voidaan arvioinnissa käyää capure-recapure ja curve-iing-malleja. Jokainen esiryhmä raporoi komponeni, joisa virheiä löyyi.. Jokaisen viikon lopussa keräään eri esiryhmien anama virhedaa komponeneisa. Komponenille anneaan arvoksi 0, jos siiä ei löyyny virheiä, muuen.. Capure-recapure ja curve-iing-arvioinimeodeja sovelleaan daaan. Arvioini anaa summan niiden komponenien määräsä, joisa löyyi virheiä lisäynä niiden komponenien lukumäärällä, joissa oleeaan olevan virheiä, vaikka eseissä ei miään löyynykään. 3. Kokemuspohjaisa arvioinimeodia käyeään daaan. Meodi käyää ekijää, joka laskeaan käyämällä aikaisempien julkaisujen ieoja. Tekijää käyeään niiden virheellisen komponenien lukumäärän laskemiseen, joka oliva virheeömiä esauksessa. Arvioinimeneelmä viiaa siis niihin
6 komponeneihin, joissa järjeselmäesauksen olisi piäny löyää virheiä. Arvioinia verraaan capure-recapure ja curve-iing-meodeilla saauihin arvoihin. Huomaamaa jääneiden virheellisen komponenien laskeminen:. Tekijän laskeminen: i Kaavassa i on nykyinen julkaisu, i i k p k / k k i on ekijä julkaisulle i, p k on niiden komponenien lukumäärä julkaisussa k, joissa esiinyi virheiä vasa julkaisun jälkeen eikä esauksessa ja k on niiden komponenien lukumäärä, joissa ei löyyny virheiä esauksessa julkaisussa k.. Kerroaan niiden komponenien lukumäärä, joissa ei löyyny virheiä esauksessa nykyisessä julkaisussa, laskeulla ekijällä. 4. Laskeaan niiden komponenien lukumäärä, joissa oleeaan löyyvän virheiä jäljellä olevassa järjeselmäesauksessa ja julkaisun jälkeen, mua joka ova ny virheeömiä. 5. Verraaan niiden komponenien arvioiua lukumäärää, joka eivä ole virheeömiä, mua joisa ei ole virheiä raporoiuna järjeselmäesauksessa ennala määrieyyn kynnysarvoon. Tämän peruseella pääeään, lopeeaanko esaus ja julkaisaanko ohjelmiso vai ei. i * i.. Case sudy Tukimuksen virhedaa uli suuresa lääkeieeellisesä järjeselmäsä, joka sisälää 88 ohjelmisokomponenia. Jokainen komponeni sisälää vaihelevan määrän iedosoja, joka ova loogisesi yheydessä oisiinsa. Järjeselmässä on yheensä noin 6500 iedosoa. Lisäksi komponeni saaava sisälää alikomponeneja. Kolmessa julkaisussa lisäiin yheensä 5 uua komponenia ja monia muia komponeneja muokaiin. 88 komponenisa 99:ssä oli vähinään yksi virhe ensimmäisessä, oisessa ai kolmannessa julkaisussa. Kolme esiryhmää saiva järjeselmän esaavakseen samaan aikaan. Ryhmien vasuualuee oliva:
7. Kehiysorganisaaion järjeselmäesiryhmä esasi järjeselmää suunnieludokumeneja vasaan.. Sisäinen asiakas esasi järjeselmää spesiikaaioa vasaan. 3. Ulkoinen asiakas esasi järjeselmää oiminnallisen käyön mukaan. Arvioiniin vaikuiva myös ne seika, eä sisäisellä asiakasesiryhmällä saaoi olla aliraporoiuja virheiä ja esiryhmän jäsen saaoi jäää merkisemää jo raporoidun virheen. Tämän vuoksi ukimuksessa ei arvioiu virheiden määrää vaan virheellisen komponenien määrää. Tukimuksessa valiiin kynnysarvoiksi kaksi, viisi ja kymmenen virheellisä komponenia. Tähän päädyiin järjeselmäesipäällikön haasaelun peruseella. Tälle järjeselmälle -5 virheellisä komponenia oli vielä hyväksyävissä, mua kymmenen ei. Arvo ulisikin valia sen mukaan, mikä ova järjeselmän laadullise vaaimukse. Eri arvioinimeneelmien arvioiminen Kolmen esiryhmän apauksessa ulokse oliva rohkaisevia: suheellise virhee osoiiva, eä suurin osa arvioinimeneelmisä osui lähelle oikeia arvoja, lukuunoamaa mhchao-meneelmää, joen se ei ole suosielava. Kaiken kaikkiaan kokemuspohjainen esimaaori oimi parhaien, sen sijaan mhchao, dpm(exp) ja kumulaiivinen yliarvioiva liikaa. Kaikissa julkaisuissa capure-recapure ja curve-iing-esimaaoreisa parhaien oimiva mml, dpm(lin), m0ml ja mhjk ja ne oliva melkein yhä hyviä kuin hisoriaieoja arviseva meodi. Mml ja dpm(lin) aliarvioiva hieman, kun aas mhjk hieman yliarvioi. Kahden esiryhmän apauksessa esiryhminä oliva kehiysorganisaaion järjeselmäesausryhmä ja ulkoinen asiakas, mikä on varmasi yleisin ilanne. Luonnollisesi voiaisiin oleaa, eä capure-recapure ja curve-iing-meodi anaisiva vähemmän arkkoja ennuseia, kun kaselmoijien lukumäärä laskee. Minkään esimaaorin ulos ei kuienkaan eronnu oikeasa arvosa ai muisa arvioisa huomaavasi. Mml, m0ml, dpm(lin), mchpm ja mhjk-esimaaori oimiva parhaien. MhChao, kumulaiivinen ja dpm(exp) aas huonoien. M0ml,
8 mml, mhjk ja mchpm oliva melkein yhä hyviä kuin kokemuspohjainen meodi eiväkä ne arvise hisoriaieoja. Mikäli hisoriaieoja on saaavilla ja julkaisu ova samankalaisia, niin kokemuspohjaisa meodia ulisi kuienkin käyää. Aikaisemmilla viikoilla saauja arvioineja ja niihin perusuvia pääöksiä arvioiiin kaikissa kolmessa julkaisussa käyäen sekä kaha eä kolmea esiryhmää. Koska iedeiin, eä osa esimaaoreisa oimii ässä vaiheessa huonosi, valiiin arvioiaviksi m0ml, mml, mhjk ja dpm(lin), mchpm-esimaaori ja kokemuspohjainen meodi. Kaiken kaikkiaan mhjk-esimaaori yliarvioi sekä kolmen eä kahden esiryhmän apauksessa. M0ml, mml ja mchpm oimiva lähesulkoon yhä hyvin kummassakin apauksessa. Dpm(lin) oimi ensimmäisessä julkaisussa paremmin, oisessa ja kolmannessa huonommin. Arvioinimeneelmiin pohjauuvan julkaisupääöksen arvioiminen Koska osa esimaaoreisa oimi huonosi, kaikkia ei oeu mukaan. M0ml, mml, mhjk ja dpm(lin)-meodeia käyeiin kolmen esiryhmän apauksessa. Näiden lisäksi mchpm-esimaaorilla arvioiiin kahden esiryhmän apauksessa. MhChao, dpm(exp) ja kumulaiivise meodi jäeiin ulkopuolelle, koska niiden suheellise virhee oliva liian suure ja esaus olisi jakunu liian kauan. Julkaisupääöksen arvioini esauksen viimeisellä viikolla kolmelle esiryhmälle Kynnysarvoja verraiin niiden komponenien lukumäärään, joissa ilmeni julkaisun jälkeisiä virheiä, mua joka oliva virheeömiä esauksessa ja sen peruseella pääeliin, oliko julkaisupääös oikea. Ensimmäisessä julkaisussa m0ml ja mhjk-esimaaori anoiva oikean vasauksen useimmien. M0ml suosieli lopeamisa hieman liian aikaisin, kun aas mjhk suosieli esauksen jakamisa hieman liian pikään. Kuienkin esauksen jakuminen hieman liian kauan on useimmissa apauksissa suosielavampaa kuin liian aikaisin lopeaminen. Toisessa julkaisussa mml ja dpm(lin) suoriuuiva parhaien, molemma anoiva kolme oikeaa pääösä. M0ml ja mhjk suosieliva esauksen jakamisa hieman piempään kuin muu. Kolmannessa julkaisussa mml oli ainoa
9 meneelmä, joka anoi kolme oikeaa pääösä. Dpm(lin)-esimaaori olisi lopeanu esauksen liian aikaisin. M0ml ja mhjk-meneelmiin perusuva pääökse olisiva jakanee esausa kauemmin kuin muu. Kokemuspohjaiseen meodiin perusuva arvioinni analysoiiin myös äsä näkökulmasa. Koska pääökseen arviaan hisoriaieoja, voiiin arvioini ehdä vain oiselle ja kolmannelle julkaisulle. Verrauna capure-recapure ja curve-iing meodeihin perusuviin pääöksiin kokemuspohjainen meodi oimi hyvin. Toisessa julkaisussa kokemuspohjainen meodi anoi saman uloksen m0ml:n kanssa. Kolmannessa julkaisussa meodi anoi saman uloksen mml:n kanssa. Julkaisupääöksen arvioini esauksen aikaisemmassa vaiheessa kolmelle esiryhmälle Ensimmäisessä julkaisussa m0ml, mml ja dpm(lin) suosieliva esauksen lopeamisa jo niinkin aikaisessa vaiheessa kuin viisi viikkoa ennen esauksen loppumisa. Mhjk anoi oikean pääöksen kynnysarvoilla kaksi ja viisi kuudella viimeisellä esausviikolla, arvolla kymmenen se eki oikean pääöksen kaikilla muilla viikoilla paisi neljänneksi viimeisellä ja viimeisellä viikolla. Näillä viikoilla mhjk suosieli esauksen jakamisa, vaikka oikea pääös olisi ollu lopeaminen. Suurin osa esimaaoreisa lukuunoamaa mhjk:a paransiva ulosa oisessa ja kolmannessa julkaisussa. Mhjk olisi suosiellu esauksen jakamisa kaikilla viikoilla kaikissa kynnysarvoissa. Anaessaan vääriä pääöksiä m0ml, mml ja dpm(lin) suosieliva esauksen lopeamisa liian aikaisin. Mhjk:n anaessa väärän pääöksen, se yleensä suosieli jakamisa, kun oikea pääös olisi ollu lopeaa. Kokemuspohjainen meodi suoriuui eriäin hyvin oisessa ja kolmannessa julkaisussa, joissa hisoriaiedo oli saaavilla. Jos haluaan sääsää aikaa, kannaaa valia m0ml ja kokemuspohjaise meodi. Mhjkesimaaoria suosiellaan siinä apauksessa, eä esaaja haluava olla konservaiivisempia.
0 Julkaisupääöksen arvioini esauksen viimeisellä viikolla kahdelle esiryhmälle Chapman-esimaaori oli mukana, koska sillä oli vähän suheellisia virheiä. M0ml, dpm(lin) ja mchpm anoiva oikea pääökse kahdelle kynnysarvolle ensimmäisessä julkaisussa. M0ml, mml, dpm(lin) ja mchpm suoriuuiva hyvin oisessa julkaisussa, kaikki kolme anoiva kolme oikeaa pääösä. Kaikki esimaaori dpm(lin)-meodia lukuunoamaa suoriuuiva samanveraisesi kolmannessa julkaisussa. Mhjk anoi kolme oikeaa pääösä ensimmäisessä ja kolmannessa julkaisussa, mua oisessa julkaisussa se suosieli jakamaan liian kauan. M0ml, mchpm ja mhjk näyivä olevan parhaa esimaaori kahden esiryhmän apauksessa. Toisessa julkaisussa kokemuspohjainen meodi oimi paremmin kuin capurerecapure ja curve-iing-meodi. Se suosieli jakamisa hieman kauemmin kuin miä oikea pääös oli, mua ei niin kauan kuin mhjk. Kolmannessa julkaisussa kokemuspohjainen meodi oimi yhä hyvin kuin usea muu esimaaori mukaan lukien mhjk. Mikäli hisoriaieoja on saaavilla ja julkaisu ova samanlaisia virheiden kannala, kokemuspohjaisa meodia ulisi käyää äydenämän capure-recapure ja curve-iing -meodeia. Julkaisupääöksen arvioini esauksen aikaisemmassa vaiheessa kahdelle esiryhmälle Oikeiden pääösen lukumäärän mukaan arvioiuna mhjk, m0ml ja mchpm suoriuuiva kaiken kaikkiaan parhaien. Mikäli haluaan konservaiivinen pääös, mhjk:a ulisi käyää, muuoin m0ml-esimaaoria. Tässä ukimuksessa parhaa ulokse saaiin käyämällä kaha esiryhmää ennemmin kuin kolmea. Sisäinen asiakas saaaa jäää virheiä raporoimaa, millä on vaikuusa kolmen esiryhmän apauksessa, joen ällaiselle ympärisölle suosiellaan kaha esiryhmää.
3 Tesauksen liiyminen muihin luenoihin sekä aikaisemmin käyyihin kursseihin Luennoilla käsieliin lähinnä ohjelmisoprosessin eri vaiheia, joisa viimeinen on esaus. Tesaus on kuienkin yheydessä muihin vaiheisiin, siä suunniellaan ja oeueaan eri muodoissa kaikissa prosessin vaiheissa. Luenosarjassa oli oma luenonsa käyeävyysesauksesa, joka on eriäin ärkeä osa esausa, vaikka se oeueaankin jo käyöliiymäsuunnielun aikana ja ymmärreään monesi erillisenä osana. Toki käyöliiymää esaaan myös varsinaisessa esausvaiheessa. Tesausa on aiemmin käsiely myös Ohjelmisouoannon sekä Ohjelmisoprojekin vaihee ja OMT++ -kursseilla, joissa sisälö oli samankalainen kuin älläkin kurssilla ja asiaa käsieliin melko yleisellä asolla. Sen sijaan lisäarvoa älle luennolle oi erilaisen yökalujen esiely, vaikka niiden esielyä olisi oivonu olevan enemmänkin, mainiaanhan yökalu kurssin nimessäkin. Työprojekeissa esaus aloieiin siinä vaiheessa, kun ohjelma oli valmis, eikä siä suunnielu oikein mienkään. Mielesämme projekeissa ulisi kiinniää hieman enemmän huomioa esauksen suunnieluun ja oeuamiseen. Tesaus piäisi sielläkin oaa mukaan yhä ärkeänä osana projekia kuin ise ohjelman suunnielu ja oeuaminenkin. Tosin yöprojekien aika- ja henkilöresurssi aseava rajoiuksia.
4 Lähdelueelo [] Yomi Soluion Oy, Tesing-luenomaeriaali, 00 [] James Miller, Esimaing he number o remaining deecs aer inspecions, Soware Tesing, Veriicaion and Reliabiliy, Volume 9 Issue 3, 999 [3] C.Sringellow, A. Andrews, C. Wohlin ja H. Peersson, Esimaing he number o componens wih deecs pos-release ha showed no deecs in esing, Soware Tesing, Veriicaion and Reliabiliy, Volume Issue, 00