Ohjelmistotuotanto
Toteutus

Kun suunnitteluvaihe on valmis ja tekninen määrittely on laadittu, siirrytään toteutusvaiheeseen. Toteutusvaiheessa tekninen määrittely muutetaan toimivaksi ohjelmakoodiksi. Tämä on vaihe, jossa suunnitelmat ja dokumentit heräävät eloon varsinaisena ohjelmistona.

Toteutusvaiheessa ohjelmoijat kirjoittavat koodia valittujen ohjelmointikielten ja teknologioiden avulla. Työ perustuu teknisessä määrittelyssä tehtyihin päätöksiin: arkkitehtuuriratkaisuihin, luokkasuunnitelmaan, tietokantarakenteeseen ja rajapintamäärittelyihin.

Ohjelmointikäytäntöjä

Hyvät ohjelmointikäytännöt ovat olennainen osa laadukasta toteutusta. Niiden noudattaminen helpottaa koodin ylläpitoa ja jatkokehitystä.

  • Koodausstandardit - Projektikohtaiset tai organisaation laajuiset säännöt koodin muotoilusta ja rakenteesta
  • Nimeämiskäytännöt - Yhtenäiset tavat nimetä muuttujia, funktioita, luokkia ja tiedostoja
  • Kommentointi - Koodin selittäminen ja dokumentointi suoraan lähdekoodiin
  • DRY-periaate (Don't Repeat Yourself) - Saman koodin toistamisen välttäminen
  • KISS-periaate (Keep It Simple, Stupid) - Yksinkertaisuuden suosiminen
  • YAGNI-periaate (You Aren't Gonna Need It) - Vain tarvittavan toiminnallisuuden toteuttaminen
Koodausstandardit

Koodausstandardit määrittelevät projektin yhtenäiset käytännöt. Ne voivat sisältää:

  • Sisennyksen tyylin (välilyönnit vs. tabulaattorit)
  • Aaltosulkeiden sijoittelun
  • Rivin maksimipituuden
  • Tiedostojen ja hakemistojen nimeämisen
  • Virheidenkäsittelyn tavat
  • Lokituksen käytännöt

Monet ohjelmointikielet ja frameworkit tarjoavat virallisia tai yleisesti hyväksyttyjä standardeja (esim. Google C++ Style Guide ja Qt Coding Conventions C++:lle, Airbnb JavaScript Style Guide JavaScriptille).

Yksikkötestaus ja debuggaus

Toteutusvaiheessa ohjelmoijat suorittavat yksikkötestauksia kehittäessään koodia. Yksikkötestaus on pienimpien ohjelman osien (funktiot, metodit, luokat) testaamista erillään muusta järjestelmästä. Tämä eroaa varsinaisesta testausvaiheesta, joka tulee toteutuksen jälkeen ja jossa testataan koko järjestelmää kokonaisuutena.

Debuggaus eli virheiden jäljitys on olennainen osa ohjelmointityötä. Kehittäjät käyttävät debuggaustyökaluja (debugger) koodin suorituksen seuraamiseen, muuttujien arvojen tarkasteluun ja virheiden paikantamiseen.

Tyypillisiä debuggaustoimintoja:

  • Koodin suoritus rivi kerrallaan (step-through)
  • Keskeytyspisteiden (breakpoint) asettaminen
  • Muuttujien arvojen tarkastelu suorituksen aikana
  • Pinon (call stack) tutkiminen

Versionhallinta

Versionhallinta on välttämätön työkalu modernissa ohjelmistokehityksessä. Yleisin versionhallintajärjestelmä on Git.

Versionhallinnan hyödyt:

  • Koodin muutosten seuraaminen (kuka teki mitä ja milloin)
  • Paluu aiempiin versioihin tarvittaessa
  • Rinnakkainen työskentely tiimin kanssa
  • Haarojen (branch) käyttö uusien ominaisuuksien kehittämiseen
  • Koodin yhdistäminen (merge) eri haaroista
  • Varmuuskopiointi keskitettyyn repositorioon (esim. GitHub, GitLab)

Tyypillinen Git-työnkulku sisältää toiminnot: clone, pull, add, commit, push ja merge.

Koodin katselmointi

Koodin katselmointi (code review) on prosessi, jossa toinen ohjelmoija tarkastaa kirjoitetun koodin ennen sen yhdistämistä pääkoodiin. Tämä on tärkeä laatutoimenpide.

Koodin katselmoinnissa tarkistetaan:

  • Toimiiko koodi oikein ja tehokkaasti
  • Noudattaako koodi projektin standardeja
  • Onko koodi ymmärrettävää ja ylläpidettävää
  • Onko mahdollisia tietoturvaongelmia
  • Onko testit riittävät

Refaktorointi

Refaktorointi tarkoittaa koodin sisäisen rakenteen parantamista muuttamatta sen ulkoista toimintaa. Refaktoroinnin tavoitteena on tehdä koodista luettavampaa, ylläpidettävämpää ja tehokkaampaa.

Tyypillisiä refaktorointitoimenpiteitä:

  • Muuttujien ja funktioiden uudelleennimeäminen kuvaavammiksi
  • Pitkien funktioiden pilkkominen pienemmiksi osiksi
  • Toistuvan koodin eristäminen omiksi funktioikseen
  • Monimutkaisten ehtorakenteiden yksinkertaistaminen
  • Koodin siirtäminen sopivampaan luokkaan tai moduuliin

Refaktorointi tulisi tehdä pienissä askelissa ja varmistaa yksikkötestien avulla, että toiminnallisuus säilyy.

Dokumentointi

Koodin dokumentointi on tärkeää järjestelmän ymmärtämisen ja ylläpidon kannalta. Dokumentointia tapahtuu usealla tasolla:

  • Koodikommentit - Selittävät monimutkaisia koodiosuuksia
  • API-dokumentaatio - Kuvaa funktioiden, metodien ja luokkien käytön
  • README-tiedostot - Yleiskuvaus projektista ja sen käyttöönotosta
  • Arkkitehtuuridokumentaatio - Järjestelmän rakenteen kuvaus
  • Käyttöohjeet - Loppukäyttäjille tarkoitetut ohjeet

Monet ohjelmointikielet tukevat automaattista dokumentaation generointia lähdekoodista (esim. Javadoc, Doxygen, Sphinx).

Jatkuva integraatio

Jatkuva integraatio (Continuous Integration, CI) on käytäntö, jossa koodimuutokset yhdistetään yhteiseen koodipohjaan usein, jopa useita kertoja päivässä. Automaattiset testit ajetaan jokaisen yhdistämisen yhteydessä.

CI:n hyötyjä:

  • Virheet havaitaan nopeasti
  • Integraatio-ongelmat vähenevät
  • Koodi pysyy aina toimivassa tilassa
  • Julkaisut helpottuvat

Yleisiä CI-työkaluja ovat Jenkins, GitLab CI, GitHub Actions ja Travis CI.

Toteutuksesta testaukseen

Kun toteutusvaihe on valmis tai riittävän pitkällä, siirrytään varsinaiseen testausvaiheeseen. Testausvaiheessa koko järjestelmää testataan kokonaisuutena järjestelmällisesti, ja varmistetaan että se täyttää vaatimusmäärittelyssä asetetut vaatimukset. Testausvaihe on siis laajempi ja järjestelmällisempi prosessi kuin toteutuksen aikana tapahtuva yksikkötestaus.



Toggle Menu