Fillomino Player Architecture / Requirement Analysis

ドメイン分析の成果物

ドメイン分析の結果得られた、用語辞書を以下に再掲する。

用語種類説明
ユーザーactor遊ぶ人
マウスの挙動boundary盤面の操作/変更を行う
メニュー項目/ツールバーboundary問題のロードやリセット、チェックなどの操作の入り口
問題の読みこみcontrolユーザーが指定した問題を読みこみ、盤面に反映させる。
盤面のリセットcontrol 現在までの操作をリセットし、初期状態に戻す。
解答のチェックcontrol 正解かどうかをチェックする
画面の表示control盤面の操作による変更を画面に反映させる
盤面情報の管理entity現在の盤面の状態を管理するもの
セル盤面の一区画
各セルの情報valueセルの内部情報を管理
セルの状態valueセルの現在の状態
位置情報value盤面上の位置
アクションのタイプvalueマウスクリックなどのアクションのタイプを保持
選択された位置value選択された位置やその他の入力情報を管理
選択された問題の情報valueユーザーが選択した問題
問題情報問題の初期配置

また、アクターゴールリストは以下の様に抽出された(優先度1のみ)。

アクタゴール優先度
ユーザーマウスの挙動1
問題の読みこみ1

ゴール:マウスの挙動

当初、数字をマウスでドラッグすることで、盤面を変更するような仕様にしていたが、空白の場合、キー入力を必要とし 一貫性がない。そこで、マウスアクセスは、盤面を選択するだけにし、数字はすべてキー入力することで一貫性を持つようにした。 また、盤面を選択する場合、単一区画の選択、複数領域の選択、逐次に選択領域の変更が考えられる。 これら3つの選択方法すべてはユースケース:盤面の選択から特殊化するようにした。 また、要求事項より、ラインモードでの数字入力が考えられるが、このIterationでは扱わない。

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

abstract現在選択されている箇所とは違う箇所を選択する。
generalized usecase盤面の選択
actorユーザー、システム
precondition問題が読みこまれている。
main flow
  • 1. ユーザーは盤面の変更したい箇所を選択する。
  • 2. システムはその箇所をアクティブポジションにする。
  • 3. システムは、アクティブポジションを変更集合に追加する。
  • 4. システムは「表示の更新」を実行する。
alternative flow
  • 2-a. 選択スタックが空でない場合
    • 2-a1. システムは、選択スタックを変更集合に追加する。
    • 2-a2. システムは、選択スタックを空にする。
    • 2-a4. main flow 2に進む。
  • 2-b. アクティブポジションと同じ箇所を選択
    • 2-b-a. 選択スタックが空である場合
      • 2-b-a1. このアクションを終了させる。
    • 2-b-b. 選択スタックが空ではない場合
      • 2-b-b1. システムは、選択スタックを変更集合に追加する。
      • 2-b-b2. システムは、選択スタックを空にする。
      • 2-b-b3. main flow 4へ進む
post condition直接選択した箇所が選択スタックの頂上にいる。
scenario 1
単一箇所の選択
  1. (0, 0)が選択されている。
  2. 選択スタックサイズは0。
  3. 変更集合サイズは0。
  4. ユーザーは、(0, 1)を選択した
  5. システムは、(0, 0)を変更集合に追加した。
  6. 変更集合サイズは1。
  7. システムは、(0, 1)をアクティブポジションとしてセットした。
  8. システムは、アクティブポジションを変更集合に追加した。
  9. 変更集合サイズは2。
  10. 変更箇所は(0, 0), (0, 1)である。
  11. システムは、変更を表示に反映した。
  12. 変更集合サイズは0。
  13. 選択スタックサイズは0。
scenario 2
同一箇所の選択
  1. (0, 0)が選択されている。
  2. 選択スタックサイズは0。
  3. 変更集合サイズは0。
  4. ユーザーは(0, 0)を選択した
  5. システムは、選択箇所が変化していないと判断した。

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

abstract現在選択されている範囲に数字を入力する。
actorユーザー、システム
precondition特定の領域が選択されている。
main flow
  • 1. ユーザーは、「盤面の選択」を実行する。
  • 2. ユーザーは、選択した範囲に数字を入力する。
  • 3. システムは、選択した範囲を指定した数字に変更する。
  • 4. システムは、変更集合を更新する。
  • 5. システムは、「表示の更新」を行う。
alternative flow
  • 2-a. 同じ数字を入力
    • 2-a1. システムはこのアクションを終了させる。
  • 2-b. 入力後の連続範囲が入力値より大きい
    • 2-b1. システムはこのアクションを終了させる。
post conditionなし
scenario 1
単一選択位置に入力ー成功1
  1. (0, 0)が選択されている。
  2. (0, 0)は空白である。
  3. 選択スタックサイズは0。
  4. 変更集合サイズは0。
  5. ユーザーは、現在の位置に3を入力した。
  6. システムは入力後の連続範囲を検証し、妥当であると判断した。
  7. システムは、現在の位置の状態を3に変更した。
  8. システムは、アクティブポジションを変更集合に追加した。
  9. 変更集合サイズは1。
  10. システムは、変更を表示に反映した。
  11. 変更集合サイズは0。
scenario 2
単一選択位置に入力ー成功2
  1. (0, 0)が選択されている。
  2. (0, 0)は1が入力されている。
  3. 選択スタックサイズは0。
  4. 変更集合サイズは0。
  5. ユーザーは、現在の位置に3を入力した。
  6. システムは入力後の連続範囲を検証し、妥当であると判断した。
  7. システムは、現在の位置の状態を3に変更した。
  8. システムは、アクティブポジションを変更集合に追加した。
  9. 変更集合サイズは1。
  10. システムは、変更を表示に反映した。
  11. 変更集合サイズは0。
scenario 3
同一数字を入力
  1. (0, 0)が選択されている。
  2. 選択スタックサイズは0。
  3. 変更集合サイズは0。
  4. (0, 0)は1が入力されている。
  5. ユーザーは、(0, 0)に1を入力した。
  6. システムは、ユーザーの入力が、前の状態と違いがないと判断した。
  7. 変更集合サイズは0のまま。

ゴール:問題のロード

ユーザーが指定した(選択した)問題情報をもとに盤面の状態を初期化し、画面に反映させる。 ここでは、単純に、問題情報をソースコードにハードコードすることで、問題の指定を単純化させる。 したがって、ユーザーの問題選択はこのIterationでは扱わない。

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

abstract ユーザーが指定した問題を盤面に反映させる。
actorユーザー、システム
preconditionシステムが起動している。
main flow
  • 1. システムは、盤面のサイズを更新する。
  • 2. システムは、指定された問題を盤面に反映させる。
  • 3. (0, 0)をアクティブポジションにする。
  • 3. システムは「表示の更新」を実行する。
alternative flow
  • 1-a. 前回と同じサイズの問題を読み込む場合
    • 1-a1. main flow 2へ進む。
postconditionなし
scenario 1 問題のロード(盤面サイズ変更)
  1. 現在の盤面サイズは8X10である。
  2. すべてのセルは空白状態である。
  3. アクティブポジションは(2, 1)。
  4. ユーザーが選択した問題情報は、
    • Q.1
    • 幅:5マス
    • 高さ:4マス
    • 問題:
      s 2 s s 3
      2 s s s s
      s s s s s
      4 s s s 1 (sは空白を示す)
  5. システムは5X4の盤面を作成した。
  6. システムは、全セル位置を変更集合に追加した。
  7. システムは、指定された問題を盤面に反映させた。
  8. システムは、アクティブポジション(2, 1)を変更集合に追加した。
  9. システムは、(0, 0)をアクティブポジションにした。
  10. システムは、アクティブポジション(0, 0)を変更集合に追加した。
  11. 変更箇所はすべてのセル、20箇所である。
  12. システムは、表示の更新を実行した。
  13. 変更集合サイズは0。
scenario 2 問題のロード(盤面のサイズ変更なし)
  1. 現在の盤面サイズは8X10である。
  2. セルはすべて空白である
  3. アクティブポジションは(2, 1)。
  4. ユーザーが選択した問題情報は、
    • Q.1
    • 幅:4マス
    • 高さ:5マス
    • 問題:
      4 s 2 s
      s s s 2
      s s s s
      s s s s
      1 s s 3
  5. システムは、指定された問題を盤面に反映させた。
  6. システムは、アクティブポジション(2, 4)を変更集合に追加した。
  7. システムは、(0, 0)をアクティブポジションにした。
  8. システムは、アクティブポジション(0, 0)を変更集合に追加した。
  9. 変更箇所は、(0, 0), (2, 0), (3, 1), (0, 4), (3, 4)及び(2, 4)の6箇所である。
  10. システムは、表示の更新を実行した。
  11. 変更集合サイズは0。

ユースケース:表示の更新

abstract 盤面の変更箇所を画面に反映させる。
actorシステム
precondition
  • 盤面の状態が更新された。
  • 表示にダメージを受けている。
main flow
  • 1. システムは、更新された位置の状態を取得する。
  • 2. システムは、取得した状態を描画する。
  • 3. 変更位置が残っている場合、main flow 1. に戻る。
  • 4. システムは、変更集合を空にする 。
  • 5. 再表示する領域を画面に反映させる。
alternative flow
  • 1-a. 盤面の表示がダメージを受けている場合
    • 1-a1. main flow 5に進む。
scenarioなし

要約

この要求分析で作成されたユースケースとその優先度を以下に示す(成果物:ユースケース一覧)。 ここで、太字は、最も優先して実装すべきユースケースである。

ユースケース概要優先度
表示の更新 盤面の変更箇所を画面に反映させる。 1
盤面の選択盤面選択に関する抽象ユースケース -
単一区画の選択現在選択されている箇所とは違う箇所を選択する。 1
複数領域の選択未作成 2
逐次選択未作成 3
数字の入力現在選択されている範囲に数字を入力する。 1
ラインモードでの数字の入力未作成 5
問題のロードユーザーが指定した問題を盤面に反映させる。 1
問題の選択未作成 4

ここまでで記述したユースケースを要約すると、以下のユースケース図となる。 この図で赤く色付られたユースケースはこのIterationで実装する予定の機能。 緑色で色づけされたユースケースは次回以降、実装する予定のユースケースである。

ユースケース図

また、この要求分析では、以下の用語がさらに抽出された。

用語種類説明
システムactorユーザーに対してサービスを実行する主体
選択スタック ユーザーが選択した領域を保持するもの。 ただし、アクティブポジションは含まない。また重複はしない。
アクティブポジションユーザーが直接選択した位置
変更集合 表示の更新を実行する際の変更位置を保持。重複して保持はしない。
連続範囲の検証 ユーザーが入力した値が、 入力後の同じ数字が連続する範囲の数以下であるかどうかを調べる
ラインモード すべてのセルに数字を表示するのではなく、どこか一点を基点とし、 その基点から連続するセルを線で連結して表示するモード。

prev : [ドメイン分析] up : [目次] next : [システム分析]


© 2003, Kazuhiko TAMURA All rights reserved.

[W3C validator]