Viskozita - negativní kvalita programového kódu (nebo vývojového prostředí ), jeden ze znaků špatného návrhu , vyjádřená sníženou náchylností softwarového systému ke změnám ( anglicky changeability ).
Viskozita softwaru je prý při provádění změn souvisejících s některým aspektem softwarového systému, aniž by došlo k porušení zásad stanovených v projektu, spojena s velkou investicí času a úsilí [1] [2] . Snížená schopnost změny může být způsobena: obtížností izolovat složky ovlivněné změnami; neúměrné množství požadovaných úprav ve srovnání s množstvím změn softwarových požadavků ; hluboký dopad změn na systém jako celek [3] .
V procesu vývoje a údržby softwaru staví viskozita programátorům před volbu: zda zachovat původní návrhová rozhodnutí při implementaci nového požadavku, nebo je prolomit pomocí „hackerských technik“ a následovat cestu „nejmenšího odporu“ [ 2] . Kvůli nedostatku času a nepochopení projektu je původní plán stále častěji porušován [1] .
Viskozita může souviset nejen se samotným softwarem, ale také s vývojovým prostředím. Neefektivní, pomalé vývojové prostředí může překážet správnému přístupu a donutit vás uchýlit se k pochybným praktikám. Faktory, které ovlivňují viskozitu média, mohou zahrnovat vývojový proces , procedury opětovného použití kódu , organizační a právní omezení [2] .
V programovacích jazycích a dalších systémech pro zápis rozlišují výzkumníci Thomas Green a Marian Petre viskozitu jako jednu z kognitivních dimenzí . Zároveň se viskozita dělí na kumulativní ( angl. knock-on ), odrážející míru, do jaké jedna změna způsobí, že ostatní obnoví konzistenci kódu, a repetitivní ( angl. repetitivní ), vyjádřenou jako „odolnost vůči změnám“. Takže při srovnání viskozity deklarativních a procedurálních programovacích jazyků se ukázalo, že BASIC má ve srovnání s Prologem nízkou iterativní viskozitu . S kumulativní viskozitou byla situace opačná. Ukázalo se, že viskozita je způsobena celým souborem vícesměrných faktorů a viskozita samotná se vztahuje jak k použité notaci (kódu), tak k použité sadě nástrojů [4] .
Kromě viskozity existují další podobné, ale ne ekvivalentní softwarové funkce, které zabraňují změnám.