Ohjelmistokehitys
palvelutTärkeintä ohjelmistokehityksessä on tuntea ohjelmoitavat alustat, niille sopivat teknologiat ja kulloinkin vallitsevat trendit.
Tietokone, älypuhelin, auto, radio ja jopa rannekello – kaikkia näitä voidaan ohjata ohjelmistojen avulla. Nykyisin on jopa mahdollista tarkistaa jääkaapin sisältö ostosreissun aikana. Yhteiskunta on ottanut jättimäisiä harppauksia kohtia digitalisaatiota ja vaikka olemmekin edenneet pitkälle viime vuosina, ovat markkinat vasta alkamassa avautua yrittäjille. Tietotekniikka ja kasvanut ohjelmistokehitys ovat muuttaneet markkinoita ja rajana onkin nykyisin enää mielikuvitus. Tämä muutos on tuonut tullessaan uusia mahdollisuuksia palveluiden, tuotteiden, teknologioiden ja yhteiskunnan kehitykselle.
Kuten maailma, myös ohjelmistokehitys on koko ajan kasvava ja muuttuva. Tärkeintä kehityksessä onkin tuntea ohjelmoitavat alustat, niille sopivat teknologiat ja kulloinkin vallitsevat trendit. Näitä yhdistämällä voimme tarjota tehokkaita ratkaisuja monipuoliselle ja suositulle alustavalikoimalle.
Ohjelmistokehitys on tarjoamiemme palveluiden kulmakivi. Yrityksemme ammattitaito perustuu johtaviin, moderneihin ja arvostetuimpiin ratkaisuihin ohjelmistojen valmistuksessa. Tavoitteenamme on ratkaista kaikki asiakkaiden ongelmat – riippumatta siitä olivatpa ne minkä kokoisia tai muotoisia. Sataprosenttisella tyytyväisyystakuulla.
Tilaustyö vai valmisohjelmisto
Sopiiko sinun tarpeisiisi paremmin mittatilaustyö vai riittääkö valmiin ohjelmiston muokkaaminen? Vanha vitsi on, että jokainen sävel on jo soitettu, mutta vaaditaan taiteilija luomaan mestariteos niistä. Sama pätee ohjelmistoihin. Käytännössä pyörää ei kannata siis todellakaan keksiä uudelleen ja joihinkin tarpeisiin on olemassa jo sopivia pohjia tuotetta varten. Esimerkiksi ohjelmistot ja sovellukset noudattavat yleensä samanlaista sivurakennetta ja koodi perustuu samanlaiseen toimintamalliin. Sama pohja ei kuitenkaan tarkoita samanlaisuutta, vaan yhä edelleen tuote kustomoidaan asiakkaan tarpeiden mukaan.
Tärkeimpänä ohjelmistokehityksessä ovat asiakkaan omat tarpeet ja toiveet ja ne määrittävät sen miten ohjelmisto tuotetaan. Tarvittaessa luomme ohjelmiston aivan alusta alkaen jolloin pystymme vaikuttamaan kaikkiin yksityiskohtiin heti kehityksen alkamisesta lähtien. Aikataulullisesti ohjelmistokehitys saattaa olla tehokkaampaa hyödyntää jo olemassa olevia ohjelmistoja. Nykyisin lähes kymmenen projektia kymmenestä onkin yhdistelmä jo olemassa olevista ohjelmista, palveluntarjoajista ja näiden yhdistämisestä yrityksen omaan järjestelmään tilaustyönä. Käytännössä kyse on hybridimallista, jossa hyödynnetään vanhaa ja rakennetaan uutta. Näin saadaan valmistettua ohjelmistoja, jotka täyttävät yritysten tarpeet, samaan aikaan kehittämättä pyörää uudelleen.
Miten ohjelmistoprojektit etenevät?
Ohjelmistokehitys vaiheet
Alla käymmekin läpi yleisimmät ohjelmistokehitys vaiheet. Vaikka kirjoitus onkin esitetty ideaalisessa aikajärjestyksessä, monesti joudutaan palaamaan aikaisempaan vaiheeseen ja hienosäätämään tuotetta. Näin käy usein esimerkiksi testausvaiheessa, kun löydetään selkeitä ja tuottavia parannuskohteita.
Jokainen projekti on omanlaisensa yksilö ja satavarmaa kehitystapaa ei voi eikä edes kannata antaa ennen kuin projektia on työstetty hetken aikaa. Yleensä kaikki alkaa asiakkaan ideasta, joka jalostuu työn edetessä. Siksi on oltava avoin uusille ideoille ja kehityssuunnille, vaikka omista näkemyksistä on usein vaikea joustaa. Käytännössä ohjelmisto voidaan tuottaa kolmessa vaiheessa ulos. Ensimmäinen versio on prototyyppi – äärimmäisen karu ja yksinkertainen versio, joka näyttää ohjelmiston ja konseptin toimivuuden. Tästä parantamalla saadaan MVP eli pienin mahdollinen julkaisuvalmis ohjelmisto, joka suunnattu tyydyttämään ensimmäisten asiakkaiden tarpeet ja keräämään palautetta tuotekehitystä varten. Viimeisenä on luonnollisesti palautteen ja kehittämisen kautta luotu valmis ja hiottu ohjelmisto.
Ohjelmistokehitys koostuu useasta eri vaiheesta, joista kaikissa asiakkaalla on keskeinen rooli. Hyvä lopputulos ei synny pelkästään työntämällä ohjelmistoideaa suoraan ohjelmistotalolle. Ensimmäisenä asiakkaan kannattaa itse määritellä ohjelmistonsa tarpeet ja käyttökohteet. Sen jälkeen suunnittelu ja kehitys tapahtuvat yhteistyössä asiakkaan kanssa. Suunnittelun aikana on tärkeää pitää kiinni korkealaatuisista menetelmistä, mutta vieläkin tärkeämpää on avoin vuoropuhelu osapuolten välillä ohjelmistojen suunnittelun pohjana. Näin saadaan varmistettua tyytyväinen asiakas ja toimiva ohjelmisto.
Mihin käyttötarkoitukseen?
Ongelmaan ratkaisu
Ohjelmistokehityksen suunnittelussa on hyvä ensimmäiseksi kysyä, mihin ongelmaan ohjelmistolla yritetään hakea ratkaisua. Ohjelmistokehityksellä voidaan luoda tehokkuutta esimerkiksi automatisoimalla yrityksen prosesseja, tai ohjelmiston tavoitteena voi olla luoda uusia palveluja ratkaisemalla asiakkaiden ongelmia. Olennaista on löytää ongelma joka tarvitsee ja on tuottavaa ratkaista. Siksi ideaa onkin hyvä myös hyvä sparrata muiden ihmisten kanssa. Potentiaaliset asiakkaan tai ainakin ohjelmistoasiantuntijat kykenevät antamaan arvokasta palautetta alkuperäisen idean kehittämiseen, sillä monesti heidän näkökulmansa eroaa suunnittelijan näkemyksistä. Näin he kykenevät kertomaan omia, ensiarvoisen tärkeitä tarpeitaan käyttäjien näkökulmasta.
Lisäksi kannattaa perehtyä mahdollisiin asiakasryhmiin ja markkinoilla jo olemassa oleviin ohjelmistoihin. Tuotteelle pitää aina olla markkinaryhmä ja esimerkiksi tarkoin määritellyille kohderyhmille suunniteltavat tuotteet voidaan räätälöidä aina asiakasryhmille sopiviksi. Entä jos vastaava ohjelmisto on jo käytössä? Tämä ei ole ongelma. Olemassa oleva tuote kertoo myös, että kyseinen ohjelmisto on toimiva ja kannattava. Siksi pieni tutustuminen jo olemassa olevaan, voi avata suunnittelun osalta uusia ovia ja paljastaa mahdollisia ongelmakohtia.
Ohjelmistovaatimukset!
Ohjelmistosuunnittelu
Kun idea on saatu muokattua ja ongelmaa aletaan lähestyä suunnitteluvaiheessa, tärkeintä on rautalankamallin esittäminen eli mitä vähimmäisvaatimuksia ohjelmistolla on. On erityisen tärkeää kartoittaa mitkä ovat ohjelmiston kaikista keskeisimmät ominaisuudet, joita ilman ohjelmisto ei ratkaise haluamaasi ongelmaa. Tästä eteenpäin ohjelmistokehityksen suunnittelu kulkee käytännössä rinnakkain kehitystyön kanssa ja projekti pallottelee näiden kahden välillä.
On äärimmäisen tärkeää kyetä esittämään vaadittavat ominaisuudet ja toiveet niin, että asiakas, suunnittelija ja kehittäjä jakavat saman vision. Siksi esitettävässä rautalankamallissa on hyvä olla esimerkiksi ajatuskartta ominaisuuksista, käyttöliittymän mahdollisesta visuaalisesta ulkoasusta ja huomioita tärkeimmistä kehityskohteista. Suunnitelma saa olla erittäin yksinkertainen raakaversio ja piirrokset voivat olla lyijykynällä sekunnissa piirrettyjä. Pääasia on, että kaikilla on edessään samanlainen esitys tavoitteista.
Ohjelmistokehityksen suunnitteluvaiheessa kannattaa myös huomioida eri kohderyhmät. Erilaiset käyttötottumukset ja käyttöliittymäratkaisut sekä visuaalinen ilme vaihtelevat käyttäjäryhmien mukaan. Käytännössä tähän tulisi olla kiinnitetty huomiota siis jo alkuperäistä ideaa hahmoteltaessa.
Varsinaisen ohjelmiston valmistaminen
Kehitys
Ohjelmistokehityksen ensimmäiseksi tavoitteeksi otetaan MVP eli minimal viable product. Tuote, joka ratkaisee ongelman ja tekee tehtävänsä, mutta ei tee vielä mitään sen hienompaa. Tämän jälkeen ohjelmistoon aletaan valmistamaan hienompia ja hiotumpia ominaisuuksia kierros kierrokselta. Kuten ohjelmistosuunnittelussa, myös ohjelmistokehityksessä on ensiarvoisen tärkeää, että ohjelmistoja valmistetaan yhdessä asiakkaiden kanssa. Tiivis yhteistyö ja yhteydenpito ovat ainoita tapoja varmistaa valmistettavan tuotteen korkea laatu.
Ohjelmistokehitys ja ohjelmistosuunnittelu ovat iterointia eli kyseessä on toistuva prosessi, jolla pyritään parantamaan tuotetta kerta kerralta. Ymmärrettävää on, että asiakas haluaisi valmiin tuotteen ensimmäisellä yrittämällä. Kokemus on kuitenkin opettanut, että valmiin ja ennen kaikkea toimivat ohjelmiston luominen vaatii useita toistoja. Silti tätä kehitystä voidaan nopeuttaa valitsemalla oikeanlaisia ja projektille soveltuvia tekniikoita. Näistä hyvä esimerkki on ketterä kehitys, joka soveltuu hyvin moniosaisten ohjelmistojen tuottamiseen. Ketterästä kehityksestä kerrotaan tarkemmin alempana.
Käyttötoiminan varmistaminen
Testaus
Testaus on käytännössä päätös ohjelmistosuunnittelu ja kehityskierrokselle. Ohjelmistokehityksen testauksen avulla pyritään todistamaan suunnittelun ja kehityksen ratkaisut toimiviksi ja mahdollisesti havaitsemaan mahdollisia lisäkehityskohteita. Mikäli ohjelma on suunnattu kuluttajien tai käyttäjien ohjelmistoksi, on erittäin hyvä löytää testausryhmä tai testihenkilöitä, jotka ovat valmiina testaamaan ohjelmistoa. Aikainen testaus auttaa löytämään tehokkaasti ohjelmointivirheitä tai ohjelmistoon liittyviä strategisia ongelmia. Käyttäjäpalaute ja sen perusteella tehdyt päätökset ohjelmistokehityksestä ovat yksi tärkeimmistä – ellei jopa se tärkein kehitystyökalu.
Vaikka halu saada tuote valmiiksi onkin kova, vajavaisen ohjelmiston julkistaminen ei ole ikinä kannattavaa. Yleensä jälkikäteen tehtävät ohjelmistomuutokset ovat kohtuullisen hintavia ja aikaa vieviä verrattuna niiden tekemiseen alkuperäisessä kehitysvaiheessa. Siksi onkin oltava avoin ehdotuksille ja mahdollisille muutoksille. Ikinä ei ole liian myöhäistä tehdä selviäkin muutoksia ohjelmistoon tai käyttöliittymään.
Kauppaan vai verkkoon
Julkaisu
Mikäli ohjelmisto on tarkoitettu muuhun kuin yrityksen sisäiseen käyttöön, on seuraavaksi edessä sovelluksen julkaisu. Ennen julkaisua ohjelmiston täytyy olla testattu läpikotaisin eikä se saa sisältää käyttökokemusta heikentäviä bugeja. Jos yrityksellä on tarkoitus markkinoida ohjelmaa, niin sitä varten kannattaa luoda mahdollisia strategioita ohjelmiston markkinointiin.
Halutessaan asiakas voi käyttää yrityksensä omaa markkinointiosastoa tai esimerkiksi ulkoista markkinointitoimistoa, mutta luonnollisesti yrityksemme auttaa mielellään jo ohjelmistokehityksen aikana markkinoinnillisissa tehtävissä, strategian rakentamisessa ja julkaisuissa.
Palveinratkaisut
Ylläpito ja kehitys
Ohjelma on nyt julkaistu ja levityksessä. Tässä kohtaa ei kannata unohtaa taustalla pyörivää ohjelmistoa, jonka infrastruktuuri on tärkeä pitää pystyssä eli huollettuna ja ajan tasalla. Tarjoamme ohjelmillemme kaiken ammattitaitomme kokonaisen arkkitehtuurin ylläpitämiseen teknologiasta riippumatta. Ohjelmiston ylläpitovaatimukset riippuvat suuresti projektista ja ohjelmistosta sekä niiden suosiosta. Siksi ylläpito sovitaankin yleensä tapauskohtaisesti ja asiakkaan tarpeen mukaan, mutta mikäli nuo tarpeet muuttuvat olemme aina valmiita auttamaan.
Alustasta riippuen päivityksiä voidaan tehdä joko paikallisesti tai etänä. Tavallisesti käytämme asiakkaiden omia servereitä, mutta tarpeen vaatiessa voimme auttaa myös serverien päivittämisessä ja saattamisessa ajan tasalle asiakkaan tarpeiden mukaan. Siksi onkin hyvä pohtia ylläpitoon liittyviä seikkoja kun ohjelmistokehitys on vaiheessa, jotta serverit ja vaadittava infrastruktuuri on toimiva ja kunnossa jo ohjelmistoa julkaistaessa.
Vaikka nyt asiakkaalla onkin käytössään valmis ohjelmisto, ei työ lopu vielä tähän. Yleensä tarpeet ja käyttötarkoitukset muuttuvat tai laajenevat. Ohjelmistoa voidaankin päivittää muuttuvien tai ilmenneiden tarpeiden mukaan. Valmis ja toimiva ohjelmisto luo oivallisen alustan edulliselle ja nopealle ohjelmistokehitykselle ja kehitys alkaa uudelleen – joskin tällä kertaa prosessi etenee huomattavasti nopeammin.
Agile
Ketterä kehitys
Ketterä ohjelmistokehitys on prosessikehys, jonka läpi suurin osa nykypäivän ohjelmistoprojekteista kulkee riippumatta ohjelmistotalosta. Ketterässä kehityksessä asetetaan ohjelmiston kehitys etusijalle mahdollistamalla nopea reagointi vaadittaviin muutoksiin. Tällaiseen prosessikehitykseen kuuluvia metodeja on useita, mutta suosituin niistä on Scrum -malli.
Ketterässä ohjelmistokehityksessä pyritään minimoimaan riskejä jakamalla ohjelmistokehitys lyhyisiin osaprojekteihin tai iteraatioihin. Jokainen osa tuotetaan nopealla aikataululla ja se sisältää kaikki uusien toimintojen julkaisemiseen vaadittavat tehtävät.
Vaikka osaprojekti ei välttämättä aina lisää toiminnallisuutta, pyritään jokaisen osan jälkeen julkaisuvalmiiseen ohjelmistoon. Näin ohjelmisto on käyttö- ja testauskelpoinen, mutta sinne voidaan lisätä koko ajan uusia ominaisuuksia ja samalla muokata vanhoja. Tässä kehityksen muodossa arvostetaan suoraa suullista viestintää enemmän kuin kirjoitettuja dokumentteja. Kehityksen aikana tapahtuvat muutokset ohjelmistoihin ovat enemmänkin sääntö kuin poikkeus, siksi ketterä kehitys on usein helpompi ja joustavampi tapa tuottaa ohjelmistoja.
Teknologiat
- Web: HTML, CSS, Node.js, React.js, Java, Python, PHP, Ruby, Ruby on Rails, Laravel, Spring, Vue.js, Backbone, Meteor, WordPress, Laravel, AngularJS ja jQuery
- Mobiili:: React Native, Java, Swift, Cordova
- Muut:: Linux, Python, Go
Open source
Avoin lähdekoodi
Ohjelmistokehitysprojektit ovat lähes aina kokonaan valmistettavissa avoimen lähdekoodin moduulien päälle. Tämä pitää hinnat edullisina verrattuna esimerkiksi ohjelmistolisenssejä vaativiin ohjelmistoihin. Vaikka näissä kehitys olisikin halpaa, usein lisenssimaksut nostavat lopullisen hinnan korkealle.
Avoimella lähdekoodilla pystytään takaamaan kilpailukykyiset hinnat, mutta mikään ohjelmisto ei ole suoraan avoimesti saatavilla. Vaaditaankin ammattitaitoa, jotta avoimesta lähdekoodista saadaan valmistettua asiakkaalle räätälöity ohjelmisto. Usein ohjelmistokehitys onkin vanhan yhdistelyä ja samalla uuden koodin kirjoittamista.
Usein avoin lähdekoodi on myös luotettavampi kuin suljettu lähdekoodi, koska kuka tahansa voi käydä läpi avoimen lähdekoodin omista ammatillisista lähtökohdistaan ja parannella sitä omasta erikoistumisnäkökulmastaan tai huomata muita koodin liittyviä riskejä tai vikoja.