Слишком "громкий" заголовок? Не думаю. Что ж, приступим.
Слишком "громкий" заголовок? Не думаю. Что ж, приступим.
Рис. 1. Число строк программного кода бортового ПО F-35 на иллюстрации преувеличено. Сегодняшняя оценка ~10 млн. строк
Я сейчас не буду писать об аэродинамике всех трёх версий ударного истребителя F-35. О ней я
Оптимизация боевого самолёта для решения ударных задач практически всегда ухудшает его скоростные и маневренные характеристики (в качестве примера могу предложить отечественный многофункциональный истребитель-бомбардировщик Су-34, максимальная скорость которого снизилась до 1900 км/ч, в сравнении с 2500 км/ч истребителя Су-27, на основе которого Су-34 был создан). Не будем также забывать про "бюджетность" всей программы F-35. Как мог бы выглядеть НЕ бюджетный американский истребитель-бомбардировщик, понятно по проектным характеристикам так и не созданного на основе истребителя F-22A истребителя-бомбардировщика
Посредственные ЛТХ F-35 вполне предсказуемы, ведь создавался он отнюдь не для достижения победы в ближнем маневренном воздушном бою. Согласно избранной разработчиками концепции боевого применения, новый американский истребитель-бомбардировщик в такие бои с истребителями противника вступать не должен.
Тему авионики F-35 я недавно затрагивал, написав о его
Как известно, любой компьютер без предназначенных для него программ превращается в бесполезный набор металлических и полупроводниковых деталей. Без программного обеспечения авионика современного самолёта бесполезна. О разработке бортового программного обеспечения для самолёта F-35 сейчас и пойдёт речь. Начну, пожалуй, издали.
Стоит отметить, что программы для авиационных бортовых компьютеров, как и сами бортовые цифровые электронные вычислительные машины, появились
Первым языком высокого уровня, оптимизированным для написания программ авиационных БЦВМ, стал созданный в 1959-м году на основе языка
Вторым широко использовавшимся для создания бортового ПО языком высокого уровня, стандартизированным МО США в 1983-м году, стал язык
В чем причина столь широкого применения языка Ada при разработке ПО для систем военного назначения, управления транспортом и аэрокосмических применений? Кроме той причины, что язык был избран в качестве стандартного МО США (ANSI/MIL-STD-1815A-1983)? Дело в том, что надёжность функционирования создаваемого с помощью Ada ПО была главной парадигмой разработчиков этого языка:
"Основное назначение языка программирования Ада - разработка больших программных систем реального времени для встроенных компьютерных систем. Это, конечно, не исключает его использования при решении задач вычислительного характера, параллельной обработки, системного программирования и т.д. Более того, язык Ада часто рассматривают как язык общего назначения. Основное требование к программному обеспечению для встроенных компьютеров - это надежность. Именно поэтому в язык Ада введен целый ряд средств, направленных на разработку больших, сверхбольших и одновременно надежных программных комплексов."
"Перечислим некоторые причины, благодаря которым язык Ада был выбран для реализации программных проектов различными компаниями, либо сделан обязательным для использования в рамках тендеров.
- Желание повысить надежность разрабатываемой системы, так как программные дефекты могут иметь серьезные последствия для здоровья людей, экономики, экологии и т.п. (Ада обладает встроенными средствами обеспечения надежности).
- Желание снизить стоимость разработки и сопровождения системы.
- Наличие международных стандартов и наличие компиляторов языка практически для любой платформы.
- Преимущества дисциплинированного подхода к разработке программного обеспечения, которые становятся особенно существенными по мере увеличения объема и сложности программного обеспечения."
[...]
При проведении сравнительных анализов популярных языков переломано столько копий, что сегодня эту тему часто относят к разряду «религиозных войн». Поэтому ограничимся лишь ссылкой на известную статью [2], в которой делается ряд красноречивых выводов.
- Разработка программ на языке Ада обходится на 60% дешевле аналогичных программных проектов, реализуемых на Си.
- Программа на языке Ада имеет в 9 раз меньше дефектов, чем программа на Си; программа на Си++ имеет еще более низкие, чем программа Си, характеристики.
- предпочтительнее Си как для опытных, так и для неопытных программистов, а также для программистов, имеющих как максимальный, так и минимальный рейтинг в своей группе.
- Трудоемкость изучения языка Ада не выше трудоемкости изучения Си.
- Программы на Аде более надежны, чем программы на Си.
В качестве иллюстрации этих выводов, приведем пример разработки бортового программного обеспечения самолета C-130J в соответствии с требованиями Уровня А стандарта DO-178B [3]. При этом констатировалось качество кода, в 10 раз превышающее среднее для программного обеспечения Уровня А. Производительность труда выросла вчетверо относительно сопоставимых программных проектов."
[2] - Stephen Zeigler, Comparing Development Costs of C and Ada.
[3] - P. Amey, Correctness by Construction: Better Can Also be Cheaper. CROSSTALK: Journal of Defense Software Engineering, March, 2002.
"В качестве "родителя" для Ады куратор проекта по разработке этого языка Жан Ишбиа выбрал Паскаль. В итоге язык получился очень строгим - более строгой типизации нет ни в одном другом языке программирования. А ещё благодаря этому тексты программ легко читаемы.
[...]
К сожалению, обратная сторона медали - это многословность Ады. На стойких адептов C/C++ она действует, словно красная тряпка на быка. Однако стиль программирования, в который Ада деспотично "вгоняет" программиста, способствует резкому снижению времени, нужного для отладки программы. Благодаря строгой типизации, явному объявлению всех используемых переменных и модулей, мощному механизму обработки исключений, Ада даёт возможность (можно даже сказать, навязывает) писать максимально надёжные программы. Нельзя сказать, что средства для работы с исключениями отсутствуют в С++, а Паскаль - язык с нестрогой типизацией. Однако почему-то Ада сокращает время отладки программ на 60%, увеличивая при этом среднее время написания проекта всего лишь на 10%. Думаю, посчитать чистую разницу несложно. А поскольку отладка C/C++-проектов нередко занимает до двух третей общего времени разработки, экономия получается существенная."
Что ж, думаю, разговор о достоинствах (с упоминанием некоторых недостатков) языка Ada можно закончить, и вернуться к нашим баранам теме, обозначенной в заголовке. Дело в том, что основными языками программирования, выбранными для создания ПО самолёта F-35, оказались языки C (
Рис 1. Доля языков программирования при написании ПО F-35. 53% C, 35% C++, 7% ассемблер, 5% Ada 83, менее 1% другие
ТАДАМ!!
В отличие от подавляющего большинства современных американских авиационных проектов, в том числе и от проекта разработки прототипа будущего F-35, самолёта X-35, для написания бортового ПО F-35 была выбрана не Ada, а языки C и С++. В качестве причины такого выбора англоязычная википедия указывает programmer availability, то бишь дефицит на рынке программистов, способных писать на Ada, к началу реализации проекта F-35. Очень небольшая часть ПО для F-35 всё же написана на Ada 83, та, что была портирована с F-22A.
С последствиями создатели F-35 борются уже несколько лет. Несмотря на выбранную тактику постепенного наращивания сложности бортового ПО (шесть этапов), начиная от версий Block 1A и 1B, через версии Block 2A, Block 2B, Block 3F, заканчивая финальной версией Block 3F (о версиях ПО F-35 можно почитать
У коллеги
и
Электронное устройство, попытка включения которого, как правило, заканчивается зависанием ПО с необходимостью последующей перезагрузки, сдаётся покупателем назад в магазин с последующим возвратом денег или заменой на аналог. Увы для Пентагона, такой "гаджет" как F-35 "вернуть в магазин" и получить деньги назад, невозможно.
С учётом всего написанного выше, я буду очень удивлён, если финальная версия бортового ПО F-35 Block 3F будет доведена до относительно работоспособного состояния ранее 2020-х годов.
Спасибо за внимание!
P.S. Бортовое ПО F-22A было написано на стандартизированном в 1983 г. языке Ada 83. В стандарте 1995 года (Ada 95) в язык были добавлены базовые средства объектно-ориентированного программирования. В стандарте 2005 года (Ada 2005) эти средства были дополнены, поэтому современная Ада — объектно-ориентированный язык программирования. В стандарт 2012 года, который на сегодня
Оригинал взят у ak_12
© 2009 Технополис завтра
Перепечатка материалов приветствуется, при этом гиперссылка на статью или на главную страницу сайта "Технополис завтра" обязательна. Если же Ваши правила строже этих, пожалуйста, пользуйтесь при перепечатке Вашими же правилами.