Johdanto
Ketterän kehityksen arvot ja periaatteet sulautetuissa järjestelmissä
Arvot ja periaatteet luovat pohjan ketterälle kehitykselle. Muokkaamalla näitä ketterän ohjelmistokehityksen julistuksen neljää arvoa ja kahtatoista periaatetta voidaan vastata sulautettujen järjestelmien kehittämisen erikoispiirteiden haasteisiin.
A Yksilöt ja vuorovaikutus
Sulautettujen järjestelmien kehittämisessä laitteisto, ohjelmisto ja mekaniikka muodostavat tiiviin kokonaisuuden. Koska kukin osa-alue vaikuttaa toisiinsa, kehittäjien välisen vuorovaikutuksen merkitys korostuu. Järjestelmän suunnittelussa on mukana eri alojen asiantuntijoita, jolloin ymmärrys oman työn merkityksestä muille on tärkeää. Tiiviissä vuorovaikutuksessa mahdolliset väärinymmärrykset tulevat esiin ja saadaan selvitettyä nopeasti, jolloin vältetään turhaa työtä. Ketteriin periaatteisiin kuuluvat myös luottamus yksilöihin ja tiimeihin sekä ohjeet tehokkaampaan kanssakäymiseen eri osapuolten kesken. Tavoitteena on myös kestävä työtahti koko projektin ajan, sekä tiimin säännöllinen toimintatapojen kehittäminen.
B Toimiva tuote
Toimivaa tuotetta on sulautetuissa järjestelmissä mahdotonta toimittaa lyhyin, säännöllisin väliajoin, koska uusien laitteistojen valmistaminen on hidasta ja kallista. Toimivan tuotteen tulee kuitenkin olla se, mihin pyritään. Tuotteen sijaan iteraatioiden lopuksi voidaan esitellä erilaisia demonstraatioita ja simulaatioita tuotteesta, pyrkien joka kerta kokonaisuuteen, johon on lisätty jotain uutta edelliseen kertaan nähden. Aina kun mahdollista, esitellään kuitenkin toimiva tuote. Näin päästään konkreettisiin välitavoitteisiin. Asiakas näkee tuotteen edistymisen ja kykenee antamaan palautetta, jonka mukaan tuote kehittyy. Laadun merkitys korostuu sulautetuissa järjestelmissä – fyysistä laitetta ei kyetä päivittämään kuten pelkkää ohjelmistoa, ja usein ohjelmistonkin päivittäminen on haastavaa. Tällöin tuotteen on oltava laadukas ja toimiva heti ensimmäisestä toimitetusta versiosta alkaen.
C Asiakasyhteistyö
Sulautettujen järjestelmien kehityksessä loppuasiakas on usein kauempana kehittäjästä verrattuna ohjelmistokehitykseen. Esimerkiksi jos kehitettävä järjestelmä on osa suurempaa järjestelmää, voi asiakas olla joku, joka käyttää tätä järjestelmän osaa. Asiakkaan tarpeiden tyydyttäminen ja muutosten hyödyntäminen asiakkaan eduksi ovat yhtä tärkeitä sulautetuissa järjestelmissä kuin ohjelmistokehityksessäkin. Asiakkaalta saatava palaute säännöllisesti esitetyistä demonstraatioista tai keskeneräisestä tuotteesta auttavat kehittämään tuotetta oikeaan suuntaan.
D Muutokseen vastaaminen
Erityisesti laitteiston puolella suuret muutokset loppuvaiheessa projektia ovat kalliita, niin tuotantokulujen kuin muutosten aiheuttamien kerrannaisvaikutusten vuoksi. Kuitenkin sulautetun järjestelmän kehittäminen on usein pitkä prosessi ja ymmärrys halutusta tuotteesta kasvaa projektin aikana. Yksinkertaisin ratkaisu tuotekehityksen alkuvaiheissa saattaa aiheuttaa rajoituksia jatkokehityksen aikana. Tämän vuoksi päätökset pitäisi tehdä mahdollisimman myöhään ja pitää mielessä myös yleiskäyttöisyys sekä päätöksistä aiheutuva lisätyön määrä. Suunnitelman tulisi sulautetussa järjestelmässäkin olla vain niin yksityiskohtainen, kuin siinä kohtaa projektia on välttämätöntä.
Ketterän kehityksen periaatteet sovellettuna sulautettuihin järjestelmiin
(Alkuperäisistä periaatteista muokatut osat on esitetetty kursiivilla.)
1. Tärkein tavoitteemme on tyydyttää asiakas toimittamalla tämän tarpeet täyttäviä demonstraatioita, jotka johtavat hyödylliseen tuotteeseen aikaisessa vaiheessa ja säännöllisesti. (B,C)
2. Vältämme rajoittavien päätösten tekoa salliaksemme muutokset myös kehityksen myöhäisessä vaiheessa. Näin muutosta voidaan hyödyntää asiakkaan kilpailukyvyn edistämiseksi. (C,D)
3. Toimitamme demonstraatioita, jotka johtavat hyödylliseen tuotteeseen säännöllisesti, parin viikon tai kuukauden välein, ja suosimme lyhyempää aikaväliä. (B)
4. Liiketoiminnan edustajien ja ohjelmistokehittäjien tulee työskennellä yhdessä päivittäin koko projektin ajan. (A)
5. Rakennamme projektit motivoituneiden yksilöiden ympärille. Annamme heille puitteet ja tuen, jonka he tarvitsevat ja luotamme siihen, että he saavat työn tehtyä. (A)
6. Tehokkain ja toimivin tapa tiedon välittämiseksi kehitystiimille ja tiimin jäsenten kesken on kasvokkain käytävä keskustelu. (A)
7. Demonstraatiot ja toimiva tuote ovat edistymisen ensisijainen mittari. (B)
8. Ketterät menetelmät kannustavat kestävään toimintatapaan. Hankkeen omistajien, kehittäjien ja käyttäjien tulisi pystyä ylläpitämään työtahtinsa hamaan tulevaisuuteen. (A)
9. Teknisen laadun ja tuotteen hyvän rakenteen jatkuva huomiointi edesauttaa ketteryyttä. (B)
10. Yksinkertaisuus ja yleiskäyttöisyys – tekemättä jätettävän työn maksimointi samalla minimoiden tehtävä työ – on oleellista. (D)
11. Parhaat arkkitehtuurit, vaatimukset ja suunnitelmat syntyvät itseorganisoituvissa ja tiivistä yhteistyötä tekevissä tiimeissä. (A)
12. Tiimi tarkastelee säännöllisesti, kuinka parantaa tehokkuuttaan, ja mukauttaa toimintaansa sen mukaisesti. (A)
Lisää aiheesta
Kaisti M., Mujunen T., Mäkilä T., Rantala V., Lehtonen T.: Agile Principles in the Embedded System Development.