CDプレーヤー

本講義の目標
システムデザイン
順序機械によるユーザインタフェース(UI)
システムの挙動モデリング

(金井 担当分 第2回目)

CDプレーヤーのUI例
順序機械によるUIシステムモデリングの問題点

1
順序機械(Sequential Machine)
2
順序機械の状態遷移図表現
< S, Σ, Δ,δ,ω,qi >
状態遷移図(State Transition Diagram), 状態図(State Diagram)
順序機械の有向グラフ表現









状態集合
S = {q0, q1,……, qn-1}
入力記号集合 Σ= {a0, a1,……, am-1}
出力記号集合 Δ= {b0, b1,……, bk-1}
状態遷移関数 δ: Σ x S → S
出力関数
ω: Σ x S → Δ
初期状態
qi  S
例: 1個110円の缶ジュース自動販売機
入力記号列
qi, q2, q4, q8,….
入力記号
出力記号
状態集合 (販売機内の入金状態)

¥100 / 0個¥0
S = { ¥0, ¥100}
入力記号集合

Σ= {¥100, 返却レバ押下}
¥0
¥100 / 1個¥90
¥100
出力記号集合 (販売缶個数&つり銭)
記号列変換機
a3,a2,a1,a5,…
節点=状態,有向辺=状態遷移,有向辺の属性=入力,出力

b0,b4,b2,b4,…
出力記号列
Δ= { 0個¥0,1個¥90, 0個¥100}
3
初期状態

¥0
(初期状態)
返却レバ押下/
0個¥100
4
CDプレーヤーのユーザインタ
フェース挙動モデルの設計
順序機械の状態表・出力表表現
缶ジュース自動販売機の
状態表・出力表表現
缶ジュース自動販売機の
状態遷移図表現
入力記号
状態表
¥100
返却レバ押下
¥0
¥100
?
¥100
¥0
¥0
出力記号
等価な表現
¥100 / 0個¥0
Drawer
Time
Track
¥0
(初期状態)
¥100 / 1個¥90
返却レバ押下/
¥100
0個¥100
•不完全な挙動定義
•挙動の理解が容易
出力表
¥100
返却レバ押下
¥0
0個¥0
?
¥100
1個¥90
0個¥100
•完全な挙動定義
課題: CDプレーヤーのUI
コントロールソフトの挙動モ
デルを表現する。
1
Play
00:00
Pause
Stop
Prev.
Rev.
Forwd. Next
Eject
CDプレーヤーの動作
は直感的で単純 →
自然言語で挙動モデル
を表現すると….
5
6
•挙動の理解が困難
CDプレーヤーのユーザインタフェース
挙動モデルの自然言語による表現(1)
CDプレーヤーのユーザインタフェース
挙動モデルの自然言語による表現(2)
1. UIには、Play, Pause, Stop, Previous, Next, Forward, Reverse, Eject の8個
のボタンがある。
入力記号の1部
7. <No CD Loaded>状態で、Play, Pause, Stop, Previous, Next, Forward, Reverseボ
タンを押しても、なにも反応しない。
2. UIには、Time と Track 2つの表示フィールドがある。
8. ユーザがPlayボタンを押すと, <CD Stopped>状態から <CD Playing>状態へ入る.
3. CDプレーヤー内にディスクが無い時、もしくはCDプレーヤーのDrawerがOpenの
場合、システムは <No CD Loaded> 状態にある。
9. ユーザがStopボタンを押すと, <CD Playing>状態から <CD Stopped>状態へ入る.
4. CDプレーヤーのDrawerが閉まっており、CDがプレーヤー内にある場合、システ
ムは<CD Stopped>, <CD Playing>, <CD Paused>の何れかの状態にある。
10. ユーザがPauseボタンを押すと, <CD Playing>状態から <CD Paused>状態へ入る.
11. ユーザがPauseボタンかPlayボタンを押すと, <CD Paused>状態から <CD
Playing>状態へ入る.
5. <No CD Loaded>状態で、DrawerがOpen,かつCDがDrawer内にある場合、
Ejectボタンが押されると、Drawerが閉じ、システムが<CD stopped>状態に入る。
6. <No CD Loaded>状態で、DrawerがOpen, かつCDがDrawer内に無い場合、
Ejectボタンが押されると、Drawerが閉じ、システムは<No CD Loaded>の状態
のままである。
7
12. <CD Stopped>状態では,<Time>フィールドの表示は”00:00”で, <Track>フィール
ドの表示は”1”でなければならない.
13. <CD Stopped>状態では, PauseボタンとPlayボタンは機能してはならない.
14. <CD Playing>状態では,Playは機能してはならない.
8
CDプレーヤーのユーザインタフェース
挙動モデルの自然言語による表現(3)
CDプレーヤーのユーザインタフェース
挙動モデルの自然言語による表現(4)
15. <CD Stopped> ,<CD Playing>もしくは <CD Paused>状態で,現在のトラック
が最終トラックでない場合,Nextボタンが押されると,プレーヤーは次のトラック
へ移動し,<Time>フィールドの表示は”00:00”で, <Track>フィールドの表示は
そのトラック番号となる.
19. <CD Stopped> ,<CD Playing>もしくは <CD Paused>状態で,Forwardボタンを押
し下げた場合,CDの再生を中止し,CDを1秒進めては0.1秒分のみ再生させるス
テッピング処理を行う.各ステップごとの再生時間は0.1秒である.各ステップごとに,
<Time>フィールドの表示は現在のトラックでの経過時間を表示し, <Track>フィール
ドの表示はそのトラック番号となる.ユーザが,Forwardボタン押し下げをやめた場
合,もしくは,CDの最後に到達した場合は,このステッピング処理を中止する.もし
CDの最後に到達した場合は, <CD Stopped> 状態に入り, <Time>フィールドの表
示は”00:00”で, <Track>フィールドの表示は”1”となる.
16. <CD Stopped> ,<CD Playing>もしくは <CD Paused>状態で,現在のトラック
が最終トラックの場合,Nextボタンが押されると,プレーヤーは最初のトラックへ
移動し,<Time>フィールドの表示は”00:00”で, <Track>フィールドの表示は”1”
となり, <CD Stopped>状態に入る.
20. <CD Stopped> ,<CD Playing>もしくは <CD Paused>状態で,Reverseボタンを押
し下げた場合,CDの再生を中止し, CDを1秒戻しては0.1秒分のみ再生させるス
テッピング処理を行う.各ステップごとの再生時間は0.1秒である.各ステップごとに,
<Time>フィールドの表示は現在のトラックでの経過時間を表示し, <Track>フィール
ドの表示はそのトラック番号となる.ユーザが,Forwardボタン押し下げをやめた場
合,もしくは,CDの最初に到達した場合は,このステッピング処理を中止する.
17. <CD Stopped> ,<CD Playing>もしくは <CD Paused>状態で,現在のトラック
が最初のトラックでない場合,Previousボタンが押されると,プレーヤーは前のト
ラックへ移動し,<Time>フィールドの表示は”00:00”で, <Track>フィールドの表
示はそのトラック番号となる.
18. <CD Stopped> ,<CD Playing>もしくは <CD Paused>状態で,現在のトラック
が最初のトラックの場合,Previousボタンが押されると,プレーヤーは最初のト
ラックの先頭に移動し,<Time>フィールドの表示は”00:00”で, <Track>フィー
ルドの表示は”1”となる.
9
CDプレーヤーのユーザインタフェース
挙動モデルの自然言語による表現(5)
10
挙動モデルの自然言語表現の問題点
21. <CD Playing>状態のとき,<Time>フィールドでは、現在のトラックの所
要再生時間が1秒毎に更新され、 <Track>フィールドの表示はそのトラッ
ク番号となる.

通常の表現では、記述に「あいまいさ」を含む


22. <CD Paused>状態のとき,<Time>と <Track>フィールドの表示が最初
表示され、1秒後に消える。さらに数秒後に、再度表示される。この表示の
On/Offサイクルは、システムが<CD Paused>状態にある間、繰り返され
る。

自然言語で厳密に表現しようとすると、記述が膨大と
なり、設計者の理解が困難となる


UIシステムが大規模で複雑になった場合,このような自然言
語での仕様を、設計者が,誤りなく記述してゆけるだろうか?
前述のCDプレーヤーの例
挙動モデルの、計算機による再利用が困難

11
各語の厳密な定義がない。(状態の定義等)
各語が文章内で利用されるとき、あいまいさは、さらに増大
仕様→コード生成、テストケース生成
12
CDプレーヤーUIを「順序機械」と考えた場合の
入力記号は?
解決案:
順序機械による挙動モデルの表現

厳密に意味が定義された(well-defined
semantics)図的モデルで挙動を表現できる

(入力キーのみをとりあえず入力記号と考える)
状態遷移図
挙動記述が簡潔に行える

図的モデルがあり,設計者が理解しやすい

挙動モデルの計算機による再利用が可能
1
Play
CD
Playing
CD
Stopped
Stop
Rev.
Forwd. Next
Eject
CDがトレイ上にあるか否かをセンサ等でシステムが判定した結果を、
順序機械の入力として追加し、挙動仕様を拡張 (入力記号にセンサを追加)
•本来であれば,システムがトレイ上のCDの
有無を判断し、異なる処理を実施する必要
あり。
Pause
Play
Prev.
•この状態遷移では、ユーザがCDをトレイ内
に入れていることを暗黙に仮定してしまって
いる。
•ユーザ入力以外の入力も仕様記述に必要
Eject
Stop
14

問題点:
Drawer
Closed
Pause
順序機械を用いたCDプレーヤーの
挙動仕様記述(2)
挙動モデルの自然言語表現(前述) 3ー14の状態遷移図表現
Drawer
Open
00:00
13
順序機械を用いたCDプレーヤーの
挙動仕様記述(1)
Eject
Pause, Stop, Prev.,
Rev., Forwd., Next, Eject}
Time
Track
仕様→形式検証、コード生成、テストケース生成
→ 組み込み制御ソフトウエアの分野で、
状態遷移図による仕様表現が広く利用

Σ= {Play,
Drawer


入力記号集合

( )で表現
CD
Paused
新たに追加された状態
入力が Pause もしくはPlayの意味
CD
Paused
Pause
15
Play
センサーによる
判定結果
16
仕様記述(2)と等価な状態遷移表
センサ等の判定を
表した入力記号
元々の入力記号
状態遷移図による仕様表現の利点と
問題点

状 態
Play
Pause
Stop
Prev.
Rev.
Forwd.
Next
Eject
Drawer
Closed
Drawer
Open
Drawer
Open
Drawer
Closing
Drawer
Closing
(no CD)

CD
Stopped
CD
Playing

CD
Playing
Paused
not
blank
利点

Drawer
Closed
CD
Stopped
(CD in
drawer)
CD
Stopped
問題点


CD
Paused
CD
Playing
CD
Playing

前頁の状態遷移図のみでは,まだ多くの未定義部分が存在!
17
各状態において、許容される入力を下表(「状態遷移表」ではないの
で注意)のように制限することで、未定義の状態遷移を減少可能。
→ コンパクトな順序機械として定義できる。
d (disable): 入力を制限,

e (enable): 入力を許容
Play
Pause
Stop
Prev.
Rev.
Forwd.
Next
Eject
(no CD)
(CD in
drawer)
Drawer
Closed
d
d
d
d
d
d
d
e
-
-
Drawer
Open
d
d
d
d
d
d
d
e
-
-
Drawer
Closing
-
-
-
-
-
-
-
-
-
-
CD
Stopped
e
d
d
e
e
e
e
e
-
-
CD
Playing
d
e
e
e
e
e
e
e
-
-
CD
Paused
e
e
e
e
e
e
e
e
-
-
これは「入力制限」の表 (≠「状態遷移表」)
状態遷移数 = (状態数)×(入力記号数)
状態数が増加 → 未定義の状態遷移数が増加
システムが無反応で良い(処理をしなくとも良い、入力を受け付け
なくとも良い)入力に対しても、状態遷移図上で定義する必要があ
18
るか? (=状態遷移表の全欄で遷移の定義が必要か?)
順序機械を用いたCDプレーヤーの
挙動仕様記述(3)
各状態における入力制限の指定
表3
図的表現のため挙動が理解しやすい
自然言語では分からない、仕様記述に潜在的に含まれる未定義
部分が状態遷移図に対応する状態遷移表から明らかにできる
 状態”CD stopped”, “CD playing”, “CD paused”において、Eject
ボタンが押された場合が未定義
 状態”CD paused”において、Stopボタンが押された場合が未定義
19
表3の入力制限+一部の未定義状態遷移を追加した、自然言
語仕様3ー14に対する状態遷移図表現
CD
Paused
20
順序機械を用いたCDプレーヤーの
挙動仕様記述(3)

順序機械を用いたCDプレーヤーの
挙動仕様記述(4)
表3の入力制限+一部の未定義状態遷移を追加した、自然言
語仕様3ー14に対する状態遷移図表現
Eject
Eject

Eject
( ) 内は,
システム内部からの入力
もしくは成立すべき条件
に相当
CD
Paused
21
順序機械を用いたCDプレーヤーの挙動仕様記述(5)

ブリンク
Next, Previous
ボタンに対する
挙動の自然言語
仕様 15-18に
対する状態・状
態遷移を追加し
た挙動仕様
<Time>, <Track>
フィールドの表示に
関する挙動の自然
言語仕様 21-22を
追加した挙動仕様
‐Play 状態では表示内容
を1秒ごとに更新
‐Pause状態では1秒ご
とに表示のon/offを反復
“Timer expired”=タイマー
で規定した時間が経過し
たという事象(入力)
状態数が増えるにつ
れ、状態遷移図での
仕様記述も、入り組ん
23
で複雑になってしまう。
22
挙動仕様記述(5)における入力制限
状態遷移
表ではない
ので注意
V (visible): フィールドに数値が表示、 I (invisible): フィールドの表示が消灯
24
順序機械を用いたCDプレーヤーの挙動仕様記述(5)
順序機械を用いたCDプレーヤーの
挙動仕様記述(6)

Forward, Reverseボタンに関する挙動の自然言語仕様
19-20の部分のみの挙動仕様

状態Xは、各状態
4,5,6,7を表す。
0.1s
ボタン
押し下げ
0.1s
Stepping forward 時の挙動
1s
0.1s
0.1s
t
0.1s 0.1s 0.1s 0.1s 0.1s
0.1sごとに曲の1s先の部分を0.1s分だけ再生
ボタン
解放
「現在より1s前に戻り,
再生をしている」こと
を表す状態
0.1s
状態数が増えるにつ
れ、状態遷移図での
仕様記述も、入り組ん
で複雑になってしまう。
0.1s
「現在より1s先に進み,
再生をしている」ことを
表す状態
<Time>, <Track>
フィールドの表示
に関する挙動の自
然言語仕様 2122を追加した挙動
仕様
25
26
単純な順序機械のみによるUI挙動
仕様記述の問題点




順序機械のみで、UIの挙動をモデル化することが困難
現実のUIは純粋な順序機械ではない。入力ではなく、内部条件のみに
状態ベースの挙動記述の
より状態遷移する場合もある。(トレイ内CDの有無による遷移など)
利点を生かし、順序機械
モデリング対象システムの構造があまり複雑でなくても、
の問題点を解決した仕様
状態数が急激に増加する。
記述が必要

本日はここで終了
Pause状態を表示の観点で2状態に分けると、Pause状態と関連のあ
るStopped, Playingなどの状態ごとに、その2状態が付加される。
重複した状態や入力が存在してしまう。


Stepping forward, Stepping backwardは、4回現れる。
状態遷移図が大規模になり、解読が困難になる。


設計者が、仕様に対す状態や入力の追加をあきらめてしまう。
状態遷移図は、Scalableな仕様記述でない。


大規模なUIシステムになると、1ページに収まらない図となる。
27
28