Мифический человеко-месяц или как создаются программные системы

ОглавлениеДобавить в закладки К обложке

Глава 17 Новый выстрел «Серебряной пули нет»

У всякой пули — свое предназначение.

ВИЛЬГЕЛЬМ III ОРАНСКИЙ Кто хочет увидеть образец совершенства, Тот мечтает о том, чего никогда не было, нет и не будет.

АЛЕКСАНДР ПОП, «О КРИТИКЕ»

Об оборотнях и прочих мифических ужасах

«Серебряной пули нет: сущность и акциденция в программной инженерии» (глава 16 данной книги) первоначально была заказным докладом для конференции IFIP (Международной федерации по обработки информации) 1986 года в Дублине и была опубликована в ее трудах. [1] Журнал «Computer» перепечатал ее под обложкой в готическом стиле, иллюстрируя кадрами из фильмов, таких как «Вервольф из Лондона», [2] и снабдив боковым полем «Убить вервольфа» с изложением современной легенды о том, что справиться с ним можно только с помощью серебряной пули. До публикации я не знал об иллюстрациях, и для меня было неожиданностью, что серьезная техническая статья была так красочно издана.

Однако редакторы «Computer» знали свое дело и достигли желаемого результата: похоже, что статью прочли многие. Поэтому я подобрал для той главы еще одну картинку с оборотнем — старинное изображение почти забавного создания. Надеюсь, что эта менее яркая картинка окажет такое же полезное действие.

Серебряная пуля все-таки есть — ВОТ ОНА!

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

В то время как «Мифический человеко-месяц» породил частое цитирование и мало споров, статья «Серебряной пули нет» вызвала статьи с опровержениями и письма в редакции журналов, поток которых не прекратился и по сей день. [3] Чаще всего критикуется главное утверждение о том, что волшебного решения нет, и мое ясно выраженное мнение о том, что его и быть не может. Большинство соглашается с основной частью моих аргументов в «СПН», но затем заявляет, что в действительности серебряная пуля для программного зверя существует, и изобрел ее автор. Перечитывая сегодня ранние отклики, не могу не отметить, что патентованные средства, столь энергично предлагавшиеся в 1986 и 1987 годах, не возымели эффекта, на который претендовали.

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

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

Неясное изложение влечет непонимание

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

Второстепенное свойство (accident). В резюме главы 16 я постарался со всей возможной ясностью изложить основные аргументы «СПН». Некоторые, однако, были смущены терминами второстепенное свойство (accident) и несущественный, второстепенный (accidental), которые я использовал в старом употреблении, восходящем к Аристотелю. [4] Под accidental я не имел в виду «случайный» или «относящийся к несчастному случаю», а скорее, «несущественный», «побочный» (incidental) или «принадлежащий» (appurtinent).

Я не хочу порочить роль случайности при разработке программ. Вслед за английским драматургом, автором детективов и теологом Дороти Сэйерс (Dorothy Sayers) я рассматриваю всякую творческую деятельность, как состоящую из: а) формулирования концептуальных конструкций, б) воплощения в реальном материале и в) диалога с пользователем в реальной жизни. [5] Та часть построения программы, которую я назвал сущностью (essence), состоит из умственной работы создания концепутальной конструкции, а та, которую я назвал второстепенной (accident), есть процесс ее воплощения.

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


Логин
Пароль
Запомнить меня