Viskositeetti - ohjelmakoodin (tai kehitysympäristön ) negatiivinen laatu , yksi huonon suunnittelun merkkejä , joka ilmaistaan ohjelmistojärjestelmän heikentyneenä alttiudena muuttua ( englanniksi muuttuvuus ).
Ohjelmiston viskositeetin sanotaan olevan, kun johonkin ohjelmistojärjestelmän osa-alueeseen liittyvien muutosten tekeminen hankkeessa asetettuja periaatteita rikkomatta liittyy suureen ajan ja vaivan sijoitukseen [1] [2] . Muutoskyvyn heikkeneminen voi johtua: vaikeudesta eristää komponentteja, joihin muutokset vaikuttavat; suhteeton määrä tarvittavia muutoksia verrattuna ohjelmistovaatimusten muutosten määrään ; muutosten syvällinen vaikutus koko järjestelmään [3] .
Ohjelmistojen kehittämis- ja ylläpitoprosessissa viskositeetti asettaa ohjelmoijat valinnan eteen: säilytetäänkö alkuperäiset suunnittelupäätökset uutta vaatimusta toteutettaessa vai rikotaanko ne käyttämällä "hakkerointitekniikoita" ja seuraamalla "pienimmän vastuksen" polkua [ 2] . Ajan puutteen ja hankkeen ymmärtämättömyyden vuoksi alkuperäistä suunnitelmaa rikotaan yhä useammin [1] .
Viskositeetti voi liittyä paitsi itse ohjelmistoon myös kehitysympäristöön. Tehoton, hidas kehitysympäristö voi olla oikean lähestymistavan tiellä ja pakottaa turvautumaan kyseenalaisiin käytäntöihin. Tietovälineen viskositeettiin vaikuttavia tekijöitä voivat olla kehitysprosessi , koodin uudelleenkäyttömenettelyt , organisatoriset ja oikeudelliset rajoitukset [2] .
Ohjelmointikielissä ja muissa merkintäjärjestelmissä tutkijat Thomas Green ja Marian Petre erottavat viskositeetin yhtenä kognitiivisista ulottuvuuksista . Samanaikaisesti viskositeetti jaetaan kumulatiiviseen ( eng. knock-on ), joka kuvastaa sitä, missä määrin yksi muutos saa muut palauttamaan koodin yhdenmukaisuuden, ja toistuvaan ( eng. repetitive ), joka ilmaistaan "muutosten vastustuskykynä". Joten, kun verrattiin deklaratiivisten ja proseduraalisten ohjelmointikielten viskositeettia, kävi ilmi, että BASIC :lla on alhainen iteratiivinen viskositeetti Prologiin verrattuna . Kumulatiivisella viskositeetilla tilanne oli päinvastainen. On osoitettu, että viskositeetti johtuu monista monisuuntaisista tekijöistä, ja viskositeetti itsessään viittaa sekä käytettyyn merkintään (koodiin) että käytettyyn työkalupakettiin [4] .
Viskositeetin lisäksi ohjelmistossa on muita vastaavia, mutta ei vastaavia ominaisuuksia, jotka estävät muutokset.