18
株式会社チェンジビジョン 使用バージョン:astah* 6.0, 6.1 astah* チュートリアル [第 5 章 チーム開発してみよう] 目次 チーム開発してみよう 2 マージ機能ってどんな機能? 2 まず簡単マージを使ってみよう 3 参照プロジェクト管理ってどんな機能? 12 参照プロジェクト管理を使ってみよう 13

astah* チュートリアル...astah* チュートリアル 第5 章 チーム開発してみよう 2 / 18 チーム開発してみよう モデリングにも今やチーム開発は必須の機能です。

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

株式会社チェンジビジョン

使用バージョン:astah* 6.0, 6.1

astah* チュートリアル [第 5 章 チーム開発してみよう]

目次

チーム開発してみよう 2 マージ機能ってどんな機能? 2 まず簡単マージを使ってみよう 3

参照プロジェクト管理ってどんな機能? 12 参照プロジェクト管理を使ってみよう 13

astah* チュートリアル 第 5 章 チーム開発してみよう

2 / 18

チーム開発してみよう

モデリングにも今やチーム開発は必須の機能です。

astah*に用意されている二つのチーム開発の補助機能を紹介します。

マージ機能ってどんな機能?

使用できるエディション: astah* professional、astah* UML、astah* think!

デモ動画:http://astah.change-vision.com/ja/movie.html#merge

現在のプロジェクトに別のプロジェクトをマージできます。他の人が作成したプロジェクトを、自分のプロジェク

トにマージしたい時に使います。簡単マージ、モデルごとに作業中・取込中のどちらを優先するか選択可能な詳細

マージ(pro、UML のみ)があります。

[用途]

・二つのプロジェクトファイルを一つにまとめる。

・同一プロジェクトの編集(二人がそれぞれ編集した同一 astah*ファイルの変更点を合わせられる。)

[使用イメージ]

astah* チュートリアル 第 5 章 チーム開発してみよう

3 / 18

まず簡単マージを使ってみよう

コンフリクトがないケース 以下のようなプロジェクトを新規作成してみます。ファイル名は base.asta とします。

以下のようなプロジェクトも新規作成してみます。

(新規作成することで base プロジェクトのモデルの内部 ID と同一になることがありません。)

ファイル名は ref.asta です。

astah* チュートリアル 第 5 章 チーム開発してみよう

4 / 18

base.asta を開き、[ファイル]-[プロジェクトをマージ]を選択し、ref.asta を選択します。

以下のようなダイアログが表示されます。

“詳細”ボタンをクリックすると、差分が表示されます。

マージの結果を細かくカスタマイズしたい場合、この画面でどっちを優先させるか選択することができます。

まずは簡単マージするので、“キャンセル”ボタンで前の画面に戻ります。

ダイアログの説明に“一方に存在する要素は全てマージします。それ以外の要素は、以下のプロジェクトの要素を

優先してマージします。”とあります。この場合のマージでは、全て一方に存在する要素にあたりますので、“作

業中のプロジェクト”を選択しても、“取り込み中のプロジェクト”を優先しても全てマージされます。ひとまず

“取り込み中のプロジェクト”を選択して“了解”ボタンをクリックします。

astah* チュートリアル 第 5 章 チーム開発してみよう

5 / 18

ref.asta のみに存在していた“ref クラス図”と“D”クラスが取り込まれました。

次は、コンフリクトがあるケースを説明します。

コンフリクト(内部 ID 衝突)あるケース 以下のようなプロジェクトを新規作成します。ファイル名は base.asta とします。

astah* チュートリアル 第 5 章 チーム開発してみよう

6 / 18

このプロジェクトを ref2.asta として保存します。

さらにこのプロジェクトの“”、“”、“”を削除し、“B”を“D”に名前変更します。

(この操作により、base プロジェクトの B クラスと ref プロジェクトの D と内部 ID が同一になります。)

base.asta 開き、[ファイル]-[プロジェクトをマージ]を選択し、ref2.asta を選択します。

以下のようなダイアログが表示されます。

astah* チュートリアル 第 5 章 チーム開発してみよう

7 / 18

“詳細”ボタンをクリックします。コンフリクトがないケースの詳細ダイアログの結果と少し異なります。

要素が異なる理由が“名前が異なっています”で、作業中の要素が“B”、取込む要素が“D”になっています。こ

れはどういうことでしょうか?

“簡単マージ“ダイアログの説明に“一方に存在する要素は全てマージします。それ以外の要素は、以下のプロジ

ェクトの要素を優先してマージします。”とあります。このケースは、作業中プロジェクト、取込み中プロジェク

トの両方に同じモデルがあり、どちらかを優先させるか決めなければならないコンフリクト(変更の衝突)です。

astah*では各モデルに内部 ID を保持しており、コンフリクトの定義は、内部 ID が同じか同じ名前空間で名前が同

じものが変更されたことを意味しています。

コンフリクトの定義: 両方のプロジェクトに、同じ名前空間(パッケージ)で同じ名前か同じ内部 ID のものが存在し、

変更されているケース。 このケースでは同じ内部 ID のコンフリクトと言えます。内部 ID は、モデルの新規作成時、例えばクラスを作成し

たときに割り振られます。また、astah*が持つ内部の ID は衝突がないことを前提としています。そのため、ID の

生成も注意して衝突しないようにしています。内部 ID は複数の人が複数のパソコンで同時に編集したモデルであっ

ても、別々になるように生成されます。

では、“簡単マージ“ダイアログで”取込み中プロジェクト”を優先でマージします。

クラス“B”が“D”になっています。

astah* チュートリアル 第 5 章 チーム開発してみよう

8 / 18

[マージ機能のポイント]

このようにマージする際は、内部の ID と名前の衝突するコンフリクトに気をつけモデリングすることで、

複雑なマージをよりスムーズにすることができます。

では、“簡単マージ“ダイアログで” 作業中プロジェクト”を優先でマージします。クラス“B”はそのままです。

コンフリクト(名前衝突)があるケース 以下のようなプロジェクトを新規作成します。ファイル名は base.asta とします。

astah* チュートリアル 第 5 章 チーム開発してみよう

9 / 18

以下のようなプロジェクトも新規作成します。

(新規作成することで base プロジェクトのモデルの内部 ID と同一になることがありません。)

ファイル名は ref3.asta です。

base.asta を開き、[ファイル]-[プロジェクトをマージ]を選択し、ref3.asta を選択します。

以下のようなダイアログが表示されます。

“詳細”ボタンをクリックします。コンフリクト(内部 ID 衝突)があるケースと異なる結果が表示されています。

astah* チュートリアル 第 5 章 チーム開発してみよう

10 / 18

要素が異なる理由が“名前が同じですが異なるモデルです”で、作業中の要素が“C”、取込む要素が“C”になっ

ています。コンフリクト(内部 ID 衝突)のあるケースと異なり、名前は同じだが内容が異なるケースです。(内部

ID も異なる。)つまり、同じ名前空間(パッケージ)で同じ名前のコンフリクトと言えます。

では、“簡単マージ“ダイアログで”取込み中プロジェクト”を優先でマージします。

クラス“C”が取込み中の“C”になっています。(ref3.asth の C クラスの定義に ref が入っています。)

では、“簡単マージ“ダイアログで” 作業中プロジェクト”を優先でマージします。クラス“C”はそのままです。

astah* チュートリアル 第 5 章 チーム開発してみよう

11 / 18

コンフリクト(内部 ID 衝突)あるケースと同様に、内部の ID と名前の衝突するコンフリクトに注意してモデリング

することで、複雑なマージをより簡単にできます。

図のマージでの注意点を押さえておこう astah*のマージでは、図に対して完全にマージする図と、図を”取込み中プロジェクト”もしくは” 作業中プロジェク

ト”から選び、一方の内容に置き換えられる図がありますので、このルールを理解したうえでマージすると、上手に

マージできるでしょう。

図名 マージルール

クラス図 マージ

ユースケース図 マージ

ステートマシン図 作業中、取込み中の一方に置換

アクティビティ図 作業中、取込み中の一方に置換

シーケンス図 作業中、取込み中の一方に置換

コミュニケーション図 作業中、取込み中の一方に置換

コンポーネント図 マージ

配置図 マージ

合成構造図 マージ

フローチャート 作業中、取込み中の一方に置換

データフロー図(DFD) 作業中、取込み中の一方に置換

ER 図 マージ

CRUD 作業中、取込み中の一方に置換

マインドマップ 作業中、取込み中の一方に置換

要求テーブル 作業中、取込み中の一方に置換

トレーサビリティマップ 作業中、取込み中の一方に置換

図のマージのルールも知っておくとスムーズにマージできます。

astah* チュートリアル 第 5 章 チーム開発してみよう

12 / 18

参照プロジェクト管理ってどんな機能?

使用できるエディション: 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

astah* チュートリアル 第 5 章 チーム開発してみよう

13 / 18

参照プロジェクト管理を使ってみよう 例えば、以下の手順でプロジェクトを分割すると、スムーズにマージできます。

(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”パッケージを作

成し、読み取り専用の”共通”モデルを使用しながら、モデリングします。

astah* チュートリアル 第 5 章 チーム開発してみよう

14 / 18

3. 場合によっては、CVS、SVN、VSS などの構成管理ツールと組み合わせると良いかもしれません。

注意点として、構成管理ツールでチェックアウトした後のファイルのタイムスタンプは、チェックアウト時の

タイムスタンプになっています。参照プロジェクト管理では、ファイルのタイムスタンプが変更されると更新

を促されます。こういうケースのために、astah*ではモデルのタイムスタンプを用意しています。astah*で保存

したときのタイムスタンプを asta ファイルの中に埋め込み、参照プロジェクトでモデルのタイムスタンプを使

用できる機構も用意されています。

astah* チュートリアル 第 5 章 チーム開発してみよう

15 / 18

[ツール]-[システムプロパティ]-[プロジェクトのマージ]-[参照プロジェクト更新時にファイルのタイムスタンプ

でなく、モデルのタイムスタンプを使う](デフォルトは OFF)

モデルのタイムスタンプは、プロジェクトのプロパティビュー”バージョン履歴“の”モデルのタイムスタンプ”

で確認できます。

また、コミットするときのコメントに、プロジェクトの簡易比較で出力されるテキストのモデルの DIFF を張

り付けてもいいかもしれません

4. メンバ内で作業中に共通部分に編集が必要になった場合は、common.asta を変更し、保存します。

編集が終われば、メンバに通知し、それぞれのファイルを開き、common.asta を更新します。

astah* チュートリアル 第 5 章 チーム開発してみよう

16 / 18

5. 最後に A さん、B さん、C さんのモデリングが確定したら、参照モデルを解除し、それぞれを a2.asta、b2.asta、

c2.asta として保存します。

astah* チュートリアル 第 5 章 チーム開発してみよう

17 / 18

最終成果物として a2.asta を fixed.asta として保存します。b2.asta、c2.asta を取込み中プロジェクト優先で簡

単マージします。

最後に、fixed.asta から common.asta を参照します。“共通“パッケージ配下が読み取り専用のアイコンが表

示されています。

これで求めるモデルを作成できましたね。

astah* チュートリアル 第 5 章 チーム開発してみよう

18 / 18

「参照プロジェクトを使用する上でのポイント」

・共通化するモデルのスコープや担当を明確にし、早期に共通モデルを FIX することが重要です。

・構成管理ツールを使用する場合は、モデルのタイムスタンプを使用しましょう。(システムプロパティで設

定)