Ohjelmistotuotanto, 1.11 - 5.11 1999

Harjoitus 6

Tehtävä 1

Piirrä graduprosessista (kuvattu aikaisemmassa harjoituksessa).

Tehtävä 2a (2a ja 2b ovat vaihtoehtoisia!)

Tarkastellaan luokkahierarkkiaa, jossa luokalle C1 on määritelty attribuutit a ja b, C1:n aliluokalle C2 attribuutti c ja C2:n aliluokalle C3 puolestaan attribuutti d (kuva alla). Perinnän vaikutuksesta luokalla C1 on siten attribuutit a ja b, luokalla C2 attribuutit a, b ja c sekä luokalla C3 attribuutit a, b, c ja d.

 
 
        ___________         ___________            ____________
       !           !        !          !           !           !
       !    C1     !-<| ----!    C2    !-<| -------!    C3     !
       !-----------!        !----------!           !-----------!
       ! a         !        ! c        !           ! d         !
       ! b         !        !----------!           !-----------!
       !-----------!        !__________!           !___________!
       !___________!

 

Luokkahierarkkiaan halutaan lisätä luokka C4, jolla on attribuutit a, d ja e. Millaiseksi luokkahierarkkia on nyt muokattava ja miten on attribuuttien määrittelyt sijoitettava, jotta jokainen attribuutti olisi määritelty vain yhdessä luokassa ja jotta luokilla C1,.., C4 olisi em. attribuutit, mutta ei perinnän kautta saatuja ylimääräisiä attribuutteja. Voit käyttää moniperintää ja abstrakteja apuluokkia.

Laadi luokkahierarkkia käyttäen mahdollisuuksien mukaan perintää.

Tehtävä 2b (2a ja 2b ovat vaihtoehtoisia!)

Tarkastellaan järjestettyä listaa oliona. Listaan pitäisi pystyä liittämään mitä tahansa jonkin luokan, vaikkapa Object-luokan, jälkeläisluokkien ilmentymiä. Näitä pitäisi pystyä järjestämään minkä tahansa kriteerin perusteella. Määrittele tällaisen listan toteutukseen tarvittavat luokat ja niiden operaatiot. (Vihje: voit katsoa mallia jostain luokkakirjastosta.)

Tehtävä 3 (huomaa kaksi osaa)

I) Kerää toteutusvaiheen katselmuksessa käytettäviä tarkastuskysymyksiä.

II) Vertaile (keskustelemalla harjoitusryhmässä) testausta ja tarkastuksia virheidenetsintäkeinona.

Tehtävä 4

Testattavana on ohjelma, joka lukee mielivaltaisen määrän lämpötiloja (kokonaislukuina) suljetulta väliltä -100 C .. +100 C ja tulostaa niiden keskiarvon. Syötejonon päättää merkki "#". Millaisella syöteaineistolla ohjelma on syytä testata käytettäessä ns. toiminnallista menetelmää (black box testing)?

Tehtävä 5

Anna kolme esimerkkiä tilanteesta, jossa toiminnallinen testaus (black box testing) näyttää kaiken olevan kunnossa mutta rakennetestaus (white box testing) löytää virheen.

Anna kolme esimerkkiä tilanteesta, jossa rakennetestaus näyttää kaiken olevan kunnossa mutta toiminnallinen testaus löytää virheen.

Tehtävä 6

Tarkastellaan alla annettua ohjelmaa. Muodosta abstrahoitu vuoverkko. Mitkä verkon täydelliset polut on vähintään käytävä läpi, jotta ohjelma tulisi haara- eli päätöskattavasti testatuksi? Millaisella aineistolla eli syötemuuttujien X ja Y arvoilla tämä onnistuisi?

   	INPUT X, Y
	Z:= X + Y
	V:= X - Y
	IF Z >= 0 GOTO SAM
JOE:	Z:= Z - 1
SAM: 	Z:= Z + V
	FOR U = 0 TO Z
	V[U] := (Z + V) * U
	U[V] := (Z + V) * U
	IF V[U] = 0 GOTO JOE
	Z := Z - 1
	IF Z = 0 GOTO ELL
	U := U +1
	NEXT U
	V[U-1] := V[U+1] + U[V -1] 
ELL: 	V[U + U[V]] := U + V
	IF U = V GOTO JOE
	IF U > V THEN U := Z
	Z := U
	END