Projektinhallinta on läpileikkaava teema, joka kulkee koko ohjelmistokehitysprosessin läpi esitutkimuksesta ylläpitoon. Projektinhallinta varmistaa että ohjelmistoprojekti toteutetaan suunnitellusti, aikataulussa, budjetissa ja vaatimusten mukaisesti.
Ohjelmistoprojekti eroaa muista projekteista siinä, että lopputuote on abstrakti ja monimutkainen, vaatimukset voivat muuttua projektin aikana, ja teknologinen kehitys on nopeaa. Näistä syistä ohjelmistoprojektien hallintaan on kehitetty erityisiä menetelmiä ja käytäntöjä.
Projektinhallinta koostuu useista osa-alueista, jotka kaikki ovat tärkeitä projektin onnistumisen kannalta:
Laajuudenhallinta määrittelee mitä projektiin kuuluu ja mitä ei. Se sisältää vaatimusten määrittelyn, työn jakamisen osiin (WBS, Work Breakdown Structure) ja muutosten hallinnan. Laajuuden hallinta estää projektin laajentumisen hallitsemattomasti (scope creep).
Aikatauluhallinta varmistaa että projekti valmistuu sovitussa ajassa. Se sisältää:
Kustannushallinta varmistaa että projekti pysyy budjetissa. Se sisältää:
Laatuhallinta varmistaa että tuotettu ohjelmisto täyttää asetetut laatuvaatimukset. Se sisältää laatusuunnittelun, laadunvarmistuksen ja laadunvalvonnan. Laatustandardeja ovat esimerkiksi ISO 9001 ja CMMI (Capability Maturity Model Integration).
Resurssihallinta varmistaa että projektilla on käytössään tarvittavat resurssit oikeaan aikaan. Resursseja ovat henkilöstö, laitteet, työkalut ja tilat. Resurssihallinta sisältää resurssisuunnittelun, resurssien hankinnan ja resurssien tasapainotuksen.
Riskienhallinta tunnistaa ja hallitsee projektiin liittyviä riskejä. Prosessi sisältää:
Viestintähallinta varmistaa että tieto kulkee tehokkaasti projektin sisällä ja sidosryhmien välillä. Se sisältää viestintäsuunnitelman laatimisen, säännölliset palaverit, raportointikäytännöt ja dokumentaation jakamisen.
Ohjelmistokehitystä voidaan suunnitella ja ohjata erilaisilla malleilla ja menetelmillä. Sopiva lähestymistapa riippuu projektin tarpeista.
Vesiputousmalli on perinteinen, peräkkäinen prosessimalli, jossa projekti etenee vaihe vaiheelta: esitutkimus → määrittely → suunnittelu → toteutus → testaus → käyttöönotto → ylläpito. Vaiheet suunnitellaan eteneviksi järjestyksessä. Aiempaan vaiheeseen palaaminen voi olla tarpeen, mutta se on usein työlästä.
Vesiputousmallin edut:
Vesiputousmallin haitat:
Ketterät menetelmät ovat iteratiivisia ja inkrementaalisia lähestymistapoja, jotka korostavat joustavuutta, asiakasyhteistyötä ja nopeaa reagointia muutoksiin. Ketterät menetelmät perustuvat Agile Manifestoon (2001), joka määrittelee neljä perusarvoa:
Ketteriä menetelmiä kehitettiin vastaukseksi perinteisten, tarkasti etukäteen suunniteltujen ohjelmistoprojektien ongelmiin. Pitkissä projekteissa asiakkaiden tarpeet, liiketoimintaympäristö ja käytettävä teknologia ehtivät usein muuttua ennen kuin ohjelmisto valmistui. Jos valmis tuote esiteltiin asiakkaalle vasta projektin lopussa, väärin ymmärretyt vaatimukset ja muut virheet saattoivat tulla esiin hyvin myöhään, jolloin niiden korjaaminen oli kallista ja hidasta.
Ketterissä menetelmissä ohjelmistoa toteutetaan pienissä osissa ja siitä pyydetään palautetta säännöllisesti. Näin tärkeimmät ominaisuudet voidaan toimittaa aikaisemmin, muutoksiin voidaan reagoida hallitusti ja ongelmat havaitaan nopeammin. Menetelmät on otettu laajasti käyttöön erityisesti siksi, että ne parantavat asiakkaan ja kehitystiimin yhteistyötä, tekevät työn etenemisen näkyväksi ja pienentävät riskiä rakentaa pitkään vääränlaista tuotetta.
Ketteryyttä ei pidä ymmärtää niin, ettei ohjelmistoa tarvitse määritellä, suunnitella tai dokumentoida. Näitä asioita tehdään edelleen, mutta sopivassa laajuudessa ja usein vaiheittain projektin edetessä. Esimerkiksi vaatimuksia voidaan kuvata käyttäjätarinoina ja hyväksymiskriteereinä, arkkitehtuuria suunnitella ennen toteutusta ja sen aikana sekä olennaiset ratkaisut, rajapinnat ja käyttöohjeet dokumentoida.
Agile Manifeston ilmaus "ennen" ei tarkoita, että jälkimmäinen asia olisi arvoton. Prosesseilla, työkaluilla, dokumentaatiolla, sopimuksilla ja suunnitelmilla on paikkansa, mutta niiden tulee tukea toimivan ja asiakkaalle hyödyllisen ohjelmiston tuottamista. Ketteryys ei myöskään tarkoita suunnittelemattomuutta, jatkuvaa tavoitteiden vaihtamista tai sitä, että laatuvaatimuksista ja sovituista vastuista voitaisiin luopua.
Seuraavaksi esitellään kolme yleisesti käytettyä ketterää lähestymistapaa: Scrum, Kanban ja Extreme Programming (XP).
Scrumissa kehitystyö jaetaan lyhyisiin, ennalta sovitun mittaisiin jaksoihin eli sprintteihin. Kussakin sprintissä toteutetaan sovittu kokonaisuus, jonka tulosta arvioidaan jakson lopussa.
Kanbanissa työ etenee jatkuvana virtana ilman sprinttejä. Tehtävien eteneminen tehdään näkyväksi Kanban-taululla, ja keskeneräisen työn määrää rajoitetaan, jotta tehtävät valmistuvat tasaisesti.
XP painottaa ohjelmiston laatua ja nopeaa palautetta kehitystyön aikana. Sen ytimessä ovat tekniset työtavat, kuten jatkuva testaaminen, pariohjelmointi ja koodin säännöllinen parantaminen.
Projektinhallintaan on saatavilla lukuisia työkaluja, jotka helpottavat suunnittelua, seurantaa ja yhteistyötä:
Projektin onnistumista mitataan useilla kriteereillä:
Projektin päätteeksi järjestetään usein projektin päätöspalaveri (post-mortem, lessons learned), jossa arvioidaan mitä onnistui ja mitä voisi parantaa seuraavissa projekteissa.