シナリオのアニメーション表示による 妥当性確認支援 立命館大学大学院 理工学研究科 ソフトウェア工学研究室 首藤寛樹 大西 淳
発表内容 1.研究の背景・目的 2.シナリオ記述言語SLAF 3.ビジュアルな要求とシナリオ情報への変換 4.アニメーション表示による妥当性確認支援 5.まとめと今後の課題
研究の背景 要求分析においてシナリオは有効 ー ステイクホルダ間で知識を共有 シナリオの妥当性確認時の問題点 ー ステイクホルダ間で知識を共有 シナリオの妥当性確認時の問題点 【1】 利用者や顧客にとって,自分たちが直接関わ るイベントと関わらないイベントが混在するため, 理解するのが難しい 【2】 利用者や顧客にとって,文章で記述された シナリオから,システムの動的な振る舞いを 正確に把握するのは難しい シナリオ記述言語(SLAF) ー 本研究室で開発した制限言語 ー SLAFに用意された視点の変換手法により, 【1】の問題点を解決可能
本研究の目的 問題点【2】 文章で記述されたシナリオから, システムの動的な振る舞いを正確に把握するのは難しい 日本語で記述されたシナリオの振る舞いをアニメーション表示することによって,利用者や顧客による妥当性確認を支援する ・・・・・ ・・・・ ・・・ ・・・・・・・ 日本語シナリオ アニメーション表示
シナリオ記述言語SLAF ◎イベント文 - 要求フレームモデルに基づいて定義された 格構造に従って記述 - 要求フレームモデルに基づいて定義された 格構造に従って記述 ー アクションと格構造を表す深層表現へ変換することで, 情報の抜けを機械的に発見することができる (例) 動作対象格 道具格 (任意) 源泉格 目標格 投稿者は 論文を 郵便で 送る DFLOW アクション 動作 対象格 源泉格 目標格 道具格 (任意) DFLOW 論文 投稿者 ー 郵便
SLAFで記述されたシナリオの構成 タイトル 視点(システムを捉える際の立場) イベント文列 事前条件・事後条件(今回は省略) ー イベント文 ー 時間的順序(順接,if-then-else,並行同期, 繰り返し) 事前条件・事後条件(今回は省略)
SLAFで書かれたシナリオの例 タイトル 視点 イベント文列 [電話での書籍注文] [利用者,会社] { 利用者は 会社に 電話で 本の名前を 伝える 会社は 在庫情報を 確認する if(在庫がある) then 利用者は 会社から 電話で 購入可能である旨を 聞く 利用者は 会社に 電話で 配送先を 伝える 利用者は 会社から 電話で 振込先を 聞く 利用者は 銀行に お金を 振り込む 会社は 銀行から 口座情報を 得る 銀行は 指定した金額と 振込み金額を 照合する if(振込み金額が正しい) then 会社は 倉庫に Eメールで 出荷指示を 送る 利用者は 倉庫から トラックで 本を 届けられる else 利用者は 会社から 電話で 振込みが間違っている旨を 伝えられる fi else 利用者は 会社から 電話で 在庫がない旨を 聞く fi } 視点 イベント文列
ビジュアルな要求とシナリオ情報への変換 ビジュアルな要求 日本語シナリオ ビジュアルな要求に 対応したシナリオ情報 (後述) 02 01 01 02 03 ・ 利用者は会社から電話で・・ 利用者は会社に電話で・・ ビジュアルな要求 02 01 03 ・ 日本語シナリオ ビジュアルな要求に 対応したシナリオ情報 (後述)
ビジュアルな要求 ビジュアルな要求記述言語VRDL ー アイコン画像と矢印を用いてフロー要求を定義 ー 実体間のフロー:矢印 ー アイコン画像と矢印を用いてフロー要求を定義 ー 実体間のフロー:矢印 矢印の根元にフロー要求の送り手 矢印の先にフロー要求の受け手 矢印に重ねてデータとデバイス(任意)を配置 ー VRDLは要求フレームモデルに基づいている トラック 利用者 倉庫 本 DFLOW 道具格 (任意) 目標格 源泉格 動作 対象格 アクション アイコン辞書 深層表現への変換が可能
ビジュアルな要求の記述例 1)空間による分割 実体であるアイコンを 階層化する. 2)時間による分割 複雑な業務を,ある 時間的な区切り 銀行 1)空間による分割 実体であるアイコンを 階層化する. 利用者 会社 2)時間による分割 複雑な業務を,ある 時間的な区切り (シーン)で分割 倉庫 VRDLでの記述例 「電話を用いての書籍購入」 複雑な要求の 記述も可能
ビジュアルな要求の生成 イベント文のみ抽出 登場アクタ数から, アイコン座標情報を生成 (正多角形の頂点に配置) アイコン 座標情報 イベント文① イベント文② イベント文③ イベント文④ ・ イベント文のみ抽出 イベント文① イベント文② if then イベント文③ else イベント文④ ・ アイコン 座標情報 登場アクタ数から, アイコン座標情報を生成 (正多角形の頂点に配置)
ビジュアルな要求の生成 日本語 シナリオ 付加履歴 会社は倉庫に出荷指示を電話で伝える イベント文 ビジュアルな要求 深層表現 アイコン イベント文① イベント文② イベント文③ 01 日本語 シナリオ 付加履歴 会社は倉庫に出荷指示を電話で伝える イベント文 DFLOW 出荷指示 会社 倉庫 電話 アクション 動作対象格 源泉格 目標格 道具格 ビジュアルな要求 深層表現 アイコン辞書 アイコン 座標情報
ビジュアルな要求の生成 日本語 シナリオ 付加履歴 利用者は倉庫からトラックで本を届けられる イベント文 ビジュアルな要求 深層表現 イベント文① イベント文② イベント文③ 01 日本語 シナリオ 02 付加履歴 利用者は倉庫からトラックで本を届けられる イベント文 DFLOW 本 倉庫 利用者 トラック 01 アクション 動作対象格 源泉格 目標格 道具格 ビジュアルな要求 深層表現 アイコン辞書 アイコン 座標情報
ビジュアルな要求の生成 日本語 シナリオ 付加履歴 会社は指定した金額と振込み金額を照合する イベント文 ビジュアルな要求 深層表現 イベント文① イベント文② イベント文③ 01 日本語 シナリオ 02 exception 付加履歴 会社は指定した金額と振込み金額を照合する データフロー ではない イベント文 02 01 アクション 動作対象格 源泉格 目標格 道具格 ビジュアルな要求 深層表現 アイコン辞書 アイコン 座標情報
シナリオ情報の生成 日本語シナリオ イベント1(DFLOW) イベント2(RET) if(在庫がある) then イベント2(DFLOW) else イベント4(DFLOW) fi 01 exception 02 03 04 if(在庫がある) then else fi 付加履歴に対し,日本語シナリオ内の 時間的順序を当てはめる
ビジュアルな要求とシナリオ情報を用いたアニメーション 01 02 03 ビジュアルな要求 02 01 03 ・ アニメーションシステム ビジュアルな要求に 対応したシナリオ情報
アニメーションシステム 利用者は会社に電話で配送先を伝える 日本語表示部 銀行 アニメーション 表示部 利用者 会社 倉庫
アニメーションシステム 利用者は会社から電話で振込先を聞く 利用者は会社に電話で配送先を伝える 直前のフロー 現在のフロー 銀行 利用者 倉庫 直前のフロー 現在のフロー
アニメーションシステム 会社は指定した金額と振込み金額を照合する イベント文がフロー要求でない場合 アニメーション表示を網掛け表示し, 銀行 利用者 会社 倉庫 イベント文がフロー要求でない場合 アニメーション表示を網掛け表示し, イベント文の内容がデータフローに 関係していないことを強調
アニメーションシステム デモンストレーション 日本語表現に関する制約事項 *アニメーションシステム上に表示される日本語イベント文は, *アニメーションシステム上に表示される日本語イベント文は, 深層表現から生成した文章が使われるため,意味的には 変わらないが,表現方法が変化するケースがある
アニメーション表示による妥当性確認支援 日本語シナリオのアニメーション表示により, フロー要求に起こりうる,以下に示す三種類の 誤りの発見を導くことができる. a) フローの誤り データの送り手と受け手のどちらか,あるいは両方が誤って記述されること b) 生起順序の誤り シナリオが本来記述されるべきフロー要求の 生起順序を満たしていないこと c) フロー要求の抜け シナリオ内に本来記述されているべき フロー要求が記述されていないこと
フローの誤り シナリオはアクタ間の相互作用 を表している →連続するフローが重なった場合や, 突然フローが発生した場合,フロー方向の [電話での書籍注文] [利用者,会社] { 利用者は 会社に 電話で 本の名前を 伝える 会社は 在庫情報を 確認する if(在庫がある) then 利用者は 会社から 電話で 購入可能である旨を 聞く 利用者は 会社に 電話で 配送先を 伝える 利用者は 会社に 電話で 振込先を 伝える 利用者は 銀行に お金を 振り込む 会社は 銀行から 口座情報を 得る 銀行は 指定した金額と 振込み金額を 照合する if(振込み金額が正しい) then 会社は 倉庫に Eメールで 出荷指示を 送る 利用者は 倉庫から トラックで 本を 届けられる else 利用者は 会社から 電話で 振込みが間違っている旨を 伝えられる fi else 利用者は 会社から 電話で 在庫がない旨を 聞く fi } シナリオはアクタ間の相互作用 を表している →連続するフローが重なった場合や, 突然フローが発生した場合,フロー方向の 記述ミスが発生している可能性がある 誤りを混入した日本語シナリオ
フローの誤り シナリオはアクタ間の相互作用 を表している →連続するフローが重なった場合や, 突然フローが発生した場合,フロー方向の [電話での書籍注文] [利用者,会社] { 利用者は 会社に 電話で 本の名前を 伝える 会社は 在庫情報を 確認する if(在庫がある) then 利用者は 会社から 電話で 購入可能である旨を 聞く 利用者は 会社に 電話で 配送先を 伝える 利用者は 会社に 電話で 振込先を 伝える 利用者は 銀行に お金を 振り込む 会社は 銀行から 口座情報を 得る 銀行は 指定した金額と 振込み金額を 照合する if(振込み金額が正しい) then 会社は 倉庫に Eメールで 出荷指示を 送る 利用者は 倉庫から トラックで 本を 届けられる else 利用者は 会社から 電話で 振込みが間違っている旨を 伝えられる fi else 利用者は 会社から 電話で 在庫がない旨を 聞く fi } シナリオはアクタ間の相互作用 を表している 利用者は会社から電話で振込先を聞く →連続するフローが重なった場合や, 突然フローが発生した場合,フロー方向の 記述ミスが発生している可能性がある 誤りを混入した日本語シナリオ
まとめ 解決すべき問題点 文章で記述されたシナリオから, システムの動的な振る舞いを正確に把握するのは難しい 文章で記述されたシナリオから, 解決案 日本語シナリオをアニメーション表示させることによって, フロー方向やフロー間の時間的順序を可視化する. 結果 利用者や顧客にとってフロー要求に特化したシナリオの 妥当性確認が容易になった.
今後の課題 本手法の有効性を確認するための 評価実験を行う 現段階のアニメーションシステムで表現可能な 評価実験を行う 現段階のアニメーションシステムで表現可能な 要求はフロー要求のみであり,フロー要求以外の 要求のアニメーション化を実現する