Вя́зкость — отрицательное качество программного кода (или среды разработки), один из признаков плохого проектирования, выражающихся в пониженной податливости программной системы изменениям ().

Определение О вязкости программного обеспечения говорят, когда внесение изменений, относящихся к некоторому аспекту программной системы, без нарушения заложенных в проект принципов связано с большими затратами времени и усилий. Сниженные возможности изменения могут быть вызваны: сложностью выделения компонентов, затрагиваемых изменениями; непропорциональным объёмом необходимых модификаций в сравнении с объёмом изменений в требованиях к ПО; глубоким влиянием изменений на систему в целом.

В процессе разработки и сопровождения программного обеспечения вязкость ставит программистов перед выбором: сохранить ли первоначальные проектные решения при реализации нового требования или же нарушить их, используя «хакерские приёмы» и следуя путём «наименьшего сопротивления». Из-за нехватки времени и непонимания проекта первоначальный замысел нарушается всё чаще.

Вязкость может быть связана не только с самим программным обеспечением, но и со средой разработки. Неэффективная, медлительная среда разработки может мешать следованию правильному подходу и вынуждает прибегать к сомнительной практике. Факторы, влияющие на вязкость среды, могут включать в себя процесс разработки, процедуры повторного использования кода, организационные и правовые ограничения.

В языках программирования и других системах для нотации, исследователи Томас Грин и Мариан Петре выделяют вязкость в качестве одного из когнитивных измерений. При этом вязкость подразделяется на кумулятивную (), отражающую степень, в которой одно изменение вызывает другие для восстановления согласованности кода, и повторительную (), выражающуюся как «сопротивление изменениям». Так, при сравнении вязкости декларативных и процедурных языков программирования выяснилось, что Бейсик имеет низкую повторительную вязкость по сравнению с Прологом. С кумулятивной вязкостью ситуация оказалась обратной. Было показано, что вязкость вызывается целым набором разнонаправленных факторов, а сама вязкость относится как к используемой нотации (коду), так и к используемому инструментарию.

Близкие понятия Помимо вязкости, существуют и другие близкие, но не эквивалентные ей особенности программного обеспечения, препятствующие внесению изменений.

Жёсткость ( — «закрепощённость») программного обеспечения проявляется, когда в систему сложно вносить изменения сразу по многим направлениям. Неустойчивость ( — «хрупкость») проявляется, когда незначительное изменение в одной части может вызвать несколько проблем в других частях, даже напрямую не связанных с изменённым компонентом.

См. также Код с запашком Технический долг

Примечания

Литература

Ссылки

__NOTOC__ Категория:Качество программного обеспечения