Інтерв'ю з розробником інопланетного софта: «Станься що, моя дупа прийняла основний удар»

В день програмістки, представляємо вашій увазі інтерв'ю з розробником, який зміг отдебажить марсохід за 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. Що раніше було однією компанією, стало двома підрозділами двох великих протидіючих компаній. Стало очевидно, що ми не отримаємо операційну систему реального часу від цих хлопців в Релі термін.
Тоді ми вирішили звернутися до 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, яка розробляє внутрішню систему тестування персоналу, програма для обліку робочого часу співробітників.



яке питання задали би ви розробнику інопланетного софта?

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.