Title: Olioperustainen ohjelmistoprosessi
1Olioperustainen ohjelmistoprosessi
- Yleisesittely olioperustaisen ohjelmistokehityspro
sessin vaiheista - Kalvot Roope Raisamo,osin Kai Koskimiehen
Oliokirjaan perustuen
2Olioperustainen ohjelmistokehitysprosessi
- 1990-luvun aikana olioperustaista
ohjelmistokehitystä pyrittiin systematisoimaan - tuloksena erilaisia menetelmiä ja ohjelmiston
kuvaustapoja - Tässä käsitellään yksinkertaistettua mallia
- luo pohjan erilaisten laajempien menetelmien
opettelulle - hyvin käyttökelpoinen esitetyssäkin muodossa
3Olioperustainen ohjelmistokehitysprosessi
- Tyypilliset vaiheet
- Vaatimusmäärittely (Requirement specification)
- Toteutettavuuskartoitus tässä välissä yleensä
vielä tarkastetaan, onko toteutus realistista - Vaatimusanalyysi / Olioanalyysi
- Arkkitehtuurisuunnittelu
- Oliosuunnittelu / Yksityiskohtainen suunnittelu)
- Toteutus
- Testaus
4Rakenne ja käyttäytyminen
- Järjestelmän mallintamisen keskeiset osat
- staattinen mallintaminen (rakenne)
- dynaaminen mallintaminen (käyttäytyminen)
- riippuvat toisistaan eri tavoin
- ohjelmistokehityksen vaiheissa tarkastellaan
ohjelmistoa näistä kahdesta näkökulmasta
5Ohjelmistokehitysprosessin rakenne
Vaatimus- analyysi
Yksityiskohtainen suunnittelu
Arkkitehtuuri- suunnittelu
Toteutus
Rakenne
Käyttäytyminen
6UMLn kaaviotyypit
Ohjelmisto- kehitys
Korkean tason toiminnalisuus
Rakenne
Käyttäytyminen
Käyttö- tapauskaaviot
Sekvenssi- kaaviot
Oliokaaviot
Yhteistyö- kaaviot
Esimerkkejä
Tilakaaviot
Aktiviteetti- kaaviot
Luokka- kaaviot
Sijoittelu- kaaviot
Komponentti- kaaviot
7Vaatimusanalyysi
- Vaatimusanalyysissä kerätyt vaatimukset
analysoidaan ja täsmennetään - tavoitteena ymmärrys siitä, mitä järjestelmää
ollaan toteuttamassa - ei siitä, miten toteutus tehdään!
- toteutustekniset näkökohdat jätettävä syrjään,
koska hämärtäisivät käsitteellistä mallia - vaatimusanalyysiin liittyy usein myös
sovellusalueen analyysi (domain analysis) - täsmentää järjestelmän toimintaympäristön
käsitteistön
8Vaatimus/olioanalyysi
- Tuloksena
- joukko käyttötapausten kuvauksia
- niistä johdettu tehtävälista
- järjestelmän käsitteellinen malli luokkakaaviona
- käyttötapausten sekvenssikaaviot
olioanalyysimallin luokkia käyttäen - mahdollisesti myös sovellusalueen käsitteellinen
malli luokkakaaviona - Siis järjestelmän kuvaus abstraktissa mielessä.
9Vaatimusanalyysi
- Analyysin kulku
- identifioidaan käyttötapaukset
- määritellään niiden suhteet käyttötapauskaaviolla
- kuvataan ne tarkemmin sekvenssikaavioilla
- yksi sekvenssikaavio käyttötapausta kohden
tavallisimmasta tapauksesta - poikkeustilanteet voidaan kuvata erikseen
- oikeastaan nämä pitää tehdä tai tarkentaa sitten,
kun olioanalyysin osana on tuotettu luokkakaavio
10Vaatimusanalyysi
- Käyttötapaukset edustavat analyysivaiheen
käyttäytymisnäkökulmaa - laadittu siten, että ovat mielekkäitä sekä
järjestelmän käyttäjille että suunnittelijoille - Tehtäväluettelo saadaan käyttötapauksista
laadittujen sekvenssikaavioiden perusteella - lähtökohtana käyttöliittymän suunnittelulle
- Käsitteellisen mallin lähtökohtana
vaatimusmäärittely ja käyttötapaukset
11Vaatimusanalyysi
- Käsitteellisen mallin rakentamisen vaiheita
- luokkien identifiointi
- assosiaatioiden tunnistaminen
- alustavien attribuuttien tunnistaminen
- luokkien vastuiden määrittely
- mallin tarkistaminen
- mallisanaston koostaminen
- käsitteelliseen malliin kuuluvien tunnusten
selitys - esim. luokat ja assosiaatiot
12Arkkitehtuurisuunnittelu
- Vaatimusanalyysin jälkeen lähestytään asteittain
varsinaista toteutusta - Arkkitehtuurisuunnittelussa kiinnitetään
järjestelmän arkkitehtuuriin kuuluvat valinnat
13Arkkitehtuurisuunnittelu
- Arkkitehtuurivalintoja
- järjestelmän kerrokset
- merkittävät komponentit
- korkean tason suunnittelumallit
- arkkitehtuurityylit
- mahdollisen kehysarkkitehtuurin ydin
- ohjelmistojen sijoittelu laitteistoihin
- ohjelmistoalustat
- prosessit ja niiden kommunikointi
- käyttöliittymäratkaisut
- muut keskeiset ratkaisut
14Arkkitehtuurisuunnittelu
- Rakenteen kuvaukseen käytetään esimerkiksi
- luokkakaavioita
- komponenttikaavioita
- sijoittelukaavioita
- Pakkaukset hyödyllisiä kuvaamaan alijärjestelmiä
15Arkkitehtuurisuunnittelu
- Käyttäytymisen kuvaamiseen käytetään
sekvenssikaavioita. - osallistujina arkkitehtuuritason elementtejä
- kuten komponentteja
- tarkentavat vaatimusanalyysin sekvenssikaavioita
- kuvaavat tehtävien suorituksen arkkitehtuuritason
yksiköiden välisenä vuorovaikutuksena
16Yksityiskohtainen suunnittelu
- Yksityiskohtaisessa suunnittelussa kunkin osan
toteutus suunnitellaan tarkemmin. - Vältetään sitoutumista tiettyyn toteutuskieleen.
- Rakennetta kuvataan luokkakaavioilla
- lähtökohtana analyysivaiheen luokkakaaviot
- tarkennetaan huomioimalla
- tehokkuus
- muunneltavuus
- ylläpito
17Yksityiskohtainen suunnittelu
- Yksityiskohtaisen suunnittelun aikana
- tehostetaan suoritusta lisäämällä johdettuja
assosiaatioita ja attribuutteja - suunnitellaan assosiaatioiden toteutus
- parannetaan joustavuutta ja muunneltavuutta
esimerkiksi soveltamalla suunnittelumalleja - uudelleenorganisoidaan luokkarakennetta,
rajapintoja ja periytymistä - lisätään toteutuksen kannalta tarpeelliset
operaatiot ja luokat - suunnitellaan käyttöliittymän toteutus
18Yksityiskohtainen suunnittelu
- Arkkitehtuurisuunnittelun sekvenssikaavioita
tarkennetaan - tehtävät järjestelmän olioiden välisenä
vuorovaikutuksena - Aktiiviset luokat identifioidaan ja niiden
käyttäytyminen kuvataan tilakaavioina - Tilakaavioiden toteutustavat suunnitellaan
- Luokkien operaatiot identifioidaan
sekvenssikaavioiden perusteella
19Yksityiskohtainen suunnittelu
- Merkittävimmät tai monimutkaisimmat operaatiot
kuvataan tarkemmin tulo- ja jättöehtoineen - operaation toimintaan liittyvä olioiden
vuorovaikutus esitetään sekvenssikaavioilla - muutoin kuvaus voidaan antaa esimerkiksi
pseudokielellä
20Yksityiskohtainen suunnittelu
- Yksityiskohtaisen suunnittelun käyttäytymisnäkökul
maa kuvaavat - sekvenssikaaviot
- tilakaaviot
- operaatiokuvaukset
21Yksityiskohtainen suunnittelu
- Lopuksi varmistetaan rakenne- ja
käyttäytymisnäkökulmien yhtäpitävyys - tarkastetaan, että kaikkien operaatioiden
suoritukseen tarvittavat assosiaatiot ovat
olemassa - tarkastetaan, että luokkakaavioissa ja
sekvenssikaavioissa esiintyvät samat operaatiot - tarkastetaan, että tilakaaviot sallivat
sekvenssikaavioissa kuvattujen toimintojen
suorittamisen
22Toteutus
- Toteutusvaihe on periaatteessa suoraviivainen
yksityiskohtaisen suunnittelun mallit esitetään
valitulla toteutuskielellä. - Mallit ovat kuitenkin ohjelmointikieltä
abstraktimmalla tasolla. Siksi - toteutusta voidaan joutua täydentämään uusilla
attribuuteilla, operaatioilla ja jopa luokilla - joudutaan tekemään kielestä riippuvia
toteutusratkaisuja - Voitaisiin jossakin määrin automatisoida.
23Inkrementaalinen kehittäminen
- Inkrementaalinen kehittäminen on (suuren)
ohjelmiston kehittämistä paloittain. - käyttötapauksista lähtevä ohjelmistokehitys tähän
luonteva tapa - käyttötapaus toiminnallinen kokonaisuus
- voidaan edetä syklittäin valitsemalla ensin vain
muutama keskeisin käyttötapaus suunniteltavaksi - näiden perusteella voidaan toteuttaa ohjelmiston
ensimmäinen prototyyppi, ja saada siitä
palautetta. - tämän pohjalta käyttötapauksia (ja vaatimuksia)
täsmennetään - asiakkailla koko kehityksen ajan tuntuma
järjestelmään - inkrementaalisessa ohjelmistokehityksessä on
tärkeää pyrkiä valitsemaan rakennettavat osat
siten, että edelliset eivät riipu niitä
seuraavista -gt jo rakennettua ei periaatteessa
tarvitse muuttaa