(58)【調査した分野】(Int.Cl.,DB名)
対象装置がとりうる状態と、発生したイベントに関する情報一覧を表示する状態遷移付きシーケンス図と、前記状態遷移付きシーケンス図の前記状態と、前記イベント発生に基づく前記状態の遷移とに基づく状態遷移表を作成し、前記状態遷移付きシーケンス図および前記状態遷移表を同一画面上に表示する制御部、を備え、
前記制御部は、
前記状態遷移付きシーケンス図の表示領域には、所定の時間方向に沿って複数の前記イベントに対応する複数の空の入力領域を表示し、前記イベントの入力を設定すると、前記時間方向に沿って一つの前記入力領域に、前記イベントに対応する前記状態の遷移の情報の設定状態を表示し、
前記状態遷移表の表示領域には、前記状態遷移付きシーケンス図の前記入力領域に対応する状態遷移を表示し、
作成した前記状態遷移付きシーケンス図および前記状態遷移表のうち一方の設定を他方に反映させて表示する、
ことを特徴とするシーケンス図作成装置。
【発明を実施するための形態】
【0015】
(実施の形態)
以下に添付図面を参照して、この発明にかかるシーケンス図作成装置、シーケンス図作成方法およびシーケンス図作成プログラムの好適な実施の形態を詳細に説明する。
【0016】
(状態遷移付きシーケンス図の例)
図1は、実施の形態にかかるシーケンス図作成装置が作成する状態遷移付きシーケンス図を示す図である。縦軸は時間、横軸には複数のオブジェクトとオブジェクト間のイベントのやり取りが示される。
【0017】
対象装置は、オブジェクト(ソフトウェア)、イベント(受信等)をトリガとして状態が変化(遷移)する。このため、実施の形態では、オブジェクト(ソフトウェア)状態をイベントに対応付けて時間方向に表す。
【0018】
図1に示す例では、一つのオブジェクト(ソフトウェアA)100に対するイベントの受信毎のオブジェクト100の状態を対応付ける。状態Xは、例えばユーザのボタン押下のイベントUAの受信で処理Aを行い、状態Yに遷移する。この際、オブジェクト100は、イベントUAの受信に基づく処理Aに対応したイベントABを他のオブジェクト(他のソフトウェアB)に送信する。
【0019】
状態Yは、他のオブジェクト(他のソフトウェアB)が送信したイベントBAの受信で処理Bを行い、状態Zに遷移する。この際、オブジェクト100は、イベントBAの受信に基づく処理Bに対応したイベントAUを他のオブジェクトに(例えばユーザに向けて)送信する。状態Zは、次のイベント待ちを示す。図示のように、オブジェクト(ソフトウェアA)100に対するイベントの受信毎のオブジェクト100の状態遷移を時間方向に対応付ける。
【0020】
一般的に、ソフトウェア開発は、下記1.2.の手順で行う。
1.外部仕様の確認
動作仕様の確認、状態とイベントのリストアップ
2.状態遷移設計
状態遷移表の作成(リストアップした状態とイベントに基づき作成する)
【0021】
実施の形態の状態付きシーケンス図は、上記2.の状態遷移設計における状態遷移表の作成を支援することができる。
【0022】
(シーケンス図作成装置のハードウェア構成)
図2は、シーケンス図作成装置のハードウェア構成例を示すブロック図である。
図2において、シーケンス図作成装置200は、制御部(CPU)201と、Read−Only Memory(ROM)202と、Random Access Memory(RAM)203と、半導体メモリやディスクドライブ等の記憶部204と、通信インターフェース(I/F)205と、を含む。これらCPU201〜通信インターフェース205、キーボード206、ディスプレイ207は、バス208によってそれぞれ接続されている。
【0023】
CPU201は、シーケンス図作成装置200の全体の制御を司る演算処理装置である。ROM202は、シーケンス図作成装置200のプログラム等を記憶する不揮発性メモリである。RAM203は、CPU201によるプログラムの演算処理実行時のワークエリアとして使用される揮発性メモリである。記憶部204には、作成されたシーケンス図や状態遷移表等が格納保持される。
【0024】
通信インターフェース205は、ネットワーク210とのインターフェースを司り、データの入出力を制御する。具体的に、通信インターフェース205は、通信回線を通じてネットワーク210となるLocal Area Network(LAN)、Wide Area Network(WAN)、インターネットなどに接続され、ネットワーク210を介して他の装置に接続される。
【0025】
ディスプレイ207は、CPU201のプログラム実行により、記憶部204から読み出したシーケンス図や状態遷移表を表示する装置である。ディスプレイ207には、例えば、Thin Film Transistor(TFT)液晶表示部、プラズマ表示部、有機EL表示部などを採用することができる。
【0026】
(シーケンス図作成装置の機能)
図3は、実施の形態にかかるシーケンス図作成装置の機能ブロック図である。シーケンス図作成装置200は、入力部301と、シーケンス図作成部302と、状態遷移表作成部303と、出力部304と、を有する。
【0027】
入力部301には、対象装置のユースケース(使用手順例)に対応した状態と、イベントと、ハンドラ関数のデータが入力され、シーケンス図作成部302は、ユースケース毎の状態とイベントとに基づき、シーケンス図を作成する。
【0028】
この際、状態遷移付加部311は、一つのオブジェクト(ソフトウェア)100に対するイベントの受信毎のオブジェクト100の状態を対応付けて設定する。この設定状態は、
図1の如く、オブジェクト100に対するイベントの受信毎のオブジェクト100の状態遷移として設定し、状態遷移付きのシーケンス図として作成され、出力部304を介して外部出力可能である。
【0029】
また、状態遷移付きのシーケンス図作成時のデータは、状態遷移表作成部303にも出力され、状態遷移表作成部303は、オブジェクト100に対するイベントの受信毎のオブジェクト100の状態遷移を示す状態遷移表を作成する。
【0030】
この際、現在の状態とイベント受信が交差する該当のマスに、他のオブジェクトに送信するハンドラ関数と、遷移後の状態とを組にして埋め込み、状態遷移表を作成する。作成した状態遷移表は、出力部304を介して外部出力可能である。
【0031】
また、作成した状態遷移付きシーケンス図と、状態遷移表は、制御部300内のメモリ(
図2の記憶部204)に格納保持しておき、読み出し可能である。出力部304は、外部のディスプレイやプリンタに状態遷移付きのシーケンス図および状態遷移表を表示出力、印刷出力する。
【0032】
図3の制御部300の機能は、
図2に記載したCPU201がROM202に格納されたプログラム実行により構成できる。
図3の入力部301と出力部304は、
図2に記載した通信インターフェース205を用いて構成できる。
【0033】
(状態遷移付きシーケンス図の作成処理例)
以下、対象装置が組み込み機器であるキッチンタイマーを例に、状態遷移付きシーケンス図の作成処理について説明する。
図4は、対象装置のキッチンタイマーを示す図である。キッチンタイマー400は、表示部401と、操作ボタン402を有する。
【0034】
操作ボタン402は、分ボタン402aと、秒ボタン402bと、スタート/ストップボタン402cとを有する。また、不図示であるが、内部には、プロセッサおよびメモリによる計時機能を有する。
【0035】
このキッチンタイマー400は、以下の3つの状態と、4つのイベントがある。
[状態]
1.停止状態
2.カウントダウン状態
3.アラーム状態
[イベント]
1.スタート/ストップ押下イベント(ハードウェアのスタート/ストップボタン402c)
2.分押下イベント(ハードウェアの分ボタン402a)
3.秒押下イベント(ハードウェアの秒ボタン402b)
4.タイマー通知イベント(CPUのソフトウェア処理:カウントダウンの終了通知)
【0036】
図5は、対象装置のキッチンタイマーの使用手順を示す図である。キッチンタイマー400は、初期状態で停止しており(ステップS501)、次に、時間設定を行う(ステップS502)。時間設定は、分ボタン402a、秒ボタン402bを用いて計時したい時間を設定する。
【0037】
次に、カウントダウンを行う(ステップS503)。カウントダウンは、スタートボタン402cの操作で開始し、時間設定分だけカウントダウンする。次に、アラーム鳴動する(ステップS504)。アラームは、時間設定分だけのカウントダウン満了でキッチンタイマー400内蔵のアラームを鳴動させる。この後、ストップボタン402cの操作により鳴動が停止する(ステップS505)。
【0038】
図6は、対象装置のキッチンタイマーの状態とイベントを示す図である。
図5に示した各使用手順に対応する状態とイベントとを図示してある。状態は、停止状態D1、カウントダウン状態D2、アラーム状態D3と、がある。
【0039】
停止状態D1において、イベントT1として分ボタン402aの押下があると、分をセットする。またイベントT2として秒ボタン402bの押下があると、秒をセットする。また、イベントT3としてスタート/ストップボタン402cが押下されると、カウントダウンを開始し、状態はカウントダウン状態D2に遷移する。
【0040】
カウントダウン状態D2において、イベントT4としてタイマー通知(内部のソフトウェアによるカウントダウン満了時の終了通知)されると、状態はアラーム状態D3に遷移する。
【0041】
アラーム状態D3において、イベントT3としてスタート/ストップボタン402cが押下されると、アラーム鳴動を停止し、状態は停止状態D1に遷移する(戻る)。
【0042】
次に、
図7〜
図12を用いて、シーケンス図作成装置200(制御部300)が行う状態遷移付きシーケンス図および状態遷移表の作成処理について説明する。
【0043】
図7は、実施の形態にかかる状態遷移付きシーケンス図の作成画面(初期状態)を示す図である。シーケンス図作成装置200が作成する状態遷移付きシーケンス
図701と、状態遷移表702とが同一の画面700上に並んで表示される。
【0044】
図7は、作成の初期状態であり、シーケンス
図701の画面には、状態一覧711と、イベント一覧712と、シーケンス
図713と、ハンドラ関数一覧714と、の各領域を有する。状態一覧711には、
図6に示した状態D1〜D3が入力される。イベント一覧712には、
図6に示したイベントT1〜T4が入力される。ハンドラ関数一覧714には、イベントに対応して他のオブジェクトに伝える複数の関数が入力される。
【0045】
また、状態遷移表702には、横軸の各項目には現在(開始時)の3つの状態D1〜D3が入力され、縦軸の各項目に4つのイベントT1〜T4が入力され、横3×縦4(=12マス)の状態遷移表702が作成される。各イベントT1〜T4にはイベント実行後の遷移状態について設定される。
【0046】
以下、シーケンス図および状態遷移表の作成を順に説明する。
図8は、実施の形態にかかる状態遷移付きシーケンス図の作成画面(分ボタン押下時)を示す図である。図中の一つのユースケースは、
図5に示した一つの使用手順に対応して作成される。
【0047】
はじめに、シーケンス
図713のはじめの状態801には、先頭に停止状態D1が設定される。そして、イベントT1(分押下)の入力を設定すると、このイベントT1(分押下)に対応するハンドラ関数1が状態D11として設定される。
【0048】
このイベントT1では停止状態D1が維持され一つのイベントに対応する状態801(D1、D11、D1)が設定される。同時に、次の状態802の先頭には、維持された停止状態D1が設定される。
【0049】
この際、状態遷移表702には、停止状態でイベントT1(分押下)に対応するマス811部分に、ハンドラ関数1と、次の状態(停止状態D1)が設定される。
【0050】
図9は、実施の形態にかかる状態遷移付きシーケンス図の作成画面(秒ボタン押下時)を示す図である。
図8によって設定された状態801の次に、状態802を設定する。この状態802は、先頭に停止状態D1が設定されている。
【0051】
そして、イベントT2(秒押下)の入力を設定すると、このイベントT2(秒押下)に対応するハンドラ関数2が状態D12として設定される。このイベントT2では停止状態D1が維持され一つのイベントに対応する状態802(D1、D12、D1)が設定される。同時に、次の状態803の先頭には、維持された停止状態D1が設定される。
【0052】
この際、状態遷移表702には、停止状態のイベントT2(秒押下)に対応するマス812部分に、ハンドラ関数2と、次の状態(停止状態D1)が設定される。
【0053】
図10は、実施の形態にかかる状態遷移付きシーケンス図の作成画面(スタートボタン押下時)を示す図である。
図9によって設定された状態802の次に、状態803を設定する。この状態803は、先頭に停止状態D1が設定されている。
【0054】
そして、イベントT3(スタート/ストップボタン押下)の入力を設定すると、このイベントT3(スタート/ストップボタン押下)に対応するハンドラ関数3が状態D13として設定される。
【0055】
このイベントT3では状態が停止状態D1からカウントダウン状態D2に遷移し、一つのイベントに対応する状態803(D1、D13、D2)が設定される。同時に、次の状態804の先頭には、遷移したカウントダウン状態D2が設定される。
【0056】
この際、状態遷移表702には、停止状態のイベントT3(スタート/ストップボタン押下)に対応するマス813部分に、ハンドラ関数3と、次の状態(カウントダウン状態D2)が設定される。
【0057】
図11は、実施の形態にかかる状態遷移付きシーケンス図の作成画面(タイマー通知時)を示す図である。
図10によって設定された状態803の次に、状態804を設定する。この状態804は、先頭にカウントダウン状態D2が設定されている。
【0058】
そして、イベントT4(タイマー通知)の入力を設定すると、このイベントT4(タイマー通知)に対応するハンドラ関数4が状態D14として設定される。
【0059】
このイベントT4では状態がカウントダウン状態D2からアラーム状態D3に遷移し、一つのイベントに対応する状態804(D2、D14、D3)が設定される。同時に、次の状態805の先頭には、遷移したアラーム状態D3が設定される。
【0060】
この際、状態遷移表702には、カウントダウン状態のイベントT4(タイマー通知)に対応するマス814部分に、ハンドラ関数4と、次の状態(アラーム状態D3)が設定される。
【0061】
図12は、実施の形態にかかる状態遷移付きシーケンス図の作成画面(ストップボタン押下時)を示す図である。
図11によって設定された状態804の次に、状態805を設定する。この状態805は、先頭にアラーム状態D3が設定されている。
【0062】
そして、イベントT3(スタート/ストップボタン押下)の入力を設定すると、このイベントT3(スタート/ストップボタン押下)に対応するハンドラ関数5が状態D15として設定される。
【0063】
このイベントT3では状態がアラーム状態D3から停止状態D1に遷移し、一つのイベントに対応する状態805(D3、D15、D1)が設定される。なお、この際にも、状態805の次の状態の先頭には、遷移した停止状態D1が設定される。
【0064】
この際、状態遷移表702には、アラーム状態のイベントT3(スタート/ストップボタン押下)に対応するマス815部分に、ハンドラ関数5と、次の状態(停止状態D1)が設定される。
【0065】
上記の説明では状態遷移付きシーケンス
図701が一つのオブジェクトを示すものであったが、各イベントは関連する他のオブジェクトとの間でハンドラ関数をやり取りする。このため、対象装置全体の状態遷移付きシーケンス
図701としては、複数のオブジェクトそれぞれについて時間方向に状態遷移を示すものが作成されることになる。
【0066】
図13は、実施の形態にかかる状態遷移付きシーケンス図の作成手順を示すフローチャートである。制御部300は、ユースケースの状態と、イベント、およびハンドラ関数のデータ入力を受け付ける(ステップS1301)。そして、これら状態とイベントの組み合わせにより、初期状態の状態遷移表702のマス(
図7参照)を作成する(ステップS1302)。また、初期状態のシーケンス
図701を作成する。
【0067】
次に、制御部300は、ユースケース(使用手順)にしたがい、初期状態から順に一つの状態を設定する(ステップS1303)。次に、設定した状態で一つのイベントを入力設定する(ステップS1304)。
【0068】
この際、制御部300は、入力されたイベントでの状態の遷移の有無を判断する。状態の遷移がなければ状態は変わらず、次のイベントの入力を待つ。状態遷移すれば、遷移後の状態を新たに設定して、次のイベントの入力を待つ。
【0069】
そして、制御部300は、遷移の有無に対応して状態遷移付きシーケンス
図701を作成する(ステップS1305)。また、この状態遷移付きシーケンス
図701の作成に対応して、状態遷移表702の該当するマスに関数(ハンドラ関数)と遷移後の状態を設定し(ステップS1306)、一つのイベントあたりの状態遷移付きシーケンス
図701の作成を終了する。
【0070】
以降、次の新たなイベントがあればステップS1303に戻り、次のイベントに対応する同様の処理を実行し、状態遷移付きシーケンス
図701と、状態遷移表702の作成を継続する。
【0071】
以上説明したように、シーケンス図のオブジェクトの時間方向に、イベントに対応して遷移する状態を設定した状態遷移付きシーケンス図として作成することができる。このように、シーケンス図にイベント毎の状態遷移が記載されているため、遷移する状態を一目で分かることができるようになる。
【0072】
この状態遷移付きシーケンス図は、ユースケース(使用手順例)としてそのまま用いることができ、デバッグ手順として利用することが可能となる。
【0073】
また、シーケンス図の設定と同時に状態遷移表も作成できるようになる。シーケンス図の作成に連携して、マス部分に現在の状態と、ハンドラ関数と、次の遷移状態を設定することができ、状態遷移表を容易に作成することができる。シーケンス図の設定と同時に状態遷移表が作成できるため、別々に作成する必要がなく、また入力後のシーケンス図と状態遷移表の整合性も取れる。
【0074】
また、状態遷移表を見て入力ミスも容易に見つけることができ、開発設計のチェックを容易に行えるようになり、迅速に修正できるようになる。そして、シーケンス図と状態遷移表とが連携するため、修正時には、他方も同時に修正できる。例えば、状態遷移表を修正すれば、シーケンス図の対応箇所を自動的に修正できるようになる。
【0075】
シーケンス図上ではさまざまなユースケースに対する個別の局面での状態遷移を表現しており、それらを1枚の状態遷移表としてまとめているため、設計の過程で下記のような問題が発生することがあった。
1.シーケンス図を追加する際に、既に状態遷移表に記載している状態遷移と矛盾した遷移を作成してしまう。
2.状態遷移表上に状態遷移を追加する際に、既に存在するシーケンス図(の一部)と矛盾した遷移を作成してしまう。
【0076】
シーケンス図は、数十〜数百の局面を想定して個別に作成し、それらをすべて統合して1枚の状態遷移表を作成している。従来、シーケンス図に状態遷移を記載していなかったため、矛盾を発見することが困難であったが、本発明によれば、シーケンス図に状態を表現することによって矛盾を発見しやすくなる。さらに、ツール機能として矛盾を自動的に検出することによって設計上の矛盾を速やかに解消することが可能となる。
【0077】
また、上記実施の形態では、キッチンタイマーを例に説明したが、他の組み込み機器等の対象装置であっても同様に状態遷移付きシーケンス図と状態遷移表を作成することで、開発効率を向上できるようになる。