ソフトウェア・インテグリティ

 

米国における低品質ソフトウェアのコスト問題

2020年における米国の低品質ソフトウェアによるコストは2.08兆ドルと試算されました。この記事では、経営層のために品質およびセキュリティをコストで可視化を試みたCPSQと名付けられたレポートから、ビジネスの課題を読み解いていきます。

cost of poor software quality | Synopsys

“The Cost of Poor Software Quality in the U.S.”というレポートはテキサス大学のKrasner教授によって纏められ、初版は2018年に公開されました。それから2年を経て2020年の米国のソフトウェアの低品質による「コスト」がどのように変化したのか、新しく発行された2020年版のレポートからエグゼクティブ・サマリーを眺めてみることにしましょう。

冒頭に書いた通り、2020年の低品質なソフトウェアに伴う総コストは2.08兆ドルと試算されました。これは、2018年に比べて14%増加しています。増加の根拠はIDCの市場予測によるもので、IT産業の市場規模が拡大を続けているためです。

低品質なソフトウェアはどのようにコストとなるのか?

レポートでは、低品質なソフトウェアによって発生するコストを三つの項目に分けています。

  • 最も大きな項目は「運用ソフトウェアの障害」で、全体の75%、およそ1.56兆ドル。2018年から22%の上昇。
  • 次に大きな項目は「レガシー・システム」で、およそ5200億ドル。2018年から18%減少。
  • 最後の項目は「プロジェクトの失敗」で、およそ2600億ドル。2018年から46%上昇。

これらの他に「技術的負債」という項目がありますが、これは「将来コストとなる可能性のある潜在的リスク」を表しています。これは1.31兆ドルで、2018年から14%増加しています。

低品質なソフトウェアのコストが嵩むのは何故か?

まず最初に、Internet of Things (IoT) (あるいは Internet of Everything (IoE))と呼ばれる複雑なシステムが急速に増加していることが原因として挙げられるでしょう。クラウド、組み込み機器、モバイル端末、PCやセンサーネットワークなどが組み合わせられた現代のシステムは、柔軟に異なるコンポーネントやサブシステムをつなぎ合わせることで必要なサービスやアプリケーションを実現することが可能ですが、一方で、個々のサブシステムやコンポーネントで、統一されたセキュリティレベルを実現することが困難であることによりアタックサーフェスが増えるからです。

2番目に、低品質なソフトウェアを改修するためのコストだけでは済まないからです。ソフトウェアに内在する「脆弱性」により、サイバー攻撃を受ける事案が急速に増加しています。また、レポートにも書いてありますが、表面化していない、統計に現れないコストがあると想定されます。

NIST(National Institute of Standards and Technology/アメリカ国立標準技術研究所)によれば、一般的なソフトウェアには1000行当たり、平均で25個のエラーがあるとしています。つまり、「稼働するシステム」の劇的な増加により問題が悪化し続けているのです。

アタックサーフェスの増加は他にも原因があるでしょう。たとえば、次のようなものです:

  • デジタル・トランスフォーメーション(DX):ビジネス・オペレーションの大部分を占めている営業から提供(出荷)まで、実際にはソフトウェアによって業務手続きが統合、管理されています。したがって、問題が発生するとバリューチェーン全体に影響が及ぶことになります。
  • システム・オブ・システムズ: システム・オブ・システムズというのは、システムが複数の異なるシステムで構成されていても、個々のシステム自体は、単独で機能するものを指しています。たとえば、コンビニにあるプリンター。スマホのアプリなどからリモートで印刷を行うこともできますが、店舗に設置されている個々のプリンターはSDカードなどからも印刷することができるわけです。これはシステム間の通信やタスクの受け渡しあるいは運用で問題が発生する場合があります。
  • 競争の加熱: ビジネス上の競争が加熱することでプレッシャーが高まります。特にオンライン・ビジネスでは、ビジネスのスピードが市場における勝敗を決することが少なくないため、運用上のリスクや保守費用よりもスピードを優先させてしまいがちです。そして問題が発生した際に対処できるよう対策がなされていない場合、大きなコストを産む可能性があります。

脆弱性を悪用するサイバー犯罪やサイバー攻撃は増加の一途を辿っています。アクセンチュアのレポートによると、サイバー犯罪によるコストは2018年には平均で年間260万ドルとのこと。また、別のレポートでは、ランサムウェアによるコストは、2021年には6兆ドルと試算されています。

「セキュリティを組み込む」ことがどんな意味を持つのか?

security helps reduce cost of poor software quality | Synopsys

レポートで指摘しているまでもなく、ソフトウェア品質を向上させるためのセオリーとして、上流で品質を作り込むという考え方があります。これは現在では「シフト・レフト」あるいは「シフト・エブリウェア」という言葉に置き換えられて語り継がれていますが、瑕疵、バグ、脆弱性などが生まれた(埋め込まれた)場所に最も近い場所でそれらの問題を見つけて直していくことを指しています。システムの運用の手順に問題ががあれば、運用手順を定義する段階で詳細な検証を行うことで定義段階で修正できるかもしれません、ソフトウェア要件を定義する段階で問題がわかれば、後工程でコードやシステムのテストや手戻りにかかる工数をかけずに済むのは自明です。

このように、コードになる前の段階で問題を発見するには「レビュー」によって典型的な誤りや齟齬などを特定することが必要です。また、経験豊富な専門家による支援があれば、より多くの問題の種が芽吹く前に見つけることができるはずです。さらにコードに不要な脆弱性を埋め込むことを防ぐにはコードを書いた後、プログラマー自身が静的解析(SAST)ツールを使うのが効果的です。これは、単体テストをプログラマー自身が書くのが効果的なのと同じ理由です。

ソフトウェア開発ライフサイクル(SDLC)を通して品質を高めるためには、問題を見つけるだけではだめです。セキュアなコードの書き方を覚え、システムのアーキテクチャや構成による課題や脆弱性を見つけ出し、セキュリティ・テストを開発ライフサイクル全体に組み込むことができれば、より品質の高いソフトウェアをデリバリーすることができるようになります。

また、一般的なセキュリティ・テストの組み込みは、以下のように考えられます。

さらに、次の点に留意することを強くお勧めします。

  • セキュア・コーディングを実践しましょう。
  • ソースコードの解析はリリース前に必ず行う。
  • 反復プロセスとして構造的な品質改善を行う。
  • 既知の脆弱性(CVE)や共通脆弱性(CWE)に対処する。

しかし、この取り組みに終わりはありません。

「予防」が最も効果的な投資

先に述べたように、SDLCにおける最適なタイミングで最適なテストを行うことが効果が高いという点には異論がない(あるかもしれませんが)と思います。しかし、これを自分の組織で実現するためには、いくつも超えなければならないハードルがあります。それは、組織全体での認識となり、経営層からの支援がなければ、プログラマー、QA、PM、テスターといった開発現場の個々人が理解しているだけでは高い品質を実現することはできないからです。

レポートでは約2兆ドルのコストが試算されていますが、これを減らすことができれば、コストを投資として振り向けることができるはずだからです。

みなさんの組織ではどうですか?

 

この著者によるその他の情報