Ohjelmistoteollisuuden tuottavuus antaa aihetta harmaille hiuksille. Suuri osa kehitysprojekteista valuu santaan. Kuitenkin yhä enenevässä määrin tuotteet ja palvelut sisältävät ohjelmistoa. Olemme sidottuja ohjelmiston kehitykseen ja sen ongelmiin. Yrittäjää kiinnostaa kuitenkin enemmän asiakkaan palveleminen kuin koodibugien viilaaminen. Miten tuotetaan laadukasta ohjelmistoa tehokkaasti?
Domain spesifinen mallintaminen
Sanahirviön takaa löytyy koodaukseen hurahtamattomalle ihana autuus. Saadaan sitä mitä tarvitaan ja helposti. Periaatteessa domain spesifinen mallinnus perutuu samaan kuin lego-palikat – massaräätälöintiin. Tehdään erivärisiä palikoita, jotka sopivat hyvin toisiinsa. Massaräätälöintiä on käytetty tuotteiden valmistamisessa jo vuosikymmenten ajan. Ohjelmistoteollisuudessa se on myös mahdollista ja huippuorganisaatiot ovat hyödyntäneet sitä jo pitkään. Kuitenkin suuri osa yrityksistä tekee softaa perinteiseen tapaan, aina alusta ja uudestaan, vanhaa koodia hyödyntämättä.
Domain Spesifinen
Suomennettuna terminä on käytetty mm. “sovellusalue -kohtainen” . Käytännössä domain spesifinen tarkoittaa rajattua toimintaympäristöä. Rajataan ympäristö kattamaan oleelliset asiat. Domain voidaan rajata kattamaan esimerkiksi pienet legopalikat sekä poliisiympäristö. Suunnitellaan lego-palikat, joista voidaan rakentaa poliisiauto, poliisilaitos, poliisivene jne. Kaikissa tuotteissa on jotain yhteistä. Tehdään sinisiä palikoita, valkoinen palikka jossa lukee poliisi, legomiehelle poliisin kypärä ja puku, sekä tietenkin yksi rosvo. Näitä palikoita yhdistelemällä syntyy runko eri poliisi -tuotteille.
Samalla tavalla ohjelmiston suunnittelu voidaan rajata kattamaan tietty tuotealusta (esim. matkapuhelin), sovellusympäristö (palveluyritykset), käytettävä ohjelmointikieli (Symbian) jne. Yhditetään eri tekijöistä sopivia palikoita.
Mallintaminen
Mallintamisen avulla ohjelmistosta esitetään vain tietyt piirteet. Ohjelmiston suunnittelua yksinkertaistetaan. Siitää johtuen lopullisen ohjelmitotuotteen suunnittelua voi tehdä jopa henkilöt, jotka eivät ymmärrä ohjelmoinnista mitään. Ohjelmisto voidaan suunnitella konsultin tai myyjän toimesta, tai parhaimmillaan asiakas voi tehdä sen itse. Mallintamisen avulla tuotteen suunnittelussa pysytään riittävän yleisellä tasolla, siinä mitä asiakas haluaa ja tarvitsee, eikä painuta mietiskelemään päivätolkulla yksittäisiä koodinippeleitä, joilla ei välttämättä ole edes lopputuotteen hyödyllisyyden näkökulmasta mitään merkitystä.
Domain Spesifisellä mallintamisella parempaa kustannustehokkaammin
Nopeus
Ohjelmistotuotteen tekemistä nopeuttaa mallintaminen, räätälöinti ja koodin generointi.
Perinteisesti tuotteen suunnittelu alkaa tuoteominaisuuksien hahmottamisesta. Myyntimies pohtii yhdessä asiakkaan kanssa, mitä asiakas haluaa ja tarvitsee. Tämän jälkeen suunnitelmat kiikutetaan kehitysosastolle, jossa viikkotolkulla tutkitaan onko kaikki halutut ominaisuudet mahdollista tehdä vai ei. Asiakkaan vaatimukset eivät välttämättä ole lainkaan realistisia ja suunnitelmiin pitää tehdä muutoksia. Myyntimies pitää asiakkaan kanssa uuden palaverin, jossa asiakkaalle kerrotaan totuus tai usein jopa keksitään selityksiä – “kaikkia näitä ei voida tehdä” tai “Hinta nousee pilviin”. Tämähän on asiakaspalvelua parhaimmillaan. Käytetään sekä omaa, että asiakkaan aikaa eikä saada mitään aikaan.
Domain Spesifisen Mallintamisen avulla myyntimiehellä on jo valmiiksi käytössään kaikki ne toiminnot, mitkä ovat toteutettavissa. Palikoista räätälöidään juuri sellainen kokonaisuus kuin asiakas haluaa. Ominaisuudet ladotaan pöytään ja sillä sipuli. Kehitetyt palikat voidaan hinnoitella valmiiksi, jolloin myyntikin on helpompaa. Asiakas tietää mitä tulee saamaan ja millä hinnalla. Vain mahdolliset poikkeukset vaativat tutkimusta, kehittämistä ja lisää rahaa.
Räätälöinti antaa mahdollisuuden tehdä erilaisia tuotteita nopeasti. Jos asiakas haluaa hieman erilaisilla palikoilla valitun tuotteen, niin mallista poistetaan tai siihen lisätään haluttuja palikoita. Kun domain spesifisiä palikoita kehitetään luodaan perusta, ei pelkästään yhdelle ohjelmistotuotteelle vaan kokonaiselle tuoteperheelle.
Domain spesifisitä malleista voidaan generoida suoraan laitteessa ajettavaa koodia. Tuote on valmis, kun koodi on valmis. Eli käytännössä tuotetta voidaan testata ja käyttää, kun sen suunnittelu on valmis. Generaattorilla voidaan tarvittaessa tehdä myös koodia eri kielille. Generaattorit tukevat myös koodin dokumentointia, jolloin tehdyt ohjelmat ovat myös automaattisesti dokumentoitu jatkokäyttöä varten.
Laatu
Ohjelmiston laatu riippuu koodareiden taidoista, sekä siitä kuinka hyvin tiedämme asiakkaan tarpeet.
Ohjelmistopalikoita voidaan kehittää parhaiden koodareiden voimin. Organisaation suorituskyky voidaan monistaa, kun heikommin ohjelmointia osaavat henkilöt monistavat huippukoodareiden tuotoksista uusia tuotteita.
Domain spesifinen mallinnus tukee erinomaisesti inkrementaalista ja iteratiivista kehittämistä. Lopullista ohjelmistotuoteperhettä rakennetaan pienin askelin ja pienissä palasissa. Kehitettävä palaset voidaan testata huolellisesti ja lisätä sen jälkeen “palikkavalikoimaan”. Palikoihin voidaan tehdä valmiiksi myös sääntöjä, joiden mukaan ne mm. liittyvät toisiin palikoihin. Tällä tavoin tehtynä ohjelmistosta poistuu paljon mahdollisia virhekombinaatioita, suunnittelija ei voi tehdä ohjelmistoa rikkovaa yhdistelmää.
Jos laatua mitataan tuotteen kyvyllä täyttää asiakkaan tarpeet, on domain spesifisen mallintamisen avulla helpompi tehdä laadukkaita tuotteita. Tuotteen suunnittelu voidaan tehdä lähellä asiakasta. koodarit voidaan korvata asiakkaan toimialan experteillä.
Sisältääkö tuotteesi ohjelmistoa? Jos haluat tehdä sitä tehokkaasti, käytä monistuskonetta. Asiakkaasi ei ole kiiinnostunut sisällä olevista nippeleistä, vaan tuotteesi käyttökelpoisuudesta ja hyödyllisyydestä.
Kirjoittaja: htsavela