Нет серебряной пули
« Нет серебряной пули — суть и случайность в разработке программного обеспечения » — широко обсуждаемая статья по разработке программного обеспечения, написанная премии Тьюринга лауреатом Фредом Бруксом в 1986 году. [1] Брукс утверждает, что «не существует ни одной разработки ни в технологии, ни в технике управления, которая сама по себе обещает хотя бы на один порядок [десятикратное] улучшение в течение десятилетия производительности, надежности и простоты». Он также заявляет, что «мы не можем ожидать когда-либо увидеть двукратный прирост каждые два года» в разработке программного обеспечения, как это происходит в разработке аппаратного обеспечения ( закон Мура ).
Краткое содержание
[ редактировать ]Брукс различает два типа сложности: случайную сложность и существенную сложность. Это связано Аристотеля классификацией с . Случайная сложность относится к проблемам, которые создают и могут исправить инженеры. Например, современные языки программирования абстрагировали детали написания и оптимизации ассемблера исходного кода и устранили задержки, вызванные пакетной обработкой , хотя другие источники случайной сложности остаются. Существенная сложность вызвана проблемой, которую необходимо решить, и ничто не может ее устранить; если пользователи хотят, чтобы программа выполняла 30 разных действий, то эти 30 вещей необходимы, и программа должна делать эти 30 разных вещей.
Брукс утверждает, что случайная сложность существенно снизилась, и современные программисты тратят большую часть своего времени на устранение существенной сложности. Брукс утверждает, что это означает, что сведение всех случайных действий к нулю не даст такого же улучшения на порядок величины, как попытка уменьшить существенную сложность. Хотя Брукс настаивает на том, что не существует одной серебряной пули , он считает, что ряд инноваций, направленных на устранение существенной сложности, может привести к значительным улучшениям. Одной из технологий, которая значительно улучшила ситуацию в области случайной сложности, стало изобретение языков программирования высокого уровня , таких как Ада . [1]
Брукс выступает за «органический рост» программного обеспечения посредством поэтапной разработки. Он предлагает сразу разработать и реализовать основную и подпрограммы, а рабочие подразделы заполнить позже. Он считает, что такое компьютерное программирование увлекает инженеров и обеспечивает работающую систему на каждом этапе разработки.
Брукс продолжает утверждать, что существует разница между «хорошими» дизайнерами и «великими» дизайнерами. Он постулирует, что, поскольку программирование — это творческий процесс, некоторые дизайнеры по своей природе лучше других. Он предполагает, что между обычным дизайнером и великим целых десятикратная разница. Затем он выступает за то, чтобы относиться к звездным дизайнерам так же хорошо, как и к звездным менеджерам, предоставляя им не только равное вознаграждение , но и все привилегии более высокого статуса: большой офис, персонал, средства на поездки и т. д.
Статью и более поздние размышления Брукса о ней «Нет серебряной пули» можно найти в юбилейном выпуске « Мифического человеко-месяца» . [2]
Связанные понятия
[ редактировать ]Работу Брукса иногда цитировали в связи с законом Вирта , утверждая, что «размеры и сложность программных систем растут быстрее, чем изобретаются методы управления сложностью». [3]
См. также
[ редактировать ]- История разработки программного обеспечения
- Прототипирование программного обеспечения , одна из основных стратегий борьбы с существенной сложностью в «Серебряной пуле»
- ТВЕРДЫЙ
- Существенная сложность (числовая мера «структурированности»)
Ссылки
[ редактировать ]- ^ Jump up to: а б «Нет серебряной пули — суть и случайность в разработке программного обеспечения»
- ^ Мифический человеко-месяц , глава 17
- ^ Тим А. Майчжак (2012). Улучшение тестирования программного обеспечения: технические и организационные разработки . Springer Science & Business Media. п. 4. ISBN 978-3-642-27464-0 .
Дальнейшее чтение
[ редактировать ]- Брукс, Фредерик П. (1986). «Нет серебряной пули — суть и случайность в разработке программного обеспечения» (PDF) . Труды Десятой Всемирной компьютерной конференции ИФИП : 1069–1076.
- - (апрель 1987 г.). «Нет серебряной пули — суть и случайность в разработке программного обеспечения». IEEE-компьютер . 20 (4): 10–19. CiteSeerX 10.1.1.117.315 . дои : 10.1109/MC.1987.1663532 . S2CID 372277 .
- — (1975). Мифический человеко-месяц . Аддисон-Уэсли. ISBN 978-0-201-00650-6 .
- — (1995). «Глава 16. Серебряной пули нет — суть и случайность в разработке программного обеспечения». Мифический человеко-месяц (юбилейное издание с четырьмя новыми главами под ред.). Аддисон-Уэсли. ISBN 978-0-201-83595-3 .
- — (1995). «Глава 17. Усовершенствованная версия« Серебряной пули »». Мифический человеко-месяц (юбилейное издание с четырьмя новыми главами под ред.). Аддисон-Уэсли. ISBN 978-0-201-83595-3 .
Внешние ссылки
[ редактировать ]- Нет серебряной пули. Сущность и случайность в разработке программного обеспечения , Фредерик П. Брукс-младший.
- Принципы разработки программного обеспечения — комментарии Стива МакКоннелла о дихотомии, первоначально опубликованные в IEEE Software , Vol. 16, № 2, март/апрель 1999 г.