В своей знаменитой статье
«Серебряной пули нет – сущность и акциденция…»
Фредерик Брукс пишет: «Серебряных пуль
не только не видно в настоящее время,
но в силу самой природы программного обеспечения
маловероятно, что они вообще будут найдены
- не будет изобретений, на продуктивность
создания, надёжность и простоту программного
обеспечения так, как электроника, транзисторы
и интегральные схемы на аппаратное обеспечение
компьютеров».
Оправдан ли пессимизм мэтра?
Программное обеспечение
менее чем за полвека прошло огромный путь
от простейших логических и арифметических
операций до создания систем управления
предприятиями. И этот путь был интересен
и труден одновременно. Можно, конечно,
посетовать, что не нашлось ни «серебряной
пули», ни «философского камня», способных
раз и навсегда разрешить любые проблемы,
но вряд ли такая точка зрения может быть
конструктивной по своей природе.
Тем не менее, на пути развития
программного обеспечения было много открытий
и откровений, которые существенно повысили
производительность труда программистов.
К таким «серебряным пулям» можно смело
отнести и переход к кодированию в восьмеричных
и шестнадцатеричных кодах, введение символов,
переход к мнемокоду, появление языков
высокого уровня, технологию структурной
разработки программного обеспечения, не
менее важны были исследования в области
хранения информации и коммуникаций. Сегодня
трудно представить дальнейшее развитие
без опоры на эти и другие технологические
достижения. Стоит ли отрицать тот факт,
что современные программы разрабатываются
существенно быстрее, базируясь не только
на возможностях языков высокого уровня
и новых технологических концепциях, но
и на высокоуровневом сервисе, предоставляемом
СУБД, системами коммуникаций и межпрограммного
взаимодействия, графическом интерфейсе
и т.п.?
Перманентность кризиса
разработки программного обеспечения стала
общим местом не только в периодической,
но и специализированной технической литературе.
При этом нередко игнорируется тот факт,
что процесс кодирования не представляет
особой сложности и почти не изменился
за последние 20-30 лет. В то время как,
сложность разрабатываемых систем возросла
многократно. Увеличение разрыва между
предметной областью и кодом, представляющим
её, будет неуклонно возрастать и впредь.
Основываясь на подобных рассуждениях,
приходят к выводу о том, что и объём кода
должен увеличиваться едва ли не пропорционально.
А это таит в себе целый ряд проблем, таких
как управление большими коллективами разработчиков,
синхронизацией версий различных частей
системы, отладкой и т.д.
Однако решение данной проблемы
лежит не в увеличении производительности
труда программистов, не в написании большего
количества кода в единицу времени, а в
ином подходе к проектированию систем.
|