История развития программного обеспечения

Из истории развития отечественной вычислительной техники для военных систем управления в реальном времени

1. Внешняя среда и стимулы развития специализированных военных вычислительных машин

На начальном этапе развития отечественной вычислительной техники в 50-е годы внимание было сосредоточено на создании ЭВМ для решения сложных математических вычислительных задач. Эти машины были стационарными и ориентированы на последовательное или пакетное решение задач вне связи с реальным масштабом времени и динамическим изменением параметров объектов внешней среды. Впоследствии они образовали наиболее широкий класс универсальных ЭВМ для различных областей применения.

К концу 50-х годов в оборонных отраслях промышленности и в организациях Министерства обороны страны проявился интерес к применению вычислительных машин для решения задач обработки информации и управления в военных системах. Эти задачи значительно отличались по своему характеру от ставших к тому времени традиционными вычислительных задач. Выявились трудности применения и недостатки универсальных ЭВМ при использовании их в военных системах для решения задач управления в реальном времени. В результате получило активное развитие специфическое направление вычислительной техники для систем военного назначения.

Это направление почти одновременно начало формироваться в нескольких проблемно-ориентированных областях для сухопутных, авиационных, морских, ракетных и других систем в оборонных отраслях промышленности и на предприятиях. Для последующего развития существенными оказались требования заказчиков из различных областей применения. В результате этот класс ЭВМ разделился на стационарные, работающие в помещениях, и мобильные, размещаемые на подвижных или перемещаемых объектах, что определило большие принципиальные различия в архитектуре и технических характеристиках машин военного назначения. Первый класс тяготел к архитектурам и конструктивам обычных универсальных ЭВМ с необходимыми расширениями и модификациями для специализированного применения. Машины второго класса – мобильные – отличались наибольшей спецификой от остальных типов ЭВМ. Цель предлагаемой статьи представить основные особенности истории развития этого направления вычислительной техники и программирования в стране в 50–80-е годы.

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

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

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

Видимая и осязаемая аппаратура ЭВМ, высокая стоимость ее разработки и производства создавали впечатление у многих руководителей проектов, что когда она есть – основное дело сделано и далее предстоят небольшие затраты на программирование. Труд программистов считался простым, дешевым и не требующим специального технологического оснащения. Заказчики и руководители с удивлением и возмущением обнаруживали к концу разработки, что на создание программ необходимого качества требуются затраты, соизмеримые с затратами на аппаратуру. Оценка в 60-е годы производительности труда специалистов при полном цикле создания сложных программных комплексов объемом в сотню тысяч команд составляла в среднем только 0,1–0,3 команды в день на человека. В результате на такой комплекс с учетом всех вспомогательных работ и испытаний затрачивалось около тысячи человеко-лет. Отсутствие отработанной технологии, относительно низкая квалификация и оплата труда большинства программистов не стимулировали повышения производительности, высокое качество результатов программирования и систем в целом.

В 60–70-е годы заказчики военных систем непрерывно расширяли номенклатуру задач, возлагаемых на вычислительные средства, и повышали требования к качеству их решения. Этому сопутствовал быстрый рост объема и сложности программ, подлежащих реализации на ЭВМ. Вследствие низкой производительности труда разработчиков программ приходилось интенсивно обучать новые кадры и увеличивать их численность.

Развитие технологии производства и элементной базы военных ЭВМ не поспевало за ростом требований к их ресурсам по памяти и производительности, необходимым для реализации всех новых требований и задач. Одновременно увеличивалась сложность и ответственность задач управления, возлагаемых на ЭВМ, что вызывало рост требований к качеству, надежности функционирования и безопасности применения систем управления.

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

2. Особенности функциональных задач управления в реальном времени

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

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

Системы военного назначения с самого начала применения вычислительной техники отличались широким спектром принципиально новых и очень разнообразных задач. По мере их апробации, количество и разнообразие задач возрастало катастрофически. Для их решения разрабатывались новые алгоритмы, которые должны были ориентироваться на практически реальные условия и доступные ресурсы при реализации в соответствующих мобильных ЭВМ. Алгоритмы частных задач комплексировались в более сложные целостные системы алгоритмов для координированного решения основных целевых задач военной системы. Для этого необходимо было создание новых методов и алгоритмов объединения и комплексного взаимодействия систем разнообразных алгоритмов на единой или распределенной вычислительной базе и в реальном времени.

В программах универсальных ЭВМ первоначально преобладали вычислительные задачи, в которых доминировали арифметические операции с целыми или рациональными числами. В программах специализированных, управляющих ЭВМ военного назначения быстро проявилась принципиальная особенность, состоявшая в наличии и выделении двух классов переменных – квазинепрерывных результатов измерения характеристик или координат внешних объектов и логических признаков объектов и их функционирования. При этом преобладали логические операции и относительно невысокую долю составляли вычислительные.

Значительная часть исходных данных в рассматриваемых системах являлась результатом квантованных измерений непрерывных физических величин – координат объектов и их скорости, показаний датчиков напряжения, давления и т. д. Относительно невысокая точность этих данных определяла рациональную разрядность квантования их значений для обработки и хранения на ЭВМ. Поэтому структура разрядной сетки и операции с частью слова выбирались под число разрядов наиболее часто используемых величин, что позволяло экономить объем аппаратуры. В результате были созданы машины с различной базовой разрядностью памяти и основных операций – 12, 16, 18, 20, 24 и т. п. разрядов.

Логические операции в программах производились, как правило, с малоразрядными величинами или даже с отдельными битами. Для их выполнения целесообразно было ориентировать процессоры ЭВМ на удобную и быструю работу с величинами соответствующей структуры и вводить значительное количество специализированных логических операций с различными частями слова. Часть слова памяти (1–6 разрядов) отводилась для различных признаков логических величин. Такая ориентация на особенности основных функциональных задач позволяла при относительно слабой элементной базе достигать необходимые характеристики по памяти и производительности мобильных ЭВМ. Поэтому многие машины только в конце 70-х годов начали приближаться к менее эффективной для конкретных приложений в данной области, универсальной, байтовой структуре операций и обрабатываемых данных.

Функциональные задачи многих военных систем управления в реальном времени характеризуются интенсивными случайными потоками неоднородных данных, длительности обработки которых являются также случайными величинами. Эти длительности во многом зависят от типов поступающих данных и моментов их обработки. При этом не было необходимости при функционировании систем накапливать и хранить большие объемы данных продолжительное время. Поэтому базы данных о состоянии внешней среды отличались сравнительно небольшим объемом и практически отсутствовали специальные системы управления базами данных. Только некоторые стационарные военные системы (штабные) имели довольно крупные базы данных, но регламент реального времени у них был более легкий и допускал большие задержки времени отклика.

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

3. Некоторые особенности характеристик вычислительных средств, применяемых в мобильных системах реального времени

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

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

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

4. Особенности технологических инструментальных средств для разработки программ военных систем

В начале 60-х годов программы для военных систем разрабатывались в объектном коде непосредственно на управляющих ЭВМ без какой-либо автоматизации программирования, в частности из-за отсутствия для этого у них ресурсов памяти и производительности. Это определяло очень низкую производительность труда программистов и недопустимую длительность разработки программ.

В середине 60-х годов начала развиваться автоматизация программирования, для чего использовались универсальные технологические ЭВМ с большими ресурсами, различными архитектурами, отличавшимися по конструкции и структуре команд от управляющих ЭВМ. Технологические ЭВМ имели соответствующие операционные системы широкого назначения и более или менее развитую периферию для пользователей в процессе создания программ.

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

Применение языков программирования уровня ассемблера было обусловлено необходимостью экономить ресурсы военных ЭВМ и недопустимостью заметного расширения объектного кода программ, что неизбежно при использовании языков высокого уровня. Эта тенденция сохранилась до конца 80-х годов, и только в редких проектах применялись языки третьего поколения. В американских военных системах с конца 60-х годов широко применялись алгоритмические языки высокого уровня, что определялось, с одной стороны, большими ресурсами у них военных вычислительных машин, а с другой – более высокой стоимостью труда программистов. Применяемые ими алгоритмы и программы не отличались эффективностью использования ресурсов военных ЭВМ.

Первоначально кросс-системы создавались специально для разработки программ каждого типа управляющей ЭВМ. Постепенно эти системы совершенствовались и развивался сервис для разработчиков, так что к началу 70-х годов машино-ориентированные трансляторы и интерпретаторы в кросс-системах на универсальных ЭВМ стали занимать относительно небольшую часть. Остальное составляли средства визуализации для пользователей, документирования, формирования тестов и отладочных заданий, статического анализа корректности структуры программ и т. д., которые почти не зависели от особенностей управляющих машин. Поэтому выявилась необходимость создания адаптируемых трансляторов и интерпретаторов, настраиваемых на основе формализованных описаний архитектуры и системы команд управляющих ЭВМ. Эти описания автоматизированно транслировались в машинно-ориентированные блоки трансляторов и интерпретаторов, что позволило на порядок сократить затраты на разработку кросс-систем для управляющих ЭВМ. На этих принципах в середине 70-х годов была разработана комплексная, многофункциональная инструментальная система ЯУЗА-6 на БЭСМ-6, которая была настроена на два десятка типов военных, управляющих ЭВМ, а затем кросс-система РУЗА на ЕС ЭВМ.

К концу 70-х годов разработкой программ для систем военного назначения в нашей стране занималось около ста тысяч специалистов, которые создавали одновременно сотни сложных комплексов программ. К этому времени их производительность труда повысилась на порядок – до 1–3 команд в день на человека. Особенно острой стала проблема борьбы с программными ошибками и обеспечения высокой надежности функционирования комплексов программ в реальном времени. Высокая стоимость и риск аварий при использовании реальных объектов для комплексной отладки программ заставил активно создавать стенды для имитации внешней среды в реальном времени на технологических ЭВМ.

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

Специализированные имитаторы на универсальных ЭВМ позволяли создавать необходимые потоки сообщений от внешних объектов и обрабатывать результаты реакции отлаживаемых комплексов программ на эти сообщения в реальном времени. Тем самым обеспечивалась высококачественная комплексная отладка и испытания реальных программ военных систем в адекватной внешней среде без привлечения натурных объектов. Примером может служить первый успешный полет в автоматическом режиме «Бурана», программы которого были отлажены и предварительно испытаны на имитационном стенде.