Enterprise Architectを中心とした設計開発

Enterprise Architectは設計開発のプロセス(方法)によらず利用できるツールです。ここでは、一つの例として、Enterprise Architectを中心とした、スパークスシステムズ ジャパン製品全体を連携させた場合の設計開発の流れをご紹介します。
  • RaQuestを利用した要求管理
  • ARCSeekerから既存のコンポーネントの取り込み
  • UMLを利用した分析・設計
  • クラス図からソースコードの生成
  • VisualStudio/Eclipseとの連携
  • 最終成果物としてのドキュメントの生成
  • ARCSeekerへコンポーネントを登録
  •  

RaQuestを利用した要求管理

要求管理ツールRaQuestは、設計開発の前段階から利用します。抽出した要求項目のうち機能要求については、対象のシステムの機能として設計・実装されます。

なお、設計が始まった後も、要求項目と設計情報の関係を管理・把握することで、要求項目から設計への追跡や、要求変更時の影響範囲の把握が可能になります。

要求からユースケースへ

RaQuestで作成した要求項目からは、UMLのユースケース要素を自動的に作成して、ユースケース図の設計に役立てることができます。ユースケース要素のプロパティダイアログの「要求」タブには関連する要求が表示されますので、ユースケースの元になっている要求を確認することができます。

なお、要求とユースケースの依存関係は1対1とは限りません。図のようにマトリックスを利用して、要求とユースケースの間の関係を定義します。要求とユースケースの間に全く関係がない場合には、図のように赤で表示され、要求の実装漏れを防ぐことができます。

ARCSeekerから既存のコンポーネントの取り込み

新規に設計開発を始めるときに、既にARCSeekerに過去の部品(設計資産)が格納してあれば、格納してある部品から役に立ちそうなものを取り込みます。

これにより、初期段階の設計開発を効率的に行うことができます。実際には、新規にプロジェクトファイルを作成後、登録されている部品から希望するものを指定して取り込みます。図は部品の選択画面です。

既存のソースコードの解析

過去に参考にできる情報としてソースコードがある場合、ソースコードを読み込んでクラス図を生成することができます。現状の構造や関係の把握に効率的です。なお、Enterprise Architectが対応する10種類の言語(Java・C#・C++・C言語・VB.NET・ActionScript・Delphi・PHP・Python・VisualBasic)の他、データベーステーブル・WSDL・XSD(XMLスキーマ)なども読み込んでクラス図として解析することができます。(システムエンジニアリング版の場合にはAda2005・Verilog・VHDL・SystemCも解析可能。)

また、Java/.NET/VisualStudioのC++の場合には、デバッグ版のプログラムをEnterprise Architect内部で実行し、その動作結果からシーケンス図を自動生成することもできます。振る舞いの把握に便利です。

システムの分析

ここからが、システム設計開発の中心です。まず、対象のシステムの構造と振る舞いを分析し、定義します。ユースケースを利用する場合には、それぞれのユースケースが示す機能について、その内容や振る舞いを定義します。アクティビティ図やシーケンス図が役に立ちます。対象のシステムによっては、BPMNも役に立ちます。あわせて、オブジェクト図・クラス図を利用して、システム内部の構造を定義します。

これらのモデリングでは、「クイックリンク」などのさまざまな機能を利用することで、効率的にモデルの作成ができます。

ICONIXプロセスで分析を行う場合には、左図のような「ロバストネス図」を利用してユースケースの詳細を定義します。Enterprise Architectには、ICONIXプロセスでの設計を支援するアドインがあります。

この段階で役に立つアドイン製品として、SysMLZachman FrameworkDoDAF・MODAFTOGAF8/9もあります。

要求・構造・振る舞い間の整合性の管理と追跡

分析の段階で重要なことは、要求・構造・振る舞い間で整合性を保つことです。また、こうした整合性を保つための情報は、「ある要求に変更がある場合、影響する範囲はどこか」を知るための「追跡」にも役立ちます。

RaQuestからは、個々の要求に対して、UMLの要素や図などとの関係を定義することができます。これにより、要求の対応漏れを防ぐと同時に、要求変更の際には設計への影響範囲を把握することができます。

Enterprise Architectでの例として、クラスの操作(メソッド)をシーケンス図で利用することができ、変更した場合には両方の図に反映されます。また、シーケンス図とクラス図の整合性を確認するためのアドインもあります。

詳細な設計

システムの分析が完了したら、ソースコードに結びつくクラスを作成する詳細な設計に移ります。クラスが状態を持つ場合には、ステートマシン図や状態遷移表を利用して、その内部の動きの詳細を定義します。また、コンポーネント図で、システム全体のコンポーネント構成を定義します。(名前空間のあるプログラム言語では、Enterprise Architect独自の「パッケージコンポーネント要素」が便利です。)

振る舞い図からソースコードを生成しない場合には、この段階で振る舞いのすべてをUMLで表現することには意味がないかもしれません。複雑な処理や例外的な処理を中心に、モデルにすることで過不足を確認します。

なお、分析段階のクラスを設計クラスに変換する場合、MDA変換機能を利用することもできます。この機能を利用すると、定義したルールに沿って分析クラスを設計クラスに変換し、さらに2つのクラス間に追跡のための関係が自動的に追加されます。これにより、影響範囲の追跡が可能になるほか、分析クラスを変更後、「再変換」で差分を設計クラスに対して更新することができます。

クラス図からソースコードの生成

Enterprise Architectで作成したクラス図からは、ソースコードを生成することができます。クラス図から生成したソースコードは、基本的には「スケルトン」(定義のみ)の状態です。その後、VisualStudioやEclipseなどのエディタを利用して、ソースコードの内容を記述します。

クラス図からソースコードを生成する形式は、「コード生成テンプレート」と呼ばれるテンプレート形式になっています。右図のようなエディタでこのテンプレートをカスタマイズすることで、希望する形式のソースコードを得ることができます。例えば、{のカッコの位置をどうするか、などのカスタマイズがよく行われます。

VisualStudio/Eclipseとの連携

VisualStudioやEclipseでの開発の場合には、アドイン製品「MDG Integration for VisualStudio」「MDG Integration for Eclipse」を利用すると便利です。VisualStudioやEclipseでソースコードの内容を編集すると、クラス図に即時に反映されます。また、クラス図の内容を編集すると、ソースコードに即時に反映されます。これにより、モデルとソースコードの一貫性を保持できます。

図のように、アクティビティ図やシーケンス図のような設計の振る舞い図を、ソースコードと同時に表示して実装を行うことで、設計の内容を確認しながら実装作業を行うことができます。設計内容を変更する必要のある場合には、VisualStudioやEclipse内から変更することができますので、作業の効率を落とさずに図とソースコードの編集が可能です。これは、設計情報と実装の乖離を防ぐ一つの手段となります。

最終成果物としてのドキュメントの生成

従来の設計開発の問題として、設計情報と、成果物としてのドキュメントを二重に管理しなければならないという問題があります。この管理・更新の作業は面倒です。

Enterprise Architectで作成したモデルは、RTF(Word互換)やHTMLの形式でドキュメントにすることができます。RTF形式のドキュメントは、いわゆる成果物としてのドキュメントへの利用を想定しています。このドキュメントの生成も「テンプレート」で結果をカスタマイズできます。

Enterprise Architectでは、「ドキュメントは自動生成される成果物」にすることができます。例えば、「社内設計者用」「海外発注用」「お客様提出用」などのテンプレートを定義し、それぞれのドキュメントを1つのUMLモデルから自動生成します。もし、ドキュメントの内容を変更する必要がある場合には、UMLモデルかテンプレートを変更し、再度ドキュメントを自動生成します。この方法により、二重管理の必要がなくなります。

ドキュメントの生成は、APIを利用して定期的に自動実行するようにしておくと、さらに便利です。

ARCSeekerへコンポーネントを登録

完成したUMLモデルをそのまま放置してしまっては、その価値の多くを捨ててしまっていると言っても過言ではありません。しかし、プロジェクトファイルのままであれば、将来必要な情報を検索・活用することは容易ではありません。

ARCSeekerを利用することで、Enterprise Architectで作成したUMLモデルをパッケージの単位で「部品」として管理することができます。その際に、クラスに関連するソースコードなどの情報も自動的に取り込みます。作成方法は簡単です。一覧から、部品にしたいパッケージを選択するだけです。

既にARCSeekerに存在する部品を再利用していた場合には、「上書き」としてARCSeekerに格納してある内容を更新することもできますし、異なるバージョンの派生部品として登録することもできます。図では、ある製品で利用していた部品を利用して別の製品で利用し、「派生」部品として登録した際の関係図です。ARCSeekerを利用することで、このような関係を自動で追加誌、図として表示できます。