Where academic tradition
meets the exciting future

Sopimuspohjainen olio-ohjelmointi Java-kielellä

Jouni Smed, Harri Hakonen, Timo Raita, Sopimuspohjainen olio-ohjelmointi Java-kielellä. 2007.

Abstract:

<b>Esipuhe</b><p>

Kädessäsi oleva oppimateriaali on alunperin syntynyt tukemaan ja täydentämään Turun yliopiston Informaatioteknologian laitoksen olio-ohjelmointikursseja. Ajan saatossa olemme huomanneet, että on olemassa laajempikin tarve suomenkieliselle ohjelmoinnin perusongelmiin keskittyvälle monografialle. Tämän vuoksi julkaisemme olio-ohjelmoinnin liittyvän taitotietomme tänä elektronisena kirjana kaikkien
luettavaksi. Koska nykyisen ohjelmistotuotannon ongelmat ovat aivan muualla kuin varsinaisessa ohjelmoinnissa, tässä kirjassa käsitellyt asiat kuuluvat olio-ohjelmoijan perusammattitaitoon ja siten hänen yleissivistykseensä.<p>

Tässä kirjassa keskitytään nimenomaan ohjelmointiasioihin ottamatta kantaa siihen millainen ohjelmistonkehitysprosessi on käytössä. Esitettyjä periaatteita voidaan siis soveltaa niin agile- kuin suunnittelupainotteisessa ohjelmistotuotannossa. Pohjatietona oletetaan Java-kielen syntaksin hallinta sekä ohjelmoinnin peruskäsitteiden
teoreettinen ja käytännön tuntemus, joita tämä kirja pyrkii syventämään.
Johtavana teemana on, miten kirjoitetaan hyviä ohjelmia; sellaisia, jotka on jäsennelty hyvin, helppo ymmärtää, korjata ja uudelleenkäyttää sekä joita ennen kaikkea voidaan ylläpitää. On tunnettua, että ohjelmointityön kustannuksista noin 70–80% aiheutuu ylläpidosta (virheiden korjaamisesta ja uusien piirteiden kirjoittamisesta ohjelmistoon) ja tämä on omiaan korostamaan sitä, että ennustettavien muutosten tekemisen tarve tulisi ottaa huomioon jo etukäteen, ts. tällaiset muutospaikat tulisi
olla helposti löydettävissä ja korjausten tekeminen yksinkertaista. Yksinkertaisuus tarkoittaa tässä yhteydessä sitä, että koodia on helppo ymmärtää ja muutokset lokalisoituvat pienelle alueelle, eivätkä generoi lisäkorjauksia. Tätä päämäärää voidaan tavoitella käyttämällä kaikkia niitä keinoja, joilla ohjelmistokomponentit saadaan riippumattomiksi toisistaan. Erityisesti sopimuspohjainen ohjelmointi ja luokan sisäisen esitysmuodon kapselointi ovat mekanismeja, jotka lisäävät ohjelman
osien välistä riippumattomuutta. Riippumattomuushan on ehdoton edellytys
mm. järjestelmän testaamiselle ja se mahdollistaa kehitystyön rinnakkaistamisen.<p>


On syytä muistaa, että tässä kirjassa esitetyt asiat liittyvät suurten ohjelmistojen (<i>programming-in-the-large</i>) rakentamisessa hyväksi havaittuihin tekniikoihin. Kokonaisuus, joka koostuu yhdestä tai kahdesta luokasta (vrt. harjoitustyöt), on yleensä helposti hallittavissa eikä niissä välttämättä tule esiin ongelmia, jotka ovat ominaisia suurille systeemeille. Erityisesti on huomattava, että pienet sovellukset
(<i>programming-in-the-small</i>) voi tehdä hyvinkin pieni ryhmä (yksi tai kaksi henkilöä), joka hallitsee teknisen ja ongelma-alueen kokonaisuuden. Käytännön työt eivät ole pieniä, joten ohjelmoijille on sovittava omat vastuualueensa, heidän pitää pystyä kommunikoimaan (sekä ohjelma- että mentaalitasolla) keskenään ja heidän on ilmaistava kirjallisesti ne periaatteet, joita he ovat ohjelman muodostamisessa
soveltaneet (ts. dokumentointi eri muodoissaan). Sen lisäksi että suuri ohjelma pitää jakaa erillisiin osiin, epäjatkuvuus on myös ajallista: ne, jotka kirjoittivat ohjelman, eivät todennäköisesti tule ylläpitämään sitä. Ohjelmoijan suurin haaste onkin tehdä ylläpitäjien työ helpoksi.<p>

Annetuissa esimerkeissä pyritään havainnollistamaan käyttökelpoisten luokkakokonaisuuksien rakentamiseen liittyviä ongelmia ja niiden ratkaisuja. Tarkoituksena on siis tarjota eväitä myöhemmälle oppimiselle, joka sisältää vielä suurempien kokonaisuuksien — suunnittelumallien (<i>design patterns</i>), komponenttien (<i>components</i>) ja sovellusrunkojen (<i>frameworks</i>) — rakentamista ja käyttöä.<p>

Kädessäsi oleva oppimateriaali nojautuu joulukuussa 2006 julkaistuun standardiin "Java 2 Platform Standard Edition Version 6.0". Sitä edeltänyt, syyskuussa 2004 julkaistu 5.0-versio toi suuria muutoksia Java-kieleen, mikä on otettu huomioon sekä tekstissä että esimerkeissä. Kielen uudistumisen lisäksi muutosta on edesauttanut kirjoittajien näkemyksen tarkentuminen (tai muuttuminen) vuosien kuluessa. On silti ollut mielenkiintoista huomata, kuinka ajan kuluessa Java-kieleen
on vähitellen otettu mukaan yhä enemmän piirteitä, joista puhuttiin jo tämän opuksen ensimmäisissä laitoksissa.

Files:

Full publication in PDF-format

BibTeX entry:

@BOOK{bSmHaRa07a,
  title = {Sopimuspohjainen olio-ohjelmointi Java-kielellä},
  author = {Smed, Jouni and Hakonen, Harri and Raita, Timo},
  year = {2007},
  ISBN = {978-952-92-1776-2},
}

Belongs to TUCS Research Unit(s): Algorithmics and Computational Intelligence Group (ACI)

Edit publication