Pull to refresh

Comments 117

На этот опрос меня сподвигла статья про авиакатастрофу A310. Во время полёта внезапно обнаружилась «особенность» поведения автопилота — при приложении силы к штурвалу в течение 30 секунд автопилот выключается, не оповещая никого об этом. Итог: смерть 75 человек.
Устройство Therac-25 — аппарат лучевой терапии. Тривиальнейшие и от того ещё более ужасные ошибки в ПО, судя по которым, код не просто не тестировался, его даже повторно никто не читал. «Установка булевской переменной (однобайтовой) в значение «истина» производилось командой «x=x+1»» Итог: смерть двух человек и переоблучение ещё минимум четырёх.

Сейчас в нашу жизнь всё больше и больше вводятся высокие технологии. И теперь баги отправят на тот Свет не одного и не двух человек. Например, хотели бы вы, чтобы ваша машина с супругом и детьми на автопилоте на полном ходу влетела в стену (да-да, привет, Томми)? Или какой-нибудь аппарат реабилитации вкатил вашей матери десятикратную дозу снотворного.
Ну с авиакатастрофой там целый букет нарушений у экипажа. Причем непонятно, как так получилось, что пилоты не могли понять, что показывают приборы и высказывали предположения. Трудно поверить, что этот момент не описан в документации к самолету, больше верится в не профессионализм экипажа.
«Главной причиной катастрофы была недопустимая ситуация, при которой командир воздушного судна посадил за штурвал авиалайнера своего пятнадцатилетнего сына»
О чём ещё можно говорить.
Произошло наложение нескольких факторов.
1) ребенок за штурвалом
2) недокументированная особенность автопилота

Первый пункт — явное нарушение. Согласен.

Но поймите — не в этот раз, так в другой — эта особенность автопилота всё-равно привела бы к авиакатастрофе, ибо экипаж о ней не знал. Как и не знал, что для спасения им всего-навсего надо было отпустить приборы управления когда вошли в штопор и самолет сам бы восстановил себя.
Поэтому не надо всё списывать на ребенка — просто с ним случай получился первый. Но рано или поздно катастрофа была бы неизбежна, так как несколько ключевых моментов (отключение автопилота элеронов после 30с использования штурвала + отсутствие звуковой сигнализации об отключении автопилота — для российских это было неизвестно, так как на наших самолетах отключение автопилота сопровождается звуком!), влияющих на безопасность, — просто не давалась пилотам.
Позволю не согласиться. Если бы штурвал в руках держал пилот, а не ребенок он бы понял, что автопилот отключился. А отключение автопилота при использовании штурвала это через чур интуитивное поведение ПО. Так, что в моем понимает тут вина экипажа.
Прослушайте записи.
В другом кресле был пилот. Реакция экипажа — «автопилот пошел на круг».
Так бы произошло если бы и ребенка не было в кресле".
Нет вины экипажа в том, что их не обучили некоторым особенностям самолета как «отключение без команды экипажа» и «отсутствие звукового сопровождения при отключении».
Представьте — вы всю жизнь летаете на самолетах и знаете, что при отключении автопилота — подается звуковой сигнал. Там же сигнала не было — с чего бы вы решили, что автопилот выключен? Они до конца не знали об этом и поведение самолета объясняли действием автопилота.
Я вот долгое время ездил на машине с правым рулем, а теперь у меня левый руль, я могу газ в пол и передавить всех пешеходов?

> В другом кресле был пилот. Реакция экипажа — «автопилот пошел на круг».

Экипаж виноват, очевидно же.

> Они до конца не знали об этом и поведение самолета объясняли действием автопилота.

Они знали, что звука нет. Не заметить, то что самолет слушается штурвала это надо постараться.

Вы забываете о том, что КВС — ответственный за полёт. Его задача не только «штурвал держать», но и контролировать ситуацию, для недопущения нештатных ситуаций, а также принятие решений и выполнение действий в случае нештатной ситуации. В данном случае проблема именно в том, что КВС забыл о своей ответственности (покинул своё место, передал управление воздушным судном третьему, неквалифицированному лицу) и перестал контролировать обстановку (не следил за поведением ВС, не оценивал пространственное положение ВС).

Если бы не эти факторы и полёт происходил как положено (т.е. никто бы не нарушал правила), то самолёт успешно бы долетел до места назначения. Вполне возможно, что в этом случае баг с автопилотом никогда более и не проявился, и А310 успешно бы летали с ним до списания последнего борта в утиль.
отключение автопилота через 30сек. — «это не баг, а фича». Так что это не ошибка программного обеспечения, а недоработка обучения пилотов.
Чувствуете разницу?

Хотя если нет — можете минусовать и это сообщение, как сделали с предыдущими. Легко минуснуть когда отвечать за свои поступки не приходится.

Никогда более не проявился… поизучайте катастрофы и их причины — если что-то может случиться — обязательно случиться. Если есть функциональность, о которой не знают — когда-нибудь обязательно настанет событие, которое приведет к трагическим последствиям.
«если что-то может случиться — обязательно случится»

Это закон Мерфи, брать его за реальность нельзя. Это только видимость: ситуаций которые приведут к катастрофе огромное количество, какая-то часть их реализуется в реальной ситуации, но это только малая часть возможных комбинаций. Причем комбинации бывают столь замороченные, что и возникают подобные мысли, но это чисто психологический фактор.

А по теме, можно добавить и аварию на ЧАЭС, тоже часть вины в неполноте документации.
Во-первых, «фича» здесь не «отключение через 30 секунд», а «отсутствие звукового оповещения при отключении автопилота в данной ситуации». Отключение автопилота при сильных изменениях положения штурвала — штатное поведение практически любого самолёта, спросите на любом форуме связанном с авиацией.

Во-вторых, вы путаете причины. Отключение автопилота произошло вследствии действий постороннего лица, которого вообще не должно было быть не то что за штурвалом, а вообще в кабине ВС, т.е. уже во время внештаной ситуации. Более того, если бы КВС был на своём месте, то:
а) внештатной ситуации (в данном случае) вообще бы небыло, автопилот бы не отключился;
б) если бы внештатная ситуация всё-таки произошла (второй пилот валенки на штурвал повесил, for ex.), то у КВС была бы возможность контролировать сутацию и предпринимать действия. В вышеописнном случае данной возможности небыло, т.к. КВС покинул своё место, второй пилот не был готов принять управление на себя.
именно потому, что весь софт несовершенен, в кабине сидит два очень дорогих в обучении человека. Если они не могут понять, что самолет падает, значит кто-то сэкономил деньги на их обучении. Сажать надо его, а не разработчиков софта.
Вы знаете, я прочитал книгу, написанную пилотом. Книга для тех кому интересно «про самолеты». Там все описано о правилах полета, высоты, скоростей, приборов и т.д.

На основании этого пассивного опыта, могу сказать что то что подается за «главуню» причину катастрофы ей не является.
UFO just landed and posted this here
это в ТЗ было написано, что нужно оповещать?

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

Пример из автомобилей — сейчас помаленьку распространяется круиз-контроль.
Как выдумаете — обязательно ли уведомлять отвлекшегося водителя, что круиз-контроль выключился по какой-то причине (например впереди идущая машина резко поменяла направление)?
UFO just landed and posted this here
UFO just landed and posted this here
>Пример из автомобилей — сейчас помаленьку распространяется круиз-контроль.
кстати, если тронуть органы управления (тормоз например) — круиз отключается. Да и не заметить что круиз отключился довольно сложно.
Как правило, всё ПО влияющее на безопасность и жизнь людей проходит сертификацию.
Конкретно на разработку ПО бортовой аппаратуры существует стандарт DO-178B(Отечественные квалификационные требования КТ-178B). Стандартом предусмотрено пять уровней серьезности отказа, и для каждого из них определен набор требований к программному обеспечению, которые должны гарантировать работоспособность всей системы в целом при возникновении отказов данного уровня серьезности. До тех пор пока все жесткие требования этого стандарта не будут выполнены, вычислительные системы, влияющие на безопасность, никогда не поднимутся в воздух. Соответствующие стандарты наверняка должны быть и для медицинского оборудования.
так же в этом стандарте есть требования к возможности выяснить, кто и почему написал какую строчку кода и как она менялась. Чтобы если уж сажать, то хотя бы всех ответственных лиц выяснить (несколько больше инфы, чем git blame)
У Томми сдох один из чипов, при чем тут ПО?
А мне кажется, что это вовсе и не особенность, а запрограммированная возможность корректирования курса без отключения автопилота с защитой от случайных «нажатий». В любом случае, зачем крутить штурвал, если работает автопилот? Нормальное поведение, я полагаю.
Отключение автопилота при воздействии на органы управления — нормальное поведение. И на ЖД автоведение тоже отключается автоматически, если что-либо тронешь.
Жаль не найду уже линк, но где-то проскакивала примерная статистика смертей из-за ошибок в ПО кардиостимуляторов. И главное, никто проверяет официально это ПО, кроме самих производителей.
так что ответ «Да», но для специфических областей применения, таких как медицина, авиация и т.д.
Я думаю, что судить надо не разработчика, а руководителя за неправильный цикл разработки. Очень часто на программеров наваливают так, что им код писать некогда, не то что тестировтаь.
UFO just landed and posted this here
Вот я о чём всегда и говорю, так и создают подобное ПО от которого одни проблемы. Нужно иметь хоть немного профессионализма(можно назвать это и совестью) и делать больше чем написано в ТЗ основываясь на своём опыте, чтобы потом не пришли и не сказали: «у нас вот тут всё не работает, потому, что мы не учли это в ТЗ», а подобные конторки потом язвя так «сейчас составим смету на доработки». Профессионалы на перёд должны знать что и где может потом не работать.
UFO just landed and posted this here
Мой опыт мне говорит об обратном. Последствия как раз, когда люди потом благодарственные письма пишут «мы вот даже и подумать не могли как будет _это_ удобно, а вы нам _это_ сделали, большое вам за это спасибо», а если вы про сроки, не работайте с теме заказчиками, которые вас в чём-то не устраивают, плохие заказчики пусть ищут плохих исполнителей, а хороших оставляйте себе.
UFO just landed and posted this here
Я говорю о команде от руководителей до исполнителей, каждая функция должна быть согласована и оправдана её реализация как по срокам исполнения, так и необходимости. А инициатива в дружном и слаженом коллективе может исходить от кого угодно хоть просто знакомый зашёл и говорит, а почему не сделать вот так это же удобнее, все собрались, обсудили и решили что да, так будет удобнее, согласовали с представителем заказчика и сделали.
UFO just landed and posted this here
Так у нас и идёт речь про то, чего нет в ТЗ, но хорошо когда исполнитель сам проявляет инициативу и хочет сделать лучше, чем написано в ТЗ. Так получается по жизни, что ТЗ часто пишут люди у которых опыта меньше, чем у исполнителей. Думаю дальше не стоит оффтопить, мы пришли к общему знаменателю :)
UFO just landed and posted this here
Частично, саму прошивку, где наиболее значимая работа не делал, но делал управление всем этим оборудованием. Весь алгоритм работы, считывание данных с датчиков и анализ общего состояния системы, автоматическое и ручное удалённое управление. Но есть один нюанс, в моём проекте никакого вреда здоровью в принципе не могло быть, людей там просто рядом нет.
UFO just landed and posted this here
Этот профи простой кодер, у которого в мозге отсутствует мыслительная часть. Он робот. А профессионал если заметит неточность, то обязательно сообщит.
Или имелось ввиду компанию разработчика целиком? А то с просони сначала написал, потом подумал))
Зачем мелочится, в проге недостаточно проработан фактор «идиота»: составителей ТЗ, менеджеров, разработчиков, тестировщиков, сертификационные комиссии, кто-там ещё бывает — всех на удобрение!

Я надеюсь, для родственников «виновника» уголовку не предложишь.
Ответственность должны нести заказчики. Те, кто принимают работу, не глядя — в конце концов, им виднее, какие должны быть особенности у ПО под те или иные задачи, они пишут ТЗ и им отвечать за то, что они в нём не предусмотрели, и за то, что они не протестировали, когда ставили подпись под актом приёмки.

Стоит ведь чуть-чуть подумать, перед тем, как бежать постить очередной опрос на Хабре, и вопрос снимется сам собой. «Стоит ли судить рабочего ижевского завода за то, что тот отлил пулю, которой убили человека.»
Рабочего сделавшего ПТУР по своей прихоти переключающаяся из автоматического режима — на ведение по лучу. Нигде не документировавшего это — т.е стрелок об этом не знает. Надо сажать, ибо тот факт что оператор мог понять что его луч опять ведет ракету на цель не оправдание. Это если было никем не заказано и нигде не описано — в противном случае он не виновен. Вообще в России многие программирование считают творческой профессией — а оно разное — есть и творчество ( но это обычно право и обязанность архитекта ) но к примеру кодирование это ремесло ( да высококвалифицированное но ремесло ) и не надо по своему личному ощущению полезности функционала добавлять или модифицировать функции описанные в тз.
Что значит разработчика? Конкретного программиста или компанию?
Программиста — нет.

Если проект несет вред, то наказывать надо ответственных за проект, как со стороны разработчика, так и со стороны тех, кто осуществляет приемку. По аналогии со строительством. Вспомните, аквапарк обрушился — посадили архитектора, за то что он не осуществлял надзор за строительством, хотя был обязан.
Если считать исполнителей ответственными за последствия использования продукта, то всех рабочих АвтоВАЗа надо расстрелять прямо на рабочем месте.
UFO just landed and posted this here
UFO just landed and posted this here
Рабочие АвтоВАЗа виноваты в качестве продукции.

* молчание *

Из вас выйдет толковый руководитель!
Все зависит от уровня проработки документации, цикла разработки и тестов. Делать стрелочника из программиста наверно неправильно — должен быть комплексный подход к приемке программ.
А давайте посадим производителей оружия за то, что они производят машины убийства. Или даже лучше — давайте посадим педагогов, учителей и родителей тех детей (неважно, сколько последним лет), которые выросли в убийц. Мы же не только исполнителей преступления сажаем, но и соучасников, а те, кто участвовал в развитии личности убийцы (пусть даже и не специально — не думаю, что программисты специально выделывают easter egg'и для геноцида), суть есть соучасники преступления.

Если программист выполнил ТЗ, а клиент не умеет пользоваться продуктом — вина клиента. Если программист не выполнил ТЗ, а клиент принял такой продукт — вина клиента, потому что договор превыше каких-то там эмоциональных соображений о справедливости во всем мире.
*Соучастники, конечно же. Прошу прощения.
Сложный вопрос.
Кроме ПО отказать может и сама техника и по этой причине тоже гибнут люди.
Если заглянуть в книжечку к процессорам (сейчас не знаю, под рукой нет, но лет 5 назад точно это было), то можно увидеть, что процессоры Intel Celeron не рекомендуется использовать в медицинском оборудовании и что при отказе оборудования по вине процессора — производитель ответственности не несет.
Вполне возможно такой пункт станет вскоре повсеместным, если найдутся судебные прецеденты по уголовной ответственности за причинение вреда.
По приблизительной оценке качественно разработанное программное обеспечение имеет около 10 ошибок на тысячу строк кода, а очень качественное – от 1 до 3

Даже в ПО космической техники допускается одна ошибка на 10 000 строк кода.

Ошибки неизбежны. Не допускает ошибок только тот, кто ничего не делает. Поэтому чем больше пишем для людей и чем сложнее программы — тем больше вероятность ошибки с летальным исходом. Человека пока в программировании не заменишь.
Увы.
Сколько раз в даташитах видел: «этот компонент не предназначен для использования в медицине и т.д.»
Самый разумный ответ.
Даже умысел в том понимании, что разработчик знал об ошибке, которая может привести и привела к трагическим последствиям и намеренно скрыл этот косяк.
Так это по-моему единственное понимание умысла, законом-то рассматривается умысел конкретно на убийство и вред здоровью, если был умысел убить, то очевидно что утюг брошенный в окно брошен туда специально. А если умысла не было, то мало толку знать на счёт бросившего — просто он дурак или дурак с феерической координацией, что утюги из его рук улетают в окно, в любом случае это убийство по неосторожности.
Неверно говорите. Можно неучесть ветровую нагрузку при расчёте крана и он упадёт при летних ветрах (что происходит каждый год). Умысла не было, об ошибке не знал, ничего не скрывал.
Но ответственность (вплоть до уголовной) лежит на том, кто подписывал итоговые чертежи и рпз.
А откуда разработчик знал что и как должно работать при включении/отключении автопилота? Ему скорее всего дали ТЗ, где об этом не было ни слова.
Уголовная ответсвенность не может быть условием договора. Материальная — да. Уголовная — нет. Приедут компетентные органы и разберутся кого сажать.
А. Н. Толстой в романе «Пётр Первый» оставил такую характеристику палача Емельяна Свежева:

— На торговых казнях у столба он мог бить с пощадой, но если бил без пощады, — пятнадцатым ударом пересекал человека до станового хребта.

(Конец цитаты.)

Теперь представим, что в некотором государстве ввели за небольшие проступки публичную порку (вместо отсидки — дабы не погружать человека в уголовную среду), но так как злоумышление палача легко может превратить порку в казнь, то палачами делают специализированных роботов.

Кто виноват, если робот-палач убьёт человека у позорного столба?

Робот — это механизм; стало быть, виноват либо программист, либо производитель «железа», либо наладчик.
У нас имеется интересная тенденция перекладывать вину до тех пор, пока не появится козел отпущения, которого можно будет наказать. Робот — механизм, его не накажешь. А вот тех, кто его сделал, наказать можно. А человек — суть есть тот же механизм, только во много раз более сложный. У него так много паттернов поведения, что некоторые уже отчаялись найти закономерности и объявили человека существом выше обычных систем, не подчиняющимся никаким правилам, а значит, не механизмом (магией, вестимо — как же еще объяснить работу того, о чем мы не знаем, как оно работает?).

С другой стороны, на самом деле нам нужно не наказать кого-то, а пресечь подобные действия в будущем (не будем путать цель и способы ее достижения). Сбойного робота, безусловно, убираем с эксплуатации и чиним (или выкидываем). А вот что дальше делать? Действительно, либо робота закоротило из-за каких-то неизвестных на то время причин (а наказывать за то, чего предположить было практически невозможно, я не считаю адекватным, ибо опыта такое наказание практически не добавит (ну, только конкретный случай), а вот страх ошибки усилит (и мы можем получить неудачника, который боится что-либо делать)), либо кто-то из персонала недостаточно хорошо проверил соответствие изделия документам (а тут уже в ход идет договор — если нигде не прописано, кто за эту ситуацию отвечает, то какое мы имеем право выбирать случайного человека (а с юридической точки зрения оно именно так и выглядит) и называть его верблюдом?).

Короче говоря, расчет, холодный расчет, и ничего более. Потешить свое самолюбие, почувствовать себя сильным, выдвигая обвинительный приговор — всегда пожалуйста, но не в ущерб другим делам.

P.S. Все вышесказанное — сугубо мои мысли, и я не переходил на личности.
Врачей, которые проводили осмотр преступника. А проводить осмотр будут в любом случае, дабы человек не умер. Если умер, то при прочих невиновных (если робот был исправлен), виноваты будут врачи
Почитал комменты и вижу, что 99% немного не в курсе разработки более-менее серьёзного ПО…

Проблема современного программирования в том, что программист — специальность довольно УЗКАЯ, в том смысле, что если программирование он знает превосходно, устройства — отлично, какие-нибудь андроиды-роботов-электронику — хорошо, то вот что-то ТАКОЕ, что его напрямую не касается, — с трудом!

Поясняю: откуда ПРОГРАММИСТ может разбираться в самолётах, если он не пилот? Как он может узнать какие-то особенности работы медицинского оборудования и т.д. и т.п.?

В итоге имеем что? Вот пишет компания автопилот самолёта. Программеру дали ТЗ. Он, если «ремесленник», то пишет «в лоб» по ТЗ: не сказано про то, что нужен звуковой сигнал при переходе с автопилота? Значит не сделал! С его точки зрения ЭТО — НЕ НЕШТАТНАЯ СИТУАЦИЯ!!! Он просто не в курсе, что за штурвал могут посадить ребёнка, который будет дёргать руль до отключения автопилота!
Хороший программер — требует для непрофильных ему работ консультанта-специалиста, с которым советуется и который периодически тестит ПО на эргономику с точки зрения конечного пользователя. И тот уже объясняет ему моменты, что при отключении автопилота надо предупреждать, что для вот этих лекарств надо двойной контроль сделать и период ввода не менее… часов, и т.д. и т.п.!

Далее у нас что?
Далее — приёмка!
Сажают за эту программу спеца, который долго и упорно гоняет её на «нежданчики». В идеале — для опасных вещей — потестить с толпой народа — от пилота-аса до школоты, от нейрохирурга до уборщицы! Т.к. как показывает практика, предусмотреть ВСЁ — нереально! Ты можешь быть как угодно уверен в коде, но потом школьник выводит автопилот из строя, вырисовав штурвалом IDDQD и т.д. и т.п.!

Т.е., как минимум начинаем с самой верхушки:
1. Были до того при эксплуатации отзывы пилотов на тему доработки фатального недочёта в ПО с отключением автопилота без предупреждения?
2. Были-ли при тесте выявлены эти недочёты?
3. Был-ли консультант при создании ПО?
4. Довели-ли до программиста эти требования и сняли-ли с эксплуатации самолёты до доработки ПО?
Ну и если таки программиста уведомили, что доработать надо и он на это забил болт — это да, это его вина!

А теперь что надо для того, что-бы этого избегать?
Как минимум — создание в ВУЗах по специальностям «повар», «пилот», «врач» и т.д. факультетов для подготовки специалистов «повар-программист», «пилот-программист», «врач-программист» и т.д.! Хотя-бы в качестве курсов повышения квалификации как в одну сторону, так и в другую!

Почему в ВУЗах есть специальность программист-робототехник, но нет программистов-врачей?
Да, роботов в медицине пока мало, но… На данный момент разработка ПО для медиков идёт силами редких врачей, изучавших программирование факультативно и программистов, имеющих навыки в медицине!

Ранее при подготовке разработчиков самолётов давалось всё, что им было необходимо на тот момент. Программировать было нечего и разработку ПО отдали на откуп «сторонним» спецам.
Врачам программирование было не нужно, в итоге разработку ПО отдали «сторонникам».
И т.д. и т.п.!

И потом в медицинский идут блондинки, которые в компах рубят на уровне «включить-поиграть в косынку, выключить»!!! Даже если ввести там программирование как специальность — они будут учиться «для галочки»!

Так что, ИМХО, но ответственность на программисте лежит только при умышленной бякости в ПО или если у него в дипломе написано «программист-пилот», «программист-хирург» и т.п., а он допустил ляп, который специалист в профессии пилота или хирурга допустить ну уж СОВСЕМ никак не мог!
Уголовная ответственность не может зависеть от деталей контракта
Если это связано с нашим законодательством, то я, к сожалению, не знаком с юридической стороной данного вопроса. Если же нет (т.е. в законах нет запрета оговаривать условия ответственности в договоре), то почему не может?
уголовное право (criminal law) ограждает от общественной опасности, призвано убрать угрозу государству, обществу, устоям, личности
нарушение контракта — вопрос гражданского кодекса (civil law)

в одном случае совершается преступление (crime), в другом правонарушение (offence)

разные суды, разные принципы, разные цели, разные законы… все разное, в общем… так во всех странах…

по теме — описано преступление, дальше вопросы вины и умысла
Я не до конца понимаю нить нашего разговора. Есть контракт на разработку инструмента. Есть исполнитель контракта, который его нарушил. Есть приемщик, который все-таки закрыл контракт (т.е. признал, что он выполнен в полном объеме). Есть некоторое неприятное событие, связанное с потерей жизни/здоровья, которое возникло из-за того, что исполнитель все-таки накосячил. Мы пытаемся выяснить (если не брать во внимание мой комментарий выше), кто должен быть наказан. Я предлагаю внести в контракт конкретность, например, в виде пункта «В случае возникновения угрозы жизни или здоровью, связанной со сбоем продукта, ответственность возлагается на исполнителя».

То, что правонарушение отличается от преступления, я знаю, спасибо. Меня интересует конкретный случай, где правонарушение повлекло за собой преступление, и способы его решения. Конкретно — возможность внесения в договор пункта, описанного выше, в том числе и законодательная поддержка.
Т.е. я пытаюсь выяснить, чем конкретно будут руководствоваться соответствующие органы при вынесении обвинительного приговора, и как можно «упростить» их работу путем введения конкретных условий, чтобы не вышло ситуации «телега родила теленка» (что-то произошло, а информации для адекватного вынесения приговора попросту нет, и судьи будут руководствоваться какими-то своими домыслами вместо объективной информации).
Такой пункт в контракте будет заведомо ничтожен. Уголовную ответственность договором не переложить. Даже если разработчик намеренно внёс опасную функциональность ( voltage = (fullname == "Иванов Иван Иванович") ? 220 : 1; ), то, имхо, уголовную ответственность нести будет не только он, но и тот, кто программу до людей допустил, кто у него программу принимал. А уж если ненамеренно сделал ошибку…

Да и гражданскую далеко не всегда будет нести разработчик — прежде всего спросят с продавца/поставщика услуг (если явно его договором с потребителем или законом не предусмотрено иного), а уж он может попытаться взыскать то, что с него взыскали, плюс ущерб деловой репутации и т. п., с разработчика. И то, при наличии акта сдачи-приемки, это будет проблематично.

А уж если товар/услуга подлежат обязательной сертификации на соответствие стандартам, нормам, правилам и т. п., деятельность подлежит лицензированию и т. д., то ответственность вообще никто нести не будет, просто перепишут стандарты («СНиПы (строительные нормы и правила) написаны кровью» — есть такая поговорка у строителей), если не будет доказано, что не соответствовала. А даже если будет, то ответственность только на конкретного, например, бетонщика, переложить не получится — есть люди, которые должны его работу контролировать. Бетонщик мог просто не понимать, что изменение состава смеси, может повлечь опасность для жизни и здоровья, а вот инженер это должен понимать, минимум потому что у него есть диплом.
В том-то и оно, что меня интересуют не мнения и мысли, а буква закона — возможно ли такое де юре или нет?
Невозможно. Вина лежит на конкретных людях независимо от их отношений между собой.
Статья 3. Принцип законности

1. Преступность деяния, а также его наказуемость и иные уголовно-правовые последствия определяются только настоящим Кодексом.
На самом деле в некоторых случаях может. Недавно погиб боксер, однако тот кто нанес оказавшиеся смертельными ударами не понесет наказания, т.к. все боксеры подписывают перед выходом на ринг документ буквально «в моей смерти прошу никого не винить».

Если бы не это, то боксер который нанес удары, привлекался бы к ответственности по статье «причинение смерти по неосторожности», или «нанесение тел. повр., повлекших смерть потерпевшего».

Есть конечно рамки определенные, например соревнования цель которых заведомо убийство или калечение соперника не разрешат (иначе бы были легальны всякие подпольные бойцовские тотализаторы и гладиаторы).
Не поэтому.
Потому что правила не были нарушены.
Если боксер убьет другого на ринге из пистолета, применив приемы за рамками бокса, просто не подчинившись сигналу рефери — посадят как миленького.
Я об этом и говорю в части «рамок» :)
Я про бокс. Подписывает он, потому что в некоторых странах кроме уголовного иска, убийство может быть поводом для гражданского иска тоже, и вот там эта подпись имеет значение (привет, США).
Аналогично, если водитель едет на 100% по правилам ПДД, и ему бросается под колеса пешеход — и погибает, водителя не посадят (да, тут много но, в частности то что у нас многие нарушают скоростной режим постоянно, и поэтому 100% ПДД нет)
Но тем не менее. По правилам — нет правонарушения — нет вины (!!!) — нет состава преступления.
UFO just landed and posted this here
Думаю многие знают как наши компании экономят на тестировщиках и вообще качестве кода, лишь бы сделать побыстрее и получить больше прибыли за меньшее время. Программист — исполнитель, если судить, то составивших согласовавших ТЗ, принимающих работу, тестировщиков, и в таком духе. Хотя наверное всем было бы проще посадить рядового программиста без лишнего шума, но сути и причины проблемы это бы не исправило, так как часто дело в самой системе разработки, где допускаются компромиссные решение (например пропустить пару этапов разработки) при их недопустимости.
Здесь вопросов больше к заказчику. Часто, когда в смету и сроки закладываешь тестирование и расходы на него, заказчик говорит, что ему все нужно вчера, увеличивать сроки и оплачивать тестирование он не будет, пишите, типа, без ошибок. В итоге, имеем, что имеем.
Да конечно вообще абсурд, это система в целом виновата, а кого судить тестировщика или разработчика, еще может быть архитектора системы? а может быть управленца который нанял и оного и другого. А может быть все дело в уборщике который проходил рядом? Да ну нафиг, надо всех сразу же в тюрьму посадить, ибо они все были в сговоре через контракт
Как раз и имел ввиду что разработчик всего лишь винтик, простой исполнитель.
Согласен, заказчики очень часто бараны еще те, они входят в категорию «составивших ТЗ». Вот как раз в этом случае и нужно судить заказчика, если подрядчик оповестил что требуется доработка и тестирование (того что они как бы хотели за пределами ТЗ, в дополнение), но заказчик положил болт лишь бы в сроки успеть и после чего последовали человеческие жертвы. Сами знаете как бывает, распилили бюджет на внедрение какой-либо автоматизации чего угодно, четкие требования поставить никто из заказчиков не способен, никто ни за что не отвечает, так напишут что-то примерное, разработчики сделали эти «примерные» требования, а потом пришел час пик и они чего-то зашевелились мол а если будут проверять, а показать толком нечего, и понеслась… В общем как обычно все зло от менеджеров.
Ну, в случае падения самолета виновата компания, а не халатность разработчиков, халатных разработчиков надо увольнять, надо судить уголовно надо руководство и только руководство.

Вижу что больше всего за оговорено, но люди личо я бы под такие гарантии в 10 раз больше зарплаты затребовал, допустим имею зарплату 2к баксов, то есть за 20 тысч в месяц я готов себя под уголовку за халатность подставить.
А если ты как частное лицо написал программу по управлению своим автомобилем и он задавил наулице человека тогда ты должен сеть. В общем я свою логику изложил. Юр. лицо такой же объект в жизни как и физ лицо, как и дерево, все это объекты и объект в данному случае компания.
Если ты купил автомобиль с глючным ПО и из-за этого задавил на улице человека, не нарушавшего ПДД, то по нынешним законам сядешь ты.
Гипотетически: Я так понимаю, что если ты не управлял автомобилем, а сидел на заднем сидении (автомобили будущего), то если он задавил человека — это вина компании

Если управлял ты, то даже если ПО сглючило и ты сбил, то виноват ты так как ПО прошло твою модерацию, то есть ты принял решение ездить на этом авто, и ты виноват. В частности пилот хотя бы морально, может отказаться брат ответственность за гибель 100 человек, если сядет за заведомо неисправный авиалайнер (естественно все шире, я утрирую).

Еще раз замечаю, ответственность перетекает от одному к другому после модерации. Именно из за этого возвращаясь к начальной теме — виновата верхушка, так последняя инстанция передачи ответственности.
А годать, кто виноват, то оказывается виноват «эффект бабочки».
Гипотетическая ситуация: Компания А выпускает полностью автономный автомобиль, который по умолчанию сам ездит. Покупатель Б проводит тест-драйв в 2-3 часа, сидя на нём на заднем сидении, покупает авто, приезжает домой. Вор В ворует машину ночью, хочет привезти авто к себе в гараж, но сам водить не умеет и пользуется автопилотом. ПО сглючивает, и автомобиль насмерть сбивает гражданина Г.

Кто виноват в смерти? Покупатель отмодерировал. Вор не водил.
Я даже добавлю, чтобы было веселее: покупатель расписался при покупке, что в глюках ПО виноват он. Так что теперь вообще никто не виновен:
А сложили с себя ответственность, ибо продали под контракт.
Б был не за рулём и вообще не давал права на управление В.
В ничего не подписывал и не знал, что ПО может сглюкнуть.

Но это не чрезвычайная ситуация и не форс-мажор, виноват именно автомобиль, потому что датчик не засёк человека, переходящего зебру. Значит виновные есть
> покупатель расписался при покупке, что в глюках ПО виноват он

> Б был не за рулём и вообще не давал права на управление В

Мне кажется, что одно другому не мешает. Раз покупатель на бумаге виноват в глюках ПО, то виноват именно он, а не водитель. Нефиг подписывать такие условия (^_^)
Б не давал В права на управление, Б не давал команды ехать. Б невиновен в любом случае. Если в вашу квартиру проберётся вор, разломает сейф, заберёт оттуда пистолет и убьёт кого-нибудь из него, вы же не будете в этом виноваты. Транспортное средство было украдено, значит выходит из-под контроля Б.
Т.е. вы утверждаете, что в наших законах есть что-то, согласно чему пункт договора «в ошибках программного обеспечения виноват Покупатель» (именно в такой абсолютной формулировке и именно без других пунктов вроде «кроме случаев, когда Продукт был украден etc») становится ничтожным в случае, если покупатель не пользуется купленным автомобилем?
Более того, именно в такой формулировке он вообще ничтожен в любом случае. Понятие «вины» чётко определено в УК.
да нефиг подписывать, совершенно верно. Просто всем лень читать лицензионное соглашение верно? а потом коллекторские агенства звонят и говорят ты проговорил на пол ляма заграницей, отвечай за базар )))
Моё личное мнение — виноваты А. Что бы они там с себя не слагали в контрактах, они выпустили автомобиль. Значит уверены, что он работает. И если автомобиль никто не ломал (то есть не доводил автопилот до сумасшествия или портил датчики), то ответственность всё равно на компании.
Сидеть кто должен? Президент А? Кодер? Тестировщик? Начальник отдела разработки?
Мое мнение президент, исключительно верхушка — по принципу больше зарабатываешь — больше ответственность. Мне кажется справедливо.
ну либо тот, кто от президента берет какие-то полномочия, собственно пункт номер 2 в ответе, просто таких мало будет, но не каждого разработчика вподряд.
А мое мнение — каждый случай нужно разбирать отдельно. Да, начиная с верхушки, но идти вниз, если видно, что на данном уровне все, требуемые законом, стандартами, обычаями делового оборота и просто здравым смыслом, меры предосторожности были приняты. Кто должен был что-то сделать, но не сделал, тот и виноват.
такое мнение возможно и верно, но тут опять вся человеческая подноготная вылезает — корысть и подставы, в результате сядет какой-нибудь подставленный программист. (((
Не должен программист сесть при любом раскладе, по-моему. Вернее должен при наличии явного умысла на, в частности, нарушение ТЗ (от сознательно вредоносного кода — бэкдоры всякие, трояны — до «хотел как лучше»). Но и в этой ситуации не он один, а, прежде всего, с тем, кто принимал его работу.
Пока в законах таких ситуаций не предусмотрено явно, виноват будет В — он отдал команду на движение. Убийство по легкомыслию или неосторожности. Б может быть привлечен к гражданской ответственности, как владелец средства повышенной опасности. А может быть привлечена к гражданской ответственности, как продавшая некачественный товар.
Вор — это отдельная правовая ситуация, не обижайтесь, но еще можно подумать о глобальных проблемах человечества. Я за то что бы рассматривать каждую ситуацию отдельно, как класс, а комбинировать (выкидывать интерфейсы наружу) можно только тогда, когда это становится обоснованно для коммуникации 2-х классов.

Поэтому вопрос о воровстве, я не могу прокомментировать в данной теме.
«но люди личо я бы под такие гарантии в 10 раз больше зарплаты затребовал»
Это как бы подразумевалось. Также, считаю, что система не должна сдаваться в эксплуатацию, пока каждый из разработчиков не подпишет акт, что он все проверил и готов нести ответственность за свой код.

Это сильно удорожит разработку и увеличит сроки, но если заказчик хочет гарантий, пусть будет готов за них платить.
Да, то есть в таком случае я могу слать заказчика на три буквы, пока я не доделаю то, что делаю, либо увольняйте с хорошим отступным естественно (как защита от давления). Этак в годовую зарплату. Либо идите гастербайтеров в программисты нанимайте.
Это уже детали. Но если я, в случае ошибок, буду нести уголовную ответственность, то я поставлю свою подпись только если буду уверен, что ошибок нет. Хоть, уверенным на 100% все равно не будешь.

Читал про разработку по для спутников в NASA. Там люди годами тестированием занимаются и все равно ошибки случаются.
Уголовная ответственность для разработчиков в данном случае (автопилот, рентген) это злое зло. Как бы не хотелось отомстить им «глаз за глаз» это тупик, путь к средневековью. Административная ответственность для данных двух случаев адекватна.

Дальше, кто-то же принимал эти системы и кто-то авторизовал их применение? Вот им в случае с рентген аппаратом уголовка на год (максимум два) самое то. А в случае с автопилотом вероятнее всего нет — надо проводить экспертизу на предмет находимости этого бага.

ПС: злоупотребление уголовными наказаними приводит к усилению уголовной суб-культуры как в СССР и США.
UFO just landed and posted this here
Я считаю, что каждый случай нужно рассматривать отдельно. Да и что считать ошибкой? Расхождение с требованиями? А если требования составлены плохо, в этом тоже программист виноват? Или, может нужно винить не программиста, который не тестировал код, а компанию, в которой этот код написан? Нет здесь однозначного ответа. Нужно каждый раз определять виновного и наказывать его, в этом нет сомнений.
Допустим, инженер спроектировал мост, а потом мост рухнул. Что делают с инженером? Это ведь в принципе такая же ситуация.
А кто принимает работу? Ведь спроектировал — мост здал мост, это не все так просто, конструкция должна пройти процедуру приемки/здачи в экспуатацю.

В так и у нас: если заказчик неадекват и что-то проглядел — пусть сам разгребает!
Ну, случаи с обрушением мостов и зданий с человеческими жертвами из-за ошибок инженеров и архитекторов уже были и достаточно много. Как в тех случаях поступали с инженерами?
С программистами ситуация в принципе, та же, и действовать нужно так же.
Ничего не знаю! Когда мост построен работу принимает спец-комисия, в которой разработчики моста если есть то в меньшинстве — она ставит подписи в акте приемки и это определяет годен/не годен. Тоесть в случае проишествия поднимут на рожон в первую очередь комиссию (ну по закону).
UFO just landed and posted this here
Если СНиПы не нарушены, то ничего. Нервы, конечно, потреплют, но виноватым не сочтут.
Только если вред нанесен умышленно.
Для таких целей, на мой взгляд, должна быть определена специальная процедура, соответственно ей определять на каком именно этапе была допущена ошибка и выявлять ответственных за нее. Ибо вина может быть и не только разработчика (программиста).
Sign up to leave a comment.

Articles