Mallipohjaisessa suunnittelussa kehittäjä työskentelee useimmiten mallinnetun sovelluksen kanssa visuaalisten työkalujen avulla. Hän mallintaa kehitettävän ohjelmiston toiminnallisuuksia kokonaisuuksina koodin kirjoittamisen sijaan. Tämä tarkoittaa sitä, että kehittäjä keskittyy yksinomaan kehitettävän ohjelmiston toiminnallisuuksiin ja luo virtuaalista mallia sekä ohjelmistosta että siitä ympäristöstä, jossa tuo ohjelmisto toimii. Tässä vaiheessa suunnittelua kehitettävä ohjelmisto elää ikään kuin kuplassa – irrallisena ympäröivästä todellisuudesta.

Tämä tarkoittaa, että mallipohjaisesti suunnitellut ohjelmistot ovat lähtökohtaisesti laitteistoriippumattomia. Kun puhutaan tuotekehityksestä, jossa ollaan luomassa jotain sellaista, mitä ei aiemmin ole tehty, on laitteistoriippumattomuus erittäin suuri mahdollisuus.

Miten laitteistoriippumatonta koodia, mitä se tarkoittaa

Koska mallipohjainen suunnittelu lähtökohtaisesti perustuu työskentelyyn mallin kanssa ilman lopullista järjestelmää, ei kehitysvaihe ota kantaa siihen, mihin laitteeseen lopullinen tuotos lopulta asennetaan. Malli voidaan suunnitella hyvin lähelle valmista muotoa ja testata virtuaalisesti lukuisia kertoja ennen kuin se käy edes lähellä lopullista laitteistoympäristöään.

Kehitetyn ohjelmiston ja laitteen yhdistäminen vaatii erillistä integraatiota. Ja tämä voidaan – ainakin teoriassa – tehdä mihin tahansa sopivaan ympäristöön. Esimerkiksi mallipohjaisesti kehitetty työkoneen ajovoimansiirron ohjausjärjestelmä voidaan integroida minkä tahansa valmistajan vastaavat ominaisuudet omaavaan koneeseen.

Perinteisellä mallilla työskennellessä voidaan toki myös tehdä laitteistoriippumatonta koodia. Se ei sinänsä ole mallipohjaisen suunnittelun yksinoikeus. Mutta ero on siinä, että mallipohjaisesti toteutettuna sovelluskohtaiset toiminnallisuudet testataan virtuaalisesti omina kokonaisuuksinaan ja ilman laitteistoa. Näin ollen mallipohjaisesti toteutetussa koodissa toiminnallisuudet ovat lähtökohtaisesti laitteistoriippumatonta.

Askel tuntemattomaan – valoa pimeyteen mallipohjaisesta suunnittelusta

Yleensä kun ollaan kehittämässä jotain aivan uutta, liittyy siihen paljon tuntemattomia tekijöitä – on kyseessä sitten sähkömoottorin ohjaus, liikkuva kone, tehtaan tuotantolinja tai jotain aivan uutta ja ihmeellistä.
Nämä tuntemattomat tekijät liittyvät usein mekaniikan, toimilaitteiden ja anturien toiminnallisuuteen lopullisessa käyttöympäristössä, joka heijastuu suoraan ohjelmistolle asetettaviin vaatimuksiin. Esimerkiksi koneen mekaanisen värähtelyn taajuus ja amplitudi vaikuttaa merkittävästi asema-anturin signaaliin ja asettaa vaatimuksia suodatukselle.

Mallipohjaisesti suunnitellessa kehitettävän ratkaisun toiminnallisuudet voidaan kehittää hyvin pitkälti valmiiksi virtuaalisesti ennen kuin järjestelmän komponenttien tarkat ominaisuudet ovat edes selvillä. Tämä tarkoittaa siis sitä, että käyttöön liittyvät vaatimukset komponenttien mitoitukselle tai toiminnallisuudelle saadaan mallipohjaisesti. Lisäksi kun suunnittelu tehdään enemminkin toiminnallisuuksien kuin komponenttien perusteella, niin mallipohjaisuus johdattelee itse sovelluksen kohti laitteistoriippumattomuutta.

Käytännön esimerkki

Sanotaan vaikka, että halutaan kehittää uudenlainen metsäkone, jonka toiminta poikkeaa merkittävästi aikaisemmasta. Jos tuon metsäkoneen ohjausjärjestelmää kehitetään mallipohjaisesti, pystytään samalla, kun keksitään ratkaisut näiden uusien ominaisuuksien toteuttamiseen, kertomaan myös, mitä ominaisuuksia koneen komponenteilta vaaditaan. Kuten minkälaisia tehoja varten koneen dieselmoottori joudutaan mitoittamaan.
Tällöin kehitystyötä voidaan tehdä monella tasolla samanaikaisesti: Voidaan suunnitella koneen mekaniikkaa, hydrauliikkaa ja elektroniikkaa samanaikaisesti ohjausjärjestelmän toiminnallisuuden kanssa. Tämän ansiosta voidaan arvioida dieselmoottorin pienentämistä, ohjausjärjestelmän mahdollisuutta optimoida tehon käyttöä tai vaikka hybridi energiaratkaisuja mallinnetuissa käyttötilanteissa.

Miksi kehittää ohjelmistoa ja laitetta samanaikaisesti

Tämä samanaikainen työskentely luonnollisesti vaikuttaa lopullisen tuotteen valmistumisaikaan. Varsinkin kun verrataan sitä tuotekehitykseen perinteisemmillä työskentelymalleilla. Lisäksi mallinpohjainen suunnittelu mahdollistaa monesti iteratiivisen kehittämisen ja ketterät menetelmät.

Perinteisellä mallilla työskennellessä on toimittava usein siten, että jokin osa suunnittelusta on saatava ensin valmiiksi – tai vähintään tiettyyn pisteeseen – ennen kuin seuraavaa vaihetta voidaan aloittaa. Mallipohjaisella suunnittelulla, näitä vaiheita voidaan aikaistaa, kun monesti karkeallakin mallilla saadaan riittävästi tietoa seuraavan vaiheen aloittamiseksi.

Kuten aiemmassa blogissamme kerroimme, mallipohjaisessa suunnittelussa yhdistyy yhteen työvaiheeseen suunnittelu ja koodaaminen. Kun otetaan huomioon tämä ja lisäksi muistetaan, että mallipohjaisesta suunnittelusta saadaan palautetta myös itse laitteen vaatimuksiin ja kaikkea tätä voidaan tehdä samanaikaisesti – lienee selvää kumpi työskentelytapa tuottaa nopeammin valmiin lopputuloksen.

Hyödyt lähtöviivalla

Laitteistoriippumattoman koodin hyöty on siinä, että se antaa tuotekehityksessä enemmän pelivaraa tehdä toimivia ja oikeita ratkaisuja, kun sitä ei tarvitse rajoittaa laitteiston mahdollisuuksiin ja puutteisiin vaan suunnittelu voidaan tehdä korkeammalla abstraktiotasolla. Kun kehitettävä ohjelmisto on toteutettu laitteistoriippumattomasti ja se integroidaan vasta lopuksi valittuun laitteistoympäristöön, voidaan yleensä olla varmoja, että ohjelmiston toiminnallisuudet toimivat halutusti.

Tällöin toiminnallisuudet on kehitetty haluttujen ominaisuuksien kannalta, eikä laitteiston asettamien lähtökohtien kautta.

  • Kun ohjelmistokehitys tehdään mallipohjaisella suunnittelulla, on ohjelmisto lähtökohtaisesti laitteistoriippumatonta
  • Samalla mallipohjaiseen suunnittelun tai siihen kuuluvan simuloinnin kautta on voitu saada arvokasta palautetta lopullisen laitteistoympäristön suunnitteluun – eli sen laitteen, johon ohjelmisto integroidaan. Varmistetaan esim., että laitteen moottori on mitoitettu vaadittavien käyttötilanteiden mukaan

Hyödyt maalissa

Mainitut simulointiominaisuudet tukevat myös sitä, että lopullisessa laitteistoympäristössä tehtävä testaaminen ei ole niin suuressa roolissa. Tämä on positiivinen asia.

Lopullisessa laitteistoympäristössä tehtävä testaus voi olla pahimmillaan äärimmäisen hidasta ja kallista, koska testikonetta ei ole aina helposti saatavilla. Ja usein testikoneita on käytössä vain yksi, jolloin myös testejä voidaan tehdä vain yksi kerrallaan. Ja jos ohjelmistossa piilevät puutteet havaitaan vasta tässä vaiheessa, voi se aiheuttaa tuotekehityksen aikatauluissa pahoja takapakkeja.

Mallipohjaisessa suunnittelussa on ohjelmiston toimivuutta voitu jo simuloida tuhansia kertoja, tuhansilla eri tavoilla ennen kuin ohjelmisto käy edes lähellä lopullista laitteistoympäristöä.

Tämä tietysti:

  • Pienentää todennäköisyyksiä sen suhteen, että mitään yllättäviä takapakkeja pääsisi syntymään
  • Pienentää suunnittelun tai toteutuksen virheiden aiheuttamia kustannuksia
  • Ohjaa tuotekehitysprosessia toiminnallisuuksien ei rajapintojen ja komponenttien kautta
  • Ylipäätään nopeuttaa lopullisen tuotteen valmistumista

Muista Devecto

Mallipohjainen suunnittelu ja laitteistoriippumattomuus ovat molemmat ennen kaikkea asioita, jotka mahdollistavat tehokkaan tuotekehityksen jopa:

  • Niissä tilanteissa, kun ei ole vielä selkeää visiota siitä, miten haluttu tuote olisi mahdollista toteuttaa
  • Niissä tilanteissa, joissa joku muu sanoo, ettei se ole ylipäätään mahdollista

Näissä tilanteissa me olemme vahvimmillamme.


Kirjoittaja

Miika Ahopelto on valmistunut Tampereen teknillisestä yliopistosta ohjelmistotekniikan ja koneautomaation alalta. Miikalla on usean vuoden työkokemus vaativasta ohjelmistosuunnittelusta liikkuviin koneisiin ja työkoneisiin. Miikan tavoittaa osoitteesta miika.ahopelto@devecto.com.