Очерки истории отечественной программной инженерии в 1940-е – 80-е годы - Владимир Липаев
Шрифт:
Интервал:
Закладка:
Командные пункты управления активными средствами ПВО были построены на стационарных, полупроводниковых ЭВМ «Радон» (главный конструктор Сергей Алексеевич Крутовских) и комплексах расширения памяти «Кристалл» (впоследствии на ЭВМ «Гранит»). Сотни тысяч команд в программах командного пункта были разработаны в машинных кодах под руководством Залмана Михайловича Бененсона к 1968-му году, а затем развивались и совершенствовались многие годы. В разработке алгоритмов и программ участвовало свыше двухсот человек.
Система ПВО базировалась на множестве подвижных радиолокационных узлов (РАУ), образующих почти сплошное поле радиолокационного обнаружения в стране. Для автоматизированной системы обработки информации радиолокационного узла «Межа» использовалась мобильная ЭВМ 5Э89 (см. п. 2.6). На машине выполнялась обработка информации, поступающей в реальном масштабе времени от радиолокаторов кругового обзора, и автоматизированное сопровождение воздушных целей, истребителей и ракет. Разработка опытного образца системы ПВО была успешно завершена в 1968-м году, и началось ее серийное производство. Разработка программ РЛУ была очень трудоемкой и показала необходимость автоматизации проектирования и производства комплексов программ реального времени.
Концепция технологии программной инженерии была развита и апробирована в середине 70-х годов при проектировании и внедрении в ПВО версий системы автоматизации разработки программного обеспечения (САРПО см. п 3.5) и комплексных испытательных моделирующих стендов (КИМС), на предприятиях различных отраслей оборонной промышленности (см. главу 4). Ее основные положения первоначально использовались и испытывались при создании инструментальных систем САРПО, а также на их основе в течение всего жизненного цикла ряда систем оборонного назначения. С использованием этих САРПО были разработаны и сопровождались программные продукты с общим объемом в несколько десятков миллионов команд.
Конструктивные характеристики, и особенности функционирования объектов разработки оборонных систем, принятые при создании ПРОМЕТЕИ – технологии, отличались от других комплексов программ в следующем:
• высокая информационно-логическая и
структурная сложность комплексов программ;
• большой размер (объем) создаваемых комплексов программ – до нескольких сотен тысяч операторов – строк текста программ;
• большая размерность – число входящих компонентов (модулей) до нескольких тысяч;
• разнообразие обрабатываемых типов и единиц данных, число которых могло доходить до нескольких десятков тысяч;
• наличие глубокой связности программных компонентов по информации и управлению и необходимость их комплексирования в целостный комплекс программ;
• высокая логическая сложность программных компонентов – среднее число команд принятия решений (альтернатив) в программах – одно на 5 – 10 команд;
• основной способ запуска функциональных программ для исполнения – автоматический от информации, поступающей от объектов внешней среды или от других программ в случайные моменты времени;
• полное и глубокое документирование компонентов и комплексов программ, продолжительное конфигурационное управление и сопровождение версий программных продуктов.
Особенности функционирования создаваемых комплексов программ, определившие ПРОМЕТЕЙ-технологию в целом и характеристики инструментальных систем автоматизации, включали:
• ограниченность ресурсов памяти и производительности специализированных ЭВМ, ориентированных на решение целевой, функциональной проблемы конкретной системы обработки информации и управления;
• требования малого времен реакции – отклика (миллисекунды или секунды) на поступающую информацию от объектов внешней среды, и подлежащую обработке;
• большое число асинхронных, взаимодействующих с комплексом программ внешних источников и потребителей информации (десятки, сотни);
• высокие требования к качеству, надежности и безопасности функционирования комплекса программ, вследствие чего необходима высококачественная отладка и испытания в динамике в условиях имитированной и реальной внешней среды;
• набор штатных внешних устройств и диалоговых средств таких ЭВМ был ограничен и не позволял на них вести автоматизированную разработку комплексов программ;
• длительное зачастую непрерывное функционирование комплексов программ при эксплуатации (круглосуточно, годами).
Область применения технологии определила методы и средства автоматизации регламентированных процессов реализации комплексов программ, автоматизацию всех функционально связанных этапов и операций технологического процесса. В частности, это достигалось созданием общей базы данных проектирования, в которой хранились компоненты комплекса программ во всех формах представления (исходные спецификации, тексты программ на языке и в объектном коде, тесты, документы и т. д.). Сквозная, технология программной инженерии включала скоординированную автоматизацию всех этапов ЖЦ, как отработку комплекса программ на специально выделяемой технологической ЭВМ (кросс-технология), так и на специализированной мобильной ЭВМ, реализующей комплекс программ (резидент-технология). Для этого использовались следующие основные технологические принципы:
• реализация технологических инструментальных систем для обеспечения автоматизации жизненного цикла, программирования и отладки комплексов программ, специализированных ЭВМ на универсальных машинах с большими вычислительными ресурсами и единой базой данных проектирования;
• автоматизированная настройка трансляторов, интерпретаторов и всего унифицированного технологического инструментария на архитектуру различных специализированных ЭВМ и характеристики создаваемых программных продуктов реального времени;
• применение системы взаимосвязанных языков программирования, преимущественно уровня автокода и макроязыков, для обеспечения высокой эффективности программ по использованию памяти и производительности, специализированных ЭВМ в реальном времени.
Эффективность автоматизации процессов разработки и сопровождения в значительной степени определялась унификацией и упорядоченностью, как технологического процесса разработки, так и полнотой документирования проектируемого комплекса программ. Были регламентированы технологический процесс, состав, формы представления результатов и критерии качества выполнения последовательных этапов работ. Для этого была разработана совокупность взаимосвязанных методов, обеспечивающих регламентацию и автоматизацию жизненного цикла комплекса программ на всех этапах технологического процесса. Развитая методология учитывала, что ЖЦ комплекса программ связан с выполнением как творческих (разработка алгоритмов, распределение функций комплекса программ по компонентам, выбор структуры комплекса программ, тестов, отладка и т. п.), так и значительного числа нетворческих, рутинных операций (ввод текстов, сбор сводных данных, контроль выполнения формальных правил программирования и т. п.). Качество комплексов программ должно было обеспечено автоматизацией и контролем операций.
При создании средств автоматизации особое внимание было уделено организации комфортного и рационального диалогового общения пользователей-разработчиков со средствами автоматизации и наглядному представлению обобщающей информации специалистам. Разделение видов и объектов труда разработчиков и регламентация результатов этапов работ являлась основой для разграничения ответственности специалистов разной квалификации за качество конечного продукта – модулей, компонентов и комплексов программ. Этот принцип определял необходимость формализации требований к форме представления и качеству результатов каждого этапа работ в технологическом процессе. Долгосрочное и оперативное поэтапное планирование работ коллектива на основе доступных ресурсов (трудоемкости, ресурсов технологической и специализированной ЭВМ) должно было обеспечивать автоматизированный контроль хода проектирования и оперативное корректирование планов с учетом этапа разработки, наличия и квалификации специалистов и имеющихся ресурсов.
Исследования по программе ПРОМЕТЕЙ позволили уточнить ряд положений концепции по организации коллективов специалистов при создании крупных комплексов программ реального времени (см. главу 4). В 60-е годы были предприняты организационные меры, алгоритмисты и программисты объединены в небольшие группы – «команды» для полного решения определенных функциональных задач, входящих в крупные системы. Руководитель такого относительно небольшого коллектива – «команды» (5 – 10 человек), полностью отвечал за результаты и качество решения конкретной функциональной задачи системы и был обязан достаточно хорошо разбираться в программировании и в ее алгоритмах. Отдельный коллектив, наиболее квалифицированных специалистов – интеграторов выделялся для комплексирования набора программных компонентов ряда функциональных задач в целостный комплекс программ.