Введение

Статья по управлению программными проектами, основанная на народных представлениях, "Нет серебряной пули — Сущность и случайность в разработке программного обеспечения" — широко обсуждаемая статья по разработке программного обеспечения, написанная лауреатом премии Тьюринга Фредом Бруксом в 1986 году. Брукс утверждает, что "не существует единого усовершенствования, будь то в технологиях или методах управления, которое само по себе обещало бы даже на один порядок величины [в десять раз] улучшение в течение десятилетия в отношении производительности, надежности или простоты". Он также заявляет, что "мы не можем ожидать двукратного увеличения результатов каждые два года" в разработке программного обеспечения, как это происходит в разработке аппаратного обеспечения (закон Мура).

Резюме

Брукс различает два различных типа сложности: случайную и существенную. Это соотносится с классификацией Аристотеля. Случайная сложность связана с проблемами, которые создают инженеры, и которые они могут решить. Например, современные языки программирования абстрагировали детали написания и оптимизации ассемблерного кода и устранили задержки, вызванные пакетной обработкой, хотя другие источники случайной сложности сохраняются. Существенная сложность обусловлена самой решаемой задачей, и её невозможно устранить; если пользователям нужна программа, выполняющая 30 различных функций, то эти 30 функций являются существенными, и программа должна их выполнять. Брукс утверждает, что случайная сложность значительно уменьшилась, и современные программисты тратят большую часть времени на решение проблем, связанных с существенной сложностью. Брукс утверждает, что это означает, что полное устранение всех проявлений случайной сложности не даст такого же значительного улучшения, как попытки уменьшить существенную сложность. Брукс настаивает на отсутствии универсального решения, но считает, что ряд инноваций, направленных на уменьшение существенной сложности, может привести к существенным улучшениям. Одной из технологий, значительно снизивших случайную сложность, стало изобретение языков программирования высокого уровня, таких как Ada.

Связанные понятия

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