システムの多機能化により、プログラムの内容は複雑化している。既存コードの改修や多人数での開発における情報共有のためには、プログラム構造の理解が必須だが、ドキュメントと実装内容とが乖離している場合も多く、解析自体に工数がかかることもある。テクマトリックスの『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』へインポートができるようになっている。
400万行のコードをわずか15分で解析
競合製品と比較した場合のUnderstandの優位性について福永氏に聞くと「解析スピードが速いことです。『Doxygen』との比較検証で、およそ400万行あるFirefoxのコードを解析した場合、Doxygenが2時間かかったのに対して、Understandはわずか15分でした。それから、日本語化と弊社のヘルプデスクによるサポートも優位性の1つです」と話した。
Understandのエディションは3種類あり、ライセンス形態はノードロックライセンスとフローティングライセンスがある。フローティングライセンスであれば、ライセンス数に応じたチームでの利用も可能だ。「Engineer Edition」は、グラフィカルビュー表示・基本メトリクスなどの基本的な解析に対応し(ノードロックライセンスのみ)、「Pro Edition」は、より高度な解析が可能となっている。最上位の「Analyst Edition」は、Understandが提供するPerl APIを使ったスクリプト作成機能に対応しており、バッチ処理による解析に最適なエディションとなっている。
最後に福永氏は「いちばん利用者が多いのがPro Editionです。担当者様の決裁範囲で買える価格ですし、一度使っていただければ病み付きになると評価をいただいていまして、グループの方が1人導入すると、同じグループのほかの方も導入されるといったリピートオーダーが非常に多いです。現在は組込み系のお客様が中心ですが、オフショア開発などでの外注管理や社内のコラボレーションが必要とされるエンタープライズ系のお客様にも、ぜひ使っていただきたいです」とアピールした。
テクマトリックスのサイトでは現在、機能制限なしの全エディションを15日間無料で試せる体験版をダウンロードできるので、これらの機能をぜひ試してみて欲しい(なお、ダウンロード画面では、氏名・会社名・メールアドレスなどの簡単な情報入力が必要)。