Хабрахабр

[Перевод] Авария Boeing 737 Max глазами разработчика ПО

Представляю вашему вниманию перевод статьи «How the Boeing 737 Max Disaster Looks to a Software Developer» Грега Трэвиса. Речь пойдет о том, как желание Боинга сэкономить и «срезать углы» для коммерческой выгоды, а также культура «некомпетентности и неэтичности» в сообществе разработчиков привело к гибели 346 человек. Я не во всем разделяю позицию автора (в частности, я считаю, что человеческий фактор куда большее зло, чем ПО), но с основными доводами сложно не согласиться.

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

пер. Взгляды, выраженные в данной статье, являются исключительно взглядами автора и не являются позицией IEEE Spectrum или IEEE (прим. — и переводчика тоже 🙂).

Я — пилот с 30-летним стажем и разработчик программного обеспечения c 40-летним. Я много писал и об авиации, и о разработке ПО. Пришло время написать одновременно и о том, и о другом.

Для индустрии, существование которой всецело держится на ощущении клиентами полного контроля и безопасности, эти два крушения представляют большую экзистенциальную опасность. Сейчас все новости пестрят заголовками об авариях новой модели самолёта Боинга 737 Max(англ.), произошедших буквально одна за одной со свеже выпущенными самолётами. И несмотря на то, что за последние десятилетия количество смертей в авиакатастрофах снизилось, это достижение — вовсе не повод для излишней самоуверенности.

0 Generic image
WestJet Boeing 737 MAX 8, acefitt, Creative Commons Attribution 2.

Это был небольшой самолет с небольшими двигателями и сравнительно простыми системами управления. Первая модель Боинг 737 впервые появилась в 1967, когда мне было 3 года.

К тому же для пилотирования ими в кабине вместо обычных в то время трёх или четырёх человек требовалось всего два члена экипажа, что позволило авиакомпаниям начать существенно экономить. Авиакомпании (особенно американская Southwest) полюбили их за простоту, надежность и гибкость. Рос, конечно, не только 737. Вместе с развитием рынка авиаперевозок и появлением новых технологий 737 стремительно рос в размерах, возрастала и сложность электроники и механики. Авиалайнеры требуют гигантских капиталовложений как со стороны индустрии авиастроения, так и со стороны покупающих их авиакомпаний, поэтому и те, и другие также постоянно укрупнялись.

Инженеры безустанно работали над снижением того, что в индустрии называют «стоимостью пассажиро-километра» — то есть стоимости доставки пассажира из точки А в точку Б. Большая часть этих рыночных и технологических сил, однако, действовали исходя из экономических интересов компаний, а не в интересах безопасности пассажиров.

Теорема Карно о коэффициенте полезного действия (КПД) тепловых двигателей говорит, что чем больше и горячее вы делаете двигатель, тем более эффективным он становится. Очень многое в этой истории оптимизации связано с двигателями. Этот принцип верен в равной мере и для двигателя бензопилы, и для реактивного двигателя.

Наиболее простой и быстрый способ сделать двигатель более эффективным с точки зрения потребления топлива на единицу мощности — сделать его больше. Элементарно. Поэтому дизельные моторы на морских судах делаются размером с трехэтажный дом. Именно поэтому в двигателе Lycoming O-360 моего небольшого самолёта Cessna стоят поршни размером с большую тарелку. И ровно по этой же причине Боинг захотел установить огромные двигатели CFM International LEAP в новую модель 737.

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

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

Диаметр лопастей двигателей, устанавливаемых на оригинальный 737, был равен 100 см (40 дюймов), в новых же двигателях для 737 Max диаметр вырос до 176 см. В случае с 737 Max ситуация стала критической. При разнице по осевой линии больше 30 см вы уже не можете сделать воздухозаборник овальным настолько, чтобы двигатель не начал скрести землю.

Это, в свою очередь, привело к смещению осевой линии тяги двигателя. Тогда было решено нарастить двигатель сверху и сместить его вперед и вверх относительно крыла. Теперь при увеличении мощности двигателя, самолет получил тенденцию к кабрированию, то есть к подъему носа.

Представьте, что вы выставили руку из открытого окна движущегося по шоссе автомобиля. Для справки: угол атаки самолета — это угол между направлением вектора скорости набегающего воздушного потока и плоскостью крыла. Когда угол атаки становится слишком велик (закритическим), наступает аэродинамическое сваливание в результате срыва воздушного потока. Если вы будете держать ладонь почти параллельно земле, то это будет малым углом атаки; повернув ладонь относительно плоскости земли, вы увеличите угол атаки. Вы можете убедиться в этом самостоятельно всё также выставив руку из окна движущегося автомобиля: медленно поворачивая свою ладонь вы будете чувствовать всё возрастающую подъёмную силу, толкающую руку вверх, пока ваша рука вдруг не упадёт вниз — это и есть срыв потока с последующим сваливанием.

Такое развитие событий становится особенно вероятным при низкой скорости полёта. Таким образом получается, что тенденция к кабрированию при увеличении мощности двигателя на практике означает риск дальнейшего развития сваливания самолета, если пилоты «выжимают газ» (как любит говорить мой сын).

То есть гондолы сделали и без того плохую ситуацию ещё хуже. Хуже того, из-за того, что гондолы двигателей выдвинуты настолько далеко вперёд и так велики, они сами создают подъемную силу, особенно при больших углах атаки.

Причём центр приложения этой силы смещён далеко вперёд относительно центра приложения подъёмной силы крыла, что, в свою очередь, приводит к тому, что 737 Max при увеличении угла атаки имеет тенденцию к ещё большему увеличению угла атаки. Подчеркну: в 737 Max сами гондолы двигателей при высоких углах атаки работают как крылья и создают подъёмную силу. И это — худший пример некомпетентности в аэродинамике.

Даже моя небольшая Cessna немного задирает нос при подаче газа. Само по себе изменение тангажа при изменении мощности двигателя — достаточно распространённое явление при управлении самолётами. Существуют, однако, определённые безопасные пределы, установленные регуляторами с которыми сами пилоты готовы мириться. Во время обучения пилотам рассказывают о таких трудностях и учат их преодолевать.

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

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

Этот авиационный канон был заложен ещё во времена первых полётов братьев Райт в Китти-Хоук. Корпус летательного аппарата (само железо) должен работать изначально максимально предсказуемо, а не требовать дополнительных “прибамбасов”.

Они нарушили древнейший закон авиации, а, возможно, и критерии сертификации FAA (Federal Aviation Administration) в США. Очевидно, что новая модель Боинга 737 Max слишком сильно задирает нос при увеличении тяги, особенно при уже и без того больших углах атаки. Но вместо того, чтобы вернуться обратно к чертёжной доске и исправить корпус самолета, Боинг решил положиться на некую «Систему повышения маневренных характеристик» (“Maneuvering Characteristics Augmentation System”(англ.), MCAS).

Боинг решил проблему с железом при помощи программного обеспечения.

Впрочем, наверное, стоит остановиться на MCAS. Я оставлю обсуждение появления корпоративного языка в авиационном лексиконе для другой статьи, но давайте отметим, что эта система могла бы называться и иначе, например, «Дешёвый способ предотвратить сваливание, когда пилоты решили поддать газку» (“Cheap way to prevent a stall when the pilots punch it,” CWTPASWTPPI).

Такая переработка могла бы потребовать, например, удлинения переднего посадочного шасси (которое могло бы после этого и не влезть в фюзеляж при втягивании в корпус), загибания крыльев вверх или каких-нибудь других подобных изменений. Безусловно, MCAS является куда более дешёвой альтернативой глубокой переработки планера, учитывая необходимость вместить новые большие двигатели. Это обошлось бы чудовищно дорого.

Признай Боинг, что это не старая модель, и тогда пересертификация заняла бы годы и потребовала миллионы долларов. Вся разработка и изготовление Max 737 проходили под эгидой мифа «это всё тот же старый добрый 737».

«По факту, пилоты, лицензированные летать на Боингах 737 в 1967 году, могут управлять всеми последующими версиями 737».
Из отзыва на раннюю версию статьи от одного из пилотов 737 в одной из крупнейших авиакомпаний.

Вот теперь мы говорим о действительно больших деньгах, причём как для производителей самолётов, так и для авиакомпаний. Хуже того, подобные крупные изменения могли бы потребовать не просто пересертификации в FAA, но и разработки совсем нового планера Боингом.

Авиакомпании — и Southwest тому яркий пример — как правило предпочитают парк из одного «стандартного» типа самолётов. И всё потому, что главным аргументом Боинга при продаже 737 Max было то, что он всё тот же 737, и любой пилот, летавший на предыдущих моделях, сможет управлять и Max — без дорогого переобучения, получения нового сертификата и нового рейтинга. Они предпочитают иметь единственную модель самолёта, которой может управлять любой их пилот, так как тогда и лётчики, и самолеты становятся взаимозаменяемыми, максимизируя гибкость и минимизируя расходы.

Необходимость настаивать на том, что летные характеристики 737 Max не отличаются от предыдущих моделей 737, была ключом к взаимозаменяемости авиапарка 737 Max. Всё так или иначе сводится к деньгам, и MCAS стал ещё одной возможностью для Боинга и его клиентов достижения того, чтобы деньги текли в нужном направлении. Вероятно, она же стала причиной того, что документация о самом существовании MCAS скрывалась.

И деньги потекли бы не в ту сторону. Если бы вдруг это изменение стало слишком заметным, к примеру, было отражено в руководстве по эксплуатации самолётом или на него обращали бы особое внимание при прохождении пилотами тренировки, то кто-то — вероятно, кто-то из лётчиков — встал бы и сказал: «Эй, что-то это не похоже на 737».

Так вот, у такой сложной машины как самолёт тоже есть механический эквивалент руки, выставленной из окна, — сенсор угла атаки. Как я уже объяснил, вы можете провести эксперимент с углом атаки самостоятельно, просто выставив руку из окна движущегося автомобиля и покрутив ладонью.

Как правило, их два, по одному на каждой стороне самолёта, обычно прямо под окнами кабины пилотов. Вы можете заметить его при посадке в самолёт. Сенсор угла атаки выглядит как флюгер, а трубка Пито — как… хм, трубка. Не перепутайте их с трубками Пито (о них читайте ниже). Его механическое крыло двигается в ответ на изменения угла атаки. Сенсор угла атаки выглядит как флюгер именно потому, что он и есть флюгер.

Так как трубки Пито, по сути, измеряют давление, они используются для определения скорости движения самолёта относительно воздуха. Трубки Пито измеряют, с какой силой воздушный поток «давит» на самолёт, а датчик угла атаки определяет, с какого направления этот поток набегает. Сенсор угла атаки же определяет направление движения самолёта относительно потока.

Обычно приборы, установленные на стороне основного пилота, берут свои показания с сенсоров с этой же стороны корпуса; аналогично, приборы у второго пилота показывают значения с датчиков его стороны судна. Существует два набора датчиков угла атаки и два набора трубок Пито, по одному на каждой стороне фюзеляжа. Если второй пилот считает, что его индикатор авиационной скорости чудит, он может сверить его с показателем аналогичного прибора на стороне основного пилота. Такой подход создаёт естественную избыточность в аппаратуре, что позволяет быстро и просто проводить перекрёстную проверку любым из пилотов. Если показания расходятся, то лётчики выясняют какой из приборов показывает истину, а какой лжёт.

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

Полётный компьютер делает множество разных полезных вещей, но основной его задачей является автопилотирование самолётом тогда, когда ему сказали это делать, и проверка, что лётчик не допустил ошибок в ручном режиме пилотирования. В 737-ом Боинг не только сделал резервные авиационные приборы и сенсоры, но и резервный бортовой компьютер, установив по одному компьютеру со стороны основного и второго пилотов. Последний пункт называется «защитой диапазона режимов полёта».

Но давайте назовём вещи своими именами — это и есть та самая «кусачая собака” из анекдота.

Эта система должна опускать нос самолёта, если считает, что судно выходит за пределы допустимых углов атаки, чтобы избежать аэродинамического сваливания. Что же делает MCAS? Боинг установил MCAS в 737 Max из-за того, что более крупные двигатели и их новое расположение привели к тому, что сваливание стало более вероятным, чем в предыдущих поколениях модели.

Она также делает ещё кое-что: косвенно, используя то, что Боинг называет „Elevator Feel Computer“ (компьютер ощущения руля высоты, EFC), она толкает штурвальные колонки управления пилота (штурвалы, которые лётчики толкают или тянут, чтобы поднять или опустить нос самолёта) вниз. В тот момент, когда MCAS замечает, что угол атаки стал слишком велик, он командует триммерам самолета (системе, которая заставляет самолёт двигаться вверх или вниз) направить нос судна вниз.

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

В старые добрые времена, когда тросы связывали органы управления лётчиков с оперением, им приходилось с большим усилием тянуть штурвал, если самолёт снижался. Однако важно, чтобы пилоты получали физический отклик обо всём, что происходит. Под присмотром компьютера же естественные ощущения контроля исчезли. Им приходилось с силой толкать его, если самолёт набирал высоту. В 737 Max больше не существует „естественного ощущения“.

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

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

Потому что если лётчики могут потянуть за колонку управления и вновь направить нос самолёта вверх, когда система MCAS говорит, что он должен быть направлен вниз, то в чём вообще смысл в такой системе? На самом деле то, что система не даёт пилоту управлять самолётом, потянув на себя штурвал, было осознанным решением конструкторов 737 Max.

В борьбе же между лётчиками и бортовым компьютером за то, кто в кабине главный, последний измотал людей до смерти (буквально). Несмотря на то, что MCAS интегрирован в полётный компьютер, он вмешивается даже тогда, когда автопилот выключен и пилоты пребывают в уверенности, что самостоятельно управляют самолётом.

Наконец, требовалось скрыть само существование системы MCAS, чтобы никто не сказал: „Эй, это уже не старик 737“, и нужные банковские счета не пострадали.

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

Ни программисты, ни их начальники не знакомы с особенной культурой и нравами авиационного мира настолько, насколько люди, работающие на фабриках, склёпывающие крылья, разрабатывающие управляющие скобы и устанавливающие посадочные шасси в фюзеляж. Эти строки кода, несомненно, написаны людьми под управлением начальников. Разработчики программного обеспечения — нет. Эти люди обладают общей „отраслевой“ памятью о том, что сработало в прошлом в авиации, а что пошло не так.

Активный компьютер получает данные только с тех датчиков, что установлены на его стороне самолёта. В 737 Max одновременно активен лишь один из полётных компьютеров — либо на стороне основного, либо на стороне второго пилота.

В системе, установленной на Боинге, бортовой компьютер не „осматривает другие приборы“. Если человек при пилотировании замечает, что данные компьютеров расходятся, он осматривает панель управления, оценивает показания других приборов и разбирается, что не так. Он не делает по-старинке. Он доверяет только приборам на своей стороне. Он — ПО. Он сверхсовременный.

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

Существует несколько других приборов, которые прямым и косвенным способом позволяют определить угол атаки, например, трубки Пито, искусственный горизонт и так далее. Хуже того. Лётчик бы проверил все эти приборы, чтобы быстро диагностировать неисправный датчик угла атаки.

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

И это в конце концов оказалось плохо для всех.

 Как человек с нарциссическим расстройством личности, MCAS затмевает собой решения пилотов.

— HAL, подними нос.
— Прости, Дейв, боюсь я не могу этого для тебя сделать.

Бортовой компьютер под управлением MCAS остается слепым к любым доказательствам, что он неправ, включая те, что пилот видит собственными глазами, а когда он отчаянно пытается выровнять самолёт и тянет до отказа роботизированный штурвал на себя, компьютер “кусает” лётчика и его пассажиров до смерти.

Они работали плечом к плечу с производителями самолётов, чтобы убедиться, что самолёт безопасен и готов к сертификации. В старые времена в FAA работала армия авиационных инженеров.

Всё больше инженеров переходило из публичного сектора в частный. По мере того, как самолёты становились всё сложнее, разрыв между тем, сколько FAA и производители самолетов могли платить своим служащим, постоянно увеличивался. Вскорости у FAA не осталось возможностей разобраться, насколько конкретная модель самолёта безопасна, и можно ли её производить.

Тогда FAA предложила авиаконструкторам: „А что если ваши люди будут сами нам говорить, насколько проект безопасен?” Производители ответили: “Звучит неплохо.” А FAA: „И передайте привет Джо, мы скучаем.“

Эти представители являются наемными лицами самолетостроительных компаний, производителей двигателей и разработчиков ПО, которые удостоверяют для FAA факт того, что всё безопасно и хорошо. Так родилась концепция „Выделенных инженерных представителей“ (“Designated Engineering Representative,” DER).

Индустрия авиаперевозок полностью полагается на доверие публики, а каждая авиакатастрофа представляет для отрасли экзистенциальную угрозу. Это выглядит как явный конфликт интересов, однако это не совсем так, всё же никто не заинтересован в том, чтобы самолёты падали. С другой стороны, после долгого трудового дня кто-то может на слово поверить парням из отдела разработки ПО, что “да всё там в порядке». Никто из производителей не станет нанимать DER только для того, чтобы он подписывал любые бумаги.

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

8 градуса после того, как в первый раз определил развивающийся процесс сваливания, как предполагалось, но делал это в цикле до упора при каждом новом измерении. От переводчика: В комментариях к статье один из пользователей указал на то, что MCAS, помимо прочего, не просто уменьшал угол атаки на 0.

Люди, которые писали код для оригинальной системы MCAS были очевидно бесконечно далеки от того уровня профессиональной зрелости, что от них требовалась, и даже не подозревали об этом. Но я точно знаю, что это индикатор куда более глубокой проблемы в отрасли. Как можно теперь доверить им исправление этого ПО, да и вообще верить в надежность и безопасность остального ПО управления полётом?

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

Ни одна из них не должна была бы получить «ОК» не только от DER, но и от самого младшего инженера. Ни одна из этих проблем не могла бы пройти проверку на качество.

Это политический, социальный, экономический и технический грех. Это не просто большая проблема.

Это Cessna 172 1979 года, самый популярный самолёт в истории по количеству произведенных образцов. Так получилось, что в промежутке между первой и второй катастрофами 737 Max, мне пришлось установить новый цифровой автопилот для моего собственного самолёта. Он получил первый лётный сертификат почти на десятилетие раньше первого Боинга 737 (1955 год против 1967).

CAN шина была разработана в автомобильной промышленности для реализации технологии Drive-by-Wire (электронной цифровой системы управления автомобилем), но с точки зрения целей и реализации она схожа с шинами ARINC, соединяющими компоненты в 737 Max. Мой новый автопилот состоит из нескольких сверхсовременных компонентов, включая резервный бортовой компьютер (с двумя Garmin G5s) и замысловатую коммуникационную шину (CAN, Controller Area Network), позволяющей разным компонентам системы общаться друг с другом вне зависимости от их расположения в корпусе самолёта.

Следовательно, он может вносить такие же поправки к конфигурацию полета моей 172, как и полётные компьютеры с системой MCAS в 737 Max. Мой автопилот также включает в себя электронные триммеры. Помню, что после первой катастрофы 737 Max, во время установки автопилота, при разговоре с другом я отметил, что, вероятно, добавляю потенциальный источник опасности, схожей с той, что привела к гибели рейса Lion Air.

В то время, когда автопилот не управляет моей Cessna, система тем не менее продолжает контролировать состояние самолёта, чтобы удостовериться, что я не свалю его в штопор, не полечу вверх шасси или не сделаю массу других штук. Наконец, мой новый автопилот также имеет «защитную оболочку” (ту самую защиту диапазона режимов полёта), где „оболочкой“ является график предельных эксплуатационных свойств самолёта. Да, у него тоже есть режим „кусачая собака“.

В чём же различия? Как видите, сходства между моим автопилотом за $20,000 и многомиллионным автопилотом в каждом 737 прямые, осязаемые и релевантные.

То есть и производитель автопилота, и FAA согласны, что моя Cessna 172 1979 года со встроенным автопилотом от Garmin настолько существенно отличается от того самолёта, что когда-то сошёл с конвейера, что это уже вовсе не та же Cessna 172. Для начала, установка нового автопилота потребовала получения нового сертификата (“Supplemental Type Certificate,” STC). Это совсем другой самолёт.

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

Особенно следует отметить, что в этой документации, с которой должен ознакомиться любой собирающийся полетать на этом самолёте, подробно объясняется функционирование автопилота и как он управляет триммерами, а также описываются особенности работы защиты диапазона режимов полёта.

Строки о том, что для выключения надо выдернуть предохранитель из системы автопилота, повторяются снова и снова едва ли не на каждой странице новой документации. Подробно объясняется и как определить, что система функционирует неправильно, и как её быстро отключить. Любому пилоту, захотевшему полетать на моей 172, сразу становится ясно, что она отличается от любой другой 172.

Более того, отключить MCAS можно, только вытащив предохранитель из гидравлического мотора, приводящего в движение триммеры оперения, но у лётчиков всё равно не хватает сил поменять положение триммеров без помощи гидравлики. От переводчика: Один из читателей оригинальной статьи указал, что несмотря на то, что у Боинга 737 Max два бортовых компьютера, переключиться с одного на другой в полёте нельзя. А MCAS их уже установил в минимальное возможное положение…

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

Например, автопилот постоянно опрашивает оба бортовых компьютера G5 для определения расположения. Ещё одним отличием между моим автопилотом и системой с MCAS в 737 Max является то, что приборы, связанные CAN шиной постоянно коммуницируют и проводят перекрёстные проверки, чего, по-видимому, MCAS не делает. Она не направляет самолёт в землю, если вдруг начинает считать, что он вот-вот начнёт сваливаться. Если данные расходятся, то система оповещает пилота и отключается, переходя в режим ручного управления.

В моей 172 всё ещё есть тросы, напрямую соединяющие органы управления с аэродинамическими поверхностями. И, вероятно, самым большим отличием является сила, которую лётчик должен приложить, чтобы подавить команды автопилота на моем самолёте и на 737 Max. Случись, что компьютер неверно решит, что самолёт начинает сваливаться, я с лёгкостью смогу преодолеть его сопротивление. Компьютер вынужден нажимать на те же самые рычаги, что и я, причём он намного слабее меня.

Точно такую же философию всегда исповедовал и Боинг при разработке своих самолётов, более того — использовал против своего заклятого конкурента Airbus, который действовал прямо наоборот. В моей Cessna человек все ещё всегда выходит победителем из битвы с автопилотом. Однако с выходом 737 Max Боинг, похоже, никому ничего не говоря, решил поменять стратегию взаимоотношений человека и машины и также тихо поменять инструкцию по эксплуатации.

На сегодняшний день главное — деньги, а не безопасность. Вся эта сага с 737 Max должна научить нас не только тому, что усложнение приводит к дополнительным рискам и что у технологий есть свой предел, но и тому, какие у нас должны быть реальные приоритеты. Проблема с каждым днём становится всё острее, так как устройства всё больше зависят от того, что слишком просто изменить — программного обеспечения. О ней думают только лишь постольку, поскольку она необходима для продолжения движения денег в нужном направлении.

Говоря „сложно“ я имею в виду „дорого“. Дефекты в устройстве техники и “железе”, будь то неудачно расположенные двигатели или уплотнительные кольца, рассыпающиеся на морозе, заведомо сложно исправить. Всё, что требуется — просто опубликовать обновление и выпустить патч. С другой стороны, дефекты в программном обеспечении можно исправить быстро и дёшево. Более того, мы добились того, что покупатели теперь считают всё это нормой — и обновления для операционной системы на компьютере, и патчи, автоматически устанавливаемые на мою Теслу пока я сплю.

Оказалось, что они были сравнительно одинаково сложными. В 1990-х я как-то написал статью, в которой сравнивал относительную сложность процессоров Intel Pentium, выраженную в количестве транзисторов на чипе, со сложностью новой ОС Microsoft Windows, выраженную в строках исходного кода.

Лишь небольшое количество пользователей Pentium (прим. Примерно в тоже самое время выяснилось, что ранние версии процессоров Pentium были подвержены багу, названному ошибкой FDIV. В Windows были найдены аналогичные дефекты, также затрагивавшие лишь незначительную часть пользователей ОС. пер.: учёные и математики) могли испытывать какие-либо проблемы в связи с ней.

Для Windows планомерно выпускались небольшие программные заплатки, Intel же пришлось в 1994 году отозвать все бракованные процессоры. Однако последствия для компаний Intel и Microsoft оказались в корне разными. Это обошлось компании в 475 миллионов долларов — более 800 миллионов в сегодняшних ценах.

Более того, из-за того, что ПО всё больше и больше контролирует „железо“, эта культура лени начинает проникать и в разработку техники — к примеру, в самолётостроение. По моему мнению, относительная простота и отсутствие значительных материальных затрат при обновлении ПО привело к развитию культуры лени в сообществе разработчиков. Всё реже мы уделяем должное внимание разработке правильной и простой конструкции техники, ведь так просто потом исправить дефект с помощью ПО.

Потому что их создатели осознали, что это вовсе необязательно. Каждый раз, когда выходит новое обновление для моей Tesla, полётного компьютера Garmin в моей Cessna, термостата Nest или телевизора у меня дома, я лишний раз понимаю, что ни одна из этих вещей не была выпущена с фабрики по-настоящему готовой. Работу можно будет закончить когда-нибудь потом, выпустив очередное обновление.

Всегда было любопытно, что нам приходилось изворачиваться изо всех сил, чтобы поставить новую плату в сертифицированный компьютер, а ПО не требовало никакой сертификации (кроме общих ограничений типа «не может работать под Windows» или «должно быть написано на С++»). »Я — сетевой инженер, бывший программист, писавший ПО для авионики самолётов. Правда, это было около 10 лет назад, надеюсь, что сейчас дела обстоят иначе."
— Анонимно, из личной переписки

В настоящее время Боинг устанавливает новое обновление для бортового компьютера и MCAS 737 Max. Не знаю точно, но полагаю, что это обновление будет в основном направлено на две вещи:

То есть если один датчик угла атаки начнёт сообщать о том, что самолёт вот-вот начнёт сваливаться, а другой датчик — нет, то есть надежда, что система больше не будет сразу направлять самолёт носом в землю, а всё же сначала уведомит пилотов о конфликте в показаниях датчиков. Первое — научить программное обеспечение делать перекрёстную проверку приборов, как это делают лётчики.

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

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

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

Вся суть книги содержится уже в названии. Упор на необходимость разрабатывать максимально простые системы хорошо показан у Чарльза Пэрроу, социолога Йельского университета, автора книги «Нормальные аварии: жизнь с высокорискованными технологиями» (Normal Accidents: Living With High-Risk Technologies(англ.)) 1984 года. Несмотря на то, что по отдельности такие ошибки могут казаться вызванными той или иной неисправностью техники или сломанным процессом, на самом деле они должны рассматриваться как неотъемлемые особенности самой системы. Пэрроу утверждает, что системный сбой является нормальным результатом работы любой сложной системы с тесно связанными компонентами, когда поведение одного компонента непосредственно отражается на поведении другого. Это «ожидаемые» аварии.

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

Именно об этом нам говорит и старый инженерный принцип проектирования — «Чем проще, тем лучше» (“Keep it simple, stupid”, KISS), и его авиационный вариант: «Упрости, потом добавь лёгкости» (“Simplify, then add lightness”).

Это требование появилось во времена существования прямой связи между органами управления у лётчика в кабине и оперением самолёта. Одним из основных принципов FAA при сертификации самолётов во времена Эйзенхауэра был своеобразный завет простоты: самолеты не должны демонстрировать значительных изменений тангажа с изменением мощности двигателя. Теперь же между человеком и машиной появилась прослойка программного обеспечения, и никто точно не знает что же там происходит на самом деле. Это требование — когда оно было написано — справедливо накладывало требование простоты на конструкцию самого планера. Вещи стали слишком сложными для понимания.

Авария с Челленджером произошла потому, что люди следовали инструкциям, а не наоборот — ещё одна иллюстрация «нормальных» катастроф. Не могу выкинуть из головы параллели между катастрофами 737 Max и космического челнока Челленджер. Никто не говорил, что при вынесении решения нельзя придавать слишком большой вес возможным политические последствиям, которые могли бы возникнуть из-за переноса запуска. Правила говорили, что перед запуском челнока требуется провести конференцию, чтобы убедиться в полной готовности к полёту. И семь человек погибло. Все вводные данные были тщательно взвешены согласно установленному процессу, большинство согласилось на запуск.

Правила говорят, что тангаж самолёта не должен слишком сильно изменяться при изменении мощности двигателя и что назначенный инженер (DER) вправе подписать любые изменения, направленные на решение этой проблемы. В случае с 737 Max всё тоже делалось по всем правилам. И вот уже 346 человек мертвы. В правилах нет ничего о том, что DER не должен руководствоваться деловыми соображения при принятии решения.

Не надо пытаться исправлять её дальнейшим повышением сложности, дополнительным ПО. Весьма вероятно, что система MCAS, разрабатываемая с расчетом на повышение безопасности полётов, убила больше людей, чем могла бы когда-либо спасти. Её нужно просто убрать.

Об авторе

Грег Тревис — писатель, руководитель в разработке ПО, пилот, владелец самолёта. В 1977 году в возрасте 13 лет он создал Note — одну из первых социальных медиаплатформ; его налёт составляет более 2000 часов, он управлял всем от планеров до Боинга 757 (в симуляторе с полной имитацией движения).

Показать больше

Похожие публикации

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»