エラーの代償:プログラマーのミスに対して誰がいくら払って、どれだけ支払うのか?

現代のプログラマーは、ソフトウェアが文字通り人間の生活のあらゆる領域に浸透し、私たちの日常生活の一部となった無数のデバイスに存在し始める興味深い時代に生きています。 これで、冷蔵庫、時計、コーヒーメーカーのプログラムで誰も驚かなくなります。 しかし、利便性の勝利と並行して、人々のスマートテクノロジーへの依存が高まっています。 避けられない結果:ソフトウェアの信頼性が前面に出てきます。 猛烈なコーヒーマシンで誰かを怖がらせるのは難しいですが、多くの問題を引き起こす可能性があります(沸騰したコーヒーのリットルが雪のように白い大理石のカウンタートップに流れ落ちます...)。 しかし、ソフトウェアの品質に対する要件の増大という考え方は重要であるため、時間とお金の大幅な浪費を伴うコードのバグについて話しましょう。











写真4










この物語の目的は、プログラムの欠陥を以前と同じように軽da的に扱うことができるという考えと戦うことです。 現在、プログラムのエラーはゲーム内で誤って描かれたユニットであるだけでなく、財産と人々の健康の安全はコードに依存しています。 この記事では、コードに敬意を払う必要性の新しい例をいくつか示します。







複雑なプログラムがますます私たちの生活の一部になりつつあることを否定することはできません。スマートフォン制御の家電製品、10年前には夢にも見られなかった機能を備えたガジェット、そしてもちろん、工場や車などのより複雑なソフトウェアd。 すべてのプログラムは人によって作成され、賢くなればなるほど、その失敗はより危険になります。







ソフトウェアのバグとソフトウェアコードへの依存の高まりによって失われたお金について話しましょう。 このトピックは繰り返し議論されており(私の同僚のAndrei Karpov、「 大きな電卓は手に負えなくなっている 」など)、それぞれの新しい例が証明しています。コードの品質は無視できるものではありません。







写真1







スペース



親愛なるハイフン



1962年の衛星マリナー1は金星に行くことになっていた。 カナベラル岬から始まって、ロケットはコースからほとんどすぐに逸脱し、地面に落ちるという深刻な脅威を生み出しました。 起こりうる大災害を防ぐために、NASAはロケットの自己破壊システムを起動することを決定しました。 開始から293秒後、マリナー1は除去されました。







写真3







改訂委員会は調査を実施しましたが、その間に判明したのは、事故の原因がソフトウェアエラーであり、そのために誤った制御信号が受信されたことです。







プログラマーは、記述された式をコンピューターコードに誤って変換し、 マクロンまたは上線をスキップしました(つまり、「時間に対する半径Rの導関数の値のn番目の平滑化」)。







プログラムは、速度のわずかな変化も非常に重要であると認識し、コース修正を実行しました( ソース )。







「ミッシングハイフン」の価格は1800万ドルです(当時)。







底に沈むロシアのGPS



ソフトウェアエラーが原因で数百万人が失われる可能性があるという印象的な例は、比較的最近のケースです。 21世紀には、特に宇宙産業に関しては、信頼できるプログラムを書くために必要なものがすべてあるように思われます。 優れた教育、良好な資金、ソフトウェアのチェックに最適なツールを使用できる能力を備えた経験豊富な専門家。 これはすべて助けにはなりませんでした。 2010年12月5日、ロシアのGPSアナログである3つのGlonass-M衛星を搭載したProton-Mロケットが太平洋に落下しました。







写真5







調査が完了した後、ロシアの検事総長アレクサンドル・クレノイの公式代表者から事故の原因が発言されました。 -空の軌道へのキャリアと太平洋への落下」( ソース )。







このストーリーの興味深い点は、式を調整する必要性についてのドキュメントがあったが、実行された時点で償却されたことです。 経営陣は、指示の実施を確認することを気にしませんでした。 事故に関与したすべての人が起訴され、重い罰金を科されました。 しかし、これは1億3800万ドルの損失を補償しません。









2009年、ミュンヘン工科大学の自動車科学のマンフレッドブラの専門家であるコンピューターサイエンスの教授は、次のように述べています。「プレミアムカーソフトウェアには約1億行のコードが含まれています」( ソース )。 それから8年が経ちましたが、トップギアショーのファンであることに気付く必要はまったくありません。現代の車は本物のインテリジェントな車です。







同じ専門家によると、自動車のソフトウェアと電子機器のコストは、市場での価格の約40%です。 そして、これはガソリンエンジンにも当てはまります。ハイブリッド車や電気自動車については、この値は約70%です。







電子的充填が機械的充填よりも複雑になると、ソフトウェア開発者の責任が増大します。 ブレーキなどの重要なシステムの1つにあるバグは、破損したブレーキホースよりもはるかに大きな危険です。







現代の快適で「スマート」な車を運転したり、昔ながらの理解しやすい車を運転したりするには? それはあなた次第ですが、私は車のソフトウェアのバグの小さな選択をお勧めします。







トヨタ再び



日本のトヨタ車は好評ですが、メディアは定期的に一定数の車のリコールに関する情報を受け取ります。 私たちのブログにはすでにトヨタのソフトウェアバグに関する記事があります- トヨタ:81,514 Code Violationsですが、残念ながらこのケースは孤立したものではありません。







写真6







2005年には、2004年のリリースと2005年初頭の16万台のトヨタプリウスハイブリッド車がリコールされました。 1台の車両につき約90分、または約24万人の工数がバグの修正に費やされました。







クライスラーとフォルクスワーゲン



2008年5月に、クライスラーは24,535の2006年ジープ司令官を回想しました。 理由は、自動変速機制御モジュールのソフトウェアエラーです。 障害により、制御不能なエンジン停止が発生しました。







その年の6月、フォルクスワーゲンは約4,000人のパサートと2,500人のティグアンを撤退させました。 ここでは、ソフトウェアのバグがエンジン速度の増加に影響しました。 エアコンの電源を入れると、タコメーターの測定値が徐々に上昇し始めました。







言うまでもなく、車をリコールするプロセスは、莫大な金銭的費用に関連しています。 しかし、そのような大規模な製造会社にとっては、金銭的損失よりもはるかに悪いが、消費者の信頼の低下です。 自動車市場での大きな競争により、そのような見落としの1つは、非常に否定的な結果をもたらす可能性があります。 信頼できるメーカーの評判を回復するのは簡単なことではありません。







テスラ



上記では、最近のリリースではなく、普通の車について話していました。 ご覧のとおり、環境に安全な電気自動車を積極的に宣伝することはもちろんのこと、プログラムエラーが発生する可能性もあります。







もちろん、 Tesla Model Sについて話しましょう 2016年5月7日、電気自動車の称賛に関するYouTubeビデオで有名になったジョシュアブラウンは、交通事故に遭いました。 彼はテスラモデルSを運転していました。車の知能に100%自信を持って、彼はオートパイロットを信頼していました。 信頼の結果は悲劇的です-怪我からジョシュアはその場で死にました。







大災害は広く公表されました。 調査が開始されました。 どうやら、ブラウンは独力で道を進んでおらず、オートパイロットは彼のプログラムコードに反映されていない状況に直面したことを明らかにすることができました。 テスラの前、ジョシュアはトレーラーでトラックを運転していました。 車は操縦を行うことを計画していた-それぞれ左折、減速する必要があった。 しかし、後ろを運転するテスラは、減速し始めませんでした、なぜなら 自動操縦システムは前方の物体を認識しませんでした。







これは、おそらく明るい太陽のために起こりました。 トレーラーから光線が反射し、自動操縦装置はトラックを空と一体化させました。 公式レポートでは、これは次のように説明されました:「テスラの自動ブレーキシステムはまれに衝突回避技術であり、トラックを横断した結果の衝突を含むすべての事故モードで信頼できるように設計されていません」( 出典 )。 完全な事故報告書は公開されています







言い換えれば、オートパイロットはドライバーを支援するように設計されており(より高度なクルーズコントロール、大まかに言えば)、その機能を置き換えるものではありません。 もちろん、テスラの評判はそれほど節約されませんでした。 ソフトウェアの改善作業は継続されましたが、Tesla Model Sは道路から回収されませんでした。







写真7







会社の代表者は次の交通統計を引用しました:「9,000万マイル走行するごとに1人が死にます。対照的に、最初の死が確認される前にテスラのオートパイロットで1億3000万マイル走行しました。 ( ソース







一方では、そのような統計は電気自動車がより安全であることを示していますが、あなたの人生、乗客や他の道路利用者の人生をプログラムに委ねる準備はできていますか?







そして、これは修辞的な質問ではありません。 交換ニュースから判断すると、センセーショナルな事故にもかかわらず、テスラの株式は2017年の初めから50%成長しました。 これには、2つの重要な要因があります。世界の環境改善を提唱する運動の人気と、テスラの首であるアイロンマスクの高い個人的評価です。







ユニバーサルスケール-2038年のトラブル



記事の最後にこの例を引用するしかありませんでした。 2038年のトラブルの詳細については、「 2038:残り21年 」という記事で読むことができますが、1つの重要な点に焦点を当てます。







工場用設備:あらゆる種類の機械、コンベヤー。 特殊なソフトウェアを備えた家電製品やその他の複雑なユニットの寿命はかなり長くなります。 2017年にリリースされたマシンが2038年に機能する可能性は非常に高いです。 このことから、論理的に結論を下すことができます。time_t型の32ビット値が日付を正しく表示できなくなった場合の問題は、すでに関連しています。







今、ソフトウェア開発者がそれを考慮に入れない場合、2038年にプログラマを待っているのは何ですか?! 組み込みシステム用のソフトウェアが多くのサプライズを手配する可能性があります。 しかし、私たちはそれを目撃すると思います。







おわりに



おそらく、記事に記載されている例はあまりにも壮大に見えます。 もちろん、悲劇的なケースのみが広く公表されています。 しかし、すべてのソフトウェア開発会社には、ローカルスケールではあるが、たった1つのミスが多くの問題を引き起こしたという話があると確信しています。







犯人を見つけることは可能ですか? 時々はい、時にはいいえ。 しかし、ポイントは極端を見つけて、どういうわけか彼を罰することではありません。 考え方は異なります。プログラムはより複雑になり、私たちの生活にますます入り込んでいます。つまり、コードの信頼性に対する要件が高まっています。 標準エラーの価格は高くなり、重い負担のコードの品質に対する責任は開発者の肩にかかっています。







出口は何ですか? 開発プロセスを合理化します。 エラーを特定して排除するための特別なプログラム-プログラマーにヘルパーを提供します。 最新の技術を統合的に使用することにより、コードのバグが開発段階で検出されない可能性が大幅に減少します。







間違いを避けるために、あなたのプロジェクトがこの記事で与えられたものに似た選択に決して陥らないことを願っています。








All Articles