Fillomino Player Architecture / System Analysis

要求分析の成果物

要求分析で、最も高い優先度をつけた アクター・ユースケースリスト及び ユースケース図を再掲する。

アクター・ユースケースリスト
アクターユースケース概要
ユーザー表示の更新 盤面の変更箇所を画面に反映させる。
単一区画の選択 現在選択されている箇所とは違う箇所を選択する。
数字の入力 現在選択されている範囲に数字を入力する。

図:ユースケース図(再掲)
図:ユースケース図(再掲)

ユースケースの実現

作成された一連のユースケースを実現する分析オブジェクトを各ユースケースに割り当てる。 この後行う、ロバストネス分析を考慮して、Boundary / Control / Entityの3種類の分析オブジェクトを考える。 また必要に応じてValueタイプの分析オブジェクトも考える。 以下の図は、実際に分析オブジェクトを割り当てたものである(図:ユースケースの実現)。

図:ユースケースの実現
図:ユースケースの実現

Entityオブジェクトである、盤面情報の管理はすべてのユースケースに参加している。 「単一区画の選択」と「数字の入力」はどちらもユーザーの入力をトリガーとしたアクションであるので、 Boundary入力IF、及びControl盤面状態の更新は「単一区画の選択」と「数字の入力」の二つのユースケースに参加している。 また入力情報を保持するため、さらにValue選択した位置を参加させた。 「問題のロード」はBoundary / Contorol / Entityに加えて、Value選択した問題を参加させている。

分析オブジェクト間のコラボレーション

次に、抽出した分析オブジェクトを使用して、ユースケースのフローを満たすコラボレーションを考える。 コラボレーションの構築はロバストネス分析により行った。 また、今後、オブジェクトが増加したときに全体を把握しやすくするよう、この時点でレイヤー分けも行った (図:ロバストネス図)。

図:ロバストネス図
図:ロバストネス図

レイヤーはView / Controller / Modelの3階層でまとめた。 また入力IFは盤面選択か数字入力のどちらであるかが分かるよう、トリガー条件を挟んでいる。 すべてのユーザーのアクションは、最終的に表示の反映という形で返っている。

分析オブジェクトの責務の抽出

次に、ユースケースのフローを参考に、分析オブジェクト間のコラボレーションとしてやり取りされる責務を抽出する。

ユースケース:表示の更新の動的側面

図:シーケンス図ーメインフロー
図:シーケンス図ーメインフロー

図:シーケンス図ーダメージによる再描画
図:シーケンス図ーダメージによる再描画

ユースケース:単一区画の選択

代替フローの2-a, 2-b-bはほかの選択に関するユースケースにかかわっているので、 次回以降のシステム分析で、あわせて責務の抽出を行う。

図:シーケンス図ーメインフロー
図:シーケンス図ーメインフロー

図:シーケンス図ーアクティブポジションを選択
図:シーケンス図ーアクティブポジションを選択

ユースケース:数字の入力

図:シーケンス図ーメインフロー
図:シーケンス図ーメインフロー

図:シーケンス図ー同じ数字の入力
図:シーケンス図ー同じ数字の入力

図:シーケンス図ー大きすぎる数字の入力
図:シーケンス図ー大きすぎる数字の入力

ユースケース:問題のロード

図:シーケンス図ーメインフロー
図:シーケンス図ーメインフロー

図:シーケンス図ー同一サイズの問題のロード
図:シーケンス図ー同一サイズの問題のロード

抽出した分析オブジェクトとその責務

システム分析のまとめとして、抽出した分析オブジェクトとその責務を一覧する。 ここで、スコープとは、指定された責務が外部から呼ばれることを目的とする場合はExtrinsic、 内部の状態繊維のためだけに呼ばれる事を目的とする場合Intrinsicとしている。

View Layer:表示更新IF
Stereo TypeBoundary
Collaboration画面の表示
責務スコープ説明
表示更新依頼Extrinsic 盤面の状態変更を画面に反映させるよう依頼する。
描画内容の反映Intrinsic 描画結果を画面に反映させる。
View Layer:画面の表示
Stereo TypeControl
Collaboration盤面情報の管理
責務スコープ説明
描画依頼Extrinsic 盤面の状態変更を反映させるよう依頼する。
描画Intrinsic 盤面の状態変更を描画する。
状態に応じた描画Intrinsic 盤面の状態に応じて描画する。
View Layer:入力IF
Stereo TypeBoundary
Collaboration盤面状態の更新
責務スコープ説明
盤面の選択Extrinsic 盤面の特定領域を選択する。
数字の入力Extrinsic 選択された箇所に数字を入力する。
View Layer:読み込みIF
Stereo TypeBoundary
Collaboration問題読み込
責務スコープ説明
読み込み依頼Extrinsic 指定された問題を読み込むよう依頼する。
Controller Layer:盤面状態の更新
Stereo TypeControl
Collaboration盤面情報の管理
責務スコープ説明
選択箇所の変更Extrinsic ユーザーが選択した箇所を送信する。
数字入力を通知Extrinsic ユーザーが入力した数字を通知する。
アクティブポジションの変更Intrinsic アクティブポジションを最新情報に更新する。
同位置選択かチェックIntrinsic アクティブポジションと同じ位置を選択したかどうかをチェックする。
同じ状態かチェックIntrinsic 入力した状態が現在の状態と同じかどうかチェックする。
Controller Layer:問題読み込み
Stereo TypeControl
Collaboration盤面情報の管理
責務スコープ説明
問題をセットExtrinsic 指定された問題を読み込み、盤面に反映させる。
Model Layer:盤面情報の管理
Stereo TypeEntity
Collaboration--
責務スコープ説明
変更位置の取得Extrinsic ユーザーの入力によって変更した位置を取得する。
指定位置の状態の取得Extrinsic 指定された盤面の位置の状態を取得する。
盤面の構築Extrinsic 指定されたサイズの盤面を構築する。
問題をセットExtrinsic 指定された問題を読み込み、盤面に反映させる。
盤面状態の更新Extrinsic ユーザーの入力よる状態変化を盤面に反映させる。
変更集合のリセットExtrinsic 変更集合を空にする。

prev : [要求分析] up : [目次] next : [システム設計]


© 2003, Kazuhiko TAMURA All rights reserved.

[W3C validator]