Как избежать проблем с программным обеспечением
Разное / / November 29, 2021
В эту цифровую эпоху вы, должно быть, слышали о таких гигантах социальных сетей, как Facebook и Twitter, и о платформах электронной коммерции, таких как Alibaba и Amazon. Эти онлайн-сайты полагаются на различные программные пакеты для своей работы. Эти программы откровенно изменили то, как мы работаем, думаем и живем.
Кроме того, многие устройства, которые раньше были исключительно механическими, теперь управляются программным обеспечением. Например, термостаты когда-то были электромеханическими устройствами. Однако теперь они в значительной степени полагаются на программное обеспечение для работы.
Тем не мение, программные ошибки могут быть довольно проблематичными, особенно с учетом того, что мы все больше полагаемся на них в повседневной деятельности. Фактически, было довольно много случаев, когда программное обеспечение не соответствовало своему назначению, что приводило к неприятным результатам.
В этой статье мы поговорим о 4 случаях, когда производительность программного обеспечения существенно не соответствовала требованиям, и о том, как избежать таких проблем с программным обеспечением.
1. Отключение службы 911 в нескольких штатах США
911 - это критически важная служба, которая позволяет людям при необходимости связываться с персоналом службы экстренной помощи. Иногда связь с диспетчерами службы экстренной помощи через службу 911 может буквально иметь значение между жизнью и смертью.
Поэтому это была настоящая катастрофа, когда 9 апреля 2014 г. 911 маршрутизация вызова не удалась в семи штатах США, включая Калифорнию, Флориду, Миннесоту, Северную Каролину, Пенсильванию, Южную Каролину и Вашингтон.
Это отключение было вызвано предотвратимой ошибкой кодирования, которая произошла в центре управления экстренными вызовами в Колорадо, принадлежащем Intrado.
2. Заземление флота United Airlines
В июле 2015 года United Airlines была вынуждена заземлить весь свой флот самолета из-за сбоя программного обеспечения. Это затронуло более 4900 рейсов по всему миру и привело к тому, что многие пассажиры оказались в затруднительном положении в аэропортах и были совершенно разочарованы.
Вероятно, это имело место и для экономики, поскольку авиакомпании пришлось бы компенсировать многим пассажирам неудобства. Также, вероятно, было несколько важных деловых встреч, которые были сорваны из-за заземления.
3. Неисправность педали акселератора Toyota Camry
В сентябре 2007 года Джин Букаут ехала по межштатной автомагистрали 69 в Оклахоме с пассажиркой Барбарой Шварц, когда она столкнулась с трудностями. управляя своей Toyota Camry.
Она попыталась оторвать ногу от дроссельной заслонки, но машина продолжала ускоряться. Педаль тормоза не смогла остановить машину, и она была вынуждена задействовать аварийный тормоз.
К сожалению, это привело к тому, что машина вылетела на насыпь. В результате Шварц скончался, а Bookout был госпитализирован на пять месяцев из-за тяжелых травм.
Было высказано предположение, что авария произошла из-за нескольких несоответствий в коде, которые привели к сбою задачи в процессоре Camry. Этот ЦП будет управлять невероятно большим количеством функций, включая зажигание, управление дроссельной заслонкой и круиз-контроль.
Код Toyota превратился в запутанный беспорядок после того, как в течение нескольких лет новые коды накладывались на старые. Обычно это называют «спагетти-кодом».
Однако авария с Bookout пролила свет на эту проблему и высветила недостатки Toyota в их программном процессе. Выяснилось даже, что существует более 10 миллионов способов потенциально может произойти нежелательное ускорение, исходя из того, как был структурирован код Toyota.
Неисправность термостата Nest
Nest - это компания, принадлежит Alphabet, что делает умные термостаты. Эти термостаты довольно изящны и позволяют пользователям контролировать температуру в своих домах со своих смартфонов.
Прошлой зимой термостаты Nest испытал сбой в виде ошибочного обновления программного обеспечения, которое привело к разрядке батарей. К сожалению, эта ошибка произошла в середине зимы, в результате чего несколько пользователей временно остались без тепла. Это определенно то, чего вы не хотите происходить в это время года.
Краткий анализ проблем с программным обеспечением
Такие подходы, как проектирование на основе моделей и TLA +, позволяют разработчикам получить более полное представление о том, как работает их программное обеспечение.
Бретт Виктор, известный компьютерный исследователь, считает, что существует отключение между программистами и проблемами, которые они пытаются решить с помощью кода.
Из-за этого разрыва программистам становится сложно представить, что они пытаются вставить в коды. Виктор считает, что это один из факторов, способствующих тому, что программное обеспечение изобилует ошибками.
Однако надежда есть. Такие подходы, как модельно-ориентированный дизайн и TLA + позволяют разработчикам получить более полное представление о том, как работает их программное обеспечение.
Модельно-ориентированный дизайн, как следует из названия, позволяет разрабатывать программное обеспечение с помощью визуальных моделей. TLA +, сокращение от Temporal Logic of Actions, представляет собой язык, разработанный для написания спецификаций компьютерной программы. Что хорошо в TLA +, так это то, что он позволяет проводить исчерпывающее тестирование и проверку программного обеспечения до того, как оно будет опубликовано.
И дизайн на основе моделей, и TLA + уже доказали свою ценность. Эстерель технологии, компания по разработке программного обеспечения, использует проектирование на основе моделей для создания критически важного для безопасности программного обеспечения, в то время как TLA + использовался такими компаниями, как Microsoft, чтобы исправить возможную катастрофическую ошибку Xbox, и Европейское космическое агентство, чтобы переписать коды для зонда, который приземлился на комета.
Процесс написания кода высоко ценится программистами. Многие из них просто заинтригованы процессом написания кодов. Поэтому трудно заставить некоторых программистов принять такие подходы, как проектирование на основе моделей и TLA +. Эти подходы часто воспринимаются как строго академические, не имеющие реальной жизнеспособности. Однако изменение взглядов должно произойти как можно раньше.
Последние мысли
Программное обеспечение все чаще используется в приложениях, требующих встроенных мер безопасности. Повсеместно необходимо внедрять более совершенные методы разработки программного обеспечения, поскольку такие приложения жизненно важны в нашей жизни.
В наши дни такие процессы, как автоматизация, в значительной степени зависят от программного обеспечения, но одна ошибка в строке кода может привести нас к серьезным неудачам, как показывают приведенные выше примеры.
А теперь представьте, что в эти приложения включается что-то вроде искусственного интеллекта (ИИ). AI это достаточно страшно само по себе без программных глюков. Добавьте ошибки в смесь, и никто не знает, что может случиться.
Однако здесь есть и лучшая сторона. Немного поработав и используя некоторые новые инструменты, мы можем улучшить программное обеспечение и искусственный интеллект, спроектировав его более надежно и протестировав его на прочность.
Будем надеяться, что заинтересованные органы серьезно отнесутся к этому важному вопросу, чтобы мы могли использовать программное обеспечение в полной мере, но только для построения более безопасного и разумного будущего.