システムの多機能化により、プログラムの内容は複雑化している。既存コードの改修や多人数での開発における情報共有のためには、プログラム構造の理解が必須だが、ドキュメントと実装内容とが乖離している場合も多く、解析自体に工数がかかることもある。テクマトリックスの『Understand』は、プログラムの構造を可視化することで効率的なソフトウェア開発をサポートするソフトウェア開発環境。「組込みシステム開発技術展(ESEC)」にて、同社の福永一寛氏にその特徴を聞いた。
ソースコードの解析作業時間を大幅に削減する『Understand』
システムの機能向上やシステム間連携など、あらゆるニーズへの対応とともに、ソースコードは複雑化していく。複数のプログラマによる開発であれば、個々の担当箇所の把握が難しいなどの課題が発生する。ドキュメントが整理されていれば問題ないが、設計書と現在の実装状況をリアルタイムに残していくのはなかなか難しいもの。ドキュメントが不十分なため、本来の開発に着手する前に、解析に時間がとられてしまうといった状況を経験した開発者も多いのではないだろうか。こうした課題を解決するのが、ソースコードの構造を解析して可視化するツール『Understand』だ。開発元は米Scientific Toolworks Inc.で、日本語化と日本国内における販売/サポートをテクマトリックスが行っている。
福永氏は「Understandは、ソースコードのメンテナンスツールです。コメントが不十分であったり、ドキュメントも残っていなかったりする状態でメンテナンスをまかされたとしても、ある程度把握できるよう、分析結果を可視化してくれます」と語る。現在のユーザー層は、家電メーカーなど、組込み系の開発者が中心であるが、C/C++のほか、C#、Javaなどにも対応しているため、エンタープライズ系の技術者にも広まりつつあるという。
グラフィカルビュー機能でソースコードの詳細な情報も可視化
Understandのユーザーインターフェースは、ファイルツリーやソースコード表示など、プログラムエディタのような作りになっている。
プログラムソースを開いて解析すると、グラフィカルビュー機能により、呼び出しや参照、クラスの構成、制御フローチャートをボタン1つで作成できる。図示された解析結果の各要素をクリックすると、より詳細な情報や該当箇所のソースコードが参照可能だ。詳細情報では、ファイル単位ではなく、関数やクラス、変数なども確認できるほか、ある関数を基点として、その関数がどのように使われているかなども表示することができる。
「解析ツールによっては、コンパイル後でないとできないものもありますが、Understandではコンパイルの必要はなくソースコードをそのまま解析できますので、編集中のコードもすぐに確認できます」と福永氏。標準のコードエディタは、スナップショット機能で差分をチェックできる。使い慣れた外部のエディタも設定可能だ。
ソースコードの構造分析だけでなく、品質をレビューするためのメトリクス分析機能もある。分析項目は、プログラムの複雑度を測るための測定法である「Cyclomatic複雑度」や、結合性の欠如、最大継承ツリー、総行数、総空白行数、結合されたクラスの数などおよそ70種類をグラフ表示などで定量的に確認できる。プロジェクト管理者には嬉しい機能と言える。
分析結果を共有するためのレポーティングの機能も備えている。クロスリファレンス、構造、品質、メトリクスなど30種の分析結果をHTMLやTEXT形式で出力できるほか、エディションによっては、APIを経由してユーザ独自のデータチャート(Microsoft Office Excelなど)に出力できる。
なお、Understandはソースコードの可視化ツールのため、階層構造のルールに違反する依存関係の抽出や、ソフトウェアアーキテクチャの不具合などは抽出できないものの、テクマトリックス社の別製品であるアーキテクチャ分析ツール『LATTIX』へインポートができるようになっている。