- PVSM.RU - https://www.pvsm.ru -
Думаю, многие слышали о законах роботехники, сформулированных Айзеком Азимовым:
Эти законы являются высокоуровневой моделью поведения каждого «правильного» (по версии Азимова) робота, но на этом их призвание не ограничивается.
В статье я чуть подробнее раскрою смысл этих законов, покажу, как они могут быть применены к сферам, отличным от робототехники, и попытаюсь выработать три закона разработки. Статья не несет прямой практической пользы, я это понимаю, поэтому заранее советую залезать под кат только тем, кому не жалко потрать несколько минут на мои рассуждения и обсудить их со мной в комментариях.
Человечество постоянно находится в процессе поиска, реализации и внедрения новых идей, технологий и инструментов, которые упрощают нашу жизнь и делают ее комфортнее. Речь, как минимум, о роботах, автомобилях, компьютерах, государстве и даже бензопилах. Каждая из этих вещей должна делать жизнь лучше, сохранив при этом то, что было у нас до вещей, — здоровье и, собственно, жизнь. Поэтому Айзек Азимов сформировал законы, которым должен соответствовать любой такой инструмент в каждый момент своего существования, и показал их на примере робототехники.
Если поднять уровень абстракции этих законов, то мы получим такие три пункта:
Пока все достаточно тривиально, но все же простой пример: мы изобретаем бензопилу. Пила должна иметь механизм, который скорее остановит ее работу, чем допустит увечие человека; в остальных случаях она должна пилить дрова, когда человеку будет угодно и не должна ломаться сама по себе, хотя процесс изнашивания в процессе работы допустим.
Чуть интереснее применить эти законы к государству (это пример взят из Википедии):
Все верно, ведь государство – это инструмент, созданный народом, чтобы жизнь была лучше. По крайней мере, так задумывалось.
Программы – это тоже инструменты. Их создают для того, чтобы сделать нашу жизнь лучше: упростить учет, позволить общаться с сотнями друзей из разных уголков мира, узнавать свежие новости… Применять вариант трех законов, описанный выше к таким вещам скучно: большинство из этих вещей не угрожают нашему здоровью (мед. оборудование сейчас не рассматриваем). Можно, конечно, выжать достаточно косвенные вещи:
Эти три закона тривиальны: первый поддерживает мораль разработчика и политика магазина, второй – логичен, а в реализации третьего заинтересованы и сами разработчики.
Так, если все так просто, зачем было базировать это на трех законах? Разработчики должны помнить, что их приложение должно быть безопасным и сделать его таким – их первичная задача. Никаких «Я потрачу время, выделенное на добавление шифрования пароля, на прикольную свистелку» быть не должно.
Хорошо, с тем, какой должна получиться программа мы определились. Теперь посмотрим на наши приоритеты при разработке приложения по ТЗ заказчика. Для этого нам нужно еще сильнее обобщить законы, убрав из них конкретизацию «безопасность». Вот так они звучат теперь (на примере «пользователь использует инструмент»):
Возможно, я недостаточно красиво высказал свою мысль, особенно во втором пункте, поэтому сразу даю ту конкретизацию взаимодействия разработчик-заказчик, которая мне кажется правильной:
То есть, я разрабатываю приложение, периодически делаю предложения по изменению задания с целью улучшения качества приложения. Заказчик согласен – изменяем, нет – делаем как он хочет. И в About оставляю свой email.
Думаю, многие любители фантастики слышали также о Нулевом Законе. Он стоит приоритетнее первого закона и говорит нам, что потребности человечества стоят превыше потребностей одного человека. Пример с бензопилой к этому закону сложно адаптировать, разе что она должна взрываться в руках Leatherface [1]. А вот с точки зрения разработки не все так просто:
Пожалуй, на этом я остановлюсь, ведь мораль статьи проста: «Помни о приоритетах»
Автор: alcsan
Источник [2]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/razrabotka/41830
Ссылки в тексте:
[1] Leatherface: http://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%B6%D0%B0%D0%BD%D0%BE%D0%B5_%D0%BB%D0%B8%D1%86%D0%BE
[2] Источник: http://habrahabr.ru/post/191492/
Нажмите здесь для печати.