Прежде чем приступить к рассмотрению вопросов, связанных с проектированием программного обеспечения АПрС для решения задач прицеливания и управления БАК при боевом применении НАСП, следует рассмотреть основные тенденции [4] в разработке ПО для встроенных систем.
В настоящее время перед разработчиками ПО для авиационных систем стоит задача внедрения новых технологий программирования в процесс разработки ПО. Актуальность этой проблемы определяется, в основном, двумя факторами: значительным увеличением сложности задач, решаемых ПО КБО, и появлением бортовых вычислительных машин нового поколения. Кроме того, использование всеми разработчиками единой методической базы, стандартов и библиотек готовых программных продуктов, средств автоматизации проектирования и разработки позволит улучшить качество ПО КБО, значительно сократить капиталовложения и сроки его разработки, выйти на новый уровень разработки ПО, соответствующий современным требованиям.
Рассмотрим основные методы проектирования и программирования сложных технических систем. Существует несколько технологий разработки ПО. Поэтому, процессу внедрения должен предшествовать процесс выбора. С этой целью рассмотрим особенности ПО КБО и возможности различных технологий программирования.
ПО КБО является системой реального времени, конфигурация которой зависит от конкретной ситуации. Его сложность обусловлена четырьмя основными причинами: сложностью исходной задачи, сложностью управления процессом разработки, сложностью обеспечения дальнейшего наращивания и использования, сложностью тестирования.
ПО КБО должно обеспечивать решение таких сложных и разнотипных задач как: пилотажно-навигационные задачи, задачи боевого применения АСП, задачи формирования информационно-управляющего поля (ИУП) кабины боевого ЛА, экспертные задачи, задачи организации взаимодействия между различными системами бортового оборудования и задачи организации вычислительных процессов в реальном времени. Дополнительными требованиями являются удобство, производительность, цена, выживаемость и надежность. Таким образом, сложность ПО КБО определяется, в первую очередь, сложностью исходной задачи.
В разработке ПО КБО принимают участие большие коллективы разработчиков. Организация взаимодействия между ними, при котором поддерживалась бы целостность основной идеи разработки, и обеспечивались бы сроки выполнения, является еще одной проблемой разработки ПО КБО.
При проектировании ПО КБО должна учитываться возможность его дальнейшего наращивания и использования. Для обеспечения такой возможности требуется разработка единых базовых конструкций ПО и механизмов их взаимодействия, стандартов и библиотек, согласованных со всеми разработчиками.
К ПО КБО предъявляются повышенные требования в части надежности и предсказуемости функционирования. Это требует проведения всеобъемлющего тестирования. Проведение такого тестирования является задачей повышенной степени сложности.
Таким образом, сложность является объективным и неотъемлемым признаком ПО КБО в целом и АПрС в частности.
Для решения проблемы сложности используют методы декомпозиции, абстрагирования и построения иерархий, которые позволяют описать сложную систему в виде иерархических структур [17]. Представленные только в таком виде сложные системы могут быть исследованы, запрограммированы и оттестированы, не выходя за рамки человеческих возможностей. Поэтому, все технологии разработки сложных программных систем включают в себя данные методы.
Следовательно, выбор технологии программирования должен определяться затратами на анализ, проектирование и программирование ПО АПрС, объемом программного кода и временем выполнения, возможностями дальнейшего наращивания и использования при применении различных технологий. С большой степенью достоверности можно сказать, что лучшей будет являться та технология, которая обеспечивает наиболее адекватное описание свойств ПО АПрС.
Принципиальное различие между технологиями программирования заключается в подходе к декомпозиции сложной системы. Методы проектирования и языки программирования, поддерживающие алгоритмическую декомпозицию, образуют структурные технологии программирования. Методы проектирования и языки программирования, поддерживающие объектно-ориентированную декомпозицию, образуют объектно-ориентированные технологии программирования.
При алгоритмической декомпозиции ПО АПрС проектируется в терминах задач и алгоритмов, обеспечивающих их решение. Вначале, разрабатывается иерархическая структура всех задач, решаемых ПО. Такая модель задач описывает логическую структуру ПО в статическом аспекте. Конфигурация ПО АПрС зависит от конкретной ситуации. Для отражения этого аспекта проектируется модель, определяющая структуру задач, решаемых в каждой конкретной ситуации. Такая модель задач описывает логическую структуру ПО в динамическом аспекте. На основании указанных моделей задач проектируются модели алгоритмов, обеспечивающих их решение.
Этап программирования заключается в описании статической и динамической моделей алгоритмов средствами одного из структурных языков программирования. На основании моделей алгоритмов проектируются модели функций, которые определяют функции, реализующие алгоритмы, и данные, которыми они оперируют.
На основании моделей функций проектируется модульная структура ПО. Модуль – это набор логически взаимосвязанных функции и данных, которыми они оперируют. При проектировании модулей минимизируются связи между ними, учитываются возможности внесения в них изменений, дальнейшего их использования и расширения. Модульная модель описывает физическую структуру ПО. После этого приступают к этапам кодирования, тестирования и сборки ПО.
Такая модель построения ПО является моделью модульного программирования.
Приведенная схема разработки свидетельствует о том, что ПО АПрС обладает свойствами, которые не могут быть описаны средствами структурных технологий. Такими свойствами являются множественность объектов одного типа и общность между объектами ПО. Следовательно, структурные технологии не позволяют адекватно описать свойства ПО АПрС.
При объектно-ориентированном подходе ПО АПрС проектируется в терминах объектов и классов. Объекты обозначают конкретную сущность, определенную во времени и пространстве. Классы представляют собой абстракции, которые содержат описание структуры и поведения всех объектов, связанных отношением общности.
На этапе анализа выявляются классы и объекты, составляющие словарь предметной области. Для выявленных объектов определяются их структура и поведение. Выделение общих и индивидуальных свойств объектов позволяет создать иерархию классов. Классы включают в свой состав методы, определяющие также и динамические свойства объектов. Этап анализа завершается описанием структур объектов и структур классов.
На этапе проектирования определяются механизмы взаимодействия между объектами, которые обеспечивают решение стоящих перед ПО задач. Этап проектирования завершается созданием структуры объектов, описывающей такое взаимодействие. При необходимости можно вернуться к этапу анализа.
Далее производится составление программ, их тестирование разработчиком и сборка. При составлении программ классы и объекты распределяются по модулям. Модульная модель описывает физическую структуру ПО. При необходимости можно вернуться к этапам анализа или проектирования.
Такая модель построения ПО является моделью объектно-ориентированного программирования.
Приведенная схема разработки позволяет сделать вывод о том, что объектно-ориентированные технологии позволяют адекватно описать свойства ПО АПрС. Следовательно, для разработки ПО АПрС должен быть сделан выбор в пользу объектно-ориентированной технологии программирования.
Однако внедрение в настоящий момент объектно-ориентированных технологий в процесс разработки ПО АПрС сопряжено с рядом сложностей. К ним относятся отсутствие единых средств анализа и проектирования, стандартов и библиотек, опыта разработчиков. Поэтому основные тенденции разработки ПО АПрС будут заключаться в переходе от функционального программирования к модульному.
Основные достоинства модульного программирования заключаются в следующем:
- модульная структура ПО позволяет организовать взаимодействие коллектива разработчиков;
- модульное программирование позволяет значительно упростить программирование, тестирование и внесение изменений за счет декомпозиции всего пространства данных и функций по модулям, их раздельной разработки и тестирования, использования механизмов сокрытия данных и раздельной компиляции;
- модульная модель отражает логическую структуру ПО, что облегчает понимание, дальнейшее использование и расширение ПО;
- модели, модули и отдельные функции разработанного ПО могут использоваться в качестве базовых конструкций в дальнейших разработках, так как представляют ключевые понятия предметной области.
При этом параллельно следует разрабатывать отдельные элементы объектно-ориентированных технологий: языки для описания моделей, правила упорядоченного проектирования моделей, средства автоматизации анализа и проектирования, модели и библиотеки классов.
Разработка бортового ПО АПрС является сложным, многоэтапным технологическим процессом [18], который включает:
- математическое моделирование на персональном компьютере;
- отработка на комплексе полунатурного моделирования;
- отработка в процессе натурных испытаний в составе БАК.
На каждом из этапов используются математические средства, обеспечивающие отработку алгоритмов и сопровождение испытаний, поэтому очень важно на начальном этапе разработки комплексов обеспечить наибольшую преемственность ПО от этапа к этапу. Это достигается рациональным выбором вычислительных и языковых средств, обеспечивающих совместимость программ на различных этапах отработки. Решение задачи языковой и информационной совместимости ПО способствует сокращению сроков создания АПрС.
В перечне задач, решаемых КБО при боевом применении НАСП, в соответствии с физической сущностью и функциональным назначением проведено следующее разделение задач и процессов:
- задач навигации и управления ЛА;
- задачи прицеливания и применения НАСП;
- моделирование ИУП кабины ЛА;
- управление процессом моделирования, регистрация и обработка результатов моделирования.
Для моделирования задач навигации и управления ЛА, разрабатываются модель ЛА, определяющая динамику его движения в продольном, боковом и скоростном каналах, и модель навигационной системы, включающая программные модули (ПМ) определения и коррекции фазовых координат ЛА.
Для моделирования задач прицеливания и применения НАСП разрабатываются модели цели и комплекса обзорно-прицельных средств, а также ПМ управления ОПС, определения фазовых координат цели и баллистического обеспечения АПрС.
Для имитации ИУП кабины ЛА разрабатываются ПМ формирования прицельной символики для индикации экипажу средствами СОИ и ИУП кабины, а также программные средства имитации оперативных органов управления кабины ЛА.
Для управления процессом моделирования, регистрации и обработки результатов моделирования, разрабатываются ПМ управления режимами АПрС, а также программные средства имитатора наземного комплекса подготовки полетных заданий и имитатора бортовой системы объективного контроля.
Структура объектов и задач, решаемых комплексом бортового оборудования БАК при боевом применении НАСП, представлена на рис. 16.