Монография начинается с истории появления в нашей стране электронных вычислительных машин (ЭВМ) и программирования в 1940-е – 60-е годы. Далее изложена история проектирования и производства отечественных ЭВМ, а также средств и систем автоматизации технологических процессов производства программных продуктов в 1960-е – 80-е годы. Подробно представлена история формирования основных компонентов программной инженерии в 1960-е – 70-е годы. Внимание акцентируется на особенностях решения сложных задач по государственным заказам и на создании программных продуктов для мобильных и бортовых ЭВМ реального времени. Особое внимание уделяется истории разработки методов моделирования динамических объектов и стендов для тестирования и испытаний комплексов программ в реальном времени. Изложены методы оценивания качества программных продуктов, рисков, дефектов и ошибок при их разработке, а также история формирования требований к профессиям и квалификации специалистов программной инженерии в 1970-е – 80-е годы. Рассмотрен анализ сложности программных комплексов реального времени и распределение ресурсов ЭВМ для таких комплексов, характеристики и методы оценивания качества их компонентов. Один из разделов посвящен истории формирования в 1980-годы экономики программной инженерии, созданию средств технико-экономического анализа и экономическому обоснованию планов разработки крупных программных продуктов. Представлены реальные примеры их создания в 1960-е – 80-е годы для оборонных систем на основе методов программной инженерии. Книга предназначена для специалистов по вычислительной технике и программной инженерии, программистов, студентов и аспирантов, интересующихся историей развития, успехами и проблемами отечественной науки и техники в этой области.
Содержание:
Введение 1
Глава 1. История появления в стране вычислительной техники и программирования в 1940-е – 60-е годы 4
Глава 2. История отечественной вычислительной техники в 1950-е – 70-е годы 11
Глава 3. История технологических систем для производства программных продуктов в 1960-е – 80-е годы 22
Глава 4. История формирования основных компонентов программной инженерии в 1960-е – 70-е годы 31
Глава 5. История развития методов программной инженерии для систем реального времени в 1970-е – 80-е годы 40
Глава 6. Примеры создания заказных систем на основе программной инженерии в 1960-е – 80-е годы 51
Заключение 57
Приложение 59
Литература 60
Владимир Липаев
Очерки истории отечественной программной инженерии в 1940-е -80-е годы
Введение
Истории развития отечественной вычислительной техники в Советском Союзе в начале 1950-х годов сопутствовали две противоречивые тенденции, существенно повлиявшие на прогресс науки и техники в стране. С одной стороны, началась идеологическая атака в средствах массовой информации на "буржуазную лженауку – кибернетику". С другой стороны, постановления Правительства активно стимулировали разработки вычислительных машин в нескольких организациях [3, 4] страны.
В 1948 году была издана книга американского математика Норберта Винера "Кибернетика или управление и связь в животном и машине", которая в СССР попала на полки с секретными изданиями. Ее автор высказал идеи, не согласующиеся с официальными философскими доктринами, пропагандировавшимися в советском обществе. Для Винера было ясно, что многие концептуальные схемы, определяющие поведение живых организмов при решении конкретных задач, идентичны схемам, характеризующим процессы управления в сложных технических системах. Он был убежден, что социальные модели управления в человеческом обществе и модели управления в экономике могут быть проанализированы на основе тех же общих методов и положений, которые разработаны в области управления техническими системами, созданными людьми. Эти крамольные идеи не могли стать достоянием советских граждан, которым внушался тезис марксистской философии о несводимости "высших форм" существования материи к "низшим формам", используемым в технике.
В журнале "Вопросы философии" в марте 1950 года критике были подвергнуты некоторые теоретические положения математической логики, противоречившие, по мнению авторов статьи, догмам материализма [4]. Они не скупились на резкие высказывания: "Речь идет не о том, чтобы ликвидировать математическую логику, а о том, чтобы отсечь реакционную тенденцию извращения ее, отражающую идеологию враждебных нам классов". После математической логики настала очередь массированной атаки на те направления в физиологии, которые нарушали "чистоту учения И.П. Павлова", объявленного марксистскими философами венцом учений о поведении животных, и той части поведения человека, которая регулировалась его центральной нервной системой.
В 1953 году наступила очередь агрессивных статей философов о кибернетике. Вершиной наступления на кибернетику стала статья, напечатанная в журнале "Вопросы философии" в 1953 году. Она была помещена в разделе "Критика буржуазной идеологии" и называлась "Кому служит кибернетика" (автор скрылся под псевдонимом). Все, что касалось развития вычислительной техники как таковой, когда вычислительные машины уподоблялись очень быстро работающим арифмометрам, объявлялось полезным и нужным для социалистического отечества. В подобном качестве вычислительные машины ничем не отличались от устройств, создаваемых человеком для облегчения своего труда. Однако, когда речь заходила об использовании этих машин для моделирования различных процессов или для символьных преобразований, то натренированный на поиске идеологического криминала ум борца за чистоту марксистско-ленинского учения немедленно подавал сигнал опасности : "По мнению Винера, деятельность вычислительных машин дает ключ к познанию самых разнообразных природных и общественных явлений. Эта в корне порочная идея послужила Винеру основанием для создания новой "науки" – кибернетики".
Вычислительные машины не могут внести качественно новую струю в процесс познания окружающего мира. Чтобы эта мысль дошла до всех читателей статьи, автор формулирует ее еще раз: "Теория кибернетики, пытающаяся распространить принципы действия вычислительных машин новейшей конструкции на самые различные природные и общественные явления без учета их качественного своеобразия, является механицизмом, превращающимся в идеализм. Это пустоцвет на древе познания, возникший в результате одностороннего и чрезмерного раздувания одной из черт познания". Набор ярлыков для кибернетики (пустоцвет, лженаука, идеологическое оружие империалистической реакции, порождение лакеев империализма) свидетельствовал, что никакой патриотически настроенный ученый в СССР не может заниматься столь одиозной наукой. В "Кратком философском словаре" (1954 год) в статье "Кибернетика" эта наука была определена как "реакционная лженаука, возникшая в США после второй мировой войны, получившая широкое распространение и в других капиталистических странах; форма современного механицизма".
Практические задачи (и прежде всего, задачи укрепления обороноспособности страны) требовали не прекращения работ в этой области, а наоборот, расширения и активизации этих исследований. Это понимали даже партийные чиновники из оборонного отдела и отдела науки ЦК КПСС. Когда один из первых отечественных специалистов по применению вычислительных машин в военной области А.И. Китов, математик А.А. Ляпунов и известный своими теоретическими работами, связанными с созданием атомной бомбы, математик С.Л. Соболев объединились как авторы статьи "Основные черты кибернетики" и принесли ее в журнал "Вопросы философии", то: "Как ни странно, редколлегия спорить не стала" и в начале 1955 года статью опубликовали [4]. В это время А.И. Китов и А.А. Ляпунов организовали серию выступлений на научных семинарах в академических институтах, высших учебных заведениях и в других организациях, в которых методы кибернетики могли бы принести практическую пользу и наступление на кибернетику оголтелых философов к концу 50-х годов постепенно увяло.
У истоков развития кибернетики (информатики) в СССР стояли сотрудники Академии наук и различных, именуемых "закрытыми" ведомств и предприятий, в большинстве своем связанные с оборонной техникой. Первые книги в области кибернетики, вычислительных машин и программирования, выпущенные уже во второй половине 50-х годов без грифа секретности, были написаны военными. Если бы не активная наступательная позиция военных, поддержанная членами Академии наук СССР, то идеологические концепции, охраняемые представителями консервативной философской и партийной элиты, возможно, задержали бы развитие информатики на несколько лет, как это случилось с генетикой и другими науками [З, 4].
С середины 40-х годов началась и на протяжении нескольких десятилетий двадцатого века продолжалась история практически независимого от Запада, оригинального развития отечественной вычислительной техники и программирования, науки и техники в этой области. Созданные нашими учеными, инженерами и рабочими сложные вычислительные системы для различных сфер применения многие годы находились на уровне мировых достижений и не содержали зарубежных компонентов. Этот путь самостоятельного развития отечественных ЭВМ и программирования, в том числе, в секретных (закрытых) областях применения, практически неизвестен современному поколению специалистов в области информатики. Он почти не отражен в научно-технической, исторической литературе, а также в учебных курсах вузов. История развития вычислительной техники в нашей стране имеет много достойных результатов и их не следует прятать в архивах. Целесообразно сделать их доступными для установления справедливых оценок достижений и просчетов, для извлечения современными специалистами уроков из накопленного опыта и дискуссий предшествующих десятилетий, с учетом бурного развития этой области. Автор книги полагает, что это может быть интересно и полезно для широкого круга специалистов, поэтому эту историю целесообразно обобщить и объективно отразить в средствах массовой информации.
Уже на начальных этапах развития вычислительной техники и программирования в конце 1950-х годов произошло разделение в этой сфере на два почти независимых направления: для применения в науке и народном хозяйстве и для оборонных систем. Первое направление вначале составляли относительно небольшие программы, создаваемые одиночками или небольшими коллективами (3–5) специалистов, преимущественно для получения конкретных результатов при автоматизации научных исследований, простых технологических процессов и/или для анализа результатов вычислений самими разработчиками программ. В 60-е годы десятки и даже сотни ЭВМ с оригинальной архитектурой и системами команд, почти кустарно изготавливались в единичных экземплярах в вузах, научных и исследовательских организациях и не имели перспективы их массового производства. Для многих видов относительно несложных программ не было необходимости в регламентировании и автоматизации жизненного цикла для длительного применения и сопровождения множества версий таких программ.
Это приводило к созданию для них простейших операционных систем и технологических средств для пользователей с очень ограниченными возможностями. Их разработчики не применяли регламентирующих, нормативных документов, вследствие чего жизненный цикл таких продуктов по структуре, содержанию, качеству и стоимости основных процессов "творчества" имел непредсказуемый характер. Многие авторы таких систем не стремились создать упорядоченные методы и средства массового проектирования и производства программных продуктов гарантированного качества.
Пеструю историю их создания и развития в 60-е годы трудно отразить системой методов и средств. Только в 70-е годы сформировались несколько базовых семейств ЭВМ, для которых были созданы операционные системы и технологические средства, обеспечивающие проектирование и производство больших прикладных комплексов программ. В 70-е годы начало меняться направление основных усилий разработчиков программ для ЭВМ, происходит переход от методов и процессов процедурного программирования небольших компонентов для решения частных задач к проектированию крупных комплексов программ для промышленных и административных систем реального времени. Увеличение ресурсов ЭВМ и их доступности стимулировало интенсивное расширение сфер применения и возрастание размеров создаваемых комплексов программ. Быстро увеличивались производительность, объем памяти и надежность ЭВМ, что позволяло повышать сложность выполняемых ими функций и решаемых с их помощью задач, расширять сферы их использования в науке, системах управления и в промышленности. Однако отсутствовали стимулы для объединения методов и средств создания и сопровождения программ и, как следствие, для формирования систематизированного набора положений "программной инженерии".
Второе направление с середины 60-х годов составляли крупные заказные (создаваемые по заказу государства) комплексы программ реального времени для сложных оборонных систем управления и обработки информации. Такие комплексы создавались большими коллективами специалистов, преимущественно в оборонной промышленности, оформлялись в виде программных продуктов с гарантированным качеством. Эти комплексы программ являлись компонентами систем, реализующими их основные функции и содержащими предпосылки для последующего развития и изменений. Методология управления проектами программных продуктов зависела от многих факторов: от персонала, технических, организационных, договорных требований и сложности функций. Организованная и контролируемая коллективная разработка при строгом учете и контроле каждого изменения являлась основой эффективного, поступательного развития каждой крупной вычислительной системы методами программной инженерии. Руководством страны особенно активно стимулировалось развитие таких комплексов программ для оборонных систем. В предлагаемой монографии внимание акцентируется на истории и крупных достижениях технологии программирования в оборонной промышленности страны, наименее известных современным специалистам.
В 1960-е – 80-е годы в оборонной сфере были сосредоточены огромные ресурсы науки и промышленности, работали сотни тысяч разработчиков сложных комплексов программ, в несколько раз больше, чем в гражданских отраслях. Концентрация специалистов, стимулирование их труда, естественно, давали результаты. Это, в частности, отражалось на активном ходе работ в области создания крупных интеллектуальных программных продуктов и технологических систем программной инженерии для повышения эффективности процессов разработки и оценки качества комплексов программ оборонных систем. Однако методологические и технологические достижения в этой области передовых предприятий оборонной промышленности оставались секретными, не отражались в открытых публикациях и зачастую были не известны специалистам даже близких по функциям и задачам предприятий.
Разработки комплексов программ для оборонных систем с самого начала отличались организованностью и тесным взаимодействием с заказчиками таких систем. При этом требования заказчиков к функциям и качеству программных продуктов хронически превышали возможности разработчиков и ресурсы доступных вычислительных машин. Очень быстро расширялись функции комплексов программ и, соответственно, потребности в размерах памяти и производительности ЭВМ, на которых они использовались. Это заставляло разработчиков программ создавать и использовать эффективные алгоритмы решения поставленных задач и методы программирования. Это стимулировало совершенствование тех и других, и необходимость формализации технологий применявшейся тогда программной инженерии. Расширение размеров и функций, создаваемых программных продуктов, а также уровень автоматизации их проектирования и программирования следовали непосредственно за увеличением доступных ресурсов вычислительных машин. Одновременно повышалась производительность труда специалистов и качество программного продукта.
Развитие вычислительной техники в 1960-ые годы происходило в Советском Союзе очень высокими темпами. Предприятия активно оснащались различными ЭВМ. Кульминационной точкой в истории отечественной вычислительной техники стало создание С.А. Лебедевым в 1967-ом году ЭВМ БЭСМ-6. Именно эта машина впервые поразила весь мир невероятной для того времени производительностью – один миллион операций в секунду. Машина БЭСМ-6 сильно опередила свое время, начав развитие второго поколения ЭВМ. Она вобрала в себя много оригинальных идей, подобного класса в мире тогда не было. Эта машина широко использовалась в системах автоматизации проектирования для моделирования сложнейших физических процессов и процессов управления как инструментальная машина для разработки крупных программных продуктов оборонных систем на базе различных мобильных и бортовых ЭВМ. Она оставалась востребованной рекордно долгое время, более тридцати лет – последний экземпляр БЭСМ-6 прекратили использовать только на рубеже 21-го века.