astah* チュートリアル [最も⾝近なソフトウェア開発設計⽀援ツール] 使用バージョン:astah* 6.0, 6.1 2010/03/05 株式会社チェンジビジョン 1 / 153 astah* チュートリアル 目次 このチュートリアルの概要 5 関連ドキュメント 5 基本操作ガイド 5 Tips(便利な使い方) 5 フィードバックについて 5 マインドマップを活用してみよう 6 マインドマップの紹介 6 マインドマップで要求分析してみよう 6 マインドマップと設計図がオールインワンでスムーズに連携できる 7 マインドマップで要求ヒアリングしよう 8 マインドマップ関連参考書籍 データモデリングしよう 12 13 ER 図を使ってみよう 14 IDEF1X、IE による ER 図を作成しよう 15 エンティティの種類について考えてみよう 16 マインドマップからエンティティへの変換をしてみよう 17 データモデリングのプロセスを使用してみよう 20 エンティティの表示レベルの設定をしてみよう 20 論理名と物理名を使ってみよう 22 ドメインを活用しよう 23 リレーションを張ってみよう 25 データ型を追加してみよう 30 エンティティ定義書を出力してみよう 31 SQL 出力(SQL-92 準拠)してみよう 34 DB リバースを使ってみよう(サンプル、サポート対象外) 38 ご利用の前に 38 予備知識 38 データベースの環境設定をしてみよう 38 astah* データベースリバースコンポーネントを使用してみよう 42 作成した asta ファイルを astah* professional で開いてみよう 45 astah* データベースリバースコンポーネントの改良について 48 CRUD を使ってみよう 49 CRUD の概要 49 CRUD 分析の利点を考えよう 49 CRUD 分析してみよう 50 2 / 153 astah* チュートリアル CRUD をドキュメント出力してみよう チーム開発してみよう マージ機能ってどんな機能? まず簡単マージを使ってみよう 57 60 60 60 参照プロジェクト管理ってどんな機能? 71 参照プロジェクト管理を使ってみよう 71 要求の機能を使ってみよう 78 SysML の概要を知ろう 78 SysML とは 78 誕生の背景 78 SysML の概要 78 SysML での各図 78 astah*での要求周りの機能の利用 80 要求 80 テストケース 80 要求テーブル 80 導出、コピー、満足、検証、洗練、トレース 81 導出<<deriveReqt>> 81 コピー<<copy>> 82 満足<<satisfy>> 82 検証<<verify>> 83 洗練<<refine>> 83 トレース<<trace>> 84 要求テーブルを使用しての要求モデリング[組み込み系サンプル]しよう 84 要求テーブルを使用しての要求モデリング[WEB 系サンプル]しよう 90 言語サポート機能を使ってみよう Java Java 基本機能 98 98 98 Java スケルトンコードを作成してみよう 101 Java ソースコードの読み込みをしてみよう 103 C++ 106 C++基本機能 106 C++スケルトンコードを作成をしてみよう 109 C++リバースをしてみよう(サンプル、サポート対象外) 113 C# 119 C#基本機能 119 C#スケルトンコードを作成してみよう 122 3 / 153 astah* チュートリアル C#リバースをしてみよう(サンプル、サポート対象外) 125 構造化分析しよう 131 構造化分析とは 131 DFD(データフロー図) 132 DFD(データフロー図)を使ってみよう 133 フローチャートを使ってみよう 138 トレーサビリティマップを使ってみよう 142 納品資料としてのドキュメントを作成してみよう 144 RTF 出力してみよう 144 HTML 出力してみよう 146 便利な機能を使ってみよう 150 図上でマウスを使ってスクロール 150 編集を取り消す(UNDO) 150 モデルから図へのジャンプ 150 図からツリーへのジャンプ 151 API を使ってみよう 153 モデル参照 API 153 モデル編集 API 153 図要素参照 API 153 図要素編集 API 153 API のサンプル 153 4 / 153 astah* チュートリアル このチュートリアルの概要 この資料は、astah*のいくつかの機能とその活用方法を理解してもらうことを目的として、astah*の使用方法や活 用例を紹介します。特に UML 版や professional 版に含まれる主な機能に関連した astah*の利用例です。 次の方々を対象としています。 y astah*をこれから評価される方 y 今まで astah*を使ったことがない方 y すでに astah*のユーザーの方 各章は次の通りです。 y マインドマップを活用してみよう y データモデリングしよう y CRUD を使ってみよう y チーム開発してみよう y 要求を整理してみよう y 言語サポート機能を使ってみよう y 構造化分析しよう y フローチャートを使ってみよう y トレーサビリティマップを使ってみよう y 納品資料としてのドキュメントを作成してみよう y 便利な機能を使ってみよう y API を使ってみよう 関連ドキュメント 基本操作ガイド このチュートリアルと別に基本操作ガイドを用意してあります。astah*の画面構成、図やモデルの作成、図要素の 整列や色の設定など、astah*の基本的な操作を知りたい場合はそちらをご覧ください。 使用できるエディション: astah* professional、astah* UML、astah* community 日本語版:http://astah.change-vision.com/ja/tutorial/operation-guide.html 英語版: http://astah.change-vision.com/en/tutorial/operation-guide.html TIPS このチュートリアルと別に TIPS を用意しています。便利な使い方については、そちらを参考にしてください。 (旧 JUDE5.5 時点の Tips のため、最新の astah*とは異なる場合があります。) 使用できるエディション: astah* professional、astah* UML、astah* community http://astah.change-vision.com/ja/tutorial/tips.html フィードバックについて このドキュメントに関するフィードバックについては、下記 URL 記載のお問い合わせ先までお送りください。 http://astah.change-vision.com/ja/contact-support/contact-us.html 5 / 153 astah* チュートリアル マインドマップを活用してみよう 使用できるエディション: astah* professional、astah* UML、astah* think! astah*上でのマインドマップの活用方法、シーン、ユーザーは様々です。 ここでは、マインドマップを開発で活用する例をいくつか挙げていきます。 マインドマップの紹介 使用できるエディション: astah* professional、astah* UML、astah* think! デモ動画:http://astah.change-vision.com/ja/movie.html#mindmap キーワードを自由に入力し、枝を放射状に広げて作成するマインドマップは、アイディアを発散させ、思考を見え る化します。 会議の議事録作成やブレイン・ストーミング、プロジェクトのふりかえりなどは 職種に関わらず利 用することができ、ソフトウェア開発においては顧客要求の聞き取りやテストケースの洗い出しといった工程に合 わせた活用が可能です。 考えを整理する時、発想を生み出す時、思考を妨げることなくスムーズにグラフィカルな ノートを作成できます。 (*マインドマップは、英国 Buzan Organisation Ltd.の登録商標です。) マインドマップで要求分析してみよう 使用できるエディション: astah* professional、astah* UML みなさんは、顧客からの要求をどのように設計につなげているでしょうか? 様々な方法論があると思いますが、ここでは astah*を使ってマインドマップで要求分析を行ってみましょう。 6 / 153 astah* チュートリアル マインドマップと設計図がオールインワンでスムーズに連携できる astah*では、マインドマップと UML や ER 図などの設計用の図が1つのツールに入っていることより、互いの図要 素に簡単に変換でき、要求分析から設計までスムーズに移行できます。 マインドマップのトピックを、UML モデル(クラス、ユースケース、その他)に変換できます。 構造ツリーから UML 図へのドラッグ&ドロップで変換でき、変換された UML クラスへはハイパーリンクを自動で追加することも 可能です。 UML モデルからマインドマップのトピックへの変換もドラッグにより可能です。 7 / 153 astah* チュートリアル マインドマップで要求ヒアリングしよう [収集] マインドマップは極めてシンプルなフォーマットから成り立っていますが、アイディアを発散することに長けてお り、議事録や要求の収集に向いていると言えます。顧客との打合せで会話しながら PC をおもむろに開き、astah* で要求をどんどんメモしておきましょう。このシーンでは、ラフで柔らかい、曖昧なアイデアを羅列しておくだけ にとどめます。特に、顧客の何気ないつぶやきや非機能要件など見落としがちな発言もどんどん書いていきましょ う。astah*では様々なマインドマップテンプレートも用意されており、このケースでは以下のテンプレートファイ ルを使うと良いでしょう。 astah* インストールフォルダ¥template¥mindmap¥UserRequirement.asta また、テンプレート自身を変更したい場合であれば、編集して自分用のテンプレートにすることもできます。 [整理・分析] 一方、開発用の各図(UML、ER 図など)の最終形モデルである実装モデルは、厳格でカチッとしており、要求から実 装モデルはこの段階では距離があります。したがってマインドマップで書かれた仕様を整理、分析し、モデリング の材料として利用してみると、モデリングの曖昧なところが見えてくるはずです。そのマインドマップを会議室に 持ち込みプロジェクタに映しながら、要求やモデルで曖昧な点を議論するのもよいでしょう。 こうすることでメンバー間のコミュニケーションの促進や待ち時間の削減に貢献できるでしょう。 [構築] 曖昧なところが明確になってくれば、それを分析モデル→設計モデル→実装モデルへと具体化してきましょう。 8 / 153 astah* チュートリアル 整理・分析・構築の例(マ イ ン ド マ ッ プ か ら ユ ー ス ケ ー ス 図 へ の 変 換 ) 例えば、マインドマップで市の図書館システムの要求ヒアリングをし、それをユースケース図にする例を挙げます。 同様の内容を動画でも参照できます。 デモ動画:http://astah.change-vision.com/ja/movie.html#mindmap-to-usecase なぜ?誰が?どこで?について以下のようにヒアリングしました。 9 / 153 astah* チュートリアル astah*の特徴としてマインドマップのトピックに UML などのアイコンを追加することができます。 ここでは、Who の項目に挙げた人に対して UML のアクターアイコン、When の項目に挙げた機能的要求に対して UML のユースケースアイコンを付加しました。こうすることで、ビジュアル面での恩恵を受けるだけでなく、構造 ツリーのトピックから他の図(たとえばユースケース図)へドラッグアンドドロップしたときに、変換したいモデル の種類がデフォルトで選択されるという利点があります。 さて、トピックからユースケース図を作ってみましょう。メニューから、空のユースケース図を作成します。 次にマインドマップのトピックからアクターを作成します。 構造ツリーでマインドマップの Who 配下のトピックを選択し、ユースケース図にドラッグアンドドロップします。 ダイアログで種類がアクターになっていることを確認して OK ボタンをクリックします。 10 / 153 astah* チュートリアル 以下のようにアクターができました。 次にトピックからユースケースを作成したいと思います。 構造ツリーでマインドマップの When 配下のトピックをユースケース図にドラッグアンドドロップします。 ダイアログで種類がユースケースになっていることを確認して OK ボタンをクリックします。 11 / 153 astah* チュートリアル 以下のようにユースケースができました。 後は、ユースケース図で関係を記述します。 このようにマインドマップを経由して設計するとコミュニケーションも活発になり、曖昧な点やモレがなくなり、 開発がスムーズに進むはずです。 マインドマップ関連参考書籍 ソフトウェア開発におけるマインドマップの活用法について、次の書籍も参照ください。 「ソフトウェア開発に役立つマインドマップ」日経 BP 社 平鍋健児著 ブ ロ グ 記 事 : http://blogs.itmedia.co.jp/hiranabe/2007/05/post_893a.html Amazon: http://www.amazon.co.jp/ASIN/dp/4822283143/xpjp-22 12 / 153 astah* チュートリアル データモデリングしよう オ ブ ジ ェ ク ト 指 向 分 析 設 計 が か な り 現 場 で も 使 わ れ る よ う に な っ て き ま し た が 、そ れ で も、データモデリングは重要です。オブジェクト指向は、プログラミング言語から来た 概念を、設計に援用しようとしています。データモデリングは、アプリケーションを超 えた寿命を持つデータをモデリングしようとしています。 両者は補い合って、ひとつの「意味論」の中で協調して使われても「よい」ものなので す。オブジェクト指向至上主義でも、データモデリング至上主義でも、現実の開発はう ま く 行 き ま せ ん 。オ ブ ジ ェ ク ト 指 向 言 語 と 、リ レ ー シ ョ ナ ル デ ー タ ベ ー ス を つ な ぐ の は 、 DAO や Hibernate の よ う な パ タ ー ン や ツ ー ル を 使 う こ と も あ り ま す が 、逆 に 、こ れ ま で 蓄えられた業務モデリングの知見を利用しながらオブジェクト指向設計をすることも 可能です。 オブジェクト指向開発 クラス図(分析) データモデリング 論理データモデル クラス図(設計) 物理データモデル 13 / 153 astah* チュートリアル ER 図 を 使 っ て み よ う 使用できる製品: astah* professional デモ動画:http://astah.change-vision.com/ja/movie.html#er-diagram ER 図の IDEF1X と IE の両記法をサポート。「リソース」、「イベント」、「サマリー」のエンティティカテゴリ や、 階層的な「ドメイン」の活用(エンティティにドラッグ&ドロップできます)、論理・物理名の交換、SQL 出力などに対応しています。 マインドマップ、UML 図要素、データフロー図要素から ER エンティティへの変換、 又はその逆の連携も実現しています。 astah* の ER 図の主な機能は以下の通りです。 y IDEF1X、IE による ER 図の作成 y エンティティ定義書出力 y DB リバース(API 利用アプリケーションサンプル、サポート対象外) y マインドマップからエンティティへの変換 y SQL 出力(SQL-92 準拠) y ドメインの対応 y 表示レベル y 物理名の対応 14 / 153 astah* チュートリアル IDEF1X、 IE に よ る ER 図 を 作 成 し よ う 使用できる製品: astah* professional astah*の ER 図は二つの表記法に対応しており、すぐに切り替えられます。 [IDEF1X 表記] [IDEF1X 表記] 15 / 153 astah* チュートリアル エンティティの種類について考えてみよう 使用できる製品: astah* professional エンティティとは、システム(データベース)の管理対象となりうるもので人、モノ、イベント、履歴などがありま す。エンティティには、リソース系、イベント系、サマリー系などがあり、以下のように分類されます。 エンティティ種別 主な例 リソース系 会社、顧客、商品、製品、工場、カネなど。 イベント 会員登録・変更・削除、発注、出荷など。 サマリー系 購入履歴、出荷履歴など。 エンティティの抽出のコツがあり、以下の手順を踏むのもよいでしょう。 (1)エンティティ候補をヒト、モノなどのカテゴリーで抽出(マインドマップで行うのもよい。) ・そこから、リソース系エンティティの抽出 (2)業務フローを書く。(フローチャートや DFD、アクティビティ図で)行うのもよい。 ・そこから、イベント系エンティティの抽出 また、astah*ではエンティティのプロパティビューから、リソース系、イベント系、サマリー系の指定や、[シス テムプロパティ]-[新規 ER エンティティの型の色]で系統ごとに色の指定もできるので、ER 図を書いてモデリング するときに利用すると便利です。 16 / 153 astah* チュートリアル マインドマップからエンティティへの変換をしてみよう 使用できる製品: astah* professional マインドマップでエンティティ抽出のために、以下のようなテンプレートを用意するのもよいでしょう。 ショッピングサイト構築という想定でエンティティを挙げてみました。 17 / 153 astah* チュートリアル また、エンティティ候補には ER エンティティのアイコンも付加してみました。 さて新規 ER 図を作成し、構造ツリーでこのマインドマップのトピックを図にドラッグアンドドロップしてみます。 事前に図の表示レベルをエンティティにしておくとよいでしょう。(詳しくは次の章で説明します。) 以下のように ER エンティティが作成されました。 18 / 153 astah* チュートリアル 次にリソース系、イベント系、サマリー系を設定してみます。 システムプロパティの色が設定されていることがわかりますね。 色付けすることにより、コミュニケーションも容易になり、より分かりやすくなります。 あとは続けて属性やリレーションシップの設計などを行い、設計をつめていくとよいでしょう。 19 / 153 astah* チュートリアル データモデリングのプロセスを使用してみよう データモデリングのプロセスの流れは、次の図のように、分析、設計、実装フェーズで、論理データモデルから物 理データモデルを作成するのが主流です。 出典:アーキテクタス 細川努 「UML による一気通貫 DB システム設計」 エンティティの表示レベルの設定をしてみよう 使用できる製品: astah* professional astah*では、図の表示レベル(エンティティ、主キー、属性)を設定でき、これらのプロセスに則ったデータモデリン グが可能です。論理よりではエンティティレベルで、物理モデルに近づくにつれて主キーレベル、属性レベルで設 計するとよいでしょう。操作方法は、ER 図のプロパティビューから表示レベル(初期設定)で変更します。 ちなみにこの操作は対象の ER 図で新規作成 ER エンティティから表示設定が反映されます。既存の ER エンティ ティの表示レベルを変更したい場合は、ER エンティティのポップアップメニューから変更してください。 まず、エンティティレベルで設計してみます。エンティティとなりうるモデルを抽出するにとどめておきます。 20 / 153 astah* チュートリアル 続いて主キーレベルで設計します。リレーションを張っていってよいでしょう。 最後に属性レベルで設計します。詳細な属性項目を設計していきます。 21 / 153 astah* チュートリアル 論理名と物理名を使ってみよう 使用できる製品: astah* professional astah*ではエンティティや属性などに論理名と物理名の両方を設定でき、データモデリングのプロセスをサポート します。論理データモデリングでは、エンティティの論理名に”顧客”とつけ、物理データモデリングではテーブル 命名規則に則り、物理名を”CUSTOMER”にするようなことができます。 エンティティだけでなく属性にも物理名を設定できますし、SQL 出力では、論理名、物理名での出力が可能です。 論理モデル、物理モデルの切り替えは ER 図のプロパティビューのモデルタイプから行います。 まず、[論理モデル]で設計します。各エンティティや属性、リレーションについて概念を詰めていきます。 22 / 153 astah* チュートリアル 次に[物理モデル]で設計します。データベース自体を想定しながらモデリングしていきます。 ドメインを活用しよう 使用できる製品: astah* professional ドメインとは、データの型や値/範囲を取り決めるディクショナリのことで、複数のエンティティの属性から設定 できます。ドメインを使用したデータモデリングは、システムの内のデータの不統一や不整合をなくすことができ、 データモデリングの中でも重要なプロセスです。例えば、クレジットカード番号にハイフンを含めるか含めないか で CHAR(12)に設計する人や CHAR(15)で設計する人が、ドメインを使用することでこのようなテーブル設計のミ スをなくすことが可能です。 また、ドメインを使用していることで、後から属性の長さを変更しても、参照先のエンティティに反映されるなど 仕様変更に強い設計になります。astah*では階層的なドメインの機能も兼ね備えています。構造ツリーのドメイン のポップアップメニューから追加できます。階層的に作成した場合、親の型や長さ等を引き継ぎますが、子側で型 や長さの変更も可能です。 ドメインのグルーピングの仕方は、その設計者の自由に取り決めていいですが、業務に依存しない共通的なドメイ ンは”共通”、業務に依存するドメインは”固有”や”業務”としておくのもいいでしょう。 23 / 153 astah* チュートリアル 下の例は、”共通”ドメインでいくつかドメインを設計した結果です。 また、作成したドメインを ER エンティティにドラッグアンドドロップすることもできます。 以下のようにドメインを使用した属性が追加されましたね。 24 / 153 astah* チュートリアル また、属性のプロパティビューからドメインを変更することもできます。 リレーションを張ってみよう 使用できる製品: astah* professional 以下のようなモデルを作成してみましょう。 (例1) 【会社マスタ】 【会社階層】 会社コード(PK) 上位会社コード(FK) 会社名称 下位会社コード(FK) まず、2つの ER エンティティ” 会社マスタ”,”会社階層”を作成します。 25 / 153 astah* チュートリアル ER エンティティ“会社マスタ”に、主キー”会社コード”、属性”会社名称”を追加します。 ER エンティティ“会社マスタ”から ER エンティティ”会社階層”に非依存型リレーションシップを引きます。 ER エンティティ”会社階層“から属性”会社コード“を”上位会社コード”に名前変更します。 26 / 153 astah* チュートリアル 再度、ER エンティティ“会社マスタ”から ER エンティティ”会社階層”に非依存型リレーションシップを引きます。 27 / 153 astah* チュートリアル 新しく引いた非依存型リレーションシップを選択し、プロパティビューの“キー”タブを開きます。 上位会社コード_0(new)を選択します。 ER エンティティ”会社階層“に新しい属性” 上位会社コード_0“ができました。 28 / 153 astah* チュートリアル これを“下位会社コード”にリネームします。 これでリレーションも含めたモデルを作成できましたね。 [リレーションシップ作成時のポイント] 親子間で複数のリレーションシップを張り、子エンティティ側の FK を異なる属性にしたい場合は、リレーシ ョンシップの“キー“タブを使用します。 29 / 153 astah* チュートリアル データ型を追加してみよう 使用できる製品: astah* professional astah*では、デフォルトでは以下のデータ型が定義されています。 ([ツール]-[ ER 図]-[ER データ型の設定]、 もしくは構造ツリー上の ER モデルのポップアップメニューから” ER データ型の設定”を選択。) この一覧にないデータ型も追加でき、長さや精度を設定できます。 [物理モデル作成時のポイント] 論理モデル作成後、物理モデル作成前に、固有の DB を使用し、astah*デフォルトのデータ型で不十分な場合、 先にデータ型を設定しておくと、物理モデルの属性の型を考慮するときにスムーズにモデリングできます。 30 / 153 astah* チュートリアル エンティティ定義書を出力してみよう 使用できる製品: astah* professional デモ動画:http://astah.change-vision.com/ja/movie.html#entity-definition astah*では、テンプレートを指定して、ER 図のエンティティ定義を EXCEL 形式で出力できます。 設計したエンティティをドキュメントに出力して、納品資料として利用したり、チームでレビューしたりするのも よいでしょう。 [ツール]-[ER 図]-[エンティティ定義書のエクスポート]を選択します 出力ダイアログが表示されます。テンプレートはプロジェクト固有のテンプレートにも変更できます。 新しいテンプレートボタンをクリックしてみましょう。 31 / 153 astah* チュートリアル 以下のようにテンプレートを編集できます。 [ドメイン一覧] [エンティティ一覧] [エンティティ定義] 新しいテンプレートボタンをクリック後、了解ボタンクリックでテンプレートが作成されます。 そのファイルを開いてみましょう。 32 / 153 astah* チュートリアル $each_domain など$から始まるものは、次のようにマッピングされます。 タブのドメイン一覧 - $each_domain タブのエンティティ一覧 - $each_entity タブのエンティティ名 - $each.entity.logical_name システム名 - $system.name No. - $each.row_number ドメイン名 - $each.domain.logical_name ドメインの物理名 - $each.domain.physical_name ドメインの別名1 - $each.domain.alias1 ドメインの別名2 - $each.domain.alias2 ドメインのデータ型 - $each.domain.type ドメインの長さ/精度 - $each.domain.length_precision ドメインの NotNull フラグ - $each.domain.notnull ドメインの親ドメイン - $each.domain.parent ドメインの定義 - $each.domain.definition エンティティの論理名 - $entity.logical_name エンティティの物理名 - $entity.physical_name エンティティの別名1 - $entity.alias1 エンティティの別名2 - $entity.alias2 エンティティの型 - $entity.kind 33 / 153 astah* チュートリアル エンティティの定義 - $entity.definition エンティティのタグ付き値 - $entity.each.tagged_value.value 属性の論理名 - $each.entity.each.attribute.logical_name 属性の物理名 - $each.entity.each.attribute.physical_name 属性のドメイン名 - $each.entity.each.attribute.domain 属性の主キーフラグ - $each.entity.each.attribute.pk 属性の外部キーフラグ - $each.entity.each.attribute.fk 属性の NotNull フラグ - $each.entity.each.attribute.notnull 属性の参照先 - $each.entity.each.attribute.ref 属性のデータ型 - $each.entity.each.attribute.type 属性の長さ/精度 - $each.entity.each.attribute.length_precision 属性の初期値 - $each.entity.each.attribute.initial_value 属性の定義 - $each.attribute.definition 属性のタグ付き値 - $each.entity.each.attribute.each.taggedvalue 次にデフォルトのテンプレートで出力してみましょう。 SQL 出 力 ( SQL-92 準 拠 ) し て み よ う 34 / 153 astah* チュートリアル 使用できる製品: astah* professional デモ動画:http://astah.change-vision.com/ja/movie.html#sql-export SQL-92 相当の DDL を出力できます。以下のモデルで SQL を出力してみましょう。 [ツール]-[ER 図]-[SQL 出力]を選択します。 以下のダイアログが表示されますので、オプションボタンを押下します。 35 / 153 astah* チュートリアル 次のようなオプションを設定できます。 出力した結果のサンプルです。 36 / 153 astah* チュートリアル 37 / 153 astah* チュートリアル DB リ バ ー ス を 使 っ て み よ う ( サ ン プ ル 、 サ ポ ー ト 対 象 外 ) 使用できる製品: astah* professional 本アプリケーションは astah* 編集 API のサンプルのため、サポート対象外です。不具合報告やお客様の実行環境 (DB、JDBC ドライバー等)に関連したご質問、各種お問い合わせには、対応できない場合がありますのでご了承 ください。 WEB サイトにも同じ内容の記事を掲載してあります。 http://astah.change-vision.com/ja/feature/db-reverse.html astah* DB リバースツールは、ER 図に関連するモデルの編集 API のサンプルとして作成されました。DB リバース ツールを使うことで、DB に接続後、astah* モデルへ変換できます。 既存のデータベースにアクセスして、現状のテーブル設計を容易に見える化できます。 ご利用の前に astah* インストールフォルダ配下にある astah* API サンプルプログラム使用許諾契約 ( 「API_sample_program_license_agreement.txt」)を必ずお読みください。 予備知識 astah* professional では、JDBC ドライバを利用してデータベースのテーブル定義を astah* プロジェクトへ変換 します。 JDBC ドライバは各データベースやサードパーティなどから提供されており、別途ダウンロードする必要 があります。 また、データベースの環境については各自で作成してくださいますようお願い致します。 データベースの環境設定をしてみよう ここでは確認用のデータベースを HSQLDB として、データベース環境を構築し、テーブルを作成する方法を解説 します。 既に存在しているデータベースから定義を読み込む場合は、この手順は不要です。 1. HSQLDB の ダウ ンロ ード 次の URL から最新版の「hsqldb_1_8_0_9.zip」をダウンロードします。 http://hsqldb.org/ 2 .HSQLDB デ ータ ベー スのイ ンス トール 事前に Java をインストールしてください。次に「hsqldb_1_8_0_9.zip」を解凍します。今回の例では、 「C:¥hsqldb_1_8_0_9」配下に解凍します。 3 .HSQLDB デ ータ ベー スの起 動 コマンドプロンプトから以下を入力してください。 cd C:¥ hsqldb_1_8_0_9¥hsqldb¥data java -cp ..¥lib¥hsqldb.jar org.hsqldb.Server -database TEST 起動に成功すると次のような画面が表示されます。 38 / 153 astah* チュートリアル 4. HSQLDB DatabaseManager の起動 コマンドプロンプトから以下を入力してください。 cd C:¥ hsqldb_1_8_0_9¥hsqldb¥data java -cp ..¥lib¥hsqldb.jar org.hsqldb.util.DatabaseManager 次の画面で、Type を「HSQL Database Engine Server」に変更し、デフォルトの設定で「OK」を押下します。 5. HSQLDB DatabaseManager から SQL を実行 次の画面で右のテキストエリアに SQL 文を入力します。 DRO TABLE A IF EXISTS; DROP TABLE B IF EXISTS; 39 / 153 astah* チュートリアル DROP TABLE C IF EXISTS; CREATE TABLE A ( ID INT NOT NULL PRIMARY KEY, Name VARCHAR(10) ); CREATE TABLE B ( ID INT NOT NULL PRIMARY KEY, Name VARCHAR(10), FOREIGN KEY (ID) REFERENCES A (ID) ); CREATE TABLE C ( ID INT, Name VARCHAR(10), FOREIGN KEY (ID) REFERENCES A (ID) ); 「Execute」ボタンを押下すると次のような表示になります。メニューの[View]-[Refresh Tree]を実行します。 テーブル A、B、C ができます 40 / 153 astah* チュートリアル 6. HSQLDB DatabaseManager の終了 HSQLDB DatabaseManager の画面を閉じます。 41 / 153 astah* チュートリアル ASTAH* デ ー タ ベ ー ス リ バ ー ス コ ン ポ ー ネ ン ト を 使 用 し て み よ う 1. astah* データベースリバースコンポーネントの起動 「astah インストールフォルダ\api\sample\db_reverse\run.bat」をダブルクリックします。 (例: C:\Program Files\astah-professional\api\sample\db_reverse\run.bat) 次のような画面が表示されます。 2. astah* データベースリバースコンポーネントの設定 HSQLDB の場合、次のように入力し、「Connect」ボタンを押下します。 [URL] jdbc:hsqldb:hsql://localhost [User] sa [Password] なし [JDBC Driver] org.hsqldb.jdbcDriver [Driver path] C:¥ hsqldb_1_8_0_9¥hsqldb¥lib¥hsqldb.jar [Target Model] C:¥ result.asta 42 / 153 astah* チュートリアル 3. astah* データベースリバースコンポーネントでデータベースに接続 「Import」ボタンが有効になりますので押下します。 4. astah* データベースリバースコンポーネントでインポート 43 / 153 astah* チュートリアル 「Import Successfully」がコンソールに出力され、astah* プロジェクトの作成が完了します。 44 / 153 astah* チュートリアル 作 成 し た ASTA フ ァ イ ル を ASTAH* PROFESSIONAL で 開 い て み よ う 1. 作成したファイルを astah* professional で開きます 2. ER 図を自動作成します 構造ツリーの ER モデルを選択し、右クリックで表示されるポップアップメニューから[ER 図を自動作成する] を実行します。 参考: 一部のエンティティのみを表示する ER 図を作成する場合は、新しい ER 図を作成後、構造ツリーで必 要なエンティティを選択して、ER 図にドラッグ&ドロップします。 3. 型と長さを表示します Ctrl+A で図要素をすべて選択し、右クリックで表示されるポップアップメニューから [型と長さの表示]-[オン]を実行します。 45 / 153 astah* チュートリアル 4. 全図要素の自動レイアウトを実行します astah* の上部メニュー、[整列]-[全図要素の自動レイアウト]を実行します。 5. 拡大表示します A、B、C のテーブル、主キー、属性、依存型リレーションシップ、 非依存型リレーションシップが作成されていることが分かります。 46 / 153 astah* チュートリアル 47 / 153 astah* チュートリアル ASTAH* デ ー タ ベ ー ス リ バ ー ス コ ン ポ ー ネ ン ト の 改 良 に つ い て 1.【astah* API サンプルプログラム使用許諾契約】 お使いになる前に、astah インストールフォルダにある「API_sample_program_license_agreement.txt」を必ず お読みください。 2. ソースコードについて 次のフォルダに Java + astah* API で実装されたソースコードがあります。 astah インストールフォルダ\astah-professional\api\sample\db_reverse\*.java (例: C:\Program Files\astah-professional\api\sample\db_reverse\*.java ) 3. ソースコードの編集について 【astah* API サンプルプログラム使用許諾契約】に記載されているように、ソースコードを編集し機能を改良 して利用できます。ただし、astah* API サンプルプログラムの著作権や知的財産権は、株式会社チェンジビジョ ンに帰属します。 詳しくは【astah* API サンプルプログラム使用許諾契約】をご参照ください。 4. バッチによる簡単なコンパイルについて astah インストールフォルダ\astah-professional\api\sample\db_reverse\compile.bat (例:C:\Program Files\astah-professional\api\sample\db_reverse\compile.bat ) にてコンパイルできます。 5. Eclipse 等でのコンパイルについて astah* データベースリバースコンポーネントは、astah* の API (astah-api.jar)を使用して作成されています。 そのため、以下を CLASSPATH に設定する必要があります。 インストールフォルダ\astah-professional\astah-api.jar (例:C:\Program Files\astah-professional\astah-api.jar ) 起動する場合は、astah の jar(astah-pro.jar)が必要なため、CLASSPATH に追加してください。 インストールフォルダ\astah-professional\astah-pro.jar (例:C:\Program Files\astah-professional\astah-pro.jar) 48 / 153 astah* チュートリアル CRUD を 使 っ て み よ う 使用できるエディション: astah* professional デモ動画:http://astah.change-vision.com/ja/movie.html#crud CRUD の 概 要 CRUD とはリレーショナルデータベース上で、どのデータに対して、どのプロセスが、生成(Create)、読み込み(Read)、 更新(Update)、削除(Delete)されるかを表す表形式のマトリックスです。 astah* の CRUD では、縦軸がプロセスで、ユースケース図(ユースケース)、アクティビティ図(アクション)、フロ ーチャート(フロー要素)、DFD(プロセス)を選択し、横軸がデータで、クラス図(クラス)、ER 図(ER エンティティ) を選択できます。それぞれ、縦軸、横軸を設定後、C、R、U、D の状態を記述し、分析することができます。 astah* の CRUD の主な機能は以下の通りです。 ・CRUD の生成、編集 ・CRUD に表示したい図を、構造ツリーからドラッグ&ドロップで追加 ・CRUD から構造ツリーの図やモデルへジャンプ ・CRUD のモデル軸、機能軸から図を開く ・図から CRUD へジャンプ ・CRUD の Excel 出力 ・全ての CRUD 統計レポートを Excel 出力 ・CRUD のテキストコピー CRUD 分 析 の 利 点 を 考 え よ う 49 / 153 astah* チュートリアル データモデリングの世界では、CRUD 分析は大変重要かつ有効といわれています。 CRUD 分析は、テーブル設計段階の考慮モレや矛盾を早期に発見できる手立てとなりうるものです。 結合テスト段階での DB マイグレーション時のトラブル、マスタの登録処理抜け、スタブテストデータの削除忘れ、 データの二重登録、さらにはテーブル設計の問題により、特定のテーブルへの過剰な負荷による非機能要件である レスポンス問題、再度正規化やテーブル分割を余儀なくされるなどのリスクを軽減できます。 開発が大詰めの段階では、大量のビジネスロジックを抱えて、初期に引きずったテーブル設計を変更するのは容易 ではありません。CRUD 分析をプロジェクトに合わせた運用で適用して行くのもいいかもしれませんね。 CRUD 分 析 し て み よ う それでは astah*を実際につかって CRUD 分析してみましょう。 ここからは本のオンラインショッピングの例を示してみます。いつものようにマインドマップで軽い要求分析をし てみました。登場しうる簡単なモデルと機能を挙げています。 作成したマインドマップを利用し、 構造ツリーの User、Book、Cart トピックを新規作成したクラス図にドラッグアンドドロップします。 50 / 153 astah* チュートリアル 以下のようにクラスが作成されました。 クラス図を詳細化してみます。 51 / 153 astah* チュートリアル このクラス図を ER 図に変換してみます。構造ツリーのクラス図のポップアップメニューから”ER 図に変換”を選択 します。 以下の MSG が表示されます。ここでは”はい”を選択します。 以下のように ER 図が作成されました。 52 / 153 astah* チュートリアル 作成した ER 図にリレーションを張るなどして洗練させます。 作成したマインドマップを利用し、構造ツリーの Login、Adjustment、Put in cart、New Registration、Logout トピ ックを新規作成したユースケース図にドラッグアンドドロップします。 53 / 153 astah* チュートリアル 以下のようにユースケースが作成されました。 ユースケース図を洗練させます。 54 / 153 astah* チュートリアル さて作成した ER 図、ユースケース図を利用して CRUD 分析できる材料がそろいました。 メニューから CRUD を作成します。 以下のようなダイアログが表示されます。 55 / 153 astah* チュートリアル 作成した ER 図、ユースケース図を設定してみます。 空の CRUD が作成されました。 56 / 153 astah* チュートリアル 現段階で、考えられる C、R、U、D を設定します。 セルを直接選択し、C キー、R キー、U キー、D キーで ON/OFF を設定できます。 このように astah*では、UML、ER 図、業務フローを利用しながら、CRUD 分析の材料とすることができ、分析・ 設計間の考慮モレを CRUD 分析によって低減できると思います。 CRUD を ド キ ュ メ ン ト 出 力 し て み よ う 57 / 153 astah* チュートリアル 前章で作成した CRUD を Excel ファイルとして出力することも可能で、レビューや納品資料としても使用できます。 [ツール]-[CRUD]-[CRUD を Excel ファイルに出力]を選択します。 出力ダイアログが表示されます。 出力結果は以下の通りです。 58 / 153 astah* チュートリアル 全 CRUD 統計リポートも出力できますから、全体を俯瞰してレビューしたい際に利用してみるのもよいでしょう。 ( [ツール]-[CRUD]-[全 CRUD 統計リポートを Excel ファイルに出力]) 59 / 153 astah* チュートリアル チーム開発してみよう モデリングにも今やチーム開発は必須の機能です。 astah*に用意されている二つのチーム開発の補助機能を紹介します。 マージ機能ってどんな機能? 使用できるエディション: astah* professional、astah* UML、astah* think! デモ動画:http://astah.change-vision.com/ja/movie.html#merge 他の人が作成したプロジェクトを、自分のプロジェクトにマージしたい時に使います。現在のプロジェクトに別の プロジェクトをマージできます。 簡単マージ、モデルごとに作業中・取込中のどちらを優先するか選択可能な詳 細マージ(pro,UML のみ)があります。 [用途] ・二つのプロジェクトファイルを一つにまとめる。 ・同一プロジェクトの編集 二人の人がそれぞれ編集した同一 astah*ファイルの変更点を合わせられる。 [使用イメージ] まず簡単マージを使ってみよう 60 / 153 astah* チュートリアル コンフリクトがないケース 以下のようなプロジェクトを新規作成してみます。ファイル名は base.asta とします。 以下のようなプロジェクトも新規作成してみます。 (新規作成することで base プロジェクトのモデルの内部 ID と同一になることがありません。) ファイル名は ref.asta です。 base.asta を開き、[ファイル]-[プロジェクトをマージ]を選択し、ref.asta を選択します。 以下のようなダイアログが表示されます。 61 / 153 astah* チュートリアル “詳細”ボタンをクリックすると、差分が表示されます。 マージの結果を細かくカスタマイズしたい場合、この画面でどっちを優先させるか選択することができます。 まずは簡単マージするので、“キャンセル”ボタンで前の画面に戻ります。 ダイアログの説明に“一方に存在する要素は全てマージします。それ以外の要素は、以下のプロジェクトの要素を 優先してマージします。”とあります。この場合のマージでは、全て一方に存在する要素にあたりますので、“作 業中のプロジェクト”を選択しても、“取り込み中のプロジェクト”を優先しても全てマージされます。ひとまず “取り込み中のプロジェクト”を選択して“了解”ボタンをクリックします。 62 / 153 astah* チュートリアル ref.asta のみに存在していた“ref クラス図”と“D”クラスが取り込まれましたね。 次は、コンフリクトがあるケースを説明していきます。 コンフリクト(内部 ID 衝突)あるケース 以下のようなプロジェクトを新規作成します。ファイル名は base.asta とします。 このプロジェクトを ref2.asta として保存します。 63 / 153 astah* チュートリアル さらにこのプロジェクトの“”、“”、“”を削除し、“B”を“D”に名前変更します。 (この操作により、base プロジェクトの B クラスと ref プロジェクトの D と内部 ID が同一になります。) base.asta 開き、[ファイル]-[プロジェクトをマージ]を選択し、ref2.asta を選択します。 以下のようなダイアログが表示されます。 “詳細”ボタンをクリックします。コンフリクトがないケースの詳細ダイアログの結果と少し異なります。 64 / 153 astah* チュートリアル 要素が異なる理由が“名前が異なっています”になっていて、作業中の要素が“B”、取込む要素が“D”になって います。これはどういうことでしょうか? “簡単マージ“ダイアログの説明に“一方に存在する要素は全てマージします。それ以外の要素は、以下のプロジ ェクトの要素を優先してマージします。”とあります。このケースは、作業中プロジェクト、取込み中プロジェク トの両方に同じモデルがあり、どちらかを優先させるか決めなければならないコンフリクト(変更の衝突)です。 astah*では各モデルに内部 ID を保持しており、コンフリクトの定義は、内部 ID が同じか同じ名前空間で名前が同 じものが変更されたことを意味しています。 コンフリクトの定義: 両方のプロジェクトに同じ名前空間(パッケージ)で同じ名前か同じ内部 ID のものが存在し、変更されているケース。 このケースでは同じ内部 ID のコンフリクトと言えます。内部 ID は、モデルの新規作成時、例えばクラスを作成し たときに割り振られます。また、astah*がもつ内部の ID は衝突がないことを前提としています。そのため、ID の 生成も注意して衝突しないようにしています。内部 ID は複数の人が複数のパソコンで同時に編集したモデルであっ ても、別々になるように生成されます。 では、“簡単マージ“ダイアログで”取込み中プロジェクト”を優先でマージします。 クラス“B”が“D”になっていますね。 65 / 153 astah* チュートリアル [マージ機能のポイント] このようにマージする際は、内部の ID と名前の衝突するコンフリクトに気をつけモデリングすることで、複 雑なマージをよりスムーズにすることができます。 では、“簡単マージ“ダイアログで” 作業中プロジェクト”を優先でマージします。 クラス“B”はそのままですね。 コンフリクト(名前衝突)があるケース 以下のようなプロジェクトを新規作成します。ファイル名は base.asta とします。 66 / 153 astah* チュートリアル 以下のようなプロジェクトも新規作成します。 (新規作成することで base プロジェクトのモデルの内部 ID と同一になることがありません。) ファイル名は ref3.asta です。 base.asta を開き、[ファイル]-[プロジェクトをマージ]を選択し、ref3.asta を選択します。 以下のようなダイアログが表示されます。 67 / 153 astah* チュートリアル “詳細”ボタンをクリックします。コンフリクト(内部 ID 衝突)があるケースと異なる結果が表示されています。 要素が異なる理由が“名前が同じですが異なるモデルです”になっていて、作業中の要素が“C”、取込む要素が “C”になっています。コンフリクト(内部 ID 衝突)のあるケースと異なり、名前が同じだが内容が異なるケースで す。(内部 ID も異なる。)つまり、同じ名前空間(パッケージ)で同じ名前のコンフリクトと言えます。 では、“簡単マージ“ダイアログで”取込み中プロジェクト”を優先でマージします。 クラス“C”が取込み中の“C”になっていますね。(ref3.asth の C クラスの定義に ref が入っています。) では、“簡単マージ“ダイアログで” 作業中プロジェクト”を優先でマージします。 68 / 153 astah* チュートリアル クラス“C”はそのままですね。 コンフリクト(内部 ID 衝突)あるケースと同様に、内部の ID と名前の衝突するコンフリクトに注意してモデリング することで、複雑なマージをより簡単にできます。 図のマージでの注意点を押さえておこう astah*のマージでは、図に対して完全にマージする図と、図を”取込み中プロジェクト”もしくは” 作業中プロジェク ト”から選び、一方の内容に置き換えられる図がありますので、このルールを理解したうえでマージされると上手に マージできるでしょう。 図名 マージルール クラス図 マージ ユースケース図 マージ ステートマシン図 作業中、取込み中の一方に置換 アクティビティ図 作業中、取込み中の一方に置換 シーケンス図 作業中、取込み中の一方に置換 コミュニケーション図 作業中、取込み中の一方に置換 コンポーネント図 マージ 配置図 マージ 合成構造図 マージ フローチャート 作業中、取込み中の一方に置換 データフロー図(DFD) 作業中、取込み中の一方に置換 ER 図 マージ CRUD 作業中、取込み中の一方に置換 マインドマップ 作業中、取込み中の一方に置換 69 / 153 astah* チュートリアル 要求テーブル 作業中、取込み中の一方に置換 トレーサビリティマップ 作業中、取込み中の一方に置換 マージ時には図のマージのルールも知っておくとスムーズにマージできます。 70 / 153 astah* チュートリアル 参照プロジェクト管理ってどんな機能? 使用できるエディション: astah* professional デモ動画:http://astah.change-vision.com/ja/movie.html#reference-project 複数人でモデルを編集するための補助機能が、参照プロジェクトです。 プロジェクトから複数のプロジェクトを参照し、”取込み中プロジェクト”優先でマージし、参照するプロジェクト にあるモデルを読み取り専用のモデルにする機構です。 参照先のファイルのタイムスタンプかモデルのタイムスタンプが変更されれば、参照元から更新ができます。 (タイムスタンプの設定については、[ツール]-[システムプロパティ]-[プロジェクトのマージ]-[参照プロジェクト更新 時にファイルのタイムスタンプでなく、モデルのタイムスタンプを使う] (デフォルトは OFF) で設定が選択できます。) 参照されているファイルを編集後保存すると、参照元ファイルを開いた時に、更新を促される MSG が表示された り、[ファイル]-[参照プロジェクト管理]で表示されるダイアログで、対象のファイルが”要更新”となります。 [使用イメージ] [詳細イメージ] 参照プロジェクト機能を利用したチームモデリングの一案を PDF で公開しています。 日本語版 http://astah.change-vision.com/ja/files/astah-ref-project.pdf 英語版 http://astah.change-vision.com/en/files/astah-ref-project-en.pdf 参照プロジェクト管理を使ってみよう 71 / 153 astah* チュートリアル 例えば、以下の手順でプロジェクト分割すると、スムーズにマージすることができます。 (A さん、B さん、C さんの 3 人で共通のモデルを作成し、チーム開発する例) 1. 共通部分のモデルを早めに確定し、“共通”などとするパッケージに退避する。これを common.asta とする。 (例えば、クラスと属性、操作、ER ドメインと、ER エンティティと属性) 2. ここから、3 人で共通部分を使用した開発をします A さんが、機能 A、B さんが機能 B、C さんが機能 C を担当するとします。 A さんは、a.asth を作成し、common.asta を参照する設定をします。プロジェクトに”機能 A”パッケージを作成 し、読み取り専用の”共通”モデルを使用しながら、モデリングします。 B さんは、b.asth を作成し、common.asta を参照する設定をします。プロジェクトに”機能 B”パッケージを作成 し、読み取り専用の”共通”モデルを使用しながら、モデリングします。 C さんは、c.asth を作成し、common.asta を参照する設定をします。プロジェクトに”機能 C”パッケージを作 成し、読み取り専用の”共通”モデルを使用しながら、モデリングします。 72 / 153 astah* チュートリアル 3. 場合によっては、CVS、SVN、VSS などの構成管理ツールと組み合わせると良いかもしれません。 注意点として、構成管理ツールでチェックアウトした後のファイルのタイムスタンプは、チェックアウト時の タイムスタンプになっています。参照プロジェクト管理では、ファイルのタイムスタンプが変更されると更新 を促されます。こういうケースのために、astah*ではモデルのタイムスタンプを用意しています。astah*で保存 したときのタイムスタンプを asta ファイルの中に埋め込み、参照プロジェクトでモデルのタイムスタンプを使 用できる機構も用意されています。 73 / 153 astah* チュートリアル [ツール]-[システムプロパティ]-[プロジェクトのマージ]-[参照プロジェクト更新時にファイルのタイムスタンプ でなく、モデルのタイムスタンプを使う](デフォルトは OFF) モデルのタイムスタンプは、プロジェクトのプロパティビュー”バージョン履歴“の”モデルのタイムスタンプ” で確認できます。 また、コミットするときのコメントに、プロジェクトの簡易比較で出力されるテキストのモデルの DIFF を張 り付けてもいいかもしれませんね。 4. メンバ内で作業中に共通部分に編集が必要になった場合は、common.asta を変更し、保存します。 編集が終われば、メンバに通知し、それぞれのファイルを開き、common.asta を更新します。 74 / 153 astah* チュートリアル 5. 最後に A さん、B さん、C さんのモデリングが確定したら、参照モデルを解除し、それぞれを a2.asta、b2.asta、 c2.asta として保存します。 75 / 153 astah* チュートリアル 最終成果物として a2.asta を fixed.asta として保存します。b2.asta、c2.asta を取込み中プロジェクト優先で簡 単マージします。 最後に、fixed.asta から common.asta を参照します。“共通“パッケージ配下が読み取り専用のアイコンが表 示されています。 これで求めるモデルを作成できましたね。 76 / 153 astah* チュートリアル 「参照プロジェクトを使用する上でのポイント」 ・共通化にするモデルのスコープや担当を明確にし、早期に共通モデルを FIX することが重要です。 ・構成管理ツールを使用する場合は、モデルのタイムスタンプを使用しましょう。(システムプロパティで設 定) 77 / 153 astah* チュートリアル 要求を整理してみよう SYSML の 概 要 を 知 ろ う SYSML と は Systems Modeling Language の略で OMG(Object Management Group)によって策定されたハードウェアも含め たシステム全体を記述するためのモデリング言語です。 誕生の背景 特に組み込み分野でのハードウェアも含めたモデリングにおいて、従来のモデリング手法では問題点を抱えたまま でした。特に、分析・設計において有効とされていた UML においても、仕様策定時には想定していなかった領域 での問題や仕様の曖昧さ、表現力の不足といった問題が指摘されるようになりました。また、UML はあくまでソフ トウェアを分析・設計する表記法で、ハードウェアなどは対象外でした。UML の配置図など一部ハードウェアを表 現可能なものもありますが、ソフトウェアからの観点であり、ハードウェアそのものを表現できず、表現力の拡張 が望まれていました。それを打破するべく OMG により SysML が策定され今日に至り、最新の仕様書は 1.1 です。 (2009 年 10 月 29 日現在) SYSML の 概 要 SysML は、図のように UML 2 を拡張した仕様になっています。 SysML は、UML2 の全ての仕様を包含しているのではなく、一部は SysML 独自の仕様となっています。 引用:OMG SysML1.1 仕様書 P7 http://www.omg.org/spec/SysML/1.1/changebar/PDF/ SYSML で の 各 図 SysML 図類は、図 4.4 に示されます。 78 / 153 astah* チュートリアル ピンクの点線で囲まれた要求図(Requirement Diagram),パラメトリック図(Parametric Diagram)が新規図で、太枠の アクティビティ図が UML2 の拡張、太枠で文字が緑のブロック定義図(Block Definition Diagram)は UML2 のクラス 図の拡張の新規図、内部ブロック図(Internal Block Diagram) は UML2 の合成構造図の拡張の新規図です。 引用:OMG SysML1.1 仕様書 P11 http://www.omg.org/spec/SysML/1.1/changebar/PDF/ 79 / 153 astah* チュートリアル ASTAH*で の 要 求 周 り の 機 能 の 利 用 astah* professional では SysML の要求に関連した部分をソフトウェア開発の現場で汎用的に使用できるよう実現 しました。要求およびテストケースの階層・派生関係の設定、要求テーブルを用いた管理を容易にし、工程間のギ ャップを減らします。 要求 使用できるエディション: astah* professional システムの要求を記述するモデルです。名前、ID、テキスト等を設定でき、階層をツリーとして表現します。また、 導出、コピー、満足、検証、洗練、トレースといった派生関係を設定できます。その他の機能として、要求からユ ースケースやマインドマップのトピックへの変換もサポートしています。 テストケース 使用できるエディション: astah* professional システムのテストケースを記述するモデルです。名前、ID、定義等を設定でき、階層をツリーとして表現します。 また、満足、検証、洗練といったテストケースからの派生関係も設定可能です。テストケースからユースケースや マインドマップのトピックへの変換もサポートしています。 要求テーブル 使用できるエディション: astah* professional デモ動画:http://astah.change-vision.com/ja/movie.html#requirement-table 表形式で要求を編集したり、階層を指定して要求の ID、名前、テキストを表示したりできます。Excel への入出力 も可能です。 要求図 使用できるエディション: astah* professional デモ動画:http://astah.change-vision.com/ja/movie.html#requirement-diagram 80 / 153 astah* チュートリアル どんな要求があるかと、要求間の関係を定義する図です。 導出、コピー、満足、検証、洗練、トレース 使用できるエディション: astah* professional 導 出 <<DERIVEREQT>> 引用:OMG SysML1.1 仕様書 P144 http://www.omg.org/spec/SysML/1.1/changebar/PDF/ 導出は、クライアント要求がサプライヤ要求に導き出される二つの要求間の依存関係です。 例えば、システム要求はビジネス要求に由来するかもしれません。あるいは、より低レベルの要求はシステム要求 に由来するかもしれません。他の依存関係と同様に、矢方向はクライアント要求からそれが導き出されるサプライ ヤ要求まで指します。 astah*では、要求から要求に引くことができます。 要求のプロパティビューの”依存元”タブ、”依存先” タブ、もしくは、要求テーブルの要求のポップアップメニュー ”依存元の設定”、”依存先の設定”から追加できます。 A DeriveReqt relationship is a dependency between two requirements in which a client requirement can be derived from the supplier requirement. For example, a system requirement may be derived from a business need, or lower-level requirements may be derived from a system requirement. As with other dependencies, the arrow direction points from the derived (client) requirement to the (supplier) requirement from which it is derived. 引用:OMG SysML1.1 仕様書 P149 http://www.omg.org/spec/SysML/1.1/changebar/PDF/ 81 / 153 astah* チュートリアル コ ピ ー <<COPY>> 引用:OMG SysML1.1 仕様書 P144 http://www.omg.org/spec/SysML/1.1/changebar/PDF/ コピーは、クライアント要求とサプライヤ要求間の依存関係で、クライアント要求のテキストがサプライヤ要求の 読み取りコピーであることを示しています。異なる状況で再利用する目的で、クライアント/サプライヤ関係を維持 します。クライアント要求は、コピーの矢印の先のサプライヤ要求の読み取り専用コピーです。 astah*では、要求から要求に引くことができます。 要求のプロパティビューの”依存元”タブ、”依存先” タブ、もしくは、要求テーブルの要求のポップアップメニュー ”依存元の設定”、”依存先の設定”から追加できます。 A Copy relationship is a dependency between a supplier requirement and a client requirement that specifies that the text of the client requirement is a read-only copy of the text of the supplier requirement. A Copy dependency created between two requirements maintains a master/slave relationship between the two elements for the purpose of requirements re-use in different contexts. When a Copy dependency exists between two requirements, the requirement text of the client requirement is a read-only copy of the requirement text of the requirement at the supplier end of the dependency. 引用:OMG SysML1.1 仕様書 P149 http://www.omg.org/spec/SysML/1.1/changebar/PDF/ 満 足 <<SATISFY>> 引用:OMG SysML1.1 仕様書 P144 http://www.omg.org/spec/SysML/1.1/changebar/PDF/ 満足は、要求とその要求を満足させるモデル間の依存関係です。 他の依存関係と同様に、矢方向はクライアントモデルからそれを満たすサプライヤ要求まで指します。 astah*では、モデル※から要求に引くことができます。 モデル※とは以下を示します。 パッケージ 、モデル 、サブシステム 、クラス 、関連クラス、 インターフェース、 エンティティ 、コントロール 、バウンダリ 、アクター、 ユースケース 82 / 153 astah* チュートリアル コンポーネント 、成果物 、ノード 、要求 、テストケース 要求のプロパティビューの”依存元”タブ、”依存先” タブ、テストケースのプロパティビューの”依存先” タブ、もし くは、要求テーブルの要求のポップアップメニュー”依存元の設定”、”依存先の設定”から追加できます。 A Satisfy relationship is a dependency between a requirement and a model element that fulfills the requirement. As with other dependencies, the arrow direction points from the satisfying (client) model element to the (supplier) requirement that is satisfied. 引用:OMG SysML1.1 仕様書 P151 http://www.omg.org/spec/SysML/1.1/changebar/PDF/ 検 証 <<VERIFY>> 引用:OMG SysML1.1 仕様書 P145 http://www.omg.org/spec/SysML/1.1/changebar/PDF/ 検証は、要求とシステムが要求を満たすかどうかを検証するテストケースの依存関係です。他の依存関係と同様に、 矢方向は、クライアントテストケースからそれが導き出されるサプライヤ要求まで指します。 astah*では、テストケースから要求に引くことができます。 要求のプロパティビューの”依存元”タブ、”依存先” タブ、テストケースのプロパティビューの”依存先” タブ、もし くは、要求テーブルの要求のポップアップメニュー”依存元の設定”、”依存先の設定”から追加できます。 A Verify relationship is a dependency between a requirement and a test case or other model element that can determine whether a system fulfills the requirement. As with other dependencies, the arrow direction points from the (client) element to the (supplier) requirement. 引用:OMG SysML1.1 仕様書 P152 http://www.omg.org/spec/SysML/1.1/changebar/PDF/ 洗 練 <<REFINE>> 引用:OMG SysML1.1 仕様書 P145 http://www.omg.org/spec/SysML/1.1/changebar/PDF/ 83 / 153 astah* チュートリアル 洗練とは、モデルから要求に詳細化する依存関係です。他の依存関係と同様に、矢方向は、クライアントモデルか らサプライヤ要求の方向を示します。 astah*では、モデル※から要求に引くことができます。 モデル※とは以下を示します。 パッケージ 、モデル 、サブシステム 、クラス 、関連クラス、 インターフェース、 エンティティ 、コントロール 、バウンダリ 、アクター、 ユースケース コンポーネント 、成果物 、ノード 、要求 、テストケース 要求のプロパティビューの”依存元”タブ、”依存先” タブ、テストケースのプロパティビューの”依存先” タブ、もし くは、要求テーブルの要求のポップアップメニュー”依存元の設定”、”依存先の設定”から追加できます。 ト レ ー ス <<TRACE>> 引用:OMG SysML1.1 仕様書 P146 http://www.omg.org/spec/SysML/1.1/changebar/PDF/ トレースとは、要求間の抽象的なつながりを表す依存関係です。 astah*では、要求から要求に引くことができます。 要求のプロパティビューの”依存元”タブ、”依存先” タブ、もしくは、要求テーブルの要求のポップアップメニュー ”依存元の設定”、”依存先の設定”から追加できます。 要 求 図 と 要 求 テ ー ブ ル を 使 用 し て 要 求 を モ デ リ ン グ [組 み 込 み 系 サ ン プ ル ]し よ う 使用できるエディション: astah* professional 以下は、OMG から提供されている SysML1.1 仕様書の要求図のサンプルです。 [組み込み系サンプル]で自動車の舗道摩擦まわりの要求を表したものです。 引用:OMG SysML1.1 仕様書 P152 http://www.omg.org/spec/SysML/1.1/changebar/PDF/ 84 / 153 astah* チュートリアル これと同等のモデルを書いてみます。 要求のモデルや、要求図と要求テーブルのそれぞれで表現できますが、ここではまず要求図を作成してみましょう。 まず、図メニューから“要求図”を選択し、要求図を作成します。 エディタのボタンから“要求”作成ボタンをクリックし、図上に要求を作成します。要求名、要求の ID を入力しま す。Text の項目には、その要求の説明を入力します。(astah*では、ID と Text の順序が例と異なります) 85 / 153 astah* チュートリアル 同様に他の要求についても作成します。次に、要求間の関係を作成してみましょう。 要求間の導出関係とネスト関係を、それぞれ、ツールバーのボタンを押して、作成します。 ネスト関係については、作成時に、親子関係が変わることを、構造ツリーで確認できると思います。 ここまでで、例の要求図が完成しました。図だと要求間の関係を一目で把握できますね。 86 / 153 astah* チュートリアル これらの要求と分析・設計モデルとの関係も定義してみましょう。具体的な例ではないですが、もし UsecaseA が Pavement friction を満足する関係があり、TestCaseA が、Pavement friction を検証する関係である場合は、次のよ うに図上で表現することもできます。ユースケースやクラスを構造ツリーから図にドラッグアンドドロップして配 置しています。 また、下の図のようにパッケージを指定して、要求テーブルを作成することもできます。 87 / 153 astah* チュートリアル 要求図を書く時に作成されたモデルから、次のような要求テーブルが作成されます。要求テーブルは、ネームスペ ース毎に一つ作成可能で、その配下に存在する要求が自動的にリストに表示されるようになっています。 要求図と要求テーブルでは同一のモデルが利用されますので、一方で変更すればもう一方にも反映されます。また、 それぞれのポップアップメニューから、図やテーブルに相互にジャンプ可能になっています。 さて、同等のモデルをはじめから要求テーブルを使用して作成する場合を見てみましょう。次のような手順になり ます。 まず、図メニューから”要求テーブル”を選択し、要求テーブルを作成します。 要求テーブルを右クリックしてポップアップメニューから”要求の追加”で Adhesion utilization, Vehicle conditions, Test and procedure conditions, Pavement friction, ASTM R1337-90 の要求を追加していきます。 88 / 153 astah* チュートリアル 要求テーブルからは ID、名前、テキストの編集のほかに、要求を選択し、以下の操作も可能です。 ・子要求の追加 ・兄弟要求の追加 ・依存元の設定 ・ユースケースへの変換 Vehicle conditions は Adhesion utilization とネスト関係がありますので、ポップアップメニューから”子要求の追加” から追加します。Test and procedure conditions も同様です。 また、Test and procedure conditions から Pavement friction、Pavement friction から ASTM R1337-90 へ導出 <<deriveRept>>でつながっていますので、ポップアップメニューから”依存先の設定”から追加します。(“依存元の 設定”でも可能です。) ちなみに、導出<<deriveRept>>とは、要件から別の要件が導き出される関係のことです。 89 / 153 astah* チュートリアル 以下が作成したモデルです。 要求テーブルと要求図の両方を使って、それぞれの利点を活かすといいですね。 要 求 図 と 要 求 テ ー ブ ル を 使 用 し て 要 求 を モ デ リ ン グ [WEB 系 サ ン プ ル ]し よ う 使用できるエディション: astah* professional ここでは、ストーリー仕立てで要求モデリングしていきたいと思います。 「登場人物」 プロジェクトマネージャー A さん 営業 X さん 開発リーダー B さん 要求開発リーダー R さん プロジェクトマネージャーである A さんは、営業 X さんと取引先に新案件の打ち合わせに行きました。 A さんは、いつものように PC を起動しマインドマップでヒアリングを開始しました。 90 / 153 astah* チュートリアル どうやらいつもの WEB アプリケーションのようです。顧客はいつもおざなりになりがちな非機能要件周り、レス ポンスやセキュリティ、障害対策について注意してほしいとのことでした。機能要件については、ログイン程度簡 単なものにとどまり、打ち合わせも無事終了しました。作成したマインドマップは以下です。 プロジェクトマネージャーA さんは、会社に戻り、さっそく以下のようなユースケースを書いてみました。 91 / 153 astah* チュートリアル その後、プロジェクトマネージャーA さんはヒアリングした要求を機能要件、非機能要件もまとめて、要求の機能 をまとめてみることにしました。頭のなかに浮かんだのは以下のモデルです。 プロジェクトマネージャーA さんは要求テーブルからネスト関係を考慮しながら、要求を入力していきました。 92 / 153 astah* チュートリアル 次に要求間の依存関係を設定していきます。 先ほど軽く、ユースケース分析をしていました。ユースケースの"ログインする"の詳細は、要求の"ログインボタン "にあたります。このように機能要件のユースケースから機能要件の要求に対して詳細化するという意味合いの洗練 <<refine>>を引くことができます。このように既存の UML のダイアグラムと関連し合っているため、この様に可 視化することにより、仕様の共有化に一役買うことにもなるでしょう。操作方法は、要求テーブル上で依存を張り たい要求を選択し、ポップアップメニューから”依存先の設定”から追加します。(“依存元の設定”でも可能です。) また、プロジェクトマネージャーA さんは顧客からログイン時のレスポンスやセキュリティの要求に注意するよう に言われていたのを思い出しました。非機能要件を満たせないと顧客から信頼をなくしかねません。 機能要件の要求"ログインボタン"は、非機能要件の要求"レスポンス要求"、"セキュリティ要求"を導き出しています。 同様に機能要件の要求"正常遷移"から機能要件の要求" XX 画面要求"へも同様です。 このように、導出<<deriveRept>>とは、要件から別の要件が導き出される関係のことを表します。 操作方法は、要求テーブル上で依存を張りたい要求を選択し、ポップアップメニューから”依存先の設定”から追加 します。(“依存元の設定”でも可能です。) 次にテストケースについて考えています。 テストケースは、astah*内でもモデルとして生成できます。実際のそのテストケースの内容ですが、自動テストに するか EXCEL でテスト仕様書を書くのか現段階では決まっていませんが、ここは顧客・メンバと話し合うため、 成果物は何にするかは、懸案事項として置いておくとします。 93 / 153 astah* チュートリアル ただ、自動テストならソースや結果のドキュメント、テスト仕様書なら、ドキュメントへ、シナリオならフローチ ャートやアクティビティ図へのハイパーリンクを張るのか、またはテストケースの定義に書くのかなど、事前にプ ロジェクトで話し合ってよりよい合意をとったほうがよさそうです。 プロジェクトマネージャーA さんは、この点をメモしておき、開発リーダーB さんにテストケースの設計を指示し ました。開発リーダーB さんは、まずネスト関係に注意しながら、テストケースを設計し始めました。 また、テストケースと要求間では、検証<<verify>>といって要求を満たすことをテストケースで検証するための依 存関係をはることができます。開発リーダーB さんは、プロジェクトマネージャーA さんが作ったモデルを自分の モデルにマージし、検証関係を張っていきました。出来上がったモデルは、以下でした。 94 / 153 astah* チュートリアル その後は、プロジェクトマネージャーA さんは要求開発リーダーの R さんに要求の詳細化を依頼しました。 要求開発リーダーR さんは、自身を中心に、要求開発グループで展開させるために、要求テーブルを EXCEL で出 力してチーム内の共有を開始しました。[ツール]-[要求]-[要求テーブルを Excel ファイルに出力]で出力できます。 95 / 153 astah* チュートリアル 出力ダイアログが表示されます。 出力された Excel は以下の通りです。 要求テーブルを Excel 形式で受け取った要求開発チームは、要求の階層化と要求テーブルの書式やルール決めを行 い、要求をつめていきました。詳細化された Excel ファイルをプロジェクトマネージャーA さんが持つプロジェク トファイルに、Excel 入力の機能を使用し、反映しました。 [ツール]-[要求]-[要求テーブルを Excel ファイルに入力]で行います。 96 / 153 astah* チュートリアル 要求テーブルの入力時には、まず ID が同じ要求を同一の要求とし、次に名前が等しい要求を同一の要求として更新 します。 要求が固まってきたところで、プロジェクトマネージャーA さんは、要求開発リーダーR さんとレビューを繰り返 し、要求を具体化していきました。その後、明確化された要求を元に開発リーダーB さん中心に実装とテストケー スを作成していきました。 [要求の機能のポイント] SysML では主に組み込み系を想定ターゲットとしていますが、それ以外のソフトウェア分野にも汎用的に利用 できるものです。忘れられがちな非機能要件について初期の段階から強く意識できることなども要求モデリ ングの魅力の一つです。 また、astah で要求モデルを扱う利点は、要求間の関係を図示しやすいことと、要求とモデルの間の関係につ いても管理しやすくなることです。 97 / 153 astah* チュートリアル 言語サポート機能を使ってみよう 使用できるエディション: astah* professional、astah* UML astah*では、基本的によく使用される基本的な言語 Java、C++、C#に対応されています。 JAVA 使用できるエディション: astah* professional、astah* UML JAVA 基 本 機 能 プロジェクトの言語設定をしてみよう プロジェクトの言語設定は、プロパティビュー、または、システムプロパティで設定します。 プロジェクトのプロパティビュー[プロジェクトの設定]タブ [ツール]-[システムプロパティ]-[ファイル]-[プロジェクトの新規作成時の言語]-[Java] JAVA 言語固有の設定をしてみよう クラス、属性、操作の[言語]タブ(プロパティビュー)で、Java 言語固有の設定が可能です。 [クラス] [属性] 98 / 153 astah* チュートリアル 99 / 153 astah* チュートリアル JAVA のデフォルトモデルを使ってみよう astah* professional インストールフォルダ¥ template¥project¥ Java1.4.asta astah* professional インストールフォルダ¥ template¥project¥ Java5.asta システムプロパティでデフォルトモデルを設定していない場合は、[ファイル]-[テンプレートからプロジェクトの新 規作成]-[ Java1.4.asta]または[Java5.asta]を選択します。 以下のような内容です。 [Java5.asta] [Java1.4.asta] またシステムプロパティで新規プロジェクト作成時のデフォルトモデルの設定もできます。 100 / 153 astah* チュートリアル JAVA ス ケ ル ト ン コ ー ド を 作 成 し て み よ う 作成したモデルから Java のスケルトンコードを出力できます。 インストールフォルダ配下の Sample.asta を開いて出力してみましょう。 メインメニューの[ツール] - [Java] - [Java スケルトンコードの作成]を選択します。 101 / 153 astah* チュートリアル Class パッケージの直下のソースを出力してみます。 以下のように出力されましたね。 Monitor.java を開いてみます。 102 / 153 astah* チュートリアル 正しく出力されていることがわかりますね。 JAVA ソ ー ス コ ー ド の 読 み 込 み を し て み よ う 今度はプロジェクトを新規作成し、前章で出力したソースをリバースしてみます。 (1) プロジェクトを開き(または、新規作成し)、メインメニューの[ツール] - [Java ソースコードの読み込み] を選 択します。 (2) Java ファイル選択ダイアログで、Java のファイルを選択します。 (3) Java のソースコードよりパッケージやクラスのモデルを生成します。 リバース時には関連にしたい属性を指定することもできます。 以下のダイアログで Close ボタンをクリックすると終了です。 103 / 153 astah* チュートリアル 以下のようにリバースされました。 (4)リバースしただけではクラス図は作成されませんので、生成したモデルからクラス図を自動作成します。 構造ツリーのプロジェクトのポップアップメニューより以下のメニューを選択します。 104 / 153 astah* チュートリアル - [クラス図を自動作成する] - [詳細クラス図を自動作成する] 以下のようにクラス図が自動生成されました。 105 / 153 astah* チュートリアル C++ 使用できるエディション: astah* professional、astah* UML C++基 本 機 能 プロジェクトの言語設定をしてみよう プロジェクトの言語設定は、プロパティビュー、または、システムプロパティで設定します。 プロジェクトのプロパティビュー[プロジェクトの設定]タブ [ツール]-[システムプロパティ]-[ファイル]-[プロジェクトの新規作成時の言語]-[C++] C++言語固有の設定をしてみよう クラス、属性、操作の[言語]タブ(プロパティビュー)で、C++言語固有の設定が可能です。 [クラス] [属性] [操作] 106 / 153 astah* チュートリアル C++用のデフォルトモデルを使ってみよう astah* professional インストールフォルダ¥ template¥project¥ C++.asta システムプロパティでデフォルトモデルを設定していない場合は、[ファイル]-[テンプレートからプロジェクトの新 規作成]-[ C++.asta]を選択します。 以下のような内容です。 またシステムプロパティで新規プロジェクト作成時のデフォルトモデルの設定もできます。 107 / 153 astah* チュートリアル 型修飾子(*、&等、ポインタ情報)を使ってみよう プロパティビューより型修飾子を入力できます。型修飾子はダイアグラムエディタ上でクラスや属性等の図要素 に表示されます。HTML 出力や RTF 出力にも対応しています。 C++ プリミティブ型の対応 108 / 153 astah* チュートリアル 各プリミティブ型に対応しています。 bool / char / signed char / unsigned char / short / unsigned short / short int / signed short int / unsigned short int / int / signed int / unsigned int / long / unsigned long / long int / signed long int / unsigned long int / float / double / long double / wchar_t C++ス ケ ル ト ン コ ー ド を 作 成 を し て み よ う 使用できるエディション: astah* professional、astah* UML インストールフォルダ配下の Sample.asta を開いて、プロジェクトのプロパティビューの"プロジェクトの設定"で C++を ON にします。 以下の MSG ではいを選択します。 メインメニューの[ツール] - [C++] - [C++スケルトンコードの作成]を選択します。 109 / 153 astah* チュートリアル Class パッケージの直下のソースを出力してみます。 またオプションに次があります。 以下のようにヘッダーファイル、ソースファイルともに、出力されましたね。 110 / 153 astah* チュートリアル Monitor.h を開いてみます。 Monitor.cpp を開いてみます。 111 / 153 astah* チュートリアル 正しく出力されていることがわかりますね。 112 / 153 astah* チュートリアル C++リ バ ー ス を し て み よ う ( サ ン プ ル 、 サ ポ ー ト 対 象 外 ) 使用できる製品: astah* professional [使用方法] 詳しい使用法は astah* C++リバース利用ガイドをご参照ください。 astah* professional インストールフォルダ¥api¥sample¥sample_doxygen_c_plus¥sample_doxygen_c_plus.html [イメージ] Doxygen ソース リバースツール XML *.asta [Doxygen を利用してリバース] [C++のスケルトンコードを作成]の章で出力したソースを Doxygen を使用し、XML に変換します。 113 / 153 astah* チュートリアル 読み込みソースパス配下のファイルがすべて対象な時には RECUSIVE のチェックが必要なので、注意してくださ い。また、ソースのエンコードもファイルのエンコードと揃えてください。 また、ヘッダーファイルのパスも追加するのも重要です。 [Doxygen の設定ポイント] 特に以下に注意してください。 ・[Expert]-[Input]-[RECURSIVE] ・[Expert]-[Input]-[INPUT_ENCORDING] ・[Expert]-[Preprocessor]-[INCLUDE PATH] 以下のように出力されました。 114 / 153 astah* チュートリアル これを API サンプルを経由してプロジェクトを作成します。作成した結果を開いてみます。 115 / 153 astah* チュートリアル この時点ではクラス図がないため、クラス図を自動生成してみます。 次のようにクラス図が自動生成されました。 116 / 153 astah* チュートリアル リバース前のクラス図と比較するため、移動と色付けをします。 これがフォワード前のモデルです。 117 / 153 astah* チュートリアル 比較するとグローバルな Global クラスがあります。これは C++では、クラスに属さないメソッド等が生成される ため、リバース時に各名前空間に Global クラスが生成されます。 また、Tracer クラスと Engine クラス 、Tracer クラスと Steering クラス、Tracer クラスと Monitor クラス、Tracer クラスと State クラスの関連がありませんが、その代わり、Tracer クラスには、属性として、Engine クラス、Steering クラス、Monitor クラス、State クラスを持ち、逆参照も付加されます。UML2.0 では属性も関連もプロパティとい う概念になり、意味合いは同じです。 また、Monitor クラスと Engine クラス 、Monitor クラスと Steering クラスの関連がないこと Monitor クラスと LightSensor クラスの関連がないことも同じです。 118 / 153 astah* チュートリアル C# 使用できるエディション: astah* professional、astah* UML C#基 本 機 能 プロジェクトの言語設定をしてみよう プロジェクトの言語設定は、プロパティビュー、または、システムプロパティで設定します。 プロジェクトのプロパティビュー[プロジェクトの設定]タブ [ツール]-[システムプロパティ]-[ファイル]-[プロジェクトの新規作成時の言語]-[C#] C#言語固有の設定をしてみよう クラス、属性、操作の[言語]タブ(プロパティビュー)で、C#言語固有の設定が可能です。 [クラス] [属性] 119 / 153 astah* チュートリアル [操作] 120 / 153 astah* チュートリアル C#用のデフォルトモデルを使ってみよう astah* professional インストールフォルダ¥ template¥project¥ C_Sharp.asta システムプロパティでデフォルトモデルを設定していない場合は、[ファイル]-[テンプレートからプロジェクトの新 規作成]-[ C_Sharp.asta]を選択します。 以下のような内容です。 またシステムプロパティで新規プロジェクト作成時のデフォルトモデルを設定できます。 121 / 153 astah* チュートリアル C# プリミティブ型の対応 各プリミティブ型に対応しています。 bool / byte / char / decimal / double / float / int / long / object / sbyte / short / string / uint / ulong / ushort C#ス ケ ル ト ン コ ー ド を 作 成 し て み よ う 使用できるエディション: astah* professional、astah* UML インストールフォルダ配下の Sample.asta を開いて、プロジェクトのプロパティビューの"プロジェクトの設定"で C#を ON にします。 以下の MSG ではいを選択します。 122 / 153 astah* チュートリアル メインメニューの[ツール] - [C#] - [C#スケルトンコードの作成]を選択します。 Class パッケージの直下のソースを出力してみます。 またオプションに次があります。 123 / 153 astah* チュートリアル 以下のように出力されましたね。 Monitor.cs を開いてみます。 正しく出力されていることがわかりますね。 124 / 153 astah* チュートリアル C#リ バ ー ス を し て み よ う ( サ ン プ ル 、 サ ポ ー ト 対 象 外 ) 使用できる製品: astah* professional [使用方法] 詳しい使用法は astah* C#リバース 利用ガイドをご参照ください。 astah* professional インストールフォルダ¥api¥sample¥sample_doxygen_c_sharp¥sample_doxygen_c_sharp.html [使用イメージ] Doxygen ソース リバースツール XML *.asta [Doxygen を利用してリバース] [C#のスケルトンコードを作成]の章で出力したソースを Doxygen を使用し、XML に変換します。 読み込みソースパス配下のファイルがすべて対象な時には RECUSIVE のチェックが必要なので、注意してくださ い。また、ソースのエンコードもファイルのエンコードと揃えてください。 125 / 153 astah* チュートリアル 以下のように出力されました。 126 / 153 astah* チュートリアル これを API サンプルを経由してプロジェクトを作成します。 作成した結果を開いてみます。 127 / 153 astah* チュートリアル この時点ではクラス図がないため、クラス図を自動生成してみます。 次のようにクラス図が自動生成されました。 128 / 153 astah* チュートリアル リバース前のクラス図と比較するため、移動と色付けをします。 これがフォワード前のモデルです。 129 / 153 astah* チュートリアル Tracer クラスと Engine クラス 、Tracer クラスと Steering クラス、Tracer クラスと Monitor クラス、Tracer クラ スと State クラスの関連がありませんが、その代わり、Tracer クラスには、属性として、Engine クラス、Steering クラス、Monitor クラス、State クラスを持ち、逆参照も付加されます。UML2.0 では属性も関連もプロパティとい う概念になり、意味合いは同じです。 また、Monitor クラスと Engine クラス 、Monitor クラスと Steering クラスの関連がないこと、Monitor クラスと LightSensor クラスの関連がないことも同じです。 130 / 153 astah* チュートリアル 構造化分析しよう 構造化分析とは 構造化分析(Structured Analysis)は、トム・デマルコによって考案され、1970 年代後半から普及した要求を階層的 に設計していく分析手法です。構造化分析では、データフロー図(DFD)、データディクショナリ、ミニ仕様書と いったツールを利用します。 ツール 概要 astah*での対応 データフロー図(DFD) データの流れを表現する図 デマルコ式/ゲイン・サーソン式で編集可能。 外部エンティティ、プロセス、データスト ア、アンカー、データフローが表現可能。 データディクショナリ システムのデータのディクショナリ(辞 astah*では未対応。 書)で、データフローの詳細な構成内容を 記載するもの ミニ仕様書 プロセスにつき1つ、プロセスの基本機 astah*では未対応ですが、 能について記述する仕様書のこと Excel で作成し、ハイパーリンクを張るなど という対応も可能。 参考書籍: 『構造化分析とシステム仕様』 日経 BP 出版センター トム・デマルコ著 実際には、これだけでは多種多様なデータを扱うには適さず、大規模な開発ではむしろデータを中心に据えたオブ ジェクト指向に関心が移る事となった。しかし部分部分の処理分割では構造化が基本であり、オブジェクト指向と 構造化プログラミングが対立しているわけではない。理想的な構造化プログラミングに、データの多態と継承など のオブジェクト関係性を扱う能力を持たせると、ほとんどオブジェクト指向と区別がつかないものとなり、パラダ イムとしては案外に隣り合わせの関係にあることが分かる。 引用: 構造化プログラミング. (2009, 9 月 27). Wikipedia, . Retrieved 07:45, 11 月 11, 2009 from http://ja.wikipedia.org/w/index.php?title=%E6%A7%8B%E9%80%A0%E5%8C%96%E3%83%97%E3%83%AD %E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0&oldid=28206959. 131 / 153 astah* チュートリアル DFD(デ ー タ フ ロ ー 図 ) 使用できるエディション: astah* professional デモ動画:http://astah.change-vision.com/ja/movie.html#dataflow-diagram データの入出力や流れを可視化する図です。 astah* の DFD の主な機能は以下の通りです。 ・DFD 作成(外部エンティティ、プロセス、データストア、データフロー) ・デマルコ式、ゲイン・サーソン式の両記法 ・CRUD との連携(機能軸に DFD を指定) ・Excel にプロセスの階層表を出力 ・UML との連携(外部エンティティからアクターへの変換、プロセスからユースケースへの変換) ・ER 図との連携(データストアから ER エンティティに変換、データフローから ER エンティティに変換) ・マインドマップとの連携(トピックから、DFD の図要素への変換) ・外部エンティティ、データストアに別名指定 132 / 153 astah* チュートリアル DFD(デ ー タ フ ロ ー 図 )を 使 っ て み よ う インストールフォルダ配下の Sample.asta を開いて出力してみましょう。4つの DFD がありますね。 システムプロパティの[プロジェクトビュー]-[階層ツリーの表示(要再起動)]を ON にして astah*を再起動します。 左のプロジェクトビューの”階層ツリー“を表示します。 133 / 153 astah* チュートリアル これらの図は階層化されていることを意味します。 例えば、” 0. Withdrawal service of saving account[Context]”図の“Withdrawal service of saving account”プロセス を選択して、右プリックして、ポップアップメニューの“図を開く”を選択します。 (“Withdrawal service of saving account”プロセスをダブルクリックでもかまいません。) 一階層下の“00.Withdrawal service of saving account”が開かれます。 つまり、上の階層のプロセスの詳細化した図であることを意味しています。 134 / 153 astah* チュートリアル 同様に、” 00.Withdrawal service of saving account”図の“Customer Certification”プロセスを選択してダブルクリ ックします。(“Customer Certification”プロセスの右プリックして、ポップアップメニューの“図を開く”でもか まいません。) 一階層下の“1. Customer Certification”が開かれます。 135 / 153 astah* チュートリアル また、一階層上の図” 00.Withdrawal service of saving account”に戻り “Confirm Balance”プロセスを選択して、右プリックして、ポップアップメニューの“データフロー図(DFD)を 作成する”を選択します。(“Confirm Balance”プロセスをダブルクリックでもかまいません。) 以下のように、階層化関係を持つ新しい DFD が作成されました。 136 / 153 astah* チュートリアル このように階層構造を意識しならがモデリングできるような仕組みになっています。 [データフロー図(DFD)作成ポイント] 階層関係を意識しながらモデリングすることが重要です。 137 / 153 astah* チュートリアル フローチャートを使ってみよう 使用できるエディション: astah* professional デモ動画:http://astah.change-vision.com/ja/movie.html#flowchart astah* のフローチャートの主な機能は以下の通りです。 ・フローチャート作成 ・フローチャートのテンプレート ・図要素のパレットを利用した作図 ・フロー記号のテンプレート ・フロー要素からユースケースの作成 ・レーンからアクターの作成 インストールフォルダ配下の Sample.asta を開いて出力してみましょう。 画面左にフロー記号パレットが表示されていますね。 このようにデフォルトでサーバーや端末のようなアイコンでフローチャートを書けるようになっています。 また、産能式(産能大式事務工程分析図表の記号)と呼ばれるものにも対応しています。 138 / 153 astah* チュートリアル また、フロー記号パレットを作成できます。 [ツール]-[テンプレートの設定]-[フロー記号]を選択し、追加ボタンをクリックします。 設定ファイルを保存する場所を選択します。 139 / 153 astah* チュートリアル “フロー記号点テンプレートの設定”ダイアログに戻ります。 編集ボタンをクリックします。” フロー記号点テンプレートの編集”ダイアログが表示されます。 追加ボタンをクリックします。 使用するイメージを選択し、開くボタンをクリックします。 140 / 153 astah* チュートリアル アイコンが追加されました。 了解ボタンをクリックして、メイン画面に戻ります。フロー記号パレットに新しいタブと追加したアイコンが追加 され、フローチャートの編集に使用できるようになります。 141 / 153 astah* チュートリアル トレーサビリティマップを使ってみよう 使用できるエディション: astah* professional デモ動画:http://astah.change-vision.com/ja/movie.html#traceability-map astah* では、選択したモデルがどの図で使用されているか、どのモデルに関連しているかというような、モデルの 影響範囲を可視化するトレーサビリティマップを用意しました。モデルのトレーサビリティ(追跡可能性)を把握 でき、スムーズなモデリングをサポートします。 インストールフォルダ配下の Sample.asta を開いて出力してみましょう。 この図の Tracer クラスについてどのモデルで参照されているか見てみましょう。 構造ツリーで Tracer クラスを選択し、“トレーサビリティマップを開く”を選択します。 以下のようなトレーサビリティマップが作成されました。 142 / 153 astah* チュートリアル 依存先と依存元描画している図などがグラフィヵルに表示されます。 モデル設計がパッケージをまたいで多数の個所から参照されているときなどに有効です。 トレーサビリティマップで、どこまでたどって依存関係を表示するかは、システムプロパティや図のプロパティで 変更可能です(ver.6.1 より)。複雑なモデルの場合、表示する階層を大きくすると時間がかかることがあるのでご 注意ください。 143 / 153 astah* チュートリアル 納品資料としてのドキュメントを作成してみよう RTF 出 力 し て み よ う 使用できるエディション: astah* professional、astah* UML、astah* think! デモ動画:http://astah.change-vision.com/ja/movie.html#rtf-export パッケージ、クラス、ユースケースの一覧、各図のイメージ、クラスの詳細(属性、操作)といったプロジェクト の詳細なドキュメントを リッチテキスト形式で作成します。 オプションで詳細なカスタマイズも可能で、納品ド キュメントの作成などにも便利です。 例えば、java ソースコードを読みこんだプロジェクトをドキュメントに出力し、各クラスの概要を把握するといっ た利用ができます。 インストールフォルダ配下の Sample.asta を開いて出力してみましょう。 ファイルを開き、[ツール]-[RTF ドキュメント作成]を実行します。 次のようなダイアログが表示されます。 “オプション”ボタンをクリックします。出力用の様々な設定ができるようになっています。 144 / 153 astah* チュートリアル では出力してみます。 納品用の資料やレビュー用にぜひご利用ください。 145 / 153 astah* チュートリアル HTML 出 力 し て み よ う 使用できるエディション: astah* professional、astah* UML 作成したモデルををブラウザで閲覧できる HTML 形式で出力します。 y Javadoc 形式で、HTML ドキュメントを出力 y 図の出力が可能 y 図上のクラスのリンクから、クラスの詳細を参照可能 インストールフォルダ配下の Sample.asta を開いて出力してみましょう。 ファイルを開き、[ツール]-[HTML 作成(javadoc)]を実行します。 出力先のディレクトリを選択します。 出力が終わると次のような MSG が表示されます。 146 / 153 astah* チュートリアル “はい”を選択して結果を開いてみます。 左上に”All Diagrams”というフレームが出力されますが、ここには、プロジェクトに含まれる図イメージが出力され ます。 147 / 153 astah* チュートリアル この出力は、[システムプロパティ]-[ファイル]-[HTML 作成時に図の情報を出力する] が ON のときに出力されます。 “All Diagrams”の”Class Digram”のリンクをクリックしてみます。 148 / 153 astah* チュートリアル 図の”Tracer”をクリックしてみます。 “Tracer”クラスの詳細に遷移しましたね。 例えば、完成された API 群をプロジェクト内部で仕様を展開するときなどに、作成しておくと便利ですね。 149 / 153 astah* チュートリアル 便利な機能を使ってみよう 図上でマウスを使ってスクロール 使用できるエディション: astah* professional、astah* UML、astah* think!、astah* community 図上で右クリックしながらマウスを移動させると、画面がスクロールします。大きな図を編集するときに重宝しま す。また、Ctrl を押しながらマウスホィールを動かすと図を拡大・縮小できます。 編 集 を 取 り 消 す (UNDO) 使用できるエディション: astah* professional、astah* UML、astah* think!、astah* community astah*はしっかりした Undo(編集の取り消し)、Redo(編集のやり直し)機構を持っていて、 100 回前の編集ま で取り消すことが可能です。この回数はシステムプロパティから変更できます。 [ツール]-[システムプロパティ]-[その他]-[編集の取り消しの最大回数] モデルから図へのジャンプ 使用できるエディション: astah* professional、astah* UML、astah* think! デモ動画:http://astah.change-vision.com/ja/movie.html#model-to-diagram 大きなモデルの設計中は、構造ツリー上のどのモデルがどの図に書かれているか分かりにくくなりがちです。 astah*では、構造ツリーのポップアップメニュー[図要素へジャンプ]から参照されている図へジャンプできます。 150 / 153 astah* チュートリアル 図からツリーへのジャンプ 使用できるエディション: astah* professional、astah* UML、astah* think! デモ動画:http://astah.change-vision.com/ja/movie.html#model-to-diagram 大きなモデルの設計中は、図に書かれているモデルが構造ツリー上のどのモデルに該当するのかが分かりにくくな りがちです。astah*では、図のポップアップメニュー[構造ツリー上のモデルへジャンプ]から、構造ツリーの元のモ デルにジャンプできます。 151 / 153 astah* チュートリアル 152 / 153 API を 使 っ て み よ う astah*では API も用意されており、プロジェクトファイルの内容を他のアプリケーションからも利用できます。 また以下の各種ドキュメントも参考にしてください。 [API 概要、XMI 入出力] http://astah.change-vision.com/ja/astah-api.html [API 利用ガイド] astah*インストールフォルダ¥api¥doc¥index.html [API の JavaDoc] http://members.change-vision.com/javadoc/astah-api/6_0/api/ja/doc/javadoc/index.html astah*インストールフォルダ¥api¥doc¥ javadoc¥index.html [分析設計モデルをわがままに活用しよう JUDE API 入門 ] http://codezine.jp/article/detail/3165 モ デ ル 参 照 API 使用できるエディション: astah* professional、astah* UML、astah* community モ デ ル 編 集 API 使用できるエディション: astah* professional、astah* UML 図 要 素 参 照 API 使用できるエディション: astah* professional、astah* UML 図 要 素 編 集 API 使用できるエディション: astah* professional、astah* UML API の サ ン プ ル 使用できるエディション: astah* professional、astah* UML、astah* community astah* インストールフォルダ¥ api¥sample 配下にいくつかのサンプルがありますので参考にしてください。 153 / 153
© Copyright 2024 Paperzz