(57)【要約】【課題】プロセスフロー言語で記述するサービスベースアプリケーション設計で設計者の負担を軽減し、サービス間の有効な入出力データ接続を提示する方法と装置を提供する。【解決手段】過去のソフトウェア設計におけるサービスの入出力データの接続履歴を蓄積しておき、処理順序のみが記述されたサービスプロセスフローおよび処理対象となるサービスの選択情報から、選択したサービスの全ての入力に対し矛盾なく接続可能な他サービスの出力を任意に選択し前記入力と出力の接続組み合わせの生成確率を前記接続履歴から導出する処理を全ての接続組み合わせに対して行い、その中から前記生成確率が高い接続組み合わせを出力する。【選択図】図１
2007334627.tif 000002
【特許請求の範囲】
【請求項１】
特定の機能を実行するソフトウェア部品であるサービスを複数組み合わせて行なわれるソフトウェアの設計を支援するためのサービスベースソフトウェア設計支援方法であって、
前記サービスの１つ又は複数を組み合わせてその処理順序を定義したサービスプロセスフローを入力し、
前記入力したサービスプロセスフローを対象に、指定した１のサービスが有する１又は複数の入力変数に対してそれぞれのデータを提供し、そして、
前記指定したサービスより以前に存在する他のサービスの出力変数を１つずつ対応付けることによってソフトウェアの設計を支援するものにおいて、更に、
前記指定したサービスが有する全ての入力変数に対して、前記対応付けの全ての可能な組み合わせを生成し、
過去のソフトウェア設計の履歴情報に基づいて、前記生成した組み合わせについての生成確率を計算し、そして、
前記計算した生成確率が予め定めた条件を満たす組み合わせを抽出して出力することを特徴とするサービスベースソフトウェア設計支援方法。
【請求項２】
前記請求項１に記載したサービスベースソフトウェア設計支援方法において、前記過去のソフトウェア設計の履歴情報として、
過去のソフトウェア設計における任意のサービスの入力変数に対して別の任意のサービスの出力変数を対応付けた回数を、入力変数の名称、出力変数の名称、前記入力変数を有するサービスの名称、前記出力変数を有するサービスの名称の組み合わせで記録した直接接続履歴を含んでいることを特徴とするサービスベースソフトウェア設計支援方法。
【請求項３】
前記請求項２に記載したサービスベースソフトウェア設計支援方法において、前記過去のソフトウェア設計の履歴情報としては、更に、過去のソフトウェア設計における複数の入力変数を持つ任意のサービスの前記複数の入力変数のそれぞれに対して別の任意のサービスの複数の出力変数を対応付けた回数を、前記複数の出力変数の一の出力の名称、前記一の出力を有するサービスの名称、前記出力変数のうち前記一の出力と異なる他の出力の名称、前記他の出力を有するサービスの名称の組み合わせで記録した間接接続履歴を含んでいることを特徴とするサービスベースソフトウェア設計支援方法。
【請求項４】
特定の機能を実行するソフトウェア部品であるサービスを複数組み合わせて行なわれるソフトウェアの設計を支援するためのサービスベースソフトウェア設計支援装置であって、
過去のソフトウェア設計におけるサービスの入出力データの接続履歴情報を蓄積する記憶装置と、
前記サービスの１つ又は複数を組み合わせてその処理順序を定義したサービスプロセスフローを入力すると共に、入力した当該サービスプロセスフロー中の任意のサービスを選択する入力部と、
前記入力部により選択された任意のサービスが有する全ての入力変数に対して、対応付けの全ての可能な組み合わせを生成し、かつ、前記記憶装置に蓄積した過去のソフトウェア設計におけるサービスの入出力データの接続履歴情報に基づいて、前記生成した組み合わせについての生成確率を計算する処理装置と、そして、
前記処理装置により計算された前記生成確率を基にして、予め定めた条件を満たす組み合わせを出力する出力部とを備えていることを特徴とするサービスベースソフトウェア設計支援装置。
【請求項５】
前記請求項４に記載したサービスベースソフトウェア設計支援装置において、前記記憶装置は、
過去のソフトウェア設計における任意のサービスの入力変数に対して別の任意のサービスの出力変数を対応付けた回数を、入力変数の名称、出力変数の名称、前記入力変数を有するサービスの名称、前記出力変数を有するサービスの名称の組み合わせで記録した直接接続履歴テーブルと、
前記過去のソフトウェア設計の履歴情報としては、更に、過去のソフトウェア設計における複数の入力変数を持つ任意のサービスの前記複数の入力変数のそれぞれに対して別の任意のサービスの複数の出力変数を対応付けた回数を、前記複数の出力変数の一の出力の名称、前記一の出力を有するサービスの名称、前記出力変数のうち前記一の出力と異なる他の出力の名称、前記他の出力を有するサービスの名称の組み合わせで記録した間接接続履歴テーブルとを備えていることを特徴とするサービスベースソフトウェア設計支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、再利用を考慮して部品化されたソフトウェア部品であるWebサービスやコンポーネント等（以下、まとめて「サービス」と呼ぶ）を組み合わせることによって行われるソフトウェアの設計方法（以下、サービスベースソフトウェア設計）に関し、特に、ソフトウェア部品内でのサービス間における入出力変数の接続組み合わせの構築を支援するサービスベースソフトウェア設計支援方法、及び、そのための装置に関する。
【背景技術】
【０００２】
従来、サービスを組み合わせて構築するソフトウェアの設計においては、ソフトウェア内の各サービスの処理順序をＢＰＭＮ（Business Process Modeling Notation）やＢＰＥＬ４ＷＳ（Business Process Execution Language for Web Services）等のプロセスフロー言語で記述することによって、設計者が理解し易い形式でソフトウェアの動作仕様を記述することを可能にし、もって、ソフトウェア設計の効率を上げる試みが多く行なわれている。しかしながら、各サービスが生成するデータのやり取り、即ち、データフローについては、通常、設計者が各サービスの入出力変数を調べ、あるサービスの出力変数から得られるデータを別のサービスの入力変数に代入するといった対応付けを行う必要があることから、なお、工数が掛かるといった問題があった。
【０００３】
そこで、上述したサービスをベースとしたソフトウェア設計においては、例えば、以下の特許文献により知られるように、サービス間の入出力の対応付けを行う方法が幾つか提案されている。
【０００４】
【特許文献１】特開平１０−２２２３５７号公報
【特許文献２】特開２００５−３１７００７号公報
【０００５】
即ち、特許文献１では、サービス内のデータ名と入出力インタフェースとを対応付けたメタデータを蓄積した上で設計者が必要とするデータ名を入力すると、それを提供するサービスをメタデータから検索してアイコンで図示し、もって、サービス間のデータのやり取りをグラフィカルにリンクによって結び付けることでソフトウェアを構築するデータ再利用によるソフトウェア構築方法及びシステムが提案されている。
【０００６】
また、特許文献２では、各サービスにおいて満たす必要がある入出力データや性能等の制約条件を予め知識ベースとして蓄積しておき、設計者の要求仕様に基づく制約条件を満たすサービスを検索し、それらを組み合わせることでワークフローを生成し、更にその後、生成したワークフローに対応するペトリネットを生成してデータの流れのシミュレーションを行うことによって、スループットが最適な候補を選択するワークフロー自動生成システム、及び、ワークフロー分析及び制御システムが提案されている。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上述した通り、従来技術においても、サービスベースソフトウェア設計において、サービス間の入出力の対応付けを行う際に設計者の負担を軽減する方法が既に提案されており、これらを用いることで、その設計工数を削減することが期待できる。
【０００８】
しかしながら、上記特許文献１により知られる方法を使用した場合、サービスをアイコンにより表示すると共に入出力データの接続をリンクで図示することにより、グラフィカルな操作環境を提供することによって入出力の対応付けを設計者が容易に行うことが出来るようにしているものの、しかしながら、その対応付け自体は、やはり、従来と同様に、設計者が手作業で行う必要があった。
【０００９】
一方、上記特許文献２により知られる方法を使用した場合には、設計者の要求仕様と共に、知識ベースに蓄積された各サービスの制約条件を満たすよう、サービス間の入出力データを接続したワークフローを自動的に生成し、もって、シミュレーションの結果が良いものを提示することで設計者の負担を軽減している。しかしながら、この特許文献において記載された知識ベースにおける入出力データの制約の内容は、所謂、サービスの型など、形式的な制約のみを想定している。そのため、形式上は接続が可能ではあるが、実際には接続することが出来ない、あるいは、実際のソフトウェア設計では接続しないような入出力データの接続まで排除することは不可能であり、なお、設計者に負担を強いるものであった。
【００１０】
そこで、本発明は、上述した従来技術における課題に鑑みて達成されたものであり、即ち、プロセスフロー言語で記述を行うサービスベースアプリケーション設計において、設計者の負担を軽減して、ソフトウェア部品内でのサービス間における入出力変数の接続組み合わせの構築を可能にするサービスベースソフトウェア設計支援方法及びそのための装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明では、上記の目的を達成するため、まず、特定の機能を実行するソフトウェア部品であるサービスを複数組み合わせて行なわれるソフトウェアの設計を支援するためのサービスベースソフトウェア設計支援方法であって、前記サービスの１つ又は複数を組み合わせてその処理順序を定義したサービスプロセスフローを入力し、前記入力したサービスプロセスフローを対象に、指定した１のサービスが有する１又は複数の入力変数に対してそれぞれのデータを提供し、そして、前記指定したサービスより以前に存在する他のサービスの出力変数を１つずつ対応付けることによってソフトウェアの設計を支援するものにおいて、更に、前記指定したサービスが有する全ての入力変数に対して、前記対応付けの全ての可能な組み合わせを生成し、過去のソフトウェア設計の履歴情報に基づいて、前記生成した組み合わせについての生成確率を計算し、そして、前記計算した生成確率が予め定めた条件を満たす組み合わせを抽出して出力するサービスベースソフトウェア設計支援方法が提供される。
【００１２】
なお、本発明では、前記に記載したサービスベースソフトウェア設計支援方法において、前記過去のソフトウェア設計の履歴情報として、過去のソフトウェア設計における任意のサービスの入力変数に対して別の任意のサービスの出力変数を対応付けた回数を、入力変数の名称、出力変数の名称、前記入力変数を有するサービスの名称、前記出力変数を有するサービスの名称の組み合わせで記録した直接接続履歴を含んでいることが好ましく、更には、過去のソフトウェア設計における複数の入力変数を持つ任意のサービスの前記複数の入力変数のそれぞれに対して別の任意のサービスの複数の出力変数を対応付けた回数を、前記複数の出力変数の一の出力の名称、前記一の出力を有するサービスの名称、前記出力変数のうち前記一の出力と異なる他の出力の名称、前記他の出力を有するサービスの名称の組み合わせで記録した間接接続履歴を含んでいることが好ましい。
【００１３】
加えて、本発明によれば、やはり上記の目的を達成するため、特定の機能を実行するソフトウェア部品であるサービスを複数組み合わせて行なわれるソフトウェアの設計を支援するためのサービスベースソフトウェア設計支援装置であって、過去のソフトウェア設計におけるサービスの入出力データの接続履歴情報を蓄積する記憶装置と、前記サービスの１つ又は複数を組み合わせてその処理順序を定義したサービスプロセスフローを入力すると共に、入力した当該サービスプロセスフロー中の任意のサービスを選択する入力部と、前記入力部により選択された任意のサービスが有する全ての入力変数に対して、対応付けの全ての可能な組み合わせを生成し、かつ、前記記憶装置に蓄積した過去のソフトウェア設計におけるサービスの入出力データの接続履歴情報に基づいて、前記生成した組み合わせについての生成確率を計算する処理装置と、そして、前記処理装置により計算された前記生成確率を基にして、予め定めた条件を満たす組み合わせを出力する出力部とを備えているサービスベースソフトウェア設計支援装置が提供される。
【００１４】
なお、本発明では、前記に記載したサービスベースソフトウェア設計支援装置において、前記記憶装置は、過去のソフトウェア設計における任意のサービスの入力変数に対して別の任意のサービスの出力変数を対応付けた回数を、入力変数の名称、出力変数の名称、前記入力変数を有するサービスの名称、前記出力変数を有するサービスの名称の組み合わせで記録した直接接続履歴テーブルと、前記過去のソフトウェア設計の履歴情報としては、更に、過去のソフトウェア設計における複数の入力変数を持つ任意のサービスの前記複数の入力変数のそれぞれに対して別の任意のサービスの複数の出力変数を対応付けた回数を、前記複数の出力変数の一の出力の名称、前記一の出力を有するサービスの名称、前記出力変数のうち前記一の出力と異なる他の出力の名称、前記他の出力を有するサービスの名称の組み合わせで記録した間接接続履歴テーブルとを備えていることが好ましい。
【発明の効果】
【００１５】
上述した本発明になるサービスベースソフトウェア設計支援方法、又は、そのための装置をサービスベースのソフトウェア設計に適用することによれば、過去のソフトウェア設計履歴およびサービスの実行順序を記したサービスプロセスフローがあればサービスプロセスフロー内の各サービスの入力と他サービスの出力との接続組み合わせを半自動的に得ることが可能となり、ソフトウェア設計者の負担を軽減することが可能となるという、優れた効果を発揮する。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施の形態について、添付の図面を参照しながら詳細に説明する。
【００１７】
まず、添付の図１により、本発明になるサービスベースソフトウェア設計支援方法を実施するソフトウェアを含む全体構成図を示す。
【００１８】
この図１において、入力を構成するサービスプロセスフロー４０００とは、上述したＢＰＭＮやＢＰＥＬ４ＷＳ等のフロー言語で記述されており、図にも示すように、例えば、「１：顧客情報検索」、「２：商品情報検索」、「３：与信確認」など、実行するサービスをアクティビティ(ノード)で表し、かつ、サービス実行の時間的な前後関係を有向リンクで表したもの、即ち、ソフトウェアの動作手順を記述したフローである。なお、本実施の形態におけるサービスプロセスフロー４０００のデータ形式の一例は、図４に示す通り、当該サービスプロセスフロー４０００内でアクティビティを一意に識別するためのアクティビティＩＤ４００１と、当該アクティビティにより実行するサービスの名称を記述したサービス名４００２と、前記サービスの入力データ名の一覧をカンマ等の区切り記号を使って並べた入力変数リスト４００３と、前記サービスの出力データ名の一覧をカンマ等の区切り記号を使って並べた出力変数リスト４００４と、そして、前記サービスの実行後の遷移先アクティビティを指定する遷移先アクティビティＩＤ４００５とによってアクティビティレコード４０１０を構成しており、そして、当該アクティビティレコード４０１０を、上記アクティビティの個数分だけ繰り返して記述してなるものである。なお、これらのアクティビティレコードにおいて、そのアクティビティＩＤが「START」となっているレコードは、開始アクティビティを、他方、「END」となっているレコードは、終了アクティビティを表している。
【００１９】
また、やはり図１において、入力を構成する処理対象アクティビティＩＤ４１００とは、上記サービスプロセスフロー４０００における複数のアクティビティのうち、入出力組み合わせ生成プログラム３０００による入力変数の対応付けの対象となるアクティビティについてのアクティビティＩＤであり、図示の例では、「ＩＤ：３」であり、これは、上記サービスアクティビティのうち、「３：与信確認」が指定・選択された例を示している。なお、より正確には、入力変数の対応付けを行う対象は前記アクティビティに対応付けられたサービスであるが、しかしながら、説明の簡単のため、以下ではアクティビティ間での入出力組み合わせを考えることとする。
【００２０】
更に、図の下方に示した出力を構成する入出力組み合わせリスト５１００とは、上記処理対象アクティビティＩＤ４１００が指すアクティビティ（図の例では、「ＩＤ：３」の「３：与信確認」）について、その各入力変数とその入力変数に代入するデータを提供するアクティビティの出力変数との組み合わせを、当該処理対象アクティビティＩＤ４１００が指すアクティビティの入力変数の数だけ繰り返して記述した入出力組み合わせ５０００を、以下に説明する入出力組み合わせ生成プログラム３０００が出力した数だけ、繰り返して記述したものであり、例えば、以下の表示装置２００４上に表示されることとなる。なお、この例では、出力変数である「１：顧客情報検索．出力（カード番号）」と、それに対する入力変数「３：信用確認．入力（カード番号）」の組み合わせ、そして、出力変数「２：商品情報検索．出力（価格）」と、それに対する入力変数としての「３：信用確認．入力（支払額）」が一例として示されている。
【００２１】
なお、この入出力組み合わせ５０００のデータ形式の一例は、図５に示す通りであり、即ち、各入出力接続レコード５０１０は、出力データを提供する出力サービス名５００１及びその出力変数名５００２と、上記処理対象アクティビティＩＤ４１００に対応するサービスの名称である入力サービス名５００３と、前記出力データが代入される入力変数名５００４とによって構成されており、そして、当該入出力接続レコード５０１０を上記入力サービス名５００１が指すサービスの入力変数の数だけ繰り返して記述すると共に、それに加えて、更には、上記入出力組み合わせ生成プログラム３０００によって計算された入出力組み合わせ確率５０２０を付加したものである。
【００２２】
また、図の左方に示す参照情報を構成する入出力直接接続履歴テーブル６０００は、過去の複数回にわたるソフトウェア構築において、例えば、あるサービスＡの出力変数Ｘから得られるデータが別のサービスＢの入力変数Ｙに代入された回数、即ち、Ｘが直接Ｙと接続した回数を、これらサービスとその変数の組、例えば、Ａ、Ｘ、Ｂ、Ｙと共に、テーブル形式で保存したものである。なお、この入出力直接接続履歴テーブル６０００のデータ形式の一例は、図６に示す通りであり、即ち、各直接接続レコード６０１０は、出力データを提供するサービス（上記サービスＡに相当）の名称である出力サービス名６００１及びその出力変数（上記出力変数Ｘに相当）の名称である出力変数名６００２と、前記出力データが代入されるサービス（上記サービスＢに相当）の名称である入力サービス名６００３及びその入力変数（上記変数変数Ｙに相当）の名称である入力変数名６００４と、前記サービス及び変数の組み合わせがソフトウェア構築に使用された回数である接続回数６００５とによって構成されており、そして、当該直接接続レコード６０１０を、過去のソフトウェア構築に存在した組み合わせ分だけ繰り返して記述したものに加えて、更には、全ての直接接続レコード６０１０の接続回数６００５の総和である、所謂、合計回数６０２０を付加したものである。
【００２３】
更に、入出力間接接続履歴テーブル７０００は、過去の複数回のソフトウェア構築において、例えば、あるサービスＡの出力変数Ｘ及び別のサービスＢの出力変数Ｙが、これらＡ及びＢとは別のサービスＣの異なる入力Ｐ、Ｑにそれぞれ代入されて使用された回数、すなわち、変数Ｘ及びＹが他のサービスを介して間接的に接続した回数を、これらサービスとその変数の組、例えば、Ａ、Ｘ、Ｂ、Ｙと共に、テーブル形式で保存したものである。なお、この入出力間接接続履歴テーブル７０００のデータ形式の一例は、図７に示す通りであり、即ち、各間接接続レコード７０１０は、出力データを提供する一方のサービス（上記サービスＡに相当）の名称であるサービス名Ａ７００１及びその出力変数（上記出力Ｘに相当）)の名称である出力変数名Ａ７００２と、出力データを提供する他方のサービス（上記サービスＢに相当）の名称であるサービス名Ｂ７００３及びその出力変数（上記出力Ｙに相当）の名称である出力変数名Ｂ７００４と、前記サービス及びその変数の組み合わせがソフトウェア構築に使用された回数である、接続回数７００５によって構成されており、そして、当該間接接続レコード７０１０を、過去のソフトウェア構築において存在した組み合わせ分だけ繰り返して記述したものに加えて、更には、全ての間接接続レコード７０１０の接続回数７００５の総和である、所謂、合計回数７０２０を付加したものである。
【００２４】
次に、入出力組み合わせ生成プログラム３０００は、上述した入出力直接接続履歴テーブル６０００及び入出力間接接続履歴テーブル７０００を参照し、入力である上記サービスプロセスフロー４０００及び処理対象アクティビティＩＤ４１００から、出力である入出力組み合わせリスト５１００を生成するプログラムである。この入出力組み合わせ生成プログラム３０００は、一時使用データの初期化等を行う初期設定部３１００と、矛盾のない入出力変数の組み合わせを、網羅的に、逐次生成するための入出力組み合わせ候補生成部３２００と、上記入出力組み合わせ候補生成部３２００が生成した入出力変数の組み合わせに対し、入出力直接接続履歴テーブル６０００を参照することにより、各入出力変数接続が独立であると仮定してその入出力組み合わせ確率を計算するための接続確率概算部３３０１と、接続確率概算部３３００にて計算した接続確率に対し、上記入出力間接接続履歴テーブル７０００及び入出力直接接続履歴テーブル６０００を参照することにより補正を行うための入出力組み合わせ確率補正処理３４０１と、そして、入出力組み合わせ確率が高い入出力変数の組み合わせを出力するための入出力組み合わせリスト出力処理３５０１とによって構成されている。
【００２５】
次に、以上にそのソフトウェア構成を説明した本発明のサービスベースソフトウェア設計支援方法を実施するためのハードウェア構成であるソフトウェア設計支援装置の一例について、添付の図２を参照しながら、以下に説明する。
【００２６】
この図２において、ソフトウェア設計支援装置２０００は、処理装置２００１、記憶装置２００２、入力装置２００３、表示装置２００４、及び、前記各装置を接続するバス２００５から構成される。
【００２７】
上記の構成において、処理装置２００１は、例えばＣＰＵ、ＭＰＵ等からなっており、命令群を上記記憶装置２００２から逐次読み込み、そして、読み込んだ各命令に対応する演算や操作を行うための装置である。なお、本実施の形態において、上記処理装置２００１は、記憶装置２００２から上述した入出力組み合わせ生成プログラム３０００を読み込んで実行する。
【００２８】
一方、記憶装置２００２は、例えばハードディスク装置やフラッシュメモリ、ＲＡＭ(Random Access Memory)等、その内部にデータを保持する装置から構成される。そして、この記憶装置２００２は、本実施の形態においては、上述した入出力組み合わせ生成プログラム３０００、サービスプロセスフロー４０００、処理対象アクティビティＩＤ４１００、入出力直接接続履歴テーブル６０００、そして、入出力間接接続履歴テーブル７０００を格納している。更に、この記憶装置２００２は、上記入出力組み合わせプログラム３０００の処理中においては、上述した入出力組み合わせ候補リスト２１０１、入力変数テーブル２１０２、そして、出力変数テーブル２１０３を格納し、また、上記入出力組み合わせプログラム３０００の処理結果として、上述した入出力組み合わせリスト５１００をもその内部に格納する。
【００２９】
また、入力装置２００４は、例えば、キーボードやマウス、タッチパネル、タブレット等から構成され、ユーザからの入力を上記処理装置２００１に伝達するための装置である。なお、本実施の形態においては、上記入出力組み合わせ生成プログラム３０００の入力となるサービスプロセスフロー４０００及び処理対象アクティビティＩＤ４１００が、その入力の対象となり得る。
【００３０】
更に、表示装置２００５は、例えば、液晶やプラズマパネル、又は、ブラウン管等のディスプレイ、又は、プロジェクタ等から構成され、上記処理装置２００１からの命令に基づいて描画を行う装置である。なお、本実施の形態においては、上述した入出力組み合わせ生成プログラム３０００の出力となる、上記入出力組み合わせリスト５１００がその描画対象となり得る。
【００３１】
なお、上記のハードウェア構成では、上述した入出力組み合わせプログラム３０００と共に、入力を構成するサービスプロセスフロー４０００や処理対象アクティビティＩＤ４１００、参照情報を構成する入出力直接接続履歴テーブル６０００や入出力間接接続履歴テーブル７０００、一時データを構成する入出力組み合わせ候補リスト２１０１、入力変数テーブル２１０２、そして出力変数テーブル２１０３、更には、出力を構成する入出力組み合わせリスト５１００が、上記同一の記憶装置２００２内に格納されているものとして説明した。しかしながら、本発明ではこれに限定されることはなく、例えば上記のデータが、それぞれ個別の記憶装置に格納されており、又は、通信回路によって接続された他の装置の記憶装置内に格納されていてもよい。
【００３２】
以上にそのソフトウェア構成とハードウェア構成について説明した本発明のサービスベースソフトウェア設計支援方法において、その特徴となる処理、すなわち、上記入出力組み合わせ生成プログラム３０００の処理手順の詳細について、以下、図３を参照しながら説明を加える。
【００３３】
この入出力組み合わせ生成プログラム３０００における処理の概要は、まず、上記図１にける初期設定部３１００に対応するステップ３１０１〜３１０３において初期設定を行った後、入出力の組み合わせ候補生成部３２００に対応するステップ３２０１〜３２０２において、上記入出力組み合わせ候補リスト２１０１には存在しない入出力変数接続の組み合わせを生成する。そして、この生成した入出力組み合わせに対し、入出力組み合わせ確率概算処理３３０１及び入出力組み合わせ確率補正処理３４０１において、入出力組み合わせ確率を計算するための処理を、全ての矛盾のない入出力変数の組み合わせに対して繰り返し、その後、予め定められた基準に基づいて、接続確率の高い入出力組み合わせを、入出力組み合わせリスト５０００の形で、出力することにより実行される。
【００３４】
以下、その詳細な処理手順について述べる。
まず、ステップ３１０１において、上記一時データ（図２を参照）における入出力組み合わせ候補リスト２１０１を空に設定する。なお、この入出力組み合わせ候補リスト２１０１のデータ形式は、上記入出力組み合わせリスト５１００（図１を参照）と等しく、即ち、上記図５にそのデータ形式の一例を示した入出力組み合わせ５０００を任意の個数分だけ繰り返し記述したものである。そして、このステップ３０１０の時点では、その要素数（個数）は零（０）である。
【００３５】
次に、ステップ３１０２では、処理対象アクティビティＩＤ４１００（図１の入力を参照）が指すアクティビティのアクティビティレコード４０１０（図４を参照）内の入力変数リスト４００３を、サービスプロセスフロー４０００から取得し、そして、その区切り記号によって分けられた各要素を、上記図２に示した記憶装置２００２の入力変数テーブル２１０２に格納する。なお、この入力変数テーブル２１０２のデータ形式の一例は、添付の図８に示す通りであり、即ち、各入力変数レコード８０１０は、１又は任意の値から始まる整数により連続した番号が付されたレコード番号８００１と、上記図４における入力変数リスト４００３の一要素である入力変数名８００２と、やはり図４における出力変数リスト４００４の要素との間の対応付けを一時的に記録するための出力変数レコード番号８００３とによって構成されており、そして、当該入力変数レコード８０１０を、上記処理対象アクティビティＩＤ４１００が指すアクティビティのアクティビティレコード４０１０（図４を参照）における入力変数リスト４００３の要素の数だけ、繰り返して記述したものである。また、出力変数レコード番号８００３は、このステップ３１０２の時点では、全て１に（又は、以下に示す出力変数テーブル９０００のレコード番号９００１（図９を参照）の最小値）設定しておく。
【００３６】
次に、ステップ３１０３においては、上記処理対象アクティビティＩＤ４１００が指すアクティビティに対して出力データを提供することが可能なアクティビティ、即ち、上記サービスプロセスフロー４０００上において、開始アクティビティと処理対象アクティビティＩＤ４１００が指すアクティビティとの間に存在するアクティビティの出力変数リスト４００４を、当該サービスプロセスフロー４０００から取得し、これを、上記図２の一時データを構成する出力変数テーブル２１０３として、記憶装置２００２内に格納する。なお、これは、サービスプロセスフロー４０００の各アクティビティレコード４０１０（図４を参照）に対し、その遷移先アクティビティＩＤ４００５が指すアクティビティレコード４０１０（この例では、アクティビティＩＤが「２」のレコード）を順次取得して（なお、その際、分岐や並列等により遷移先アクティビティＩＤ４００５が複数存在する場合には、それらの全ての遷移先を取得する）、それによって得られるリンクを順次たどる処理を繰り返し、そして、処理対象アクティビティＩＤ４１００が指すアクティビティレコード４０１０が得られる場合には、当該リンクの始点となるアクティビティレコード４０１０における出力変数リスト４００４（図４を参照）の区切り記号によって分けた各要素を、そのサービス名４００２を付加して、出力変数テーブル２１０３に（上記図２における一時データを参照）追記することによって実行される。なお、この出力変数テーブル２１０３のデータ形式の一例は、添付の図９に示す通りであり、即ち、各出力変数レコード９０１０は、１又は任意の値で始まり整数により連続した番号を付番したレコード番号９００１と、サービス名９００２と、そして、出力変数名９００３とによって構成されており、そして、当該出力変数レコード９０１０を、上記ステップ３１０３において得られた出力変数の数だけ繰り返して記述したものである。
【００３７】
次に、上記接続組み合わせ候補生成部３２００を構成するステップ３２０１においては、上記入出力組み合わせ候補リスト２１０１（図２の一時データを参照）に含まれていない入出力組み合わせが存在するか否かを調べる。なお、これは、上記一時データにおける入力変数テーブル２１０２の各レコード８０１０（図８を参照）に対し、その出力レコード番号８００３が指す出力変数レコード９０１０（図９を参照）におけるサービス名９００２を出力サービス名５００１とし、その変数名９００３を出力変数名５００２とし、また、処理対象アクティビティＩＤ４１００が指すアクティビティレコード４０１０（図４を参照）のサービス名４００２を入力サービス名５００３とし、そして、各レコード８０１０の変数名８００２を入力変数名５００４とすることによって上記入出力接続レコード５０１０（図５を参照）に変換した入出力組み合わせ５０００を生成し、もって、同一の入出力組み合わせが入出力組み合わせ候補リスト２１０２に含まれているか否かを調べることで行う。なお、その結果、同一の入出力組み合わせが存在しない場合（図のＮ）には、処理はステップ３５０１に移行し、他方、存在する場合（図のＹ）には、そのレコード番号８００１が最小の入力変数レコード８０１０（図８を参照）における出力変数レコード番号８００３の値を、１ずつ増加させ、前記処理を繰り返す。
【００３８】
また、出力変数レコード番号８００３（図８を参照）が出力変数テーブル２１０３のレコード番号９００１（図９を参照）の最大値を超えた場合には、当該出力変数レコード番号８００３をそのレコード番号９００１における最小値に設定し、同時に、現在その出力変数レコード番号８００３を増加させている入力変数レコード８０１０に続いて次にレコード番号８００１が小さい入力変数レコード８０１０の出力変数レコード番号８００３の値を、１だけ増加させる処理を行い、その後、レコード番号９００１の最大値を超える出力変数レコード番号８００３が存在しなくなるまで、上記の処理を繰り返す。そして、レコード番号８００１が最大の入力変数レコード８０１０の出力変数レコード番号８００３がレコード番号９００１の最大値を超える場合には、新たな組み合わせがないと判断し、ステップ３５０１へ移行する。
【００３９】
更に、ステップ３２０２では、上記のステップ３２０１で生成し、かつ、同一の入出力組み合わせが入出力組み合わせ候補リスト２１０１（図２参照）に含まれないことを確認した入出力組み合わせ５０００を、入出力組み合わせ候補リスト２１０１に追加する。
【００４０】
次に、ステップ３３０１では、上記のステップ３２０２において追加した入出力組み合わせ５０００に対し、参照情報である入出力直接接続履歴テーブル６０００（図１参照）を用いて組み合わせ確率を計算し、その結果を入出力組み合わせ５０００の入出力組み合わせ確率５０２０（図５参照）に格納する。これは、入出力組み合わせレコード５０１０の要素によって表される各入出力接続が統計的に独立であること、即ち、ある入出力接続の生成確率が他の入出力接続の存在に左右されないという仮定の下での確率となることを意味する。前記組み合わせ確率は、以下の式により計算される。
【００４１】
【数１】
2007334627.tif 000003
【００４２】
ここで、上記の式において、Ｐは求める組み合わせ確率であり、ＳＯｋ、Ｏｋ、ＳＩｋ、Ｉｋは、それぞれ、入出力組み合わせ５０００のｋ番目の入出力接続レコード５０１０における出力サービス名５００１、出力変数名５００２、入力サービス名５００３、入力変数名５００４（図５参照）を表す。また、Ｎ（ＳＯｋ・Ｏｋ→ＳＩｋ・Ｉｋ）は、入出力直接接続履歴テーブル６０００に対して、出力サービス名５００１が出力サービス名６００１（図６参照）と、出力変数名５００２が出力変数名６００２と、入力サービス名５００３が入力サービス名６００３と、入力変数名５００４が入力変数名６００４と、即ち、全ての項目が一致する直接接続レコード６０１０の接続回数６００５を表す。なお、かかる条件を満たす直接接続レコード６０１０が存在しない場合には、Ｎ（ＳＯｋ・Ｏｋ→ＳＩｋ・Ｉｋ）＝０となる。また、Ｔは合計回数６０２０を表し、ｎは入出力組み合わせ５０００のレコード数を表す。
【００４３】
次に、ステップ３４０１においては、上記ステップ３３０１で計算した入出力組み合わせ確率５０２０（図５参照）を、参照情報である入出力間接接続履歴テーブル７０００及び入出力直接接続履歴テーブル６０００を用いて補正し、それを再び入出力組み合わせ確率５０２０に格納する。これは、各入出力接続が統計的に独立であると仮定して計算した値を、あるサービスに出力を提供する出力サービス及び出力変数との間の依存関係に基づいて補正することにより行なう。例えば、あるサービスに出力を提供する出力サービスと出力変数との間に正の依存関係がある（即ち、一方が現れる場合は、他方も現れ易い）場合は、前記組み合わせ確率を増加させ、他方、負の依存関係がある（即ち、一方が現れる場合は、他方は現れ難い）場合は、前記組み合わせ確率を減少させる。なお、これらの間に依存関係がない場合は、前記組み合わせ確率の増減を行わないことで実行される。なお、前記組み合わせ確率の補正は、以下の式のように計算する。
【００４４】
【数２】
2007334627.tif 000004
【００４５】
ここで、上記の式において、Ｐmodifiedは、求める組み合わせ確率であり、ＳＯｉ・Ｏｉは、入出力組み合わせ５０００のi番目の入出力接続レコード５０１０（図５参照）における出力サービス名５００１及び出力変数名５００２を、そして、ＳＯｊ・Ｏｊは、ｊ番目の入出力接続レコード５０１０における出力サービス名５００１及び出力変数名５００２を表す。また、ＮＩ（ＳＯｉ・Ｏｉ，ＳＯｊ・Ｏｊ）は、入出力間接接続履歴テーブル７０００に対し、ＳＯｉが出力サービス名Ａ７００１（図７参照）と、Ｏｉが出力変数名Ａ７００２と、ＳＯｊが出力サービス名Ｂ７００３と、Ｏｊが出力変数名Ｂ７００４と、全ての項目で一致する間接接続レコード７０１０の接続回数７００５を表す。なお、かかる条件を満たす間接接続レコードが存在しない場合には、ＮＩ（ＳＯｉ・Ｏｉ，ＳＯｊ・Ｏｊ）＝０となる。また、ＴＩは合計回数７０２０を表し、αは予め定めた重み付け定数である。
【００４６】
なお、Ｎ（ＳＯｉ・Ｏｉ）は、過去のソフトウェア構築においてサービスＳＯｉの出力Ｏｉが他のサービスの入力として使用された回数であり、参照情報である入出力直接接続履歴テーブル６０００（図２参照）を用いて、以下の式のように計算できる。
【００４７】
【数３】
2007334627.tif 000005
【００４８】
ここで、上記の式において、ＳＯｘｋ、Ｏｘｋ、ＳＩｘｋ、Ｉｘｋは、それぞれ、ｋ番目の直接接続レコード６０００の出力サービス名６００１（図６参照）、出力変数名６００２、入力サービス名６００３、入力変数名６００４を表す。ここでは、Ｎ（ＳＯｉ・Ｏｉ）の計算式を示したが、しかしながら、Ｎ（ＳＯｊ・Ｏｊ）についても、同様の数式によって計算することが出来る。
【００４９】
更に、ステップ３５０１では、上記のステップ３２０１、３２０２、３３０１、３４０１で得られた入出力組み合わせ候補リスト２１０１（図２参照）の要素である入出力組み合わせ５０００のうち、その入出力組み合わせ確率５０２０が予め定めた条件を満たすものを、上記記憶装置２００２の入出力組み合わせリスト５１００（図２参照）の要素とし、そして、当該入出力組み合わせリスト５１００を出力する。なお、前記予め定めた条件としては、入出力組み合わせ確率５０２０が高い順に一定の数の要素だけを抽出したり、又は、入出力組み合わせ確率５０２０が予め定めた一定値より高い値を示す要素だけを抽出したりする等が考えられる。
【００５０】
なお、以上に詳述した本実施の形態になるソフトウェア設計支援方法では、各サービスの入出力変数には、例えば文字列値や整数値等の、所謂、型を定義しおらず、また、この実施の形態では、入出力組み合わせの生成時についても考慮していない。しかしながら、これに代えて、例えば、変数型を導入し、もって、入出力組み合わせの作成時には、同一の型を持つ入力変数と出力変数との組み合わせのみ許すようにしてもよい。また、本実施の形態では、サービスプロセスフロー４０００及び処理対象アクティビティＩＤ４１０１の入力元、そして入出力組み合わせリスト５１００の出力先については、特に言及していない。しかしながら、上記のサービスプロセスフロー４０００及び処理対象アクティビティＩＤ４１０１については、上述した入力装置２００３（図２参照）によって入力されてもよく、又は、予め記憶装置２００２内に格納されていてもよく、また、入出力組み合わせリスト５１００も、表示装置２００４上に表示せずに、上記の記憶装置２００２内に格納するだけでもよい。
【００５１】
以上のように、本発明のソフトウェア設計支援方法では、過去に作成したサービスプロセスフローにおける２サービス間の接続関係を履歴として保存する。なお、その際、一方の出力データが他方の入力データとなる直接接続関係と、２サービスの出力データが同一サービスに入力される形態の間接接続関係との２種類を対象とし、接続関係の種類毎に保存する。そして、設計者が、処理順序のみを記述したサービスプロセスフローをソフトウェア設計支援システムに入力すると、この入力されたサービスプロセスフローのうち設計者が指定（選択）したサービスの入力データについて、他のサービスの出力データとの接続関係について１の履歴に基づいて評価を行なう。なお、この評価は、上記直接接続関係から求めた入出力データの各接続が独立に行なわれた場合の接続確率をベースにして行ない、更には、上記間接接続関係から得られる、入力データを提供するサービスの出力データ間の連携関係をも加味する（即ち、依存性があれば＋、背反ならば−）ことで行なう。その後、上記の処理で得られる入出力で０多接続を設計者に提示する。なお、これは、接続確率が高い順に一定数の接続を提示し、又は、その接続確率が閾値以上となる接続のみを提示することで行なわれる。更には、入出力データが直接接続された関係だけではなく、あるサービスを介して間接的に接続された関係等をも加味することにより、更に、評価の精度を上げることができる。
【００５２】
このような本発明のソフトウェア設計支援方法を用いることによれば、ソフトウェア設計者は、サービスの実行順序のみを記述したサービスプロセスフローを用意すればよく、これにより、設計者は、システムを構成する入出力組み合わせ生成プログラムによって、サービスプロセスフロー内の任意のサービスに対する入出力の接続組み合わせが、半自動的に得ることが出来ることとなる。即ち、ソフトウェア設計者の負担を軽減し、ソフトウェア設計の工数を削減することができる。
【００５３】
すなわち、本発明によれば、まず、過去のソフトウェア設計におけるサービスの入出力データの接続履歴を蓄積しておき、処理順序のみが記述されたサービスプロセスフローに対しその中の任意のサービスを選択すると、選択したサービスの全ての入力に対し矛盾なく接続可能な他サービスの出力を任意に選択し前記入力と出力の接続組み合わせの生成確率を前記接続履歴から導出する処理を全ての接続組み合わせに対して行い、その中から前記生成確率が高い接続組み合わせを確からしいものとして設計者に提示することにより、入出力データの接続に関して設計者の負担を減らすものである。そして、本発明では、前記接続履歴で頻出する入出力データ接続に対し高い生成確率を与えることにより、得られる入出力データ接続は過去のソフトウェア設計で実際に使用されたものが大半となり、もって、意味的に妥当な接続組み合わせが得られることが期待される。
【００５４】
なお、この時、選択するサービスの入力が複数個存在する場合、それぞれの入力に対する入出力データ接続は必ずしも独立でなく、複数の接続の間に正または負の依存関係が存在することが考えられるため、前記生成確率を正確に算出するには各サービスの全ての入力と、接続される他サービスの出力との対応付けを接続履歴として保存することになる。しかしながら、ソフトウェア設計を行う回数はあまり多くなく、妥当な入出力接続の組み合わせに比べ少ないと思われるため、妥当だが過去の接続履歴と少し異なる入出力接続の組み合わせを正しく評価できなくなるおそれがある。
【００５５】
そこで、接続履歴は基本的にはデータを提供するサービスおよび出力と、データを利用するサービスと入力との間の関係、即ち入出力データが直接接続した関係を扱うこととし、前記問題に対応する。ただし前記直接接続関係だけでは同一サービスに対する複数の接続の間の依存関係を表現することができないため、接続履歴として前記直接接続関係だけでなく、同一サービスの入力として出力を共に提供する関係になった２サービスの出力の間の関係、即ち2つの出力の間の入力サービスを介した間接接続関係も扱い、前記間接接続関係から得られる依存関係に基づき前記生成確率を補正する。
【００５６】
すなわち、上述した本発明をサービスベースのソフトウェア設計に適用することによれば、過去のソフトウェア設計履歴およびサービスの実行順序を記したサービスプロセスフローがあればサービスプロセスフロー内の各サービスの入力と他サービスの出力との接続組み合わせを半自動的に得ることが可能となり、ソフトウェア設計者の負担を軽減することができる。
【図面の簡単な説明】
【００５７】
【図１】本発明の実施の形態になるサービスベースソフトウェア設計支援方法を実行するシステムにおけるソフトウェアの構成を示すソフトウェア構成図である。
【図２】上記本発明のソフトウェア設計支援方法における入出力組み合わせ生成プログラムを実行するためのハードウェア構成の一例を示すハードウェア構成図である。
【図３】上記本発明になる入出力組み合わせ生成プログラムの処理手順を示したフロー図である。
【図４】上記ソフトウェア設計支援方法のサービスプロセスフローにおけるデータ形式の一例を示す図である。
【図５】上記ソフトウェア設計支援方法のサービスプロセスフローにおける入出力組み合わせのデータ形式の一例を示す図である。
【図６】上記ソフトウェア設計支援方法における入出力直接接続履歴テーブルのデータ形式の一例を示す図である。
【図７】上記ソフトウェア設計支援方法における入出力間接接続履歴テーブルのデータ形式の一例を示す図である。
【図８】上記ソフトウェア設計支援方法における入力変数テーブルのデータ形式の一例を示す図である。
【図９】上記ソフトウェア設計支援方法における出力変数テーブルのデータ形式の一例を示す図である。
【図１】
2007334627.tif 000006
【図２】
2007334627.tif 000007
【図３】
2007334627.tif 000008
【図４】
2007334627.tif 000009
【図５】
2007334627.tif 000010
【図６】
2007334627.tif 000011
【図７】
2007334627.tif 000012
【図８】
2007334627.tif 000013
【図９】
2007334627.tif 000014