Olioperustainen ohjelmistoprosessi Yleisesittely olioperustaisen ohjelmistokehitysprosessin vaiheista Kalvot: Roope Raisamo, osin Kai Koskimiehen Oliokirjaan perustuen
Olioperustainen 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
Olioperustainen 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
Rakenne 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
Ohjelmistokehitysprosessin rakenne Vaatimus- analyysi Arkkitehtuuri- suunnittelu Yksityiskohtainen suunnittelu Toteutus Rakenne Käyttäytyminen
UML:n kaaviotyypit Korkean tason toiminnalisuus Ohjelmisto- kehitys Rakenne Käyttö- tapauskaaviot Käyttäytyminen Esimerkkejä Oliokaaviot Sekvenssi- kaaviot Yhteistyö- kaaviot Sijoittelu- kaaviot Luokka- kaaviot Tilakaaviot Aktiviteetti- kaaviot Komponentti- kaaviot
Vaatimusanalyysi 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
Vaatimus/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ä.
Vaatimusanalyysi 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
Vaatimusanalyysi 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
Vaatimusanalyysi 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
Arkkitehtuurisuunnittelu Vaatimusanalyysin jälkeen lähestytään asteittain varsinaista toteutusta Arkkitehtuurisuunnittelussa kiinnitetään järjestelmän arkkitehtuuriin kuuluvat valinnat
Arkkitehtuurisuunnittelu 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]
Arkkitehtuurisuunnittelu Rakenteen kuvaukseen käytetään esimerkiksi: luokkakaavioita komponenttikaavioita sijoittelukaavioita Pakkaukset hyödyllisiä kuvaamaan alijärjestelmiä
Arkkitehtuurisuunnittelu 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
Yksityiskohtainen 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
Yksityiskohtainen 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
Yksityiskohtainen 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
Yksityiskohtainen 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ä
Yksityiskohtainen suunnittelu Yksityiskohtaisen suunnittelun käyttäytymisnäkökulmaa kuvaavat: sekvenssikaaviot tilakaaviot operaatiokuvaukset
Yksityiskohtainen 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
Toteutus 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.
Inkrementaalinen 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 -> jo rakennettua ei periaatteessa tarvitse muuttaa