Национальные информационные ресурсы:
проблемы промышленной эксплуатации.
Г.Р.Громов. Москва, Наука, 1984

 

Микропроцессорная революция и большая наука программирования

В течение последних 30 лет развития информационной технологии в центре почти всех основных задач научной дисциплины, определяемой как большая наука программирования, находились вопросы логического проектирования, кодирования программ и управления формализованными структурами данных. Общим для всех этих задач оставался не всегда явно постулируемый факт существования формально заданного условия правильности программы, что, в частности, позволяло корректно ставить задачу поиска методов формального доказательства правильности созданной программы (автоматические верификаторы программного кода), а в перспективе обещать и автоматический синтез программ.

Развитие этих направлений сопровождалось формированием соответствующих научных школ, которые, достигнув достаточно высокого уровня в социальной структуре науки об ЭВМ, и определяют в настоящее время научный облик большой науки программирования [2]. Производственные интересы этой профессиональной группы, достигшей к 70-м годам почти всех внешних атрибутов научной зрелости, еще, видимо, долго эволюционизировали бы в центре актуальных проблем вычислительной техники, если бы развитие информационной технологии шло такими же темпами, как это веками происходило во всех остальных областях техники. Однако микропроцессорная революция настолько резко сдвинула приоритеты и актуальность научных проблем во всех без исключения областях вычислительной техники, что многие из казавшихся незыблемыми постулатов большой науки программирования оказались под сомнением, а почти все основные критерии потребовали радикального пересмотра.

Впервые и наиболее остро эта проблема возникла на предприятиях, занятых проектированием микропроцессорных систем реального времени — одной из наиболее массовых областей применения «ЭВМ на кристалле». По образному выражению Р. Гласса (в то время одного из ведущих экспертов по программированию аэрокосмической корпорации «Боинг»), встраиваемые системы реального времени оказались «потерянным миром» («lost world») для пауки программирования [16']. Проблемы, которые в повседневной работе решали десятки тысяч программистов, работающих в этой бурно развивающейся области вычислительной техники, оказались, по мнению Р. Гласса, настолько далеки от ранее созданного задела и выполняемых в настоящее время изысканий этой «большой науки», что «практикующие профессионалы» могли рассчитывать в основном лишь на те элементы программистской культуры, которые вновь рождались на их ранее необитаемом для науки острове..

Спустя несколько лет аналогичный конфликт возник на уровне персональных компьютеров. Однако если встраиваемые микропроцессорные системы, обособленно развиваясь, образовали свой собственный «потерянный» для науки программирования мир, то персональные компьютеры повели наступление широким фронтом на все без исключения области приложений, в том числе и уже занятые традиционными средствами вычислительной техники. Не замечать феномен персональных вычислений, последовательно отрицающий почти все основные постулаты и критерии большой науки программирования в зоне ее собственных научных интересов, было уже невозможно. Волна фундаментальных сдвигов в информационной технологии, эпицентр которой находился в мире малых и микро-ЭВМ, достигла, хотя и за­метно позднее, цитадели большой науки программирова­ния — больших вычислительных центров. Необходимость в пересмотре основных критериев программирования и уязвимость основного постулата были здесь впервые осознаны в начале 80-х годов.

       В 1981 г. Дж. Мартин отмечал, что даже в тех  (относительно все более редких) случаях, когда формальные спецификации на программный продукт могут быть в принципе заранее выработаны, эта часть работы становится по объему все более самодовлеющей и, более того, именно на этот этап технологического цикла в настоящее время приходится уже большая часть ошибок всего проекта. Согласно приводимым им данным, в типовом программистском проекте организационно-экономического типа 56% всех обнаруженных ошибок приходилось па ошибки в требованиях на программы и 7% составляли ошибки кодирования программ [15, р, 4.13]. Хрестоматийная история о том, как один ошибочный фортрановский оператор в коде программы управления полетом ракеты поставил под угрозу успех известного космического проекта, более 10 лет кочует по страницам научных монографий, технических руководств и учебников программирования. Дж. Мартин приводит в этой связи ряд существенно более прозаических, «земных» примеров, когда безупречно закодированные большие проекты стоимостью в сот ни миллионов долларов, становились предметом разорительных судебных процессов между заказчиками и исполнителями. Общим для всех этих «земных катастроф» больших программистских проектов самого различного назначения оставались, как правило, разночтения в целях и задачах проекта между заказчиками и исполнителями.  Причем существенно, что, несмотря па внушительные объемы томов заранее согласованной с заказчиком формальной документации,  эти разночтения обнаруживались  обычно лишь после приемосдаточных испытаний.  Видимо, по той причине, что сам по себе код программ во всех этих случаях оказывался безошибочным и точно соответствовал формально заданным спецификациям, все эти примеры, как правило, не попадали до сих пор на страницы технических руководств и учебников программирования, оставаясь малоизвестными для специалистов материалами судебной хроники.

Чтобы правильно оценить реальные масштабы экономического эффекта кризиса в технологии программирования, Для массовых областей приложений ЭВМ необходимо, как подчеркивает Мартин, иметь в виду, что «за каждой большой неудачей, о которой пишут все газеты, тянутся тысячи мелких...» [15, р. 4.3]. По его мнению, постоянное расширение областей приложений ЭВМ привело в настоящее время к ситуации, когда для большей части создаваемых прикладных систем число ошибок в спецификациях на программы значительно превышает их количество в программных кодах [15, р. 4.12].

Рис. 23. Относительное распределение числа ошибок программирова­ния и «тяжести» их устранения к началу 80-х годов

По данным: Martin J. Application development without programmers. Savant Inst., 1981

 

Однако в отличие от ошибок других этапов проекта ошибки в формальных спецификациях обнаруживаются в основном уже после завершения промышленных испытаний разработанной системы (всплывают, как мины на фарватере, уже на стадии внедрения и сопровождения готового программного продукта в организации-заказчике). Поэтому относительная тяжесть этих ошибок оказывается существенно более заметной. На рис. 23 показано, что на устранение ошибок в требованиях на программы уходит в среднем 82% всех усилий, затраченных коллективом разработчиков на устранение ошибок проекта, тогда как на ошибки кодирования —1% [15, р. 4.13].


Онлайн-версия CD-ROM приложения к книге Г.Р.Громова
"От гиперкниги к гипермозгу: информационные технологии
эпохи Интернета. Эссе, диалоги, очерки
."