Etusivu

Lataa PDF-versio

Sisällys:

  1. Johdanto
  2. Sulautettujen järjestelmien ketterät kehitysmenetelmät
  3. Tekniikkakatalogi
  4. Yritysesimerkit
  5. Lisätiedot

Keskustele ja kommentoi:

Tekniikkakatalogi: Ketteryyden perustekniikat

Töiden paloittelu

17480.png

Ongelma: Työt on jaettu tehtäviin, mutta tehtävien koko on niin suuri, että niiden toteuttaminen kestää useamman iteraation tai kuukauden ajan. Tehtävien jakaminen pienempiin, yhden iteraation aikana toteutettaviin osiin tuntuu mahdottomalta.

Ratkaisu: Töiden paloitteluun sopivankokoisiin työtehtäviin kiinnitetään huomiota jo töiden suunnitteluvaiheessa. Paloittelua ei tehdä aina ominaisuus kerrallaan, vaan paloittelussa otetaan huomioon ominaisuuden toteuttamisen iteraatiota pidempi aika ja ominaisuuden toteuttaminen paloitellaan tarvittaessa osiin.

Tavoite: Työt saadaan paloiteltua sen kokoisiksi tehtäviksi, että tehtävät pystytään toteuttamaan yhden iteraation aikana.

Sulautettujen järjestelmien suunnittelussa on mukana monen eri alan asiantuntijoita, jolloin kokonaiskuvan hallitseminen on tärkeää. Pienikin muutos voi aiheuttaa muutostarvetta moneen eri alueeseen. Tämän vuoksi suunnittelu lähteekin usein liikkeelle sulautetun järjestelmän kokonaisarkkitehtuurista. Vaikka kokonaisuutta hallitaankin, voidaan myös sen tekeminen pilkkoa pienempiin työtehtäviin: mitä kokonaiskuvasta tarvitaan juuri tässä vaiheessa projektia, mikä on oleellista, ja mikä osuus voidaan suunnitella tarkemmin vasta myöhemmin.

Asiakkaan vaatimus on usein hyvinkin korkealla tasolla. Ketterässä kehityksessä näistä asiakkaan vaatimuksista muodostetaan usein käyttäjätarinoita, jotka kertovat, miten asiakas haluaisi käyttää tuotetta. Sulautettujen järjestelmien kehittämisessä kehitysjonon kohdat eivät välttämättä ole käyttäjätarinoita kuvaten käyttäjän toimintaa, vaan voivat kuvata esimerkiksi sulautetun järjestelmän toiminnallisuutta. Joka tapauksessa näiden kehitysjonon kohtien tulee olla sen kokoisia, että ne kyetään toteuttamaan yhden iteraation  aikana. Tyypillisesti kehitysjonon kohta jaetaan useammaksi tehtäväksi, ja käytännössä yhden tehtävän toteuttaminen on yhden henkilön tehtävänä yhden iteraation aikana. Näin useampi kehittäjä osallistuu saman kehitysjonon kohdan toteutukseen. Koska tehtävät liittyvät samaan ominaisuuteen, ovat ne usein hyvin riippuvaisia toisistaan.

Laitteiston suunnittelussa yhden ominaisuuden toteuttaminen vie pitkään, joskus jopa koko projektin ajan. Tällöin yhden iteraation kehitysjonon kohdaksi ei ole mahdollista ottaa koko ominaisuuden toteuttamista. Ominaisuuden toteuttaminen voidaankin jakaa osiin – karkeasti määriteltynä esimerkiksi piirikaavion suunnittelu on yhtenä kohtana, piirikuvion asettelu toisena kohtana, valmistus mahdollisesti kolmantena kohtana ja lopullisen piirin testaus neljäntenä kohtana. Nämä kaikki kehitysjonon kohdat voidaan ajoittaa eri iteraatioihin siten, mikä on toteuttamisen kannalta järkevää.

Ketterässä ohjelmistokehityksessä voidaan toteuttaa asiakkaan vaatimukset yksi ominaisuus kerrallaan. Näin pystytään priorisoimaan tärkeimmät ominaisuudet ja toteuttamaan ne valmiiksi asti kerrallaan. Samankaltaiseen toteutukseen voidaan laitteistopuolella pyrkiä modulaarisella suunnittelulla . Näin voidaan hallita pienempiä kokonaisuuksia, priorisoida moduuleja ja helpottaa uudelleenkäyttöä. Modulaarisuuden lisäksi voidaan käyttää esimerkiksi emulaattoreita ja valmiita piirikortteja, jolloin voidaan edetä toteutuksessa nopeammin, vaikka lopullista tuotetta ei vielä pystytäkään valmistamaan.

Jakamalla ominaisuuksien toteuttamista osiin saadaan tehtävistä helpommin hallittavia ja seurattavia. Näin ymmärretään paremmin, missä kohtaa suunnittelutyö etenee ja siihen voidaan tehdä muutoksia asiakkaan toiveiden mukaisesti. Tehtäviä suunniteltaessa tulee otettua huomioon myös tehtävien väliset riippuvuussuhteet, kuten se, mitä ohjelmistosta tarvitaan laitteiston testaukseen ja päinvastoin.

Tehtävien mukauttaminen iteraatioihin tekee työstä läpinäkyvämpää ja täsmentää työmäärän arviointia. Näin myös tiimi- ja työntekijäkohtainen työkuorma pysyy tasaisena, epävarmuus hallittavana ja kestävä tuottavuus turvataan. Huomioitavaa on se, että töiden paloittelu ja työmäärän arvioinnin tarkkuus iteraatiolle kehittyvät kokemuksen myötä. Ilman iteraation aikana valmiiksi saatavaa osakokonaisuutta tiimin työskentely on haastavaa. Osatavoitteet antavat työhön aikaan saamisen kokemuksen ja lisäävät työn mielekkyyttä, kun tavoitteet ovat selkeitä ja mielessä pysyviä.

Esimerkki

Asiakasvaatimus 1:       Haluan laitteessa olevan WLANin.

   Kehitysjonon kohta 1.1:      WLAN käynnistyy ja se havaitaan.

         Tehtävä 1.1.1:       Varmista WLAN –komponentin
               kytkennät ja niiden toimivuus.

         Tehtävä 1.1.2:       Ohjelmoi ajuri, jonka kautta WLANin päälläolo havaitaan.

         Tehtävä 1.1.3:       Testaa WLANin käynnistyminen ja havaitseminen.

   Kehitysjonon kohta 1.2:       …

         Tehtävä 1.2.1:       …

         …         …


Päivitetty: 22.01.15 13:33

Jaa: