Русская Википедия:Вязкость (программирование)
Шаблон:Другие значения Вя́зкость — отрицательное качество программного кода (или среды разработки), один из признаков плохого проектирования, выражающихся в пониженной податливости программной системы изменениям (Шаблон:Lang-en).
Определение
О вязкости программного обеспечения говорят, когда внесение изменений, относящихся к некоторому аспекту программной системы, без нарушения заложенных в проект принципов связано с большими затратами времени и усилийШаблон:SfnШаблон:Sfn. Сниженные возможности изменения могут быть вызваны: сложностью выделения компонентов, затрагиваемых изменениями; непропорциональным объёмом необходимых модификаций в сравнении с объёмом изменений в требованиях к ПО; глубоким влиянием изменений на систему в целомШаблон:Sfn.
В процессе разработки и сопровождения программного обеспечения вязкость ставит программистов перед выбором: сохранить ли первоначальные проектные решения при реализации нового требования или же нарушить их, используя «хакерские приёмы» и следуя путём «наименьшего сопротивления»Шаблон:Sfn. Из-за нехватки времени и непонимания проекта первоначальный замысел нарушается всё чащеШаблон:Sfn.
Вязкость может быть связана не только с самим программным обеспечением, но и со средой разработки. Неэффективная, медлительная среда разработки может мешать следованию правильному подходу и вынуждает прибегать к сомнительной практике. Факторы, влияющие на вязкость среды, могут включать в себя процесс разработки, процедуры повторного использования кода, организационные и правовые ограниченияШаблон:Sfn.
В языках программирования и других системах для нотации, исследователи Томас Грин и Мариан Петре выделяют вязкость в качестве одного из когнитивных измерений. При этом вязкость подразделяется на кумулятивную (Шаблон:Lang-en), отражающую степень, в которой одно изменение вызывает другие для восстановления согласованности кода, и повторительную (Шаблон:Lang-en), выражающуюся как «сопротивление изменениям». Так, при сравнении вязкости декларативных и процедурных языков программирования выяснилось, что Бейсик имеет низкую повторительную вязкость по сравнению с Прологом. С кумулятивной вязкостью ситуация оказалась обратной. Было показано, что вязкость вызывается целым набором разнонаправленных факторов, а сама вязкость относится как к используемой нотации (коду), так и к используемому инструментарию[1].
Близкие понятия
Помимо вязкости, существуют и другие близкие, но не эквивалентные ей особенности программного обеспечения, препятствующие внесению изменений.
- Жёсткость (Шаблон:Lang-en — «закрепощённость») Шаблон:Sfn программного обеспечения проявляется, когда в систему сложно вносить изменения сразу по многим направлениям.
- Неустойчивость (Шаблон:Lang-en — «хрупкость») Шаблон:Sfn проявляется, когда незначительное изменение в одной части может вызвать несколько проблем в других частях, даже напрямую не связанных с изменённым компонентомШаблон:Sfn.
См. также
Примечания
Литература
Ссылки