Viszkozitás – a programkód (vagy fejlesztőkörnyezet ) negatív minősége , a rossz tervezés egyik jele , amely a szoftverrendszer változásra való csökkent érzékenységében fejeződik ki ( angolul változtathatóság ).
A szoftver viszkozitásáról azt mondják, hogy a szoftverrendszer bizonyos aspektusaihoz kapcsolódó változtatások végrehajtása a projektben lefektetett elvek megsértése nélkül nagy idő- és munkabefektetéssel jár [1] [2] . Csökkent változási képesség oka lehet: a változások által érintett komponensek elkülönítésének nehézsége; a szükséges módosítások aránytalan mennyisége a szoftverkövetelmények változásainak mennyiségéhez képest ; a változások mélyreható hatása a rendszer egészére [3] .
A szoftver fejlesztése és karbantartása során a viszkozitás választás elé állítja a programozókat: megtartják-e az eredeti tervezési döntéseket egy új követelmény megvalósítása során, vagy megtörik azokat "hackelési technikákkal" és a "legkisebb ellenállás" útján . 2] . Időhiány és a projekt megértésének hiánya miatt az eredeti tervet egyre gyakrabban sértik meg [1] .
A viszkozitás nem csak magával a szoftverrel, hanem a fejlesztői környezettel is összefüggésbe hozható. A nem hatékony, lassú fejlesztési környezet a helyes megközelítés útjába állhat, és megkérdőjelezhető gyakorlatokhoz kényszerítheti. A médium viszkozitását befolyásoló tényezők magukban foglalhatják a fejlesztési folyamatot , a kód újrafelhasználási eljárásait , a szervezeti és jogi korlátokat [2] .
A programozási nyelvekben és más jelölési rendszerekben Thomas Green és Marian Petre kutatók a viszkozitást a kognitív dimenziók egyikeként különböztetik meg . Ugyanakkor a viszkozitás fel van osztva kumulatívra ( angol. knock-on ), amely azt tükrözi, hogy egy változtatás milyen mértékben készteti a többieket a kód konzisztenciájának helyreállítására, és ismétlődőre ( eng. repetitive ), amelyet "változásokkal szembeni ellenállásként" fejeznek ki. Tehát a deklaratív és procedurális programozási nyelvek viszkozitásának összehasonlítása során kiderült, hogy a BASIC alacsony iteratív viszkozitású a Prologhoz képest . A kumulatív viszkozitással a helyzet fordított volt. Kimutatták, hogy a viszkozitást többirányú tényezők egész halmaza okozza, és maga a viszkozitás mind az alkalmazott jelölésre (kódra), mind az alkalmazott eszközkészletre vonatkozik [4] .
A viszkozitáson kívül más hasonló, de nem egyenértékű szoftverfunkciók is megakadályozzák a változásokat.