SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Developers Summit 2024 セッションレポート(AD)

ソフトウェアの複雑化・劣化を防ぐには? アーキテクチャ検証と静的解析を効率化する方法とは

【15-B-5】ソースコードの複雑化や劣化を防止するには?~アーキテクチャ検証と静的解析の自動化によるアプローチ

  • このエントリーをはてなブックマークに追加

生産性を高める静的解析ツール「Axivion Suite」とは

 Axivion Suiteはソフトウェア劣化を防ぐための静的解析ツールだ。静的解析とはソースコードを実行せずに解析する技術であり、動的テストとは異なり、部分的にしか実行できないコードや、呼び出し元が存在しないライブラリも解析できる。

 静的解析にはさまざまな手法が存在する。抽象解釈は、ソースコードをモデル化し、その構造を理解するために用いられ、アーキテクチャの解析に役立つ。テイント解析(Taint Analysis)は、セキュリティ関連の解析で、特定の位置で変更されたデータを検出する。字句解析では、ソースコードをトークンに分解して解析する。データフロー解析では、ソースコード内のデータの流れを、実行せずにモデリングする。

 静的解析ツール利用のメリットは、バグの早期発見だ。また、コーディング規約の適用によりコード品質を改善できる。機能安全性が求められるプロジェクトでは、MISRAなどの規約に準拠したコンプライアンスに配慮した検証も可能だ。さらに、脆弱性検出、メトリクスの測定・ドキュメント化、コードレビューの自動化など、多岐にわたる利用方法がある。ツールによる検証の効率化をすることによって、人間はより高度な判断が求められる部分に集中できる。

 一方で静的解析は簡単ではなく、解析の複雑さ、処理の重さによる速度の遅さ、検出量の多さ、誤検出の存在、ツールのライセンス費用が高いなど、いくつかの課題がある。

 これらの課題に対する対策としては、継続的インテグレーションシステムでの継続的な実行、差分解析による効率的なエラー修正、ローカル実行や単一ファイル解析による部分的な解析が考えられる。誤検出に関しては、速度と精度のトレードオフが避けられないが、適切なバランスを見つけることが重要である。

 費用に関しては、導入コストと維持コストだけでなく、プロジェクトの全体コストを考慮することが重要である。インディ氏は、プロジェクトの初期開発コストは全体の開発コストの約20%を占めるとし、全体コストの約40%は既存ソフトウェアの理解に費やされているという統計を示した。そして、その4分の1は生産性の向上によって削減できるとした。

 インディ氏は「出荷後のエラー改修コストが一番高いです。なるべく早くアーキテクチャの解析の段階で、対策をした方が安く済みます。解析ツールの導入費用とうまくバランスをとることができます」と説明した。

継続的なリファクタリングによるアーキテクチャー検証が生産性向上につながる
継続的なリファクタリングによるアーキテクチャ検証が生産性向上につながる

 続いてインディ氏はAxivion Suiteの説明を行った。Axivion Suiteは、バージョン管理システムに格納されたソースコードに対し、継続的インテグレーションシステムと連携して動作する。開発者は統合開発環境(IDE)を利用しながら参照できる。WebインターフェースやレポーティングAPIも備えているので、アーキテクトを含むチームメンバーは全体の設計を見ながら開発者とコミュニケーションできる。

 アーキテクチャ検証、クローン検出・管理、コーディング規約遵守、メトリクス監視、循環依存性解析、デッドコード検出など、主なソフトウェア劣化の要因に対処可能だ。

 Axivion Suiteのダッシュボードでは、検証実行のたびに検出量の変化を追跡し、さまざまな種類の検出結果を可視化する。検出された問題の詳細や、ソースコード内での具体的な問題発生箇所、追加・削除された要素の情報も得られる。

 ソースコードの詳細は図を用いても確認可能であり、循環依存性のような問題を視覚的に捉えられるようになっている。複雑さの指標も示し、アーキテクチャのモデリングツールでは正しい構造と違反を示すことができる。

 インディ氏は最後に「皆様の製品開発に生じている複雑さや、問題点の解決を弊社が支援できると考えています」とコメントした。

Enterprise Architectなど、標準のアーキテクチャ設計・UMLツールからインポートもできる
Enterprise Architectなど、標準のアーキテクチャ設計・UMLツールからインポートもできる

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
Developers Summit 2024 セッションレポート連載記事一覧

もっと読む

この記事の著者

森 英信(モリ ヒデノブ)

就職情報誌やMac雑誌の編集業務、モバイルコンテンツ制作会社勤務を経て、2005年に編集プロダクション業務やWebシステム開発事業を展開する会社・アンジーを創業。編集プロダクション業務においては、IT・HR関連の事例取材に加え、英語での海外スタートアップ取材などを手がける。独自開発のAI文字起こし・...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

丸毛 透(マルモ トオル)

インタビュー(人物)、ポートレート、商品撮影、料理写真をWeb雑誌中心に活動。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

提供:The Qt Company Tokyo

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/19186 2024/05/08 20:16

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング