Yleistä
Lean software development on Toyotan tavan sovellutus ohjelmistokehitykseen. Toyotan tavalla on pitkä historia, ja se on tunnettu tehokkuudestaan, korkeasta laadusta, henkilöstön tyytyväisyydestä ja reilusta lähestymistavasta alihankkijoihin. Nämä tekijät ovat erittäin haluttuja myös ohjelmistokehitykseen keskittyvissä yrityksessä, joten kannattaa tutustua hieman tarkemmin, kuinka Toyota rakentaa tuotteita.
Ohjelmistokehitys eroaa kuitenkin merkittävästi autojen valmistuksesta. (Ohjelmistokehitys eroaa huomattavasti myös talojen rakentamisesta, mitä kaikki ohjelmistokehityskonsultit eivät vieläkään suostu uskomaan.) Mary ja Tom Poppendieck (http://www.poppendieck.com) ovat tehneet ansiokasta työtä tutkimalla Toyotan tapaa ja soveltamalla sitä ohjelmistokehitykseen. Tämän työn tuloksena on syntynyt Lean software development.
Lean on tavallaan vielä korkeamman tavan menetelmä kuin Scrum. XP:stä poiketen Lean ei ota kantaa päivittäiseen ohjelmoijan työn tekemiseen. Scrumista poiketen Lean ei tarjoa myöskään tarkkaa mallia siitä, kuinka projekti kuuluisi organisoida. Tosin kaikki ketterät menetelmät edellyttävät jo määritelmällisesti toistuvista lyhyistä sykleistä koostuvaa toimintamallia.
Lean tarjoaa kuitenkin koko joukon periaatteita, joita tuotekehityksessä kannattaa noudattaa ja joitain menetelmiä siihen, kuinka muualla dokumentoituja käytäntöjä kannattaa soveltaa omaan organisaatioon. Täten Leanilla ei ole tarjota mitään roolijakoa tai valmista joukkoa dokumentteja, mitkä projektin kuluessa kuuluisi täyttää.
Oheisessa kuvassa on esiteltynä Lean-ajattelun selkäranka: arvovirtakartta. Ajatuksena on piirtää koko tuotantoprosessin kaikki vaiheet ja mitata kuhunkin vaiheeseen kuluva tehollinen aika ja asiakkaan näkökulmasta se aika, milloin ei tapahdu mitään hyödyllistä. Tällaista hukkaa on esim. se aika, mikä kuluu bugiraportin hyväksymisestä bugikorjauksen aloittamiseen. Menetelmää on kuvattu tarkemmin omalla sivullaan.
Laatukäsitys
Ketteriä menetelmiä pidetään usein cowboy-koodauksena ja kurittomana hakkerointina. Kuten Leanin periaatteistakin käy ilmi, ketterässä kehityksessä ollaan kuitenkin erittäin tarkkoja tuotettavasta laadusta. Lean-ajattelussa on tunnettu ns. viiden S:n menetelmistö, jolla ylläpidetään laatutasoa. Samaa menetelmää voi soveltaa niin työympäristöön, tiimin toimintaan kuin ohjelmointiinkin. Viisi S:ää ovat seuraavat:
- Siivoa. Selvennä, mitä kaikkia prosesseja, käytäntöjä ja materiaalia ympäristössä on. Siivoa roskat.
- Systematisoi. Jokaisella asialla pitäisi olla oma paikkansa, jokaisella toiminnolla vastuuhenkilönsä.
- Särmää. Systematisointi saattoi paljastaa lisää roskia, korjaa kaikki pienimmätkin puutteet. Viimeistele ympäristö säihkyväksi.
- Standardoi. Automatisoi rutiinitehtävät, tee selvät toimintamallit niille toiminnoille, joille sellainen on tehtävissä ja kehitä luovaa ongelmanratkaisua tukeva ympäristö.
- Säilytä. Noudata jatkuvasti edellä määriteltyjä sääntöjä.
Ohjelmointiin sovellettuna nämä viisi vaihetta hyvään laatuun voisivat olla vaikka seuraavanlaiset:
- Poista kaikki turha koodi. Turhaa koodia on mm. kaikki koodi, mitä ei suoriteta koskaan, käyttämättömät import/using –lauseet, turhat muuttujat, metodit ja luokat sekä kopioidut koodilohkot.
- Varmista, että sovelluksen projektirakenne ja luokkien riippuvuussuhteet ovat järkevät.
- Aseta päälle kaikki kääntäjän varoitukset ja korjaa varoituksia aiheuttavat kohdat, paranna yksikkötestien kattavuutta.
- Älä anna koodin rapautua. Varmista, että testit ajetaan automaattisesti.
- Muodosta koodauskäytännöt ja noudata niitä. Toista edellä mainittuja sääntöjä jatkuvasti.
Toteutuskäytännöistä
Lean-menetelmä kannustaa standardoimaan toteutuksen yksityiskohtia mahdollisimman paljon. Muutamia esimerkkejä suositelluista standardeista ovat: nimeämis- ja ohjelmointikäytännöt, käyttöliittymästandardit, versionhallintakäytännöt, ja tiedostorakenteet. Lean itsessään ei edellytä mitään tiettyjä käytäntöjä, vaan kannustaa kirjaamaan yrityksen parhaaksi kokemat käytännöt standardeiksi ja kehittämään näitä jatkuvasti.