ЛИТЕРАТУРА / КНИГИ

Серебряной пули нет


«Серебряной пули нет» («No Silver Bullet») — широко обсуждавшаяся статья Фредерика Брукса об инженерии программного обеспечения, написанная им в 1986 году. Брукс утверждает, что «ни в одной технологии или в управленческой технике не существует универсального метода, увеличивающего на порядок производительность, надёжность и простоту». Он также утверждает, что «мы не можем ожидать увеличения прибыли в два раза каждые два года» при разработке программного обеспечения, как это происходит с разработкой аппаратного обеспечения.

Брукс подчёркивает разницу между возникающими ненужными сложностями (accidental complexity) и имманентными сложностями (essential complexity) и заявляет, что большинство из того, что разработчики программного обеспечения совершают в настоящее время, — относится к последнему, поэтому исключение всех т. н. ненужных сложностей не приведёт к улучшению ситуации. Брукс делает упор на основные части процесса разработки программного обеспечения. Хотя он настаивает на том, что «серебряной пули» не существует, он считает, что ряд инноваций, направленных на исправление имманентных сложностей, может привести к значительным улучшениям (возможно, более чем в десять раз за десять лет).

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

Аргументация

Очень важно видеть разницу между ненужными и имманентными сложностями. Ненужные сложности относятся к проблемам, которые мы сами создаём и которые могут быть устранены; это, например, детали написания и оптимизации программ на языке ассемблера или задержки из-за пакетной обработки. Имманентные сложности вызваны проблемой, которую предстоит решить; если пользователю нужна программа с 30 функциями, то эти 30 функций чрезвычайно важны, и программа должна качественно выполнять все эти 30 функций.

Брукс утверждает, что мы избавились от ненужной сложности, и в настоящее время программисты проводят большую часть времени разрешая имманентные сложности. Единственным технологическим улучшением, которое привело к значительным подвижкам в области, касающейся ненужной сложности, было изобретение высокоуровневых языков программирования, например, популярного некогда Фортрана. Продумываются улучшения и для таких языков, как Си, C++, C# и Java, но уже не столь значительные.

Брукс делает упор на «разрастающееся» через поэтапную разработку программное обеспечение (incremental development). Он считает, что разработка и реализация основной программы и подпрограмм должна производиться в самом начале работы над проектом, а доработка составных частей — уже позже. Он считает, что это стимулирует разработчиков и поддерживает работу на каждом из её этапов. (Эта идея может рассматриваться как предвестник гибкой методологии разработки программного обеспечения.)

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

Further reading

  • titleNo Silver Bullet — Essence and Accident in Software Engineering
    pages1069–1076
    year1986
  • titleNo Silver Bullet — Essence and Accidents of Software Engineering
    authormask1
    pages10–19
  • titleThe Mythical Man-Month
    authormask1
    year1975
  • chapterChap. 16
    title"No Silver Bullet — Essence and Accident"
    authormask1
    year1995
  • chapterChap. 17
    title"'No Silver Bullet' Refired"
    authormask1
    year1995
    -->

Внешние ссылки

  • Серебряной пули нет (No Silver Bullet), сокращённая версия

 


Комментарии

Добавить комментарий
Комментарий
Отправить