Ohjelmistoprojektin menetelmistö muodostetaan toisiaan tukevista menetelmistä

liuhtonen-front.png
Janne Liuhtonen | 27.01.11 | Kommentit:
Kategoriat: Ohjelmistokehitys
Tagit: Gofore Continuous Development Model SCRUM Unified Process

Ohjelmistoprojektin toteuttamiseen ei ole olemassa valmista pakettiratkaisua, joka sopisi kaikkien projektien tarpeisiin. Scrum voi toimia projektimenetelmistön osana, mutta se ei yksinään riitä kokonaisen projektin ohjelmistonkehitysmenetelmäksi. Tärkeintä kokonaisuuden kannalta on projektin jakaminen vaiheisiin ja projektia tukevan projektimenetelmistön muodostaminen.

Ohjelmistoprojektin toteuttaminen vaatii taustalleen huolellisesti suunnitellun menetelmistön. Ohjelmistonkehitysmenetelmistö määrittelee toimintatavat, prosessin, työtehtävät ja roolit, joita hyödyntäen voidaan tuottaa asiakkaan tarpeita vastaava tietojärjestelmä. Ohjelmistonkehitystä ei voi rinnastaa teollisuuden tuotantoprosesseihin, vaan se on aina uuden tuotteen kehitystyötä. Tämän vuoksi asiakkaalta kehitysprosessin aikana järjestelmästä saatu palaute on äärimmäisen tärkeää. Jotta projektissa syntyy lopputuotteena asiakkaan kannalta mielekäs ja hyödyllinen järjestelmä, ohjelmistotyötä tulee tehdä iteratiivisesti ja inkrementaalisesti. Näin projektia on mahdollista ohjata oikeaan suuntaan asiakkaan palautteen perusteella ja varmistaa, että projekti osuu maaliinsa.

Ohjelmistoprojektin toteuttamiseen ei ole olemassa valmista pakettiratkaisua, joka sopisi kaikkien projektien tarpeisiin. Viime vuosina Scrum on saanut jonkinlaisen ohjelmistonkehitysmenetelmien hopealuodin aseman. Scrum voi toimia projektimenetelmistön osana, mutta se ei yksinään riitä kokonaisen projektin ohjelmistonkehitysmenetelmäksi.

Kuten muutkin ohjelmistonkehityksen menetelmät, Scrum kattaa vain osan ohjelmistoprojektin elinkaaresta ja tehtävistä. Scrumiin on yleistetty ketterän projektin- ja riskienhallinnan ideoita erilaisiin tarpeisiin laajennettavaksi kehykseksi. Sitä ole edes suunniteltu käytettäväksi yksinään, vaan jokaisen organisaation on tarkoitus laajentaa se omaan toimintaansa sopivaksi. Scrum on vain hyvä työkalu muiden joukossa. Projektimenetelmistö vaatii tuekseen elementtejä useammasta menetelmästä sekä projektin yksilöllisten vaatimuksien huomioimista. Tärkeintä kokonaisuuden kannalta on kuitenkin projektin vaiheistus, jota seuraa yksittäisten vaiheiden suunnittelu.

Ohjelmistoprojektin jakaminen vaiheisiin

Projektikokonaisuudesta on tunnistettavissa useampia erilaisia vaiheita. Kaikkiin vaiheisiin liittyy järjestelmän määrittelyä, suunnittelua, toteutusta ja testausta erilaisin painotuksin. Aluksi projektin tavoitteet tulee määritellä korkealla tasolla. Tämä muodostaa projektin aloitusvaiheen. Aloitusvaiheen jälkeen asiakkaan visiota järjestelmästä jalostetaan tarkennusvaiheessa joukoksi korkealla tasolla kuvattuja ominaisuuksia. Järjestelmää toteutettaessa toiminnallisuudet hiotaan lopulliseen muotoonsa asiakkaan palautteen perusteella. Mukaan voidaan myös ottaa uusia ominaisuuksia tai jättää joitain ominaisuuksia pois kesken projektin. Järjestelmän ominaisuuksien toteuttaminen vakaan arkkitehtuurin ympärille muodostaa projektin rakennusvaiheen. Projektin päättyessä järjestelmä siirretään loppukäyttäjien käyttöön. Usein käyttöönottovaiheessa on myös tarpeen järjestetää koulutusta, pystyttää järjestelmälle tuotantokäytön palvelinympäristö tai vaikkapa laatia järjestelmän käyttöohje.

Ohjelmistoprojektia suunniteltaessa täytyy hahmottaa toteutettavan järjestelmän koko elinkaari. Kirjallisuudessa kuvatuissa ketterissä menetelmissä, kuten Scrumissa tai XP:ssa, ei huomioida riittävästi sitä, että projektiin liittyy järjestelmän toteutuksen eli rakentamisen lisäksi esitutkimusta, käyttötapausten suunnittelua ja tarkennusta, prototyyppien kehittämistä, koulutusta, ylläpitoa sekä mahdollisesti myös jatkokehitystä. Useat menetelmät on kehitetty alunperin tuotekehitysorganisaatioiden tarpeisiin, eivätkä ne ota huomioon asiakasprojektissa merkittävässä osassa olevaa asiakkaan ja toimittajan välistä yhteistyötä ja kommunikointia.

Asiakasprojekteissa iteratiivinen ja inkrementaalinen kehitys on tarpeen sijoittaa hienojakoisemman vaihejakomallin sisälle. Huolellinen vaiheistus tukee tarkennus- ja rakennusvaiheessa käytettäviä ketteriä toteutusmenetelmiä. Projektiin voidaan ottaa käyttöön esimerkiksi Unified Processin (UP) vaihejakomalli ja etapit. UP:n vaihejakomalli lisää rakennusvaiheen lisäksi projektiin aloitusvaiheen, tarkennusvaiheen ja käyttöönottovaiheen. Esimerkiksi Scrum asettuu tällaisessa vaihejakomallissa luontevasti rakennusvaiheen projektin- ja riskienhallinnan menetelmäksi.

Projektikohtaisen menetelmistön muodostaminen

Koska jokainen toteutettava projekti on luonteeltaan erilainen, kaikki menetelmät eivät sovellu käytettäviksi kaikissa projekteissa. Jokaista projektia varten tulee valita omat toimintatapansa. Projektin menetelmistö voidaan koostaa toisiaan täydentävistä menetelmistä aiemman projektikokemuksen, asiakkaan tarpeiden sekä projektin erityispiirteiden, kuten projektin laajuuden ja tuotettavan järjestelmän kriittisyyden mukaisesti. Projektissa käytettäviä menetelmiä ja työtapoja tulee jalostaa edelleen koko projektin ajan. Käytettävien menetelmien tueksi valitaan sopivat työkalut tehostamaan tiimin työskentelyprosessia sekä asiakkaan ja toimittajan välistä kommunikointia.

Asiakkaan tarpeet ja vaatimukset vaikuttavat siihen, millainen projektin menetelmistöstä muodostuu. Jos asiakkaalla on mahdollisuus ja halu osallistua projektiin sen kaikissa vaiheissa, projektissa käytettävien menetelmien tulee tukea asiakkaan ja toimittajan välistä yhteistyötä. Asiakkaan organisaatio ja toimiala asettavat käytettäville menetelmille myös omat vaatimuksensa.

Goforen asiakasprojektien toimintatapa

Goforen toteuttamissa asiakasprojekteissa käytettävät menetelmät ja käytännöt valitaan ja räätälöidään tukemaan asiakkaan osallistumista sekä toteutettavan projektin erityistarpeita. Projektissa voidaan hyödyntää tarkennus- ja rakennusvaiheissa esimerkiksi Scrumia tai Goforella kehitettyä Gofore Continuous Development Model -menetelmää (GCDM). GCDM rakentuu Scrumin, XP:n ja UP:n vaikutteiden pohjalle. GCDM tuo ketterään kehitykseen asiakas- ja ominaisuuskeskeisen näkökulman sekä konkreettisia työkaluja asiakkaan ja toimittajan väliseen yhteistyöhön. Jatkokehitystä voidaan tehdä joko jatkuvana kehityksenä tai iteratiivisesti.

Ohjelmistoprojektia toteuttaessa ei ole mahdollista tukeutua täysin valmiisiin ratkaisuihin, vaan projektikokonaisuus vaatii aina projektin toteutusmenetelmien huolellista suunnittelua ja räätälöintiä. Projekti tulee jakaa selkeisiin vaiheisiin, joiden välillä siirtymistä varten kannattaa laatia joukko tavoitteita, joiden tulee täyttyä ennen seuraavaan vaiheeseen siirtymistä. Projektimenetelmistö muodostuu luontevasti toisiaan tukevista menetelmistä. Asiakasprojektin menetelmistöä muodostettaessa ei ole mielekästä panostaa kehitysprosessin rakennusvaiheen osaoptimointiin. Sen sijaan tulee keskittyä kokonaisvaltaisen toteutusmallin muodostamiseen, työkalujen valintaan sekä asiakkaan ja toimittajan välisen yhteistyön suunnitteluun ja tehostamiseen.

Lue aiheesta lisää Liuhtosen Jannen Diplomityöstä

Janne Liuhtonen

Janne Liuhtonen on ohjelmistokehityksen ammattilainen, joka hallitsee alan modernit teknologiat ja menetelmät. Hänellä on laaja kokemus eri rooleissa toimimisesta vaativissa ohjelmistoprojekteissa. Janne on tehnyt diplomityönsä ketterien ohjelmistokehitysmenetelmien soveltamisesta asiakasprojekteihin. Ohjelmistokehitysmenetelmien ja projektinhallinnan osaamistaan Janne on päivittänyt aktiivisesti aihetta käsittelevillä kursseilla.