Viskositet - den negativa kvaliteten på programkoden (eller utvecklingsmiljön ), ett av tecknen på dålig design , uttryckt i mjukvarusystemets minskade känslighet för förändring ( engelska changeability ).
Viskositeten hos mjukvara sägs vara att göra ändringar relaterade till någon aspekt av mjukvarusystemet, utan att bryta mot principerna som fastställts i projektet, är förknippat med en stor investering av tid och ansträngning [1] [2] . Minskad förmåga att förändra kan orsakas av: svårigheten att isolera de komponenter som påverkas av förändringarna; oproportionerligt antal nödvändiga ändringar i jämförelse med mängden ändringar i programvarukraven ; djupgående inverkan av förändringar på systemet som helhet [3] .
I processen att utveckla och underhålla mjukvara, ställer viskositet programmerare inför ett val: om de ska behålla de ursprungliga designbesluten när de implementerar ett nytt krav, eller att bryta dem med "hacking-tekniker" och följa vägen för "minsta motstånd" [ 2] . På grund av tidsbrist och bristande förståelse för projektet bryts den ursprungliga planen allt oftare [1] .
Viskositeten kan relateras inte bara till själva mjukvaran utan också till utvecklingsmiljön. En ineffektiv, långsam utvecklingsmiljö kan komma i vägen för rätt tillvägagångssätt och tvinga dig att ta till tvivelaktiga metoder. Faktorer som påverkar ett mediums viskositet kan inkludera utvecklingsprocessen, förfaranden för kodåteranvändning , organisatoriska och juridiska begränsningar [2] .
I programmeringsspråk och andra system för notation särskiljer forskarna Thomas Green och Marian Petre viskositet som en av de kognitiva dimensionerna . Samtidigt delas viskositeten in i kumulativ ( eng. knock-on ), vilket återspeglar i vilken grad en förändring får andra att återställa kodkonsistens, och repetitiv ( eng. repetitive ), uttryckt som "motstånd mot förändringar". Så när man jämförde viskositeten för deklarativa och procedurprogrammeringsspråk visade det sig att BASIC har en låg iterativ viskositet jämfört med Prolog . Med kumulativ viskositet var situationen den omvända. Det har visat sig att viskositet orsakas av en hel uppsättning flerriktade faktorer, och viskositeten i sig hänvisar både till notationen (koden) som används och till den använda verktygslådan [4] .
Förutom viskositet finns det andra liknande men inte likvärdiga mjukvarufunktioner som förhindrar förändringar.