Този сайт използва бисквитки (cookies). Ако желаете можете да научите повече тук. Разбрах

Новини Анализи и тенденции
бр. 12, 2017

Повратна точка в кодинга

Стандартите за безопасност засягат машините и оборудването. Кой носи отговорност за грешки във вградения софтуер, който управлява повечето съоръжения и критични системи?

от , 21 декември 2017 0 719 прочитания,

Повратна точка в кодинга

Виргиния Стаматова

Все повече системи с критично значение, които доскоро се командваха механично или от хора, започват да зависят от код. Това говори, че иновациите се развиват, пазарът се разширява, а трудът на хората, които оперират въпросните съоръжения, става по-лек. Очакваме и да се реши проблемът с "човешката грешка". 

Въпросът, който остава отворен все пак, е кой носи отговорност, ако нещо се обърка - организацията клиент, доставчикът и интеграторът на решението или всички заедно.

Отговорът на този въпрос е труден и зависи от конкретния случай. Но нека не си правим илюзии: със софтуер се командват критични системи като управление на полети, телефон за спешни обаждания, роботи за лъчетерапия и т.н., което рано или късно ще постави въпроса за отговорността на програмистите. Изглежда несправедливо и крайно, но също и неизбежно, освен ако няма смяна на играта.

В мрачната статистика на наводненията Източна България тази година не направи изключение. И отново причината е в проливните дъждове в Бургаско (подобна трагедия имаше и през 2014-а пак в Бургаско и варненския квартал "Аспарухово"). Медиите съобщиха за скъсани язовирни стени, цели села, потопени под вода, човешки жертви и материални щети. За повтарящата се трагедия виновни се оказаха синоптиците, че не предсказали предстоящите 100 л на кв.м дъжд, които, от друга страна, не са изключителни за този район на страната. Неотдавна в Бургаско беше въведена в действие и частично изградена система за ранно предупреждение при наводнения. Според местния печат тя подала информация за критичното ниво (червен флаг) на язовирите в полунощ, час и половина преди да стане трагедията. "Час и половина по-рано", казва Ивайло Трендафилов, експерт в община Бургас (ИА "Черно море", 15 ноември), "кметските наместници в селата са започнали да предупреждават местното население". Така са предотвратени част от възможните жертви, но въпреки това 4-ма души загинаха. Какво прави възрастен човек, питаме се ние, когато получи обаждане в полунощ, че близките язовири са прелели? Проверява дали не е жертва на телефонна измама; качва се на тавана на къщата си или на някое дърво - защото със сигурност по това време няма транспорт в селото...

Системата сама по себе си е полезна и е сработила, но случилото се е извън възможностите на софтуера и опира до човешката немарливост. Ранното предупреждение и евакуация на населението е в прерогативите на местната власт и Гражданска защита (част от "Пожарна безопасност") и не се прави час и половина преди катастрофата. Освен за приближаващото бедствие системата е подала индикация и за съществуваща опасност (оранжев флаг) и отговорните институции би трябвало да се задействат в този момент, а не когато язовирните стени са скъсани... Поне така се прави в САЩ, когато се очаква ураган или торнадо. И там местните власти не само предупреждават хората, но организират евакуация и се вземат мерки за защита на хората и имуществото им, преди да се е стигнало до бедствие. Защото колкото и модерна да е една информационна система и колкото добре да работи, тя не може да свърши работата на хората и да поеме отговорността вместо тях. В случая не се каза нищо официално срещу системата, но заради наводнението и жертвите тихомълком тя беше извадена от списъка на успешните проекти на едно събитие на бранша, т.е. върху нея падна сянка, по наше мнение - незаслужено.


Загубени в разбирането

Но има и друг вариант - грешка в софтуера. Замислете се само, че като редактирате кода, т.е. текстовия файл, едно парче силиций става автопилот или система за управление на инвентара. Гъвкавостта е чудото, но и проклятието на софтуера. И защото може да се променя сравнително евтино, той непрекъснато е подложен на доработки. Освен това програмите не се контролират от физически съществуващ обект, който да удостовери дали са "годни" или не. В този ред на мисли продукт, който е много по-комплексен и сложен от друг, може да заема същото пространство като този с по-малко функции. Отделен проблем е, че се опитваме да изградим системи, чието управление е извън интелектуалния ни капацитет. Софтуерът прави това, което му е зададено, но заданието може да се окаже грешно.

Основните стандарти за безопасност засягат физическите вещи (уредите, машините и т.н.) и разчитат на това, че ако частите на съоръжението са безопасни, то като цяло е такова. Но какво правим със софтуера, който командва критична система, от правилната работа на която зависи човешки живот. Софтуерът няма части, или поне в общоприетия вид. Грешките при него се дължат на грешки в разбирането, въображението или в загуба на идея за комплексния продукт.


Toyota и неволното увеличаване на скоростта

В края на октомври 2013 г. японската автомобилна компания Toyota е осъдена в САЩ да заплати обезщетение от 3 млн. щатски долара на Джийн Боко, пострадала, и на семейството на Барбара Шварц, загинала в инцидент с Toyota Carmy. Катастрофата се случва през 2007-а - управлявания от Боко автомобил се блъска в стена. Спирачният път преди удара е 45.7 м (150 фута). Пътничката загива, а шофьорката прекарва месеци в кома, преди да дойде в съзнание.

Това е един от поредица подобни инциденти, за които Toyota хвърля вината върху собствениците на автомобилите - обясненията варират от набрана постелка на шофьорското място до настъпена дъвка, която залепила обувката на водача върху педала на газта, подхвърля се и хипотезата за каране с несъобразена скорост. Но поради зачестилите инциденти властите в САЩ са на мнение, че проблемът е в автомобилите. Националната администрация по безопасност на магистралите започва разследване, като в хода му са привлечени софтуерни специалисти от НАСА. След 10 месеца работа програмистите на НАСА излизат със становище, в което се казва, че "отсъстват доказателства, че софтуерът е причинил катастрофата, но съща така не биха могли да твърдят и обратното". Разследването е продължено от Майкъл Бар, софтуерен инженер и вещо лице по делото, придобило публичност като "Неволното увеличаване на скоростта". 18 месеца по-късно той и екипът му заявяват, че имат отговор какво е причинило катастрофата. Става дума за "спагети код" - на професионален жаргон това означава "объркан код". До ситуацията се стигнало след дългогодишни доработки и добавяне на нови функционалности към програмата на бордния компютър на колите. Новите елементи се трупали върху старите. В крайна сметка става невъзможно кодът да се следва, както и да се тества за недостатъци.

Използвайки компютър, идентичен на този на автомобила от инцидента, Бар доказва, че са налице поне 10 млн. начина ключовите функции на машината да се объркат и в резултат да се получи неволно увеличаване на скоростта. За да стане колата неуправляема, е достатъчна загубата на 1 бит информация - да речем, една нула в кода да се промени в единица или обратното. Иначе казано, кодът, който Toyota е въвела и който трябва да отстрани грешките в подобна ситуация, не работи. В блога си Бар пише: "Имате софтуер, който поправя софтуера. Няма как това, което е довело до грешката, да послужи като инструмент за оправянето й."

След като Джийн Боко печели делото срещу Toyota, компанията е принудена от американските власти да изтегли от пазара 9 млн. коли от същата серия и заплаща под формата на глоби и санкции още около 3 млрд. щатски долара.


Невидимата сила на вградения софтуер

Вероятно от Toyota не са допускали какво стои зад катастрофите с автомобилите им. Възможно е да са обвинявали невнимателно шофиращите американци, пазарната конкуренция и не са си представяли, че "парчето от огледалото" е в тяхното око. Интроспекцията е най-трудна, особено ако става въпрос за "невидими" системи като вградения (embeded) софтуер.

Всъщност програмистите са хора като всички останали и следователно не са застраховани от грешки. През последните 20 години компютрите удвояват изчислителната си мощ горе-долу на всеки 18 месеца. Но начините, по които се пише код, не са се променили кой знае колко.

Програмистите са дистанцирани от проблема, по който работят: не се фокусират върху решението директно, а пишат инструкции за машината под формата на код, абстрактни комбинации от букви и символи. Целта е през този "текст" да се прокара определена команда, като пишещият се опитва да мисли като компютъра и да внимава за всяка междинна калкулация. Безспорно той разполага с инструменти като IDEs за откриване на грешките в кода. Но основното предизвикателство, пред което се изправят създателите на съвременните софтуерни продукти, е, че трябва да решават определени проблеми, а не да търсят грешките.

От друга страна, тази задача е почти непосилна: няма как да се разбере ракът или да се измисли адаптивен дизайн на системите за круизни кораби с гледане на текстовия редактор.

С все по-широкото навлизане на софтуера в различни сфери на живота създателите му са изправени пред предизвикателството да мислят за концептуални йерархии (модели), надхвърлящи възможностите на един човешки ум. Може би дори понякога не разбират естеството на проблема, който трябва да решат, и не се интересуват от него. И това не трябва да ни учудва. Софтуерът навлиза в почти всяка сфера на живота - възможно ли е някой да разбира от всичко? (Май след Ломоносов няма други енциклопедисти.)


Епилог: остър завой

Така прогресът на технологиите и масовото навлизане на софтуера в живота ни може да се окажат началото на края на програмирането такова, каквото го познаваме.

Може би ролята на програмистите е да създадат инструменти, които ще позволят на хората, запознати с проблема, да търсят решението му директно, без да минават през плуващите пясъци на кода.

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

Подобен е моделът на различните готови системи за управление на съдържанието (CMS) на уеб сайтове - с клик и избор на нужните инструменти почти всеки може да си направи сайт, без да пише код в HTML и CSS. Платформи като WordPress, Symphony, Joomla са достатъчно мощни, за да вършaт работата, която някога е правена от професионален уеб дизайнер. По такъв начин програмистите ще носят отговорност само за това, което е в техните компетенции, подобно на архитектите и строителните инженери, които създават проектите на сградите. По всяка вероятност подобен подход ще повиши сигурността и ще спести на софтуерните инженери опасността да носят отговорност заради грешка поради неразбиране на проблема, който решават

КОМЕНТАРИ ОТ  

Полезни страници
    За нас | Аудитория | Реклама | Контакти | Общи условия | Декларация за поверителност | Политика за бисквитки |
    Действителни собственици на настоящото издание са Иво Георгиев Прокопиев и Теодор Иванов Захов