View
1
Download
0
Category
Preview:
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 を参照します。“共通“パッケージ配下が読み取り専用のアイコンが表
示されています。
これで求めるモデルを作成できましたね。
Recommended