Helsingin yliopisto / tietojenkäsittelytieteen laitos / © Arto Wikla 2012
1 Teknistä taustaa: tapoja organisoida ohjelmistoprojekti
Muutettu viimeksi 29.9.2012
/
Sivu luotu 29.8.2012
- Projektin luonnehdintaa
(Hughes & Cotterell, luku 1)
- kyseessä ei ole rutiinitehtävä
- vaatii suunnittelua
- pyrkimys toteuttaa määrätty tavoite tai tuote
- aika on rajoitettu
- työ tehdään jollekulle toiselle kuin itselle (?)
- työssä vaaditaan useiden erikoisalojen osaamista (?)
- työ tehdään useassa vaiheessa
- käytettävissä olevat resurssit ovat rajalliset
- tehtävä on suuri ja/tai mutkikas
- Ohjelmistoprojektin erityispiirteitä
(Hughes & Cotterell, luku 1)
- Tuote on "näkymätön": edistystä ei voi seurata samoin kuin
tien- tai sillanrakennuksessa.
- Monimutkaisuus: kulutettua euroa kohden ohjelmistotuote
on kompleksisempi kuin konkreettisemmat tuotteet.
- Mukautettavuus: sillan tai tien rakentajaa rajoittavat
ennen kaikkea fysiikan lait. Ohjelmiston rakentajalle asiakas asettaa
vaatimuksia, jotka voivat olla epämääräisiä ja jotka voivat muuttua
projektin aikana. Myös informaation kulussa voi olla ongelmia.
- Joustavuus: Ohjelmistotuotteen muuntamisen helppous (verrattuna
fyysisen tuotteen tai organisaation muuttamiseen) johtaa siihen,
että niitä muutoksia myös halutaan.
- Projektin johtamisen tehtäviä
(Hughes & Cotterell, luku 1)
- suunnittelu, mitä tehdään
- organisointi
- työntekijöiden valinta
- ohjaaminen ja ohjeiden antaminen
- edistymisen seuranta
- kontrollointi: umpikujien avaaminen
- uusien ratkaisujen keksiminen
- edustaminen: asiakas, oma organisaatio
Huom: Nämä tehtävät eivät mitenkään välttämättä kuulu
yhdelle henkilölle, "johtajalle", vaan ne voivat jakautua
eri tavoin projektiin osallistujien kesken!
Ohjelmistoprojektien malleja
(osin Hughes & Cotterell, luku 4)
Ohjelmistojen toteuttamiseen on vuosien varrella kehitetty
melkoinen joukko toinen toistaan suurenmoisempia malleja:
List of software development philosophies
(Wikipedia).
Tässä muutamia esimerkkejä:
- Klassinen vesiputousmalli
(Wikipedia)
- lineaarinen
- jos havaitaan ongelmia, palataan edelliseen vaiheeseen
- "vanhanaikainen", mutta paljon ohjelmistoja tehty näin
- etu: jos ei paljon paluuta aiheuttavia ongelmia, selkeä,
ennakoitava ja kirjaimellisesti "suoraviivainen"; helppo johtaa
- haitta: ohjelmistoa laadittaessa ongelmia esiintyy
ja paluita edelliseen vaiheeseen voidaan joutua tekemään
usein ja myös rekursiivisesti
- syy haittaan on esim. se, että asiakas tavataan vain
prosessin alussa ja lopussa; "ei siitä tullutkaan takkia,
tuli tupakkakukkaro"; spesifiointi on oikeasti vaikeaa
- ...
- V-malli
(Wikipedia)
- vesiputousmallin modifikaatio, jossa toteutusvaiheisiin liitetään
vastaavat testaamisen ja oikeaksi toteamisen vaiheet
- validaatiovälineet suunnitellaan samaan aikaan kuin
edetään putouksessa
- moitteita: voi johtaa aiheettomaan turvallisuuden tunteeseen,
vaikea reagoida muutoksiin
- ...
- Spiraalimalli
(Wikipedia)
- laitetaan vesiputous rullalle
- edetään abstraktista konkreettiseen iteroiden eli toistaen
vaiheita: suunnittelu
prototyypittäminen, validointi, testaaminen, ...
- prototyypit tärkeitä; ensin tarkentuvia käsitteellisiä prototyyppejä,
lopuksi toimiva prototyyppi
- asiakas on mahdollista kytkeä mukaan prosessiin
- väitetään soveltuvan erityisesti suuriin ja kalliisiin
projekteihin
- ....
- Rapid application
(Wikipedia)
- ei liikoja suunnitella vaan aletaan heti ohjelmoida
- tehdään pikaisesti prototyyppejä
- protoilun etuja (Hughes & Cotterell):
- tekemällä oppiminen
- parantunut kommunikaatio käyttäjän/asiakkaan kanssa;
ei pelkkää spesifikaatiota vaan pääsee kokeilemaan
- käyttäjä/asiakas pääsee vaikuttamaan vauhdissa
- puutteellisen spesifikaation täydentäminen
- kuvailevaa dokumentaatiota tarvitaan vähemmän
- ...
- protoilun mahdollisia ongelmia (Hughes & Cotterell):
- käyttäjä/asiakas ei välttämättä ymmärrä prototyypin
olevan vain prototyyppi: syötteiden tarkistus, vasteajat, ...
- ohjelmiston kehittämisestä voi tulla velttoa: hakkeroidaan
se nyt jotenkin toimivaksi
- prosessin kontrollointi ja ohjaus voi olla vaikeaa:
halutaan vain pikaisesti esitellä uusia piirteitä
asiakkaalle
- kustannukset saattavat tulla suuremmiksi kuin
perinteisellä mallilla
- ...
- ...
- Ketterä, Agile
(Wikipedia)
- Ajatus ja nimi synnytettiin peräti manifestin muodossa:
Manifesto for Agile Software Development.
(Mieleeni juolahtaa mahdollisesti sopimaton kysymys siitä,
millaisia asioita manifestein on maailmalle esitelty.
Wikipedia tietää kertoa:
"Manifesti (lat. manifestum 'julistus' < manus 'käsi' + festus '
kosketeltava') on julkinen periaatteiden ja aikomuksien ilmoitus,
joka usein liittyy poliittisiin aiheisiin, mutta manifesti voi
myös ilmaista kirjoittajansa elämänkatsomusta tai taiteellisia
periaatteita. Uskonnollisista asioista kertovaa manifestia
sanotaan uskontunnustukseksi.")
- Iteratiivista ja inkrementaalista.
- Itseorganisoituva työryhmä, jossa jäsenillä voi olla
useita ja vaihtuvia rooleja.
- Paljon interaktiota asiakkaan/käyttäjän kanssa
- Helppo reagoida, tehdä muutoksia vauhdissa.
- Erityisiä täsmennettyjä tekniikoita ("uskonlahkoja";-) ovat
mm. (linkit Wikipediaan):
- ...
- Open Source ja verkkoyhteisöllinen ohjelmistokehitys
(Wikipedia)
- Loistava esimerkki oman laitoksemme Linus & Linux!
- Muita esimerkkejä:
Mozilla Firefox, Google Chromium, Android, Apache OpenOffice Suite, ...
- ...
- ...