システム工学概論 第1回 プログラム設計の原理

システム工学概論
第8回
状態を持つ系
2004. 11. 25
第8回概要
1.状態のあるソフトと
状態の無いソフト
2.状態,遷移原因,遷移ルート
3.状態遷移図
4.有限状態機械モデル(Finite
State Machine,FSM)の利用
状態を持っ系
これ迄の講義
ー状態を持たない系ー
今迄の通常技術で対応が可能
以後の講義
ー状態を持っ系ー
今迄と異る対応が必要
・入力から出力への変換関係が ・入力から出力への変換関係
が,状態により変る
固定している
多様な顔を見せる
・先に状態を考え分離する.
・機能(入力から出力への
残りは状態毎プログラムにな
変換の関係)を中心に設計
る.
・数学的な演算処理が中心なら
これらプログラムは従来とおり
これで充分
・人を始めとする身辺の各種
メカニズムの実現に適している
成熟した技術
ハードを伴うことが多い
オブジェクト指向はその一端
状態構造の有り/無し
状態構造有り
状態構造無し
3
変換
関係
F
入
力
出
力
入
力
変換
関係
F1
1
4
2
出力4
出力3
出力2
出力1
時計
時刻表示
を 求める
状態4
状態3
状態2
状態1
時計
盤面
時刻表示
時刻を
える
時計
時刻
1 秒ク
ロック
実時間ク
ロック
表示
する
時計
盤面
有限状態機械 Finite State Machine
身辺殆どの物/現象などを模擬可能
Object
状態
状態
(電球)滅火(中)
状態
(電球)点灯(中)
スイッチON
電球
スイッチOFF
1
0
滅火
滅火
1
0
点灯
状態:(広辞林)ありさま,様子
(工学)ある安定したありさま
:(本教科)ある視点から見て
安定な 状態を云う
時間t
状態遷移原因 / Event
状態
状態
( 電球) 滅火( 中)
( 電球) 点灯( 中)
スイ ッチON
電球
スイ ッチOFF
スイッチ
スイッチ
ON押下
OFF押下
(状態)遷移原因
1
0
1
0
時間t
滅火
点灯
滅火
(状態)遷移原因:状態を変化させる原因(瞬間的信号)
状態遷移ルート
滅火状態
(電球)滅火(中)
点灯状態
緩やかに点
(電球)点灯(中)
状態遷移ルート
電球
緩やかに滅
スイッチ
ON押下
1
0
1
0
スイッチ
OFF押下
時間t
滅火
点灯
滅火
状態遷移:状態が移り変わること
状態遷移ルート:状態が移り変わる道筋
電気スタンドの状態遷移図
略記ー理論等
状態名:例 空き
滅火中
S0
(状態番号) 例
遷移原因名
例 Off
SW
状態名:例 塞り
(状態番号) 例
遷移原因名
例 On
スイッチ On
点灯中
S1
SW
スイッチ Off
滅火中
スイッチ On
点灯中
スイッチ Off
図面記号:図面を書くときに守るべき記号の規格,
図は仕様記述言語 SDL Specification and Description Language
電気スタンドの状態遷移図
滅
火
中
SW
SW
スイッチ On
点
灯
中
SW
スイッチ Off
点灯中
滅火中
排他的
SW
点灯中
排他的
信号灯
点
火
時間
休止中 緑点火 黄点火 赤点火
休止中
スイッチOn
緑点火
黄点灯
黄点火
赤点灯
排他的に異る状態をとる
赤点火
緑点灯
(状態)遷移ルート
状態記号
旧状態
樽形で表す
(状態)遷移原因
状態
が変
わる
こと
が状
態遷
移
遷移原因1
○○を△する
遷移原因2
○を△□する
くさび状の切込み箱で表す
(SDLでは入力と呼ぶ)
状態遷移
×を□する
状態が変わること
Aを出力する
新状態
新状態
遷移ルートA
遷移ルートB
遷移ルートには,名称(番号)
を付ける
(状態)遷移ルート
状態が移り変る道筋
遷移ルートの始点
状態遷移原因の直下
遷移ルートの終点
次の状態記号の接点
機能と出力/メッセージ
旧状態
遷移原因1
○○を△する
遷移原因2
・状態遷移図は,旧状態から新状態
へと,上から下または左から右に
書く.
・状態の直後に状態遷移記号を書く
1状態に複数の遷移原因がある.
なるべく揃えて書く方が良い.
○を△□する
×を□する
Aを出力する
新状態
新状態
遷移ルートA
遷移ルートB
・遷移ルートは,機能/処理,出力,
判断/分岐,(関数)呼出しを
経路の途中に入れることができる
(フローチャートに似ている)
・□箱は機能で「○○を□する」と
書く.(SDLではタスクと呼ぶ)
・くさび状箱は,外部出力である.
(SDLではメッセージ,他ではコマン
ド
と名付ける場合もある)
簡単な自動販売機
自動販売機の状態
¥
購入指定
投入金
販売
可能
煙草自動販売機
合計金額
待機中S0
購入(商品)指定
¥
¥
投入金
煙草自動販売機
煙草自動販売機
投入金あり販売不可S1
投入金
購入指定
販売可能S2
簡単な自動販売機
自動販売機
待機中
投入金
投入金あり
販売不可
指定
商品
販売可能
走行する自動車
車の
速度
時間
停止中 加速中
Q1.状態遷移図
を書け
Q2.遷移原因名
を決めよ
Q3. それらは
何処から
生じるか?
停止中
信号青
出発
加速中
速度40Km/h
に到達
定速走行中
減速中 停止中
定速
走行中
減速中
前方黄信号
減速
目標目前
車両停止
自動車運転手のシミュレータが作れる
状態遷移原因に伴う情報
停止中
信号 赤から
青に変化
定速
走行中
加速中
速度40Km/h
に到達
前方黄信号
減速中
車両停止
状態遷移の信号 伴う情報
(不要な場合もある)
新信号
青,黄,赤
数種の遷移を纏められる
速度
XkM/h
変数を伝えられる
状態遷移の
契機に限定する
各種の信号/変数
複数種の信号可能
状態遷移原因に伴う情報
停止中
信号 赤から
青に変化
定速
走行中
加速中
速度40Km/h
に到達
前方黄信号
減速中
車両停止
状態遷移の信号 伴う情報
(不要な場合もある)
新信号
青,黄,赤
数種の遷移を纏められる
速度
XkM/h
変数を伝えられる
状態遷移の
契機に限定する
各種の信号/変数
複数種の信号可能
現実世界
電話交換
リーン
リーン
もしもし
角の蕎麦屋を
交換手
A
B
ダイヤル
レジスタ
呼出音
C
呼出信号
D
抽象化した世界 モデル
空き
ダイヤル中
Off hook
ダイヤル終了
Aを接続する
Aを開放する
Bを接続する
振る舞い
Cを接続する
自動交換機が作れる
仕
様
の
記
述
呼出中
Off hook
Bを開放する
Cを開放する
通話中
On hook
Dを
開放
する
Dを接続する
仕様が記述できている
SDLは交換機仕様記述で出発
仕様記述言語 SDL
通信は世界的な相互接続の必要性から標準化が進んでいる
交換システムの仕様表記が下のような図式表記から始まった.
1980年代に仕様記述言語として図式表記と言語表記が標準化
System Description and Description 略称 SDL
プロトコルの仕様表記などにも多く用いられている
現在では,状態記号中の図式表記は標準としては廃止されている
A
空き
ダイヤル中
Off hook
ダイヤル終了
Aを接続する
ダ
呼
呼出中
Off hook
Aを開放する
Bを開放する
Bを接続する
Cを開放する
Cを接続する
Dを接続する
通話中
On hook
Dを
開放
する
単純な仕様からプログラムへ
旧状態
接続A有り
旧状態
A
ダイヤル終了
状
態
遷
移
Aを開放する
旧状態
接続B有り
接続C有り
ダ
ダイヤル中
新状態
A
ダイヤル中
状態遷移には旧状態から新状態への
移行の為の機能を含む
旧状態に有って新状態に無いもの
状態遷移で削除する
新状態に有って旧状態に無いもの
状態遷移で追加する
ダ
ダイヤル終了
Aを開放する
プログラム
Bを接続する
Bを接続する
プログラム
Cを接続する
Cを接続する
プログラム
B
呼
C
呼出中
新状態
B
仕様
具体化した
プログラム
状態遷移ルートは通常のプログラムと同じ性質である
呼
C
呼出中
新状態
状
態
遷
移
プログラムへの具体化
旧状態
A
旧状態
Cを接続する
ダ
Bを接続する
ダイヤル中
Aを開
放する
Aを開放する
Bを接続する
Cを接続する
仕
様
A開放指令を
送る
A左端の専有
を解除する
A右端の専有
を解除する
Aを作る各接
点を求める
ダイヤル終了
各接点開放
指令を作る
Aを開放する
プログラム
全開放指令
を送出する
Bを接続する
プログラム
Aをテーブルか
ら削除する
Cを接続する
プログラム
B
呼
C
呼出中
新状態
ダ
ダイヤル中
Aを開放する
ダイヤル終了
状
態
遷
移
A
B
状態遷移ルート中のプログラムは
通常の設計でできる
呼
C
呼出中
新状態
具体
化し
たプ
ログ
ラム
状態遷移中の分岐1
もしもし
角の蕎麦屋を
呼出信号
相手空き
A
ダイヤル
レジスタ
B
C
呼出音
呼出中
相手話中
E
ダイヤル中
ダイヤル終了
話中
状態遷移ルートには
判断/分岐があっても良い
(形式論理では許さない)
話中音
状態遷移中の分岐2
ダイヤル中
A
正常
ダイヤル
レジスタ
空き
料金未払い
サービス拒否
E
空き
Off hook
未
使用
電話
ダイヤル中
発信拒否
発信拒否
ダイヤル終了
話中音
状態遷移中の分岐3
On
hook
発信拒否
S5
ダイヤル中
S1
話中
S4
話中音
ダイヤル
レジスタ
話中音
未使用
発信
電話
On
hook
On
hook
ダイヤル終了
話中
拒否
空き
S0
Off
hook
通話中
S3
On
hook
呼出中
S2
Off hook
呼出音
再呼出
呼出信号
On
hook
・太線の経路は,正常にサービスが進行して終了する過程.
・その他のルートが正常ルートの数倍ある.(設計で対処する)
相手話し中などは,サービスの一環だから「準正常」という
ハード異常などに対処する「異常」もある.
状態遷移原因表
O
n
h
o
o
k
発信拒否
O
n
h
o
o
k
ダイヤル中
Off
ダイヤル
原因
Hook
終了
状態
e1
e2
空き
Tr0-1
(S0)
話
中
話
ダ
話
O
n
h
o
o
k
未使
用電
話
空
き
O
ff
h
o
o
k
話
中
ダイヤル終了
発
信
拒
否
Off hook
呼出中
通話
中
0
O
n
h
o
o
k
再
呼
出
呼
O
n
h
o
o
k
・人が操作するものは,
あらゆる場合を考える.
・状態遷移原因表に遷移ルート名/
番号を記入する
漏れは一目で分かる.
・全ての遷移ルートにつき,
間違いない遷移を決める.
・各種の異常に対する遷移は
正常サービスの数倍になる
ダイヤル中
(S1)
On
Hook
e3
再
呼出
e4
Tr1-2
呼出中
(S2)
通話中
(S3)
話中
(S4)
発信拒否
(S5)
・最終的には遷移ルートは
関数に対応させる.
・上の例では状態とイベント番号
の組合せで関数名称化した
状態を使う利点
在来の便法
状態遷移図
○○フラグを立てる
○○フラグを立てる
○□信号は
きたか?
○○フラグ
は1か?
・状態を使い,排他的に
明解に示せる
・区分できて考え易い
・構造が簡単になる
・誤りが少ない.普通の
設計の時より品質が良い
・1~2状態のみ,混在する場合
には,これでも構わない
・状態数が増え,あるいは遷移
原因数が多くなると混在して
考えにくく,扱い難い
・最終的に誤りが多い
・Dynamic jumpは処理能力の
無駄使いである
システムを構成する抽象機械群
Windows
PCの状態
各アプリケーション
毎の状態
Word待機中
Word
アプリケーション
使用可
ファイル 編集 表示 挿入 書式
スタート
Word
休止中
Word
ファイル 編集 表示 挿入 書式
abcbdbdbd
dk
nm,.........
スタート
Word
PowerPoint
Excell
標準
スライド一覧
ノート
スライドショー
マスター
グレースケール
設定パレット
ツールバー
ルーラー
ガイド
標準
スライド一覧
ノート
スライドショー
各アプリケーション
内で各オプション毎の状態
マスター
非マスター
グレースケール
非
グレースケール
Word使用中
システムは多数の小さい系から成る
系 = 抽象機械
(有限状態機械, Finite State Machine)
抽象機械群 = プロセス
各アプリケーション内で
各オプション毎の状態
各アプリケーション
毎の状態
Windows
PCの状態
Word待機中
Word
アプリケーション
使用可
ファイル 編集 表示 挿入 書式
スタート
Word
休止中
Word
ファイル 編集 表示 挿入 書式
標準
スライド一覧
ノート
スライドショー
マスター
グレースケール
設定パレット
ツールバー
ルーラー
ガイド
標準
スライド一覧
ノート
スライドショー
表示モードのprocess
マスター
非マスター
abcbdbdbd
dk
nm,.........
マスターのprocess
スタート
Word使用中
Word
グレースケール
PowerPoint
非
グレースケール
グレースケールのprocess
Excell
休止中
準備中
準備完了
使用可
PCのpcess
休止中
準備中
繋がりのある状態群を
纏めてプロセスと名付ける
使用可
Wordのprocess
PowerPintのprocess
Excellのprocess
システムは幾つものプロセスから成る
システムを構成するプロセス
休止中
準備中
準備完了
使用可
休止中
準備中
準備中
使用可
使用可
Excellのprocess
Wordのprocess
PCのpcess
休止中
プロセス間通信
標準
スライド一覧
グレースケール
マスター
非マスター
非
グレースケール
グレースケールのprocess
ノート
スライドショー
マスターのprocess
表示モードのprocess
システムの中の各プロセス間で通信して全体システムとして動作させる.
簡単に複雑なシステムができる = 複雑なシステムが簡単にできる
複数プロセスの自動販売機
現金収受
プロセス
販売プロセス
自動販売機
投入金0
待機中
投入金
自動倉庫
プロセス
指定
商品
投入金
投入金 > 0
投入金
投入金あり
販売不可
販売可能
更に,ドンドンと複雑な機能も実現できる.
ソフトウエアとハードウエアとの対応
入力 I
(Input)
現金収受
プロセス
自動販売機
自動倉庫
プロセス
販売プロセス
投入金0
投入金
出力 O
(Output)
処理 P,機能 F
待機中
指定
商品
投入金
商品
指定
投入金 > 0
投入金
マイコン制御
現金収受装置
投入金あり
販売不可
販売可能
自動販売機
本体装置
マイコン制御
自動倉庫
ソ
フ
ト
ウ
エ
ア
ハ
|
ド
ウ
エ
ア
自動販売機の遷移原因
現金収受
プロセス
自動倉庫
プロセス
販売プロセス
自動販売機
投入金0
待機中
投入金
指定
商品
投入金
商品
指定
投入金 > 0
投入金
図の略称
投入金
商品指定
投入金あり
販売不可
遷移原因
投入金が入力された
商品が指定された
販売可能
伴う情報
投入金額
商品を示すコード(例:場所)
複数プロセスを持つシステム
システム全体を幾つかのプロセスに分割する
個々のプロセスP1~Pnは相互に独立であるようにする
これらがそれぞれ状態数S1~Snであれば,全体系は
S1*S2 * S3*・・・ Sn
の状態数を持つ.
作る手間は,状態数に比例するから
S1*S2 * S3*・・・ Sn 例 10*10*10=1000
の系が, S1+S2 +S3・・・ Sn 例 10+10+10=30
の手間で作れ,大幅な簡単化ができる.
各プロセスをシステムを構成するハード機能部分に対応させる
とソフトとハードが一体のものとして扱え,取扱いが容易
になる
纏め
・ソフトには,状態構造を持つ系と
状態構造を持たない系がある
・状態構造は,状態,遷移原因,遷移ルート
で表される
・状態と遷移原因で,状態遷移が起る.
遷移ルートはフローチャートと同じに書ける.
・遷移ルートを関数/モジュールに対応させると,
今までのプログラム設計法が使える
・複数プロセスにすれば,簡単に複雑なシステム
が取り扱える