• 検索結果がありません。

鉄道路線モデルに基づくプログラムの動作の可視化

N/A
N/A
Protected

Academic year: 2021

シェア "鉄道路線モデルに基づくプログラムの動作の可視化"

Copied!
2
0
0

読み込み中.... (全文を見る)

全文

(1)

鉄道路線モデルに基づくプログラムの動作の可視化

Visualization of Programs Based on Railroad Route Model

西尾 嘉矩

六沢 一昭

NISHIO Yoshinori

ROKUSAWA Kazuaki

1 はじめに

本稿では, プログラムの動作を鉄道路線モデルに基 づいて可視化するシステムについて述べる. 鉄道路線には, ループ状の路線や乗換駅がある. これ らを見ると, プログラムにおける繰返し及び分岐に類 似していることに気がつく. 従って, プログラムを鉄道 路線に置き換えることができれば, プログラムの動作 を電車の動きによって可視化できる.

2 鉄道路線モデル

2.1 鉄道路線モデルとは 鉄道路線モデルとは, プログラムを鉄道路線に対応 させたモデルである. 具体的な対応を以下に示す. • プログラムの制御構造 (繰返し, 分岐, call/return) を鉄道の路線図に対応させる. • プログラムの実行の流れを, 線路上を走る電車の動 きに対応させる. 2.2 実際の鉄道路線における電車及び乗客の移動 実際の鉄道路線には, ループ状の路線や乗換駅があ る. ループ状の路線では, 電車はその路線を回り続ける. 乗換駅では, 乗客は次に乗る路線の電車へ乗り換える. 乗換駅には, 改札内で乗り換える乗換駅と, 改札外で 乗り換える乗換駅がある. 2.3 プログラムの制御構造と鉄道路線の対応 表1: プログラムの制御構造と鉄道路線の対応 制御構造 鉄道路線 繰返し ループ状の路線 分岐 乗換駅 call/return 乗換駅 • 繰返しは処理を繰り返す. これは, ループ状の路線 を電車が回り続ける状況に類似している. • 分岐は条件に応じて次の処理を選択する. これは, 乗換駅で, 改札内で乗り換える状況に類似している. • call/return は, サブルーチンを呼び出す/呼び出し 側に戻る処理を行う. これらは, 乗換駅で, 改札外で 乗り換える状況に類似している. 2.4 複数プロセスと電車の対応 ここまで1 つの電車の動きに着目してきたが, 実際 の鉄道では複数の電車が走っている. この複数の電車 はプログラムとどのように対応するだろうか. 1 つのプロセスは 1 つの電車に対応するであろう. 従って, 複数のプロセスは複数の電車に対応する. そし て, 新たなプロセスの生成は新たな電車の生成に, 複数 のプロセスの実行は複数の電車の動きに対応する. 千葉工業大学 大学院 情報科学研究科 情報工学専攻 千葉工業大学 情報科学部 情報工学科

3 可視化

本節では, 鉄道路線モデルを用いたプログラムの動 作の可視化§ を述べる. 3.1 繰返し, 分岐の可視化 繰返しはループ状の路線で表現する(図 1(a)). 繰返 し実行中, 電車はループ状の路線を矢印の向きに走る. 分岐は乗換駅で表現する(図 1(b)). 電車は, 乗客が 乗り換えた先の路線を走る. ループ 開始駅 ループ 終了駅 (a) 繰返し then 路線 else 路線 分岐 開始駅 分岐 合流駅 (b) 分岐 図1: 繰返し, 分岐に対応する路線図 3.2 call/return の可視化 call/return はともに乗換駅で表現する (図 2). call の可視化 1. 電車が call 駅に到着する. 2. サブルーチン開始駅から電車が出発する. return の可視化 1. 電車が return 駅に到着する. 2. call 駅に停車していた電車が出発する. 呼び出し側 サブルーチン ・・・ サブルーチン 開始駅 ・・・ ・・・ call 駅 return 駅 図2: call/return に対応する路線図 3.3 fork (プロセスの生成) の可視化

fork は fork 駅で表現する. fork の実行は, 以下のよ うにfork 駅での新たな電車の生成で可視化する (図 3). 1. 電車 A が fork 駅に到着する. 2. fork 駅で電車 B が生まれ, 電車 A は駅を出発する. 3. 電車 B が fork 駅を出発する.

4 表示範囲の指定

プログラムサイズが大きい時, プログラム全体では なく, 一部分のみを調べたいことがある. そこで, 表示 範囲を指定する機能をシステムに持たせた. 4.1 表示範囲の指定方法 プログラムソースに指示コメントを記述する, ある いは可視化画面において駅を指定することにより, 表 示範囲を指定することができる. §本システムの可視化対象は制御構造のみである.

1-209

1B-6

情報処理学会第69回全国大会

(2)

fork 駅 電車A (a) 場面 1 電車A 電車B (b) 場面 2 電車B 電車A (c) 場面 3 図 3: fork の可視化 単一指定 指示コメントの直後の制御構造のみを表示/ 非表示にする. #show と #hide がある. 領域指定 2 つの指示コメントの間の全ての制御構造

を表示/非表示にする. #begin show/#end show と #begin hide/#end hideがある.

4.2 表示の考察 制御構造はネストすることがある. ネスト内の制御 構造にのみ表示/非表示指定をした場合, それの親や子 の制御構造はどう扱うべきだろうか. ネストした制御構造は木構造で表現できる(図 4). 節 B のみ非表示にすると, 節 B の親である節 A と, 節 B の子である節C/D の関係が分断される. 従って, ある 節を非表示にする場合, それの子は非表示にする. ま た, 根は表示するのが適当であろう. そのため, 節 B の み表示すると, やはり節 B と, その親である節 A との 関係が分断されてしまう. 従って, ある節を表示する場 合, それの親は表示する. 根 (プログラムの先頭) A B C D 図4: 木構造

5 実行例

図5(a) のプログラムの実行の可視化の一場面を図 5(b) に示す. 図 5(b) の黒丸は電車を示す. 図5(a) のプログラム

3 行目に#begin show, 17 行目に#end show がある ため, 4 行目∼16 行目の全ての制御構造を表示する. し かし, 10 行目に#hide があるため, 11 行目の for 文 と, その子にあたる 12 行目の if 文は非表示にする. 図5(b) の電車の動き 入力が「0」の時∗∗ の電車の動きを以下に示す. 1. 「START 駅」を出発し,「駅 1(分岐開始駅)」に到着する. 2. then 路線を走り,「駅 2(ループ開始駅)」に到着する. 3. ループ路線を 3 周し,「駅 3(ループ終了駅)」に到着する. 4. 「駅 3」を出発し,「駅 4(分岐合流駅)」を通って「GOAL 駅」に到着する. 可視化画面での表示範囲の指定 図5(b) の「駅 2」に, 非表示の単一指定を行った結 果の路線図での可視化の一場面を図6 に示す. 図6 の電車の動き 1. 「START 駅」を出発し,「駅 1」に到着する. 2. then 路線を走り,「駅 4」を通って「GOAL 駅」に 到着する. 現在, Perl プログラムのみが可視化対象である. ∗∗変数$flag に0 が代入される. #!/usr/bin/perl #begin show $flag = <STDIN>; if($flag == 0) { for($i=0; $i<3; $i++) { print "Then Process\n"; }

}else { #hide

for($j=0; $j<5; $j++) { if(($j % 2) == 1) { print "Else Process\n"; } } } #end show 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: (a) プログラム (b) 可視化の一場面 図5: 可視化例 図6: 指定結果

6 評価

Perl プログラミングの経験がある情報科学部の学生 11 人に本システムを使用してもらった. 以下は寄せら れたコメントの一部である. • プログラムと鉄道路線の対応関係が分かりやすい. • プログラムのバグを見つけることができた. • 調べたい部分だけ表示することができ, 路線図が分 かりやすくなった. • 表示範囲の指定前と指定後で, 路線図のどこが変化 したかが一目で分かる表示がほしい. 上記のコメントより, 以下のことが考えられる. • プログラムを鉄道路線に対応させた鉄道路線モデル は有益である. • デバッグに有益である. (電車の動きによって, 予想 外の実行部分を見つける, など) • 調べたい部分だけ表示できることは有益であるが, さらなる改良が必要である.

7 まとめ

鉄道路線モデルを説明し, このモデルに基づいてプ ログラムの動作を可視化するシステムについて述べた. 本システムを使用すると, ユーザは, プログラムの制 御構造(繰返し, 分岐, call/return) を鉄道の路線図で, プログラムの実行の流れを電車の動きで見ることがで きる. また, 新たなプロセスの生成を新たな電車の生成 で, 複数のプロセスの実行を複数の電車の動きで見る ことができる. さらに, 表示範囲を指定することで, 特 定の制御構造のみ表示することができる.

参考文献

[1] 西尾 嘉矩, 六沢 一昭: 鉄道路線モデルに基づくプ ログラムの動作の可視化, FIT2006 情報科学技術 フォーラム講演論文集, B-024, pp.123–124, 2006.

1-210

情報処理学会第69回全国大会

参照

関連したドキュメント

3 軸の大型車における解析結果を図 -1 に示す. IRI

凡例 高速道路 一般国道 主要地方道等 DID(人口集中地区). JR東海道本線 通学路 小学校 H30事故発生箇所

We evaluate the dependency of damage of sewer buried pipelines on the seismic hazards in the 1995 Kobe earthquake and the 2011 off the Pacific Coast of Tohoku earthquake focusing

道路の交通機能は,通行機能とアクセス・滞留機能に

本研究は,地震時の構造物被害と良い対応のある震害指標を,構造物の疲労破壊の

・補助 73 号線、補助 83 号線、鉄道付属街路、補助 85 号線、補助 87

■さらに、バス等が運行できない 広く点在する箇所等は、その他 小型の乗合い交通、タクシー 等で補完。 (デマンド型等). 鉄道

鉄道 ・JR 宇都宮線(東北本線) 、高崎線 ・JR 湘南新宿ライン.. ・JR 埼京線 ・JR 京浜東北線