派生開発・流用開発の効率化を実現
かんたん導入ですぐに使える
設定手順はこちら
このツールでできることを3分でご紹介
派生開発の課題はこのツールで解決!

機能詳細
Re:Zolverは、派生開発を支援する「ソフトウェア構造分析ツール」です。既存のソフトウェア資産の内部構造を可視化したり、プログラムの追加・変更を行ったとき、その影響がどこまで及ぶのかを調査・解析することが可能です。派生開発の期間短縮や検証もれの解消、ソフトウェア資産の管理などに有効です。Re:Zolverは、オブジェクトコードを直接解析するので、システム内部の細かい情報をユーザ自身が設定する必要はありません。
機能1:影響分析
関数や変数の依存関係をグラフ表示します。関数や変数に変更を加えた場合の影響範囲を確認できます。 分析の対象となるのは、関数とグローバル変数です。オブジェクトコードの内部構造を分析し、関数や変数の呼び出し関係を有向グラフで示す関数/変数 影響グラフを出力します。
グラフの中の特定のノード(関数、変数)を選択すると、そのノードと呼び出し関係のあるノード群だけを抽出して表示します。これにより、特定の関数や変数に変更を加えた場合の影響箇所を把握できます。ノードは、複数同時に選択することも可能です。併せて、影響を受ける関数や変数の一覧を関数/変数 影響リストとして表示します。

機能2:クラス分析
C++クラスの継承関係をグラフ表示します。クラスに変更を加えた場合、継承による影響範囲を確認できます。
オブジェクトコードの内部構造を分析し、C++クラスの継承関係を有向グラフで示すクラス関連グラフを出力します。継承関係は、単一継承と多重継承の両方に対応します。グラフの特定のノード(クラス)を選択すると、そのノードと継承関係のあるノードを含むUMLクラス図を表示します。この図では、各クラスのメンバ変数やメンバ関数などを確認できます。

機能3:リスト表示
オブジェクトファイルを分析し、内部で使用している関数、変数、ソース、ラベルなどの情報を一覧表示します。
表示できるリストは、関数リスト、変数リスト、ソースリスト、ラベルリスト、インクルードリスト、クラスリストの6種類です。例えば関数リストでは、関数のアドレスやサイズ、引数、属性、戻り値などの情報を確認できます。ソースリストでは、ソースで使用している関数や変数を確認できます。
また、表示したリストの項目から、さまざまな分析画面を表示できます。例えば関数リストや変数リストの項目を選択して関数/変数 影響グラフを表示したり、クラスリストの項目を選択してクラス関連グラフを表示したりできます。

機能4:プログラム表示
C/C++のソースリストの中に、ソースの各行に対応するアセンブリコードを混在表示させることが可能です。
オブジェクトコードとソースコードを分析して、混在表示(MIX表示モード)を実現しています。アセンブリコードは、オブジェクトコードを逆アセンブルして生成します。さらに、特定のアドレスに対応するアセンブリコードだけを表示することも可能です(ASM表示モード)。

機能5:検索、絞込み
文字列検索機能と表示項目の絞込み機能により、着目したい情報に素早くたどり着くことができます。
検索では、大文字/小文字を区別したり、ワイルドカードを利用したりできます。

絞込みは、コンパイル時に使用したソースファイルを選択して、表示する項目やグラフを絞り込む機能です。例えば、最終オブジェクトを生成するために使用した多くのソースファイルの中から、一つまたは複数のソースファイルを選択し、そのソースの中に含まれる変数や関数、クラスなどの一覧を表示できます。この一覧から、各項目に対応する変数/関数影響グラフやクラス関連グラフを開くことも可能です。

機能6:差分分析
二つのオブジェクトコードを比較して、関数や変数、クラスなどがどう変わったかを可視化できます。
プロジェクトの新規作成時にオブジェクトファイルを二つ指定して、その差分を分析します(差分モード)。例えば、関数や変数、クラスなどの追加・変更・削除が行われた箇所を、グラフまたはリスト上で色分けして示します。

関数や変数、クラスのほか、ソースコードやラベル変数、インクルードファイルなどの差分も分析できます。

機能7:帳票出力
分析結果をHTMLフォーマットで出力します。分析した内容をエビデンスとして残したいときに有効です。
帳票出力できるのは、関数/変数 影響グラフと関数/変数 影響リストです。グラフは画像ファイル(png)に、リストはテキストに変換されます。

対応環境
コントローラ | コンパイラ バージョン |
---|---|
Arm®コア |
|
|
|
|
|
SuperH ファミリ 対応コア:SH4,SH4A,SH3,SH2,SH1 (ルネサス エレクトロニクス) |
|
RH850ファミリ (ルネサス エレクトロニクス) |
※CC-RHマニュアルに記載されているロード・モジュール・ファイルに相当します。 |
※C++11はサポートしていません。 |
|
RL78ファミリ 対応コア:RL78-S1,RL78-S2,RL78-S3 (ルネサス エレクトロニクス) |
※CC-RLマニュアルに記載されているロード・モジュール・ファイルに相当します。 |
|
|
RXファミリ 対応コア:RXv1,RXv2 (ルネサス エレクトロニクス) |
※CC-RXマニュアルに記載されているアブソリュートロードモジュールファイルに相当します。 |
|
|
x86-x64 |
|
TriCore™ AURIX™ (インフィニオン) |
|
|
|
|
Re:Zolverの利用シーン
実行しない記述は見たくない!
Linuxの魅力の一つは、さまざまな命令セットアーキテクチャをサポートしていることです。Linuxカーネルのソースコードの中にはx86向けやARM向け、その他のプロセッサ向けのコードが混在しています。コンパイラは、開発者が指定したコンフィグレーション設定に従い、ターゲットに最適なソースを選んでビルドを行います。
つまり、Linuxカーネルのソースコードの中には、ビルド有効ソースとビルド無効ソース(ダミーソース)が混在しているわけです。そのため、開発者がソースコードを検索すると、多くのダミーソースが引っかかります。

ビルド有効ソースとビルド無効ソース
Re:Zolverのリスト表示の機能を利用すると、オブジェクトに含まれるビルド有効ソースのみを画面に表示できます。わずらわしいダミーソースに悩まされることなく、所望の記述にすみやかにたどり着くことができます。

ビルド有効ソースだけを画面に表示
新旧のソースを区別できない!
派生開発では、#ifdef文などのコンパイルスイッチを利用して、既存のソースコードの上に新しいコードを書き足していくことがよくあります。こうしておくと、ソースリスト上で新旧のソースを見比べることができ、開発者が保守しやすいという利点があります。
ただし、派生開発を繰り返していると、新旧のソースが入り混じり、コードの可読性が低下します。コードのどの部分が有効になっているのかを見極めることが難しくなります。

#ifdef文を利用した派生開発の記述例
Re:Zolverのプログラム表示の機能を利用すると、ソースリストの中の有効行を簡単に識別できます。ビルドオブジェクトに含まれるソースの行番号を色分けして示します。

プログラム表示(ソースリスト)
性能・メモリ不足を解消したい!
組み込みシステムの開発では、使用できるハードウェアリソースに制約があります。そのため、既存のシステムに新たな機能を追加する場合、処理性能やメモリ容量の不足に悩まされることがよくあります。コンパイルオプションの変更によってこれらの問題を解決できればよいのですが、解決できない場合は開発者自身がコードをチェックし、性能不足やメモリ不足の原因となっている箇所を洗い出す必要があります。このとき、場合によってはアセンブリ言語の命令列を確認しなければならないことがあります。
また、まれにコンパイラが開発者の意図と異なるコードを生成しているケースもあります。この場合も、アセンブリコードの確認が必要になります。
ただし、慣れていないと、こうした作業は大変です。ソースコードとの対応が分かりにくく、目を通すリストの量も多くなりがちです。
Re:Zolverのプログラム表示(MIX表示モード)の機能を利用すると、C/C++ソースリストの中に、ソースの各行に対応するアセンブリコードを混在表示させることが可能です。開発者は、一つのウィンドウの中で、着目するソースとアセンブリコードをつき合わせながらチェックできます。

プログラム表示(MIX表示モード)
最適化の改善効果を知りたい!
組み込みシステム開発では、性能不足やメモリ不足などの問題を解消するために、さまざまな最適化を行います。例えば、コンパイルオプションを変更したり、ソースコードのレベルで関数のインライン展開を行ったり、マイコンが備える特殊な複合命令を活用したりします。また最後の手段として、アセンブリコードに手を入れることもあります。
しかし、最適化によってどのくらいの改善効果が見込めるかを、事前に予測することは容易ではありません。最適化のたびに実機による実行・検証を繰り返すと、それなりの時間がかかります。
Re:Zolverには、差分分析の機能があり、最適化前のオブジェクトコードと最適化後のオブジェクトコードを比較できます。例えば関数リストを表示すると、関数のコードサイズが、最適化の前後でどの程度変化したかを確認できます。

関数リスト
ASM表示モードを利用すれば、アセンブリ言語のレベルで最適化前後の差分を確認できます。

ASM表示モードによる差分分析
バッファ変更の影響が予測不能!
TCP/IPなどのソケット通信では、受信データをバッファメモリに一時保存します。バッファサイズはグローバル変数で指定しますが、これをマクロで記述していると、バッファサイズを変更したときの影響を直感的にイメージすることが難しくなります。また、このマクロを多くのソースファイルで使用していると、サイズ変更の影響を予測することはますます困難になります。
Re:Zolverの変数リストを確認すると、マクロ展開後の変数の実サイズが分かります。バッファサイズ変更時の見通しがよくなります。

変数リスト
工数見積もりで失敗したくない!
開発マネージャの悩みの一つが、派生開発の工数見積もりです。派生開発では、記述のわずかな変更がプログラム全体に影響を与えたり、予期せぬ箇所で副作用が生じたりすることがあります。さらに、作業依頼者が必ずしも開発担当者と同じレベルで派生開発の工数や難易度を理解しているとは限りません。
Re:Zolverの関数/変数 影響グラフを利用すると、関数/変数を変更したときの影響範囲を視覚的に確認できます。派生開発の見えにくい部分が明示されるので、工数見積もりの精度が上がると期待できます。

関数/変数 影響グラフ
設計書を効率よく作成したい!
チームで取り組む派生開発では、設計書などのドキュメントの整備が欠かせません。ドキュメントを作成するにあたっては、事前に開発対象の全体像を把握しておくことが肝要です。
C++言語限定の話になりますが、Re:Zolverはクラス分析の機能を備えています。オブジェクトコードの内部構造を分析して、クラス関連グラフやUMLクラス図を表示します。この機能を利用すれば、既存システムの全体像の概要を把握できます。
これらの画面をカットアンドペーストして得られる画像データは、派生開発の設計書を作成する際の参考図面としても活用できます。

クラス関連グラフ

UMLクラス図
変更箇所をすべて洗い出したい!
派生開発において、既存のソースコードに手を加える場合、事前にすべての変更箇所(変更点)を洗い出しておく必要があります。開発者は、ソースコードの文字列検索を繰り返しながら、ある箇所の記述の変更が別のどの箇所に影響を与えるかを、網羅的に調べます。
この作業は意外と煩雑です。例えば、影響する箇所の数が非常に多かったり、多数のソースファイルにまたがっていたりすることがあります。検索を繰り返す過程で、見落としや勘違いなどのミスが生じることもあります。
Re:Zolverの関数/変数 影響グラフや関数/変数 影響リストを利用すれば、このような非効率な検索作業から解放されます。着目する箇所のノード(関数や変数)をクリックまたは検索すれば、変更の影響箇所をグラフやリストの形で確認できます。

関数/変数 影響グラフ、関数/変数 影響リスト
担当者が退職、設計資料もない!
派生開発の案件の中には、必要十分な設計資料が残されておらず、さらに元の設計を担当した技術者が異動・退職などにより連絡をとれない、というケースがあります。設計資料が残っていても、プログラムの追加・修正・削除やハードウェアの変更に伴う移植を繰り返した結果、システムの内部構造や記述が複雑になりすぎて、派生開発の担当者がコードを精査しきれない、というケースもあります。
Re:Zolverを利用すると、派生開発の担当者が既存のソフトウェア資産を分析する際の作業負担を軽減できます。システムの内部構造の概要は、関数/変数 影響グラフやクラス関連グラフから把握できます。

関数/変数 影響グラフ

クラス関連グラフ
これらのグラフは、関数リストや変数リスト、ソースリストなど、さまざまなリスト表示の機能と連携動作するので、派生開発の担当者は、効率よく既存のコードの精査を進めることができます。

関数リスト

変数リスト
【NEW】Windowsアプリケーション(C#)対応版
Windowsアプリケーション開発を強力にサポート
- ・Windowsアプリケーション(C#)ファイル(exe/DLL)で分析が可能
- ・Windowsアプリケーションに特化した分析情報として、クラス(ソース)リスト、メソッドリスト、フィールドリスト、 イベントハンドラリスト、メトリクスリスト、再帰メソッドリスト、2クラス間関連リストを出力 また、クラス継承図、クラスUML図、プログラム表示、差分プログラム表示、差分ASM表示に対応 プログラム設計/構造を把握することが可能
- ・グラフ関連情報としては、全体コールグラフ、影響グラフ、クラス関連グラフ、2クラス間関連グラフに対応
- ・それぞれ、単一分析/差分分析に対応
- ・クラスから必要な情報を絞り込んで分析が可能
かんたん導入ですぐに使える
基本機能のご紹介
派生元と派生開発後の差分を分析
プログラムの変更/新規との差分の実体を把握
対応環境(Windowsアプリケーション対応版)
対応アプリ | 対応環境 バージョン |
---|---|
Windows exe/DLL(C#) |
|
イベント情報
開催日 | 開催場所 | イベント名 |
---|