Luku 8 Rakennusvaihe Moduulisuunnittelu Detailed Design Programming Ohjelmointi Teknisen Complete suunnittelun Technical viimeistely Design Suunnittelukatselmuksen Design Perform suorittaminen Review Yhteisen Prepare testimateriaalin Common valmistelu Test Data Työyksikköjen Generate luominen ja and Code koodaus Work Units Conduct Yksikkötestaus Unit Test Työyksikköjen Design suunnittelu Work Units Tietokantasuunnitelman Database Complete viimeistely Design Testimateriaalin Prepare Test valmistelu Data Koodikatselmus Code Perform Review Conduct Jonotestaus String Test Tarkoitus Rakennusvaiheen tarkoitus on viimeistellä tarvittavien arkkitehtuurien (kehitys-, toteutus- ja toiminta-arkkitehtuurit) moduulisuunnittelu ja rakentaa sovellus tai järjestelmä sovittua ympäristöä ja sovittuja työkaluja käyttäen. Kehittäjät luovat halutun kaltaisen sovelluksen suunnitteludokumenttien mukaisesti. Yllä oleva prosessikaavio kuvaa rakennusvaiheessa suoritettavia aktiviteetteja.
100 8. Rakennusvaihe Tavoitteet Rakennusvaiheen avaintavoitteet ovat seuraavat: Valmistellaan ja päätetään järjestelmän kaikkien osien ja muunnosten moduulisuunnittelu. Luodaan suoritettavat moduulit. Testataan yksittäiset moduulit. Integroidaan komponentit. Testataan moduulien väliset yhteydet (jonotestaus). Aktiviteetit Moduulisuunnittelu Teknistä suunnittelua ohjeena käyttäen jokaisesta työyksiköstä valmistellaan yksityiskohtainen dokumentaatio. Työyksikkö tarkoittaa sellaista projektin loogista osaa, joka voidaan suunnitella ja kehittää erillään projektin muista osista ja myöhemmin integroida niihin tarpeen mukaan. Monet projektit koostuvat pienemmistä ja samanaikaisesti käynnissä olevista osaprojekteista, mikä voi huomattavasti nopeuttaa projektia ja julkistusaikataulua mutta mikä myös monimutkaistaa projektin hallintaa merkittävästi. Kun työyksikköjen tarkka dokumentointi on saatu päätökseen, dokumentoidaan jokaisen työyksikön loogiset tietonäkymät ja fyysiset tietorakenteet ja tiedotetaan niistä ohjelmoijille. Suunnittelijan tulisi käydä moduulisuunnittelu läpi kaikkien asianomaisten projektitiimin jäsenten kanssa. Lopuksi valmistellaan yhteinen testimateriaali yksikköjen testaamista varten. Teknisen suunnittelun viimeistely Tässä vaiheessa arvioidaan projektin laajuudessa mahdollisesti tapahtuneiden muutosten vaikutuksia ja viimeistellään kaikki kesken olevat suunnittelutyöt. Nämä toimet edellyttävät ohjelmiston lisäyksikköjen määrittämistä ja niiden kustannusten arvioimista.
8. Rakennusvaihe 101 Kustannusarvioiden täytyy sisältyä alkuperäiseen projektisuunnitelmaan, ja projektin sidosryhmien pitää ehkä tarkistaa niitä ja hankkia niille uudelleen johdon hyväksyntä. Työyksikköjen suunnittelu Tarkistetaan teknisen suunnittelun aikana kehitetty ohjelma-arkkitehtuuri ja dokumentoidaan yksityiskohtaisesti jokainen työyksikkö. On tärkeää katselmoida tekninen suunnittelu ennen yksittäisten työyksikköjen suunnittelua. Vertaillaan ongelmien havaitsemiseksi ja ratkaisemiseksi todennäköisiä riskialueita ja otetaan mahdolliset aikatauluvaikutukset huomioon mahdollisimman aikaisessa vaiheessa. Tietokantasuunnitelman viimeistely Dokumentoidaan loogiset tietonäkymät, fyysiset tietokannat tai tietorakenteet ja kunkin työyksikön käyttämät tietoalueet ja annetaan dokumentaatio ohjelmoijien käyttöön. Rakennetaan tietorakenteet ympäristö- tai tekniikkatyökaluilla, joiden käytöstä sovittiin aikaisemmissa vaiheissa. Suunnittelukatselmuksen suorittaminen Jokainen suunnittelija käy työyksikön suunnittelun läpi loppukäyttäjien, sovellusarkkitehtien, kollegoiden sekä ohjelmointipäällikön ja koko ohjelmointitiimin kanssa. Tällä katselmuksella varmistetaan, että suunnittelu vastaa järjestelmän toiminnallisia ja laatuvaatimuksia, että ohjelmoijat ymmärtävät vaatimukset ja että suunnittelu on teknisesti toteutettavissa ja toimiva. Suunnittelukatselmus ei välttämättä ole ainutkertainen tapahtuma, sillä voi olla järkevää pitää useita katselmuksia yleisön ja kunkin katselmuksen tarkoituksen mukaan. Moduulisuunnittelun iterointi Ei ole lainkaan epätavallista, että suunnittelukatselmuksen jälkeen prosessin eri vaiheita toistetaan useammankin kerran. Suunnittele ja parantele on varsin tavallinen iteratiivinen prosessi, jonka avulla projektitiimi pääsee yhä lähemmäksi järjestelmän varsinaista tavoitetta, ennen kuin sen tarvitsee tuottaa yhtäkään koodiriviä. Projektinhallinnan perinteisessä vesiputous-menetelmässä, jossa uusi vaihe aloitettiin vasta edellisen päätyttyä, ei koskaan huomioitu iterointia.
102 8. Rakennusvaihe Iteroiva menetelmä on kehittynyt, ja sitä on ensin käytetty nopean sovelluskehityksen metodologioiden (nopeaa sovelluskehitystä käsitellaan tarkemmin luvussa 12) ja olio-ohjelmoinnin yhteydessä. Nykyisin useimmissa projektimetodologioissa käytetään vesiputous- ja iteroivan menetelmän yhdistelmää. Yhteisen testimateriaalin valmistelu Rakennetaan mastertietokanta työyksikköjen testausta varten. Tämän tietokannan täytyy pysyä erillään kaikista muista tietokannoista, jotta pystytään minimoimaan uuden järjestelmän kehityksen ja testaamisen vaikutukset todelliseen, käytössä olevaan liiketoimintaympäristöön. Kehitetään menetelmä tai ohjelmat, joilla päivitetään testaustietoja jokaisen yksikön vaatimien ainutlaatuisten olosuhteiden testaamiseksi. Valmistellaan testimateriaali, jolla voidaan täysin kattavasti testata kaikki yksittäisen moduulin toimintaolosuhteet, ja dokumentoidaan oletetut tulokset. Valmistellaan testausohjeet, kuten testiskenaariot tai komentojonot ja mahdolliset esimerkkidokumentit käytettäviksi yksikköjen testaamisessa. Ohjelmointi Ohjelmointivaiheessa ohjelmoijat kirjoittavat koodin, etsivät siitä virheet ja toimittavat testatun ja suorittamiskelpoisen koodin sovellusta varten. Tässä vaiheessa myös integroidaan kaikki sellaiset moduulit, jotka täytyy integroida jonkin loogisen työyksikön tai sovelluksen valmiiksi saamiseksi. Kirjoitetaan ja tarkastetaan koodi, minkä jälkeen ohjelmoijat voivat suorittaa rakennusvaiheen ensimmäiset testit. Suoritetaan yksikkö- ja jonotestaus loogisille ohjelma- ja komponenttiryhmille, verrataan saatuja tuloksia oletettuihin tuloksiin ja korjataan mahdolliset virheet. Työyksikköjen luominen ja koodaus Koodinkirjoittamisprosessi muuntaa loogisen moduulisuunnittelun varsinaiseksi fyysiseksi sovellukseksi, jonka tietokone suorittaa. Prosessin aikana kirjoitetaan sovellus korkean tason ohjelmointikielellä tai -työkalulla, kirjoitetaan välimäärittelyt koodinkehitintä varten tai kirjoitetaan työnohjauslauseet keskuskonesovellukselle. Tulokset tarkastetaan, ja ohjelmoija poistaa kaikki tässä vaiheessa löytämänsä syntaksi- tai suoritusvirheet.
8. Rakennusvaihe 103 Testimateriaalin valmistelu Valmistellaan riittävästi testimateriaalia, jotta koodi voidaan testata perusteellisesti. Testimateriaalin valmistelu on erittäin riippuvainen moduulisuunnitteluvaiheessa kehitetystä yhteisestä testimateriaalista. Tiimi suunnittelee testimateriaalinsa yhteisen testimateriaalin pohjalta sekä laatii ja dokumentoi oletetut tulokset. Koodikatselmus Koodikatselmukseen osallistuvat koodin kirjoittanut ohjelmoija, työyksikön suunnittelija ja mahdollisesti pari muuta ohjelmoijaa. Koodikatselmus suoritetaan useista eri syistä. Yksi syy on sen varmistaminen, että koodi vastaa tarkasti suunnittelua. Toinen syy on koodin virheiden löytäminen aikaisessa vaiheessa. Lisäksi sellaiset koodikatselmukset, joissa kollegat tarkastavat toistensa työtä, voivat olla ratkaisevan tärkeitä ohjelman kokonaislaadun varmistamisen kannalta. Koodikatselmukset myös varmistavat, että luotu koodi noudattaa kaikkia koodausstandardeja. Yksikkö- ja jonotestaus Yksikkö- ja jonotestit tuottavat virheetöntä koodia, joka käsittelee tietoa tarkasti, luotettavasti ja määrittelyjen mukaisesti. Yksikkötestauksessa ohjelmoija vertaa testin tuloksia oletettuihin tuloksiin ja korjaa löytämänsä virheet. Jonotesti todentaa ohjelmien tai sovelluksen komponenttien välisen viestinnän ja edeltää testausvaiheen integrointitestausta. Jonotestaus suoritetaan verkkoasemien välillä sekä keskustelun kaikkien näyttöjen tai syöttöruutujen kesken. Roolit Rakennusvaiheen roolit on kuvailtu tarkemmin edeltävissä luvuissa. Suunnittelija Ohjelmoija Projektin johto Tekninen arkkitehti Testaaja
104 8. Rakennusvaihe Resurssit Suunnitteludokumentti Suunnitteludokumentti sisältää sovellusarkkitehtuurin, sovellusvirran, tietokantasuunnitelman, käyttöliittymäsuunnitelman ja työnkulkukaavion ja/tai viittaa niihin. Suunnitteludokumentin osat, joita käytetään rakennusvaiheen resursseina, ovat tietokantasuunnitelma tai tietohakemisto, käyttöliittymäsuunnitelma ja työnkulkukaavio. Tuotteet Koodi Esimerkiksi ohjelman lähde-, olio- ja/tai suoritettava koodi, työnohjauskieli (JCL), kannankuvauskieli (DDL) tai HTML-kieli, jotka toteuttavat ohjelmointityöyksiköt. Työyksiköt Työyksiköt ovat moduulisuunnittelun tuotteita, ja niitä käytetään koodinkehityksen pohjana. Työyksiköt kehitetään sovellusohjelmia, erityisiä muunto-ohjelmia ja testauksessa mahdollisesti tarvittavia apuohjelmia varten. Lisäksi esimerkiksi eräajotöiden valvonnalle, käyttöliittymämäärittelyille ja kannankuvauskielille kehitetään määritelmäkoodi. Testaustietokanta Testaustietokanta sisältää yhteistä testimateriaalia, joka on kehitetty yksikkötestauksen laadunvalvontaa varten.
8. Rakennusvaihe 105 Yhteistä testimateriaalia pitää tarvittaessa muokata yksittäisten työyksikköjen olosuhteiden mukaiseksi. Yksikkö/jonotestien tulokset Yksikkö- ja jonotesteistä (jos jonotestejä on käytetty) saadut tulokset dokumentoidaan ja säilytetään osana järjestelmädokumentaatiota. Välietapit Koodikatselmus valmis Rakennusvaiheen aikana tuotettu koodi on katselmoitu. Jonotestin hyväksyminen Jonotestin hyväksyminen merkitsee, että jonotestin tulokset on hyväksytty ja että yksikkötestit on saatu valmiiksi. Työkalut Rakennusvaiheessa käytettäviä työkaluja on liikaa lueteltavaksi, ja ne valitaan subjektiivisin perustein. Projektitiimin työkaluja ovat tässä vaiheessa pääasiassa projektiympäristön edellyttämät ohjelmointikielet, kääntäjät ja testausvälineet. Testausvälineitä käsitellään tarkemmin seuraavassa luvussa.
106 8. Rakennusvaihe