Как лучше описать процесс «Idiot Proofing» в программном обеспечении [закрыто]

13

Для меня Idiot Proofing просто означает, что пользователь не сможет сломать часть программного обеспечения, даже если он попытается. Например, если значение читается из текстового поля и преобразуется в двойное, если базовое программное обеспечение защищено от дурака, оно не сломается, если пользователь введет не двойное значение.

Недавно я написал график разработки, и один из элементов был назван «Idiot proof UI». Люди, которым я создаю это программное обеспечение, в шутку симулировали оскорбление этого термина, но я вижу, где этот термин действительно расстроит людей.

Как лучше сказать это?

sooprise
источник
23
Назовите это, ID-10T Проверка
Джаррод Неттлс
2
Lol, я понял 1337, когда я гуглил ID-10T. мне не удастся ...
неожиданность
13
Этот вопрос напоминает мне одну из моих любимых цитат: «Программирование сегодня - это гонка между инженерами-программистами, стремящимися создать большие и лучшие программы, защищающие от идиотов, и Вселенной, пытающейся производить больших и лучших идиотов. Пока что Вселенная побеждает. " ~ Рич Кук
KallDrexx
3
как насчет базовой инженерии?
JK.
4
«Ничто не может быть защищено от дурака, потому что дураки так чертовски гениальны».
М.Самир

Ответы:

27

Если вы включаете в качестве элемента расписания «UIDIOTI UI», то вы просто пытаетесь повысить качество своего программного обеспечения. Любая хорошо спроектированная система будет проверять свои входные данные и давать четкие указания пользователям как само собой разумеющееся, это не то, что включается в расписание как отдельный элемент (который затем подлежит удалению, когда наступает неизбежный кризис).

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

грушевый сидр
источник
2
+1. Если вы пытаетесь добавить какую-либо проверку ввода после факта, вы уже в значительной степени проиграли. Лучше иметь точку зрения в спецификации: «программное обеспечение должно корректно обрабатывать некорректные входные данные в любом месте». Как именно «изящно» обрабатывать неверный ввод, во многом зависит от того, что программное обеспечение делает в данный момент. Для очень простой UIs (думаю , возможно, ATM), это может быть даже можно сделать недействительные входы невозможно .
CVn
14
+1. Защита от идиотов не является задачей. Идиотостойкость - это следствие хорошего дизайна.
С.Лотт
4
Защита от идиотов - это непрерывный процесс, потому что вселенная продолжает производить все более изобретательных идиотов
Стивен А. Лоу
Хотя это может звучать неправильно и избыточно, примите во внимание, что как дизайнеры интерфейсов, так и бета-тестеры знали чертежи и общий дизайн программного обеспечения, и могут просто не осознавать (не замечать), что то, что для них кажется совершенно очевидным, на самом деле полностью сбивает с толку обычного пользователя. «Тестирование и отладка решений по дизайну пользовательского интерфейса» - это то, что можно назвать. Проверка ввода - это одно, чтобы пользователь понимал, что следует вводить, а где - другое.
SF.
Для всех пользователей: ... что бы вы ни делали, вы всегда что-то забудете. Программное обеспечение настолько сложное, что команда, делающая все «идеально» в первом кадре, практически недостижима. Вот почему тестирование необходимо. Чтобы обнаружить недостатки и упущения, или даже вещи, о которых никто не думал. Такой «защищенный от идиота пользовательский интерфейс» - это именно то, что требуется.
Дагналии
10

Проверка ввода пользователя, я бы подумал, будет профессиональным термином. Я не вижу ничего плохого в том, чтобы проверять идиотов, если они используются во внутренних документах.

Бен Гейл
источник
3
Вы были у меня на "проверка ввода пользователя". Защита от идиотов - непрофессиональный термин, независимо от того, где он используется.
Роберт Харви
2
Что бы вы ни делали, не пишите это в письменном виде.
JeffO
6

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

Robustification является еще одним хорошим словом для этого - вы делаете код устойчивым к тем задачам, которые бросают на него реальные клиенты.

Оба слова звучат круто и по-промышленному, не обвиняйте ни пользователей, ни программистов, а поймите все правильно.


Кстати, вот старый талисман Metrowerks Арнольд, парень, который помогал нам программистам Mac укреплять и грабить наш код с помощью печи для термообработки, кузницы, наковальни и маленькой кувалды:

Боб Мерфи
источник
Закалка обычно означает отказоустойчивость базового оборудования или устойчивость к гамма-излучению ;-) Надежность может многое значить
Стивен А. Лоу
@ Стивен: Ну да. Но это для общения с, по-видимому, нетехнической аудиторией, и вопрос на самом деле в том, как «раскрутить» задачу, чтобы она была приятной для этих людей.
Боб Мерфи
это имеет смысл; нетехническая аудитория, вероятно, видела телевизионную рекламу «закаленных» ноутбуков. Поэтому они подумают, что это нормально - бросить свое программное обеспечение на 3 фута на бетон ;-)
Стивен А. Лоу
@Steven: Да, и если они увидят последний рекламный ролик для ноутбуков Toshiba, они также поймут, что, если они не дадут вам время и ресурсы, чтобы укрепить программное обеспечение, это приведет к Апокалипсису Зомби. B ^)
Боб Мерфи
4

Оборонительное программирование

Это то, чему меня учили. Назад, когда мы должны были вырезать наши собственные куски из дерева.

Если вы хотите быть ПК, называйте это «упреждающим» программированием.

Стивен А. Лоу
источник
4

Когда я учился, мы назвали это пуленепробиваемым .

Большинство других эвфемизмов, которые я прочитал, также применимы.

Стивен
источник
3

Как насчет "отказоустойчивой" системы или пользовательского интерфейса?

Винод Р
источник
3

«Защита от идиота» должна состоять из

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

  • тестирование пользовательского интерфейса, чтобы определить, можно ли сломать интерфейс, введя неожиданные значения данных.

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

Роберт Харви
источник
Вы не ответили на вопрос, который был задан.
Роберт Харви
@ Роберт - я думаю, что сделал. Лучший способ сказать «защита от идиотов» - это либо «пересмотреть дизайн, чтобы улучшить удобство использования», либо «проверить, что интерфейс обрабатывает недействительные данные», в зависимости от того, какой смысл «защиты от идиотов» вы имеете в виду.
Джастин Кейв
ОК, это имеет смысл.
Роберт Харви
2

Защита от идиотов включает в себя намного больше, чем простая проверка ввода. Я бы даже не включил такую ​​вещь в свое определение.

Проверка ввода - это процесс, в котором вы дезинфицируете и проверяете пользовательские данные, чтобы исключить недопустимые / бессмысленные значения. Это всегда следует делать с любой информацией, поступающей извне вашей программы, чтобы исключить как очевидные, так и защитить себя от атак (например, атак с использованием SQL-инъекций).

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

Например, rmотклонение команды rm -rf /и закрытие вариантов не имеют ничего общего с проверкой или корректностью. Это совершенно действительная команда. К сожалению, это команда, которая может и может уничтожить все ваши данные со всех ваших дисков в Unix / Linux. Идиот, проверяя это, отклонил бы эту команду и предложил быrm -rf --i-really-mean-this / , или если в интерактивном режиме, иметь пользовательский тип в утвердительном ответе после предупреждения.

Все, что разрушительно для системы, должно быть защищено от идиотов. Все, что может вызвать смущение, также может быть кандидатом (например, «Вы уверены, что хотите отправить это электронное письмо без вложения, даже если вы упомянули одно в своем тексте?», И «Вы уверены, что хотите отправить это электронное письмо на вся компания? ")

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

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

unpythonic
источник
1

«Проверка работоспособности» довольно часто работает довольно хорошо ...

Marlon
источник
3
Для меня «проверка работоспособности» означает то же самое, что и «утверждать»: проверять правильность внутреннего состояния. Не совсем то же самое, что проверка внешнего ввода.
Мейсон Уилер
@ Мейсон, я считаю это проверкой состояния системы во всех точках на предмет правильного ввода, который имеет смысл. Например, проверка того, что дата окончания - после даты начала, в дополнение к проверке ввода мусора и т. Д. Я тоже вижу вашу точку зрения и согласен с вами.
Марлон
1

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

JB King
источник
1

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

Меры безопасности - это не только способ защитить пользователей от внешних кибер-вторжений, но и от самих себя. Мы живем в несовершенном мире с несовершенными пользователями.

user29981
источник
1

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

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

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

многие другие термины, относящиеся к этому (часто завершающемуся) процессу, делают его похожим на этот процесс:

  • подразумевает пользователей (часто менеджмент ;-) тупые
  • трудно достичь
  • имеет небольшой собственный капитал

Связав золото с процессом (металл обычно приравнивается к «стоимости», а не «стоимости»), я увидел, что процесс изменился от затрат к инвестициям в мышление некоторых менеджеров.

Это все равно, что открыто заявить, что пока это не сделано, этот неуклюжий кусок стали еще не является украшением. Но как только это покрыто металлом ... тогда это ценно.

moliad
источник
Я вижу, как этот термин работает для вашей аудитории. Для большинства менеджеров позолота была бы первой вещью, вырезанной из проекта. Другими словами, ненужные детали.
Гилберт Ле Блан
Странно - я вижу термин «золотое покрытие» как означающий, что вы тратите свое время на то, что не дает никаких функциональных улучшений . Обеспечение допустимых входов и т.д. делает предложение функциональное улучшение и поэтому (по моему определению) не золотое покрытие.
ChrisF
Дело в том, что позолота не улучшает внутреннюю часть программного обеспечения. это только улучшает внешний аспект этого. Я использую его, когда нетехнические специалисты участвуют именно потому, что это не относится к определенной части процесса окончания цикла. Люди понимают это так, как только золотое покрытие сделано, это красиво, легко в использовании и имеет добавленную стоимость. это не просто грубая часть программного обеспечения.
Молиада
По моему опыту, позолота обычно используется для описания программного обеспечения, загруженного ненужными функциями , то есть как синоним взлома .
Марк Бут
да, просто провел небольшое исследование и обнаружил, что этот термин иногда используется таким образом в литературе (спасибо за комментарий). Забавно то, что во многих местах, где я работал, в этом смысле защита от идиотов считалась позолотой (на самом деле это зависит от того, какую работу вы выполняете).
Молиада
1

Чаще всего используется в отношении производственных процессов, но я думаю, что действительно хорошо подходит Poka-Yoke :

«[poka yo-ke] - это японский термин, который означает« отказоустойчивость »или« защита от ошибок ».

Первоначально он был описан как baka-yoke, но поскольку это означает «защита от дурака» (или «защита от идиота»), название было изменено на более мягкое пока-иго.

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

Мэтт Вилко
источник
1

Общим термином в крупных магазинах также является обеспечение качества (QA) .

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

moliad
источник
0

Мы называем это проверкой человека. Мы все идиоты.

Уайетт Барнетт
источник