OHJELMISTOTUOTANTO, SYKSY 1997
Syksyllä 1997 projektin ja siten wanhamuotoisen Ohjelmistotuotannon
suorittaneet.
Kurssin tulokset
on julkistettu.
2. välikokeen arvosteluun voi tutustua
keskiviikkona 7.1.1998 klo 12.00-12.30
huoneessa D323.
Sen jälkeen koepaperit ovat Lilli Nenosen
huostassa tammikuun ajan mahdollista myöhempää
silmäilyä varten.
Viimeinen luento oli perjantaina 5.12.
Kevään 1998 Ohjelmistotuotantoprojektien alustava
ryhmäjako on valmistunut.
2. välikoe on perjantaina 12.12. klo 14-17 Auditoriossa.
(Huom! Koe kestää siis normaalit 3 tuntia eikä 4 tuntia,
kuten alun perin ilmoitettiin.)
Koealueena on kaikki se, mikä ei kuulunut 1. välikokeeseen:
- Luennot: luvut 7-19, sivut 100-252.
- Haikala-Märijärvi (3. painos):
luvut 2.3-2.7, 4, 9.2-9.3, 9.5-9.8, 9.10, 10-15, 16.3, 16.6-16.7.
- Harjoitukset 6-11.
Kevätlukukaudella 1998 on loppukoe
perjantaina 30.1. klo 14-18 Auditoriossa
(eikä 13.2., kuten alun perin ilmoitettiin).
Perjantaina 28.11 ei ole normaalia luentoa,
vaan kurssin opiskelijoilla on mahdollisuus tulla seuraamaan
laitoksen FRED-tutkimushankkeen seminaaria (sali A 414), jonka aiheena
ovat suunnittelumallit (design patterns) ja komponentit.
(Seminaari ei sisälly kurssilla tentittävään materiaaliin.) Ohjelma:
10.15-11 Johan Wikman (Nokia Tutkimuskeskus): Suunnittelumallit
C++-ohjelmistokehityksessä
11-12 Esa Karell (Sun): Javan komponenttiteknologia
12-13 Tauko
13-14 Petri Salonen (Infomanager): Informaatiojärjestelmän toteuttaminen
Javalla ja komponenttiteknologialla
14-15 Jari Mielonen (ICL): Komponenttien kaupallistaminen
1. välikoe: tiistai 4.11. klo 16-20, Porthania I:
Arvosteluun voi tutustua torstaina 27.11 klo 16.00-17.00
huoneessa D 323.
Koealue:
- Luennot: luvut 1-6, sivut 1-99.
- Haikala-Märijärvi (3. painos):
luvut 1, 2.1-2.2, 3, 5-8, 9.1, 9.4, 9.9, 16.1-16.2, 16.4-16.5, 17.
- Harjoitukset 1-5.
.
Tenteissä
hyväksytyt 12.5.1997, 14.5.1997,
13.6.1997, 15.8.1997 ja 17.10.1997.
Harjoitus 1 (22.-26.9.)
- Tutki sanomalehtien työpaikkailmoituksia.
Millaisia ominaisuuksia ja taitoja niissä vaaditaan ohjelmistojen
kehittäjiltä? Vaaditaanko heiltä jotakin tiettyä koulutusta?
- Ohjelmistotuotannon tulisi monien mielestä olla yhtä
systemaattinen, ammattimainen ja standardoitu insinööriala kuin
esimerkiksi rakennusteollisuus. Mitä yhteistä ja mitä eroa on
ohjelmistojen ja talojen valmistamisella?
Entä ohjelmistojen ja talojen käyttämisellä?
- Nopeuttaakseen tuotantolinjaansa innovatiivinen ohjelmistoyritys
jättää asiakkaille tuottamansa ohjelmistot kommentoimatta ja
dokumentoimatta. Miksi yritys ajautuu ennen pitkää vararikkoon?
- Pienet ohjelmat (kuten laitoksen laboratoriotyöt)
kirjoitetaan useimmiten yhden henkilön projekteina,
kun taas suuremmat ohjelmistot (kuten laitoksen
Ohjelmistotuotantoprojekteissa tuotettavat) laaditaan ryhmätöinä.
Miten työskentely eroaa näissä kahdessa projektimuodossa?
Kummassa olisit mieluummin ohjelmoijana,
yhden hengen projektissa vai ryhmäprojektissa, ja miksi?
Harjoitus 2 (29.9.-3.10.)
- Millaisten atk-järjestelmien kehittämiseen soveltuu parhaiten
(a) vesiputousmalli, (b) prototyyppimalli, (c) spiraalimalli
ja (d) evo-malli?
- Yliopisto haluaa ottaa käyttöön kokonaisvaltaisen
opiskelijoiden hallintajärjestelmän, joka sisältää opiskelijoiden
henkilötiedot sekä heidän kurssi- ja tutkintosuorituksensa.
Käyttöönotolle on 3 vaihtoehtoa:
- Ostetaan jokin tietokannanhallintajärjestelmä ja
tuotetaan sen hallinnassa toimiva opiskelijajärjestelmä
yliopiston sisäisenä projektina
yliopiston keskushallinnon atk-henkilöstön voimin.
- Ostetaan vastaava opiskelijajärjestelmä toisesta yliopistosta
ja muokataan se omia käytäntöjä ja tarpeita vastaavaksi
(keskushallinnon atk-henkilöstön voimin.)
- Kootaan usean yliopiston yhteinen konsortio,
määritellään konsortion sisällä yhteiset vaatimukset
opiskelijajärjestelmälle ja palkataan ohjelmistotalo tuottamaan
sama järjestelmä kaikille konsortion jäsenille.
Millaisia riskejä liittyy näihin eri vaihtoehtoihin?
Miten riskianalyysiä voidaan käyttää apuna valittaessa jokin
vaihtoehto opiskelijajärjestelmän kehittämisstrategiaksi?
- Luennolla on lueteltu joukko ohjelmiston laatutekijöitä
jaettuna kolmeen kategoriaan, sopeutuvuuteen,
muutosten sietokykyyn ja toiminnallisuuteen.
Millä mittareilla ja miten tarkasti voidaan näitä
laatutekijöitä (siirrettävyys, uudelleenkäytettävyys, ...,
käytettävyys) arvioida?
- Millainen on mielestäsi laadukas kurssi
Helsingin yliopiston tietojenkäsittelytieteen laitoksella?
Miten kurssien laatua voitaisiin mitata?
Viikolla 41 (6.-10.10.1997) ei ole harjoituksia!!
Harjoitus 3 (13.-17.10.)
-
Millaisten ohjelmistojen kehittämiseen olioperustaiset menetelmät
soveltuvat luontevasti ja miksi?
Millaisten ohjelmistojen kehittämiseen ne taas eivät kovin
hyvin sovellu (miksi)?
-
Mallinna OMT-menetelmän luokkakaaviona (a) suunnatut verkot ja
(b) suuntaamattomat verkot.
-
Onko seuraavissa suhdeilmaisuissa kyse yleistys/erikoistus-luokittelusta
(perintä), koosteesta (aggregaatio) vaiko yleisestä assosiaatiosta?
Piirrä kustakin kohdasta vastaava OMT-luokkakaavio.
(a) Laitoksella on esimies.
(b) Tiedosto on joko tekstitiedosto tai hakemisto.
(c) Tutkielmassa on lukuja, joissa on kappaleita,
joissa on rivejä, joissa on merkkejä.
(d) Modeemit ja näppäimistöt ovat I/O-laitteita.
(e) Autossa on runko, moottori ja pyörät.
(f) Luokan ominaisuuksia ovat sekä attribuutit että operaatiot.
-
Alfredo-pizzapuodissa tehtävä tilaus muodostuu pizzoista ja
juomista, joita kumpaakin voi tilata kerralla useamman
kappaleen. Juomavalikoimasta löytyy alkoholijuomia (olut,
siideri) ja limuja (cola, jaffa, kivennäisvesi). Pizzoja on
kolmenlaisia: normaaleja pizzoja,
pannupizzoja ja
kylkiäispizzoja. Normaalipizzoissa on juustoa sekä 1-5 lajia
muita täytteitä (jauheliha, salami, kinkku, herkkusieni,
tonnikala). Pannupizzoissa on juustoa sekä 1-2 lajia muita
täytteitä (salami, sipuli). Kylkiäispizzoissa on muutoin
sama täytevalikoima kuin normaaleissa pizzoissa, mutta itse
pizzan lisäksi annokseen kuuluu joko salaatti tai
kossuvissy. Normaaleja pizzoja ja kylkiäispizzoja on kolmea
eri kokoa (small, medium, large), mutta pannupizzoja on vain
yhtä kokoa.
Mallinna Alfredon tilausvalikoima OMT-menetelmän
luokkakaaviona.
Harjoitus 4 (20.-24.10.)
-
Pullonpalautuskoneeseen kuuluu ohjausyksikkö, pulloanturi,
hihnayksikkö, summalaskuri, lopetusnappi ja kuitinkirjoittaja.
Anna koneen (a) normaalia käyttöä kuvaavat skenaariot,
(b) poikkeuksellista käyttöä kuvaavat skenaariot sekä
(c) ohjausyksikön tilakaavio.
-
Leipäkone on oletusarvoisesti lepotilassa. Kone
aktivoidaan asettamalla ainessammio raaka-aineineen
paistopesään ja panemalla hiiva-annos omaan lokeroonsa.
Tämän jälkeen on valittava valmistettavan leivän laji
(hiivaleipä, tumma leipä, patonki tai taikina). Valmistus
voidaan joko käynnistää leipälajivalinnan jälkeen
välittömästi tai viivästää sitä määrittelemällä
ajastustoiminnon kautta odotusjakson pituus.
Jälkimmäisessä tapauksessa kone aloittaa leivän
valmistuksen vasta sen jälkeen, kun odotusjakso on kulunut
umpeen. Odotusjakson pituus ilmaistaan erikseen tunteina
ja minuutteina. Valmistusvaihe sisältää leipämassan
työstämisen (kaikille leipälajeille) ja paistamisen
(kaikille leipälajeille paitsi taikinalle). Kone ilmoittaa
leivän valmistumisesta äänimerkillä, minkä jälkeen se
siirtyy lepotilaan. Mikäli ajastetun odotusjakson tai
valmistusvaiheen aikana tulee sähkökatkos, jättää kone
tästä ilmoituksen näytölleen ja palaa automaattisesti
lepotilaan.
Kuvaa leipäkoneen toiminta tilakaaviona (eli
tila-automaattina tai tilakoneena).
-
Ns. Harelin tilakaavioissa (statechart) on mm.
mahdollista yhdistää joukko tiloja ylitilaksi,
esittää rinnakkaisia (ali)tiloja sekä määritellä
useille tiloille yhteisiä siirtymiä;
kts. esimerkiksi Haikala & Märijärvi (3. painos),
luku 6.4.
Näitä piirteitä käyttämällä voidaan usein vähentää tilojen
ja siirtymien määrää huomattavasti verrattuna normaaliin
yksitasoiseen "sarjalliseen" tilakoneeseen. Havainnollista tätä
ilmiötä kuvaamalla jokin pieni esimerkkijärjestelmä sekä
(a) normaalina sarjallisena tilakoneena että
(b) Harelin tilakaaviona.
-
Opiskelija haluaa palavasti tehdä gradun.
Hän saa sopivan aiheen joko professorilta tai laitoksen
aihetietokannasta. Tämän jälkeen opiskelija
kirjoittaa tieteellisiin lähteisiin perustuvan tutkielmasuunnitelman,
jonka kaksi laitoksen määräämää tarkastajaa hyväksyy tai hylkää.
Hylätty suunnitelma on korjattava (ja tarkastettava uudelleen),
mutta hyväksytyn suunnitelman opiskelija täydentää graduksi
lisäämällä siihen työpaikalla aiheesta saamiaan kokemuksia.
Tarkastajat (samat kuin suunnitelmalla) hyväksyvät gradun tai
palauttavat sen korjattavaksi. Tarkastajat esittävät hyväksytylle gradulle
arvosanaa, jota laitoksen esimies puolestaan esittää tiedekunnalle.
Tämän jälkeen tiedekunta hyväksyy lopullisesti gradun ja
vie sitä koskevat tiedot arvosanan kera opintosuoritusrekisteriin.
Kuvaa graduprosessi tietovuo- eli tietovirtakaaviona.
Harjoitus 5 (27.-31.10.)
Harjoituksessa pidetään aivoriihi, jonka aikana
mallinnetaan annettu järjestelmä CRC-kortteina.
Järjestelmän sanallinen kuvaus jaetaan harjoitustilaisuudessa.
Aktiivinen aivoriiheen osallistuminen lasketaan
neljän (4) tavallisen harjoitustehtävän suorittamiseksi.
Harjoitus 6 (3.-7.11.)
-
Esitä (a) kulkukaaviona ja (b) pseudokoodina algoritmi,
joka lisää uuden alkion yhteen suuntaan linkitettyyn
järjestettyyn listaan omalle paikalleen.
Kumpi esitystapa on selkeämpi?
-
Eräs kytkennän (coupling) muoto on ns. "common coupling",
jossa useampi moduuli käyttää (so., lukee ja päivittää)
yhteistä globaalia tietovarastoa.
Miksi "common coupling" -kytkentää tulisi välttää? Anna esimerkki.
-
Tarkastellaan luokkahierarkiaa, 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 |
----------
| a |
| b |
----------
|
/ \
----------
| C2 |
----------
| c |
----------
|
/ \
----------
| C3 |
----------
| d |
----------
Luokkahierarkiaan halutaan lisätä luokka C4,
jolla on attribuutit a, d ja e.
Millaiseksi luokkahierarkia 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 ylimääräisiä (abstrakteja) apuluokkia.
-
Tarkastellaan operaatioiden ns. osittaistoteutuksia,
joissa osa koodista jätetään "avoimeksi" kutsumalla
virtuaalioperaatioita, joiden varsinainen koodi annetaan vasta
aliluokissa. Esimerkkinä naisen ja miehen suorittama tervehtiminen
Javalla
(mallina K. Koskimies: Pieni oliokirja, esimerkki 4.7):
abstract class Henkilo { // osittain toteutettu yliluokka
protected abstract void loppukaneetti(); // virtuaalioperaatio,
// ei toteutusta
public abstract void tervehdi() { // operaation osittaistoteutus
System.out.println("Terve pitkästä aikaa!");
loppukaneetti(); // avoin kohta
}
}
class Nainen extends Henkilo { // Henkilon aliluokka
protected void loppukaneetti() { // virtuaalioperaation toteutuskoodi,
// suoritus dynaamisella sidonnalla
System.out.println("Tule kylään huomenna!");
}
}
class Mies extends Henkilo { // Henkilon aliluokka
protected void loppukaneetti() { // virtuaalioperaation toteutuskoodi,
// suoritus dynaamisella sidonnalla
System.out.println("Nähdään ehkä ensi vuonna tai sitä seuraavana.");
}
}
Tulkitse tämäntapaiset operaatioiden osittaistoteutukset yleiseksi
suunnittelumalliksi, jonka kuvaat luennolla esitetyllä tavalla
(tarkoitus, motivointi, soveltuvuus, rakenne, osallistujat, seuraukset).
Harjoitus 7 (10.-14.11.)
(Kumpikin tehtävä on kahden tavallisen tehtävän arvoinen.)
-
Haikalan & Märijärven kirjan Ohjelmistotuotanto (3. painos)
luvussa 17 "Esimerkki oliomenetelmästä: OMT++"
kuvataan Piko-nimisen kortisto-ohjelmiston
määrittely- ja suunnitteluvaiheet. Pikolla on ko. luvussa
yksinkertainen tekstuaalinen ja komentoriveihin perustuva käyttöliittymä.
Hahmottele (esimerkiksi piirrettyjen paperiluonnosten avulla)
Pikolle alkuperäistä vastaava graafinen
käyttöliittymä.
-
Etsi valitsemastasi koneesta, laitteesta, järjestelmästä tai
ohjelmasta käytettävyysongelmia.
Miten ne voitaisiin poistaa?
Harjoitus 8 (17.-21.11.)
Kirjoita asiapitoinen essee (pituudeltaan noin 4 sivua)
aiheesta ohjelmistokomponenttien (eli ohjelmakoodin)
uudelleenkäyttö.
Tarkastele kirjoituksessasi mm. seuraavia kysymyksiä:
-
Miksi ohjelmistokomponenttien uudelleenkäyttö on tärkeää?
-
Millaisia komponentteja (eli ohjelmakoodirakenteita)
on mahdollista uudelleenkäyttää?
-
Millaisia erityistekniikoita on kehitetty uudelleenkäytettävien
komponenttien kehittämiseksi ja hyödyntämiseksi?
-
Mitä ongelmia liittyy ohjelmistokomponenttien uudelleenkäyttöön?
Tausta-aineistoa löydät mm. Haikalan & Märijärven kirjasta
(lähinnä luvusta 14) ja seuraavasta lehtiartikkelista:
C.W.Krueger: Software Reuse.
ACM Computing Surveys 24, 2, June 1992, pp. 131-183.
Palauta esseesi harjoitusten pitäjälle (joko suoraan
tai vahtimestarin välityksellä) viimeistään
perjantaina 21.11 klo 15.00.
Viikolla 17.-21.11 ei järjestetä normaaleja harjoitustilaisuuksia!!!
Saat esseestäsi 0-4 harjoituspistettä riippuen esseen laadusta.
Harjoitus 9 (24.-28.11.)
-
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.
funktionaalista eli mustalaatikkomenetelmää (black-box testing)?
-
Tarkastellaan luennolla (luku 12.2, kalvo 180) annettua ohjelmaa sekä
sen vuokaaviota ja vuoverkkoa. Mitkä verkon täydelliset polut on
(vähintään) käytävä läpi, jotta ohjelma tulisi
haara- eli päätöskattavasti testatuksi?
Millaisella testiaineistolla eli syötemuuttujien X ja Y
arvoilla tämä onnistuisi?
-
Tarkastellaan tietovuotestauksen toimenpidemoodeista d (defined),
u (used) ja k (killed) muodostettuja pareja.
Esimerkiksi moodipari du tarkoittaa, että muuttujalle sijoitetaan
arvo d-solmussa ja ko. arvoa käytetään ensi kertaa
jonkin ko. d-solmusta alkavan määrittelyttömän segmentin
päätesolmussa (u). (Ts. d-solmun ja u-solmun
välisellä polulla muuttujalle ei aseteta uutta arvoa (d),
sitä ei tuhota (k) eikä sitä käytetä (u)).
Analysoi kaikki mahdolliset moodiparit
dd, du, dk, ud, uu, uk, kd, ku, kk:
mitkä niistä ovat normaaleja, mitkä epäilyttäviä ja mitkä
virheellisiä muuttujan käsittelytapoja?
-
Testattavana on seuraava ohjelmanpätkä.
Muodosta sitä vastaava tietovuoverkko (data flowgraph)
muuttujan y suhteen.
Mitkä verkon polut on käytävä testauksessa läpi,
jotta saavutetaan (a) kaikki käytöt -strategian (all-uses)
mukainen kattavuus muuttujan y suhteen ja
(b) kaikki määrittelyt -strategian (all-definitions)
mukainen kattavuus muuttujan y suhteen?
Minimoi kummassakin tapauksessa tarvittavien testiajojen määrä.
x:= 0;
read(y);
while y > x do begin
x:= x+y;
read(y)
end;
write(x);
write(y)
Harjoitus 10 (1.-5.12.)
-
Millaisia ovat huoltavaa (preventive) ylläpitoa
kaipaavat ohjelmistot?
-
Yleensä suositellaan, ettei aikataulustaan jäljessä olevaan
ohjelmistoprojektiin palkattaisi lisää työntekijöitä aikataulun
kiinni saamiseksi. Miksi lisähenkilöstön palkkaaminen ei
yleensä ole järkevää? Millaisissa tilanteissa ratkaisu saattaisi
kuitenkin pelastaa projektin?
-
Suunnittele GANTT-kaaviona omien opintojesi eteneminen
alkaen tästä hetkestä ja päättyen loppututkintoon.
Kuvaa kaikki erilliset opintojaksot (kurssit, seminaarit,
laboratoriotyöt yms.) kaaviossasi yksittäisinä tehtävinä.
Löytyykö kaaviosta opiskeluprojektisi kriittisiä polkuja?
-
Tavoitteena on toteuttaa yksinkertainen tietokantasovellus
(Haikalan - Märijärven taulukko 10.3: DATA=L),
jonka kooksi on arvioitu 10.000 riviä ohjelmakoodia.
(a) Sovelluksen toteuttaa Nokian huipputiimi
(ACAP=VH, AEXP=VH, PCAP=VH,
VEXP=H, LEXP=H).
(b) Sovelluksen toteuttaa opiskelijoista ja professoreista koottu rupusakki
(ACAP=VL, AEXP=VL, PCAP=VL,
VEXP=VL, LEXP=VL).
Kuinka monta henkilötyö- ja kalenterikuukautta projekti vaatii
vaihtoehdoissa (a) ja (b) COCOMO-mallin
intermediate/helppo -version mukaan?
Entä jos sovelluksen arvioitu koko olisi miljoona riviä?
Vaikuttavatko ryhmien (a) ja (b) väliset suorituskykyerot
uskottavilta?
Harjoitus 11 (8.-10.12.)
Koska opetus päättyy keskiviikkona 10.12, on viikon viimeinen harjoitus
siirretty torstaista tiistaiksi. Harjoitusajat ovat siis seuraavat
(vierailu sallittu):
- maanantai 8.12. klo 10-12, A320 (Lilli Nenonen)
- tiistai 9.12. klo 10-12, B450 (Antti-Pekka Tuovinen)
- keskiviikko 10.12. klo 10-12, A319 (Lilli Nenonen)
-
Mitä hallinta-alkioita (configuration item) on tarpeen tallettaa
ohjelmistotuotteesta? (Haikala-Märijärvi: luku 11)
-
Vertaile testausta ja tarkastuksia (inspection)
virheidenetsintäkeinoina. (a) Millaisia ohjelmistovirheitä paljastuu
testaamalla helpommin kuin tarkastamalla?
(b) Millaisia ohjelmistovirheitä paljastuu tarkastamalla helpommin
kuin testaamalla?
-
Kuka julkisuuden henkilö olisi mielestäsi oivallinen projektipäällikkö
ja miksi? Kuka julkimo olisi puolestaan surkea projektipäällikkö
ja miksi? (Kyseessä ei ole välttämättä ohjelmistoprojekti.)
-
Täytä ja palauta anonyymisti elektroninen opetuksenarviointilomake
WWW-osoitteessa
http://www.cs.helsinki.fi/kurssit/kyselyt/syksy_1997/
.