[製品紹介]
開発の全フェイズ支援を試みるTogetherの戦略製品
Together ControlCenter 6.0
佐藤敦司
TISインフォウエア株式会社
2002/6/26
Webベースのシステム開発においては、分析/設計はUML、実装はJ2EEを選択することが主流となりつつあります。また近年注目されているeXtreme Programming(XP)やRational Unified Process(RUP)といったオブジェクト指向開発プロセスにおいては「繰り返し」型の開発サイクルが推奨されています。さらに、企業のビジネス環境が加速度的に変化している状況において、システム開発を担う側にも「変化」に対応する能力が求められているといえるでしょう。
「Together Control Center」(以下TCC)は、現在のこのような環境をトータルにサポートするために、米TogetherSoft社が開発した開発プラットフォームです。本稿では、v6.0(Build:1762)を評価対象とします。現在日本において販売されているのはv5.5ですが、米国ではすでにv6.0がリリースされており、評価利用については可能です。なお日本語化が完了したv6.0の正式リリースは6月26日から開催の「SODEC 第11回 ソフトウエア開発環境展」で発表が予定されています。
画面1 Together ControlCenterのIDE画面 (画面をクリックすると拡大します) |
システム開発の全工程のサポートを狙いとした製品 |
従来から開発プロセスの各フェイズをサポートするUMLモデリングツール、統合開発環境、テストスイート、デプロイツールといった製品がありましたが、TCCの特長は、要求分析、システム設計、プログラミング、デバッグ/テスティング、デプロイ、保守、機能追加といった、システム開発の一連のライフサイクルを1つのプラットフォーム上に統合している点にあります。さらに、100%Javaで開発された製品であり、すべての機能がモジュール化されています。しかも、モジュール作成のためのAPIが公開されているので、ユーザーが必要な機能を自由に追加したり、拡張することが可能です。
図1 Together ControlCenterが目標とするサポート内容 |
一般的なUMLモデリングツールとはどこが違うのか? |
TCCは“LiveSource”と呼ばれる「ソースコード中心」のアーキテクチャを採用しています。これは、モデルの設計情報を独自のリポジトリファイルで管理するのではなく、ソースコードの情報を最大限に利用して、設計情報を表示します。この手法で、設計情報とソースコードの乖離を最小限にとどめようとしています。
■モデル、ソースコードのリアルタイム同期
一般的なUMLモデリングツールは、基本的にはUMLのダイアグラムによって設計を行い、バッチ的にコードテンプレートを生成するまでを守備範囲としており、実装以降については別のツールを用いることを前提としています。また、ソースコードからモデルへのリバースも可能ですが、リバースの操作においてモデル側への反映のために余分な作業が発生してしまいます。このようなUMLモデリングツールにおいて、「繰り返し」開発でよく起こる実装フェイズで行った変更を設計フェイズへフィードバックする場合を考えてみましょう。図2 実装で発生した変更を設計へフィードバックする一連の工程は、「コード生成」「コード編集」「リバース」の3つのステップを必要とする |
図2のような一連の操作を行った場合、Model(1)からModel(2)への移行に対して最低でも3つのステップを必要とするでしょう。一方TCCにおいては、図3のようにモデルとソースコードはオンデマンドでインタラクティブに変更を反映するので、原理的に常に一貫した状態を保つことが可能です。結果として、仕様変更が頻発するプロジェクトでは、開発スピードを上げることが可能になるわけです。
図3 Together ControlCenterでは設計から実装、実装フェイズでの変更から設計への反映がオンデマンドで行われる |
■デザインパターンのサポート
次に、デザインパターンのサポート状況を見てみましょう。古典的なデザインパターンであるGangofFour(GoF)をサポートするほか、SunのJava Center J2EE Patternsにいち早く対応したことが特筆される点です。これらのパターンにより、設計の標準化を図ることが可能となります。
画面2 サポートしているデザインパターンの一覧 |
■classファイルのリバース機能
TCCにおいては、ソースコードを基にダイアグラムを描画するようなアーキテクチャをとっています。よって、UMLモデリングによる「ビジュアルプログラミング」が可能です。既存のフレームワークについては、ソースコードのないclassファイルまたはjarファイルの形式で提供されていても、TCCのプロジェクトの中に取り込むと、classファイル内の情報をリバースしてUMLのダイアグラムを生成します。
画面3は、代表的なオープンソースのフレームワークStrutsのActionクラスを継承するクラスを作成した例です。プロジェクトの中にstruts.jarを取り込むことでorg.apache.struts以下のパッケージがダイアグラムに表示されます。Strutsのaction.Actionクラスのショートカットダイアグラムを作成し、これを継承するクラスのダイアグラムを作成することで、エディタ上には必要なソースコードが生成されています。
画面3 Strutsに対応したクラスの作成 (画面をクリックすると拡大します) |
■APIを利用し機能拡張できる
TCCはJavaの公開APIを用いて機能拡張をすることが可能です。このAPIによってTCCのプロジェクトに含まれるすべてのモデル要素およびソースコードにアクセスすることを可能としているので、定型的な設計要素の自動生成といった機能をアドオンすることができます。また、この方法を用いてユーザーがカスタムのデザインパターンを追加することもできます。
EJB開発における生産性を向上させる特徴的な機能 |
一般的な統合開発環境の場合、EJBの開発をサポートする手法としては、ウィザードによってソースコードのテンプレートを生成するものが多いようです。また、アプリケーションサーバ製品ごとに、デプロイメント・ディスクリプタ(DeploymentDescriptor:DD)を記述する必要があるものが少なくありません。
TCCは、EJB開発においても一貫したダイアグラムとプログラムコードの統合を行っているので、UMLベースでのビジュアルな開発が可能です。また煩雑なEJBのbuildとdeployのステップについては「J2EE Deployment Expert」によって一連の作業が自動化されます。
画面4 EJBをUMLベースでビジュアルに開発できる (画面をクリックすると拡大します) |
実際に、どのような手順になるのかを見てみましょう。典型的な例では以下のような手順を踏みます。
STEP1 | UMLクラス図上でのEJBダイアグラムの記述 |
STEP2 | EJBダイアグラム上でのビジネスロジックメソッドの設定 |
STEP3 | エディタでのビジネスロジック実装の記述 |
STEP4 | EJB Assembler上でのDDの設定 |
STEP5 | J2EE Deployment Expertによるdeploy |
基本的にはSTEP3のロジック実装の記述を除いて、ほぼすべての作業はUMLクラス図の上での作業となります。
TCCにおけるUMLクラス図中のEJBの表現は拡張されており、1つのEJBを表現するために必要なHOMEInterface、REMOTEInterface、BEANClassのワンセットを単一のダイアグラムで表現しています。つまりEJBダイアグラムをクラス図中に1つ作成することで必要な実装の枠組みがすべてオンデマンドで作成されます。この点に大きな特長があるといえるでしょう。
ビジネスロジックやデータアクセサについては、ダイアグラム上でメソッドを追加することで、TCCがREMOTEInterfaceとの同期を自動的に取ります。
DDの設定についてもグラフィカルな設定が可能です。「EJB Assembler」を用いてトランザクションなど各種の属性を設定でき、ダイアログのインスペクタ(inspector)のプロパティで設定の詳細を確認できます。そしてDDは、このプロパティを基に「J2EE Deployment Expert」によって自動生成されます。
画面5 DDの構造をビジュアルに作成できる「EJB Assembler」 (画面をクリックすると拡大します) |
またSTEP5のJ2EE Deployment Expertによって、ejbcの実行、コンパイル、DDの自動生成、アーカイブ、deployという一連の定型作業は自動的に実行されます。TCCのJ2EE Deployment ExpertはアプリケーションサーバによるDDの差異、deploy方法の違いを吸収しているので、対象となるアプリケーションサーバが異なっても、一貫した操作手順で扱うことが可能となっています。
画面6 EJBのアプリケーションサーバへの配布に必要な一連の作業を自動化する「J2EE Deployment Expert」 (画面をクリックすると拡大します) |
Page2 |
|
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
|
|