История развития комплексов программ реального времени для территориально-распределенных информационных систем (1958-1988 гг.)
В. В. Липаев
В данной статье рассмотрена история развития в СССР в 50-70-e годы одного из закрытых в то время направлений вычислительной техники для обработки радиолокационной информации и управления активными средствами ПВО в реальном времени. Изложены основные проблемы, с которыми столкнулись разработчики аппаратуры и программного обеспечения при создании первых крупных территориально-распределенных информационных систем реального времени с жесткими требованиями к времени отклика. Значительное внимание уделено особенностям технологии и инструментальных средств разработки прикладных программ для таких систем при жестких ограничениях вычислительных ресурсов объектных ЭВМ. Приводимые данные и анализ основаны на личном опыте автора и не претендуют на охват всего обширного направления развития технологии программного обеспечения в организациях военно-промышленного комплекса.
Особенности развития систем обработки информации и управления в реальном времени и их программного обеспечения
В Советском Союзе вычислительная техника и программное обеспечение в 50-70-e годы развивались по двум почти независимым направлениям. Активизация работ по решению математических вычислительных задач определила соответствующую область применения первых ЭВМ в гражданских отраслях науки и техники, а также для расчетов в физике и при управлении космическими аппаратами. Разработчиками и изготовителями этих машин были многочисленные коллективы предприятий промышленности, академий наук и вузов. В середине 60-х годов в русле этого направления началось создание ЭВМ для управления производственными и технологическими процессами в реальном времени, развитие которых было поручено Минприбору СССР. Это первое народнохозяйственное направление достаточно полно отражено в фундаментальной книге Б. Н. Малиновского “История вычислительной техники в лицах”.
Второе направление не менее интенсивно и широко развивалось в организациях военно-промышленного комплекса (ВПК). Оно практически не отражено в открытой печати, что стимулировало написание данной статьи.
С конца 50-х годов начались работы по применению цифровой вычислительной техники систем противовоздушной и противоракетной обороны, для контроля космического пространства и управления полетами в авиации и в космосе, для управления войсками разных родов. Эти задачи принципиально отличались от основной массы вычислительных задач в гражданских областях преобладанием логических операций и большими размерами. Очень быстро увеличивались номенклатура и объем функций военных систем, которые требовалось автоматизировать. Для реализации таких функций были необходимы значительные ресурсы памяти и производительности ЭВМ, а также большие коллективы специалистов, способные создавать крупные комплексы алгоритмов и программ в допустимые сроки.
В 1956-1958 гг. произошел первый “великий перелом” в системах управления средствами вооружения. До этого счетно-решающие устройства систем управления войсками и оружием строились на аналоговых электромеханических и электронных приборах. При появлении цифровых вычислительных машин открылись широкие возможности решения новых задач обработки информации и управления, которые были недоступны ранее.
В начале 60-х годов произошел второй “великий перелом” — началось создание больших территориально-распределенныех вычислительных систем реального времени. Все работы проводились в режиме строгой секретности, и каждая функционально законченная система создавалась практически независимо. Поэтому приводимые ниже оценки и анализ носят в значительной степени субъективный характер, хотя общие проблемы и тенденции были достаточно близкими.
Разработка систем обработки радиолокационной информации и управления активными средствами ПВО в нашем институте № 5 ГАУ МО начиналась с освоения основ алгоритмирования и программирования. Для этого летом 1956 г. группа сотрудников института под руководством А. Л. Лившица (впоследствии директора и генерального конструктора) неоднократно выезжала в Киев, где в лаборатории В. М. Глушкова осваивала азы цифровой вычислительной техники и программирования. Сотрудники этой лаборатории Б. Н. Малиновский, 3. Л. Рабинович и др. принимали непосредственное участие в разработке первых алгоритмов сопровождения воздушных целей и учили нас программированию в объектном коде. Для специалистов института в 1957-1958 гг. были организованы курсы по программированию (руководители — А. Г. Шигин, А. И. Китов), кроме того, за короткое время сотни программистов были подготовлены для предприятия в ряде военных и гражданских вузов.
Приблизительно в это время нам стали известны работы Н. П. Бусленко по моделированию управления средствами вооружения на ЭВМ, что стимулировало первые наши исследования по моделированию процессов обработки радиолокационной информации на ЭВМ “Урал-1” (1958 г. В. В. Липаев, И. И. Савочкин). В 1959 г. был разработан первый проект территориальной информационной системы ПВО (под руководством А. Л. Лившица, З. М. Бененсона), которая в современной терминологии имела следующие особенности:
- глобальная территориально-распределенная информационная система с многими пунктами сбора и обработки радиолокационной информации и центральными командными пунктами управления активными средствами ПВО;
- все средства обработки информации и управления должны были функционировать в реальном масштабе времени при несинхронных потоках сообщений от источников информации с временем отклика, измеряемы секундами и долями секунды;
- на каждом пункте обработки информации и управления должны были применяться графические терминалы, объединенные в сеть для визуализации воздушной обстановки и обеспечения функционирования оперативного и командного состава группировки ПВО;
- средства обработки информации имели очень ограниченные ресурсы по памяти и производительности и низкую надежность;
- телекоммуникационные каналы связи имели низкую пропускную способность и большой процент ошибок в сообщениях.
Первые отечественные универсальные ЭВМ создавались для решения вычислительных математических задач и были непригодны для решения задач управления в реальном времени. Слабая элементная база и хронический дефицит вычислительных ресурсов, а также ряд специфических требований (климатических и др.) военных систем привели к необходимости разработки широкого спектра специализированных управляющих ЭВМ для различных средств вооружения. Специфика этих систем состояла в том, что для обеспечения решения сложных задач архитектура и системы команд управляющих и бортовых ЭВМ тщательно адаптировались к характеристикам прикладных задач и сферы применения. В нескольких институтах военно-промышленного комплекса в 1956-1958 гг. началась разработка многочисленных специализированных управляющих ЭВМ. В результате в стране к концу 70-х годов было создано свыше ста типов встроенных объектных ЭВМ реального времени с различными архитектурой и системами команд, что и отличало их от универсальных ЭВМ.
В нашем институте в 1957-1959 гг. была разработана первая ламповая специализированная стационарная ЭВМ для наведения истребителей-перехватчиков “Спектр-4”. Первая мобильнаая полупроводниковая ЭВМ “Курс” для обработки радиолокационной информации была создана Я. А. Хетагуровым (ЦМНИИ-1) в 1959 г. по заказу института. Им же был сконструирован целый ряд специализированных ЭВМ для военно-морского флота. В то же время для командных пунктов ПВО была изготовлена первично ламповая, а затем полупроводниковая ЭВМ “Радон” (СКБ-245, руководители Ю. Я. Базилевский, С. А. Крутовских) с расширенной полупроводниковой памятью “Кристалл”. В 1966 г. для командных пунктов ПВО сотрудниками института была создана мощная по тем временам специализированная ЭВМ “Гранит”, а также несколько позже малая машина — спецвычислитель СВ (руководители соответственно А. З. Шостак и А. М. Бойкевич). Эти ЭВМ долго применялись в составе различных распределенных информационных систем реального времени ПВО.
В конце 60-х годов институт прекратил собственные разработки ЭВМ и сориентировался на машины, создаваемые в ИТМ и ВТ (под руководством С. А. Лебедева, и В. С. Бурцева — 5Э26, 5Э92Б, 5Э51). Все специализированные машины, изготовленные в стране в 50-70-х годах, активно применялись в различных системах, долго оставались секретными и к началу 80-х годов морально и физически устарели.
До конца 70-х годов программы для управляющих ЭВМ военного назначения писали полностью отечественные специалисты без использования импортных компонентов. Было доказано, что наши алгоритмисты и программисты способны создавать различные сложные комплексы программ с высоким качеством в допустимые сроки. Однако некоторые руководители высшего звена страны боялись и не понимали методов и технологии создания программ и считали, что на Западе имеется огромное число программных продуктов, которые “без особого труда” можно нелегально взять и использовать, если наладить производство ЭВМ с соответствующей архитектурой. К сожалению, эта точка зрения возобладала. За прототип была принята архитектура ряда IBM 360 и ряда PDP 11 фирмы DEC. Освоение импортных операционных систем, СУБД, прикладных программ для этих типов машин сильно подорвало отечественную школу программирования и сориентировало ее на заимствование и адаптацию готовых зарубежных программ, что стало доминирующим в настоящее время. Одновременно в угоду приоритету ЕС ЭВМ были по существу прекращены работы по развитию отечественных универсальных ЭВМ.
В области управляющих ЭВМ под флагом унификации в НИЦЭВТ началось создание бортовых машин с архитектурой и системами команд ЕС ЭВМ. Это позволяло использовать для разработки управляющих программ реального времени стационарные ЕС ЭВМ без применения интерпретаторов и кросс-систем. Ориентировка этих машин на вычислительные задачи привела к их неэффективному использованию при решении логических задач, характерных для бортовых систем управления в реальном времени. Это направление не нашло, как ожидалось, широкого применения, хотя такие машины под маркой А-50 и др. действуют до настоящего времени в некоторых системах. Однако широкий парк специализированных и бортовых машин, ориентированных на особенности функциональных задач, и огромный объем испытанных прикладных программ позволяют и сегодня применять технологические кросс-системы для создания и развития программ реального времени.
Для решения задач обработки информации и управления в начале 60-х годов был предложен и реализован ряд базовых принципов и методов построения больших комплексов программ реального времени. В то время они представлялись обычной инженерной разработкой на уровне здравого смысла. Полное отсутствие информации о подобных работках военных на Западе и на соседних предприятиях ВПК вызвало появление оригинальных решений, которые, как выяснилось впоследствии, оказались достаточно универсальными.
В 1962-1968 гг. сотрудники института в области программного обеспечений создали и апробировали:
- глобальную вычислительную сеть для решения единой комплексной функциональной задачи, состоящую из ряда пунктов обработки информации на ЭВМ, связанных телекоммуникационными каналами связи;
- сложные комплексы программ реального времени для обработки информации в целях управления с центральных командных пунктов;
- методы и средства диалогового взаимодействия операторов и ЭВМ в интерактивном режиме с жесткими требованиями к времени отклика при одновременном параллельном решении различных функциональных задач;
- методы модульно-иерархического построения сложных комплексов программ с унификацией межмодульного интерфейса и эффективным распределением ресурсов объектных ЭВМ по памяти и производительности;
- операционные системы приоритетной организации вычислительного процесса в реальном времени при случайных потоках разнородных сообщений и случайной длительности решения различных задач;
- методы и средства обеспечения надежности функционирования комплексов программ с оперативным контролем и восстановлением путем рестарта вычислительного процесса и искаженных данных;
- методы и средства для комплексной отладки и испытания программ реального времени, а также для моделирования внешней среды территориальных объектов обработки информации и управления;
- методы организации труда больших коллективов специалистов разного профиля для решения единой целевой задачи и обеспечения всего жизненного цикла сложных комплексов программ.
Одновременно и независимо подобные проблемы решались в ряде других предприятий ВПК. Последующее развитие показало, что многие предложенные идеи и методы, созданные в те годы, оказались весьма эффективными до настоящего времени при организации современных административных информационных систем.
В конце 50-х годов при разработке крупных программ выделялись два класса больших (зачастую по 100-200 человек) коллективов специалистов: алгоритмисты, которые создавали методы и алгоритмы решения задач, и программисты, от которых требовалось закодировать эти алгоритмы на языке программирования. Те и другие владели специфическими знаниями и языками их представления. Возникающие ошибки часто были обусловлены взаимным непониманием основной задачи и ее неверной реализацией в программе. На этой почве постоянно возникали конфликты при определении виновника внесения ошибки: некорректно представлен алгоритм или он неправильно отражен в программе. В конце 60-х годов были предприняты организационные меры для объединения алгоритмистов и программистов в группы для решения определенных функциональных задач. Руководитель такого относительно небольшого коллектива (5-10 человек) полностью отвечал за результаты и качество решения конкретной задачи и был обязан достаточно хорошо разбираться в программировании и алгоритмах. Отдельный коллектив наиболее квалифицированных специалистов-интеграторов занимался комплексированием программ для решения набора функциональных задач.
При разработке программ для первых глобальных распределенных вычислительных систем в начале 60-х годов непрерывно срывались директивные сроки и проявлялись многочисленные ошибки в программах и аппаратуре. Проявился “заколдованный треугольник”: источником ряда ошибок могли быть с одинаковой вероятностью и аппаратура, и алгоритмы и программы. Все три источника в опытных образцах систем давали более или менее похожие внешние анормальные эффекты. В результате возникали острые конфликты между специалистами разных направлений, которые не желали признавать свои ошибки, и требовались тщательные совместные исследования для определения их причин.
Особенно трудно приходилось разработчикам программ, результаты труда которых невозможно было просто “пощупать”. Руководителям проектов систем и заказчикам представлялось, что после того, как изготовлена аппаратура — “железо” — создать программы — “бумагу” — не составляет особого труда, и они долго удивлялись и возмущались непрерывному потоку ошибок и низкому качеству решения функциональных задач. Только к началу 70-х годов руководителям крупных военных проектов стало ясно, что нужны новые принципиальные подходы к методам, технологии и инструментальным средствам для создания сложных комплексов программ реального времени. Минрадиопромом СССР было начато проведение ряда НИР в этой области.
Разработка программ реального времени в условиях секретности приводила в основном к оригинальным решениям. Только в начале 70-х годов нам стали доступны материалы двух конференций НАТО 1967 и 1968 гг. по программной инженерии и книга Дж. Мартина “Программирование для вычислительных систем реального времени” (русский перевод был сделан в 1975 г.). Ознакомление с этими публикациями показало, что уровень наших разработок распределенных систем реального времени практически не отличался от уровня создания подобных систем за рубежом, а многие наши независимые технические решения близки к опубликованным.
В начале 70-х годов произошел относительный прорыв сквозь препоны и рогатки цензуры. На базе многочисленных публикаций в закрытой печати были изданы первые открытые книги по рассматриваемым проблемам: Д. С. Конторов, Ю. С. Голубев-Новожилов. “Введение в радиолокационную системотехнику” (1971 г.) и С. З. Кузьмин. “Основы теории цифровой обработки радиолокационной информации” (1974 г.), а также К. К. Колин, В. В. Липаев. “Проектирование алгоритмов управляющих ЦВМ” (1970 г.), В. В. Липаев, К. К. Колин, Л. А. Серебровский. “Математическое обеспечение управляющих ЦВМ” (1972 г.) и книга группы авторов под ред. В. В. Липаева “Отладка систем управляющих алгоритмов” (1974 г.). Эти книги имели хороший отклик в организациях ВПК и военных вузах. Однако в гражданских вузах отсутствовал интерес к проблемам создания крупных распределенных комплексов программ, и обучение студентов сводилось к программированию небольших относительно простых вычислительных программ. Также до конца 70-х годов очень слабыми были контакты со специалистами АН СССР. В результате опыт и достижения организаций ВПК в области создания методов и технологий разработки крупных комплексов программ реального времени не нашли широкого применения в народном хозяйстве.
Особенности развития технологии и инструментальных средств для разработки программ реального времени
Из-за малых ресурсов объектных ЭВМ алгоритмисты и программисты вынуждены были искать и находили очень экономные решения сложных задач. Невозможно было применять языки программирования высокого уровня, так как при работе с ними объектный код увеличивался в полтора-два раза. Поэтому до конца 60-х годов программы для объективных ЭВМ писали в объектном коде этих машин или в лучшем случае на специализированных ассемблерах. В середине 70-х годов начали применяться макроязыки, адаптированные к архитектуре объектных ЭВМ. Технологический инструментарий (компиляторы, отладчики, документаторы) следовало адаптировать под особенности архитектуры каждой объектной ЭВМ. Из-за их малых ресурсов практически весь технологический инструментарий приходилось размещать на больших универсальных ЭВМ с совершенно иными системами команд. Таким образом, активно развивались кросс-системы автоматизации программирования комплексов программ.
Увеличение объема решаемых функциональных задач и быстрое усложнение как аппаратуры, так и программных комплексов не позволяли создавать системы обработки информации в требуемые сроки без средств автоматизации проектирования. Еще в начале 60-х годов делались отдельные попытки применять универсальные ЭВМ для отладки программ на интерпретаторах и выпуска части документов. Однако только в конце этого десятилетия стало ясно, что без комплексных систем автоматизации всего технологического процесса разработки аппаратуры и программ трудоемкость и длительность создания систем обработки информации будут недопустимо большими. Это стимулировало развитие технологии и инструментальных средств комплексной автоматизации проектирования на базе универсальных ЭВМ.
В 1971 г. на технологической ЭВМ М-220 под руководством Л. А. Серебровского была создана кросс-система автоматизации программирования (САП) “Яуза-1”. В ней были реализованы транслятор с ассемблера, автоматизированно-настраиваемый на архитектуру управляющих ЭВМ, простейшая база данных проектирования, средства изготовления расширенной номенклатуры программных документов. Только в конце 70-х годов началось очень ограниченное применение специализированных алгоритмических языков высокого уровня, которые предназначались для решения специфических задач соответствующих систем. Увлечение изобретением множества различных алгоритмических языков почти не задело организации ВПК, так как было ясно, что они не могут существенно повлиять на эффективность полного цикла разработки сложных комплексов программ. Тем не менее, Л. А. Серебровским был разработан алголоподобный язык Яуза для специализированных ЭВМ и реализован компилятор с него, однако практического применения он не нашел.
В 1973 г. в институте знaчитeльнo pacшиpилось направление aвтoмaтизaции разработки комплексов программ реального времени (руководитель — В. В. Липаев). В это время в институте была устанавлена ЭВМ БЭСМ-6, которая в последующем использовалась как технологическая база для решения широкого спектра задач автоматизации проектирования.
Велась разработка унифицированной технологии, которая должна была значительно повысить производительность труда создателей сложных комплексов программ. В 1975 г. началась эксплуатация первой версии системы комплексной автоматизации программирования и отладки программ (САПО) “Яуза-6”. Система быстро развивалась, расширялся перечень автоматизируемых функций. Были созданы и введены в систему:
- настраиваемые на архитектуру объектной ЭВМ трансляторы с трех взаимосвязанных языков программирования (ассемблера, макроязыка и алголоподобного языка высокого уровня);
- диалоговые средства взаимодействия программистов с технологической ЭВМ;
- средства планирования тестирования на базе графовых моделей программ и их автономной отладки для объектных ЭВМ в режиме интерпретации;
- средства формализованного контроля корректности структуры программных модулей;
- средства для формирования и использования базы данных проектирования, контроля проведения изменений и сопровождения версий комплексов программ;
- средства автоматизированного выпуска широкой номенклатуры документов на программы и машинные носители.
На разработку системы Яуза-6 объемом свыше 350 тыс. строк автокода БЭСМ-6 было затрачено около 400 человеко-лет. К концу 1979 г. кросс-система “Яуза-6” была настроена более чем на 25 архитектур объектных управляющих ЭВМ и передана для эксплуатации в 14 организаций различных ведомств. Проявилась высокая рентабельность адаптируемых кросс-систем, которые позволили повысить производительность труда специалистов при создании крупных программ реального времени до 2-3-х строк ассемблера в день на человека при высокой эффективности объектного кода. Кроме того, стало ясно, что повышение уровня языков программирования значительно увеличивает потребности в памяти и производительности объектных ЭВМ и относительно слабо влияет на производительность труда специалистов при разработке комплексов программ для этих ЭВМ. Интегрирование программных компонентов и комплексная отладка их в системе требуют больших затрат и нивелируют возможное изменение затрат на непосредственное программирование компонентов. Дальнейшее повышение производительности труда разработчиков комплексов программ стало осуществляться в основном за счет накопления и многократного повторного использования в различных проектах систем готовых апробированных программных компонентов.
На базе компонентов “Яузы1-6” в конце 70-х годов для создания программ первых появившихся в стране микропроцессоров типа Intel 8086 и Intel 3000 была разработана система “Темп”, которая нашла широкое применение программировании соответствующих встраиваемых микроЭВМ.
В 60-70-е гг. для рассматриваемых систем очень остро проявилась проблема качества и надежности решения функциональных задач в реальном времени. Проводить комплексную отладку программ в реальной внешней среде (в период натурных летных экспериментов) достаточно длительное время было экономически невыгодно. Поэтому все данные натурных экспериментов регистрировались в реальном времени на специализированных магнитофонах и затем многократно использовались как тесты для отладки программ. В середине 60-х годов начали активно разрабатываться расчетные имитаторы объектов и процессов внешней среды, информация которых записывалась в реальном времени на магнитофонах. Это позволило резко увеличить число тестируемых ситуаций внешней среды для проверки функционирования и отладки программ и тем самым ускорить работы и повысить их качество.
Однако заранее рассчитанные сценарии варьирования параметров внешней среды не позволяли учитывать обратную реакцию отлаживаемых программ на изменения внешней среды. Поэтому в конце 70-х годов в институте был разработан комплексный имитационно-моделирующий стенд на базе ЭВМ БЭСМ-6 и аппаратуры АС-6. Он позволил имитировать практически любые ситуации внешней среды с учетом обратных связей от контролируемых программ и резко сократить очень дорогие натурные эксперименты. После того как стенд и программы имитации были паспортизированы и аттестованы заказчиком, качественно изменились процессы испытаний систем. Редкие натурные испытания использовались только для подтверждения в отдельных точках результатов испытаний на имитаторах. Подобный же стенд служил испытателям и в качестве тренажера для обучения и подготовки оперативного и командного состава.
Одновременно решалась проблема корректной и однозначной обработки результатов экспериментов. Создателями технологической системы был предложен комплекс методик обработки и интерпретации каждого вида испытаний, которые тщательно согласовывались с заказчиком и представителем испытателей. Методически они обеспечивали всю программу испытаний, которые по существу соответствовали сертификации.
В конце 70-х годов институт получил большие ЕС ЭВМ, ресурсы которых были соизмеримы с БЭСМ-6 и достаточны для размещения сложных инструментальных кросс-систем. В это время была разработана технологическая кросс-система “Руза” (А. А. Штрик), которая базировалась на основных концепциях “Яузы-6” и исключала некоторые ее дефекты. Одновременно появилась инструментальная резидент-система “Протва”, автоматизировавшая создание комплексов программ для управляющих ЭВМ с архитектурой ЕС ЭВМ. Эти две системы широко тиражировались и распространялись Ереванским СНПО “Алгоритм”. По программе “Прометей” была разработана гамма отраслевых стандартов и руководящих документов Минрадиопрома, регламентировавших почти весь жизненный цикл сложных комплексов программ реального времени.
По мере возрастания объема комплексов программ увеличивалась их доля в общей стоимости информационных систем. Уже в конце 60-х годов это приводило к конфликтам между разработчиками и заказчиками. Последние не хотели признавать высоких затрат на создание программ и требовали их научного обоснования. По комплексной программе НИР “Прометей” в конце 70-х годов были начаты технико-экономический анализ и оптимизация технологических процессов разработки сложных комплексов программ. Было установлено, что производительность при полном цикле разработки сложных программных средств реального времени в объектном коде в 60-е годы составляла около 0,1-2 команд в день на человека, и доказано, что имеется возможность ее повышения более чем на порядок.
Индустриальное, коллективное создание крупных программных комплексов требовало структуризации, планирования и поэтапного регламентирования с учетом ограничений сроков и стоимости проектов. Для этого было необходимо детально исследовать реальные технико-экономические показатели (ТЭП) достаточно представительного набора проектов комплексов программ и создать на этой статистической базе методики прогнозирования трудоемкости, длительности и числа нужных специалистов по этапам работ и интегрально по проектам разных классов и объемов. Такое исследование было выполнено в начале 80-х годов по программе “Прометей”, в ходе которой проанализированы ТЭП около 250 реализованных проектов разных предприятий с общим объемом свыше 17 млн. строк текста. На базе этих данных было написано методическое руководство для оценки и согласования с заказчиками ТЭП разработки комплексов программ. Сокращенные результаты этих исследований опубликованы в 1988 г. в монографии В. В. Липаева и А. И. Потапова “Оценка затрат на разработку программных средств”.
В 80-е годы в работах по теме “Прометей” одновременно участвовало свыше 400 специалистов около десяти организаций ВПК. Группа ведущих специалистов за НИР “Прометей” и за создание комплекса инструментальных систем “Яуза-6”, “Руза”, “Темп”, значительно сокративших трудоемкость и длительность разработки программ реального времени, в 1985 г. были отмечены премией Совета Министров СССР.