Mallipohjainen suunnittelu osana ohjelmistokehitystä haastaa vanhat prosessit. Mitä vaativammasta kehitystyöstä on kyse, sitä enemmän mallipohjainen suunnittelu usein kiinnostaa. Tämä johtuu siitä, että mallipohjainen suunnittelu pitää sisällään hyvät edellytykset erilaisten tilanteiden simulointiin ja kehitettävän sovelluksen testaamiseen. Ja yhä useampi alkaa ymmärtää tästä saatavat hyödyt.
Se, mitä mallipohjaisella suunnittelulla lopulta tarkoitetaan, ei kuitenkaan ole kaikille aivan selvää.
Mitä on mallipohjainen suunnittelu?
Asian voisi ilmaista niin, että mallipohjaisessa suunnittelussa nostetaan ohjelmistotyön abstraktiotasoa koodintuottamisen tasolta ylöspäin. Sen varalta, että tuo ei ihan riittänyt – avaan asiaa vielä hieman tarkemmin:
Siinä missä perinteisessä ohjelmistokehityksessä työnjako menee siten, että arkkitehti tai pääsuunnittelija vastaa kehitettävän ohjelmiston kokonaisuudesta ja yksittäiset kehittäjät työskentelevät määrättyjen toiminnallisuuksien parissa – mahdollisesti jopa tuntematta kehitettävää kokonaisuutta. Mallipohjaisessa suunnittelussa tämä työnjako menee osittain remonttiin ja kehittäjä vastaa osittain myös suunnittelusta.
- Mallipohjaisessa suunnittelussa kehittäjä mallintaa toiminnallisuuksia kokonaisuuksina koodin kirjoittamisen sijaan
- Usein mallipohjaisen suunnittelun työkalut generoivat koodin automaattisesti visuaalisen mallin pohjalta
- Tämä tarkoittaa sitä, ettei arkkitehdin tai sovellussuunnittelijan vastuulle tule niin suurta vaatimusta rakentaa toimivaa kokonaisuutta kerralla oikein
Mallipohjaisesti työskentelevä kehittäjä pystyy ottamaan suuremman vastuun kokonaisuuden toimivuudesta ja löytää suunnitteluvaiheen potentiaaliset sudenkuopat simuloinnin kautta heti ohjelmistokehityshankkeen alussa.
Mallipohjaisen suunnittelun hyöty – mikä se on?
Lopputuloksen kannalta mallipohjaisen suunnittelun suurin hyöty on laadun varmistaminen ja kehitystyön nopeuttaminen. Valmiiseen tuotteeseen päästään nopeammin, kun sovellussuunnittelu tuottaa koodia, jonka testaaminen voidaan aloittaa välittömästi.
Lisäksi mallipohjaiset työkalut mahdollistavat järjestelmän automaattisten validoinnin, vaatimusten jäljitettävyyden ja monipuolisen testauksen, joiden avulla tuotekehityksen laatu voidaan varmistaa mahdollisimman aikaisessa vaiheessa.
Hyötynäkökulmasta mallipohjaisen suunnittelun tärkein elementti on nimenomaan mahdollisuus siirtää ideat suunnittelupöydältä käytäntöön ja testaukseen heti.
Testauksen mahdolllisuudet 1 – Mallipohjaisen suunnittelun avulla ideasta testaukseen
Mallipohjaisessa suunnittelussa järjestelmä tai sovellus voidaan usein mallintaa visuaalisten elementtien avulla, joista koodi generoituu tarvittaessa automaattisesti. Yksi merkittävä asia, jonka visuaalinen mallintaminen mahdollistaa on luova suunnittelu ja ideoiden nopea testaus erityisesti tuotekehityksen alkuvaiheessa.
Eli siinä tilanteessa, jossa tiedetään: Mitä pitäisi saada aikaa ja millä välineillä tuohon tulokseen pitäisi päästä, mutta puuttuu selkeä visio siitä, MITEN se saadaan aikaan.
Mallipohjainen suunnittelu antaa kehittäjälle mahdollisuuden koe-ponnistaa ideat, joilla haluttu asia saadaan aikaan – kunnes toimiva ratkaisu löydetään. Vaihtoehtoisesti perinteisessä ohjelmistokehityksen mallissa luotettaisiin sovellus- tai järjestelmäsuunnittelijan kyvykkyyteen löytää toimiva ratkaisu teoreettisella tasolla ja idean testaus tapahtuisi vasta paljon myöhemmin.
Toki Suomi on täynnä erittäin päteviä suunnittelijoita, joten ei tuokaan tapa ole väärä. Tämä on vain perustavanlaatuinen ero mallipohjaisen suunnittelun ja perinteisen ohjelmistokehityksen välillä.
Testauksen mahdolllisuudet 2 – Käytännön tilanteiden simulointi ja mallipohjainen testaus
Koska mallipohjainen suunnittelu perustuu toimivan virtuaalisen ympäristön luomiseen, mahdollistaa se erilaisten skenaarioiden simuloimisen ja testaamisen myös aikaisemmissa ohjelmistokehityksen vaiheissa kuin perinteisessä mallissa.
Jos puhutaan esimerkiksi liikkuvan koneen ohjausjärjestelmästä: Sen testaamiseen koneessa on usein rajalliset mahdollisuudet. Testaaminen on tyypillisesti myös hidasta ja mikäli ohjausjärjestelmän virheet löytyvät vasta tässä vaiheessa, voi tämä aiheuttaa suuria takapakkeja aikatauluihin.
Koska mallipohjaisesti suunnitellessa virtuaalinen kone on jatkuvasti kehittäjän käytettävissä, voidaan toiminnallisuuksia testata osana suunnitteluprosessia. Tällöin on huomattavasti paremmat edellytykset löytää suunnittelun ja toteutuksen virheet ajoissa.
Testauksen mahdolllisuudet 3 – Kun käytännön testaus ei ole vaihtoehto
Aina kehitettävän järjestelmän tai ohjelmiston toimintoja ei voida testata kaikissa tilanteissa tai testaamista ei voida turvallisesti toteuttaa. Tällöin mallipohjaisen kehityksen edut ovat ilmeiset.
- Esimerkiksi tehtaiden tuotantolinjojen käyttäytymistä kaikissa tilanteissa ei välttämättä voida testata käytössä olevilla tuotantolinjoilla
- Myöskään ihmishenkien turvallisuudesta vastaavien järjestelmien kaikkia toiminnallisuuksia ei voida aina testata käytännössä
Mallipohjaisessa suunnittelussa on mahdollista simuloida näitä tilanteita turvallisesti.
Hopeapilven tumma reunus
Mallipohjaiseen suunnitteluun tarvittavat työvälineet eivät ole erityisen edullisia. Tämän vuoksi varsinkin ohjelmistokehitystä tilaavat tahot suhtautuvat siitä saavutettaviin hyötyihin skeptisesti. Ja on toki tottakin, että kaikille, tai kaikissa tilanteissa, mallipohjainen suunnittelu ei välttämättä ole paras mahdollinen tapa toimia. Ja siitä saavutettavaa hyötyä ei ole aina helppoa osoittaa etukäteen.
Sen hyödyt todentuvat parhaiten silloin, kun ideat pitää saada nopeasti käytäntöön tai järjestelmän simulointi ja monipuolinen testaaminen on erityisen tärkeää. Jos järjestelmälle on tarkat vaatimukset, eikä testaukseen liity erityisiä haasteita, joiden takia järjestelmän toiminnan mallintamisesta saataisiin etua, ei mallipohjaisen suunnittelun työkaluihin sijoittamalla silloin saavuteta merkittävää hyötyä.
Käsin tehtävää koodaustyötä ei myöskään ole mallipohjaisella suunnittelulla aina mahdollista tai tarkoituskaan korvata kokonaisuudessaan. Valmiin ohjelmiston integroiminen lopulliseen toimintaympäristöönsä vaatii käsityötä.
Laadukkaampaa tuotekehitystä mallipohjaisella suunnittelulla
Koska mallipohjaisessa suunnittelussa koodaus tapahtuu rinnakkain suunnittelun kanssa, voidaan suunnitelman toimivuutta myös varmentaa testauksen kautta alusta lähtien. Tämä mahdollistaa testauksen kautta tapahtuvan luovan suunnittelun tilanteissa, joissa ei vielä tiedetä, miten esim. haluttu toiminto voidaan toteuttaa.
Ja koska erillistä suunnitteluvaihetta ei tarvita, ei tarvitse myöskään laskea sen varaan, että suunnitteluvaiheessa tehdyt olettamukset pätevät kaikissa tilanteissa. Koska ohjelmistoa pystytään testaamaan heti alusta saakka – voidaan myös suunnitteluun liittyvät ongelmat havaita nopeasti.
Kun tuotekehityksessä päästään pitemmälle, mallipohjaista simulointia voidaan hyödyntää myös toiminnallisuuksien testaamisessa erilaisissa virtuaalisissa skenaarioissa. Tämä auttaa usein pääsemään nopeammin valmiiseen tuotokseen kuin testaamalla ainoastaan lopullisessa laitteistossa.
Jos teidän organisaatiossanne mietitään mallipohjaisen suunnittelun hyödyntämistä tai teillä on muita tarpeita liittyen vaativaan ohjelmistokehitykseen, ota reilusti yhteyttä! Autamme mielellämme löytämään teille soveltuvat ratkaisut.
Kirjoittaja
Ville Ahola on valmistunut Tampereen yliopistosta hydrauliikan ja konstruktiotekniikan alueelta. Villellä on kattava kokemus mallinnuksesta ja ohjelmistokehityksestä vaativiin laitteisiin ja työkoneisiin. Villen tavoittaa osoitteesta ville.ahola@devecto.com.