みなさま、こんにちは。
突然ですが、The Qt Companyが最近、静的解析ツールも扱い始めたことをご存じでしょうか?
そのツールは、名をAxivion Suite(アクシビオン・スイート)と言います。
本シリーズでは「Axivion Suite入門」と題しまして、少しでもこのツールについてご理解を頂けるような記事を書いていければと思いますので、どうぞよろしくお願いいたします!
Axivion Suiteは、もともとAxivion Gmbhというドイツ企業の静的解析ツールとして開発されました。
この会社は、ドイツの優れた工科大学連合「TU9」の1校として名を連ねるシュトゥットガルト大学が中心となって1996に行われたバウハウスプロジェクトという、ソフトウェアの保守やリエンジニアリングに関する学術研究にルーツを持ちます。2005年にそこから企業としてスピンオフする形で誕生してから、既に15年以上の歴史を持っています。
そんなAxivion Gmbhが、最近になってThe Qt Companyに買収されたことで、このAxivion SuiteはQtの扱う品質保障ソフトウェアツールのひとつとなりました。
そんなAxivion Suiteですが、現在その業界やソフトウェアの種類にかかわらず、様々なお客様にご愛顧いただいております。
使用される業界やソフトウェアの種類を選ばないことからソフトウェアの品質を気にかけている方なら、だれでも使えるツールと謳われています。
Axivion Suiteのミッションは、ずばりソフトウェアの劣化を止める(Stop Software Erosion)です。
ソフトウェアの劣化。これは一体全体どういう意味なのでしょうか?
シュトゥットガルト大学は、今から20年以上前にソフトウェア分析や複雑性に関する研究を始めました。
しかし、実はそれ以前の70年代や80年代の時点で、継続的に機能が追加され、進化、改善されていくソフトウェアシステムに対して何が起こるのかについて、すでに多くの研究がなされていました。
ここで、ある一定期間において開発が行われるソフトウェアがあるしましょう。
このグラフに対して、アプリケーションの機能の量をプロットするとすると、どのようなグラフができるでしょうか?
おそらく、機能の量は初期開発の時点でグンと増えるものの、そこからは機能の漸進的追加や改善がメインとなるため、その増加量は以下のように緩やかになるはずです。
では、ここにソフトウェアの複雑度をプロットするとすれば、どのような線になるでしょうか?
複雑度は、機能とは対照的に加速度的に増えていく傾向があります。
実際、これまでAxivion Gmbhが関わってきた顧客の95パーセント以上が、ソフトウェアの複雑度は、開発が進むにつれて非線形、もっとひどい場合は指数関数的に増加すると話しています。
そして、さまざまな産業においてソフトウェアの重要度が増加している近年においては、その様相はこれまで以上に顕著になっています。
問題は、ソフトウェアの複雑度には限界があり、その限界を迎えると、ソースコードの理解が非常に難しくなるということです。
複雑度がこの限界に達すると、新規機能の追加、既存機能の変更、新しいハードウェアへの移植などがとても困難になり、不具合(バグ)を作りこんでしまうリスクや、期限内に作業を終えられないリスクが高まってしまいます。
そして、仮にソフトウェアの複雑度が非線形で増加していく場合、ソフトウェアのライフサイクルが終わる前に、理解度の限界に到達してしまうのです。
この、開発の過程の中で増加する不要な複雑性によりソフトウェアの保守などに悪影響が及ぶことをソフトウェアの劣化と呼んでいます。
こういった事態に対する対応方法として、多くの場合定期的にソースコードのクリーンアップ、リファクタリングを行うという手段が取られます。
実際、Axivion Gmbhが当初とっていたアプローチも、こういったものでした。
しかし、そこには3つの問題がありました。
まず最初の問題は、このアプローチをもってしても、ソフトウェアのライフサイクルが完了する前に理解度の限界を迎えてしまうリスクがあることです。
そして2つ目の問題は、こういった定期的かつ大規模なリファクタリングは作業として単純に大変であるばかりではなく、大きなリスクが伴い、コストもかかることです。
第3の問題は、この大変で、大きなリスクが伴い、コストもかかる割に新機能が何も追加されない作業に対して、マネジメントの許可が下りないことです。
ソースコードの問題を認識していて、いくらリファクタリングを望んでいても、それがかなわなかったというエンジニアは星の数ほどいるはずです。
Axivionのとるアプローチは継続的リファクタリングです。以下のグラフの緑の線のように、開発プロセスの一つとしてリファクタリングを組み込んでしまうことで、リスクやコストを抑えながら、マネジメントの承認も必要とせずにソフトウェアの複雑性を低く抑えることができます。
そして、上記の例ではプロジェクト開始時に継続的リファクタリングを開始していますが、このアプローチはプロジェクトの途中からでも開始することができます。
過去にも、このようにプロジェクトの途中からAxivion Suiteを使い始めて成果を挙げた顧客は多くいらっしゃいます。
継続的リファクタリングによってソフトウェアの劣化を防ぐためには、ソフトウェアの劣化の原因となる問題を特定し、それをどの程度まで抑えるのかを検討する必要があります。
次章ソフトウェアを劣化させる6つの要素?Axivion Suite入門 その2では、ソフトウェアの劣化の6つの原因についてご説明いたします。お楽しみに!
以上が、記事の内容となります。
SquishをはじめとするQtのQA(品質保証)ツールにご興味のおありの方は、Qt JapanのEメールアドレスjapan@qt.ioまでお気軽にご連絡ください。
概要のご説明から詳細な技術的相談、ツールトライアルのご案内もいたしております。