Интервью с разработчиком инопланетного софта: «Случись что, моя задница приняла бы основной удар»

в 21:01, , рубрики: edisonsoftware, Блог компании Edison, марсоход, отказоустойчивость, Программирование, проектирование, Промышленное программирование, разработка, Разработка робототехники

В день программистки, представляем вашему вниманию интервью с разработчиком, который смог отдебажить марсоход за 18 часов на расстоянии 100 миллионов миль. Тем более, что часть кода космического аппарата была написана на языка Ada.

image

DDJ: Вы программируете компьютеры, которые работают на поверхности другой планеты. Вот это необычно!

GR: Это необычно и для меня, могу вас заверить. Это такой микромир, где все сосредоточены на том, чтобы все задачи следующего дня были выполнены в соответствии с планом.

Вы идете домой в 3 утра, все еще в напряжении от просмотра возвращающейся информации и бессонной ночи. Ваши жена и дети уже спят, вам же точно не уснуть, а в 8 утра уже надо быть на работе. Поэтому вы включаете CNN и смотрите на свое улыбающееся лицо в контрольном центре и смотрите на те же изображения, которые вы просматривали 12 часов назад. Очень странное ощущение.

Это был маленький проект маленькой кампании, однако он очень повлиял на многих из нас. Отмечу также, что с технической точки зрения, проект был своевременным.

Миссия «Mars Pathfinder» была первой миссией в рамках программы NASA «Discovery» — десятилетняя программа по роботизированному исследованию космоса. Основные цели миссии включали поиск свидетельств существования в прошлом жизни на Марсе, накопление информации о марсианском климате и использования ее для объяснения прошлых и прогнозирования будущих климатических изменений на Земле, выявление ресурсного потенциала, который в последствии может быть использован в ходе экспедиций людей на Марс. Этот проект Лаборатории реактивного движения (JPL) был одним из самых амбициозных и пристально наблюдаемых среди всех космических проектов в истории JPL.

Pathfinder состоял из стационарной посадочной станции и марсохода Соджернер (Sojourner), основной задачей которых была демонстрация возможности осуществления малозатратной посадки и исследования поверхности Марса. Система Pathfinder была сконструирована из стандартных программных и аппаратных компонентов. Сердцем системы был единственный процессор — RS6000 — под управлением операционной системы реального времени VxWorks компании Wind River Systems.

Pathfinder был запущен 4 декабря 1996 г. и семь месяцев летел до Марса. Он приземлился на Марсе 4 июля 1997 г., и Соджернер практически сразу начал проводить эксперименты и собирать данные. За первый месяц работы на поверхности NASA получило около 1,2 Гбит информации, в том числе 9669 изображений от Станции и 384 изображения от Соджорнера, а также около 4 млн. измерений температуры, давления и ветра.

Внезапно 27 сентября 1997 г. связь с Соджорнером была потеряна, т.к. система начала постоянно перезагружаться. Большинство СМИ поспешили ухватиться за эту новость и ошибочно окрестили случившееся «непредвиденными сбоями ПО в результате того, что марсоход пытался сделать слишком много вещей одновременно».

Проблема же, как быстро обнаружили инженеры JPL, в том числе Гленн Ривз, была в инверсии приоритетов — явление, знакомое инженерам операционных систем, работающих в режиме реального времени, уже более 20 лет. Вопреки большинству сообщений СМИ проблема едва ли была внеземной: задача с низким приоритетом (например, сбор метеорологических данных) иногда завладела семафором, который требовался высокоприоритетной задаче (например, управление шиной), а потом ее вытесняли из памяти задачи со средним приоритетом (например, по осуществлению связи). Таким образом, высокоприоритетное задание не могло быть выполнено в заданный срок. В таких случаях защитный алгоритм перезагружал систему.

Перезагрузка системы приводила аппаратное и программное обеспечение в исходное состояние. Она также прекращала выполнение текущих заданий, поступивших с Земли. Данные, которые были уже собраны, не стирались. Однако невыполненная часть заданий этого дня не могла быть закончена до следующего дня.

Инженеры JPL не только были в курсе об инверсии приоритетов с самого начала, но и заранее продумали возможные сценарии возникновения подобного. Поэтому они смогли оперативно воссоздать проблему на дубликате системы в лаборатории и отправить решение — изменение приоритета системы по умолчанию на выбор определения семафора — космическому аппарату на расстоянии 100 млн. миль. (Вот он, дистанционный ремонт!) Инженеры предусмотрительно заранее создали два образа контролирующего ПО, что позволяло удалить и обновить один из них с Земли. Но команда все же решила подлатать одну из двух копий дистанционно, из опасения потерять возможность загрузки незатронутой версии.

В итоге, все прошло хорошо. Космический аппарат завершил свою миссию. Ривз, который сейчас является Главным инженером в проекте по созданию системы данных, встретился с журналистом «DDJ» Д. Воуэром и рассказал о миссии Pathfinder и других аспектах написания ПО для инопланетных исследований.

DDJ: Надо думать, написание кода ничем не отличалось от любого другого проекта в режиме реального времени.

GR: Что касается баллистической составляющей, то мало что можно изменить. Там есть некоторая неопределенность, так как вы полагаетесь на информацию, полученную 22 года назад. Но в целом мы старались упростить эту задачу как могли. Мы закручивали космический аппарат, мы использовали инерцию… управление не было такой уж сложной задачей. Сложной задачей было предусмотреть, что может пойти не так, что мы будем делать, если что-нибудь сломается… ведь очень немногое можно заменить. Как мы должны протестировать все? Как мы можем воссоздать те условия, в которых будет лететь аппарат? Подобные вопросы оказываются намного сложнее самой разработки космического аппарата.

DDJ: Это вечная проблема при разработке сложных систем, то, как провести проверку в условиях отличных от лабораторных.

GR: Космос довольно снисходителен, мало сил, все лишь действие и реакция. Прохождение атмосферы — уже другое дело, но и тут мы можем проделать достаточно симуляций. Мы сдались на этапе просчета сотрясений и ориентации транспортного средства, а также симуляции показаний акселерометра во время движения. Это было слишком сложно. Однако мы тестировали аппарат на физическое воздействие так сильно, как только могли.

DDJ: Вы сбрасывали его с высокого здания?

GR: Мы проводили испытания на прочность. Мы делали много тестов с подушками безопасности, пока не доказали себе, что они могут выдержать отскоки при посадке, что они не сдуются, что смогут сохранить необходимый уровень давления, что материал подушек преждевременно не порвется. К тому же, они втягиваемые. Их затягивают внутрь проводами.

Мы имитировали ситуации, когда подушка обернулась вокруг камня, чтобы посмотреть, как поведут себя приводы, не застрянут ли они, оставив подушки безопасности снаружи развеваться на ветру. На это у нас ушло два или три года, и это, наверно, была самая затратная часть нашей испытательной программы.

Задачи же по ориентации, открытию створок и перевороту транспортного средства фактически решаются в лоб: посадите аппарат, считайте показания акселерометра, проследите за тем, что нужная створка открывается в нужном порядке.

В итоге, чертова штуковина отскочила 16 раз от поверхности и приземлилась как раз на свое основание и все воздушные подушки были втянуты внутрь, именно так, как и должно было быть. В этой миссии все прошло по идеальному сценарию.

DDJ: Хотелось бы очень узнать о задаче по программированию в сравнении со всем ходом проекта.

GR: В ходе миссии, большая часть навигации осуществлялась с Земли. Положение аппарата контролировалось бортовыми системами.

JPL раньше конструировала свои собственные компьютеры, в одно время мы сами делали процессоры. Но теперь нет, лучше этим искусством пусть занимаются частные компании. Теперь бортовые компьютеры — серийные изделия.

Тогда это был второй раз, когда JPL решило купить бортовой компьютер по заказу. Мы предусмотрели, что на компьютер будет установлена специальная операционная система. Поэтому я немало написал спецификаций к бортовому компьютеру.

Я был хорошо знаком с VRTX (Mentor Graphics) и VxWorks (Wind River Systems), а также работал с pSOS (Integrated Systems). Поэтому я составил спецификацию вполне универсальной операционной системы реального времени.

IBM, победитель в тендере на бортовой компьютер, предложила OSOpen, выполненный отделением IBM Raleigh, что в Северной Каролине. Это была ранняя бета-версия. Мы с ней ознакомились, и они должны были еще доработать ее. Потом, внезапно, где-то в 1993-1994 г. IBM Federal Systems была продана компании Loral. Что ранее было одной компанией, стало двумя подразделениями двух крупных противодействующих компаний. Стало очевидно, что мы не получим операционную систему реального времени от этих ребят в Raleigh в срок.
Тогда мы решили обратиться в Wind River и узнать, что они смогут портировать на наш RAD6000.

DDJ: Оригинальная архитектура IBM RISC, устойчивая к радиации?

GR: Именно. На самом деле, мы подкупили Wind River возможностью прекрасной рекламы их системы VxWorks, если они адаптируют ее к нашему процессору. Они согласились и сделали это достаточно недорого и быстро. Через шесть месяцев у нас уже была работающая версия VxWorks.

Они прониклись идеей и сразу определили людей на решение этой задачи. Они очень оперативно все сделали, не было никаких препирательств по контракту. Когда возникали трудности… у меня была команда из 7 человек, занимающихся разработкой ПО для этого (отдельное внимание марсоходу)… общение по техническим вопросам было напрямую между инженерами, без прослойки менеджеров по контракту. Это было хорошее взаимодействие. Они сделали хорошую работу.

DDJ: А когда вам нужно было обновлять систему «на лету»?

GR: Это стандартная процедура. Вы всегда встраиваете возможность изменить ее, независимо от условий.

DDJ: На всякий случай.

GR: На всякий случай, но JPL и несколько значительных компаний сталкивались с такой проблемой, когда невозможно получить готовое ПО ко времени запуска. Всегда нужно проверить, что предусмотрели возможность изменить что-то.

DDJ: Когда вы отправляете что-нибудь на расстояние более 30 млн. миль, всегда есть риск того, что случится что-то не предусмотренное.

GR: Ну, как мы уже говорили, в космосе щадящие условия, но что касается поверхности Марса и других мест, тут вы правы. Что нам на самом деле бы очень хотелось, так это построить космический корабль, который был бы намного умнее при преодолении неожиданных трудностей без взаимодействия с Центром.

DDJ: Настоящего робота! Вы были фанатом Азимова, когда были ребенком?

GR: Все еще! И ребенок, и фанат Азимова.

DDJ: Что подразумевала ваша должность «Руководитель отделения по разработке пилотажного ПО» в ходе миссии Pathfinder?

GR: Я был ответственным за развитие и функционирование пилотажного ПО космического аппарата. Случись что, моя задница приняла бы основной удар.

DDJ: Управление разработкой ПО, последний рубеж! Как вы, ребята, вообще сдаете работу?

GR: Вот мое мнение, почему в Pathfinder все так отлично отработало: мы были сосредоточены. У нас были конкретные цели: запустить аппарат, доставить его до Марса, провести сквозь атмосферу, доставить марсоход на поверхность. Нам удалось сосредоточить внимание каждого в команде на этих целях.

Кроме того, в JPL тогда носились с этим Абсолютным Управлением Качеством (TMQ), поэтому они тогда много говорили о предоставлении полномочий, компетенциях и ответственности.

Некоторые из нас, несмотря на, мягко говоря, скептичное отношение к TMQ, кивнули и взяли на вооружение. Если уж даете полномочия, то мы реально будем принимать решения. И весь проект так работал. Управление на самом деле доверяло людям, работающим над проектом.

Приходилось и вправду брать на себя ответственность за тех, кого ты привлекал к работе.
Мы не были большим проектом JPL. Одновременно в заключительной фазе находился проект Кассини, в котором было задействовано до 3000 человек. Над Pathfinder работали где-то 300 человек. Поэтому, команда была очень хорошо подогнана.

Все это способствовало успеху с точки зрения менеджмента. Мне бы очень хотелось сказать, что для JPL это было уроком, и она стала применять этот опыт на последующих проектах, однако я вынужден констатировать обратное. Многие люди посчитали Pathfinder удачным, однако же я слышу: «Мы не хотим делать все таким же образом в следующий раз».

Видите ли, одной из причин, что так обстоят дела, является то, что раньше в JPL были эти огромные проекты, которые было необходимо обеспечивать значительной инфраструктурой.

Но теперь у нас много маленьких проектов, для которых требуется одна общая инфраструктура, что обуславливает более сильную взаимозависимость между проектами.

Поэтому та концепция работы, которая была в проекте Pathfinder, что-то вроде изолированного исследовательского отдела, функционирующего полусамостоятельно, практически без контроля начальства, и показывающего отличные результаты, теперь уже не применим в JPL.

DDJ: По мере того, как космические путешествия становятся рутиной, гении для этого уже не требуются.

GR: До этого еще далеко!

DDJ: Но это ваша работа, год за годом, стараться превратить это в жизнь.

GR: Все верно. И когда мы этого достигнем, то, удостоверившись, что эта индустрия работает, мы займемся другими передовыми задачами.

DDJ: Гленн, чем вы сейчас занимаетесь?

GR: Я работаю над одной из многих структурных, базовых задач: JPL разрабатывает авиационное оборудование, которое будет устойчиво к радиации и сможет выжить на Европе, где очень тяжелые радиоактивные условия. Мы испытываем новые технологии и пытаемся решить проблемы, возникающие на уровне одного мегарада.

Немалый объем работ выполняется вне JPL по контрактам. Мы стараемся снабдить космические аппараты наиболее технически мощным оборудованием, которое есть в доступности. Наш последний выбор — PowerPC 750 с частотой 200 МГц.

DDJ: Вы отправляете Macintosh в космос!

GR: Удобно, да? Скорость процессора, который использовался в проекте Pathfinder, была около 22 МГц. Мы увеличили значение на порядок. Это просто феноменально. JPL всегда использовала технологии 10 — 12-ти летней давности…

DDJ:… в то время, пока вы ждете радиационно-устойчивую версию.

GR: Ага. В частности я работаю над проектом, который не точно называют «Миссия — Система данных». На самом деле это межинституциональная инициатива по реализации нескольких вещей. В JPL последнее время осуществляются несколько разнонаправленных проектов. Например, мы стараемся достичь такой архитектуры, которая стала бы базовой для космических аппаратов, отличающихся от существующей намного большей автономностью.

Это относится к ПО, к последним наработкам в области программирования. Я думаю, JPL постепенно отходит от аппаратного формата и больше ориентируется на разработку ПО. Те компьютерные системы, над которыми мы сейчас работаем, больше похожи на небольшие локальные сети. Для соединения быстрых и не очень компьютерных систем используются FireWire и I2C.

DDJ: I2C все еще используется?!

GR: Она не быстрая, но у нее малая мощность. Это зачастую является решающим фактором. Для большого объема, большой скорости у нас есть 1394 FireWire — 100 Мбит/сек.

DDJ: В NASA у программистов нет недостатка в дорогих игрушках?

GR: Мы стараемся его не допустить, делая упор на доступную на рынке серийную продукцию.

Во времена Pathfinder мы говорили: «Будем использовать шину VME и сэкономим кучу денег вместо того, чтобы самим заниматься разработкой каждой детали».

И мы все еще придерживаемся этого принципа.

DDJ: Мы начали обсуждать вашу текущую работу в контексте сохранения лучших практик проекта Pathfinder, учитывая действующую сегодня горизонтальную интеграцию небольших команд и использование серийных деталей. Как вы справляетесь?

GR: JPL преодолевает мучительный процесс оптимизации структуры и взаимозависимости команд. Это сложная задача для любой большой организации — перейти от вертикальной административной структуры к горизонтальной.

DDJ: Это только внутренний процесс JPL или вас захватил водоворот NASA?

GR: Пока что это в основном внутренний процесс. Но в NASA следят за этим.

DDJ: Лично Вас сейчас поглотило управление. Приходится теперь хоть иногда заниматься написанием программ?

GR: В последнее время нет… Сейчас моя должность называется Главный инженер проекта «Миссия — Система данных». Звучит так, словно я принимаю решения по техническим вопросам, но в основном это касается менеджмента. Я сопротивляюсь, как только могу!

DDJ: Уверен, все технически подкованные читатели «DDJ» весело воскликнут: «Не переходи на Темную сторону!»

GR: Кто-то должен свести план воедино. Эта неполноценность тащит меня на Темную сторону.

DDJ: Да, менеджмент и есть последняя граница. ПО теперь продается в блестящей упаковке. Определить, как правильно распределить работу между людьми, как чередовать задания и успеть в срок…

GR: Это все вторично. Основное — это методология. UML или не UML? Такие классические вещи как языки, тип компьютеров, которые надо закупить… Но некоторые вещи, о которых раньше приходилось волноваться, теперь уходят в прошлое. 200 МГц PowerPC примерно в 200 раз мощнее, чем процессоры на Кассини. Проблема эффективности отходит на второй план.

DDJ: Получается, вы просто пишите «старый добрый код», как все остальные?

GR: Ну, это было бы приятно, да? Правда, было бы здорово, если мы могли бы приблизиться к передовым рубежам разработки ПО? Увы, JPL сейчас вне этой игры, и нам приходится довольствоваться доступными решениями.

DDJ: Что насчет Linux?

GR: Мы не оценивали его на предмет пригодности для космических полетов. Но многие им тут пользуются. Каждый разработчик придерживается своего мнения насчет Единственного Верного Пути. Выбор языка тоже относится к подобным религиозным вопросам.

DDJ: И какие религии бродят в JPL?

GR: Большая часть работы JPL приходится на процедурный (императивный) язык. Немало было сделано с помощью Ada на Кассини, но с по-настоящему объектно-ориентированной точки зрения, мы еще этим и не занимались, по крайней мере, не во время полета. Pathfinder и другие основаны на С.

Двигаясь в объектно-ориентированном направлении, приходится использовать объектно-ориентированные языки C++ или Java… У нас много ребят специалистов в области искусственного интеллекта, они — сторонники LISP’а. Фактор мультизадачности, преимущественно условия реального времени, даже многоязычность — и вот уже целая куча поводов для религиозных распрей.

DDJ: Вам потребуется память, чтобы справляться с такими условиями.

GR: Посмотрите на объемы памяти. На Pathfinder у нас было 128 МБ RAM. Сегодня у моего рабочего компьютера больше памяти, чем было у космического аппарата. И мы двигаемся вперед. И, поверьте, у нас всегда найдется, чем заполнить дополнительный объем.

DDJ: Когда мы отправимся на Европу?

GR: Аппаратное и программное обеспечение будут готовы в течение двух лет, для двух миссий. Первая — «Space Technology 4» или ST4. На комету будет отправлен зонд, для того чтобы взять образцы и, возможно, вернуться. Хотя насчет возврата я после недавних расчетов уже не уверен.

Вторая миссия будет на Европу. Возможно, запуск пройдет в 2003 году. Есть и другие проекты в разработке, с аналогичными технологиями, но эти два пока что единственные подписанные.

DDJ: Что заставляет людей идти в Конгресс для финансирования стрельбы жестяными банками по Европе? Почему это происходит?

GR: Я считаю, нужно понимать, что наша планета очень маленькая. В какой-то момент человек отправится в космос, без сомнений. Люди осознают необходимость какой-то предварительной разведки, чтобы продвинуться на пути к этой цели.

Может возникнуть вопрос: «Как можно тратить миллиарды долларов на космос, когда в мире умирают от голода дети?» Я думаю, тут все дело в балансе между краткосрочными и долгосрочными целями.

Я не могу говорить за исследования NASA с участием человека, но что касается роботизированных исследований, здесь мы стали свидетелями больших изменений: стоимость космического проекта раньше составляла около миллиарда долл., а теперь — 200 млн. долл.

NASA использует все меньше и меньше ресурсов, а результатов исследовательских миссий все больше и больше.

DDJ: Я вырос на книгах Роберта Хайнлайна о добыче полезных ресурсов из астероидов. Это возможно в обозримом будущем?

GR: Это интересно, потому что на этой или на следующей неделе к нам должен прийти один парень из компании SpaceDev Inc., чтобы поговорить на тему коммерческих исследований глубокого космоса. О том, что будут правительственные инициативы в этом направлении, российские, японские, немецкие или американские. Я не уверен, что он имеет в виду именно добычу полезных ископаемых, но его идея в том, что уже есть научные и коммерческие организации, которые захотят заплатить за снимки и спектроскопию в надежде найти минералы, ресурсы…

DDJ: Классическая цель исследования космоса в научной фантастике.

GR: Уверен, это грядет. В скором ли времени? Возможно, в границах наших жизней, может позже… Мои дети это застанут.

DDJ: Какой-нибудь совет программистам, проявляющим интерес к космосу?

GR: Брат моей жены говорит: «Ты вот все пишешь программы, но ведь ты никогда на самом-то деле не знаешь, значат ли они что-нибудь или нет». Я думаю, это не так. Я думаю, специалист в области компьютерных наук может использовать свое мастерство для достижения высоких целей. Pathfinder — отличный пример того, насколько захватывающей может быть цель.

1999, Dr. Dobb's Journal


Перевод: Сергей Даньшин
Оригинал: A Conversation with Glenn Reeves

Поддержка публикации — компании Edison, которая разрабатывает внутреннюю систему тестирования персонала и приложение для учета рабочего времени сотрудников.


Какой вопрос задали бы вы разработчику инопланетного софта?

Автор: Edison

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js