Аuto-fix инструменти поддържат софтуерния код

Инструментите за автоматизирана поддръжка не могат да заменят добрите програмисти, но могат да направят разликата, що се касае до поддръжката на кода

Отлагането на необходим ъпгрейд на софтуерния код може да има страховити последици, като големия пробив в базата данни на мултимилионната кредитна компания Equifax, който се случи в самото начало на миналия септември и изложи на риск данните на над 143 милиона потребители. Ново проучване показва, че инструментите за автоматизирана поддръжка (auto-fix) са един ефективен начин програмистите да извършват съответните ъпгрейди – ако, разбира се, искат да ги използват.

„Повечето софтуерни програми разчитат на код във външни библиотеки, за да извършват част от своите функции”, казва Крис Парнин, асистент-професор по компютърни науки в държавния университет в Северна Каролина. „Ако външните библиотеки са променени, за да бъдат отстранени някакви недостатъци,  програмистите трябва да ъпдейтнат своя вътрешен код, за да отреагират на настъпилите промени. Това се нарича „обновяване на остаряла зависимост” (upgrade an out-of-date dependency)”, допълва той.

Разбира се, поради различни причини, много програмисти отлагат извършването на съответните обновления. Точно това се случи с Equifax, след като публично стана ясно, че една от външните библиотеки, на които компанията разчиташе, има „пукнатина” в сигурността. И докато тази библиотека беше ъпдейтната с цел да се премахне „пукнатината”, Equifax така и не ъпдейтна своя код. Месеци след като проблемът беше идентифициран, Equifax все още беше уязвима и впоследствие хакната.

„Нашата цел с този проект беше да оценим инструменти, които са създадени, за да могат повече програмисти да ъпдейтнат своите остарели зависимости (out-of-date dependencies)”, пояснява Крис Парнин. Въпросът е дали тези инструменти биха могли да помогнат за преодоляване на друг Equifax.

За целите на проучването изследователите прегледали хиляди проекти с отворен код (open source) в GitHub и по-специално търсели различни средства, използвани за стимулиране или улесняване на ъпгрейдите, и най-вече дали употребата на такива води до значителна разлика.

В една от групите, състояща се от 2 578 проекта, са били извършвани автоматизирани „pull request”-и, които известяват собствениците на проектите, нуждаещи се от ъпдейт на остарели зависимости, предлагат потенциални промени на кода и провеждат тестове за проверка дали замененият код е изпълним. Разбира се, собствениците трябвало все пак да дадат съгласие за промените или да променят собственоръчно ъпдейтнатия код, ако се е провалил на т.нар. „viability” тест (тест за жизнеспособност).

Втора група, състояща се от 1273 проекта, не е била подложена на тези известявания. Крайният резултате е, че групата проекти с автоматичен „pull request” е извършила над 60% от необходимите ъпдейти, за разлика от проектите, които не са подлагани на „pull request”-и.

Според Парнин, изводът е, че тези инструменти не могат да заменят добрите програмисти, но могат да дадат значителна разлика, що се касае до поддръжката на кода. Все още обаче зависи от самите програмисти дали ще прибегнат до употребата на подобни инструменти.

Документът „Can Automated Pull Requests Encourage Software Developers to Upgrade Out-of-Date Dependencies?” ще бъде представен на международна конференция по автоматизиран софтуерен инженеринг – IEEE/ACM, която ще се проведе от 30-ти октомври до 3-ти ноември 2017 г. в Университета в Илинойс, САЩ.

Статията е подготвена от Георги Кацаров, СофтУни

Коментар