Ohjelmistotuotanto, 1.11 - 5.11 1999
Harjoitus 6
Tehtävä 1
Piirrä
- a) UML-sekvenssikaavio
- b) UML-yhteistyökaavio
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.
- a) Millaisia ohjelmistovirheitä paljastuu tarkastamalla helpoimmin kuin
testaamalla?
- b) Millaisia ohjelmistovirheitä paljastuu testaamalla helpommin kuin
tarkastamalla?
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