Если в спецификации есть недостатки, нужно ли ей следовать?

28

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

Я указал на недостатки и их потенциальные угрозы безопасности, если они будут реализованы в соответствии с планом и предоставлены альтернативы без недостатков, но (вкратце) мне было сказано «делайте это так, как мы указали» клиентом.

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

Ник Орландо
источник
9
Вы указали риски, но указали ли вы на вероятность и (возможно, что более важно) влияние этих рисков на некоторые аспекты их деятельности? Вы уверены, что клиент полностью понимает риски и имеет документацию на этот счет?
Томас Оуэнс
7
В последнее время я вбрасывал это в голову в некоторых своих работах. Если мы проведем такое же сравнение по отношению к мостостроителю, в котором его просят построить мост, на котором нет этих раздражающих, препятствующих опор или которые могут выдержать вес только двух автомобилей, то ради его репутации он скорее всего просто откажусь. Я думаю, что действительно должен наступить момент, когда обязанность инженера / человека отказаться. Разумеется, подавляющее большинство жалоб на дизайн не приближается к риску травмирования / смерти человека.
Katana314
2
@ Katana314 В моем текущем сценарии точно нет риска получить травму или смерть. На этот вопрос определенно легче ответить ... Но я думаю, ты ударился ногтем по голове. Дополнительный поиск привел меня к Кодексу этики ACM , который, кажется, усиливает нашу ответственность за выявление и выявление любых предсказуемых проблем.
Ник Орландо
3
@ TheSoftwareDev Справедливо, но я просто добавлю, что иногда человеческие риски могут быть глубже, чем мы думаем. Угроза безопасности, позволяющая хакеру легко получать информацию о людях и похищать их личность, оставляя их без крова для последующего самоубийства; Недостаток социальной сети, который позволяет сталкеру перехватывать личные сообщения женщины о встрече в ресторане, а затем физически следить и ловить ее; Это немного болезненно думать об этом творчески, но иногда мы можем забыть, насколько далеко могут быть использованы наши проекты.
Katana314
1
@gnat Не совсем дубликат. Связанный вопрос касается общего подхода к этике программного обеспечения, в этом вопросе о том, сколько борьбы должен вынести ОП, прежде чем сказать «больше не моя проблема».
Рат

Ответы:

40

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

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

FrustratedWithFormsDesigner
источник
4
Или личная ответственность ... то есть, если тебя уволят или еще хуже
Дэн Пичелман
5
Нет документа, который клиент или работодатель мог бы подписать, который бы предоставил ФП иммунитет от гражданского иска. Он может, в зависимости от характера своей работы, подпадать под определение и защиту агентских отношений со своей компанией, обеспечивая защиту ответственности, но в отсутствие такой защиты «я только следовал приказам» не является защитой независимо от того, насколько хорошо задокументировано. Истец / обвинение может просто сказать: «Вы могли бы просто уйти; даже если бы кто-то другой сделал это, это было бы сейчас у них на голове, а не у вас».
KeithS
2
Лучшее, что может сделать компания, - это гарантировать покрытие финансовой ответственности ОП, включая судебные и судебные издержки. Компания не может попасть в тюрьму за него, если окажется, что он нарушил закон.
KeithS
1
@BazzPsychoNut: Похоже, что ОП уже пытался указать на риски и объяснить их, и игнорируется. Если они не могут / не хотят просто отказываться выполнять работу, я думаю, что они должны как можно больше прикрывать свою задницу, и им также следует проконсультироваться с адвокатом (который, как я подозреваю, даст им более конкретные советы в данной ситуации, а также расскажет им прикрыть задницу).
FrustratedWithFormsDesigner
1
+1 за след бумаги, а также будьте осторожны, если вы участвуете в развертывании. Хотя это вряд ли произойдет, существует множество законов (например, Закон о защите данных в Великобритании), которые означают, что небрежное обращение с личными данными может стать серьезным преступлением.
Мэтт