(57)【要約】【課題】既存のソフトウェア部品を組み合わせた複合部品をデータベースに登録して再利用できるとともに、複合部品の整合性を動的な振る舞いとともに検証できるようにする。【解決手段】部品データベース７に格納されたソフトウェア部品を組み合わせてソフトウェア構造図を編集するソフトウェア構造図エディタ１と、エディタ１からのソフトウェア構造図データＤ１を解析し部品間の静的な関連と動的な振る舞いを示すソフトウェア部品間接続情報Ｄ２を生成するとともに、ソフトウェア構造図中に含まれる複合部品を抽出するソフトウェア構造図解析部２と、複合部品のソフトウェア部品仕様データＤ３を生成する複合部品データ生成部３と、複合部品のソフトウェア部品仕様データをデータベースに登録する複合部品登録部４と、ソフトウェア部品間接続情報Ｄ２とデータベースに格納されたソフトウェア部品仕様データＤ３に基づいて部品間の整合性を検証する整合性検証部５を備える。【選択図】図１
2008171318.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェア部品データベースに格納されたソフトウェア部品を組み合わせて、ソフトウェアを図的に表現するソフトウェア構造図を編集するソフトウェア構造図エディタと、
前記ソフトウェア構造図エディタからのソフトウェア構造図データを解析しソフトウェア部品間の静的な関連とその関連に応じた動的な振る舞いを示すソフトウェア部品間接続情報を生成するとともに、前記ソフトウェア構造図中に含まれる複合部品を抽出するソフトウェア構造図解析部と、
前記ソフトウェア構造図解析部による前記複合部品についてのソフトウェア部品仕様データを生成する複合部品データ生成部と、
前記複合部品データ生成部による前記複合部品のソフトウェア部品仕様データを前記ソフトウェア部品データベースに登録する複合部品登録部と、
前記ソフトウェア構造図解析部による前記ソフトウェア部品間接続情報と前記ソフトウェア部品データベースに格納されたソフトウェア部品仕様データとに基づいてソフトウェア部品間の整合性を検証する整合性検証部とを備えたソフトウェア開発ツール。
【請求項２】
前記ソフトウェア構造図エディタは、前記ソフトウェア部品データベースに登録された前記複合部品についての前記ソフトウェア部品仕様データを再帰的に取り扱い可能である請求項１に記載のソフトウェア開発ツール。
【請求項３】
前記ソフトウェア構造図エディタは、前記ソフトウェア構造図データとして、静的構造データテーブルと動的振る舞いデータテーブルとを有し、開発対象とするソフトウェアの静的構造と動的構造を同時に表現可能なデータを生成する請求項１または請求項２に記載のソフトウェア開発ツール。
【請求項４】
前記ソフトウェア構造図エディタは、前記ソフトウェア部品データベースに登録済みのソフトウェア部品と未登録のソフトウェア部品とを色、形などによって区別して表示する請求項１から請求項３までのいずれかに記載のソフトウェア開発ツール。
【請求項５】
前記整合性検証部は、静的なソフトウェア構造だけでなく、前記ソフトウェア構造図に表現されたソフトウェアの動的振る舞いと、前記ソフトウェア部品仕様データに含まれる動作制約条件とを利用して、ソフトウェア設計の妥当性を検証する請求項１から請求項４までのいずれかに記載のソフトウェア開発ツール。
【請求項６】
前記整合性検証部は、ソフトウェア部品間の整合性が妥当ではないと判定したときは、類似のソフトウェア部品候補を使用者に提示して、正しいソフトウェア部品の選択を促す請求項５に記載のソフトウェア開発ツール。
【請求項７】
前記整合性検証部は、前記複合部品データ生成部による前記複合部品のソフトウェア部品仕様データのうち、整合性の検証が行われ妥当と判定されなかったソフトウェア部品については、その登録を抹消する請求項６に記載のソフトウェア開発ツール。
【請求項８】
前記整合性検証部は、前記ソフトウェア部品間接続情報に含まれる呼び出し種別を利用して、非同期呼び出しが行われる際には他のソフトウェア部品の動作についても同時に検証する請求項１から請求項７までのいずれかに記載のソフトウェア開発ツール。
【請求項９】
前記複合部品データ生成部は、前記ソフトウェア部品仕様データに、使用者の使用頻度に対応した安全度データを持つ請求項１から請求項８までのいずれかに記載のソフトウェア開発ツール。
【請求項１０】
前記複合部品データ生成部は、前記ソフトウェア部品の安全度データに、前記整合性検証部によって検証された頻度に応じた安全度データを加える請求項９に記載のソフトウェア開発ツール。
【請求項１１】
前記複合部品データ生成部は、前記複合部品のインターフェースとなるプログラミング仕様を、前記ソフトウェア部品データベースに格納された前記ソフトウェア部品仕様データから自動的に抽出し、前記複合部品のインターフェース仕様を生成する請求項１から請求項１０までのいずれかに記載のソフトウェア開発ツール。
【請求項１２】
前記ソフトウェア構造図エディタは、前記使用頻度または前記検証頻度に応じて選択可能なソフトウェア部品をフィルタリングして、使用者にソフトウェア部品の選択肢を限定させる請求項１から請求項１１までのいずれかに記載のソフトウェア開発ツール。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアの開発ツールにかかわり、特には、新規作成した複合部品の再利用の技術に関する。
【背景技術】
【０００２】
従来のソフトウェア開発ツールに関しては、例えば特許文献１に開示の技術がある。この従来のソフトウェア開発ツールの動作を図１３に示すフローチャートを用いて説明する。ステップＳ５１において、モジュール構造図エディタを用いてモジュール構造図を作成する。次いでステップＳ５２において、モジュール構造図エディタ上で作成した各モジュールにおける仕様を登録する。次いでステップＳ５３において、モジュール間データの整合性を検証する。以上のステップにより、モジュール仕様に基づいたモジュール間の整合性が検証され、表示される。
【特許文献１】特開平４−４４１７６号公報（第２−３頁、第１−５図）
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上記の従来のソフトウェア開発ツールでは、モジュール構造図エディタによってモジュール構造図を作成する際に、モジュールデータベース中に存在する既存のモジュール部品を選択し、それらを組み合わせた上で、モジュール間の整合性の検証を行う。しかし、モジュール部品を組み合わせて新規作成した複合部品については、これをさらにデータベースに登録して新たな部品として利用することはできない。また、複合部品を含めた整合性の検証を行うことはできない。
【０００４】
さらに、従来のソフトウェア開発ツールで利用されるモジュール構造図の場合は、ソフトウェアの静的な構造しか表現されておらず、ソフトウェア実行時の動的な振る舞いが表現されていない。そのため、モジュール間データの整合性の検証においては、モジュール間の静的な整合性しか検証せず、動的な動作を含めた検証を行うことができない。
【０００５】
本発明は、このような事情に鑑みて創作したものであり、既存のソフトウェア部品を組み合わせた複合部品をデータベースに登録して再利用することができるとともに、複合部品の整合性を動的な振る舞いとともに検証することができるソフトウェア開発ツールを提供することを目的としている。
【課題を解決するための手段】
【０００６】
本発明によるソフトウェア開発ツールは、
ソフトウェア部品データベースに格納されたソフトウェア部品を組み合わせて、ソフトウェアを図的に表現するソフトウェア構造図を編集するソフトウェア構造図エディタと、
前記ソフトウェア構造図エディタからのソフトウェア構造図データを解析しソフトウェア部品間の静的な関連とその関連に応じた動的な振る舞いを示すソフトウェア部品間接続情報を生成するとともに、前記ソフトウェア構造図中に含まれる複合部品を抽出するソフトウェア構造図解析部と、
前記ソフトウェア構造図解析部による前記複合部品についてのソフトウェア部品仕様データを生成する複合部品データ生成部と、
前記複合部品データ生成部による前記複合部品のソフトウェア部品仕様データを前記ソフトウェア部品データベースに登録する複合部品登録部と、
前記ソフトウェア構造図解析部による前記ソフトウェア部品間接続情報と前記ソフトウェア部品データベースに格納されたソフトウェア部品仕様データとに基づいてソフトウェア部品間の整合性を検証する整合性検証部とを備えたものである。
【０００７】
この構成においては、ソフトウェア構造図エディタは、ソフトウェア部品データベースから読み出したソフトウェア部品を配置し、またソフトウェア部品を組み合わせて複合部品として配置し、ソフトウェア構造図データとして出力する。このソフトウェア構造図は、ソフトウェア部品間の静的な関係だけでなく、動的な振る舞いも同時に表現する。ソフトウェア構造図解析部は、ソフトウェア構造図エディタによるソフトウェア構造図データのソフトウェア構造を解析し、ソフトウェア部品間の静的な関連とその関連に応じた動的な振る舞いの情報を抽出し、ソフトウェア部品間接続情報として出力する。さらに、ソフトウェア構造図中に存在し得る複合部品を抽出する。既存ソフトウェア部品の組み合わせによる新たな複合部品が抽出された場合には、複合部品データ生成部は、その複合部品についてのソフトウェア部品仕様データを生成し、複合部品登録部は複合部品のソフトウェア部品仕様データをソフトウェア部品データベースに登録する。ここで登録された複合部品は、新たなソフトウェア部品として次のソフトウェア構造図の作成に利用することが可能となる。整合性検証部は、ソフトウェア構造図解析部からのソフトウェア部品間接続情報と、ソフトウェア部品データベースに格納されたソフトウェア部品仕様データとに基づいて、開発対象ソフトウェアの各モジュール間の整合性を検証する。このようにして、既存のソフトウェア部品を組み合わせた複合部品をデータベースに登録して再利用することが可能になるとともに、複合部品の整合性を動的な振る舞いとともに検証し、ソフトウェア設計の妥当性を判定することが可能となる。
【０００８】
上記構成のソフトウェア開発ツールにおいて、前記ソフトウェア構造図エディタは、前記ソフトウェア部品データベースに登録された前記複合部品についての前記ソフトウェア部品仕様データを再帰的に取り扱うものとする。
【０００９】
また上記構成のソフトウェア開発ツールにおいて、前記ソフトウェア構造図エディタは、前記ソフトウェア構造図データとして、静的構造データテーブルと動的振る舞いデータテーブルとを有し、開発対象とするソフトウェアの静的構造と動的構造を同時に表現可能なデータを生成するという態様がある。このように構成すれば、静的構造と動的構造との同時的確認を通じて、作業効率を向上させることが可能となる。
【００１０】
また上記構成のソフトウェア開発ツールにおいて、前記ソフトウェア構造図エディタは、前記ソフトウェア部品データベースに登録済みのソフトウェア部品と未登録のソフトウェア部品とを色、形などによって区別して表示するという態様がある。このように構成すれば、ソフトウェア構造図エディタによって選択表示されたソフトウェア部品が登録済みのものかそうでないのかの確認を容易に行うことが可能となる。
【００１１】
また上記構成のソフトウェア開発ツールにおいて、前記整合性検証部は、静的なソフトウェア構造だけでなく、前記ソフトウェア構造図に表現されたソフトウェアの動的振る舞いと、前記ソフトウェア部品仕様データに含まれる動作制約条件とを利用して、ソフトウェア設計の妥当性を検証するという態様がある。このように構成すれば、動的振る舞いと動作制約条件のフィルタリングを通じて、検証の精度を向上させることが可能となる。
【００１２】
また上記構成のソフトウェア開発ツールにおいて、前記整合性検証部は、ソフトウェア部品間の整合性が妥当ではないと判定したときは、類似のソフトウェア部品候補を使用者に提示して、正しいソフトウェア部品の選択を促すという態様がある。このように構成すれば、整合性検証でいったんは妥当でないと判定した場合でも、妥当であろう次の判定へ進む際のソフトウェア部品選択の作業効率を向上させることが可能となる。
【００１３】
また上記構成のソフトウェア開発ツールにおいて、前記整合性検証部は、前記複合部品データ生成部による前記複合部品のソフトウェア部品仕様データのうち、整合性の検証が行われ妥当と判定されなかったソフトウェア部品については、その登録を抹消するという態様がある。このように構成すれば、新規作成の複合部品のソフトウェア部品仕様データが不適格な場合には、そのソフトウェア部品仕様データをソフトウェア部品データベースから抹消することを通じて、以降の作業効率の低下を抑制することが可能となる。
【００１４】
また上記構成のソフトウェア開発ツールにおいて、前記整合性検証部は、前記ソフトウェア部品間接続情報に含まれる呼び出し種別を利用して、非同期呼び出しが行われる際には他のソフトウェア部品の動作についても同時に検証するという態様がある。このように構成すれば、時間的な余裕を利用して他のソフトウェア部品も検証できるので、作業効率が向上する。
【００１５】
また上記構成のソフトウェア開発ツールにおいて、前記複合部品データ生成部は、前記ソフトウェア部品仕様データに、使用者の使用頻度に対応した安全度データを持つという態様がある。このように構成すれば、使用実績のあるソフトウェア部品を利用して、品質のより高いソフトウェア設計を行うことが可能となる。
【００１６】
また上記構成のソフトウェア開発ツールにおいて、前記複合部品データ生成部は、前記ソフトウェア部品の安全度データに、前記整合性検証部によって検証された頻度に応じた安全度データを加えるという態様がある。このように構成すれば、検証実績のあるソフトウェア部品を利用して、品質のより高いソフトウェア設計を行うことが可能となる。
【００１７】
また上記構成のソフトウェア開発ツールにおいて、前記複合部品データ生成部は、前記複合部品のインターフェースとなるプログラミング仕様を、前記ソフトウェア部品データベースに格納された前記ソフトウェア部品仕様データから自動的に抽出し、前記複合部品のインターフェース仕様を生成するという態様がある。このように構成すれば、複合部品のインターフェース仕様を効率良く生成することが可能となる。
【００１８】
また上記構成のソフトウェア開発ツールにおいて、前記ソフトウェア構造図エディタは、前記使用頻度または前記検証頻度に応じて選択可能なソフトウェア部品をフィルタリングして、使用者にソフトウェア部品の選択肢を限定させるという態様がある。このように構成すれば、ソフトウェア部品の絞り込みを通じて、作業効率をさらに向上させることが可能となる。
【発明の効果】
【００１９】
本発明によれば、既存のソフトウェア部品を組み合わせた複合部品をデータベースに登録して再利用することができるとともに、複合部品の整合性を動的な振る舞いとともに検証することができる。
【発明を実施するための最良の形態】
【００２０】
以下、本発明にかかわるソフトウェア開発ツールの実施の形態を図面を用いて詳細に説明する。
【００２１】
図１は本発明の実施の形態におけるソフトウェア開発ツールの構成を示すブロック図である。図１において、７は既存のソフトウェア部品のデータを格納しているソフトウェア部品データベース、１はソフトウェア部品データベース７に格納されているソフトウェア部品を読み出して組み合わせ、ソフトウェアを図的に表現するソフトウェア構造図を編集するソフトウェア構造図エディタ、２はソフトウェア構造図エディタ１からのソフトウェア構造図データＤ１を解析しソフトウェア部品間の静的な関連とその関連に応じた動的な振る舞いを示すソフトウェア部品間接続情報Ｄ２を生成するとともに、ソフトウェア構造図中に含まれる複合部品を抽出するソフトウェア構造図解析部、３はソフトウェア構造図解析部２による複合部品についてのソフトウェア部品仕様データＤ３を生成する複合部品データ生成部、４は複合部品データ生成部３による複合部品のソフトウェア部品仕様データＤ３をソフトウェア部品データベース７に登録する複合部品登録部、５はソフトウェア構造図解析部２によるソフトウェア部品間接続情報Ｄ２とソフトウェア部品データベース７に格納されたソフトウェア部品仕様データＤ３とに基づいてソフトウェア部品間の整合性を検証する整合性検証部、６は整合性検証部５による検証結果を表示する検証結果表示部である。
【００２２】
次に、上記のように構成された本実施の形態のソフトウェア開発ツールの動作を説明する。
【００２３】
ソフトウェア構造図エディタ１は、ソフトウェア部品データベース７に格納されているソフトウェア部品を参照して配置する、または新規部品を作成して配置する、またはソフトウェア部品データベース７中に存在する既存のソフトウェア部品を組み合わせて複合部品として配置することにより、開発対象とするソフトウェアの構造を入力する。ソフトウェア構造図エディタ１で新規に作成されたソフトウェア部品は、ソフトウェア部品仕様データＤ３とともにソフトウェア部品データベース７に格納される。ここで入力されるソフトウェア構造図は、ソフトウェア部品間の静的な関係だけでなく、動的な振る舞いも同時に表現したものである。ソフトウェア構造図エディタ１によって作成されたソフトウェア構造図データＤ１はソフトウェア構造図解析部２へ出力される。
【００２４】
ソフトウェア構造図解析部２は、ソフトウェア構造図エディタ１から入力したソフトウェア構造図データＤ１について、ソフトウェア構造を解析する。この解析により、ソフトウェア部品間の静的な関連とその関連に応じた動的な振る舞いの情報が抽出され、ソフトウェア部品間接続情報Ｄ２として整合性検証部５へ出力される。さらに、ソフトウェア構造図解析部２によってソフトウェア構造図中に複合部品が存在することが抽出された場合には、その旨を複合部品データ生成部３に伝える。ここで複合部品とは、ソフトウェア部品データベース７に格納されている既存のソフトウェア部品を複数個組み合わせて新たに作成されたソフトウェア部品のことである。複合部品が存在するとき、複合部品データ生成部３は、既存のソフトウェア部品仕様データＤ３を基に、該当の複合部品のためのソフトウェア部品仕様データＤ３を自動的に生成する。そして、複合部品登録部４は、作成されたソフトウェア部品仕様データＤ３をソフトウェア部品データベース７に登録する。ここで登録された複合部品は、新たな追加部品として次のソフトウェア構造図の作成時に利用することができる。
【００２５】
そして、整合性検証部５は、ソフトウェア構造図解析部２からのソフトウェア部品間接続情報Ｄ２と、ソフトウェア部品データベース７に格納されたソフトウェア部品仕様データＤ３とに基づいて、開発対象ソフトウェアの各ソフトウェア部品間の整合性を検証し、その検証結果を検証結果表示部６に表示する。
【００２６】
図２にソフトウェア構造図の一例を示す。図２において、Ｐ１〜Ｐ４はソフトウェア部品を示し、１つの矩形で１つのソフトウェア部品を表す。ａ１はソフトウェア部品間の非同期呼び出しの関連を表現する矢印である。非同期呼び出し元から非同期呼び出し先に向かって、棒矢印でソフトウェア部品間を接続する。ここで、非同期呼び出しとは、タスク間メッセージ通信など、呼び出し先の処理完了待ちを伴わない呼び出しのことを指す。ａ２はソフトウェア部品間の同期呼び出しの関連を表現する矢印である。同期呼び出し元から同期呼び出し先に向かって、黒三角矢印でソフトウェア部品間を接続する。ここで、同期呼び出しとは、関数呼び出しなどの、呼び出し先の処理が完了するのを待ってから呼び出し元の処理を継続するような呼び出しのことを指す。ａ３，ａ４はソフトウェア部品間の動的振る舞いを表現する矢印である。ソフトウェア部品間の呼び出し順序と呼び出しの種類を表現する。ａ３は呼び出し元から呼び出し先に向かって同期呼び出しが行われることを示す。ｖ１は同期呼び出しの種類と全体の振る舞いの中での順序を表現する。ａ４は呼び出し元から呼び出し先に向かって非同期呼び出しが行われることを示す。ｔ１はソフトウェア部品が自身以外のソフトウェア部品と接続する入出力ポート（インターフェース）を表す。各ソフトウェア部品は入出力ポート間を経由して接続される。図２では、ソフトウェア部品ｍｏｄＡ，ｍｏｄＢ，ｍｏｄＣ，ｍｏｄＤがそれぞれ接続され、１：初期化、1.1：値設定、2：完了、3：処理開始、3.1：値設定、3.1.1：完了の順序で処理が実行されることを示す。Ｐ１におけるソフトウェア部品ｍｏｄＡは、既存のソフトウェア部品ｍｏｄαとｍｏｄβとの組み合わせからなる複合部品である。
【００２７】
図３と図４にソフトウェア構造図データＤ１を示す。ソフトウェア構造図データＤ１は、図３に示すモジュール間の静的構造データテーブルＴｂ１と、図４に示す動的振る舞いデータテーブルＴｂ２とからなる。図３と図４は、図２に示したソフトウェア構造図の一例をソフトウェア構造図データＤ１として表現したものである。
【００２８】
図３において、２１はソフトウェア部品のモジュール名を格納するレコードである。２２はレコード２１に格納されたソフトウェア部品から関連するソフトウェア部品のモジュール名を格納するレコードである。２３はソフトウェア部品間の関連種別を格納するレコードである。レコード２３には同期または非同期の種別が格納される。一例として、２４〜２６はソフトウェア部品ｍｏｄＤからソフトウェア部品ｍｏｄＡに向かって非同期の関連があることを表現する。これは、図２におけるａ１の非同期関連矢印に対応したソフトウェア構造図データＤ１である。
【００２９】
図４において、３１は動的振る舞いの動作順序を表す動作番号を格納するレコードである。３２は呼び出し元のソフトウェア部品のモジュール名を格納するレコードである。３３はレコード３２に格納された呼び出し元ソフトウェア部品から呼び出される呼び出し先のソフトウェア部品のモジュール名を格納するレコードである。３４は呼び出しの名前を格納するレコードである。３５は呼び出しの種別を格納するレコードである。一例として、３６〜４０はソフトウェア部品ｍｏｄＤからソフトウェア部品ｍｏｄＡに向かって、「完了」という呼び出し名で非同期の呼び出しが3.1.1の順番で行われることを表現する。
【００３０】
図５にソフトウェア構造図解析部２の処理フローを示す。ソフトウェア構造図解析部２は、ソフトウェア構造図エディタ１から出力されたソフトウェア構造図データＤ１を受け取り、ソフトウェア部品の中にさらに既存のソフトウェア部品を包含した複合部品が存在するかどうか解析を行う。
【００３１】
まず、ソフトウェア構造図エディタ１から出力されたソフトウェア構造図データＤ１のうちの静的構造データテーブルＴｂ１を読み込む（ステップＳ１）。次に、読み込んだ静的構造データテーブルＴｂ１に含まれるすべてのソフトウェア部品について、繰り返し処理を開始する（ステップＳ２）。処理対象のソフトウェア部品がさらに他のソフトウェア部品を含む場合には、複合部品と判定する（ステップＳ３）。複合部品であった場合には、該当モジュールを複合部品として、複合部品データ生成部３に通知し（ステップＳ４）、次いでソフトウェア部品間接続情報生成処理（ステップＳ５）を行う。複合部品でなかった場合には、ステップＳ４を飛び越してソフトウェア部品間接続情報生成処理（ステップＳ５）を行う。以上の処理が終了した後に、次のソフトウェア部品の処理に移る（ステップＳ６）。
【００３２】
ソフトウェア部品間接続情報生成処理（ステップＳ５）の処理のフローを以下に示す。まず、ソフトウェア構造図エディタ１から出力されたソフトウェア構造図データＤ１のうちの動的振る舞いデータテーブルＴｂ２を読み込む（ステップＳ１１）。次に、読み込んだ動的振る舞いデータテーブルＴｂ２に含まれるすべての動作番号について、繰り返し処理を開始する（ステップＳ１２）。次に、現在の処理対象の動作番号に対応する呼び出し先モジュールを動的振る舞いデータテーブルＴｂ２から取得する（ステップＳ１３）。次に、ステップＳ１３で取得した呼び出し先モジュールに対応するソフトウェア部品仕様データＤ３をソフトウェア部品データベース７から取得する（ステップＳ１４）。次に、ステップＳ１４で取得したソフトウェア部品仕様データＤ３からインターフェース仕様と制約条件を取得する（ステップＳ１５）。次に、ステップＳ１５で取得したインターフェース仕様と制約条件を利用して、現在の動作番号に対応するソフトウェア部品間接続情報レコードを生成し、ソフトウェア部品間接続情報テーブルＴｂ３に登録する（ステップＳ１６）。１つの動作番号に対して以上の処理が終了したら、次の動作番号について繰り返す（ステップＳ１７）。
【００３３】
図６にソフトウェア部品間接続情報テーブルＴｂ３を示す。図６において、５１は各ソフトウェア部品の動作の順番を示す動作番号である。５２は動作番号５１に対応した動作を指示する呼び出し元のソフトウェア部品のモジュール名である。５３は５２のソフトウェア部品から呼び出しされる呼び出し先ソフトウェア部品のモジュール名である。５４は呼び出し元ソフトウェア部品から呼び出しされる呼び出し先ソフトウェア部品の呼び出し名である。５５は５４の呼び出しの種別を表す呼び出し種別である。呼び出し種別としては、同期呼び出しか非同期呼び出しのいずれかが格納される。なお、この呼び出し種別については、同期、非同期だけでなく、メッセージ通信などの詳細な種別を格納してもよい。５６は呼び出し名５４で呼び出されるインターフェースの仕様を格納する呼び出し先インターフェース仕様である。インターフェース仕様は呼び出し種別を表すＳ（Synchronous：同期）またはＡ（Asynchronous：非同期）の識別子に続いて、引数の型を表す文字列が引数個数分接続された文字列として表現される。５７は５４の呼び出しが行われる際の制約条件である。この制約条件が満たされている場合にのみ、５４の呼び出しが成功する。一例として、５８〜６４は動作番号3.1.1の呼び出しを表現する。ソフトウェア部品ｍｏｄＤからｍｏｄＡに向かって「完了」という呼び出し名のインターフェースが非同期で呼び出される。その際のインターフェース仕様はＡ（Ｖ）であり、非同期呼び出しで引数は持たないことを示す。さらに、呼び出し時の制約条件はｍｏｄＢの処理が完了済みであることが必要なことを示す。
【００３４】
図７にソフトウェア部品仕様データＤ３を示す。ソフトウェア部品仕様データＤ３は、各ソフトウェア部品に各々対応してソフトウェア部品データベース７に格納される。図７において、７１は該当ソフトウェア部品のモジュール名を示す。７２は該当ソフトウェア部品が複合部品であった場合には、該当ソフトウェア部品に包含される包含モジュール名を示す。該当ソフトウェア部品が複合部品ではない場合には、包含モジュール名は格納されない。また、包含モジュール名は包含されるソフトウェア部品数分すべて格納される。７３は該当ソフトウェア部品の処理内容を示す。７４は提供インターフェースを示す。提供インターフェースは、該当ソフトウェア部品が部品外部に提供するインターフェースの仕様である。提供インターフェースの仕様は形式７５と種別７６に分けて格納され、形式７５は呼び出し種別を表すＳ（Synchronous：同期）またはＡ（Asynchronous：非同期）の識別子に続いて、引数の型を表す文字列が引数個数分接続された文字列として表現される。種別７６としては、同期呼び出しか非同期呼び出しのいずれかが格納される。なお、この呼び出し種別は同期、非同期だけでなく、メッセージ通信などの詳細な種別を格納してもよい。提供インターフェースは、該当ソフトウェア部品が部品外部に提供するインターフェースの個数分すべて格納される。７７は該当ソフトウェア部品が外部のソフトウェア部品を呼び出す、外部呼び出しを示す。外部呼び出しは、呼び出し先ソフトウェア部品のモジュール名７８と呼び出し種別７９に分けて格納される。呼び出し種別としては、同期呼び出しか非同期呼び出しのいずれかが格納される。なお、この呼び出し種別は同期、非同期だけでなく、メッセージ通信などの詳細な種別を格納してもよい。外部呼び出しは、該当ソフトウェア部品から呼び出される外部呼び出しの個数分すべて格納される。８０は該当ソフトウェア部品が使用する使用資源を示す。使用資源としては、該当ソフトウェア部品のＲＯＭ上のサイズ、動作時に使用するＲＡＭサイズなどを格納する。なお、使用資源には実行時間、バス占有時間などを含めることもできる。
【００３５】
８１は該当ソフトウェア部品がソフトウェア構造図エディタ１上に配置されて使用された回数を示す被利用回数を示す。被利用回数は、ソフトウェア設計における該当ソフトウェア部品の“重要度”を表現する。使用された回数がより多いソフトウェア部品ほど重要度の高いソフトウェア部品であること示す。
【００３６】
８２は整合性検証部５において該当ソフトウェア部品が検証された検証実施回数を示す。検証実施回数は、該当ソフトウェア部品の“安全度”を表現する。検証された回数がより多いソフトウェア部品ほど高品質で不具合の少ない安全なソフトウェア部品であることを示す。
【００３７】
８３は該当ソフトウェア部品の動作制約条件を示す。該当ソフトウェア部品が動作する際の制約条件を格納する。一例として、８４〜９９は複合部品ｍｏｄＡのソフトウェア部品仕様データＤ３の実例を示す。８４はモジュール名ｍｏｄＡであり、ｍｏｄα(８５)とｍｏｄβ(８６)を包含する複合部品であることを表現する。８７はｍｏｄＡの処理内容記述であり、全体処理統括制御を行うことを示す。８８，８９はｍｏｄＡが外部のソフトウェア部品に提供するインターフェースの１つめは非同期呼び出しで、引数を持たないことを示す。９０，９１はｍｏｄＡが外部のソフトウェア部品に提供するインターフェースの２つめは同期呼び出しで、引数を持たないことを示す。９２，９３はｍｏｄＡが呼び出しを行う外部のソフトウェア部品の１つめはｍｏｄＢであり、同期呼び出しが行われることを示す。９４，９５はｍｏｄＡが呼び出しを行う外部のソフトウェア部品の２つめはｍｏｄＣであり、非同期呼び出しが行われることを示す。９６はｍｏｄＡの使用する資源はＲＯＭ容量が１．２ＫＢであり、動作時に使用するＲＡＭ容量は０．２ＫＢであることを示す。９７はｍｏｄＡがソフトウェア構造図エディタ１上で使用された回数が１５回であることを示す。９８はｍｏｄＡが整合性検証部５で検証された回数が８回であることを示す。９９はｍｏｄＡの動作制約条件はないことを示す。
【００３８】
図８に複合部品データ生成部３の処理フローを示す。複合部品データ生成部３は、まず、ソフトウェア構造図解析部２から渡された静的構造データテーブルＴｂ１を取得する（ステップＳ２１）。次に、ソフトウェア構造図解析部２から指定されたモジュール名に包含されるモジュール名を取得する（ステップＳ２２）。次に、該当複合部品のモジュール名でソフトウェア部品仕様データＤ３を生成する（ステップＳ２３）。次に、該当複合部品に包含されるすべてのソフトウェア部品について繰り返しを開始する（ステップＳ２４）。
【００３９】
まず、ソフトウェア部品仕様データＤ３の包含モジュールフィールドに包含モジュール名を設定する（ステップＳ２５）。次に、動的振る舞いデータテーブルＴｂ２から該当複合部品を呼び出しているモジュールとその呼び出し名／種別を取得する（ステップＳ２６）。次に、ソフトウェア部品データベース７から包含されるモジュールのソフトウェア部品仕様データＤ３を取得する（ステップＳ２７）。次に、外部モジュールからの呼び出しに該当する包含モジュールの提供インターフェース仕様を取得する（ステップＳ２８）。次に、複合部品の提供インターフェースとして前ステップＳ２８で取得したインターフェース仕様を設定する（ステップＳ２９）。以上のステップをすべての包含ソフトウェア部品に対して繰り返す（ステップＳ３０）。
【００４０】
図９に整合性検証部５の処理フローを示す。整合性検証部５は、まず、ソフトウェア構造図解析部２からソフトウェア部品間接続情報Ｄ２を取得する（ステップＳ３１）。次に、ソフトウェア部品間接続情報Ｄ２に含まれる動作番号について繰り返しを開始する（ステップＳ３２）。次に、呼び出し元ソフトウェア部品のソフトウェア部品仕様データＤ３をソフトウェア部品データベース７から取得する（ステップＳ３３）。次に、呼び出し元ソフトウェア部品の動作仕様に従って動作条件を設定する（ステップＳ３４）。次に、呼び出し元ソフトウェア部品のソフトウェア部品仕様データＤ３をソフトウェア部品データベース７から取得する（ステップＳ３５）。次に、呼び出し先ソフトウェア部品の提供インターフェースとソフトウェア部品間接続情報Ｄ２の呼び出し先インターフェース仕様が一致するかどうか比較する（ステップＳ３６）。一致した場合には、現在の動作条件とソフトウェア部品間接続情報Ｄ２中の制約条件とを比較する（ステップＳ３７）。さらに一致した場合には、次の動作番号を繰り返す（ステップＳ３８）。すべての動作番号について繰り返しが完了した場合には、整合性が正しく検証されたと判定でき、検証結果表示部６に整合性検証完了の表示を指示する（ステップＳ３９）。
【００４１】
ステップＳ３６またはステップＳ３７において比較が一致しなかった場合には、検証中のソフトウェア部品が複合部品または新規部品であるかどうか検査する（ステップＳ４０）。複合部品または新規部品である場合には、ソフトウェア部品データベース７から該当のソフトウェア部品仕様データＤ３を抹消する（ステップＳ４１）。複合部品または新規部品でない場合には、ステップＳ４１は行わない。次に、検証結果表示部６に不整合の表示を指示する（ステップＳ４２）。
【００４２】
図１０にソフトウェア構造図エディタ１上にソフトウェア部品間の整合性の検証において不整合があった場合の表示例を示す。１０１はソフトウェア構造図エディタ１の画面である。１０２は現在編集中のソフトウェア構造図である。１０３は不整合が生じたソフトウェア部品に対応した代替ソフトウェア部品候補を表示する領域である。１０４〜１０６は不整合が生じたソフトウェア部品の代替ソフトウェア部品候補である。使用者は、ここで呈示された代替ソフトウェア部品を選択して、不整合の発生したソフトウェア部品の代わりに他のソフトウェア部品を利用することができる。
【００４３】
図１１にソフトウェア構造図エディタ１上でソフトウェア構造図を編集する際に、ソフトウェア部品データベース７に登録済みの部品と未登録の部品を区別して提示する表示例を示す。１１１はソフトウェア構造図エディタ１の画面である。１１２は現在編集中のソフトウェア構造図である。１１３はソフトウェア部品データベース７に未登録の複合部品を他の登録済み部品とは区別するために、網掛け表示した例である。１１４はソフトウェア部品データベース７に未登録の新規部品を他の登録済み部品とは区別するために、グレー表示した例である。
【００４４】
図１２にソフトウェア部品データベース７に登録済みの部品と未登録の部品を区別して提示する表示例を示す。１２１は検証前のソフトウェア構造図である。１２２は整合性検証部５で不整合と判定されたソフトウェア部品である。１２３は不整合と判定されたソフトウェア部品を入れ替えた後のソフトウェア構造図である。１２４は不整合の生じたソフトウェア部品ｍｏｄＢの代わりに使用した正しいソフトウェア部品ｍｏｄＺである。
【産業上の利用可能性】
【００４５】
本発明のソフトウェア開発ツールは、既存のソフトウェア部品を組み合わせてさらに新しいソフトウェア部品として利用することで、ソフトウェア部品の再利用性を高め、ソフトウェアの生産性、高品質化に寄与するソフトウェア開発ツールとして、広くソフトウェア設計一般に対して利用することができ、その産業上の利用可能性は非常に広くかつ大きい。
【図面の簡単な説明】
【００４６】
【図１】本発明の実施の形態におけるソフトウェア開発ツールの構成を示すブロック図
【図２】本発明の実施の形態におけるソフトウェア構造図の例
【図３】本発明の実施の形態におけるソフトウェア構造図データのうち静的構造データテーブルの図
【図４】本発明の実施の形態におけるソフトウェア構造図データのうち動的振る舞いデータテーブルの図
【図５】本発明の実施の形態におけるソフトウェア構造図解析処理の動作を示すフローチャート
【図６】本発明の実施の形態におけるソフトウェア部品間接続情報テーブルの図
【図７】本発明の実施の形態におけるソフトウェア部品仕様データの図
【図８】本発明の実施の形態における複合部品データ生成部の動作を示すフローチャート
【図９】本発明の実施の形態に整合性検証部の動作を示すフローチャート
【図１０】本発明の実施の形態におけるソフトウェア部品間の整合性の検証において不整合があった場合の表示例
【図１１】本発明の実施の形態におけるソフトウェア部品データベースに登録済みの部品と未登録の部品を区別して提示する表示例（その１）
【図１２】本発明の実施の形態におけるソフトウェア部品データベースに登録済みの部品と未登録の部品を区別して提示する表示例（その２）
【図１３】従来技術文献の代表図面
【符号の説明】
【００４７】
１  ソフトウェア構造図エディタ
２  ソフトウェア構造図解析部
３  複合部品データ生成部
４  複合部品登録部
５  整合性検証部
６  検証結果表示部
７  ソフトウェア部品データベース
Ｄ１  ソフトウェア構造図データ
Ｄ２  ソフトウェア部品間接続情報
Ｄ３  ソフトウェア部品仕様データ
Ｐ１〜Ｐ４  ソフトウェア部品
Ｔｂ１  静的構造データテーブル
Ｔｂ２  動的振る舞いデータテーブル
Ｔｂ３  ソフトウェア部品間接続情報テーブル
【図１】
2008171318.tif 000003
【図２】
2008171318.tif 000004
【図３】
2008171318.tif 000005
【図４】
2008171318.tif 000006
【図５】
2008171318.tif 000007
【図６】
2008171318.tif 000008
【図７】
2008171318.tif 000009
【図８】
2008171318.tif 000010
【図９】
2008171318.tif 000011
【図１０】
2008171318.tif 000012
【図１１】
2008171318.tif 000013
【図１２】
2008171318.tif 000014
【図１３】
2008171318.tif 000015