В МОКБ "Марс", г. Москва,
http://www.mars-mokb.ru/ шли независимым от НПЦ АП путем, но получили нечто, во многом похожее на ГРАФИТ/ФЛОКС. Описал в виде эссе...
В одной заслуженной организации, подведомственной Федеральному космическому агентству, произошла следующая не сказка,а быль...
Но сначала предыстория...
28 июля 1962 г. космический аппарат Mariner I стартовал по направлению к Венере. Из-за поломки антенны корабль потерял связь с земными службами управления и перешел на автономное. Но в результате аппарат полетел совсем не в ту сторону и его пришлось взорвать. Последующее расследование установило, что в процессе программирования системы навигации была совершена маленькая опечатка — при написании одной из формул в спецификации программы был пропущен один символ...
4 июня 1996 г. Новая ракета-носитель Ariane 5, результат многолетней работы европейских ученых, гордость стран Евросоюза, взорвалась через 40 секунд после своего первого старта. Только научное оборудование на борту стоило около $500 млн, не говоря о множестве побочных финансовых последствий - общий ущерб оценивется в 7-8 млрд долларов. Система автоподрыва ракеты сработала после остановки обоих процессоров в результате цепочки ошибок в бортовых программах.
Запуск ракеты-носителя "Зенит" 12 марта 2000 по программе "Морской старт" (Sea Launch) закончился аварией. Через несколько минут после старта ракета "Зенит" отклонилась от курса и не смогла вывести на заданную орбиту первый спутник системы сотовой телефонной связи ICO Global Communications. В опубликованных выводах экспертов компании Боинг причиной сбоя называется программная ошибка. Из-за этой ошибки не был закрыт клапан в пневматической системе второй ступени ракеты. Двигатель не смог развить необходимую тягу, а ракета не вышла на заданную орбиту.
Известны и другие печальные "космические" истории, связанные с программными ошибками, приведшими к тяжелым последствиям.
В наш компьютерный век ЭВМ повсюду. Естественно, что они широко используются в ракетно-космической технике,
в том числе - в бортовых системах управления. Именно система управления - работающая обычно в автономном режиме даже
на пилотируемых космических кораблях - а большинство аппаратов - беспилотные, отвечает за принятие ключевых решений, от которых зависит выполнение поставленных задач и безопасность в режиме реального времени. При этом система управления, согласно известному
кибернетическому принципу Эшби, "должна обладать не меньшим разнообразием состояний, чем управляемая система". А управляемой системой здесь служит весь сложнейший космический комплекс!.
Руководитель лунной программы "Аполлон" Джо Ши говорил: "Хотя инженеры в любой области стремятся расценивать свои собственные разработки как наиболее ответственные, все же можно утверждать, что после создания необходимых ракетных двигателей основой надежного выполнения широких задач при длительных космических полетах являются вычислительные средства, имеющиеся на борту космического корабля".
Мозгом современной системы управления служит бортовая цифровая вычислительная машина - БЦВМ, или набор таких взаимосвязанных и резервированных машин, называемый БЦВК - бортовой цифровой вычислительный комплекс, БВС - бортовая вычислительная система, БЦВС - бортовая цифровая вычислительная система, иногда БИВК - бортовой информационно-вычислительный комплекс.
А непосредственно управление реализуется с помощью специальных управляющих программ. Их сложность и объем постоянно увеличиваются.
Программы пишутся людьми, а людям - увы! - свойственно ошибаться. В программисткой среде известна шутка "каждая программа содержит хотя бы одну ошибку". Программы дял космоса - особые. Они проходят многоэтапный процесс тестирования и отладки, в том числе - на специальных стендах, использующих как математические модели космического аппарата и его систем, так и настоящие устанавливаемые на борт приборы. И все же, как показано выше, выявить и устранить все ошибки не удается. Это и не удивительно - современные программные системы слишком сложны. По экспертным оценкам, в настоящее время стоимость и сроки разработки программной части бортовой вычислительной системы на порядок превосходят требуемые для создания аппаратной части. В авиакосмической отрасли характерным становится факт, что сроки разработки программно-математического обеспечения являются критическим путем на сетевом графике работ по созданию космического комплекса в целом, определяя общую длительность его проектирования, конструирования и отработки.
А программисты все ошибаются и ошибаются...
Отдельным вопроосом является документация. Как известно, программистов трудно заставлять снабжать свои творения прозрачной, полной
и ясной документацией. Документы могут отсутствовать совсем, быть неполными или версия описания существенно отстать от версии самой программы.И если в других областях, в которых применяются программные системы, вольности в плане сопровождения программ технической документацией, хотя и не красят разработчиков, все же допустимы, к ракетно-космической отрасли это не относится.
В космонавтике каждый важный документ содержит отдельный лист согласования, пестрящий разнообразными визами "Согласовано", "Утверждаю", и, как говорят, "подписывается кровью". Ведь цена слов здесь может быть весьма велика. Однако, каждое изменение в подобном документе
также должно быть согласовано всеми заинтересованными сторонами, и утверждено ответственным лицом. Бумажные версии путешествуют из отдела в отдел, от руководства к подчиненным - что существенно замедляет процесс создания изделий.
Как можно кардинально улучшить технологию разработки бортовых программ? Один из удивительно звучащих радикальных выходов звучит так: убрать "слабое звено"! Избавиться от человеческого фактора - если программисты-люди ошибаются, будем следовать лозунгу "программирование без программистов!".
Пусть специалисты по логике управления аппаратом - комплексники, алгоритмисты, инженеры бортовых систем - зададут требования (спецификацию) в удобном для них виде, например, графическом - а заведомо правильная программа генерируется сама, автоматически. Вместе с автоматически формируемой актуальной документацией!
Понятно, что ошибка может быть и в спецификации. Но в любом случае мы избавляемся от весьма трудоемкого и чреватого ошибками этапа создания программ. Соответственно, сроки и стоимость сокращаются - а производительность труда растет.
Еще одним важным свойством является то, что технология является фактически безбумажной. Нет, вся необходимая техническая документация неукоснительно генерируется - и со всеми надлежащими согласованиями и утверждеиями, что немаловажно в столь ответственной отрасли, как космическая. При этом ведется строгий контроль версий и разделение прав по запросу на внесение изменений, согласованию их и утверждению уполномоченными руководителями. Но все это происходит в вычислительной сети предприятия! Причем, говоря о программах, описанная система электронного документооборота одновременно является и системой контроля версий. А бумажная (или на оптическом диске) версия создается лишь для архива.
Подобной технологии нет в "самой передовой компьютерной стране" мира США. Там бортовые программы - в том числе, например, для знаменитого марсохода Curiosity - пишутся на языке программирования Си вручную...
Все это кажется сказкой. Но, как уже говорилось, это - не сказка, а быль. И подобная замечательная технология создания бортового программного обеспечения действительно была создана и внедрена в производственный процесс. От услуг целого отдела "бортовых программистов" - отказались.
Получается, специалисты упомянутой организации - впереди планеты всей!
Да, ее название - МОКБ "Марс". Практическое применение данной технологии, которое началось с 2008 года. За это время технологии постоянно развивались и на сегодняшний день предприятие полностью перешло на разработку программного обеспечения систем управления КА по данным технологиям. Например: КА KazSat-2, Электро-Л, Спектр-Р, Электро-Л2, Спектр-РГ и другие темы.