はじめにキャッツ㈱ 山本 修二• 近年の組み込みシステムは、複雑化を増しており、回収騒ぎなどが増加し、メードインジャパンの信頼性を地に落としている。
• この問題を発生させている大部分の原因は、システム設計と組み込まれるソフトウェアにある。
• 設計手法は、ＯＯＰ、ＭＤＡ、アジャイルなどのいろいろな手法が提案され、対応するツールも徐々にそろってきているが、試験に対するアプローチも重要なポイントである。
• 組み込みソフトウェア開発では、状態遷移設計は一般的であるが、状態遷移ベース試験は人海戦術で行われている。
• 状態遷移試験に関する標準化を進めることで、各社ツールの連携も進展し、組み込みシステムの品質向上に貢献できる。

状態遷移設計とは？

状態遷移設計とは？

組み込みソフトウェアの上流設計における試験表現に関する研究- 状態遷移モデルを基にしたモデルベース試験 -3

状態遷移設計とは？

状態遷移試験
状態遷移抽出条件•–––

開始状態を電源ＯＦＦ、終了状態を電源ＯＦＦとする。
遷移する前の状態と遷移後の状態と遷移のきっかけとなるイベントが同じ組み合わせは、１つの遷移シーケンス内に１回しか現れない。
イベントが発生した時、イベントが無視される場合は、遷移したと見做す。

状態遷移シーケンス例•–電源OFF - モータOFF -> 電源OFF - 電源OFF -> 電源OFF モータON -> 電源OFF - 電源ON -> モータ停止 - 電源ON ->モータ停止 - モータOFF -> モータ停止 - モータOFF

1「組み込みソフトウェア試験標準化委員会」

試験項目定義事項

概要•••• 試験項目の分類や試験項目が全て抽出されたかどうかの判定条件などの試験項目抽出に関連する定義事項。

試験関連標準化 「組み 込みシステム用 ソフトウェア評価項目抽出ツールの開発」（ＩＰＡ：情報処理振興事業協会 「重点領域情報技術開発事業」）「組み込 みソフトウェア試験標準化委員会」(TSCEC : TestingStandardization Committee for Embedded Software、通称：テセック) 設立
標準化内容
1.

– 対応する仕様書種別• 試験項目を対応する仕様書種別を定義する。対応仕様書 とは、状態遷移表、状態遷移図（ステートチャート）など。

– 試験項目分類定義（例、正常、準正常 、異常）• 試験項目の 分類名、分類基準を標準化する。例えば、分類 としては正 常／準正常／ 異常で、正 常とは 通常イベント（タイムアウトを除いたイベント）による遷移で、イベントに対する処理が無視や禁止でないものなど。

試験項目定義事項
組み込 みソフトウェアの 試験に 関す る定義事項 （試験項目同一性、網羅率 など）

2.

– 網羅率定義（評価対象項目／全項目）

試験項目表示方法• 試験項目の 全項目の 定義と網羅率（カバレッジ率）の定 義。

ユースケース図、アクティビティ図、状態遷移図 （ステートチャート）、状態遷移表
における試 験 項 目の 表示方法
3.

– 試験項目の同一性定義• ２つの試験項目が 同一であるか異 なっているかの判断基準 の定義。

試験項目表記方法
抽象度 の高い 仕様 から抽 出された試 験 項 目の 表記方法

試験項目表記方法

試験項目表示方法•

試験項目表示方法 とは、本開発ソフトウェアが抽出する試験項目をコンピュータ画面上でどのように 表示するかの方法である。具体的には、状態遷移図 ／表上やユースケース図や アクティビティー 図上でどのように 表示するかである。

•

試験項目表記方法とは、本開発 ソフトウェアが抽出する試験項目を電子ファイルや書類上にどのような記号で記述するかである。
– 状態表記方法– 状態遷移順序（開 始、経由、終了）表示方法• 開始／経由／終了状態と発生した状態の順序を表示する取り決めで、例えば状態遷移表上に表示する際に順序を色で表すとか番号を表示するなど。
– 状態遷移の 重 複 時の表 示 方 法• 複数の試験項目を同じ仕様書上に表示する際に、２回以上経由した状態／イベント／処理をどのように表示するかで、例えば状態遷移表上の処理に表示する場合に、処理のセルに複数の色で分けられた箱状に表示するとか回数を右上に回数を数字で表示するというような詳細な表示方法。
– イベント発生順序表示方法• 開始／経由／終了イベントと発生したイベントの順序を表示する取り決めで、例えば状態遷移表上に表示する際に順序を色で表すとか番号を表示するなど。
– 仕様書種別毎の 表示方法
• 対応する仕様書種別の取り決めで、例としてはユースケース図、アクティビティ図、状態遷移図（ステートチャート）、状態遷移表など。

• 状態 どのような記 号 で表すかを標 準 化する。例 えば、ＸＭＬで表 すとすれば、タグの名称 をどうするかとか、テキストで表すとすれば 、半 角アルファベットで”Sx ”（x:番号）であるとかを細かく標 準 化する。

– イベント表記方法• イベントをどのような記 号 で表すかを標 準 化する。例 えば 、ＸＭＬで表すとすれば 、タグの名称 をどうするかとか、テキストで表すとすれば 、半 角アルファベットで”EVx”（x: 番号）であるとかを細 かく標 準 化す る。

– 遷移表記方法• ある状 態からどの イベントでどの状態に 遷移した 際の 遷移 をどのように 表 す か を標準化 する。例 えば、ＸＭＬで表すとすれば 、タグの名 称をどうするかとか 、テキス
トで表 すとすれば、半 角 アルファベットで”" -> "” であるとかを細 かく標 準 化す る。

１．状態図（SD)

標準案内容
1. 状態図（ＳＤ）
2. タスク状態図（ＴＤ）
3. 各種定義
4. 遷移列集合（ＴＳ）
5. 並列遷移列（ＣＴＳ）••

g := [ ] …… guard
a := < > ……. assertion••

l := string ….. label
n := { } ……… notes SD
iSD e SD/• g ? (exp, TASK)• a ? (exp, TASK)• e ? (l, m, time, pri)
• s SD ? (g, a, l, n, PROC)• tSD ? (e, g, a, l, n, PROC, s s,s d)• SD ? (ISD , FSD ,SSD , TSD , f, f-1,ESD )fSD• Type– l– exp– PROC– task

2２．タスク状態図（タスク間関係は今後検討）

３．各種定義• 入力 ? イベント
• 出力 ? s×Proc out• sTD ? (g, a, l t, n, PROC, prev)– ｌtはタスク名、prevはPROC で表せるが、理解を助けるために独立させる。
– Temporal operator は、pervとg,aで使用する。Prevは、g,aで書く。

– 遷移先状態をsとする。

• 入出力 ? 入力×出力• 入出力列 ? 入出力*

• TD ? (I TD, F TD, S TD, T TD, f, f-1, l t, pri, time, ETD, TYPE)– タスク間通信 ∈ETD

４．遷移列集合（ＴＳ）• 入出力列を決める。
• 遷移列、ts ∈ TS• ts ? (its, fts, Tts, g)– t ∈ Tts , t 1 -> t 2 -> …… -> tn– ti+1 = g(t i)

標準化案例（試験項目表記方法）<?xml version='1.0' encoding='UTF-8' ?><!DOCTYPE pathGroup SYSTEM 'file: pathGroup.dtd '><pathGroup><title>モータサンプル</title><path><state><stateName>電源OFF</stateName></state><transition><eventName>電源SW_ON</eventName><state><stateName>電源ON：モータ停止</stateName></state></transition><transition><eventName>モータ回転SW_ON</eventName ><state><stateName>電源ON：モータ回転中</stateName></state></transition><transition><eventName>モータSW_OFF</eventName ><state><stateName>電源ON：モータ停止</stateName></state></transition><transition><eventName>電源SW_OFF</eventName><state><stateName>電源OFF</stateName></state></transition></path></pathGroup>• Proc p• Proc列 p*• イベント e ∈ E• イベント列 e*• 状態 s• 状態組 s×s
• 状態列 s*• 遷移 t• 遷移列 t*５．平行遷移列（ＣＴＳ）• ts ∈ TS , tg ⊂ TS
• cts ? (tg, h)t s1tghh()cts =()○
+ () -> ()t s2

標準化案例（試験項目表記方法）<?xml version='1.0' encoding='UTF-8' ?><!ELEMENT pathGroup (title, path+) ><!ELEMENT title (#PCDATA) ><!ELEMENT path (state ,transition+,state ?) ><!ELEMENT state(activity?,stateName ,guard? ,assert? ,activity?,path?,activity ?)><!ELEMENT transition (eventName ,guard? ,op?,state ?)><!ELEMENT stateName (#PCDATA) ><!ELEMENT eventName (#PCDATA) ><!ELEMENT op (#PCDATA) ><!ELEMENT activity (#PCDATA) ><!ELEMENT guard (#PCDATA) ><!ELEMENT assert (#PCDATA) >3

状態遷移シーケンス抽出ツール
プロトタイプ「組み込みソフトウェア試験標準化委員会」 連絡先••••

横浜市港北区新横浜2-11-5 キャッツ株式会社内「組み込みソフトウェア試験標準化委員会」
事務局
E-mail : TSCEC@egroups.co.jp
URL : http://www.egroups.co.jp/group/TSCEC– ソフトウェア事業部 山本 修ニ– 電話：045(473)2816– FAX：045(473)2673

4