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

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Фредерик Брукс, автор статьи «Серебряной пули нет»

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

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

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


Аргументация[править | править вики-текст]

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

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

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

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

См. также[править | править вики-текст]


Ссылки[править | править вики-текст]

Внешние ссылки[править | править вики-текст]