Viskositet - den negative kvalitet af programkoden (eller udviklingsmiljøet ), et af tegnene på dårligt design , udtrykt i softwaresystemets reducerede modtagelighed for ændringer ( engelsk changeability ).
Viskositeten af software siges at være, når man foretager ændringer relateret til nogle aspekter af softwaresystemet, uden at overtræde principperne i projektet, er forbundet med en stor investering af tid og kræfter [1] [2] . Nedsat evne til at ændre kan skyldes: vanskeligheden ved at isolere de komponenter, der påvirkes af ændringerne; uforholdsmæssigt mange påkrævede ændringer i sammenligning med mængden af ændringer i softwarekrav ; ændringers dybtgående indvirkning på systemet som helhed [3] .
I processen med at udvikle og vedligeholde software sætter viskositet programmører over for et valg: om de vil beholde de oprindelige designbeslutninger, når de implementerer et nyt krav, eller at bryde dem ved at bruge "hacking-teknikker" og følge vejen til "mindst modstand" [ 2] . På grund af manglende tid og manglende forståelse for projektet bliver den oprindelige plan overtrådt oftere og oftere [1] .
Viskositet kan relateres ikke kun til selve softwaren, men også til udviklingsmiljøet. Et ineffektivt, langsomt udviklingsmiljø kan komme i vejen for den rigtige tilgang og tvinge dig til at ty til tvivlsom praksis. Faktorer, der påvirker viskositeten af et medium, kan omfatte udviklingsprocessen , procedurer for genbrug af kode , organisatoriske og juridiske begrænsninger [2] .
I programmeringssprog og andre systemer til notation skelner forskerne Thomas Green og Marian Petre viskositet som en af de kognitive dimensioner . Samtidig er viskositeten opdelt i kumulativ ( eng. knock-on ), hvilket afspejler i hvilken grad en ændring får andre til at genoprette kodekonsistens, og repetitive ( eng. repetitive ), udtrykt som "modstand mod ændringer". Så når man sammenlignede viskositeten af deklarative og proceduremæssige programmeringssprog, viste det sig, at BASIC har en lav iterativ viskositet sammenlignet med Prolog . Med kumulativ viskositet blev situationen vendt. Det har vist sig, at viskositet er forårsaget af et helt sæt af multidirektionelle faktorer, og viskositeten i sig selv refererer både til den anvendte notation (kode) og til det anvendte værktøjssæt [4] .
Ud over viskositet er der andre lignende, men ikke tilsvarende softwarefunktioner, der forhindrer ændringer.