(57)【要約】【課題】ソフトウェアの動作を時系列に表現したシーケンス図の不整合を検出すること。【解決手段】メッセージ取得部５によりシーケンス図保存部１からシーケンス図中のメッセージを時系列順に取得し、送信オブジェクト処理部６により前記取得したメッセージのパラメータがその送信オブジェクトに対応する受信バッファに記録されているかを判定し、記録されてれば該パラメータを前記送信オブジェクトに対応する送信バッファに記録し、記録されてなければ未受信パラメータの送信という不整合を不整合記録部４に記録し、また、受信オブジェクト処理部７により前記取得したメッセージのパラメータをその受信オブジェクトに対応する受信バッファに記録するとともに送信バッファから削除し、バッファ比較部８によりオブジェクト毎に送信バッファと受信バッファの内容を比較し、同一でない場合は未使用なパラメータの存在という不整合を不整合記録部４に記録する。【選択図】図５
2008197975.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアの動作を、動作の主体となるオブジェクトと、当該動作の内容を表すメッセージ名及び動作に使用する情報を表すパラメータからなり、前記オブジェクト間に時系列に配置されるメッセージとにより表現してなる仕様書／設計書の不整合を検出する装置であって、
検出対象の仕様書／設計書を保存する仕様書／設計書保存手段と、
オブジェクトが送信したメッセージのパラメータを記録するオブジェクト毎の送信バッファと、
オブジェクトが受信したメッセージのパラメータを記録するオブジェクト毎の受信バッファと、
検出対象の仕様書／設計書中の不整合の検出結果を記録する不整合記録手段と、
仕様書／設計書保存手段に保存された仕様書／設計書からメッセージを時系列順に取得するメッセージ取得手段と、
取得したメッセージのパラメータが当該メッセージを送信したオブジェクトである送信オブジェクトに対応する受信バッファに記録されているか否かを判定し、記録されていれば前記パラメータを前記送信オブジェクトに対応する送信バッファに記録し、記録されていなければ前記送信オブジェクトが未受信のパラメータを送信しようとしている旨の不整合の検出結果を不整合記録手段に記録する送信オブジェクト処理手段と、
取得したメッセージのパラメータを当該メッセージを受信したオブジェクトである受信オブジェクトに対応する受信バッファに記録するとともに前記受信オブジェクトに対応する送信バッファから削除する受信オブジェクト処理手段と、
オブジェクト毎に送信バッファの記録内容と受信バッファの記録内容とを比較し、同一でない場合は未使用なパラメータが存在する旨の不整合を不整合記録手段に記録するバッファ比較手段とを備えた
ことを特徴とするソフトウェア仕様書／設計書の不整合検出装置。
【請求項２】
コンピュータを、請求項１記載の装置を構成する各手段として機能させるためのプログラム。
【請求項３】
ソフトウェアの動作を、動作の主体となるオブジェクトと、当該動作の内容を表すメッセージ名及び動作に使用する情報を表すパラメータからなり、前記オブジェクト間に時系列に配置されるメッセージとにより表現してなる仕様書／設計書の不整合を、記憶装置及び演算処理装置を少なくとも含むコンピュータを用いて検出する方法であって、
コンピュータの演算処理装置が、
記憶装置に保存された仕様書／設計書からメッセージを時系列順に取得する第１のステップと、
取得したメッセージのパラメータが当該メッセージを送信したオブジェクトである送信オブジェクトに対応する受信バッファに記録されているか否かを判定する第２のステップと、
前記判定の結果、記録されていれば前記パラメータを前記送信オブジェクトに対応する送信バッファに記録する第３のステップと、
前記判定の結果、記録されていなければ前記送信オブジェクトが未受信のパラメータを送信しようとしている旨の不整合の検出結果を記憶装置に記録する第４のステップと、
取得したメッセージのパラメータを当該メッセージを受信したオブジェクトである受信オブジェクトに対応する受信バッファに記録する第５のステップと、
取得したメッセージのパラメータを前記受信オブジェクトに対応する送信バッファから削除する第６のステップと、
仕様書／設計書中の全てのメッセージを取得し終わるまで第１乃至第６のステップを繰り返す第７のステップと、
オブジェクト毎に送信バッファの記録内容と受信バッファの記録内容とを比較する第８のステップと、
前記比較の結果、同一でない場合は未使用なパラメータが存在する旨の不整合を記憶装置に記録する第９のステップとを実行する
ことを特徴とするソフトウェア仕様書／設計書の不整合検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア開発時に、開発対象のソフトウェアの動作を表現した仕様書／設計書の不整合を検出する技術分野に属する。
【背景技術】
【０００２】
ソフトウェア開発では、開発対象のソフトウェアが満たすべき事項を示す仕様書を作成し、当該仕様書を基により具体的な実装を意識したソフトウェアの構造・アーキテクチャなどを定めた設計書を作成し、この設計書を基に最終的に実装を行う。これらの仕様書や設計書にはソフトウェアが持つ機能を記述する。
【０００３】
ソフトウェアの機能は、ソフトウェアが管理する情報をクラスや属性などで表現する静的な側面と、ソフトウェアの動作をメッセージやメソッドなどで表現する動的な側面という二つの面によって表される。それらの情報や動作は、自然言語を用いた文書やモデル言語（ＵＭＬ：Ｕｎｉｆｉｅｄ  Ｍｏｄｅｌｉｎｇ  Ｌａｎｇｕａｇｅなど）を用いた図などで記述される。この時、ソフトウェアの規模が大きくなればなるほどソフトウェアの動作は複雑になり、動作の記述量や複雑さは増大する。よって、ソフトウェア開発者がソフトウェアの動作を記述するために時間がかかり、ソフトウェア開発が高コスト化／長期化してしまうということが問題になっていた。
【０００４】
その高コスト／長期化の原因として、ある時点で作成した仕様書／設計書が誤りを含んでいて、それに気付かずに開発を進めてしまった場合、後になって誤りを発見し修正するという手戻りが発生してしまい、開発をやり直すということがある。そのような手戻りを防ぐために、開発中に作成したソフトウェア仕様書／設計書の誤りを未然に防ぐ技術が求められている。
【０００５】
非特許文献１では、ＵＭＬの協調図の整合性を判定するシステムが報告されている。しかし、ソフトウェア開発では協調図以外の文書を多数使用することから完全に問題を解決できているわけではない。
【０００６】
また、非特許文献２では、ＵＭＬのクラス図を検証する手法が提案されている。しかし、非特許文献１の場合と同様、それ以外の文書には適用できないため、全ての問題を解決できたとは言えない。
【０００７】
ソフトウェア開発に使われるその他の文書の一つとして、ソフトウェアの動作を時系列に表現した仕様書／設計書が用いられる。以下では、ソフトウェアの動作を時系列に表す仕様書／設計書をシーケンス図と呼ぶ。シーケンス図は、ソフトウェアを構成するオブジェクトのメッセージの送受信でソフトウェアの動作を表現する。この時、メッセージのやりとりが矛盾なくソフトウェアの動作を表すことができているかどうかを判断することが困難であるため、シーケンス図に誤りが含まれ易い原因になっていた。
【０００８】
シーケンス図は、図１に示すように、ソフトウェアの動作を、動作の主体となるオブジェクトと、当該動作の内容を表すメッセージ名及び動作に使用する情報を表すパラメータからなり、前記オブジェクト間に時系列に配置されるメッセージとにより表現してなるものである。なお、説明を簡単化するため、以下、メッセージ名＝メッセージとして説明する。
【０００９】
シーケンス図に記述されるソフトウェア動作の典型的な誤りは、不要な動作が記述されていることと、必要な動作が記述されていないことがある。その誤りはシーケンス図上で、以下のような不整合を含むオブジェクトの動作として記述される場合がある。
【００１０】
・他のオブジェクトから受信していない情報を送信する。
【００１１】
・他のオブジェクトから受信した情報を送信しない。
【００１２】
図２は上記の不整合を含むシーケンス図の一例を示すものである。図２において、オブジェクト２はオブジェクト１からメッセージ１でパラメータａ，ｂを受け取り、オブジェクト３にメッセージ２でパラメータａ，ｃを送信している。この場合、オブジェクト２はメッセージ１を受信した段階でパラメータａ，ｂのみを保有していることになる。その後、メッセージ２で送信しているパラメータはａ，ｃであるが、オブジェクト２はその段階ではパラメータｃを保有していない。つまり、オブジェクト２は保有していないパラメータをオブジェクト３に送信しようとしており、これはソフトウェアの動作として不整合が生じていることになる。
【００１３】
図２のシーケンス図は単純であるので、このような不整合を発見することは容易であるが、より大規模で複雑なシーケンス図の不整合を発見することは困難である。
【非特許文献１】中西啓之、三浦孝夫「記述論理を用いたＵＭＬ整合性の検証システムの実現」、ＤＥＷＳ２００５論文集、１−Ａ−ｏ４、２００５年５月２日発行
【非特許文献２】佐藤  健、兼岩  憲「ＵＭＬのクラス図における論理プログラミングを用いた無矛盾検査について」、日本ソフトウェア科学会第２２回大会論文集、ＰＤ−１１、２００５年発行
【発明の開示】
【発明が解決しようとする課題】
【００１４】
シーケンス図が上記の不整合を含んだまま開発を進めた場合、不整合を含んだシーケンス図に従って開発を行った後に、不整合の原因となった誤りが発見され、開発をやり直すという手戻りが起こる可能性がある。そこで、シーケンス図の不整合を検出し、手戻りの発生を未然に防ぐ技術が必要である。
【００１５】
本発明は、ソフトウェア開発においてソフトウェアの動作を時系列に表現したシーケンス図の不整合を検出する装置、そのプログラム及び方法を提供することを目的とする。
【課題を解決するための手段】
【００１６】
シーケンス図の不整合を検出するために、オブジェクト毎に送信したパラメータと受信したパラメータを記録する。シーケンス図は時系列のソフトウェア動作を表したものであるため、オブジェクトが送受信するメッセージを時系列にたどって検出処理を行う。
【００１７】
まず、シーケンス図中のオブジェクト毎に、当該オブジェクトが送信したメッセージのパラメータを記録する送信バッファ及び当該オブジェクトが受信したメッセージのパラメータを記録する受信バッファを用意する。これらのバッファはそのオブジェクトが送受信したパラメータを記録するために用いる。図３はオブジェクト毎に用意された送信バッファ及び受信バッファのイメージである。
【００１８】
本発明では、図４に示す以下のフローでシーケンス図の不整合を検出する。
【００１９】
時系列の順番でメッセージを取得し、そのメッセージの送信オブジェクト、受信オブジェクトに対して、次の処理を行う。
【００２０】
ｓ１：シーケンス図を上から時系列にたどってメッセージを取得する。
【００２１】
ｓ２：取得したメッセージのパラメータが、当該メッセージを送信したオブジェクトである送信オブジェクトに対応する受信バッファに記録されているか否かを調べ、記録されていればｓ３へ、記録されていなければｓ４へ進む。但し、一つのメッセージは複数のパラメータを扱う可能性があるので、一つ一つのパラメータ毎に調べて処理する。
【００２２】
ｓ３：記録されていたパラメータは、既に受信したことのあるパラメータを送信したという事実を記録するために、前記送信オブジェクトに対応する送信バッファに追加・記録する。ｓ５へ。
【００２３】
ｓ４：記録されていなかったパラメータは、前記送信オブジェクトが受信していないパラメータを送信しようとしているという旨の不整合を記録する。ｓ５へ。
【００２４】
ｓ５：取得したメッセージのパラメータを、当該メッセージを受信したオブジェクトである受信オブジェクトに対応する受信バッファに追加・記録する。これにより、オブジェクトが受信したパラメータを記録する。ｓ６へ。
【００２５】
ｓ６：取得したメッセージのパラメータを、前記受信オブジェクトに対応する送信バッファから削除する。これにより、オブジェクトが受信したパラメータがまだ使用されていないことを記録する。ｓ７へ。
【００２６】
ｓ７：全てのメッセージを取得し終わったか調べる。まだ終わっていないならｓ１へ戻る。終わったならばｓ８へ。
【００２７】
ｓ８：全てのオブジェクトについて、その送信バッファの記録内容と受信バッファの記録内容とを比較する。記録内容が同一であれば終了する。同一でないならば、ｓ９へ。
【００２８】
ｓ９：オブジェクトの受信バッファの記録内容と送信バッファの記録内容とが同一でないということは、オブジェクトが受信したパラメータの中でまだ送信していないパラメータが存在するということを意味する。パラメータが未使用であるという不整合を記録して終了する。
【００２９】
なお、ｓ２〜ｓ４と、ｓ５，ｓ６とは逆の順序で行っても構わない。
【発明の効果】
【００３０】
本発明によれば、オブジェクト毎に当該オブジェクトが送信したメッセージのパラメータ及び受信したメッセージのパラメータを送信バッファ及び受信バッファに記録することにより、受信していないパラメータを送信しようとしたり、受信したがどこにも送信していないパラメータ（未使用パラメータ）が存在するという不整合を検出できる。
【発明を実施するための最良の形態】
【００３１】
＜ソフトウェア仕様書／設計書の不整合検出装置＞
図５は本発明のソフトウェア仕様書／設計書の不整合検出装置の実施の形態の一例を示すもので、図中、１はシーケンス図保存部、２は送信バッファ部、３は受信バッファ部、４は不整合記録部、５はメッセージ取得部、６は送信オブジェクト処理部、７は受信オブジェクト処理部、８はバッファ比較部、９は不整合検出結果表示部である。
【００３２】
シーケンス図保存部１は、図示しないキーボード等から直接入力され又は記憶媒体から読み出されて入力され又は通信媒体を介して他の装置等から入力された、不整合を検出しようとするソフトウェア仕様書／設計書、ここではシーケンス図を保存する。
【００３３】
送信バッファ部２は、オブジェクトが送信したパラメータを記録するオブジェクト毎の送信バッファを保持している。受信バッファ部３は、オブジェクトが受信したパラメータを記録するオブジェクト毎の受信バッファを保持している。
【００３４】
なお、オブジェクト毎の送信バッファ及び受信バッファは、事前に、シーケンス図保存部１に保存されたシーケンス図からオブジェクトに関する情報を読み出して各オブジェクトに対応する送信バッファ及び受信バッファをそれぞれ、送信バッファ部２及び受信バッファ部３に作成するようにしても良いし、後述するようにメッセージ取得部５においてメッセージとともに当該メッセージを送信したオブジェクトである送信オブジェクトの識別情報及び当該メッセージを受信したオブジェクトである受信オブジェクトの識別情報を取得した際に、該取得した送信オブジェクトの識別情報に対応する送信バッファ及び受信バッファ、並びに該取得した受信オブジェクトの識別情報に対応する送信バッファ及び受信バッファがそれぞれ送信バッファ部２及び受信バッファ部３内に存在するか否かを調べ、存在しなければこれらの送信バッファ及び受信バッファをそれぞれ、送信バッファ部２及び受信バッファ部３内に作成するようにしても良い。
【００３５】
不整合記録部４は、検出対象のシーケンス図中の不整合の検出結果を記録する。
【００３６】
メッセージ取得部５は、シーケンス図保存部１に保存されたシーケンス図からメッセージを時系列順に取得、厳密には当該メッセージを送信したオブジェクトである送信オブジェクトの識別情報及び当該メッセージを受信したオブジェクトである受信オブジェクトの識別情報とともに取得し、送信オブジェクト処理部６及び受信オブジェクト処理部７へ出力し、これを前記シーケンス図中の全てのメッセージに対して行う。
【００３７】
送信オブジェクト処理部６は、取得したメッセージのパラメータが受信バッファ部３中の当該メッセージを送信したオブジェクトである送信オブジェクト（の識別情報）に対応する受信バッファに記録されているか否かを判定し、記録されていれば前記パラメータを送信バッファ部２中の前記送信オブジェクト（の識別情報）に対応する送信バッファに記録し、記録されていなければ前記送信オブジェクトが未受信のパラメータを送信しようとしている旨の不整合の検出結果を不整合記録部４に記録する。
【００３８】
受信オブジェクト処理部７は、取得したメッセージのパラメータを受信バッファ部３中の当該メッセージを受信したオブジェクトである受信オブジェクト（の識別情報）に対応する受信バッファに記録するとともに送信バッファ部２中の前記受信オブジェクト（の識別情報）に対応する送信バッファから削除する。
【００３９】
なお、送信オブジェクト処理部６及び受信オブジェクト処理部７は、メッセージ取得部５が取得したシーケンス図中の全てのメッセージに対して同様の処理を行う。
【００４０】
バッファ比較部８は、全てのオブジェクトについて、送信バッファ部２中の送信バッファの記録内容と受信バッファ部３中の受信バッファの記録内容とを比較し、同一でない場合は未使用なパラメータが存在する旨の不整合の検出結果を不整合記録部４に記録する。
【００４１】
不整合検出結果表示部９は、不整合記録部４の記録内容を読み取り、検出対象のシーケンス図における不整合の検出結果を（図示しない表示部などに）表示する。
【００４２】
なお、前述した装置は、周知のコンピュータ上に実現することもでき、この際、前記シーケンス図保存部１、送信バッファ部２、受信バッファ部３及び不整合記録部４はコンピュータにおけるハードディスク、メモリ等の記憶装置によって構成され、また、メッセージ取得部５、送信オブジェクト処理部６、受信オブジェクト処理部７、バッファ比較部８及び不整合検出結果表示部９はコンピュータにおける演算処理装置（ＣＰＵ）、表示装置とともに図４のフローチャートに対応するプログラムによって構成される。
【００４３】
＜ソフトウェア仕様書／設計書の不整合検出方法＞
次に、本発明によるソフトウェア仕様書／設計書の不整合検出方法を、図４のフローチャート、図５の装置構成図を用いて説明する。なお、送信バッファ部２及び受信バッファ部３には、検出対象のシーケンス図中のオブジェクトにそれぞれ対応する送信バッファ及び受信バッファが作成済みであるものとする。
【００４４】
まず、メッセージ取得部５は、シーケンス図保存部１から、該シーケンス図保存部１に保存されたシーケンス図中のメッセージを時系列の順番で上から１つ、当該メッセージの送信オブジェクトの識別情報及び受信オブジェクトの識別情報とともに取得し、送信オブジェクト処理部６及び受信オブジェクト処理部７へ引き渡す（ｓ１）。
【００４５】
次に、送信オブジェクト処理部６は、メッセージ取得部５から渡されたメッセージのパラメータが受信バッファ部３中の当該メッセージの送信オブジェクト（の識別情報）に対応する受信バッファに記録されているか否かを判定し（ｓ２）、記録されていれば前記パラメータを送信バッファ部２中の前記送信オブジェクト（の識別情報）に対応する送信バッファに記録し（ｓ３）、記録されていなければ前記送信オブジェクトが未受信のパラメータを送信しようとしている旨の不整合の検出結果を不整合記録部４に記録する（ｓ４）。
【００４６】
また、受信オブジェクト処理部７は、メッセージ取得部５から渡されたメッセージのパラメータを受信バッファ部３中の当該メッセージの受信オブジェクト（の識別情報）に対応する受信バッファに記録する（ｓ５）とともに送信バッファ部２中の前記受信オブジェクト（の識別情報）に対応する送信バッファから削除する（ｓ６）。
【００４７】
メッセージ取得部５は、シーケンス図保存部１に保存されたシーケンス図中の全てのメッセージについて、前記同様なシーケンス図保存部１からの取得、並びに送信オブジェクト処理部６及び受信オブジェクト処理部７への引き渡しを繰り返す（ｓ７）。
【００４８】
次に、バッファ比較部８は、全てのオブジェクトについて、送信バッファ部２中の送信バッファの記録内容と受信バッファ部３中の受信バッファの記録内容とを比較し（ｓ８）、同一でない場合は未使用なパラメータが存在する旨の不整合の検出結果を不整合記録部４に記録する（ｓ９）。
【００４９】
また、必要に応じて、不整合検出結果表示部９は、不整合記録部４の記録内容を読み取り、検出対象のシーケンス図における不整合の検出結果を表示する。
【実施例１】
【００５０】
以下、本発明によるソフトウェア仕様書／設計書の不整合検出について具体的な例、ここでは図６に示すシーケンス図を不整合検出対象として、本発明の装置へ入力した場合の動作を述べる。図６はオブジェクトとしてＡ，Ｂ，Ｃ，Ｄが存在し、図のようなソフトウェアの動作を表現している。「メッセージ１」等がメッセージ名であり、「ａ」「ｂ」等をパラメータとする。
【００５１】
以下では、オブジェクトＡの送信バッファを送信バッファＡ、受信バッファを受信バッファＡと呼び、その他のオブジェクトについても同様とする。
【００５２】
●始めにメッセージ取得部５がシーケンス図保存部１からメッセージ１を取得し、送信オブジェクトＡ、受信オブジェクトＢについてそれぞれ処理する。
【００５３】
・送信オブジェクト処理部６：受信バッファＡはこの段階で空なので、メッセージ１のパラメータａ，ｂはそれぞれステップｓ２でＮＯと判定され、ステップｓ４へ進み、不整合を記録する。
【００５４】
・受信オブジェクト処理部７：ステップｓ５で受信バッファＢにパラメータａ，ｂを追加する。
【００５５】
・メッセージ１を終了後のバッファ部２，３、不整合記録部４の状況：
＞受信バッファＢ（ａ，ｂ）
＞不整合記録部
☆「未受信パラメータ：メッセージ１，オブジェクトＡ（ａ，ｂ）」。
【００５６】
●メッセージ２を取得し、送信オブジェクトＢ、受信オブジェクトＣをそれぞれ処理する。
【００５７】
・送信オブジェクト処理部６：受信バッファＢにはａ，ｂが保存されているので、ステップｓ２でＹＥＳと判定され、ステップｓ３へ進み、送信バッファＢにａ，ｂを追加する。
【００５８】
・受信オブジェクト処理部７：ステップｓ５で受信バッファＣにパラメータａ，ｂを追加する。
【００５９】
・メッセージ２を終了後のバッファ部２，３、不整合記録部４の状況：
＞受信バッファＢ（ａ，ｂ）
＞送信バッファＢ（ａ，ｂ）
＞受信バッファＣ（ａ，ｂ）
＞不整合記録部
☆「未受信パラメータ：メッセージ１，オブジェクトＡ（ａ，ｂ）」。
【００６０】
●メッセージ３を取得し、送信オブジェクトＣ、受信オブジェクトＢをそれぞれ処理する。
【００６１】
・送信オブジェクト処理部６：受信バッファＣが保存しているパラメータはａ，ｂなので、メッセージ２のパラメータｃ，ｄはそれぞれステップｓ２でＮＯと判定され、ステップｓ４へ進み、不整合を記録する。
【００６２】
・受信オブジェクト処理部７：ステップｓ５で受信バッファＢにパラメータｃ，ｄを追加する。
【００６３】
・メッセージ３を終了後のバッファ部２，３、不整合記録部４の状況：
＞受信バッファＢ（ａ，ｂ，ｃ，ｄ）
＞送信バッファＢ（ａ，ｂ）
＞受信バッファＣ（ａ，ｂ）
＞不整合記録部
☆「未受信パラメータ：メッセージ１，オブジェクトＡ（ａ，ｂ）」
☆「未受信パラメータ：メッセージ３，オブジェクトＣ（ｃ，ｄ）」。
【００６４】
●メッセージ４を取得し、送信オブジェクトＢ、受信オブジェクトＤをそれぞれ処理する。
【００６５】
・送信オブジェクト処理部６：受信バッファＢが保存しているパラメータはａ，ｂ，ｃ，ｄなので、メッセージ４のパラメータｃ，ｄはステップｓ２でＹＥＳと判定され、送信バッファＢにｃ，ｄを追加する。また、メッセージ４のパラメータｅはステップｓ２でＮＯと判定され、ステップｓ４へ進み、不整合を記録する。
【００６６】
・受信オブジェクト処理部７：ステップｓ５で受信バッファＤにパラメータｃ，ｄ，ｅを追加する。
【００６７】
・メッセージ４を終了後のバッファ部２，３、不整合記録部４の状況：
＞受信バッファＢ（ａ，ｂ，ｃ，ｄ）
＞送信バッファＢ（ａ，ｂ，ｃ，ｄ）
＞受信バッファＣ（ａ，ｂ）
＞受信バッファＤ（ｃ，ｄ，ｅ）
＞不整合記録部
☆「未受信パラメータ：メッセージ１，オブジェクトＡ（ａ，ｂ）」
☆「未受信パラメータ：メッセージ３，オブジェクトＣ（ｃ，ｄ）」
☆「未受信パラメータ：メッセージ４，オブジェクトＢ（ｅ）」。
【００６８】
●メッセージ５を取得し、送信オブジェクトＤ、受信オブジェクトＢをそれぞれ処理する。
【００６９】
・送信オブジェクト処理部６：受信バッファＤが保存しているパラメータはｃ，ｄ，ｅなので、メッセージ５のパラメータｃはステップｓ２でＹＥＳと判定され、送信バッファＤにｃを追加する。また、メッセージ５のパラメータｂ，ｆ，ｇはステップｓ２でＮＯと判定され、ステップｓ４へ進み、不整合を記録する。
【００７０】
・受信オブジェクト処理部７：ステップｓ５で受信バッファＢにパラメータｂ，ｃ，ｆ，ｇを追加する。また、送信バッファＢにｂ，ｃが存在しているので、ステップｓ６で送信バッファＢからｂ，ｃを削除する。
【００７１】
・メッセージ５を終了後のバッファ部２，３、不整合記録部４の状況：
＞受信バッファＢ（ａ，ｂ，ｃ，ｄ，ｆ，ｇ）
＞送信バッファＢ（ａ，ｄ）
＞受信バッファＣ（ａ，ｂ）
＞受信バッファＤ（ｃ，ｄ，ｅ）
＞送信バッファＤ（ｃ）
＞不整合記録部
☆「未受信パラメータ：メッセージ１，オブジェクトＡ（ａ，ｂ）」
☆「未受信パラメータ：メッセージ３，オブジェクトＣ（ｃ，ｄ）」
☆「未受信パラメータ：メッセージ４，オブジェクトＢ（ｅ）」
☆「未受信パラメータ：メッセージ５，オブジェクトＤ（ｂ，ｆ，ｇ）」。
【００７２】
●メッセージ６を取得し、送信オブジェクトＢ、受信オブジェクトＡをそれぞれ処理する。
【００７３】
・送信オブジェクト処理部６：受信バッファＢが保存しているパラメータはａ，ｂ，ｃ，ｄ，ｆ，ｇなので、メッセージ６のパラメータｆ，ｇはステップｓ２でＹＥＳと判定され、送信バッファＢにｆ，ｇを追加する。
【００７４】
・受信オブジェクト処理部７：ステップｓ５で受信バッファＡにパラメータｆ，ｇを追加する。
【００７５】
・メッセージ６を終了後のバッファ保存部、不整合記録部の状況：
＞受信バッファＢ（ａ，ｂ，ｃ，ｄ，ｆ，ｇ）
＞送信バッファＢ（ａ，ｄ，ｆ，ｇ）
＞受信バッファＣ（ａ，ｂ）
＞受信バッファＤ（ｃ，ｄ，ｅ）
＞送信バッファＤ（ｃ）
＞受信バッファＡ（ｆ，ｇ）
＞不整合記録部
☆「未受信パラメータ：メッセージ１，オブジェクトＡ（ａ，ｂ）」
☆「未受信パラメータ：メッセージ３，オブジェクトＣ（ｃ，ｄ）」
☆「未受信パラメータ：メッセージ４，オブジェクトＢ（ｅ）」
☆「未受信パラメータ：メッセージ５，オブジェクトＤ（ｂ，ｆ，ｇ）」。
【００７６】
●全てのメッセージが終了したのでバッファ比較部８が全てのオブジェクトの送信バッファ、受信バッファを比較する。
【００７７】
・オブジェクトＡ：受信バッファＡがｆ，ｇを持っており、送信バッファＡが空なので、パラメータｆ，ｇが未使用であるということを不整合記録部４に記録する。
【００７８】
・オブジェクトＢ：バッファを比較し、パラメータｂ，ｃが未使用であることを記録する。
【００７９】
・オブジェクトＣ：バッファを比較し、パラメータａ，ｂが未使用であることを記録する。
【００８０】
・オブジェクトＤ：バッファを比較し、パラメータｄ，ｅが未使用であることを記録する。
【００８１】
・不整合記録部
＞「未受信パラメータ：メッセージ１，オブジェクトＡ（ａ，ｂ）」
＞「未受信パラメータ：メッセージ３，オブジェクトＣ（ｃ，ｄ）」
＞「未受信パラメータ：メッセージ４，オブジェクトＢ（ｅ）」
＞「未受信パラメータ：メッセージ５，オブジェクトＤ（ｂ，ｆ，ｇ）」
＞「未使用パラメータ：オブジェクトＡ（ｆ，ｇ）」
＞「未使用パラメータ：オブジェクトＢ（ｂ，ｃ）」
＞「未使用パラメータ：オブジェクトＣ（ａ，ｂ）」
＞「未使用パラメータ：オブジェクトＤ（ｄ，ｅ）」。
【００８２】
●不整合検出結果表示部９が不整合記録部４の内容を読み取り、シーケンス図の不整合検出結果を表示する。
【実施例２】
【００８３】
実施例１のシーケンス図は、全てのメッセージが連続してつながっているソフトウェアの動作を表していた。次に、図７のようなメッセージが連続しないシーケンス図の実施例について説明する。
【００８４】
●メッセージ１を取得し、送信オブジェクトＡ、受信オブジェクトＢをそれぞれ処理する。
【００８５】
・送信オブジェクト処理部６：受信バッファＡはこの段階で空なので、メッセージ１のパラメータａ，ｂはそれぞれステップｓ２でＮＯと判定され、ステップｓ４へ進み、不整合を記録する。
【００８６】
・受信オブジェクト処理部７：ステップｓ５で受信バッファＢにパラメータａ，ｂを追加する。
【００８７】
・メッセージ１を終了後のバッファ部２，３、不整合記録部４の状況：
＞受信バッファＢ（ａ，ｂ）
＞不整合記録部
☆「未受信パラメータ：メッセージ１，オブジェクトＡ（ａ，ｂ）」。
【００８８】
●メッセージ２を取得し、送信オブジェクトＢ、受信オブジェクトＣをそれぞれ処理する。
【００８９】
・送信オブジェクト処理部６：受信バッファＢにはａ，ｂが保存されているので、ステップｓ２でＹＥＳと判定され、ステップｓ３へ進み、送信バッファＢにａ，ｂを追加する。
【００９０】
・受信オブジェクト処理部７：ステップｓ５で受信バッファＣにパラメータａ，ｂを追加する。
【００９１】
・メッセージ２を終了後のバッファ部２，３、不整合記録部４の状況：
＞受信バッファＢ（ａ，ｂ）
＞送信バッファＢ（ａ，ｂ）
＞受信バッファＣ（ａ，ｂ）
＞不整合記録部
☆「未受信パラメータ＝メッセージ１，オブジェクトＡ（ａ，ｂ）」。
【００９２】
●メッセージ３を取得し、送信オブジェクトＢ、受信オブジェクトＣをそれぞれ処理する。
【００９３】
・送信オブジェクト処理部６：受信バッファＢが保存しているパラメータはａ，ｂなので、メッセージ３のパラメータａはステップｓ２でＹＥＳと判定され、送信バッファＢにａを追加する。また、メッセージ３のパラメータｃはステップｓ２でＮＯと判定され、ステップｓ４へ進み、不整合を記録する。
【００９４】
・受信オブジェクト処理部７：ステップｓ５で受信バッファＣにパラメータａ，ｃを追加する。
【００９５】
・メッセージ３を終了後のバッファ部２，３、不整合記録部４の状況：
＞受信バッファＢ（ａ，ｂ）
＞送信バッファＢ（ａ，ｂ）
＞受信バッファＣ（ａ，ｂ，ｃ）
＞不整合記録部
☆「未受信パラメータ：メッセージ１，オブジェクトＡ（ａ，ｂ）」
☆「未受信パラメータ：メッセージ３，オブジェクトＢ（ｃ）」。
【００９６】
●全てのメッセージが終了したのでバッファ比較部８が全てのオブジェクトの送信バッファ、受信バッファを比較する。
【００９７】
・オブジェクトＣ：バッファを比較し、パラメータａ，ｂ，ｃが未使用であることを記録する。
【００９８】
・不整合記録部
＞「未受信パラメータ：メッセージ１，オブジェクトＡ（ａ，ｂ）」
＞「未受信パラメータ：メッセージ３，オブジェクトＢ（ｃ）」
＞「未使用パラメータ：オブジェクトＣ（ａ，ｂ，ｃ）」。
【００９９】
●不整合検出結果表示部９が不整合記録部４の内容を読み取り、シーケンス図の不整合検出結果を表示する。
【図面の簡単な説明】
【０１００】
【図１】シーケンス図の一例を示す説明図
【図２】不整合を含むシーケンス図の一例を示す説明図
【図３】シーケンス図中のオブジェクト毎に用意された送信バッファ及び受信バッファの説明図
【図４】本発明のソフトウェア仕様書／設計書の不整合検出方法のフローチャート
【図５】本発明のソフトウェア仕様書／設計書の不整合検出装置の実施の形態の一例を示す構成図
【図６】実施例１に係る不整合検出対象のシーケンス図を示す説明図
【図７】実施例２に係る不整合検出対象のシーケンス図を示す説明図
【符号の説明】
【０１０１】
１：シーケンス図保存部、２：送信バッファ部、３：受信バッファ部、４：不整合記録部、５：メッセージ取得部、６：送信オブジェクト処理部、７：受信オブジェクト処理部、８：バッファ比較部、９：不整合検出結果表示部。
【図１】
2008197975.tif 000003
【図２】
2008197975.tif 000004
【図３】
2008197975.tif 000005
【図４】
2008197975.tif 000006
【図５】
2008197975.tif 000007
【図６】
2008197975.tif 000008
【図７】
2008197975.tif 000009