Tekniikkakatalogi: Sulautetun kehittämisen omat käytännöt
Modulaarinen suunnittelu
Ongelma: Suunniteltavien laitteiden osien uudelleenkäyttö on vaikeaa ja testaaminen hankalaa ennen kuin koko laite on valmis.
Ratkaisu: Modulaarisessa suunnittelussa laite jaetaan useaan pienempään itsenäiseen osaan, joiden väliset rajapinnat on tarkasti määritelty.
Tavoite: Mahdollistetaan laitteen osien itsenäinen kehitys ja testaus sekä tehokas uudelleenkäyttö.
Nykyaikaiset sulautetut järjestelmät ovat laajoja ja monimutkaisia kokonaisuuksia, joiden kehittäminen vaatii paljon resursseja ja aikaa. Järjestelmien suunnittelu ja hallitseminen yhtenä kokonaisuutena vaatii tarkkaa ja huolellista suunnittelua. Näin suurten kokonaisuuksien hallitseminen ketterässä suunnitteluprosessissa on haasteellista, koska luonnolliset iteraatiot venyvät helposti turhan pitkiksi.
Modulaarinen suunnittelu ei ole käsitteenä uusi, eikä se ole varsinaisesti ketterä tuotekehitysmenetelmä. Modulaarisella suunnittelulla voidaan kuitenkin helpottaa ketterien periaatteiden soveltamista esimerkiksi laitteistosuunnittelussa.
Modulaarinen suunnittelu on tunnettua myös ohjelmistokehityksen puolella. Modulaarisessa ohjelmoinnissa ohjelmiston toiminnot erotetaan omiksi itsenäisiksi moduuleikseen. Ohjelmoinnissa modulaarisuudella parannetaan ohjelmiston ylläpidettävyyttä. Moduulit toteuttavat omat osansa kokonaisuudesta ja yhdistyvät toisiinsa tarkoin määriteltyjen rajapintojen kautta. Näin uusia moduuleja voidaan helposti lisätä, ja vanhoja moduuleja poistaa tai päivittää. Modulaarisella suunnittelulla parannetaan järjestelmän osien uudelleenkäytettävyyttä. Itsenäisesti määriteltyjen, toteutettujen ja dokumentoitujen osien uudelleenkäyttö on suoraviivaisempaa kuin osien irrottaminen suuresta järjestelmästä ja liittäminen osaksi toista järjestelmää.
Sulautettujen järjestelmien suunnittelussa modulaarinen lähestymistapa helpottaa ketterien käytäntöjen noudattamista. Moduulien kanssa toimiessa yksittäisten tehtävien koko saadaan pidettyä kohtuullisen pienenä, ja työn luonnolliset iteraatiot ovat sopivan mittaisia. Modulaarisuus helpottaa myös testaamista. Moduulien kehitysvaiheessa niiden toiminta saadaan testattua itsenäisesti. Tämän jälkeen voidaan siirtyä testaamaan niitä osana suurempaa järjestelmää, jolloin testaaminen painottuu lähinnä moduulien rajapintojen toimintaan.
Sulautettujen järjestelmien suunnittelussa modulaarisen suunnittelun pohjana voi toimia niin sanottu alustalähtöinen suunnittelu. Järjestelmien pohjana käytetään yleiskäyttöistä alustaa, joka sisältää järjestelmän pääarkkitehtuurin ja keskeisimmät ominaisuudet. Alustan päälle lisätään uusia ominaisuuksia, jotka osaltaan toteuttavat järjestelmän toiminnallisuuden.
Alustalähtöinen suunnittelu
Alustalähtöistä suunnittelua voidaan pitää modulaarisen suunnittelun erikoistapauksena. Suunniteltaessa useita samankaltaisia laitteita, tuotekehitystiimille muodostuu käsitys järjestelmien arkkitehtuurin keskeisistä piirteistä ja ominaisuuksista. Tämän käsityksen pohjalta voidaan suunnitella alusta, joka toimii lähtökohtana tuleville uusille järjestelmille. Alusta sisältää laitteissa käytetyn arkkitehtuurin, keskeisimmät ominaisuudet sekä kattavat rajapinnat uusien ominaisuuksien lisäämiselle.
Kun yleiskäyttöinen alusta on suunniteltu, voidaan uuden järjestelmän tuotekehitys aloittaa nopeasti ja kustannustehokkaasti helposti muokattavan ja paljon toiminnallisuutta sisältävän alustan avulla.
Yleiskäyttöiseksi suunniteltuun alustaan saattaa kertyä paljon toiminnallisuutta, jota ei tarvita jokaisessa projektissa. Toisaalta, koska alustasta halutaan yleiskäyttöinen, kyseiset ominaisuudet kuitenkin halutaan sisällyttää alustaan, jolloin uusien tuotteiden suunnittelu alustan pohjalta tulee nopeammaksi ja halvemmaksi.
Laaja ominaisuuksien kirjo näkyy alustan koossa ja komponenttien määrässä, mikä rajoittaa sen käyttöä suurissa tuote-erissä. Pienissä sarjoissa, prototyypeissä sekä tuotteissa, joihin tarvitaan asiakaskohtaisia muokkauksia, alustalähtöinen suunnittelu voi tuoda selkeitä kustannussäästöjä uudelleenkäytettävyyden avulla. Yleisesti tällaiset alustat koostuvat ohjelmoitavasta prosessorista ja logiikasta, jonka ympärille kerätään paljon ominaisuuksia sekä liittimiä ja väyliä, joiden avulla alustaan voidaan helposti liittää eri toiminnallisuutta sekä moduuleja.
Lisää aiheesta
Cordeiro L., Barreto R., Oliveira M.: Towards a Semiformal Development Methodology for Embedded Systems.