BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース MaintainJ 3.2リリース

MaintainJ 3.2リリース

ブックマーク

原文(投稿日:2011/09/20)へのリンク

Javaコードのランタイムシーケンスダイアグラムやクラスダイアグラムを提供するリバースエンジニアリングツール、MaintainJのバージョン3.2がいくつかの機能強化とともにリリースされた。MaintainJはEclipseベースであり、Eclipseプラットフォーム上に構築された任意のIDEで動作する。

InfoQでは、MaintainJのChoudary Kothapalli氏にその新機能について質問した。

InfoQ: v3.2に追加されたメインとなる新機能は何でしょう?

    • 呼び出しコンテキストの表示: シーケンスダイアグラムにおいてマウスを関数呼び出しの上にのせると、呼び出しコンテキスト(引数、戻り値)がツールチップスで表示されます。呼び出されたオブジェクトの状態まで含んだ詳細なビューは「プロパティビュー」で表示されます。
    • ランタイムSQLの表示 - MaintainJは、使われているJDBCフレームワークによらず、データベースに対して発行される実際のランタイムSQL文を、投入されたパラメータ付きでキャプチャします。データベース呼び出しは、データベースヒット毎にレスポンス時間とともに、シーケンスダイアグラム上に表示されます。/li>
    • マルチJVMアプリケーションのサポート - 複数のJVMで動くアプリケーションをトレースして、エンドツーエンドの呼び出しフローを単一のシーケンスダイアグラムで見ることができます。例えば、アプリケーションが別のJVMで動いているWebサービスを呼び出すときも、単一のシーケンスダイアグラムでJVMを横断した呼び出しフローを表示できます。各JVMの呼び出しは別の色を使って表示できます。
    • アウトラインビューの強化 - シーケンスダイアグラムの「アウトラインビュー」は、ユースケースにあるすべてのクラスおよび呼び出しを表示します。複数のパッケージ、クラス、関数呼び出しを選択して、一度で削除できるようになりました。シーケンスダイアグラムには、ゲッターおよびセッターメソッドをすべて取り除くオプションが追加されました。
    • JSP呼び出し - ユースケースにおけるJSP呼び出しがシーケンスダイアグラムに表示されるようになりました。ひとつのJSPに複数のJSPが含まれている場合には、内部のJSPランタイム呼び出しも表示されます。

こうした機能を8000のJavaクラスと600のXMLコンフィグレーションファイルのあるコンテンツマネジメントシステム、Alfrescoを使って実演しています。AlfrescoはTomcatとMySQLで動き、その他多くのJavaフレームワークに加えて、SpringとHibernateを使っています。詳しくはデモビデオ (3.5分)をチェックしてください。

InfoQ: MaintainJを使ってやる典型的なワークフローはどんなものだと考えていますか?

MaintainJが使われるシナリオには大きく2つあります。

1. アプリケーションを理解してデバッグするため

MaintainJはユースケース毎にシーケンスダイアグラムとクラスダイアグラムを生成します。シーケンスダイアグラムはそのユースケースの具体的なランタイムクラスを、SQLを含む呼び出しとともに表示します。生成されたダイアグラムを使って、開発者はすばやくユースケースを理解して、欠陥の原因を見つけることができます。

例を2つあげましょう。

あるクライアントは、イベントドリブンなロジックが多数あり、コードを読んだだけでは理解するのが非常に困難なSwingアプリケーションでMaintainJを使っています。

クライアントの多くは、J2EEアプリケーションでMaintainJを使っています。J2EEアプリケーションのビジネスロジックはほとんどの場合、Javaクラス、XMLファイル、ポータル、ルールエンジンコンフィグレーションなどに分散しています。このようなアプリケーションで特定のユースケースのランタイムインタラクションを理解するには、何日もかかります。MaintainJを使うと、アプリケーションの分析時間を劇的に削減して、こうした複雑なアプリケーションのデバッグや機能強化に費やす労力を削減することができます。

2. Javaアプリケーションをドキュメント化するため

例を2つあげましょう。

米国の大手銀行で、Javaチームはドキュメント不足のレガシーなアプリケーションの機能強化を依頼されました。そのチームはMaintainJを使って、すべてのユースケースのシーケンスダイアグラムとクラスダイアグラムを生成し、それからそのダイアグラムを使ってアプリケーションの機能強化をしました。

あるITサービス企業は米国政府機関向けのJavaアプリケーションをメンテナンスするよう依頼されました。その会社にはリリースのたびにUMLドキュメントを提出する責任がありました。彼らは手作業でシーケンスダイアグラムとクラスダイアグラムを書く代わりに、MaintainJをうまく利用してダイアグラムを生成しています。

InfoQ: MaintainJの今後のロードマップは? どう進化させたいと思っていますか?

この質問に答える前に、MaintainJの背景にある哲学について話させてください。ソフトウェアのコストの90%はメンテナンスに費やされ、メンテナンスコストの約50%がコードの理解に費やされます。ソフトウェアのメンテナンスには通常、バグ修正やアプリケーションの機能強化も含まれます。

バグ修正には通常、3つのステップがあります。

1) バグの原因を見つけること
2) バグを修正すること
3) その修正を安全に製品へと戻すこと。このステップには、その変更がアプリケーションの他の部分にどんな影響を及ぼすかを分析し、適切なレグレッションテストを実施することも含まれます。

アプリケーションに新機能を追加して強化する場合も、非常によく似たステップになります。

欠陥を修正する2番目のステップはたいていの場合、バグの原因を見つけること、そして、その修正を安全に製品へと戻すことと比べて、ほとんど労力がかかりません。

MaintainJはステップ1とステップ3において、バグの原因を見つけ、適切な影響分析を実施することで開発者を支援することを目指しています。現在のバージョンはステップ1、バグの原因を見つけることに対処します。

今後

10月の次期リリースはステップ3の影響分析に対処します。MaintainJは現在のところ、ユースケースに関するランタイムコールトレース情報をファイルシステムベースのデータベースに格納しています。この情報は影響分析とレグレッションテストケースの特定に使われます。

2012年3月に予定されているリリースでは、ブラウザでシーケンスダイアグラムを表示します。ユースケースに関するコールトレースファイルは、セントラルデータベースに格納されます。開発者、テスター、マネジャーはこのデータベースをユースケース名で検索することによって、関連するシーケンスダイアグラムをブラウザで閲覧できるようになります。また、影響分析を実施して、クラスやデータベーステーブルへの変更によって影響を受けるすべてのユースケースを調べることもできます。

InfoQ: MaintainJのライセンスにはどんなオプションがありますか?

1. フリーの評価ライセンスおよびサポート

- 私たちは21日間の評価ライセンスを提供し、その間、フリーのサポートを提供します。ユーザに直接MaintainJを評価してもらい、どうやってデバッグやドキュメント化の労力を数日から数分へと削減するのか、実感してほしいのです。

そして、2種類の商用ライセンスを提供しています。このライセンスには期限がなく、将来のリリースにおいても使えます。

2. ノードロックライセンス

– このライセンスは$100で、1台のコンピュータにロックされます。

3. フローティングライセンス

– このライセンスは企業レベルのJavaチームに適しています。5つのフローティングライセンスで$1000になります。

Dionysios G. Synodinos Webエンジニアで、フリーランスのコンサルタント。Webテクノロジーに精通している。

この記事に星をつける

おすすめ度
スタイル

BT