• Ei tuloksia

Teknovelka ohjelmistoissa : vaikutukset, hallinta ja suhde ohjelmistoturvallisuuteen

N/A
N/A
Info
Lataa
Protected

Academic year: 2022

Jaa "Teknovelka ohjelmistoissa : vaikutukset, hallinta ja suhde ohjelmistoturvallisuuteen"

Copied!
32
0
0

Kokoteksti

(1)

Elias Karplund

TEKNOVELKA OHJELMISTOISSA — VAIKUTUKSET, HALLINTA JA SUHDE

OHJELMISTOTURVALLISUUTEEN

JYVÄSKYLÄN YLIOPISTO

INFORMAATIOTEKNOLOGIAN TIEDEKUNTA

2020

(2)

Tietojärjestelmätiede, kandidaatintutkielma Ohjaaja(t): Marttiin, Pentti

Tämä kandidaatintutkielma käsittelee teknovelkaa ohjelmistoissa ja sen vaiku- tuksia sekä hallintaa. Erityisen tarkastelun alla on teknovelan suhde ohjelmisto- turvallisuuteen. Teknovelan metaforalla tarkoitetaan huonoista menettelyta- voista seuraavaa korjausvelkaa ohjelmistokehityksessä. Esimerkiksi huonolaa- tuinen koodi tai puutteellinen suunnittelutyö voivat kerryttää sitä. Teknovelalla voidaan nopeuttaa ohjelmiston kehitystä hetkellisesti, mutta sitä täytyy hallita, etteivät sen negatiiviset vaikutukset karkaa käsistä. Teknovelan hallintaan on esitetty lukuisia työkaluja ja menetelmiä, jotka ottavat huomioon erilaisia teki- jöitä teknovelan tunnistamiseksi ja korjauskohteiden priorisoimiseksi. Teknove- lalla on myös yhteys ohjelmistoturvallisuuteen, koska siihen rinnastettavien laatuongelmien määrä ohjelmistoissa korreloi turvallisuusongelmien määrän kanssa. Teknovelan sekä ohjelmistoturvallisuuden metodeja on ehdotettu hyö- dynnettäväksi myös ristiin alojen välillä. Teknovelan tutkimusala on kuitenkin pirstaleinen, sillä yhtenäistä käsitystä sen luonteesta ei ole, ja hallintametodien tutkimuksessa on havaittavissa kuilu sen ja käytännön ympäristöjen välillä.

Tutkielman toteutustapa on kirjallisuuskatsaus ja sen lähteiden etsimisessä on käytetty useita alan tieteellisten artikkeleiden tietokantoja.

Asiasanat: teknovelka, ohjelmistokehitys, ohjelmistoturvallisuus, hallintamene- telmä

(3)

ABSTRACT

Karplund, Elias

Technical debt in software: its characteristics, effects, management, and relation with software security

Jyväskylä: University of Jyväskylä, 2020, 32 pp.

Information systems, Bachelor’s thesis Supervisor(s): Marttiin, Pentti

This Bachelor’s thesis is centred on the term of technical debt. It is a metaphor which indicates the results of poor coding practices, architectural decisions, and other suboptimal actions in software development. Development may gain temporary speed by acquiring technical debt, but this debt must be managed accordingly, or its consequences may prove costly or even crippling. There are a plethora of tools and methods designed to aid technical debt management, which consider different factors when recognizing and prioritizing parts to im- prove. Technical debt has a relation to software security. Technical debt covers many common software quality problems, the amount of which correlates with software security issues. It has been proposed that utilizing methods from both fields (technical debt and software security) could prove beneficial in their own respected fields as well. However, research regarding technical debt has not produced a unified concept of technical debt. Research regarding its manage- ment methods also reveals a gap between academia and practitioners. This the- sis follows the guidelines of a literature review and multiple scientific databases have been used to gather the referenced sources.

Keywords: technical debt, software development, management method, soft- ware security

(4)
(5)

SISÄLLYS

TIIVISTELMÄ ... 2

ABSTRACT ... 3

KUVIOT ... 4

SISÄLLYS ... 5

1 JOHDANTO ... 6

2 TEKNOVELKA ... 8

2.1 Teknovelka käsitteenä ... 9

2.2 Teknovelan muodot ja piirteet ... 9

2.3 Teknovelan tunnistaminen ... 11

2.4 Teknovelan vaikutukset ... 13

3 TEKNOVELAN HALLINTA ... 15

3.1 Teknovelan hallinnan määritelmä... 16

3.2 Hallitako vai ei? ... 16

3.3 Teknovelan ennaltaehkäisy ... 17

3.4 Teknovelan hallintamenetelmiä ja työkaluja ... 18

4 OHJELMISTOTURVALLISUUS JA TEKNOVELKA ... 21

4.1 Ohjelmistoturvallisuuden määritelmä ... 21

4.2 Teknovelan ja ohjelmistoturvallisuuden suhde ... 22

4.3 Turvallisuuteen keskittyviä teknovelan hallintamenetelmiä ... 23

5 YHTEENVETO JA POHDINTA ... 25

LÄHTEET ... 28

(6)

1 Johdanto

Tämän kandidaatin tutkielman ytimessä on teknovelan metafora. Sen voidaan ajatella olevan ohjelmistojen korjausvelkaa, jonka kertymisellä voidaan helpot- tamaan ohjelmistokehitystyön aikataulupaineita. Taloudellisen velan mukaises- ti se kuitenkin kerryttää korkoa ja täytyy maksaa ennen pitkää takaisin. Alan kirjallisuudessa teknovelka mielletään lähes jokaisessa ohjelmistoprojektissa yleisesti esiintyväksi ilmiöksi. Sen negatiiviset vaikutukset voivat kuitenkin kasvaa eksponentiaalisesti ajan kuluessa, jos velkaa ei hallita (Holvitie, Leppa- nen & Hyrynsalmi, 2014; Kruchten, Nord & Ozkaya, 2012; Li, Avgeriou & Liang, 2015).

Teknovelka on kehittäjien melko hyvin tuntema käsite, mutta sillä ei kui- tenkaan ole yhtenäistä tarkoitusperää (Yli-Huumo, 2016). Lisäksi sen hallintaan esitettyjen metodien hyödyntämistä pidetään melko heikkona ja niiden tutki- musta pirstaloituneena (Martini, Antonio, Besker & Bosch, 2018). Teknovelan metaforan voi kuitenkin mieltää hyvin helposti lähestyttäväksi sen taloudelli- sen ulottuvuuden vuoksi. Lisäksi siihen kohdistuva tutkimus on aktiivista, vaikkakin käsitys teknovelasta tutkimusmaailmassa ja käytännön ympäristöissä ei täysin vastaa toisiaan (Li ym., 2015).

Edellä mainitut ristiriidat yhdessä teknovelan metaforan käytännönlähei- syyden kanssa herättivät mielenkiintoni aiheeseen, ja niistä juontuvat myös tut- kimuskysymykseni. Tutkielman perimmäisenä tarkoituksena on selvittää, mitä teknovelka on, ja miten sitä hallitaan. Tarkentavana tutkimuskysymyksenä py- rin selvittämään, millainen suhde teknovelalla on ohjelmistoturvallisuuteen.

Tutkielma toteutetaan kirjallisuuskatsauksena ja sen lähteiden etsimisessä on käytetty seuraavia artikkelitietokantoja ja hakukoneita: IEEE Xplore Digital Lib- rary, ACM, Elsevier, Scopus, Jykdok ja Google Scholar. Artikkelit on löydetty käyttäen ainakin seuraavia hakusanoja: technical debt, technical debt manage- ment, architecture, code, design, sekä niiden yhdistelmiä.

Tässä tutkielmassa teknovelkaa tarkastellaan lähinnä teknisemmästä nä- kökulmasta. Useisiin esittelemiini teknovelan ulottuvuuksiin on mahdollista perehtyä tarkemmin, ja esimerkiksi teknovelan tunnistamisen tai hallinnan tar- kemmat vaiheet ja niiden sisältämät toimenpiteet on rajattu tämän tutkielman

(7)

ulkopuolelle mahdollisimman kokonaisvaltaisen yleiskuvan tuottamiseksi ai- hepiiristä. Myös liiketoiminnallisemmat asiakokonaisuudet on rajattu tämän tutkielman ulkopuolelle, kuten esimerkiksi tietynlaisen strategian tai johtamis- mallin vaikutukset teknovelkaan.

Teknovelka on laaja käsite, ja tässä tutkielmassa siihen perehdytään seu- raavanlaisessa järjestyksessä: tutkielman ensimmäinen sisältöluku käsittelee tarkemmin teknovelan määritelmää, piirteitä ja luokittelua. Käsitteen määritte- lyn jälkeen perehdytään syihin, miksi teknovelkaa voi kertyä sekä millaisia vai- kutuksia sillä on. Luvussa avaan teknovelan käsitteen erilaisia ulottuvuuksia ja kuinka ne sijoittuvat teknovelan käsitteeseen verrattuna muihin sen ulkopuolel- le rajattuihin ohjelmistojen ominaisuuksiin. Teknovelan ulottuvuuksilla on eri- laisia vaikutuksia, joista kerrotaan lisää omassa alaluvussaan.

Toinen sisältöluku kattaa teknovelan hallinnan ja alkaa sen määrittelyllä.

Tämän jälkeen käsitellään teknovelan ennaltaehkäisyä ja onko ohjelmiston ve- lan hallinta ylipäätänsä järkevää. Teknovelkaa hallitaan erilaisilla työkaluilla ja metodeilla, joiden yhdistäviä tekijöitä sekä asemaa kehitystyössä kartoitetaan omassa alaluvussaan.

Tutkielmassa erityisenä syventymisen kohteena on teknovelan suhde oh- jelmistoturvallisuuteen ja muihin turvallisuusuhkiin. Kolmannessa sisältölu- vussa esittelen ohjelmistoturvallisuutta ja siihen liittyviä tutkielman kannalta oleellisia käsitteitä. Teknovelan ja ohjelmistoturvallisuuden yhdistää ohjelmis- ton laatu, sillä turvallisuusongelmien määrä kertoo huonolaatuisesta ohjelmis- tosta, josta teknovelan määrä on myös merkki (Siavvas, Tsoukalas, Janković, Kehagias, Chatzigeorgiou, Tzovaras, Aničić & Gelenbe, 2019). Luvussa tarkaste- len myös turvallisuuteen liittyvän teknovelan hallintamenetelmien erityispiir- teitä.

Neljäs sisältöluku on tutkielman viimeinen. Siinä kokoan yhteen tutkiel- man aiempien sisältölukujen pääkohdat ja esitän omia ajatuksiani sekä jatko- tutkimuksen kohteita teknovelan aiheen tiimoilta. Neljättä sisältölukua seuraa- vat tutkielmassa käytetyt lähteet.

(8)

2 TEKNOVELKA

Tässä luvussa käsitellään teknovelan käsitteen määritelmää, muotoja, tunnistamista sekä vaikutuksia. Ensimmäinen alaluku keskittyy teknovelan metaforan avaamiseen erilaisten artikkeleissa esitettyjen määritelmien kautta.

Toisessa alaluvussa käydään lävitse erilaisia teknovelan muotoja ja niiden erityispiirteitä. Alaluvussa käsitellään eri artikkeleissa useimmin mainittuja teknovelan ulottuvuuksia, joihin kuitenkin viitataan yleisellä tasolla teknovelka-käsitteellä. Teknovelkaa voidaan käsitellä muun muassa ohjelmistojen arkkitehtuuriin ja suunnitteluun, koodauskäytänteisiin, testaamiseen sekä kehittäjien osaamiseen tai resursseihin keskittyvällä kohdennuksella, joista kerrotaan kolmannessa alaluvussa. Teknovelka voi olla myös tahallista tai tahatonta.

Teknovelan tunnistaminen ja erottaminen esimerkiksi vioista sekä virheis- tä voi olla hankalaa (Bellomo, Nord, Ozkaya & Popeck, 2016). Kolmannessa ala- luvussa verrataan teknovelan piirteitä edellä mainittuihin epätoivottuihin omi- naisuuksiin nähden, sekä tarkastellaan kehittäjien käsitystä teknovelan määri- telmästä verrattuna alan kirjallisuuteen.

Teknovelalle on olemassa erilaisia luokittelutapoja esimerkiksi sen tyypin, tai tahallisuuden suhteen (Lim, Taksande & Seaman, 2012). Neljännessä alalu- vussa esitellään eri teknovelan tyyppien vaikutuksia ohjelmistoprojekteihin.

Niillä on toisistaan poikkeavia vaikutuksia, mutta ne jakavat myös monia sa- mankaltaisuuksia niiden yhteisen kattokäsitteen vuoksi. Vaikutukset kulminoi- tuvat usein yhteisiin pidemmän aikavälin vaikutuksiin: jatkokehityksen hanka- loitumiseen sekä kehityskustannusten nousuun. Lyhyellä aikavälillä teknovelka tarjoaa helpotusta erilaisiin resurssiongelmiin, kuten ajanpuutteeseen. Tämä on usein myös pääsyy siihen, miksi ohjelmistoprojektit kerryttävät teknovelkaa (Kruchten ym., 2012).

(9)

2.1 Teknovelka käsitteenä

Teknovelan metafora juontaa juurensa vuodesta 1992, kun Ward Cunningham esitteli sen laajemmalle yleisölle. Sen ytimessä on perusidea, jonka mukaan koodi alkaa heti tuotantoon siirron jälkeen kerryttää velkaa, joka täytyy maksaa takaisin. Teknovelka muistuttaa sen nimen mukaisesti taloudellista velkaa, joka kerryttää korkoa. Lainalla voidaan saavuttaa hyötyjä, mutta se pitää kuitenkin maksaa ennen pitkää takaisin koron kera (Cunningham, 1992).

Aivan kuten velka mielletään usein negatiiviseksi asiaksi, on teknovelkaa omalta osaltaan kutsuttu Sneedin (2014) mukaan ohjelmistokehityksen synneik- si. Tämä johtuu siitä, että teknovelka ilmenee usein ohjelmistoprojekteissa nii- den sisäisinä ongelmina, joilla on erilaisia ja useimmiten negatiivisia vaikutuk- sia (Kruchten ym., 2012; Rios, Mendonça Neto, Manoel Gomes de & Spínola, 2018; Tom, Aurum & Vidgen, 2013).

Teknovelka on noussut kuumaksi puheenaiheeksi etenkin ketterien mene- telmien yleistyminen myötä (Sneed, 2014), ja sen tutkimuksen määrässä on ollut havaittavissa kasvava trendi (Li ym., 2015). Teknovelan metafora onkin ajan myötä laajentunut tarkoittamaan pelkän koodin lisäksi myös ohjelmistoprojek- tien erilaisia laatuun yhdistettäviä ulottuvuuksia (Tom ym., 2013). Vaikka tek- novelalla ei ole yhtä vakiintunutta määritelmää, kiteytyy se yleisesti ohjelmis- ton laadun suhteen tehtyihin kompromisseihin nopeamman kehitystyön saa- vuttamiseksi. Sen voikin mieltää myös tasapainotteluksi ohjelmiston laadun ja liiketoiminnan asettamien resurssirajoitteiden välillä (Lim ym., 2012).

2.2 Teknovelan muodot ja piirteet

Teknovelka on laaja käsite, joka pitää sisällään erilaisia ulottuvuuksia. Kruchten, Nord ja Ozkaya (2012) ovat hahmotelleet kokonaiskuvan teknovelan käsitteestä, joka pyrkii asettamaan sen ulottuvuudet suhteeseen niiden havaittavuuden ja vaikutusten tyypin kanssa (kuvio 1). Kokonaiskuvan mukaan teknovelka on ohjelmistoissa melko näkymätöntä, kun taas viat, huono ulkoinen laatu ja uudet ominaisuudet ovat näkyviä piirteitä ohjelmistoissa eivätkä sisälly teknovelan määritelmään. Kuviossa 1 ohjelmistojen piirteet on myös jaoteltu sen mukaan vaikuttavatko ne ohjelmiston jatkokehitettävyyteen, vaiko ylläpidettävyyteen.

Alves, Ribeiro, Caires, Mendes ja Spínola (2014) tunnistavat ontologiamallis- saan, sekä Tom, Aurum ja Widgen (2013) teknovelan viitekehyksessään samo- jen teknovelan alatyyppien muodostavan sen yläkäsitteen.

(10)

Parhaista koodauskäytänteistä poikkeaminen aiheuttaa ongelmia, jotka kerryttävät koodivelkaa (Rios ym., 2018). Turhan monimutkainen koodi ja sen toisteisuus ovat merkkejä koodivelasta. Siihen vaikuttavat myös epäselvät tyy- likäytänteet, jotka heikentävät koodin luettavuutta ja vaikuttavat siten sen yllä- pidettävyyteen. Epäjohdonmukainen koodi yhdessä sen huonon luettavuuden kanssa tekevät ohjelmiston päivittämisestä tulevaisuudessa vaikeaa, sillä se voi helposti johtaa ohjelmiston hajoamiseen (Tom ym., 2013).

Niin sanotut ”koodihajut” liitetään usein merkiksi teknovelasta ohjelmis- tossa (Alves, Nicolli S. R., Mendes, de Mendonça, Spínola, Shull & Seaman, 2016). Niillä tarkoitetaan koodin laatuongelmia, jotka ovat oireita koodin huo- nosta laadusta tai sen kehnosta implementoinnista. Seurauksena ne vaikeutta- vat ohjelmiston jatkokehitystä (Tufano, 2017). Koodihajut muistuttavatkin pää- piirteiltään edellisessä kappaleessa läpikäytyä koodivelkaa.

Arkkitehtuurillinen teknovelka tarkoittaa ohjelmistokehityksessä sen ark- kitehtuurin kannalta ongelmallisia ratkaisuita. Koodi, joka rikkoo ohjelmistolle asetettuja arkkitehtuurillisia periaatteita voi kasvattaa tarvetta sen uudelleen- kirjoittamiselle (Martini, A., Bosch & Chaudron, 2014). Arkkitehtuurilliset pää- tökset ovat myös teknovelan suurin lähde ja aiheuttavat sen kannalta vaikeim- pia ongelmia (Ernst, Bellomo, Ozkaya, Nord & Gorton, 2015). Samojen kirjoitta- jien, sekä Tomin ym. (2013) mukaan ainakin seuraavien tekijöiden tiedetään kerryttävän arkkitehtuurillista teknovelkaa:

• Liiketoiminnalliset tekijät, kuten liiketoiminnan kehitys, käyttöta- pausten epävarmuus, aikapaine sekä priorisointi

• Kriittisten arkkitehtuurillisten vaatimusten ja suunnittelun puute

• Vanhojen, kolmansien osapuolten tai avoimen lähdekoodin ohjel- mistokomponenttien käyttö

• Rinnakkainen kehitystyö

• Epävarmuuden vaikutus

• Keskeneräinen refaktorointi

• Teknologian kehitys

• Ihmistekijät

KUVIO 1 Teknovelan kokonaiskuva (P. Kruchten, R. L. Nord & I. Ozkaya, 2012)

(11)

Rios ym. (2018) erottavat niin kutsutun suunnitteluvelan (design debt) omaksi teknovelan alatyypiksi arkkitehtuurillisesta teknovelasta. Arkkitehtuu- rillinen velka viittaa sen suhteen ristiriitaisiin ratkaisuihin, jotka vaikuttavat suoraan ohjelmiston muunneltavuuteen, kun taas suunnitteluvelka pitää sisäl- lään oikeaoppisen koodin sääntörikkeitä. Näitä voivat olla esimerkiksi hyvän oliosuunnittelun laiminlyöminen tai turha luokkien, metodien ja koodin moni- mutkaisuus (Rios ym., 2018). Myös Li ym. (2015) erottavat kartoitustutkimuk- sessaan suunnitteluvelan omaksi teknovelan alatyypiksi.

Testausvelka juontaa juurensa testien puutteesta, lykkäämisestä tai vaja- vaisuuksista niiden kattavuudessa. Ongelmat testaamisessa vaikuttavat testien laatuun, joka voi heijastua myös lopulliseen tuotteeseen (Rios ym., 2018). Testit voivat paljastaa ohjelmistosta vikoja, mutta jos niiden korjaamiseen ei ole aikaa kertyy ohjelmistoon lisäksi vikavelkaa (Alves, N. S. R. ym., 2014)

Ongelmat ohjelmiston dokumentaatiossa voivat synnyttää dokumentaa- tiovelkaa. Dokumentaatiovelkaa aiheuttavat puuttuva, vanhentunut, ja tai muuten vajavainen ohjelmiston dokumentaatio sekä riittämätön tiedon jakami- nen. Näiden seurauksena kehittäjät joutuvat käyttämään aikaa tutustuakseen koodiin ennen kuin he voivat aloittaa varsinaisen kehitystyön (Tom ym., 2013).

Teknovelka voi myös olla tahallista tai tahatonta. Tahatonta teknovelkaa voi kertyä esimerkiksi kokemattoman kehittäjän kirjoittamasta koodista. Tällöin kehittäjä ei kirjoita huonolaatuista koodia tahallaan, vaan voi kerryttää tek- novelkaa sitä itse huomaamatta. Kehittäjien kokemuksella ei ole kuitenkaan havaittu olevan suurta vaikutusta teknovelan kokonaismäärään. Kokematto- mammat kehittäjät kerryttävät usein teknovelkaa vahingossa (Holvitie ym., 2014), mutta eivät merkittävästi enemmän kuin kokeneemmat kollegat (Amanatidis, 2017). Tahallinen teknovelka on usein organisaation strateginen päätös, jolla voidaan esimerkiksi pyrkiä tuottamaan ohjelmisto julkaisukel- poiseksi tiukassa aikataulussa (Holvitie ym., 2014).

Teknovelan määrän on havaittu kulkevan käsi kädessä ohjelmistoprojek- tin parissa työskentelevien henkilöiden määrän sekä projektin koon kanssa.

Toisaalta vikojen korjaamiseen liitettyjen uusien versiotallennusten (commit) ei ole havaittu korreloivan teknovelan määrän kanssa (de Jesus & de Melo, 2017).

Teknovelalla ei ole vaikutusta vikojen määrään, mutta se tekee järjestelmästä vaikeammin muutettavan (Wehaibi, Shihab & Guerrouj, 2016).

2.3 Teknovelan tunnistaminen

Ohjelmistojen piirteet, jotka luokitellaan teknovelaksi vaihtelevat lähteiden mu- kaan. Tämän vuoksi teknovelan tunnistaminen on myös hankalaa, sillä sen tar- koitusperä voi vaihdella henkilöiden välillä. Yleensä ne kuitenkin yhdistyvät yleiseen käsitykseen epätoivotuista ominaisuuksista ohjelmistoissa.

Teknovelka on tärkeää erottaa omaksi käsitteekseen muista siihen helposti sekoitettavista ohjelmistojen epätoivotuista ominaisuuksista, kuten vioista ja virheistä (Bellomo ym., 2016). Vikojen korjaamiseen liittyvien uusien versiola-

(12)

ohjelmiston osaan koodissa. Ohjelmiston toiminnallisia sekä laadullisia puuttei- ta ei jaotteluntavan mukaan lasketa teknovelaksi, koska ne ovat usein näkyvissä loppukäyttäjälle. Lisäksi uudet ominaisuudet ja ohjelmiston suunnittelusta ai- heutuvat rajoitukset jäävät teknovelan käsitteen ulkopuolelle. Jaottelumenetel- mässä teknovelan määräävä kriteeri on sen kertyminen. Esimerkiksi ohjelmis- ton suunnitelmallisista puutteista aiheutuvat viat lasketaan teknovelaksi ohjel- mistossa (Bellomo ym., 2016).

KUVIO 2 Teknovelan erottelu (S. Bellomo ym., 2016).

Bellomon ym. (2016) teknovelan erottelu (kuvio 2) sisältää samankaltai- suuksia Kruchtenin ym. (2012) esittämän teknovelan kokonaiskuvan (kuvio 1) kanssa. Molemmat rajaavat viat ja uudet ominaisuudet teknovelan käsitteen ulkopuolelle, ja käyttävät yhtenä merkittävänä kriteerinä tarkasteltavan piirteen näkyvyyttä ohjelmistossa. Niiden lähtökohdat eriävät kuitenkin toisistaan, sillä Kruchten ym. (2012) keskittyvät teknovelan aihepiirissä esiintyvien käsitteiden hahmottamiseen suhteessa teknovelan määritelmään, kun taas Bellomo ym.

(2016) pyrkivät hahmottamaan mahdollisimman tarkan keinon määritellä, onko ohjelmistossa esiintyvä piirre teknovelkaa vai ei.

Vaikka teknovelka ei edellä mainittujen lähteiden mukaan rinnastu ohjel- miston vikoihin ja virheisiin, kuvataan sen määrällä usein ohjelmiston laatua.

(13)

Tämä johtuu siitä, että teknovelka toimii kattoterminä monille ohjelmistojen epätoivotuille ominaisuuksille etenkin pidemmällä aikavälillä (Siavvas ym., 2019). Näin ollen rinnastus laatuun on ymmärrettävää, sillä sanojen voi helposti kuvitella rinnastuvan toisiinsa, jos aiheeseen ei ole perehtynyt tarkemmin.

Yleisesti ohjelmistokehittäjät tuntevat teknovelan käsitteen melko hyvin, vaikkakin sen tuntemus vaihtelee organisaatiosta toiseen (Martini, Antonio ym., 2018). Vaikka termi on kehittäjien tiedossa, sen tarkempi tarkoitusperä vaihtelee kehittäjien välillä. Suomalaisten ohjelmistokehittäjien ymmärrys teknovelan käsitteen tarkoitusperästä vastaa suuriltaosin sen määritelmää alan tutkimuk- sessa (Holvitie ym., 2014). Tomin ym. (2013) mukaan tietoisuudessa teknovelan luonteesta vallitsee kuitenkin aukko akateemisten sekä ammatinharjoittajien yhteisöiden välillä.

2.4 Teknovelan vaikutukset

Teknovelan positiiviset vaikutukset linkittyvät usein ohjelmistoprojektien re- sursseihin. Sillä voidaan esimerkiksi saavuttaa aikataulutavoitteet tuotteen jul- kaisemiseksi suunnitellussa aikataulussa, koska teknovelan kerryttäminen oh- jelmiston laatustandardeista poikkeamalla nopeuttaa kehitystyötä hetkellisesti (Bellomo ym., 2016; Tom ym., 2013). Tämän vuoksi teknovelkaa voidaan joskus pitää myös tarpeellisena, jos sillä on piristävä vaikutus organisaatioin liiketoi- mintaan taloudellisen velanoton tavoin (Holvitie ym., 2014). Pidemmällä aika- välillä tämä hyöty kuitenkin menetetään, sillä huonolaatuinen koodi hankaloit- taa ja hidastaa kehitystyötä. Tähän vaiheeseen viitataan myös teknovelan ker- tymisellä (Bellomo ym., 2016). Jotta teknovelasta voidaan hyötyä, täytyvät sen kustannukset olla tiedossa ja hallinta asianmukaista (Li ym., 2015). Teknovelan hallinnasta kerrotaan lisää kolmannessa sisältöluvussa.

Teknovelasta aiheutuvat suurimmat uhkakuvat liittyvät tilanteisiin, joissa sitä ei hallita. Tällöin kehitystyössä käytettyjä oikoreittejä tai muita teknovelkaa kerryttäviä käytänteitä ei ole suunniteltu yhteensopiviksi projektin koodikan- nan kanssa. Tämä hankaloittaa kehitystyötä tarpeettomasti, kun toisistaan poikkeavat käytänteet tekevät koodikannasta monimutkaisen ja uudet toimin- nallisuudet täytyy yrittää toteuttaa velkaiseen koodikantaan (Yli-Huumo, 2016).

Erityisesti arkkitehtuurillisen teknovelan vaikutukset voivat olla hyvinkin va- kavia. Sen historia ohjelmistossa voi ulottua monien vuosien taakse, minkä vuoksi sen kanssa työskentely on erityisen vaikeaa (Ernst ym., 2015).

Taloudellisten ja aikataulullisten haasteiden lisäksi teknovelalla on vaiku- tuksia työntekijöiden työmoraaliin. Kun kehittäjiä ohjeistetaan keskittymään koodin nopeaan tuottamiseen sen laadun sijaan he kokevat työpanoksensa vä- hemmän merkitykselliseksi. Tämän seurauksena kehittäjien tuottavuus sekä työmotivaatio laskee. Teknovelkaan johtava kehitystyö voi pahimmillaan johtaa jopa työntekijöiden hakeutumiseen töihin muihin organisaatioihin (Peters, 2014).

(14)

kera. Tämä tarkoittaa entistä korkeampia kustannuksia velan poistamiseksi oh- jelmistosta. Sen vaikutukset ovat siis kuin sijoitus nykyhetkeen, jonka taloudel- linen vaikutus realisoituu myöhemmin. Pahimmassa tapauksessa velan kus- tannukset voivat olla kasvaneet huomattavasti pahemmiksi kuin alun perin oli arvioitu velan puutteellisen seurannan ja korkoa korolle -ilmiön paisuttamina.

(15)

3 TEKNOVELAN HALLINTA

Kruchtenin ym. (2012) mukaan ketterissä ohjelmistokehitystiimeissä voidaan usein ajatella, ettei teknovelka koske niitä jatkuvan kehityksen vuoksi. Ohjel- mistoille on kuitenkin normaalia kerryttää pieniä määriä teknovelkaa, eikä se johda niiden automaattiseen epäonnistumiseen (Kruchten ym., 2012). Ero on- nistuneiden ja epäonnistuneiden projektien välillä syntyy usein teknovelan määrästä, ja siitä, hallitaanko sitä (Holvitie ym., 2014). Tutkielman kolmas sisäl- töluku käsittelee teknovelan hallintaa ja alkaa sen määrittelyllä ensimmäisessä alaluvussa.

Toinen alaluku käsittelee toimenpiteitä, joita organisaatioiden tulisi miet- tiä ennen teknovelan hallintaa varsinkin, jos siihen ei ole ennen panostettu. Jois- sain tapauksissa hyvin teknovelkainen ohjelmisto voi olla järkevämpää korvata suoraan uudella (Tom ym., 2013). Teknovelan hallinnan tulee myös olla hyvin suunniteltua, ettei siinä menetetä korvaamatonta arvoa organisaatiolle tai haita- ta tulevaisuuden toimintaa (Buschmann, 2011; de Jesus & de Melo, 2017).

Halvin ja vaivattomin keino hallita teknovelkaa on ennaltaehkäistä sen synty. Se ei kuitenkaan ole helppoa, sillä teknovelan kertyminen voi olla moni- mutkainen prosessi (Rios, Oliveira Spinola, de Mendonca Neto, Manoel G &

Seaman, 2018). Kolmas alaluku listaa keinoja, joilla teknovelan karttumista voi ennaltaehkäistä, ja asioita, joita se vaatii organisaatioilta.

Teknovelan hallinnalle on esitetty useita menetelmiä, mutta alalla ei ole yleisesti käytössä olevaa metodia tai standardia sen suhteen (Yli-Huumo, 2016).

Neljännessä alaluvussa esitellään teknovelan hallintametodien piirteitä, joita käytetään siihen liittyvässä kehitystyössä. Tässä tutkielmassa keskitytään erityi- sesti koodivelan, suunnitteluvelan sekä arkkitehtuurillisen teknovelan hallin- taan, koska ne ovat yleisimpiä teknovelan muotoja (Rios ym., 2018). Eri hallin- tametodeilla voi olla omia erityispiirteitä esimerkiksi mitattavuuden tai sen kohdennuksen puolesta. Erilaisten työkalujen ja menetelmien suuren määrän vuoksi alaluvussa tarkastellaan yleisimpiä tekijöitä, joita ne ottavat huomioon.

(16)

(2012), joiden mukaan teknovelan hallinta sisältää seurannan, perusteltujen päätösten tekemisen ja pahimpien vaikutusten ennaltaehkäisyn.

Tehokasta teknovelan hallintaa on kutsuttu kriittiseksi ohjelmiston laadun saavuttamiseksi ja ylläpitämiseksi (Brown ym., 2010). Hallinta on myös välttä- mätöntä, jotta teknovelka saadaan pidettyä kurissa (Fernandez-Sanchez ym., 2015). Pahimmassa tapauksessa teknovelasta aiheutuva korko voi täysin py- säyttää ohjelmiston kehitystyön ja johtaa sen täydelliseen uudelleenkirjoittami- seen pakon sanelemana (Tom ym., 2013).

3.2 Hallitako vai ei?

Teknovelan poistossa on tärkeää hahmottaa mitä ohjelmiston sisältävää arvoa voidaan menettää ja mitä ei. Teknovelkaiset ohjelmistot ovat usein samanaikai- sesti myös käytössä ja omaavat siten arvoa, jota ei saa tuhota. Teknovelan takai- sinmaksussa ohjelmiston arkkitehdin rooli on päättää sen käytännön mittakaa- vasta sekä toimenpiteistä (Buschmann, 2011). Teknovelka vaikeuttaa myös pro- jektipäälliköiden työtä, sillä heidän täytyy päättää, maksetaanko velkaa takaisin, kuinka paljon sitä maksetaan ja milloin (Rios ym., 2018).

Jesus & Melo, (2017) mukaan ohjelmistoprojekteissa on tarve sellaiselle teknovelan hallinnalle, joka ei vahingoita sen jatkokehitysprosesseja. Teknove- lan kanssa painivien organisaatioiden tulisi kuitenkin myös tunnistaa tilanteet, jolloin teknovelan aiheuttama rasite kehitystyölle on muodostunut suurem- maksi kuin koko ohjelmiston uudelleenkirjoittaminen (Tom ym., 2013). Uuden ohjelmiston tuottaminen poistaa suoraan vanhan ohjelmiston teknovelan ai- heuttaman taloudellisen rasitteen (Buschmann, 2011).

Kun teknovelan rasite ohjelmistossa on käynyt painavammaksi kuin uu- den ohjelmiston hankkiminen tai tuottaminen, on vanhasta painolastista luo- puminen toki ymmärrettävää. Buschmannia (2011) mukaillen voisi kuitenkin kuvitella, että on olemassa lukuisia tapauksia, joissa teknovelkaisen ohjelmiston käyttöä ylläpidetään sitä tekohengittämällä, sillä ohjelmisto sisältää arvoa, jota uusi ohjelmisto ei voi korvata, tai sitä ei voida tuoda takaisin edes uudelleenkir- joittamalla syystä tai toisesta.

(17)

3.3 Teknovelan ennaltaehkäisy

Teknovelka on myös useimmiten ennaltaehkäistävissä, vaikkakin panostamalla sen ennaltaehkäisyyn ja hallintaan ei voida taata kokonaan teknovelatonta tuo- tetta. Teknovelan moniulotteisen luonteen vuoksi sen ennaltaehkäisyyn eivät riitä yksittäiset toimet, sillä teknovelan kertyminen on monen tekijän summa, joka täytyy ottaa huomioon sen hallinnassa ja ennaltaehkäisyssä. Toisin kuin teknovelan hallintaan, on ennaltaehkäisyyn tarkoitettuja metodeja ja työkaluja saatavilla hyvin vähän (Rios ym., 2018).

Erityisesti arkkitehtuurillisen teknovelan kertymisen minimoimiseksi oh- jelmistoprojekteissa tulisi panostaa sen jatkuvaan seurantaan. Tällöin projektin kehityssykleistä saataisiin kallisarvoista tietoa esimerkiksi mahdollisista poik- keamista ohjelmiston arkkitehtuurin suhteen, riippuen käytettävästä hallinta- menetelmästä (Brown ym., 2010).

Codabux, Williams ja Ziu (2014) esittävät artikkelissaan keinoja teknove- lan ennaltaehkäisemiseksi ohjelmiston laadunhallinnan näkökulmasta. Heidän mukaansa niitä ovat:

• Opetus ja koulutus

• Pariohjelmointi

• Testivetoinen kehitys

• Refaktorointi

• Jatkuva integrointi

• Prosessien ja standardien noudattaminen

• Työkalut

• Asiakaspalaute

• Muut keinot, kuten kehitysajan tai kokonaisen tiimin käyttäminen pelkästään teknovelan hoitoon, kehityskohteiden priorisointi sekä kehitysprosessien toimivuuden tarkastelu ja parantelu.

Opetuksella ja koulutuksella voidaan ennaltaehkäistä etenkin kehittäjien koke- mattomuudesta seuraavaa teknovelkaa. Seuraamalla organisaation kehitysme- todeja, ja -prosesseja, teknologiaa sekä työkaluja tarve vääränlaisten ratkaisui- den implementoinnista seuraaville korjaustoimenpiteille vähenee. Pariohjel- moinnin on todettu parantavan tuotettavan koodin laatua. Siinä yksi kehittäjä kirjoittaa koodia ja toinen käy sitä samanaikaisesti lävitse, jolloin tuloksena syn- tyy virheettömämpää koodia. Testivetoisessa ohjelmoinnissa ohjelmaan kirjoite- taan aivan ensimmäiseksi testit, jotka tuotettavan koodin tulee läpäistä. Seu- rauksena kehittäjien kokonaiskuva koodin tavoitteista paranee, ja valmis tuotos sisältää vähemmän vikoja. Jatkuvalla integroinnilla pyritään tuottamaan jul- kaistavia versioita ohjelmistosta nopeammalla aikataululla. Jatkuva integrointi kannustaa palautteen antamiseen asiakkaan ja kehitystiimin välillä, minkä avul- la voidaan varmistaa ohjelmiston oikeanlainen toiminnallisuus. Asiakaspalaute auttaa myös tunnistamaan eroavaisuudet ohjelmiston vaatimusten ja lopullisen tuotteen välillä aikaisemmin. Refaktoroinnilla pyritään parantamaan koodin

(18)

3.4 Teknovelan hallintamenetelmiä ja työkaluja

Ohjelmistojen laadunhallintaan suunnitellut työkalut pohjautuvat erilaisiin muuttujiin, joita ne laskevat tuottaakseen yleisen laatuindeksin kyseessä olevas- ta ohjelmistosta. Teknovelan hallintaan erikoistuvat työkalut painottavat siihen ja sen kertymiseen viittaavia muuttujia toiminnassaan. Työkalujen välillä on kuitenkin eroavaisuuksia ja ne tuottavat erilaisia tuloksia, koska tarkkailtavat muuttujat eroavat työkalujen välillä (Fontana, Roveda & Zanoni, 2016).

Teknovelan hallintamenetelmissä ja työkaluissa on havaittavissa kahtiaja- ko ohjelmiston lähdekoodiin (koodivelka) ja sen arkkitehtuuriin liittyvän velan (arkkitehtuurillinen velka) hallinnan välillä. Monet niistä pyrkivät kuitenkin tarjoamaan helpotusta teknovelan hallintaan yleisesti keskittymällä niin koodi- velan kuin arkkitehtuurillisen teknovelan hallintaan (Fernandez-Sanchez ym., 2015). Useimmat tähän mennessä julkaistut teknovelan hallintamenetelmät ja työkalut keskittyvät kuitenkin nimenomaan koodin laadunhallintaan (de Jesus

& de Melo, 2017; Ernst ym., 2015).

Teknovelan tyyppeihin perustuvan jaon lisäksi Kostin (2017) mukaan tek- novelan hallintamenetelmät voidaan jakaa kahteen pääryhmään niiden tuotta- mien muuttujien tyypin perusteella. Niistä ensimmäinen käsittää metodit, jotka asettavat rahallisen arvon teknovelalle esimerkiksi asettamalla hinnan erilaisille laatupoikkeamille ohjelmistossa. Toinen tapa sisältää menetelmät, jotka käyttä- vät ns. korvikemuuttujaa mittaamaan teknovelan määrää erilaisten ohjelmiston rakenteellisten mittareiden kautta (Kosti ym., 2017). Esimerkiksi myöhemmin tässä luvussa esiteltävä SQALE on edellä mainitun jaottelun mukaisesti malli- esimerkki teknovelalle hinnan määrittävästä hallintametodista.

Kun ohjelmiston teknovelka on tunnistettu, tulisi sen korjaustoimenpiteet myös priorisoida. Tällöin teknovelan potentiaalisista haitoista tulee olla tietoisia, jotta vakavimmat teknovelasta aiheutuvat ongelmat voidaan asettaa korjatta- viksi aiemmin, kuin muut harmittomammat teknovelan esiintymät (Besker, Martini & Bosch, 2019b). Voisi ajatella, että mahdollisimman selkeän priorisoin- tikeinon teknovelalle tuottaisivat Kostin (2017) jaottelun mukaisesti teknovelalle taloudellisen arvon määrittävät metodit.

Käytännössä teknovelan poistamiseen kooditasolla käytetään toimenpi- dettä, jota kutsutaan refaktoroimiseksi (Ernst ym., 2015; Li ym., 2015; Sneed, 2014). Refaktoroinnissa koodia käydään rivi riviltä lävitse samalla sitä parannel-

(19)

len. Siinä koodin toiminnallisuus säilyy samana, kun taas sen sisäinen rakenne muuttuu (Murat & Pierre, 2016). Tämän tuloksena on alkuperäistä laaduk- kaampi koodi, jossa teknovelkaa ei enää ole (Woods, 2018).

Refaktoroinnin tukena käytetään usein automaattisia työkaluja, jotka tun- nistavat tehokkaasti ohjelmakoodista esimerkiksi poikkeavia nimeämiskäytän- töjä sekä huonoja koodaustapoja. Ne eivät kuitenkaan osaa tunnistaa monimut- kaisempaa teknovelkaa, kuten ohjelmiston arkkitehtuurillista teknovelkaa. Au- tomaattisia työkaluja sekä metodeja on esitelty alan kirjallisuudessa runsaasti, mutta niiden käyttämät arviointikriteerit ovat lähes aina erilaisia. Lisäksi työka- lut ovat lähes aina itsenäisiä eivätkä pyri parantamaan olemassa olevia ratkai- suita (Khomyakov, Makhmutov, Mirgalimova & Sillitti, 2020).

Suuremmat muutospaineet ohjelmistoissa liittyvät usein sen arkkitehtuu- riin, josta juontuvia vikoja ei voida korjata refaktoroinnin avulla. Jos ohjelmistoa vaivaavat laajat arkkitehtuurillisesta teknovelasta kumpuavat ongelmat, tulisi korjauskeinona olla koko ohjelmiston kokonaisvaltaisen ja yhtenäisen arkkiteh- tuurin määrittäminen. Tällöin päätetään myös ne arkkitehtuurilliset linjat, joita ohjelmistossa tulee noudattaa (Brown ym., 2010).

Erityisesti arkkitehtuurillisen teknovelan hallitsemiseksi arvioimiseksi ke- hitetty SQALE-metodi (Software Quality Assessment based on Life-cycle Ex- pectations) tarjoaa tukea ja priorisointia velan refaktorointiin ja muihin sitä koskeviin parannuksiin. Menetelmä lähtee liikkeelle laatumallin luomisesta, jolloin organisaation tulee päättää kriteerit oikeanlaiselle koodille ja standar- deille, joita ohjelmiston jatkokehityksessä on noudatettava. Näiden vaatimusten avulla organisaatiolle luodaan velan arviointimalli, joka määrittää vaatimusten rikkomisesta seuraavat korjauskustannukset. Tällä tavalla ohjelmiston teknove- lalle saadaan konkreettinen hinta, jota kutsutaan metodissa SQALE- laatuindeksiksi (Letouzey & Ilkiewicz, 2012).

Yleisimpiä työkaluja teknovelan hallintaan ohjelmistoprojekteissa ovat niin sanotut kehitysjonon seurantatyökalut (backlog tai issue tracker) kuten Jira.

Ne ovat kehitysjonon seurannan tai projektin hallinnan tueksi luotuja työkaluja, joihin kirjataan ylös myös muita kehitystä vaativia kohteita, kuten virheitä ja vikoja Nämä työkalut eivät siis ole tarkoitusperältään teknovelkaan erikoistu- neita työkaluja, vaikka niitä siihen käytetäänkin (Martini, Antonio ym., 2018).

Esimerkiksi suosittu ohjelmointiympäristö Eclipse tarjoaa sisäänrakennettuja ominaisuuksia refaktoroinnin tueksi. Eclipseen on saatavilla myös muiden ke- hittäjien luomia työkaluja, joita voi asentaa siihen lisäosina (Fontana, Man- giacavalli, Pochiero & Zanoni, 2015).

Yli-Huumon (2016) tapaustutkimuksessa suurimmalla osalla tarkastelluis- ta ohjelmistokehitystiimeistä ei ollut käytössään työkaluja tai metodeja teknove- lan mittaamiseksi, tarkkailemiseksi tai priorisoimiseksi. Niiden sijaan teknovel- ka tunnistettiin ja arvioitiin usein kehittäjien oman tuntuman perusteella. Sa- mankaltaiseen tulokseen päätyivät myös Ersnt ym. (2015) artikkelissaan, jonka mukaan puolissa tarkastelluista tiimeistä ei ollut käytössä minkäänlaisia työka- luja teknovelan hallitsemiseksi. Lisäksi samassa tutkimuksessa vain 16 prosent- tia vastaajista kertoi, että työkalut antavat heidän mielestään tarpeeksi yksityis-

(20)
(21)

4 Ohjelmistoturvallisuus ja teknovelka

Tässä luvussa käsitellään ohjelmistoturvallisuuden ja teknovelan suhdetta. Lu- ku alkaa käsitteiden määrityksillä, sillä ohjelmistoturvallisuus, haavoittuvuudet sekä turvallisuuskriittiset järjestelmät ovat oleellisimpia käsitteitä, jotka esiinty- vät kirjallisuudessa aiheen tiimoilta.

Toisessa alaluvussa syvennytään teknovelan ja ohjelmistoturvallisuuden yhteyteen eri näkökulmista. Se kulminoituu usein teknovelasta aiheutuviin oh- jelmiston laatuongelmiin, joista seuraa turvallisuusongelmia (Siavvas ym., 2019).

Turvallisuusongelmien realisoituessa niiden aiheuttamat kustannukset ja muut riskit organisaatioille voivat olla massiiviset (Izurieta & Prouty, 2019).

Ohjelmistoturvallisuudessa haavoittuvuuksien ja muiden riskien vaikea mitattavuus on tunnistettu yleiseksi ongelmaksi (Rindell, Bernsmed & Jaatun, 2019). Turvallisuuteen linkittyvää teknovelkaa tulisi käsitellä erityistapauksena, ja mitata sillä potentiaalisella vahingolla, jonka se voi aiheuttaa liiketoiminnalle (Izurieta & Prouty, 2019). Teknovelan ja ohjelmistoturvallisuuden metodien hyödyntäminen ristiin alojen välillä voisi kuitenkin tuottaa niille molemmille etuja (Rindell ym., 2019).

Teknovelan hallintaa ohjelmistoturvallisuuden näkökulmasta käsittelevää kirjallisuutta ei ole julkaistu kovinkaan runsaasti. Lisäksi artikkelit, joita tässä luvussa käsitellään ovat osittain hyvinkin tuoreita, mikä kertoo aiheen ajankoh- taisuudesta. Kolmannessa alaluvussa kerrotaan esimerkkejä ohjelmistoturvalli- suuteen keskittyvistä teknovelan hallintametodeista.

4.1 Ohjelmistoturvallisuuden määritelmä

McGrawn (2012) mukaan ohjelmistoturvallisuudella tarkoitetaan sellaisten oh- jelmistojen valmistamista, jotka toimivat oikein ja tarkoituksiensa mukaisesti vahingollisen hyökkäyksen tapahtuessa. Käsitteenä ohjelmistoturvallisuus kat- taa alleen erilaiset turvallisuusmekanismit, kuten käyttöoikeuksien hallinnan,

(22)

tykseen tai huomattavaan vahinkoon ympäristölle (Rafeh & Rabiee, 2013).

4.2 Teknovelan ja ohjelmistoturvallisuuden suhde

Ohjelmiston laatu, teknovelka, sekä turvallisuusongelmat linkittyvät kaikki toi- siinsa, sillä teknovelan määrän on osoitettu korreloivan ohjelmistojen laadun kanssa. Tämä taas korreloi ohjelmiston turvallisuusongelmien määrän kanssa (Siavvas ym., 2019). Ohjelmistokehityksen aikataulupaineiden kasvaessa tuot- teen laadun annetaan usein heiketä toteutettavien ominaisuuksien määrän kar- simisen sijaan. Sama koskee myös ohjelmiston turvallisuutta, sillä se on osa- alue, jonka kunnollista toteuttamista voidaan helposti lykätä (Sneed, 2014). Oh- jelmiston laadun heikentyminen ja piittaamattomuus turvallisuusongelmista voivat siis yhdessä kerryttää teknovelkaa ja muodostaa vakavia uhkia.

Ohjelmiston turvallisuus ja laatu jakavat myös yhteisen luonteen, sillä nii- tä ei voida vain lisätä ohjelmistoon, vaan ne täytyy huomioida ohjelmistossa sen koko kehityksen ajan (McGraw, 2012). Ohjelmiston haavoittuvuuksia paikates- sa haavoittuvuus voi helposti jäädä paikkaamatta muualla ohjelmistossa, jos sen useammista esiintymistä ei olla tietoisia. Haavoittuvuuksien oireiden kor- jaaminen niiden juurisyyn sijaan voi myös aiheuttaa teknovelkaa. Kehittäjä voi toimia näin tilanteissa, joissa ongelmien juurisyihin perehtymiseen ei ole aikaa (Nord, Ozkaya, Schwartz, Shull & Kazman, 2016).

Turvallisuuskriittisissä järjestelmissä lainsäädännöllä on vaikutuksia nii- den sisältämän teknovelan määrään ja vaikutuksiin. Vaikka teknovelka ei itses- sään tarkoita puutteita ohjelmiston turvallisuuden suhteen, sen määrä heijastuu yleisesti muihin turvallisuuteen vaikuttaviin tekijöihin, kuten ohjelmiston laa- tuun ja korjaustoimenpiteisiin. Tiukka lainsäädäntö pakottaa noudattamaan paremmin koodauskäytänteitä sekä ohjelmistolle määrättyä arkkitehtuuria pa- remmin. Tämä johtaa vähäisempään teknovelan määrään. Toisaalta samat tiu- kat määräykset eivät salli parhaiden refaktorointi-, tai teknovelan hallintakäy- tänteiden hyödyntämistä, mikä pakottaa kehittäjät käyttämään epäihanteellisia toteutustapoja. Turvallisuuskriittisten järjestelmien kehittäminen vaatii myös lisätyötä tavalliseen kehitykseen verrattuna, mikä lisää sen kustannuksia (Bes- ker, Martini & Bosch, 2019a).

(23)

Rindellin ym. (2019) mukaan ohjelmistoturvallisuutta vaivaa usein on- gelma, jossa ohjelmistojen turvallisuusongelmia ei oteta tarpeeksi vakavasti nii- den vaikean mitattavuuden vuoksi. Heidän mukaansa teknovelan käsitteistön tuominen ohjelmistoturvallisuuden piiriin auttaisi tässä ongelmassa, sillä tek- novelan taloudellinen ulottuvuus tekisi turvallisuusongelmista mitattavampia ja siten helpompia käsittää (Rindell ym., 2019). Turvallisuuskontekstissa tek- novelan vakavuuden mittarina tulisi olla teknovelasta aiheutuvan uhan mah- dollinen hinta liiketoiminnalle (Izurieta, Rice, Kimball & Valentien, 2018). Rin- dell ym. (2019) ehdottavat, että ohjelmistoturvallisuuden ja teknovelan käsitteis- tön ja metodien tuominen lähemmäs toisiaan voisi tuottaa molemmille syner- giaetuja tekemällä molempien hallinnasta tehokkaampaa.

Rindell ja Holtie (2019) laajentavat teknovelan käsitettä sisällyttämällä sii- hen uuden ulottuvuuden: turvallisuusvelan. Se jakaa yhteisen taustan aiemmin mainittujen teknovelan muotojen kanssa muistuttaen taloudellista velkaa (kas- vava korko), mikä edesauttaa sen ymmärrettävyyttä kehittäjien keskuudessa.

Kirjoittajien mukaan turvallisuusvelkaa ovat turvallisuustyökalujen kautta esiinnoussut teknovelka sekä ne ohjelmistojen turvallisuuskriittiset komponen- tit, jotka sisältävät teknovelkaa (Rindell & Holvitie, 2019).

4.3 Turvallisuuteen keskittyviä teknovelan hallintamenetelmiä

Teknovelasta johtuvan haavoittuvuuden kautta tapahtuvan hyökkäyksen vai- kutukset voivat olla hyvin vakavia organisaatiolle niin taloudellisesti kuin muiltakin osin (esim. maine, markkinaosuus, asiakaskato). Vaikka teknovelan takaisinmaksu voi aiheuttaa kustannuspaineita, tulisi mahdollisesti haavoittu- vuuksia aiheuttavat teknovelan esiintymät priorisoida kehitystyössä korjatta- viksi ensimmäisenä (Izurieta ym., 2018). Jotta tässä voidaan onnistua, tulee käy- tettävän teknovelan hallintamenetelmän ottaa huomioon velasta seuraavat tur- vallisuusongelmat ja niiden vakavuus.

Rindell ja Holvitie (2019) ehdottavat turvallisuusvelan hallintaan uutta menetelmää, joka perustuu aiempaan teknovelan hallintaviitekehykseen. Sen ero olemassa oleviin metodeihin syntyy sen sisältämästä turvallisuusriskien arviointiprosessista, joka vaikuttaa kehityskohteiden priorisointiin. Hallinta- menetelmä pyrkii myös tekemään niin kutsutun turvallisuusvelan hallinnasta helpommin lähestyttävää teknovelan termistön kautta, sillä se on ennestään tuttua kehittäjille (Rindell & Holvitie, 2019).

Teknovelan hallinnalla voi olla myönteinen vaikutus ohjelmiston turvalli- suuteen. Ohjelmistojen turvallisuusheikkoudet voivat paljastua nopeammin teknovelan hallinnan seurauksena sen sijaan, että ne jäisivät piiloon. Tämä on erityisen tärkeää, sillä mitä kauemmin turvallisuusheikkous säilyy ohjelmistos- sa paikkaamattomana, sitä todennäköisemmin se muuttuu oikeaksi haavoittu- vuudeksi. Quocomo-laatumallia yhdessä haavoittuvuuksien nimeämistandar- din (Common Vulnerabilities and Exposures, CVE) sekä niiden vakavuuden määrittämismallin (Common Vulnerability Scoring System, CVSS) kanssa on

(24)

nantes & Serrano, 2016). SecDevOpsissa tämä ilmenee kehittäjien ja kyberhyök- käysten kanssa työskentelevien operatiivisten käyttäjien jatkuvalla yhteistyöllä.

Teknovelkaa ohjelmistoturvallisuuden näkökulmasta käsitteleviä hallin- tametodeja tieteellisiä julkaisuita ei ole julkaistu montaa. Ala vaikuttaa kuiten- kin kehittyvän jatkuvasti, sillä teknovelan ja ohjelmistoturvallisuuden yhteyttä on alettu tutkia ilmeisesti vastikään tässäkin tutkielmassa esiintyvien artikke- leiden tuoreuden perusteella.

Ohjelmistojen turvallisuutta koskevaa teknovelkaa (turvallisuusvelka) voidaan ajatella huomattavasti korkeamman riskin sijoituksena, kuin muita teknovelan muotoja. Pahimmassa tapauksessa sen riski voi realisoitua yhtäkki- sesti ja kokonaisuudessaan esimerkiksi erityisen pahan hyökkäyksen kautta.

Tällöin velka ei kuitenkaan poistu, vaan on yhä läsnä ohjelmistossa. Teknove- lasta aiheutunut turvallisuusongelma on kuitenkin realisoitunut, jolloin tästä aiheutuvaa kustannusta voidaan pitää osana velan korkoa. Lisärasitteen tuovat hyökkääjän vahingolliset tarkoitusperät, jonka vuoksi hyökkääjä on mahdolli- sesti saanut haltuunsa tietoja kohdeorganisaatioista tai muuten mahdollisesti saavuttanut hyökkäyksensä tavoitteet. Realisoituneen turvallisuusongelman korjaaminen ja vaikutusten minimointi voi olla kallista, minkä lisäksi olemassa oleva velka jatkaa koron kerryttämistä.

(25)

5 Yhteenveto ja pohdinta

Teknovelan metafora tarjoaa aiheesta kiinnostuneelle monipuolisia näkökulmia ohjelmistojen korjausvelasta. Terminä teknovelka on moniulotteinen, ja sen tut- kimus on aktiivista (Li ym., 2015). Teknovelan termistä on yhteisymmärrys abstraktilla tasolla, mutta sen tarkat piirteet sekä yhtenäinen määritelmä puut- tuvat. Hyvä esimerkki tästä on vikojen ja teknovelan kiistanalainen suhde.

Kruchtenin ym. (2012) artikkelissa viat jätetään teknovelan ulkopuolelle, mutta Alvesin ym. (2016) kartoitustutkimuksessa vikavelka nimetään yhdeksi ylei- simmistä teknovelan tyypeistä. Vikojen tuominen teknovelan metaforaan on yleistä etenkin ohjelmistoturvallisuuteen liittyvissä artikkeleissa. Rindell ym.

(2019) kertovat teknovelan koron tarkoittavan ohjelmiston käyttäjien kokemaa huonontunutta laatua. Tämä on myös ristiriidassa monen teknovelan määritel- mää koskevan artikkelin, kuten Bellomon ym. (2016), Kruchtenin ym. (2012) sekä Woodsin ym. (2018) kanssa.

Teknovelka toimii kattokäsitteenä useille teknovelan alatyypeille, joilla on omia erityispiirteitä esimerkiksi ohjelmiston arkkitehtuuriin tai koodin laadun suhteen (Kruchten ym., 2012). Loppujen lopuksi teknovelalla on kuitenkin sen tyypistä riippumatta vaikutuksia kahteen asiaan: aikaan sekä kustannuksiin.

Organisaatiot kerryttävät teknovelkaa tietoisesti lähinnä nopeuttaakseen ohjel- miston kehitystyötä hetkellisesti (Wehaibi ym., 2016). Siitä saatavat hyödyt kui- tenkin menetetään, jos teknovelkaa ei hallita asianmukaisesti (Bellomo ym., 2016). Teknovelkaiset ohjelmistot ovat hankalammin muutettavissa, mikä tekee niiden jatkokehityksestä vaikeaa (Tom ym., 2013). Ongelmallisen ohjelmiston kehittäminen vie kehittäjiltä enemmän aikaa, joka johtaa suurempiin kustan- nuksiin (Buschmann, 2011; Fairley & Willshire, 2017; Martini, Antonio ym., 2018; Peters, 2014; Woods, 2018). Teknovelan kanssa työskenteleminen voi myös turhauttaa kehittäjiä, koska sen kertyminen on lähes aina tietoinen päätös ja siksi myös estettävissä (Holvitie ym., 2014). Tämä vaatii kuitenkin tietoista paneutumista teknovelkaan ja sen hallintaan (Kruchten ym., 2012).

Teknovelan hallintaan on olemassa runsaasti erilaisia metodeja ja työkalu- ja, jotka pyrkivät helpottamaan sen tunnistamista, priorisointia tai hallintaa yleisesti (Fontana ym., 2016; Khomyakov ym., 2020; Yli-Huumo, 2016). Tek-

(26)

harhaanjohtaviksi niiden tulosten huonon laadun tai muiden puutteiden vuoksi.

Ne eivät myöskään kykene hahmottamaan ohjelmistoista arkkitehtuurillista teknovelkaa yhtä luotettavasti kuin koodivelkaa (Ernst ym., 2015; Khomyakov ym., 2020).

Erilaisia käsityksiä teknovelan hallitsemisesta, piirteistä ja tunnistamisesta löytyy runsaasti, mutta case-tutkimukset, joissa näitä toimia tarkastellaan oi- keissa organisaatioissa eivät mainitse aiemmin tutkimuksessa esiin nousseita metodeja. Tutkimuksissa kehitetyt metodit päätyvät hyvin harvoin käyttöön oikeisiin ympäristöihin tutkimusmaailman ulkopuolelle, mikä selviää myös Yli- Huumon (2016) sekä Lin ym. (2015) tutkimuksista. Tutkimuksen ja organisaa- tioiden käytännön toiminnan välillä on siis kuilu, jonka Siponen ja Baskerville (2018) ovat tunnistaneet yleiseksi ongelmaksi koko tietojärjestelmätieteen alan tutkimuksessa. Myös Tom ym. (2013) esittävät, kuinka käsitys teknovelan luon- teesta vaihtelee akateemisen ja oikean maailman ympäristöjen välillä. Voidaan siis sanoa, että teknovelan tutkimus kärsii samasta ilmiöstä kuin tietojärjestel- mätieteen tutkimus yleisesti.

Luulen että informaatiokatkokselle tutkimuksen ja oikeiden käyttöympä- ristöjen välillä teknovelan suhteen on erilaisia syitä. Yhtenä merkittävimmistä luulen olevan sen, ettei tutkimusten menetelmiä ilmeisesti kaupallisteta, sillä niitä ei ole käytössä oikeissa käyttöympäristöissä. Voi olla, että oikeissa käyt- töympäristöissä on kehitetty omia teknovelan hallintatyökaluja, jotka on räätä- löity huomioimaan tiettyjä ohjelmiston ja ympäristön piirteitä. Voisi kuvitella, että tarve hyvin kustomoiduille hallintamenetelmille korostuu ohjelmistoissa, joiden ymmärtäminen on hankalaa ihmisille, saati teknisille työkaluille. Organi- saatiot voivat myös olla pimennossa kaupallisten teknovelan hallintatyökalujen ja -menetelmien saatavuuden ja toimivuuden suhteen, mikä voi osaltaan selit- tää perinteisempien backlog-työkalujen tämänhetkistä suosiota teknovelan hal- linnassa.

Ohjelmistoturvallisuuden sekä teknovelan suhde kiteytyy ohjelmiston teknovelan ja sen laadun yhteyteen. Aiheesta ei ole julkaistu runsaasti tutki- musta, mutta tässäkin tutkielmassa aihetta käsittelevät artikkelit ovat hyvinkin tuoreita, mikä osoittaa aiheen ajankohtaisuuden. Yleinen käsitys on, että tekno- velka ei sinällään tarkoita uhkia ohjelmistoturvallisuuden kannalta, mutta kos- ka se pitää sisällään monia ohjelmistojen yleisiä laatuongelmia, korreloi sen määrä haavoittuvuuksien määrän kanssa (Siavvas ym., 2019). Kuten teknove-

(27)

lankin kertymisessä, aiheuttavat aikataulupaineet riskin myös turvallisuuson- gelmien kasaantumiselle. Lisäksi jos teknovelkaa poistetaan ohjelmistosta, voi se avata uusia haavoittuvuuksia (Nord ym., 2016).

Vastoin omia alkuperäisiä odotuksia teknovelka voi kuitenkin myös aut- taa ohjelmiston turvallisuuden kehittämisessä, koska teknovelan hallinta voi paljastaa turvallisuuspuutteita (Izurieta ym., 2018). Voidaankin sanoa, että kun teknovelkaa maksetaan takaisin, on sillä usein positiivinen vaikutus ohjelmis- ton turvallisuuteen.

Teknovelan ja ohjelmistoturvallisuuden suhde on noussut tutkimuksen aiheeksi vastikään. Pidän tätä pääsyynä teknovelasta aiheutuvien turvallisuus- ongelmien hallintametodien vähäiselle määrälle. Toinen mahdollinen syy tälle on nykyisten ohjelmistoturvallisuuden ja laadunhallinnan metodien riittävyys.

Tällöin tarvetta teknovelkaan erikoistumiselle ei välttämättä ole. Jos turvalli- suusvelan hallintametodeja esittäviä tutkimuksia kuitenkin ilmestyy, olisi toi- vottavaa, ettei tutkimus vajoaisi samaan sudenkuoppaan menetelmien pirstaloi- tumisen suhteen kuin alkuperäinen teknovelan hallintametodien tutkimus.

Suuri osa tässä tutkielmassa käsitellyistä artikkeleista käytti teknovelan tarkastelun lähteenä avoimen lähdekoodin ohjelmistoprojektien koodikantoja.

Yksi mahdollinen jatkotutkimuksen aihe olisi ilmeneekö teknovelka erilaisena erilaisissa ohjelmistoprojekteissa, kuten avoimen ja suljetun lähdekoodin pro- jekteissa. Teknovelka yhteisöllistetyissä (crowdsourced) ohjelmistokehityspro- jekteissa ja sen eroavaisuuksien vertailu suljetun ja avoimen lähdekoodin pro- jekteihin tarjoaisi myös mielenkiintoisen kohteen jatkotutkimukselle. Lisäksi teknovelan kertymisen ja tyypin vertailu erilaisissa organisaatioissa voisi tuot- taa lisätietoa sitä kerryttävistä toimintatavoista. Teknovelan ilmeneminen eten- kin startup-ympäristössä tarjoaisi erityisen kiehtovan ympäristön tutkimukselle niiden yleisesti suuremmista yrityksistä poikkeavan toimintakulttuurin vuoksi.

Tässä tutkielmassa on tarkasteltu teknovelkaa lähinnä teknisestä näkö- kulmasta. Samanlainen kirjallisuuskatsaus tämän metaforan vaikutuksesta or- ganisaatioiden liiketoimintaan voisi myös tuottaa mielenkiintoisia tuloksia.

Tässä tutkielmassa todetut vaikutukset ovat toki merkittäviä liiketoiminnan kannalta, mutta tarkempi syventyminen teknovelkaa kerryttäviin liiketoimin- taprosesseihin, niiden vaikutuksiin velan syntyyn ja hallintaan, tai esimerkiksi teknovelan kertyminen tietynlaisen johtamiskulttuurin tai liiketoimintastrategi- an seurauksena toisivat kenties erilaisia näkökulmia aiheeseen. Laajempaa mit- takaavaa ajatellen Magnusson, Juiz, Gomez ja Bermejo (2018) ovat laajentaneet teknovelan metaforaa koskemaan koko organisaatioiden IT:tä teknologiavelka- termillään.

Teknovelalla on etu moniin muihin alan termeihin verrattuna, sillä sen si- sältämä viittaus taloudelliseen velkaan tekee siitä helposti ymmärrettävän. On mielestäni erikoista, ettei metaforaan ole kohdistunut laajempaa mielenkiintoa jo aiemmin. Tämän työn ohjaajan sanoja mukaillen onkin mahdollista, että tek- novelan metafora tarvitsisi samanlaisen nostattavan tekijän, kuin mikä agile manifesto oli ketterille ohjelmistokehitysmenetelmille.

(28)

tematic mapping study. Information and Software Technology, 70, (s. 100-121).

doi:10.1016/j.infsof.2015.10.008

Amanatidis, T. (2017). Who is producing more technical debt?: A personalized assessment of TD principal. Proceedings of the Scientific Workshops of XP2017 ACM. doi:10.1145/3120459.3120464

Bellomo, S., Nord, R. L., Ozkaya, I. & Popeck, M. (2016). Got technical debt?

surfacing elusive technical debt in issue trackers. (s. 327-338) 2016

IEEE/ACM 13th Working Conference on Mining Software Repositories (MSR) ACM.

Besker, T., Martini, A. & Bosch, J. (2019a). How regulations of safety-critical software affect technical debt. (s. 74-81) 2019 45th Euromicro Conference on Software Engineering and Advanced Applications (SEAA) IEEE.

doi:10.1109/SEAA.2019.00020

Besker, T., Martini, A. & Bosch, J. (2019b). Technical debt triage in backlog ma- nagement. (s. 13-22) Proceedings of the Second International Conference on tech- nical debt IEEE Press. doi:10.1109/TechDebt.2019.00010

Brown, N., Cai, Y., Guo, Y., Kazman, R., Kim, M., Kruchten, P., . . . Zazworka, N.

(2010). Managing technical debt in software-reliant systems. (s. 47-52) Pro- ceedings of the FSE/SDP workshop on future of software engineering research ACM. doi:10.1145/1882362.1882373

Buschmann, F. (2011). To pay or not to pay technical debt. IEEE Software, 28(6), (s. 29-31). doi:10.1109/MS.2011.150

Codabux, Z., Williams, B. J. & Niu, N. (2014). A quality assurance approach to technical debt. Proceedings of the International Conference on Software Enginee- ring Research and Practice (SERP), , (s. 1). Haettu osoitteesta

https://search.proquest.com/docview/1649692284

(29)

Cunningham, W. (1992). The WyCash portfolio management system. (s. 29-30) Addendum to the proceedings on object-oriented programming systems, languages, and applications (addendum) ACM. doi:10.1145/157709.157715

de Jesus, J. S. & de Melo, A. C. V. (2017). Technical debt and the software project characteristics. A repository-based exploratory analysis. (s. 444-453) 2017 IEEE 19th Conference on Business Informatics (CBI) IEEE.

doi:10.1109/CBI.2017.62

Ebert, C., Gallardo, G., Hernantes, J. & Serrano, N. (2016). DevOps. IEEE Softwa- re, 33(3), (s. 94-100). doi:10.1109/MS.2016.68

Ernst, N. A., Bellomo, S., Ozkaya, I., Nord, R. L. & Gorton, I. (2015). Measure it?

manage it? ignore it? software practitioners and technical debt. Bergamo, Italy, (s. 50–60) Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering Association for Computing Machinery.

doi:10.1145/2786805.2786848

Fairley, R. E. & Willshire, M. J. (2017). Better now than later: Managing technical debt in systems development. Computer, 50(5), (s. 80-87).

doi:10.1109/MC.2017.124

Fernandez-Sanchez, C., Garbajosa, J., Vidal, C. & Yague, A. (2015). An analysis of techniques and methods for technical debt management: A reflection from the architecture perspective. (s. 22-28) 2015 IEEE/ACM 2nd Internati- onal Workshop on Software Architecture and Metrics IEEE.

doi:10.1109/SAM.2015.11

Fontana, F., Mangiacavalli, M., Pochiero, D. & Zanoni, M. (2015). On experi- menting refactoring tools to remove code smells. (s. 1-8) Scientific Workshop Proceedings of the XP2015 ACM. doi:10.1145/2764979.2764986

Fontana, F., Roveda, R. & Zanoni, M. (2016). Technical debt indexes provided by tools: A preliminary discussion. (s. 28-31) 2016 IEEE 8th International Workshop on Managing Technical Debt (MTD) IEEE.

doi:10.1109/MTD.2016.11

Holvitie, J., Leppanen, V. & Hyrynsalmi, S. (2014). Technical debt and the effect of agile software development practices on it - an industry practitioner sur- vey. (s. 35-42) 2014 Sixth International Workshop on Managing Technical Debt IEEE. doi:10.1109/MTD.2014.8

Izurieta, C. & Prouty, M. (2019). Leveraging secdevops to tackle the technical debt associated with cybersecurity attack tactics. (s. 33-37) Proceedings of the Second International Conference on technical debt IEEE Press.

doi:10.1109/TechDebt.2019.00012

(30)

Angelis, L. (2017). Technical debt principal assessment through structural metrics. (s. 329-333) 2017 43rd Euromicro Conference on Software Engineering and Advanced Applications (SEAA) IEEE. doi:10.1109/SEAA.2017.59

Kruchten, P., Nord, R. L. & Ozkaya, I. (2012). Technical debt: From metaphor to theory and practice. IEEE Software, 29(6), (s. 18-21).

doi:10.1109/MS.2012.167

Letouzey, J. & Ilkiewicz, M. (2012). Managing technical debt with the SQALE method. IEEE Software, 29(6), (s. 44-51). doi:10.1109/MS.2012.129

Li, Z., Avgeriou, P. & Liang, P. (2015). A systematic mapping study on technical debt and its management. The Journal of Systems & Software, 101, (s. 193-220).

doi:10.1016/j.jss.2014.12.027

Lim, E., Taksande, N. & Seaman, C. (2012). A balancing act: What software practitioners have to say about technical debt. IEEE Software, 29(6), (s. 22- 27). doi:10.1109/MS.2012.130

Magnusson, J., Juiz, C., Gómez, B. & Bermejo, B. (2018). Governing technology debt. (s. 76-84) Proceedings of the 2018 International Conference on technical debt ACM. doi:10.1145/3194164.3194169

Martini, A., Bosch, J. & Chaudron, M. (2014). Architecture technical debt: Un- derstanding causes and a qualitative model. (s. 85-92). 2015 12th Working IEEE/IFIP Conference on Software Architecture: 2014 40th EUROMICRO Conference on Software Engineering and Advanced Applications IEEE.

doi:10.1109/SEAA.2014.65

Martini, A., Besker, T. & Bosch, J. (2018). Technical debt tracking: Current state of practice; A survey and multiple case study in 15 large organizations.

Science of Computer Programming, 163, (s. 42). doi:10.1016/j.scico.2018.03.007 McGraw, G. (2012). Software security. Datenschutz Und Datensicherheit - DuD,

36(9), (s. 662-665). doi:10.1007/s11623-012-0222-3

(31)

Murat, E. & Pierre, P. (2016). Chapter 4 - evolving the architecture. Continuous architecture (s. 63-101) Elsevier Inc. doi:10.1016/B978-0-12-803284-8.00004-X Nord, R. L., Ozkaya, I., Schwartz, E. J., Shull, F. & Kazman, R. (2016). Can

knowledge of technical debt help identify software vulnerabilities? 9th Workshop on Cyber Security Experimentation and Test (CSET 2016) USENIX Association.

Peters, L. (2014). Technical debt: The ultimate antipattern - the biggest costs may be hidden, widespread, and long term. (s. 8-10) 2014 Sixth International Workshop on Managing Technical Debt IEEE. doi:10.1109/MTD.2014.7

Rafeh, R. & Rabiee, A. (2013). Towards the design of safety-critical software.

Journal of Applied Research and Technology, 11(5), (s. 683-694).

doi:10.1016/S1665-6423(13)71576-1

Rindell, K., Bernsmed, K. & Jaatun, M. G. (2019). Managing security in software:

Or: How I learned to stop worrying and manage the security technical debt.

Canterbury, CA, United Kingdom, Proceedings of the 14th International Confe- rence on Availability, Reliability and Security Association for Computing Machinery. doi:10.1145/3339252.3340338

Rindell, K. & Holvitie, J. (2019). Security risk assessment and management as technical debt. (s. 1-8) 2019 International Conference on Cyber Security and Pro- tection of Digital Services (Cyber Security) IEEE.

doi:10.1109/CyberSecPODS.2019.8885100

Rios, N., Mendonça Neto, Manoel Gomes de & Spínola, R. O. (2018). A tertiary study on technical debt: Types, management strategies, research trends, and base information for practitioners. Information and Software Technology, 102, (s. 117-145). doi:10.1016/j.infsof.2018.05.010

Rios, N., Oliveira Spinola, R., de Mendonca Neto, Manoel G & Seaman, C.

(2018). A study of factors that lead development teams to incur technical debt in software projects. (s. 429-436) 2018 44th Euromicro Conference on Software Engineering and Advanced Applications (SEAA) IEEE.

doi:10.1109/SEAA.2018.00076

Siavvas, M., Tsoukalas, D., Janković, M., Kehagias, D., Chatzigeorgiou, A., Tzo- varas, D., . . . Gelenbe, E. (2019). An empirical evaluation of the relationship between technical debt and software security.ICIST 2019 Proceedings Vol.1, (s. 199-203). doi:10.13140/RG.2.2.15488.79365

Siponen, M. & Baskerville, R. (2018). Intervention effect rates as a path to re- search relevance: Information systems security example. Journal of the Asso-

(32)

The MITRE Corporation. (1999). CVE - common vulnerabilities and exposures . Haettu osoitteesta https://cve.mitre.org/

Tom, E., Aurum, A. & Vidgen, R. (2013). An exploration of technical debt. The Journal of Systems & Software, 86(6), (s. 1498-1516).

doi:10.1016/j.jss.2012.12.052

Tufano, M. (2017). When and why your code starts to smell bad (and whether the smells go away). IEEE Transactions on Software Engineering, 43(11), (s.

1063-1088). doi:10.1109/TSE.2017.2653105

Turvallisuuskomitea. (2018). Kyberturvallisuuden sanasto. (s. 15) Sanastokes- kus TSK ry.

Wehaibi, S., Shihab, E. & Guerrouj, L. (2016). Examining the impact of self- admitted technical debt on software quality. (s. 179-188) 2016 IEEE 23rd In- ternational Conference on Software Analysis, Evolution, and Reengineering (SA- NER) IEEE. doi:10.1109/SANER.2016.72

Woods, E. (2018). The past, present and future of technical debt. (s. 61) Procee- dings of the 2018 International Conference on technical debt ACM.

doi:10.1145/3194164.3194181

Yli-Huumo, J. (2016). How do software development teams manage technical debt? – an empirical study. The Journal of Systems & Software, 120, (s. 195- 218). doi:10.1016/j.jss.2016.05.018

Viittaukset

LIITTYVÄT TIEDOSTOT

Kinnertulehdusten määrän huomattiin lisäksi korreloivan tilastollisesti merkitsevästi lintujen kävelyn ja puhtauden kanssa, niin että linnut, joilla oli kinnertulehduksia,

Mallasohran sadon ja laadun rakentuminen – jyvän valkuaispitoisuuden hallinta?. Ari Rajala ja

Yl- läpidon hallinta on ongelma niin käyttäjälle kuin ylläpidolle, koska eri osapuolet eivät aina ole tietoisia, mitä eri käyttäjät ovat pyytäneet ylläpitäjää tekemään ja

Iho- ja allergiasairaalan valitsemien potilaiden sekä verrokkiperheiden kotona VTT:n toimesta suoritettiin sisäilman laadun mittaus (haihtuvien orgaanisten yhdisteiden (VOC,

Sotatieteiden vuoropuhelu ”siviilitieteiden” kanssa näyttää jatkuvan hedel- mällisenä, rakentaen aiempaakin kokonaisvaltaisempia merkitysyhteyksiä toi- siinsa kytkeytyvien

).. Kuvassa 1 esitetystä käyrästöstä voidaan verrata toi- siinsa erisuuruisten pommien vaikutusta. Viime aikoina on lehdistössä näkynyt tietoja, että amerikkalai-

Metsänuudistamisen laadun seurannassa yhtiön piirit tarkastivat omia töitään siinä mielessä, että in- ventointityö johdettiin piiriportaalta.. Tämä järjestely

On kuitenkin todettava, että kyseessä on monofonisuutta kompleksimpi vokalisaa- tion muoto, jossa koiraan ja naaraan laulu elementit ovat tiiviisti toi- siinsa