Comments
Description
Transcript
CDプレーヤー
本講義の目標 システムデザイン 順序機械によるユーザインタフェース(UI) システムの挙動モデリング (金井 担当分 第2回目) CDプレーヤーのUI例 順序機械によるUIシステムモデリングの問題点 1 順序機械(Sequential Machine) 2 順序機械の状態遷移図表現 < S, Σ, Δ,δ,ω,qi > 状態遷移図(State Transition Diagram), 状態図(State Diagram) 順序機械の有向グラフ表現 状態集合 S = {q0, q1,……, qn-1} 入力記号集合 Σ= {a0, a1,……, 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