Предисловие к письмам

В своей знаменитой статье «Серебряной пули нет – сущность и акциденция…» Фредерик Брукс пишет: «Серебряных пуль не только не видно в настоящее время, но в силу самой природы программного обеспечения маловероятно, что они вообще будут найдены - не будет изобретений, на продуктивность создания, надёжность и простоту программного обеспечения так, как электроника, транзисторы и интегральные схемы на аппаратное обеспечение компьютеров». 

Оправдан ли пессимизм мэтра? 

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

Тем не менее, на пути развития программного обеспечения было много открытий и откровений, которые существенно повысили производительность труда программистов. К таким «серебряным пулям» можно смело отнести и переход к кодированию в восьмеричных и шестнадцатеричных кодах, введение символов, переход к мнемокоду, появление языков высокого уровня, технологию структурной разработки программного обеспечения, не менее важны были исследования в области хранения информации и коммуникаций. Сегодня трудно представить дальнейшее развитие без опоры на эти и другие технологические достижения. Стоит ли отрицать тот факт, что современные программы разрабатываются существенно быстрее, базируясь не только на возможностях языков высокого уровня и новых технологических концепциях, но и на высокоуровневом сервисе, предоставляемом СУБД, системами коммуникаций и межпрограммного взаимодействия, графическом интерфейсе и т.п.? 

Перманентность кризиса разработки программного обеспечения стала общим местом не только в периодической, но и специализированной технической литературе. При этом нередко игнорируется тот факт, что процесс кодирования не представляет особой сложности и почти не изменился за последние 20-30 лет. В то время как, сложность разрабатываемых систем возросла многократно. Увеличение разрыва между предметной областью и кодом, представляющим её, будет неуклонно возрастать и впредь. Основываясь на подобных рассуждениях, приходят к выводу о том, что и объём кода должен увеличиваться едва ли не пропорционально. А это таит в себе целый ряд проблем, таких как управление большими коллективами разработчиков, синхронизацией версий различных частей системы, отладкой и т.д. 

Однако решение данной проблемы лежит не в увеличении производительности труда программистов, не в написании большего количества кода в единицу времени, а в ином подходе к проектированию систем.

         
Сайт Alexus Software Development