システム工学概論 第9回 状態構造を持っ系の設計 システム工学概論 第9回 状態構造を持っ系の設計 2004. 12. 2
第9回概要 1.自動販売機 2.外部仕様 3.振舞い 4.設計手順 5.仕様記述 第9回概要 1.自動販売機 2.外部仕様 3.振舞い 4.設計手順 5.仕様記述
自動販売機
I(Input)P(Process)O(Output)図 IPO(Input Process Output)図 I P O 1秒 クロック 時計 盤面 時刻をえる 時刻 時刻表示 をえる 表示 表示する Input Process Output 実時間 クロック 時計 盤面 仕様の 表記 時刻をえる I P O I P O 実時間 クロック 時計 盤面 記号に よる表記 時刻をえる I P O 表示する I P O データフロー図 による表記 I P O 実時間 クロック 時計 盤面 HIPO(Hierarchical Input Process Output)図
自動販売機の仕様 夫々は,如何なる条件があるだろうか?
自動販売機の条件 入力に対する条件 外部入力仕様書 出力に対する条件 外部出力仕様書 本体に対する条件 外部~機能仕様書
外部仕様類 外部入力仕様書 外部出力仕様書 外部~機能仕様書 ?
外部出力仕様
外部入力仕様
システム仕様 如何に仕様を記述するか? 1.投入金を入れる 2.投入金と過去の投入金の合計を求め,表示する 3.合計金額で買える物があれば,販売可能商品を 表示する 参考:成績集計システム 1.試験結果を読込む 2.学籍番号順に並べる 3.クラス平均値を求める 4.各人の順位を決める 5.成績一覧表を出力する 6.個人毎成績表を出力する 4.販売可能でない商品を販売指定しても無視する 5.販売可能な商品を指定すると,商品を出力する 6.投入金額合計から,商品の価格を差引き表示する (7.釣銭出力を指定すると,返戻金/釣銭を出力する) これで完全であろうか? 状態を持つ系は,成績集計のようには記述出来ない
自動販売機の振舞い 販売 可能 合計金額 待機中S0 投入金あり販売不可S1 販売可能S2 購入指定 投入金 購入(商品)指定 投入金
状態遷移ルートの抜けチェック 釣銭 出力 が 抜けて いる 状態遷移原因表は, 漏れなく状態遷移を 洗出すのに効果的な 手段である T01 購入指定 T01 購入(商品)指定 T21 釣銭 出力 が 抜けて いる 投入金 T00 販売 可能 合計金額 待機中S0 投入金 T10 投入金 T20 投入金あり販売不可S1 販売可能S2 購入指定 T11 釣銭出力e2 投入金e0 購入指定e1 待機中S0 投入金あり販売不可S1 販売可能S2 T00 T01 状態遷移原因表は, 漏れなく状態遷移を 洗出すのに効果的な 手段である T10 T11 T20 T21
各種の 遷移 ルート T02 T12 T22 T01 T21 T11 T10 T20 T00 釣銭出力e2 投入金e0 購入指定e1 待機中S0 投入金あり販売不可S1 販売可能S2 T00
出力を記入する 下記を記入する 状態, 状態遷移,遷移ルート 状態遷移原因 出力
完備した外部仕様 外観図 外部入力仕様書 外部出力仕様書 外部機能仕様書
完全な仕様記述 状態遷移図を併用する記述 有限状態(抽象 )機械モデル Finite State Machine, FSMモデル 外部機能仕様書 状態遷移図を併用する記述 有限状態(抽象 )機械モデル Finite State Machine, FSMモデル 殆どの着目対象(Object)を記述可能である (従来技法では,データの変換関係のみ記述) 状態遷移+遷移ルート(プログラム)で構成する 従来のプログラム以上の存在 状態遷移実行機構により,平明な設計が可能 状態遷移原因表により,漏れが防止できる 通常の正常な動作は,全体の一部に過ぎない 場合により,状態数が爆発的に増える 幾つかの抽象機械に分解すれば良い 状態遷移原因表 釣銭出力e2 投入金e0 購入指定e1 待機中S0 投入金あり販売不可S1 販売可能S2 T10 T20 T21 T22 T02 T01 T11 T00 T12
システムの構成(簡単な系) ソフト ハ|ド 出力 O 入力 I 処理 P, 機能 F (Output) (Input) 自動販売機 販売プロセス ソフト 待機注 販売可能 投入金あり 販売不可 指定 商品 投入金 商品 指定 名称 / 定義 名称 / 定義 ハ|ド 自動販売機 マイコンボード 10 ストッカー部 現金 収受部 1000
システムの構成(複雑な系) ソフトウエア ハ|ドウエア 入力 I (Input) 出力 O (Output) 処理 P,機能 F 自動倉庫 プロセス 現金収受 プロセス 自動販売機 ソフトウエア 販売プロセス 投入金0 待機注 販売可能 投入金あり 販売不可 指定 商品 投入金 投入金 投入金 > 0 商品 指定 投入金 ハ|ドウエア マイコン制御 現金収受装置 自動販売機 本体装置 マイコン制御 自動倉庫
システムの構成(複雑な系) コ|ラ在庫少数 通信 プロセス PHS お総菜ユニット パン・麺ユニット コールド ドリンク ユニット 自動販売機 待機注 販売可能 投入金あり 販売不可 投入金 指定 商品 販売プロセス 自動 倉庫 プロ セス ホットドリンクユニット 現金収受部 投入金0 投入金 > 0 現金収受 プロセス
組込システム ・外から見ると,ハード装置であるが,実は計算機/ソフトを 内蔵するシステム.計算機制御の技術が使われている. 内蔵するシステム.計算機制御の技術が使われている. これから伸びる分野.VTR, 携帯電話,GPS.... ・特殊性 ハード並の高い信頼度が求められる ソフトは,殆どが状態構造を持っている ハード並のキチンとした信頼度と原価等の管理 量産をベースにした考え方 各種の使われ方〜機種を統合する標準化 単純/複雑/大規模自販機 たばこからコーヒー,拉麺等を一本化 表示位置と商品対応,商品価格 データ ・有利な就職先として,諸君に推奨する
システム設計上の要件 商品はどの場所に置ける 商品名はソフトに関係させない 場所(指定釦番号)で見る 価格は,変更できる 商品はどの場所に置ける 商品名はソフトに関係させない 場所(指定釦番号)で見る 価格は,変更できる メモリのある領域に定価表を持つ イベントを標準化する ・遷移原因となるもの ・伴う情報 例:投入金 + 金額(¥50) 自動販売機 待機注 販売可能 投入金あり 販売不可 投入金 指定 商品 販売プロセス 投入金0 投入金 > 0 現金収受 プロセス 自動倉庫 出力/メッセージ ・外部指令/メッセージ名となるもの ・伴う情報 例:釣銭出力 + 釣銭金額 複数プロセスの場合には,下記を加える 宛先プロセス番号 + 送元プロセス番号
プログラム設計上の要件 出力メッセージ標準形式 入力メッセージ標準形式 ハード 対応情報 ソフト用 情報 入出力統一フォーマット 場所番号 0 1 2 3 4 5 6 7 ストッカー番号 ” ” ” ” ” ” ” ” 在庫センサ番号 ” ” ” ” ” ” ” ” (メモリ内情報) 在庫切れランプ番号 ” ” ” ” ” ” ” ” 販売可能ランプ番号 ” ” ” ” ” ” ” ” 商品指定釦番号 ” ” ” ” ” ” ” ” 商品価格表 〔メモリ内情報) 販売可能商品表 ハード 対応情報 ソフト用 情報 110 可/不可 出力メッセージ標準形式 入力メッセージ標準形式 種別指定 | 場所指定 例:合計金額 | 560 例:在庫切ランプ点 | 群指定 例:ストッカー開 | 個別指定 例:釣銭出力 | 250 種別指定 | 場所指定 例:在庫切 | 群情報 例:投入金 | 100 例:商品指定 | 場所情報 例:釣銭 | 540 種別指定 | 伴 う 情 報 入力/出力 |コード情報 |パターン情報 * 入出力統一フォーマット 種別指定 |伴う情報 入力/出力 |コード情報 種別指定 |伴う情報 入力/出力 |パターン情報 * 又は
自動販売機中のアルゴリズムの例 1 Input Process Output 販売可能 な商品を 決める 合計金額 ハード 対応情報 価格表 販売 可能 群 ハード 対応情報 ソフト用 情報 場所番号 0 1 2 3 4 5 6 7 商品価格表 110 250 260 300 …………………. 販売可能商品表 Y N Y Y ……………………. 場所番号 0 1 2 3 4 5 6 7 ストッカー番号 ” ” ” ” ” ” ” ” 在庫センサ番号 ” ” ” ” ” ” ” ” 在庫切れランプ番号 ” ” ” ” ” ” ” ” 販売可能ランプ番号 ” ” ” ” ” ” ” ” 商品指定釦番号 ” ” ” ” ” ” ” ” 商品価格表 〔メモリ内情報) 販売可能商品表 ハード 対応情報 ソフト用 情報
同 例 2 指定 指定した商品が,販売可能なら商品(i)を出力する.販売不可なら無視する 商品(i) 入力メッセージ標準形式 ハード 同 例 2 場所番号 0 1 2 3 4 5 6 7 販売可能商品表 Y N Y Y ……………………. 指定した商品が,販売可能なら商品(i)を出力する.販売不可なら無視する 指定 商品(i) 販売可能商品表の場所(i)を読む i =Y? 場所(i)のストッカーを開ける ------------------------------- ストッカー開 | 場所(i) Y N 出力メッセージ標準形式 種別指定 | 場所指定 例:合計金額 | 560 例:在庫切ランプ点 | 群指定 例:ストッカー開 | 個別指定 例:釣銭出力 | 250 例:在庫切 | 群情報 例:投入金 | 100 例:商品指定 | 場所情報 例:釣銭 | 540 入力メッセージ標準形式 場所番号 0 1 2 3 4 5 6 7 ストッカー番号 ” ” ” ” ” ” ” ” 在庫センサ番号 ” ” ” ” ” ” ” ” 在庫切れランプ番号 ” ” ” ” ” ” ” ” 販売可能ランプ番号 ” ” ” ” ” ” ” ” 商品指定釦番号 ” ” ” ” ” ” ” ” 商品価格表 〔メモリ内情報) 販売可能商品表 ハード 対応情報 ソフト用 情報
状態遷移の実行の為の配慮 ・遷移ルートは関数に対応 させる ・状態遷移原因表に対応し て各関数を実行させる ・終着状態が不明になるの で,各関数の実行の最末 尾に行先状態番号を指定 する T11 釣銭出力e2 投入金e0 購入指定e1 待機中S0 投入金あり販売不可S1 販売可能S2 T10 T20 T21 T22 T02 T00 T12 T01
状態遷移の実行 ・遷移原因(イベント)が到着すると, 記憶している過去からの状態 対 遷移原因 の交点の状態遷移ルート(関数)を実行させる T00 T01 T02 到着した 遷移原因 e1 記憶した状態 S0 T11 釣銭出力e2 投入金e0 購入指定e1 待機中S0 投入金あり販売不可S1 販売可能S2 T10 T20 T21 T22 T02 T00 T12 T01 ・遷移原因(イベント)が到着すると, 記憶している過去からの状態 対 遷移原因 の交点の状態遷移ルート(関数)を実行させる ・各状態遷移ルートの最末尾で次状態を規定する
纏め 1.状態,状態遷移原因,状態遷移により 殆どの対象を振舞いを含め記述できる 2.見かけ上の入力は,下記の2者になる 殆どの対象を振舞いを含め記述できる 2.見かけ上の入力は,下記の2者になる 動作の契機(イベント)と伴う情報 これを考えると,如何なる系でも 状態遷移ルートのプログラムで統一的に設計可能 3.状態遷移原因表で漏れなく仕様を決定可能 Object指向設計は,これらの実用的/不完全な実現 上記を充分に理解すれば,OO設計に有効
以下のページは参考
分析:初期段階
分析:初期段階纏め データフロー図 フローチャート 合計金額を求める 合計金額を表示する 合計金額以下の商品を求める 商品有り 商品無し 販売可能商品を表示する 入口1 出口2 出口1 フローチャート
分析:後期段階 最大抽象点は何処か? データフロー図
分析:後期段階 PAD
分析の纏め