Ohjelmistoarkkitehtuuri - mitä se on?

Modernissa liiketoiminnassa käytettäviltä ohjelmistoilta vaaditaan paljon erilaisia toimintoja, sekä mukautuvuutta. Ohjelmistojen kehittäminen vaatii huolellista suunnittelua, sillä niiden tulee nykyhetken lisäksi palvella myös yrityksen tarpeita tulevaisuudessa. Tätä suunnittelua kutsutaan ohjelmistoarkkitehtuuriksi.

Mistä ohjelmistoarkkitehtuurissa on oikein kyse? Käymme läpi tässä artikkelissa mitä termi tarkoittaa ja miksi se on liiketoiminnan kannalta järkevä investointi.

Tässä vielä sisällysluettelo, josta voit hypätä suoraan mieleiseen aiheeseen:

  1. Mitä on ohjelmistoarkkitehtuuri?

  2. Mitä ohjelmistoarkkitehtuurin suunnitteluun kuuluu?

  3. Miksi ohjelmistoarkkitehtuuri on niin tärkeä?

  4. Erilaisia arkkitehtuurimalleja

Mitä on ohjelmistoarkkitehtuuri?

Ohjelmistoarkkitehtuuri on ohjelmiston runko, jonka päälle sitä lähdetään rakentamaan. Se on suunnitelma ohjelmiston eri komponenteista, kuinka ne kommunikoivat keskenään, missä ympäristöissä ne toimivat ja miltä ne näyttävät ohjelmistoa käytettäessä.

Usein ohjelmistoarkkitehtuurissa huomioidaan myös tulevaisuuden tarpeet, eli miten jatkossa voidaan lisätä uusia toimintoja ja elementtejä nykyiseen kokonaisuuteen, kun palvelua halutaan kehittää ja laajentaa.

Ohjelmistoarkkitehtuuri on usein osana yrityksen kokonaisarkkitehtuuria, mihin kuuluu myös ohjelmistoon tai verkkopalveluun liitetyt järjestelmät ja sovellukset.

Miten ohjelmistoarkkitehtuuri eroaa ohjelmistokehittämisestä?

Ohjelmistoarkkitehtuuri liittyy vahvasti ohjelmistokehitykseen, mutta ne ovat hieman eri asioita. Ohjelmistoarkkitehtuuri on ohjelmiston kokonaisuuden ja rakenteen suunnittelua ja hahmottelemista, josta vastaa ohjelmistoarkkitehti.

Ohjelmistoarkkitehdit tarkastelevat ohjelmiston pitkän aikavälin tavoitteita ja varmistavat, että ohjelmisto on laajennettava, ylläpidettävä ja skaalattava. Ohjelmistoarkkitehti toteuttaa enemmän suunnittelua, kuin varsinaista koodin kirjoittamista.

Ohjelmistokehitys on itse kehittämistyön toteuttamista ja siitä vastaa ohjelmistokehittäjät. Ohjelmistokehittäjän tehtäviin kuuluu mm. ohjelmointi, testaaminen sekä virheiden jäljittäminen ja niiden korjaaminen. He keskittyvät toteuttamaan suunnitelman mukaisia toiminnallisuuksia yhteistyössä muiden ohjelmistokehittäjien sekä käyttöliittymä- ja käyttökokemussuunnittelijoiden kanssa. Myös ohjelmistokehittäjät voivat osallistua ohjelmiston suunnitteluun, mutta heidän painopisteensä on toteutuksessa.

Usein ohjelmistoarkkitehdit toimivatkin projekteissa ohjelmistokehittäjien johtajina ja yhteistyö näiden kahden roolin välillä on tärkeää onnistuneen ohjelmiston kehittämiseksi.

kuvan nimi: ohjelmistoarkkitehtuuri-ohjelmistokehitys

 

Mitä ohjelmistoarkkitehtuurin suunnitteluun kuuluu?

Ohjelmistoarkkitehtuuri on laaja kokonaisuus ja toimintatapoja on erilaisia. Kaikki eivät toimi samalla tavalla. Avaamme kuitenkin asiaa hieman yksinkertaistaen, jotta saa peruskäsityksen siitä, mitä ohjelmistoarkkitehtuuriin kuuluu:

Suunnittelun alkuvaiheessa ohjelmistoarkkitehti auttaa tunnistamaan asiakkaan ongelmat ja tarvittavat resurssit ohjelmistokehitystä varten. Samalla tutkitaan liittyykö ohjelmiston kehittämiseen erilaisia vaatimuksia tai rajoituksia, sekä luodaan ylätason suunnitelma toteutuksesta. Keskeinen kysymys tässä vaiheessa on se, että onko idea toteutettavissa annetussa budjetissa ja aikataulussa.

Mikäli ehdotus koetaan mahdolliseksi toteuttaa, ohjelmistoarkkitehti päättää kuinka ratkaisu rakennetaan, esim. mitä ohjelmointikieliä ja työkaluja käytetään ja miten mahdolliset käytettävistä resursseista aiheutuvat rajoitukset pystytään ottamaan huomioon. Tässä vaiheessa luodaan jo yksityiskohtaisempi suunnitelma ohjelmistokehittäjille siitä, kuinka ohjelmistoa lähdetään rakentamaan. Tämän vaiheen tarkoitus on osoittaa, että tuote on toteuttamiskelpoinen ja realistinen.

Kehitysprosessin aikana ohjelmistoarkkitehti ohjaa kehittäjistä koottua tiimiä, sekä varmistaa, että kehitystyö tapahtuu asetettujen laatustandardien mukaisesti. Samalla arkkitehti jatkaa ohjelmistoon liittyvien komponenttien ja ominaisuuksien suunnittelua. Mikäli ilmenee ongelmia tai muutostarpeita, arkkitehdin tehtävänä on varmistaa, etteivät ne vaikuta haitallisesti ohjelmistolta vaadittuihin ominaisuuksiin.

Kehitysprosessin jälkeen ohjelmistoarkkitehti osallistuu ohjelmiston testaukseen ja auttaa asiakasta sen käyttöönotossa.

Kokonaisuudessaan ohjelmistoarkkitehtuuri toimii ohjelmiston perustana ja mahdollistaa sen tehokkaan kehityksen, ylläpidon ja laadunvarmistuksen varmistaen, että ohjelmisto täyttää asiakkaan tarpeet ja odotukset.

Miksi ohjelmistoarkkitehtuuri on niin tärkeä?

Ohjelmistoarkkitehdin hyödyntäminen projektissa on liiketoiminnallisesti järkevä ratkaisu. Ohjelmistoarkkitehdin rooli ei rajoitu pelkästään ohjelmiston tekniseen suunnitteluun, vaan hän pyrkii parhaansa mukaan integroimaan asiakkaan liiketoiminnalliset tavoitteet mukaan ohjelmistoprojektiin ja sen viitekehyksiin. Näin ohjelmisto on sekä teknisesti toimiva, että tukee myös liiketoiminnan kehittymistä.

Ohjelmistoarkkitehtuuri on tärkeää myös siksi, että se auttaa varmistamaan ohjelmiston laadun. Hyvin suunniteltu arkkitehtuuri auttaa löytämään ja välttämään ongelmia jo suunnitteluvaiheen aikana. Se voi vähentää merkittävästi jälkikäteen tehtävien korjausten määrää ja säästää aikaa ja rahaa pitkällä aikavälillä.

Huolellisesti suunniteltu ohjelmisto mahdollistaa sen helpon muokattavuuden, esim. toimialan kohtaamien muutoksien takia, ja palvelee täten pitkään yrityksen liiketoimintaa.

Hyvin suunniteltu ohjelmistoarkkitehtuuri huomioi liiketoiminnan kasvaessa myös järkevän ja turvallisen skaalaamisen, kun jo suunnitteluvaiheessa uusien palasten lisääminen tai olemassa olevien osien kasvattaminen ollaan jo valmiiksi mietitty etukäteen.

Ohjelmistoarkkitehdin vetämä kehitysprojekti varmistaa sen, että ohjelmiston kehittämisessä käytetään kestävää teknologiaa, eli sellaista joiden odotetaan kestävän parhaiten ajan kulumista. Siksi siitä puhutaankin usein sijoituksena tulevaisuuteen.

Ohjelmistoarkkitehtuuri auttaa myös tiimejä työskentelemään yhteen saumattomammin. Kun kaikilla on yhteinen ymmärrys siitä, miten ohjelma on suunniteltu, on sen kehittäminen ja ylläpitäminen myös helpompaa, mikä vähentää ristiriitoja ja epäselvyyksiä organisaation sisällä.

kuvan nimi: ohjelmistoarkkitehtuurimallit

 

Erilaisia arkkitehtuurimalleja

Ohjelmistoarkkitehtuurin malleja on lukuisia erilaisia. Niillä on erilaisia lähestymistapoja ja käyttötarkoituksia. Käydään läpi muutama esimerkki:

Layered Architecture Pattern (Kerrosarkkitehtuuri):

Tämä on yksi yleisimmin käytetyistä arkkitehtuurimalleista ohjelmistokehittämisessä, sillä sitä on helppo kehittää ja ylläpitää.

Tässä mallissa rakennetaan päällekkäisiä kerroksia, kuten esim. käyttöliittymä, liiketoimintalogiikka ja tietojen tallentaminen. Jokainen kerros vastaa omista toiminnoistaan ja kommunikoi rajapintojen kautta ylempänä ja alempana olevan kerroksen kanssa.

Otetaan esimerkiksi sähköpostipalvelu. Ylin kerros voisi olla käyttöliittymä, jonka vastuulla on näyttää ja lähettää sähköposteja. Toinen kerros on palvelun toimintalogiikka, joka käsittelee viestien tallentamista ja hallintaa. Alin kerros voisi olla tietokantakerros, joka tallentaa sähköpostit tietokantaan. Tällöin jokainen kerros keskittyy omiin vastuualueisiin ja kommunikoi muiden kerrosten kanssa.

Microkernel pattern (Mikroydinarkkitehtuuri):

Ohjelmiston arkkitehtuuri jaetaan kahteen osioon: Ydinosaan, joka tarjoaa ohjelmistolle perusominaisuudet, sekä yksittäisiin lisäosiin, joilla lisätään haluttuja ominaisuuksia.

Mikroydinmalli mahdollistaa nopeat kehitys- ja julkaisusyklit, sillä jokaista lisäosaa pystytään kehittämään itsenäisesti. Tällöin pystytään lisäämään uusia ominaisuuksia tai korjata bugeja nopeammin.

Esimerkkinä tällaisesta mallista voidaan mainita älypuhelin. Puhelimessa on ydinosa, joka hoitaa perustoiminnot, kuten puheluiden vastaanoton ja tekstiviestien lähettämisen. Näiden päälle tulee kamerasovellus, musiikkisoitin, sähköpostisovellus ja kaikki muutkin sovellukset, jotka ovat itsenäisiä lisäosia, joita voidaan päivittää erikseen.

Microservices pattern (mikropalveluarkkitehtuuri):

Tässä arkkitehtuurimallissa ohjelmiston järjestelmään rakennetaan itsenäisiä palveluita, eli mikropalveluita. Näitä palveluita voi olla esim. käyttäjänhallinta, tilausten käsittely tai sähköpostipalvelu.

Kukin palveluista toimii itsenäisesti, ilman riippuvuutta toisistaan, mutta ne voivat silti tarvittaessa kommunikoida keskenään. Tämä helpottaa ohjelmiston ylläpitoa, ohjelmiston skaalautuvuutta ja kehittämistä kun muutoksia yksittäisiin palveluihin voi tehdä ilman, että se vaikuttaa muihin mikropalveluihin.

Esimerkiksi verkkokaupat hyötyvät mikropalveluarkkitehtuurista. Kun eri toiminnallisuudet on jaettu omiksi mikropalveluiksiin, on verkkokaupan toimintaa helpompi hallinnoida. Jos ongelmia ilmenee yhdessä mikropalvelussa, voidaan keskittää resurssit sen korjaamiseen, ilman että se vaikuttaa muihin toiminnallisuuksiin. Tämä helpottaa myös verkkokauppojen skaalaamista, kun ruuhka-aikoina voidaan lisätä resursseja tiettyihin palveluihin, kuten vaikka maksujen käsittelyyn, ilman että koko järjestelmää täytyy muuttaa.

Client-server model (asiakas-palvelin malli):

Yleinen arkkitehtuurimalli, jossa sovellus jaetaan jälleen kahteen eri osaan: asiakkaaseen, eli clientiin, ja palvelimeen. Clientilla tarkoitetaan tässä tapauksessa tietokonetta tai muuta työkalua, jolla lähetetään pyyntö palvelimelle, joka toteuttaa tämän pyynnön.

Esimerkkinä tästä toimii verkkosovellukset. Verkkoselain toimii clientina ja palvelimena toimii verkkopalvelin. Verkkoselain lähettää palvelimelle pyynnön näyttää jokin tietty www-sivusto. Palvelin käsittelee pyynnön ja tuo halutun sivuston näkyviin.

Yhteenveto

Ohjelmistoarkkitehtuuri saattaa kuulostaa isolta investoinnilta, mutta se on sijoitus tulevaisuuteen. Kun verkkopalvelun suunnitteluun on alusta lähtien kiinnitetty huomiota, on sen päivittäminen tulevaisuudessa helpompaa, kuin sellaisen johon on valittu työkalut ja -menetelmät vain hinnan ja nopeuden perusteella.

Hyvin toteutettu ohjelmistoarkkitehtuuri ottaa huomioon yrityksen nykyisen tilanteen, sekä tulevaisuuden tarpeet. Se mahdollistaa ylläpidettävän, muokattavan ja skaalatutuvan ohjelmiston, joka tukee yrityksen liiketoimintaa sen tavoitteissa.

Onko yritykselläsi tarkoituksena kehittää ohjelmisto, joka pystyy mukautumaan liiketoiminnan tulevaisuuden muutoksiin? Ota yhteyttä, niin keskustellaan minkälaisia tarpeita teillä on!