Представляю вашему вниманию перевод статьи «How the Boeing 737 Max Disaster Looks to a Software Developer» Грега Трэвиса. Речь пойдет о том, как желание Боинга сэкономить и «срезать углы» для коммерческой выгоды, а также культура «некомпетентности и неэтичности» в сообществе разработчиков привело к гибели 346 человек. Я не во всем разделяю позицию автора (в частности, я считаю, что человеческий фактор куда большее зло, чем ПО), но с основными доводами сложно не согласиться.
Ниже очень много букв. Если читать лень, а ознакомиться с темой хочется, то на Хабре есть первая, более короткая версия этой статьи в переводе Вячеслава Голованова, с ней можно ознакомится здесь.
Взгляды, выраженные в данной статье, являются исключительно взглядами автора и не являются позицией IEEE Spectrum или IEEE (прим. пер. — и переводчика тоже :)).
Я — пилот с 30-летним стажем и разработчик программного обеспечения c 40-летним. Я много писал и об авиации, и о разработке ПО. Пришло время написать одновременно и о том, и о другом.
Сейчас все новости пестрят заголовками об авариях новой модели самолёта Боинга 737 Max(англ.), произошедших буквально одна за одной со свеже выпущенными самолётами. Для индустрии, существование которой всецело держится на ощущении клиентами полного контроля и безопасности, эти два крушения представляют большую экзистенциальную опасность. И несмотря на то, что за последние десятилетия количество смертей в авиакатастрофах снизилось, это достижение — вовсе не повод для излишней самоуверенности.
WestJet Boeing 737 MAX 8, acefitt, Creative Commons Attribution 2.0 Generic
Первая модель Боинг 737 впервые появилась в 1967, когда мне было 3 года. Это был небольшой самолет с небольшими двигателями и сравнительно простыми системами управления.
Авиакомпании (особенно американская Southwest) полюбили их за простоту, надежность и гибкость. К тому же для пилотирования ими в кабине вместо обычных в то время трёх или четырёх человек требовалось всего два члена экипажа, что позволило авиакомпаниям начать существенно экономить. Вместе с развитием рынка авиаперевозок и появлением новых технологий 737 стремительно рос в размерах, возрастала и сложность электроники и механики. Рос, конечно, не только 737. Авиалайнеры требуют гигантских капиталовложений как со стороны индустрии авиастроения, так и со стороны покупающих их авиакомпаний, поэтому и те, и другие также постоянно укрупнялись.
Большая часть этих рыночных и технологических сил, однако, действовали исходя из экономических интересов компаний, а не в интересах безопасности пассажиров. Инженеры безустанно работали над снижением того, что в индустрии называют «стоимостью пассажиро-километра» — то есть стоимости доставки пассажира из точки А в точку Б.
Очень многое в этой истории оптимизации связано с двигателями. Теорема Карно о коэффициенте полезного действия (КПД) тепловых двигателей говорит, что чем больше и горячее вы делаете двигатель, тем более эффективным он становится. Этот принцип верен в равной мере и для двигателя бензопилы, и для реактивного двигателя.
Элементарно. Наиболее простой и быстрый способ сделать двигатель более эффективным с точки зрения потребления топлива на единицу мощности — сделать его больше. Именно поэтому в двигателе Lycoming O-360 моего небольшого самолёта Cessna стоят поршни размером с большую тарелку. Поэтому дизельные моторы на морских судах делаются размером с трехэтажный дом. И ровно по этой же причине Боинг захотел установить огромные двигатели CFM International LEAP в новую модель 737.
Есть только одна небольшая проблема: оригинальный 737 по сегодняшним меркам оснащался совсем небольшими двигателями, что позволяло легко разместить их под крыльями. Однако по мере того как 737 всё увеличивался в размерах, его двигатели тоже росли, а клиренс между ними и землёй становился всё меньше и меньше.
Чтобы обойти эту проблему было придумано множество ухищрений (или «хаков», как их назвали бы разработчики ПО). К примеру, наиболее заметным и наглядным для публики является изменение формы воздухозаборников с круглой на овальную, чтобы обеспечить больше места под двигателем.
В случае с 737 Max ситуация стала критической. Диаметр лопастей двигателей, устанавливаемых на оригинальный 737, был равен 100 см (40 дюймов), в новых же двигателях для 737 Max диаметр вырос до 176 см. При разнице по осевой линии больше 30 см вы уже не можете сделать воздухозаборник овальным настолько, чтобы двигатель не начал скрести землю.
Тогда было решено нарастить двигатель сверху и сместить его вперед и вверх относительно крыла. Это, в свою очередь, привело к смещению осевой линии тяги двигателя. Теперь при увеличении мощности двигателя, самолет получил тенденцию к кабрированию, то есть к подъему носа.
Для справки: угол атаки самолета — это угол между направлением вектора скорости набегающего воздушного потока и плоскостью крыла. Представьте, что вы выставили руку из открытого окна движущегося по шоссе автомобиля. Если вы будете держать ладонь почти параллельно земле, то это будет малым углом атаки; повернув ладонь относительно плоскости земли, вы увеличите угол атаки. Когда угол атаки становится слишком велик (закритическим), наступает аэродинамическое сваливание в результате срыва воздушного потока. Вы можете убедиться в этом самостоятельно всё также выставив руку из окна движущегося автомобиля: медленно поворачивая свою ладонь вы будете чувствовать всё возрастающую подъёмную силу, толкающую руку вверх, пока ваша рука вдруг не упадёт вниз — это и есть срыв потока с последующим сваливанием.
Таким образом получается, что тенденция к кабрированию при увеличении мощности двигателя на практике означает риск дальнейшего развития сваливания самолета, если пилоты «выжимают газ» (как любит говорить мой сын). Такое развитие событий становится особенно вероятным при низкой скорости полёта.
Хуже того, из-за того, что гондолы двигателей выдвинуты настолько далеко вперёд и так велики, они сами создают подъемную силу, особенно при больших углах атаки. То есть гондолы сделали и без того плохую ситуацию ещё хуже.
Подчеркну: в 737 Max сами гондолы двигателей при высоких углах атаки работают как крылья и создают подъёмную силу. Причём центр приложения этой силы смещён далеко вперёд относительно центра приложения подъёмной силы крыла, что, в свою очередь, приводит к тому, что 737 Max при увеличении угла атаки имеет тенденцию к ещё большему увеличению угла атаки. И это — худший пример некомпетентности в аэродинамике.
Само по себе изменение тангажа при изменении мощности двигателя — достаточно распространённое явление при управлении самолётами. Даже моя небольшая Cessna немного задирает нос при подаче газа. Во время обучения пилотам рассказывают о таких трудностях и учат их преодолевать. Существуют, однако, определённые безопасные пределы, установленные регуляторами с которыми сами пилоты готовы мириться.
Совсем другое дело, когда тангаж меняется при увеличении угла атаки. Самолет, и без того приближающийся к точке аэродинамического сваливания, не должен ни при каких условиях иметь тенденцию к дальнейшему развитию этого эффекта. Такое свойство называется «динамической неустойчивостью», и единственный класс самолётов, где это допустимо — истребители — оборудуется катапультами для пилотов.
Каждый человек в авиационном сообществе мечтает о самолёте, управлять которым было бы максимально естественно и просто. Например, при изменении мощности двигателя, опускании закрылок или выдвижении шасси, условия полёта не должны заметно меняться, не должны возникать крены или изменяться тангаж — поведение должно оставаться предсказуемым.
Корпус летательного аппарата (само железо) должен работать изначально максимально предсказуемо, а не требовать дополнительных “прибамбасов”. Этот авиационный канон был заложен ещё во времена первых полётов братьев Райт в Китти-Хоук.
Очевидно, что новая модель Боинга 737 Max слишком сильно задирает нос при увеличении тяги, особенно при уже и без того больших углах атаки. Они нарушили древнейший закон авиации, а, возможно, и критерии сертификации FAA (Federal Aviation Administration) в США. Но вместо того, чтобы вернуться обратно к чертёжной доске и исправить корпус самолета, Боинг решил положиться на некую «Систему повышения маневренных характеристик» (“Maneuvering Characteristics Augmentation System”(англ.), MCAS).
Боинг решил проблему с железом при помощи программного обеспечения.
Я оставлю обсуждение появления корпоративного языка в авиационном лексиконе для другой статьи, но давайте отметим, что эта система могла бы называться и иначе, например, «Дешёвый способ предотвратить сваливание, когда пилоты решили поддать газку» (“Cheap way to prevent a stall when the pilots punch it,” CWTPASWTPPI). Впрочем, наверное, стоит остановиться на MCAS.
Безусловно, MCAS является куда более дешёвой альтернативой глубокой переработки планера, учитывая необходимость вместить новые большие двигатели. Такая переработка могла бы потребовать, например, удлинения переднего посадочного шасси (которое могло бы после этого и не влезть в фюзеляж при втягивании в корпус), загибания крыльев вверх или каких-нибудь других подобных изменений. Это обошлось бы чудовищно дорого.
Вся разработка и изготовление Max 737 проходили под эгидой мифа «это всё тот же старый добрый 737». Признай Боинг, что это не старая модель, и тогда пересертификация заняла бы годы и потребовала миллионы долларов.
«По факту, пилоты, лицензированные летать на Боингах 737 в 1967 году, могут управлять всеми последующими версиями 737».
Из отзыва на раннюю версию статьи от одного из пилотов 737 в одной из крупнейших авиакомпаний.
Хуже того, подобные крупные изменения могли бы потребовать не просто пересертификации в FAA, но и разработки совсем нового планера Боингом. Вот теперь мы говорим о действительно больших деньгах, причём как для производителей самолётов, так и для авиакомпаний.
И всё потому, что главным аргументом Боинга при продаже 737 Max было то, что он всё тот же 737, и любой пилот, летавший на предыдущих моделях, сможет управлять и Max — без дорогого переобучения, получения нового сертификата и нового рейтинга. Авиакомпании — и Southwest тому яркий пример — как правило предпочитают парк из одного «стандартного» типа самолётов. Они предпочитают иметь единственную модель самолёта, которой может управлять любой их пилот, так как тогда и лётчики, и самолеты становятся взаимозаменяемыми, максимизируя гибкость и минимизируя расходы.
Всё так или иначе сводится к деньгам, и MCAS стал ещё одной возможностью для Боинга и его клиентов достижения того, чтобы деньги текли в нужном направлении. Необходимость настаивать на том, что летные характеристики 737 Max не отличаются от предыдущих моделей 737, была ключом к взаимозаменяемости авиапарка 737 Max. Вероятно, она же стала причиной того, что документация о самом существовании MCAS скрывалась.
Если бы вдруг это изменение стало слишком заметным, к примеру, было отражено в руководстве по эксплуатации самолётом или на него обращали бы особое внимание при прохождении пилотами тренировки, то кто-то — вероятно, кто-то из лётчиков — встал бы и сказал: «Эй, что-то это не похоже на 737». И деньги потекли бы не в ту сторону.
Как я уже объяснил, вы можете провести эксперимент с углом атаки самостоятельно, просто выставив руку из окна движущегося автомобиля и покрутив ладонью. Так вот, у такой сложной машины как самолёт тоже есть механический эквивалент руки, выставленной из окна, — сенсор угла атаки.
Вы можете заметить его при посадке в самолёт. Как правило, их два, по одному на каждой стороне самолёта, обычно прямо под окнами кабины пилотов. Не перепутайте их с трубками Пито (о них читайте ниже). Сенсор угла атаки выглядит как флюгер, а трубка Пито — как… хм, трубка. Сенсор угла атаки выглядит как флюгер именно потому, что он и есть флюгер. Его механическое крыло двигается в ответ на изменения угла атаки.
Трубки Пито измеряют, с какой силой воздушный поток «давит» на самолёт, а датчик угла атаки определяет, с какого направления этот поток набегает. Так как трубки Пито, по сути, измеряют давление, они используются для определения скорости движения самолёта относительно воздуха. Сенсор угла атаки же определяет направление движения самолёта относительно потока.
Существует два набора датчиков угла атаки и два набора трубок Пито, по одному на каждой стороне фюзеляжа. Обычно приборы, установленные на стороне основного пилота, берут свои показания с сенсоров с этой же стороны корпуса; аналогично, приборы у второго пилота показывают значения с датчиков его стороны судна. Такой подход создаёт естественную избыточность в аппаратуре, что позволяет быстро и просто проводить перекрёстную проверку любым из пилотов. Если второй пилот считает, что его индикатор авиационной скорости чудит, он может сверить его с показателем аналогичного прибора на стороне основного пилота. Если показания расходятся, то лётчики выясняют какой из приборов показывает истину, а какой лжёт.
Давным давно была шутка о том, что когда в будущем самолёты смогут летать сами по себе, в кабине всё равно должны будут сидеть пилот и собака. Пилот нужен для того, чтобы пассажирам была спокойнее от осознания, что кто-то там впереди есть. Собака же должна кусать пилота, если он попытается хоть к чему-то прикоснуться.
В 737-ом Боинг не только сделал резервные авиационные приборы и сенсоры, но и резервный бортовой компьютер, установив по одному компьютеру со стороны основного и второго пилотов. Полётный компьютер делает множество разных полезных вещей, но основной его задачей является автопилотирование самолётом тогда, когда ему сказали это делать, и проверка, что лётчик не допустил ошибок в ручном режиме пилотирования. Последний пункт называется «защитой диапазона режимов полёта».
Но давайте назовём вещи своими именами — это и есть та самая «кусачая собака” из анекдота.
Что же делает MCAS? Эта система должна опускать нос самолёта, если считает, что судно выходит за пределы допустимых углов атаки, чтобы избежать аэродинамического сваливания. Боинг установил MCAS в 737 Max из-за того, что более крупные двигатели и их новое расположение привели к тому, что сваливание стало более вероятным, чем в предыдущих поколениях модели.
В тот момент, когда MCAS замечает, что угол атаки стал слишком велик, он командует триммерам самолета (системе, которая заставляет самолёт двигаться вверх или вниз) направить нос судна вниз. Она также делает ещё кое-что: косвенно, используя то, что Боинг называет „Elevator Feel Computer“ (компьютер ощущения подъема, EFC), она толкает штурвальные колонки управления пилота (штурвалы, которые лётчики толкают или тянут, чтобы поднять или опустить нос самолёта) вниз.
В 737 Max, как и большинстве других современных авиалайнеров и даже автомобилей, за всеми процессами наблюдает компьютер, а то и вовсе управляет ими напрямую. Во многих случаях уже не существует прямой механической связи (то есть тросов, гидравлических линий и трубок) между инструментами управления у лётчика и реальным аэродинамическим оперением самолёта, килем и прочими устройствами, которые заставляют самолёт лететь. А если такая механическая связь и есть, то компьютер сам решает что позволительно делать с ними пилоту (и снова та самая кусачая собака).
Однако важно, чтобы пилоты получали физический отклик обо всём, что происходит. В старые добрые времена, когда тросы связывали органы управления лётчиков с оперением, им приходилось с большим усилием тянуть штурвал, если самолёт снижался. Им приходилось с силой толкать его, если самолёт набирал высоту. Под присмотром компьютера же естественные ощущения контроля исчезли. В 737 Max больше не существует „естественного ощущения“.
Да, в 737 есть резервные гидравлические системы, связывающие органы управления, с которыми взаимодействует пилот, и непосредственно работающие элероны и другие части самолёта. Однако эти гидравлические системы настолько мощные, что не передают прямой обратной связи от аэродинамических сил, действующих на элероны. Пилоты будут чувствовать только то, что компьютер позволит им почувствовать. И иногда ощущения получаются не такие уж и приятные.
Когда полётный компьютер направляет самолёт на снижение из-за того, что система MCAS решила, что он вот-вот войдёт в сваливание, цепочка моторчиков и компенсаторов заставляет двигаться штурвалы в кабине вперёд. И оказалось, что компьютер может приложить столько усилия к штурвалам, что лётчики, пытаясь притянуть их к себе и показать компьютеру, что он делает что-то совсем-совсем неправильное, быстро выбиваются из сил.
На самом деле то, что система не даёт пилоту управлять самолётом, потянув на себя штурвал, было осознанным решением конструкторов 737 Max. Потому что если лётчики могут потянуть за колонку управления и вновь направить нос самолёта вверх, когда система MCAS говорит, что он должен быть направлен вниз, то в чём вообще смысл в такой системе?
Несмотря на то, что MCAS интегрирован в полётный компьютер, он вмешивается даже тогда, когда автопилот выключен и пилоты пребывают в уверенности, что самостоятельно управляют самолётом. В борьбе же между лётчиками и бортовым компьютером за то, кто в кабине главный, последний измотал людей до смерти (буквально).
Наконец, требовалось скрыть само существование системы MCAS, чтобы никто не сказал: „Эй, это уже не старик 737“, и нужные банковские счета не пострадали.
Полётный компьютер — это всего лишь компьютер. Это значит, что внутри него нет ни алюминиевых деталек, ни тросов, ни топливопроводов, ни прочих атрибутов авиации. Они заполнены строками кода. Вот где всё становится опасным.
Эти строки кода, несомненно, написаны людьми под управлением начальников. Ни программисты, ни их начальники не знакомы с особенной культурой и нравами авиационного мира настолько, насколько люди, работающие на фабриках, склёпывающие крылья, разрабатывающие управляющие скобы и устанавливающие посадочные шасси в фюзеляж. Эти люди обладают общей „отраслевой“ памятью о том, что сработало в прошлом в авиации, а что пошло не так. Разработчики программного обеспечения — нет.
В 737 Max одновременно активен лишь один из полётных компьютеров — либо на стороне основного, либо на стороне второго пилота. Активный компьютер получает данные только с тех датчиков, что установлены на его стороне самолёта.
Если человек при пилотировании замечает, что данные компьютеров расходятся, он осматривает панель управления, оценивает показания других приборов и разбирается, что не так. В системе, установленной на Боинге, бортовой компьютер не „осматривает другие приборы“. Он доверяет только приборам на своей стороне. Он не делает по-старинке. Он сверхсовременный. Он — ПО.
Значит, даже если конкретный сенсор угла атаки выйдет из строя — что постоянно случается с приборами, подверженными переходам из одной экстремальной среды в другую, постоянным вибрациям и тряске — компьютер управления просто поверит ему.
Хуже того. Существует несколько других приборов, которые прямым и косвенным способом позволяют определить угол атаки, например, трубки Пито, искусственный горизонт и так далее. Лётчик бы проверил все эти приборы, чтобы быстро диагностировать неисправный датчик угла атаки.
В крайнем случае пилот всегда может выглянуть в окно и визуально убедиться, что нет, нос самолёта не задран опасно вверх. Это окончательная проверка, и она должна оставаться исключительной и абсолютной привилегией лётчика. К сожалению, текущая версия MCAS лишает его этого права. Она отбирает у пилотов возможность реагировать на то, чтобы они видят собственными глазами.
Как человек с нарциссическим расстройством личности, MCAS затмевает собой решения пилотов. И это в конце концов оказалось плохо для всех.
— HAL, подними нос.
— Прости, Дейв, боюсь я не могу этого для тебя сделать.
Бортовой компьютер под управлением MCAS остается слепым к любым доказательствам, что он неправ, включая те, что пилот видит собственными глазами, а когда он отчаянно пытается выровнять самолёт и тянет до отказа роботизированный штурвал на себя, компьютер “кусает” лётчика и его пассажиров до смерти.
В старые времена в FAA работала армия авиационных инженеров. Они работали плечом к плечу с производителями самолётов, чтобы убедиться, что самолёт безопасен и готов к сертификации.
По мере того, как самолёты становились всё сложнее, разрыв между тем, сколько FAA и производители самолетов могли платить своим служащим, постоянно увеличивался. Всё больше инженеров переходило из публичного сектора в частный. Вскорости у FAA не осталось возможностей разобраться, насколько конкретная модель самолёта безопасна, и можно ли её производить.
Тогда FAA предложила авиаконструкторам: „А что если ваши люди будут сами нам говорить, насколько проект безопасен?” Производители ответили: “Звучит неплохо.” А FAA: „И передайте привет Джо, мы скучаем.“
Так родилась концепция „Выделенных инженерных представителей“ (“Designated Engineering Representative,” DER). Эти представители являются наемными лицами самолетостроительных компаний, производителей двигателей и разработчиков ПО, которые удостоверяют для FAA факт того, что всё безопасно и хорошо.
Это выглядит как явный конфликт интересов, однако это не совсем так, всё же никто не заинтересован в том, чтобы самолёты падали. Индустрия авиаперевозок полностью полагается на доверие публики, а каждая авиакатастрофа представляет для отрасли экзистенциальную угрозу. Никто из производителей не станет нанимать DER только для того, чтобы он подписывал любые бумаги. С другой стороны, после долгого трудового дня кто-то может на слово поверить парням из отдела разработки ПО, что “да всё там в порядке».
Поразительно, что кажется никто из разработчиков ПО для MCAS в 737 Max не поднял вопрос об использовании при определении развивающегося сваливания не одного, а нескольких источников данных, включая расположенный с другой стороны датчик угла наклона. Как пожизненный член братства разработчиков программного обеспечения, я не понимаю, какая гремучая смесь некомпетентности, высокомерия и отсутствия понимания авиационной культуры могла привести к такой ошибке.
От переводчика: В комментариях к статье один из пользователей указал на то, что MCAS, помимо прочего, не просто уменьшал угол атаки на 0.8 градуса после того, как в первый раз определил развивающийся процесс сваливания, как предполагалось, но делал это в цикле до упора при каждом новом измерении.
Но я точно знаю, что это индикатор куда более глубокой проблемы в отрасли. Люди, которые писали код для оригинальной системы MCAS были очевидно бесконечно далеки от того уровня профессиональной зрелости, что от них требовалась, и даже не подозревали об этом. Как можно теперь доверить им исправление этого ПО, да и вообще верить в надежность и безопасность остального ПО управления полётом?
Итак, Боинг создал аэродинамически нестабильный корпус летательного аппарата — 737 Max. Первая большая ошибка. Боинг затем попытался замаскировать возникшую проблему динамической нестабильности нового 737 с помощью ПО. Вторая ошибка. Наконец, ПО опиралось на показания систем, известных своей склонностью к отказам (сенсоры угла атаки), и не имела даже примитивных процедур перекрестных проверок не только с другими типами приборов, но и даже сверки с показаниями второго набора датчиков. Большая ошибка №3.
Ни одна из этих проблем не могла бы пройти проверку на качество. Ни одна из них не должна была бы получить «ОК» не только от DER, но и от самого младшего инженера.
Это не просто большая проблема. Это политический, социальный, экономический и технический грех.
Так получилось, что в промежутке между первой и второй катастрофами 737 Max, мне пришлось установить новый цифровой автопилот для моего собственного самолёта. Это Cessna 172 1979 года, самый популярный самолёт в истории по количеству произведенных образцов. Он получил первый лётный сертификат почти на десятилетие раньше первого Боинга 737 (1955 год против 1967).
Мой новый автопилот состоит из нескольких сверхсовременных компонентов, включая резервный бортовой компьютер (с двумя Garmin G5s) и замысловатую коммуникационную шину (CAN, Controller Area Network), позволяющей разным компонентам системы общаться друг с другом вне зависимости от их расположения в корпусе самолёта. CAN шина была разработана в автомобильной промышленности для реализации технологии Drive-by-Wire (электронной цифровой системы управления автомобилем), но с точки зрения целей и реализации она схожа с шинами ARINC, соединяющими компоненты в 737 Max.
Мой автопилот также включает в себя электронные триммеры. Следовательно, он может вносить такие же поправки к конфигурацию полета моей 172, как и полётные компьютеры с системой MCAS в 737 Max. Помню, что после первой катастрофы 737 Max, во время установки автопилота, при разговоре с другом я отметил, что, вероятно, добавляю потенциальный источник опасности, схожей с той, что привела к гибели рейса Lion Air.
Наконец, мой новый автопилот также имеет «защитную оболочку” (ту самую защиту диапазона режимов полёта), где „оболочкой“ является график предельных эксплуатационных свойств самолёта. В то время, когда автопилот не управляет моей Cessna, система тем не менее продолжает контролировать состояние самолёта, чтобы удостовериться, что я не свалю его в штопор, не полечу вверх шасси или не сделаю массу других штук. Да, у него тоже есть режим „кусачая собака“.
Как видите, сходства между моим автопилотом за $20,000 и многомиллионным автопилотом в каждом 737 прямые, осязаемые и релевантные. В чём же различия?
Для начала, установка нового автопилота потребовала получения нового сертификата (“Supplemental Type Certificate,” STC). То есть и производитель автопилота, и FAA согласны, что моя Cessna 172 1979 года со встроенным автопилотом от Garmin настолько существенно отличается от того самолёта, что когда-то сошёл с конвейера, что это уже вовсе не та же Cessna 172. Это совсем другой самолёт.
В дополнение к тому, что у моего самолёта теперь новый (дополнительный) сертификат типа воздушного судна (и новый процесс сертификации), нам потребовалось получить, пересмотреть и дополнить кипу документации по нему, включая руководство по эксплуатации летательного аппарата. Как вы понимаете, по большей части эти дополнения содержат информацию об автопилоте.
Особенно следует отметить, что в этой документации, с которой должен ознакомиться любой собирающийся полетать на этом самолёте, подробно объясняется функционирование автопилота и как он управляет триммерами, а также описываются особенности работы защиты диапазона режимов полёта.
Подробно объясняется и как определить, что система функционирует неправильно, и как её быстро отключить. Строки о том, что для выключения надо выдернуть предохранитель из системы автопилота, повторяются снова и снова едва ли не на каждой странице новой документации. Любому пилоту, захотевшему полетать на моей 172, сразу становится ясно, что она отличается от любой другой 172.
От переводчика: Один из читателей оригинальной статьи указал, что несмотря на то, что у Боинга 737 Max два бортовых компьютера, переключиться с одного на другой в полёте нельзя. Более того, отключить MCAS можно, только вытащив предохранитель из гидравлического мотора, приводящего в движение триммеры оперения, но у лётчиков всё равно не хватает сил поменять положение триммеров без помощи гидравлики. А MCAS их уже установил в минимальное возможное положение…
В этом и есть огромная разница между тем, что говорят лётчикам, собирающимся впервые сесть за штурвал моей Cessna и теми, что садились в 737 Max.
Ещё одним отличием между моим автопилотом и системой с MCAS в 737 Max является то, что приборы, связанные CAN шиной постоянно коммуницируют и проводят перекрёстные проверки, чего, по-видимому, MCAS не делает. Например, автопилот постоянно опрашивает оба бортовых компьютера G5 для определения расположения. Если данные расходятся, то система оповещает пилота и отключается, переходя в режим ручного управления. Она не направляет самолёт в землю, если вдруг начинает считать, что он вот-вот начнёт сваливаться.
И, вероятно, самым большим отличием является сила, которую лётчик должен приложить, чтобы подавить команды автопилота на моем самолёте и на 737 Max. В моей 172 всё ещё есть тросы, напрямую соединяющие органы управления с аэродинамическими поверхностями. Компьютер вынужден нажимать на те же самые рычаги, что и я, причём он намного слабее меня. Случись, что компьютер неверно решит, что самолёт начинает сваливаться, я с лёгкостью смогу преодолеть его сопротивление.
В моей Cessna человек все ещё всегда выходит победителем из битвы с автопилотом. Точно такую же философию всегда исповедовал и Боинг при разработке своих самолётов, более того — использовал против своего заклятого конкурента Airbus, который действовал прямо наоборот. Однако с выходом 737 Max Боинг, похоже, никому ничего не говоря, решил поменять стратегию взаимоотношений человека и машины и также тихо поменять инструкцию по эксплуатации.
Вся эта сага с 737 Max должна научить нас не только тому, что усложнение приводит к дополнительным рискам и что у технологий есть свой предел, но и тому, какие у нас должны быть реальные приоритеты. На сегодняшний день главное — деньги, а не безопасность. О ней думают только лишь постольку, поскольку она необходима для продолжения движения денег в нужном направлении. Проблема с каждым днём становится всё острее, так как устройства всё больше зависят от того, что слишком просто изменить — программного обеспечения.
Дефекты в устройстве техники и “железе”, будь то неудачно расположенные двигатели или уплотнительные кольца, рассыпающиеся на морозе, заведомо сложно исправить. Говоря „сложно“ я имею в виду „дорого“. С другой стороны, дефекты в программном обеспечении можно исправить быстро и дёшево. Всё, что требуется — просто опубликовать обновление и выпустить патч. Более того, мы добились того, что покупатели теперь считают всё это нормой — и обновления для операционной системы на компьютере, и патчи, автоматически устанавливаемые на мою Теслу пока я сплю.
В 1990-х я как-то написал статью, в которой сравнивал относительную сложность процессоров Intel Pentium, выраженную в количестве транзисторов на чипе, со сложностью новой ОС Microsoft Windows, выраженную в строках исходного кода. Оказалось, что они были сравнительно одинаково сложными.
Примерно в тоже самое время выяснилось, что ранние версии процессоров Pentium были подвержены багу, названному ошибкой FDIV. Лишь небольшое количество пользователей Pentium (прим. пер.: учёные и математики) могли испытывать какие-либо проблемы в связи с ней. В Windows были найдены аналогичные дефекты, также затрагивавшие лишь незначительную часть пользователей ОС.
Однако последствия для компаний Intel и Microsoft оказались в корне разными. Для Windows планомерно выпускались небольшие программные заплатки, Intel же пришлось в 1994 году отозвать все бракованные процессоры. Это обошлось компании в 475 миллионов долларов — более 800 миллионов в сегодняшних ценах.
По моему мнению, относительная простота и отсутствие значительных материальных затрат при обновлении ПО привело к развитию культуры лени в сообществе разработчиков. Более того, из-за того, что ПО всё больше и больше контролирует „железо“, эта культура лени начинает проникать и в разработку техники — к примеру, в самолётостроение. Всё реже мы уделяем должное внимание разработке правильной и простой конструкции техники, ведь так просто потом исправить дефект с помощью ПО.
Каждый раз, когда выходит новое обновление для моей Tesla, полётного компьютера Garmin в моей Cessna, термостата Nest или телевизора у меня дома, я лишний раз понимаю, что ни одна из этих вещей не была выпущена с фабрики по-настоящему готовой. Потому что их создатели осознали, что это вовсе необязательно. Работу можно будет закончить когда-нибудь потом, выпустив очередное обновление.
»Я — сетевой инженер, бывший программист, писавший ПО для авионики самолётов. Всегда было любопытно, что нам приходилось изворачиваться изо всех сих, чтобы поставить новую плату в сертифицированный компьютер, а ПО не требовало никакой сертификации (кроме общих ограничений типа «не может работать под Windows» или «должно быть написано на С++»). Правда, это было около 10 лет назад, надеюсь, что сейчас дела обстоят иначе."
— Анонимно, из личной переписки
В настоящее время Боинг устанавливает новое обновление для бортового компьютера и MCAS 737 Max. Не знаю точно, но полагаю, что это обновление будет в основном направлено на две вещи:
Первое — научить программное обеспечение делать перекрёстную проверку приборов, как это делают лётчики. То есть если один датчик угла атаки начнёт сообщать о том, что самолёт вот-вот начнёт сваливаться, а другой датчик — нет, то есть надежда, что система больше не будет сразу направлять самолёт носом в землю, а всё же сначала уведомит пилотов о конфликте в показаниях датчиков.
Второе — отказаться от стратеги «сначала стреляй, вопросы потом задавать будешь», то есть начать смотреть на разные источники вместо одного.
Хоть убей, не понимаю каким образом получилось, что эти два базовых принципа авиационной промышленности, основы
Подозреваю, что причина кроется примерно там же, где и причина желания Боинга поставить двигатели большего размера и избежать связанных с этим крупных расходов — желания съесть бесплатный сыр, который, как известно каждому, бывает только в мышеловке.
Упор на необходимость разрабатывать максимально простые системы хорошо показан у Чарльза Пэрроу, социолога Йельского университета, автора книги «Нормальные аварии: жизнь с высокорискованными технологиями» (Normal Accidents: Living With High-Risk Technologies(англ.)) 1984 года. Вся суть книги содержится уже в названии. Пэрроу утверждает, что системный сбой является нормальным результатом работы любой сложной системы с тесно связанными компонентами, когда поведение одного компонента непосредственно отражается на поведении другого. Несмотря на то, что по отдельности такие ошибки могут казаться вызванными той или иной неисправностью техники или сломанным процессом, на самом деле они должны рассматриваться как неотъемлемые особенности самой системы. Это «ожидаемые» аварии.
Эта проблема нигде не ощущается так остро, как в системах, предназначенных для повышения безопасности. Каждое новое внесенное изменение, каждое усложнение становится всё менее эффективным, а в конечном счёте приводит и вовсе к отрицательным результатам. Наложение одного исправление поверх другого в попытке повысить безопасности в конце концов приводит к её уменьшению.
Именно об этом нам говорит и старый инженерный принцип проектирования — «Чем проще, тем лучше» (“Keep it simple, stupid”, KISS), и его авиационный вариант: «Упрости, потом добавь лёгкости» (“Simplify, then add lightness”).
Одним из основных принципов FAA при сертификации самолётов во времена Эйзенхауэра был своеобразный завет простоты: самолеты не должны демонстрировать значительных изменений тангажа с изменением мощности двигателя. Это требование появилось во времена существования прямой связи между органами управления у лётчика в кабине и оперением самолёта. Это требование — когда оно было написано — справедливо накладывало требование простоты на конструкцию самого планера. Теперь же между человеком и машиной появилась прослойка программного обеспечения, и никто точно не знает что же там происходит на самом деле. Вещи стали слишком сложными для понимания.
Не могу выкинуть из головы параллели между катастрофами 737 Max и космического челнока Челленджер. Авария с Челленджером произошла потому, что люди следовали инструкциям, а не наоборот — ещё одна иллюстрация «нормальных» катастроф. Правила говорили, что перед запуском челнока требуется провести конференцию, чтобы убедиться в полной готовности к полёту. Никто не говорил, что при вынесении решения нельзя придавать слишком большой вес возможным политические последствиям, которые могли бы возникнуть из-за переноса запуска. Все вводные данные были тщательно взвешены согласно установленному процессу, большинство согласилось на запуск. И семь человек погибло.
В случае с 737 Max всё тоже делалось по всем правилам. Правила говорят, что тангаж самолёта не должен слишком сильно изменяться при изменении мощности двигателя и что назначенный инженер (DER) вправе подписать любые изменения, направленные на решение этой проблемы. В правилах нет ничего о том, что DER не должен руководствоваться деловыми соображения при принятии решения. И вот уже 346 человек мертвы.
Весьма вероятно, что система MCAS, разрабатываемая с расчетом на повышение безопасности полётов, убила больше людей, чем могла бы когда-либо спасти. Не надо пытаться исправлять её дальнейшим повышением сложности, дополнительным ПО. Её нужно просто убрать.
Об авторе
Грег Тревис — писатель, руководитель в разработке ПО, пилот, владелец самолёта. В 1977 году в возрасте 13 лет он создал Note — одну из первых социальных медиаплатформ; его налёт составляет более 2000 часов, он управлял всем от планеров до Боинга 757 (в симуляторе с полной имитацией движения).
Автор: WASD42