(57)【要約】【課題】プログラムコードのみが存在する場合のように、要求仕様可変ポイントと設計可変ポイントが関連付けられていないソフトウェア製品系列資産から、要求仕様可変ポイントと設計可変ポイントとの関連を抽出する。【解決手段】要求仕様可変部とプログラム実行シナリオとの関連付けを行う要求仕様可変部・シナリオ関連管理部と、プログラム実行シナリオを実行するシナリオ実行部と、シナリオ実行部の実行結果からソフトウェア設計要素を抽出するソフトウェア設計要素抽出部と、ソフトウェア設計要素から設計可変ポイントを抽出する設計可変部抽出部と、要求仕様可変ポイントと設計可変部抽出部により抽出された設計可変ポイントとを関連付ける要求仕様可変ポイント・設計可変ポイント関連管理部と、を含んで構成される。【選択図】図１
2012198739.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェア製品系列の要求仕様可変ポイントにおける各々の製品の要求仕様可変部と前記要求仕様可変部が実行されるプログラム実行シナリオとを関連付ける要求仕様可変部・シナリオ関連管理手段と、
前記プログラム実行シナリオを実行するシナリオ実行手段と、
前記シナリオ実行手段の実行結果からソフトウェア設計要素を抽出するソフトウェア設計要素抽出手段と、
前記ソフトウェア設計要素抽出手段によって抽出されたソフトウェア設計要素から設計可変ポイントを抽出する設計可変部抽出手段と、
前記要求仕様可変ポイントと、前記設計可変部抽出手段により抽出された設計可変ポイントとを関連付ける要求仕様可変ポイント・設計可変ポイント関連管理手段と、
を備えたソフトウェア開発支援装置。
【請求項２】
前記シナリオ実行手段の実行結果を実行ログとして保存するプログラム実行ログ保存手段を備え、
前記ソフトウェア設計要素抽出手段では、前記実行ログからソフトウェア設計要素を抽出する請求項１記載のソフトウェア開発支援装置。
【請求項３】
前記要求仕様可変部・シナリオ関連管理手段では、第１の要求仕様可変部と前記第１の要求仕様可変部が実行される第１のプログラム実行シナリオとを関連付け、前記第１の要求仕様可変部とは要求仕様が異なる第２の要求仕様可変部と前記第２の要求仕様可変部が実行される第２のプログラム実行シナリオとを関連付け、
前記ソフトウェア設計要素抽出手段では、前記第１のプログラム実行シナリオの実行結果から第１のソフトウェア設計要素を抽出し、前記第２のプログラム実行シナリオの実行結果から第２のソフトウェア設計要素を抽出し、
前記設計可変部抽出手段では、前記第１のソフトウェア設計要素と前記第２のソフトウェア設計要素とを比較して設計可変ポイントを抽出する請求項１または請求項２に記載のソフトウェア開発支援装置。
【請求項４】
ソフトウェア製品系列の要求仕様可変ポイントに対する各々の製品の要求仕様可変部と前記要求仕様可変部が実行されるプログラム実行シナリオとを関連付ける要求仕様可変部・シナリオ関連管理ステップと、
前記プログラム実行シナリオを実行するシナリオ実行ステップと、
前記シナリオ実行ステップの実行結果からソフトウェア設計要素を抽出するソフトウェア設計要素抽出ステップと、
前記ソフトウェア設計要素抽出ステップによって抽出されたソフトウェア設計要素から設計可変ポイントを抽出する設計可変部抽出ステップと、
前記要求仕様可変ポイントと、前記設計可変部抽出ステップにより抽出された設計可変ポイントとを関連付ける要求仕様可変ポイント・設計可変ポイント関連管理ステップと、
からなるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のソフトウェア製品から構成されるソフトウェア製品系列（ソフトウェアプロダクトライン）を利用して新たなソフトウェア製品の設計を実施するソフトウェア開発支援装置に関する。
【背景技術】
【０００２】
従来、ソフトウェア製品系列において、機能要求と非機能要求（品質特性要求）の可変ポイントである要求仕様可変ポイントと、当該要求仕様を実現するための設計モデルの可変ポイントである設計可変ポイントとが関連付けられていない場合に、要求仕様可変ポイントに新たな要求仕様可変部を設定して新製品を開発する際、当該要求仕様可変ポイントに関連する設計可変ポイントが漏れなく特定できず、設計上の不具合を混入することがしばしばあった。
【０００３】
非特許文献１では、要求仕様可変ポイントと設計可変ポイントとを、直交可変性モデル（Orthogonal Variability Model）を利用して関連付ける方法が記載されている。当該方法によれば、要求仕様可変ポイントと設計可変ポイントとを関連付けるためには、直交可変性モデルに登録する可変性、即ち、可変ポイントと可変部を適切に設定しなければならない。
【０００４】
また、特許文献１では、ソフトウェア製品系列を構成するソフトウェア資産を、複数のアーキテクチャと、機能要求と、当該機能要求に関連する非機能要求（品質特性要求）と、を相互に連携させ、当該アーキテクチャと整合した機能要求を取捨選択し、当該機能要求に基づいて再利用コンポーネントの設計を行っている。これにより、要求仕様可変ポイントと設計可変ポイントとを予め関連付け、当該関連情報をソフトウェア製品系列の資産として維持管理することにより、要求仕様可変ポイントに新たな要求仕様可変部を設定して新製品を開発する際、当該要求仕様可変ポイントに関連する設計可変ポイントを特定することが可能となる。
【０００５】
また、特許文献２では、ソフトウェアの要求を記述した要求仕様書、当該要求仕様書から作成される設計モデル、および、当該設計モデルから作成されるプログラムコードの３つのソフトウェア開発成果物、および、当該開発成果物間の関連情報を維持管理することにより、当該開発成果物においていずれかの開発成果物に修正が与えられた場合でも、その他の開発成果物への反映を漏れなく実施することができ、各開発成果物を修正した際の影響波及範囲を追跡することが可能となる。
【０００６】
また、特許文献３では、ソフトウェア実行プログラムが出力した実行ログに基づいて、実際に実行されたオブジェクトと、当該オブジェクトと当該オブジェクトが使用するテーブルとの関係を示す設計書を作成する。更に、当該テーブルは当該オブジェクトの実行結果から使用すると判定されたものである。これにより、プログラムコードのみが存在する場合でも、実行プログラムを実行することにより、プログラムコード作成後に該当する設計モデルを作成することが可能となる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００７−０８６９２９号公報
【特許文献２】特開２００７−１２２１３５号公報
【特許文献３】特開２００９−２３０６１８号公報
【非特許文献】
【０００８】
【非特許文献１】Klaus Pohl 外2名「Software Product Line Engineering：Foundations, Principles, and Techniques」Springer Verlag (2005)
【発明の概要】
【発明が解決しようとする課題】
【０００９】
非特許文献１に記載された内容は、ソフトウェア製品系列の要求仕様可変ポイントと設計可変ポイントとを、予め直交可変性モデルで関連付けて維持管理するものであるが、直交可変性モデルにより当該要求仕様可変ポイントと当該設計可変ポイントとの関連が維持管理されておらず、プログラムコードのみが存在する場合の課題については触れられていない。
【００１０】
特許文献１に記載された発明は、ソフトウェア製品系列の要求仕様可変ポイントと設計可変ポイントとを、予め関連付けることにより、再利用するソフトウェアコンポーネントを抽出するものであるが、それらの関連が維持管理されておらず、プログラムコードのみが存在する場合の課題については触れられていない。
【００１１】
特許文献２に記載された発明は、要求仕様書、設計モデル、プログラムコードのトレーサビリティを維持管理し、ある開発成果物に修正を与えた場合でもその他の開発成果物の影響波及範囲を追跡するものであるが、それらのトレーサビリティが維持管理されておらず、プログラムコードのみが存在する場合の課題については触れられていない。
【００１２】
特許文献３に記載された発明は、プログラムコードから設計書を生成するものであるが、その設計書はどのような要求仕様に基づいて設計されたものであるかを知ることはできない。また、プログラムコードのみが存在する場合のように、要求仕様可変ポイントと設計可変ポイントとが関連付けられていないソフトウェア製品系列資産から、既に存在する要求仕様可変ポイントと設計可変ポイントとの関連を抽出することについては触れられていない。
【００１３】
このように従来技術では、プログラムコードのみが存在する場合のように、要求仕様可変ポイントと設計可変ポイントとが関連付けられていないソフトウェア製品系列資産から、既に存在する要求仕様可変ポイントと設計可変ポイントとの関連を抽出することはできない。そのため、ソフトウェア製品系列において、既に存在する要求仕様可変ポイントに対して、新たな要求仕様可変部を設定して新製品のソフトウェアを設計する際、当該要求仕様可変ポイントに関連する設計可変ポイントを特定することができず、設計上の不具合を混入することがしばしばあった。
【００１４】
そこで本発明は、プログラムコードのみが存在する場合のように、要求仕様可変ポイントと設計可変ポイントとが関連付けられていないソフトウェア製品系列資産から、既に存在する要求仕様可変ポイントと設計可変ポイントとの関連を抽出し、更に、それらの関連を維持管理するソフトウェア開発支援装置、および、プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１５】
上記課題を解決するために本発明のソフトウェア開発支援装置は、ソフトウェア製品系列の要求仕様可変ポイントにおける各々の製品の要求仕様可変部と前記要求仕様可変部が実行されるプログラム実行シナリオとを関連付ける要求仕様可変ポイント・シナリオ関連管理手段と、前記プログラム実行シナリオを実行するシナリオ実行手段と、前記シナリオ実行手段の実行結果からソフトウェア設計要素を抽出するソフトウェア設計要素抽出手段と、前記ソフトウェア設計要素抽出手段によって抽出されたソフトウェア設計要素から設計可変ポイントを抽出する設計可変部抽出手段と、前記要求仕様可変ポイントと、前記設計可変ポイント抽出手段により抽出された設計可変ポイントとを関連付ける要求仕様可変ポイント・設計可変ポイント関連管理手段と、を備える構成となっている。
【発明の効果】
【００１６】
本発明によれば、プログラムコードのみが存在する場合のように、要求仕様可変ポイントと設計可変ポイントとが関連付けられていないソフトウェア製品系列資産から、要求仕様可変ポイントと設計可変ポイントとの関連を抽出することが可能であり、当該ソフトウェア製品系列を利用して、既に存在する要求仕様可変ポイントに対して、新たな要求仕様可変部を設定して新製品のソフトウェアを設計する際、ソフトウェア設計上の不具合混入を防止し、ソフトウェア開発作業の手戻りによる作業工数を削減することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施形態に係るソフトウェア開発支援装置の構成を示す図
【図２】本発明の実施形態に係る要求仕様可変ポイントと要求仕様可変部との関連を示す図
【図３】本発明の実施形態に係る要求仕様可変ポイントと要求仕様可変部とプログラム実行シナリオとの関連を示す図
【図４】本発明の実施形態に係る設計可変ポイントと設計可変部との関連を示す図
【図５】本発明の実施形態に係る要求仕様可変ポイントと設計可変ポイントとの関連を示す図
【図６】本発明の実施形態に係る設計可変ポイントと設計可変部を構成するソフトウェア設計要素（Ｃ＋＋クラスヘッダ部）を示す図
【図７】本発明の実施形態に係る設計可変ポイントと設計可変部を構成するソフトウェア設計要素（Ｃ＋＋クラス実装部）を示す図
【図８】本発明の実施形態に係る設計可変ポイントと設計可変部を構成するソフトウェア設計要素（Ｃ＋＋定数変数）を示す図
【図９】本発明の実施形態に係る設計可変ポイントと設計可変部を構成するソフトウェア設計要素（Ｃ＋＋列挙型・列挙子）を示す図
【図１０】本発明の実施形態に係るプログラム実行シナリオの構成を示す図
【図１１】本発明の実施形態に係る実行ログの構成を示す図
【図１２】本発明の実施形態に係る要求仕様可変ポイントと設計可変ポイントとを関連付ける方法を示す全体のフローチャート
【図１３】本発明の実施形態に係る要求仕様可変部とプログラム実行シナリオとを関連付けて保存する方法を示すフローチャート
【図１４】本発明の実施形態に係るプログラム実行シナリオを実行し実行ログを生成保存する方法を示すフローチャート
【図１５】本発明の実施形態に係る実行ログからソフトウェア設計要素を生成保存する方法を示すフローチャート
【図１６】本発明の実施形態に係るソフトウェア設計要素から設計可変部を生成保存する方法を示すフローチャート
【図１７】本発明の実施形態に係るソフトウェア製品系列における２つの異なる製品のソフトウェア設計要素を示す図
【図１８】本発明の実施形態に係る要求仕様可変ポイントと設計可変ポイントとを関連付けて保存する方法を示すフローチャート
【発明を実施するための形態】
【００１８】
以下、本発明の実施の形態を、図面を参照しながら説明する。
【００１９】
図１は、本発明の実施の形態に係るソフトウェア開発支援装置の構成を示すブロック図である。図１において本発明の実施の形態に係るソフトウェア開発支援装置は、プログラムを格納し下記各処理部の処理動作、および、下記各データベースに保存されるデータを改変、参照するソフトウェア開発環境１と、要求仕様可変部とプログラム実行シナリオとの関連、設計可変部、および要求仕様可変ポイントと設計可変ポイントとの関連を表示する表示部２と、要求仕様可変部とプログラム実行シナリオとの関連を改変、参照する要求仕様可変部・シナリオ関連管理部３と、要求仕様可変部とプログラム実行シナリオとの関連を保存する要求仕様可変部・シナリオ関連データベース４と、設計可変部を改変、参照する設計可変部管理部６と、設計可変部を保存する設計可変部データベース７と、要求仕様可変ポイントと設計可変ポイントとの関連を改変、参照する要求仕様可変ポイント・設計可変ポイント関連管理部９と、要求仕様可変ポイントと設計可変ポイントとの関連を保存する要求仕様可変ポイント・設計可変ポイント関連データベース１０と、プログラム実行シナリオを実行して実行ログを生成するシナリオ実行部１１と、実行ログを一時的に保存するプログラム実行ログ保存部１２と、実行ログからソフトウェア設計要素を抽出するソフトウェア設計要素抽出部１３と、ソフトウェア設計要素を一時的に保存するソフトウェア設計要素保存部１４と、ソフトウェア設計要素から設計可変部を抽出する設計可変部抽出部１５と、を備えている。
【００２０】
ソフトウェア開発環境１の利用者はソフトウェア開発者であり、ソフトウェア開発者は入力端末１６を利用してソフトウェア開発環境１を操作する。
【００２１】
図２は図１に示した要求仕様可変部・シナリオ関連データベース４に要求仕様可変部とプログラム実行シナリオの関連を登録するに際し、事前に準備する要求仕様可変部のテーブルの構成と項目の例を示す図である。図２に示す要求仕様可変部テーブル２０は、次のようにして構成される。即ち、要求仕様可変ポイントＩＤ２１には、要求仕様可変部テーブル２０のレコードを識別するために付与される一意の番号が格納される。要求仕様可変ポイント名２２には、当該レコードに係る要求仕様可変ポイントを示す名称が格納される。要求仕様可変部（製品１）２３には、ソフトウェア製品系列において、ある製品１の当該レコードに係る要求仕様可変部が格納される。要求仕様可変部（製品２）２４には、ソフトウェア製品系列において、製品１とは異なる製品２の当該レコードに係る要求仕様可変部が格納される。図２は、要求仕様可変部が製品１、製品２の２つの場合を示しているが、ソフトウェア製品系列を適用した製品が３種類以上存在する場合には、要求仕様可変部（製品１）２３、要求仕様可変部（製品２）２４と同様に、要求仕様可変部テーブル２０に各製品の要求仕様可変部を格納する列が追加される。
【００２２】
図２において、要求仕様可変ポイントＩＤ２１が００１、要求仕様可変ポイント名２２がＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）解像度である要求仕様可変部に対して、当該レコードに関連する要求仕様可変部（製品１）２３はＱＶＧＡ（Ｑｕａｒｔｅｒ  Ｖｉｄｅｏ  Ｇｒａｐｈｉｃｓ  Ａｒｒａｙ）、要求仕様可変部（製品２）２４はＶＧＡ（Ｖｉｄｅｏ  Ｇｒａｐｈｉｃｓ  Ａｒｒａｙ）であることを示している。
【００２３】
図２において、要求仕様可変ポイントＩＤ２１が００２、００３、００４である要求仕様可変部についても同様である。
【００２４】
図３は図１に示した要求仕様可変部・シナリオ関連データベース４のテーブルの構成と、登録された項目の例を示す図である。図３に示す要求仕様可変部・シナリオ関連テーブル３０は、次のようにして構成される。即ち、要求仕様可変ポイントＩＤ３１には、要求仕様可変部・シナリオ関連テーブル３０のレコードを識別するために付与される一意の番号が格納される。要求仕様可変ポイント名３２には、当該レコードに係る要求仕様可変ポイントを示す名称が格納される。要求仕様可変部（製品１）３３には、ソフトウェア製品系列において、ある製品１の当該レコードに係る要求仕様可変部が格納される。プログラム実行シナリオ（製品１）３４には、要求仕様可変部（製品１）３３に該当する機能要求、または、非機能要求（品質特性要求）を確認することが可能な操作手順が記されたシナリオが格納される。要求仕様可変部（製品２）３５には、ソフトウェア製品系列において、製品１とは異なる製品２の当該レコードに係る要求仕様可変部が格納される。プログラム実行シナリオ（製品２）３６には、要求仕様可変部（製品２）３５に該当する機能要求、または、非機能要求（品質特性要求）を確認することが可能な操作手順が記されたシナリオが格納される。図３は、要求仕様可変部が製品１、製品２の２つの場合を示しているが、ソフトウェア製品系列を適用した製品が３種類以上存在する場合には、要求仕様可変部（製品１）３３、プログラム実行シナリオ（製品１）３４、要求仕様可変部（製品２）３５、プログラム実行シナリオ（製品２）３６と同様に、要求仕様可変部・シナリオ関連テーブル３０に各製品の要求仕様可変部とプログラム実行シナリオを格納する列が追加される。
【００２５】
図３において、要求仕様可変ポイントＩＤ３１が００１、要求仕様可変ポイント名３２がＬＣＤ解像度である要求仕様可変部に対して、当該レコードに関連する要求仕様可変部（製品１）３３はＱＶＧＡ、プログラム実行シナリオ（製品１）３４はＳＣＥＮＡＲＩＯ＿００１＿００１、要求仕様可変部（製品２）３５はＶＧＡ、プログラム実行シナリオ（製品２）はＳＣＥＮＡＲＩＯ＿００１＿００２であることを示している。
【００２６】
図３において、要求仕様可変ポイントＩＤ３１が００２、００３、００４である要求仕様可変部についても同様である。
【００２７】
要求仕様は、機能要求と非機能要求（品質特性要求）とから構成され、ソフトウェアが搭載されるコンピュータシステムとその利用者との境界に位置する動作上の仕様であり、コンピュータシステムの利用者は、コンピュータシステム内部のソフトウェアの構造や挙動に係る設計を知ることなく、コンピュータシステムの外側から要求仕様を認識することができる。従って、図３に示す要求仕様可変部・シナリオ関連テーブルにおいて、要求仕様可変部とプログラム実行シナリオとを関連付けることが可能となる。
【００２８】
図４は図１に示した設計可変部データベース７のテーブルの構成と、登録された項目の例を示す図である。図４に示す設計可変部テーブル４０は、次のようにして構成される。即ち、設計可変ポイントＩＤ４１には、設計可変部テーブル４０のレコードを識別するために付与される一意の番号が格納される。設計可変ポイント実現方法４２には、設計の可変ポイントを実現するためのソフトウェア設計上の手段が格納される。プログラミング言語がC++の場合には、設計可変ポイントを実現するソフトウェア設計上の手段には、クラス、定数変数、列挙型・列挙子などがある。図４の設計可変部テーブル４０には、C++の場合の項目例を示している。設計可変ポイントを実現するためのソフトウェア設計手段は、適用するプログラミング言語により異なる。設計可変ポイント４３には、当該レコードに係る設計可変ポイントを特定する名称が格納される。プログラミング言語がC++の場合には、設計可変ポイント実現方法４２が、クラス、定数変数、列挙型・列挙子に対して、それぞれ、クラス名、定数変数名、列挙子名が格納される。設計可変部（製品１）４４には、ソフトウェア製品系列において、ある製品１の当該レコードに係る設計可変部が格納される。設計可変ポイント実現方法４２が、クラス、定数変数、列挙型・列挙子に対して、それぞれ、クラス名、定数値、定数値が格納される。設計可変部（製品２）４５には、ソフトウェア製品系列において、製品１とは異なる製品２の当該レコードに係る設計可変部が格納される。格納される値は、設計可変部（製品１）４４と同様である。図４は、設計可変部が製品１、製品２の２つの場合を示しているが、ソフトウェア製品系列を適用した製品が３種類以上存在する場合には、設計可変部（製品１）４４、設計可変部（製品２）４５と同様に、設計可変部テーブル４０に各製品の設計可変部を格納する列が追加される。
【００２９】
図４において、設計可変ポイントＩＤ４１が００１、設計可変ポイント実現方法４２がクラス、設計可変ポイント４３がＤｉｓｐｌａｙＴｒａｎｓｆｅｒＣｏｎｔｒｏｌｌｅｒである設計可変ポイントに対して、当該レコードに関連する設計可変部（製品１）４４はＤｉｓｐｌａｙＴｒａｎｓｆｅｒＣｏｎｔｒｏｌｌｅｒＬｏｗＳｐｅｅｄ、設計可変部（製品２）４５はＤｉｓｐｌａｙＴｒａｎｓｆｅｒＣｏｎｔｒｏｌｌｅｒＨｉｇｈＳｐｅｅｄであることを示している。
【００３０】
図４において、設計可変ポイントＩＤ３１が００２、００３、００４、００５、００６、００７である設計可変部についても同様である。
【００３１】
図５は図１に示した要求仕様可変ポイント・設計可変ポイント関連データベース１０のテーブルの構成と、登録された項目の例を示す図である。図５に示す要求仕様可変ポイント・設計可変ポイント関連テーブル５０は、次のようにして構成される。即ち、要求仕様可変ポイントＩＤ５１には、要求仕様可変部テーブル２０の要求仕様可変ポイントＩＤ２１と同一の値が格納される。要求仕様可変ポイント名５２には、要求仕様可変部テーブル２０の要求仕様可変ポイント名２２と同一の値が格納される。設計可変ポイントＩＤ５３には、設計可変部テーブル４０の設計可変ポイントＩＤ４１と同一の値が格納される。設計可変ポイント実現方法５４には、設計可変部テーブル４０の設計可変ポイント実現方法４２と同一の値が格納される。設計可変ポイント５５には、設計可変部テーブル４０の設計可変ポイント４３と同一の値が格納される。
【００３２】
図５において、要求仕様可変ポイントＩＤ５１が００１、要求仕様可変ポイント名５２がＬＣＤ解像度である要求仕様可変部に対して、当該レコードに関連する設計可変部は、設計可変ポイントＩＤ５３が００１、設計可変ポイント実現方法５４がクラス、設計可変ポイント５５がＤｉｓｐｌａｙＴｒａｎｓｆｅｒＣｏｎｔｒｏｌｌｅｒである設計可変部と、設計可変ポイントＩＤ５３が００３、設計可変ポイント実現方法５４が定数変数、設計可変ポイント５５がＷｉｎｄｏｗＳｉｚｅＨｅｉｇｈｔである設計可変部と、設計可変ポイントＩＤ５３が００４、設計可変ポイント実現方法５４が定数変数、設計可変ポイント５５がＷｉｎｄｏｗＳｉｚｅＷｉｄｔｈである設計可変部と、設計可変ポイントＩＤ５３が００５、設計可変ポイント実現方法５４がクラス、設計可変ポイント５５がＷｉｇｅｔＨｉｎｔＳｉｚｅＰｒｏｄｕｃｅｒである設計可変部と、から構成されることを示している。
【００３３】
図５において、要求仕様可変ポイントＩＤ５１が００２、００３、００４である要求仕様可変部についても同様である。
【００３４】
図６は、設計可変ポイントと設計可変部とを、Ｃ＋＋の抽象クラスと具象クラスで実現した場合のＣ＋＋クラスヘッダ部の例を示す図である。本例は、設計可変部テーブル４０における設計可変ポイントＩＤ４１が００１であるレコードに該当する。
【００３５】
図６におけるクラスＤｉｓｐｌａｙＴｒａｎｓｆｅｒＣｏｎｔｒｏｌｌｅｒ６０は、設計可変ポイントであり、ソフトウェア製品系列の全ての製品に対して共通に利用されるクラスである。クラスＤｉｓｐｌａｙＴｒａｎｓｆｅｒＣｏｎｔｒｏｌｌｅｒ６０は、純粋仮想関数ｔｒａｎｓｆｅｒ（）６１を有する抽象クラスである。
【００３６】
図６におけるクラスＤｉｓｐｌａｙＴｒａｎｓｆｅｒＣｏｎｔｒｏｌｌｅｒＬｏｗＳｐｅｅｄ６２は、ソフトウェア製品系列の製品１に対して利用されるクラスである。クラスＤｉｓｐｌａｙＴｒａｎｓｆｅｒＣｏｎｔｒｏｌｌｅｒ６０を継承し、当該クラスの純粋仮想関数ｔｒａｎｓｆｅｒ（）６１が、仮想関数ｔｒａｎｓｆｅｒ（）６３によりオーバライドされた具象クラスである。
【００３７】
図６におけるクラスＤｉｓｐｌａｙＴｒａｎｓｆｅｒＣｏｎｔｒｏｌｌｅｒＨｉｇｈＳｐｅｅｄ６４は、ソフトウェア製品系列の製品２に対して利用されるクラスである。クラスＤｉｓｐｌａｙＴｒａｎｓｆｅｒＣｏｎｔｒｏｌｌｅｒ６０を継承し、当該クラスの純粋仮想関数ｔｒａｎｓｆｅｒ（）６１が、仮想関数ｔｒａｎｓｆｅｒ（）６５によりオーバライドされた具象クラスである。
【００３８】
図７は、設計可変ポイントと設計可変部とを、Ｃ＋＋の抽象クラスと具象クラスで実現した場合のＣ＋＋クラス実装部の例を示す図である。本例は、設計可変部テーブル４０における設計可変ポイントＩＤ４１が００１であるレコードに該当し、図６に示したＣ＋＋クラスヘッダ部に対応するＣ＋＋クラス実装部である。
【００３９】
図７におけるメソッドＤｉｓｐｌａｙＴｒａｎｓｆｅｒＣｏｎｔｒｏｌｌｅｒＬｏｗＳｐｅｅｄ：：ｔｒａｎｓｆｅｒ（）７０は、ソフトウェア製品系列の製品１に対して利用される。ソフトウェア製品系列の対象製品のディスプレイが小さい場合のデータ転送アルゴリズムが実装されている。
【００４０】
図７におけるメソッドＤｉｓｐｌａｙＴｒａｎｓｆｅｒＣｏｎｔｒｏｌｌｅｒＨｉｇｈＳｐｅｅｄ：：ｔｒａｎｓｆｅｒ（）７１は、ソフトウェア製品系列の製品２に対して利用される。ソフトウェア製品系列の対象製品のディスプレイが大きい場合のデータ転送アルゴリズムが実装されている。
【００４１】
図８は、設計可変ポイントと設計可変部とを、Ｃ＋＋の定数変数で実現した場合のＣ＋＋プログラムコードの例を示す図である。本例は、設計可変部テーブル４０における設計可変ポイントＩＤ４１が００６であるレコードに該当する。
【００４２】
図８における定数変数ＤａｔａＣａｐａｃｉｔｙ８０、８２は、設計可変ポイントであり、ソフトウェア製品系列の全ての製品に対して共通に利用される定数変数である。定数変数ＤａｔａＣａｐａｃｉｔｙ８０と、定数変数ＤａｔａＣａｐａｃｉｔｙ８２とが、それぞれ、ソフトウェア製品系列の製品１、製品２で利用されていることを示している。
【００４３】
図８における定数変数ＤａｔａＣａｐａｃｉｔｙ８０に設定された値８１である１２８ＭＢは、ソフトウェア製品系列の製品１に対して利用される値であり、設計可変部に該当する。
【００４４】
図８における定数変数ＤａｔａＣａｐａｃｉｔｙ８２に設定された値８３である５１２ＭＢは、ソフトウェア製品系列の製品２に対して利用される値であり、設計可変部に該当する。
【００４５】
図９は、設計可変ポイントと設計可変部とを、Ｃ＋＋の列挙型・列挙子で実現した場合のＣ＋＋プログラムコードの例を示す図である。本例は、設計可変部テーブル４０における設計可変ポイントＩＤ４１が００７であるレコードに該当する。
【００４６】
図９における列挙型ＭａｉｌｅｒＡｔｔｒｉｂｕｔｅｓ９０、９３は、設計可変ポイントであり、ソフトウェア製品系列の全ての製品に対して共通に利用される列挙型である。
【００４７】
図９における列挙型ＭａｉｌｅｒＡｔｔｒｉｂｕｔｅｓ９０、９３に属する列挙子ＭＡＸ＿ＮＵＭ＿ＭＡＩＬ＿ＥＮＴＩＴＩＥＳ９１、９４は、設計可変ポイントであり、ソフトウェア製品系列の全ての製品に対して共通に利用される列挙子である。
【００４８】
図９における列挙子ＭＡＸ＿ＮＵＭ＿ＭＡＩＬ＿ＥＮＴＩＴＩＥＳ９１に設定された値９２である１０００は、ソフトウェア製品系列の製品１に対して利用される値であり、設計可変部に該当する。
【００４９】
図９における列挙子ＭＡＸ＿ＮＵＭ＿ＭＡＩＬ＿ＥＮＴＩＴＩＥＳ９４は、に設定された値９５である５０００は、ソフトウェア製品系列の製品２に対して利用される値であり、設計可変部に該当する。
【００５０】
図１０は、図１に示した要求仕様可変部・シナリオ関連データベース４に登録され、シナリオ実行部１１により実行されるプログラム実行シナリオの構成と例を示す図である。図１０は、１から１０までの数値キーと、上下左右キーと、オンフックキーと、オフフックキーと、を入力手段として備える携帯電話のプログラム実行シナリオの例である。
【００５１】
プログラム実行シナリオ１００は、入力イベントＩＤ１０１、入力イベント種別１０２、入力値１０３の３個のフィールドより構成される。プログラム実行シナリオの入力イベントの各レコードは、入力イベントＩＤ１０１により一意に識別され、入力イベントＩＤの数値の昇順に、入力イベント種別１０２の入力値１０３が携帯電話へ入力される。
【００５２】
入力イベントＩＤ１０１が００１であるレコードは、入力イベント種別１０２がキー長押下（ＬＯＮＧ＿ＰＲＥＳＳ）、入力値１０３がオンフックキー（ＫＥＹ＿ＯＮ＿ＨＯＯＫ）であることを示している。
【００５３】
入力イベントＩＤ１０１が００２であるレコードは、入力イベント種別１０２が待ち（ＷＡＩＴ）、入力値１０３が６０秒（６０）であることを示している。
【００５４】
入力イベントＩＤ１０１が００５であるレコードは、入力イベント種別１０２が実行ログ記録（ＬＯＧＧＩＮＧ）、入力値１０３が開始（ＳＴＡＲＴ）であり、図１におけるプログラム実行ログ保存部１２へ保存する実行ログの記録を開始することを示している。
【００５５】
入力イベントＩＤ１０１が０１０であるレコードは、入力イベント種別１０２が実行ログ記録（ＬＯＧＧＩＮＧ）、入力値１０３が終了（ＥＮＤ）であり、図１におけるプログラム実行ログ保存部１２へ保存する実行ログの記録を終了することを示している。
【００５６】
このようにして、プログラム実行シナリオ１００において、入力イベントに、実行ログの記録の開始と終了を用意することにより、要求仕様可変部に該当する部分のみを実行ログとして記録し、プログラム実行ログ保存部１２に保存することができる。
【００５７】
図１０は、キーを入力手段として備える携帯電話のプログラム実行シナリオの例であるが、ソフトウェア製品系列を適用する製品の特性に応じて、プログラム実行シナリオの入力イベント種別１０２と入力値１０３は異なる。例えば、キーボードを供えた携帯電話の場合、入力イベント種別が、a、bなどの英文字も候補となる。
【００５８】
図１１は、図１に示したシナリオ実行部１１が、図１０に示したプログラム実行シナリオを実行することにより、図１に示したプログラム実行ログ保存部１２に格納される実行ログの構成と例を示す図である。
【００５９】
実行ログ１１０は、Ｃ＋＋を用いてプログラムコードが記述されたソフトウェアの例である。実行ログには、Ｃ＋＋のメソッド、定数変数、列挙型・列挙子など、設計可変部を構成するソフトウェア設計要素が生成される。
【００６０】
実行ログ１１０の一部である１１１、即ち、Ｐｒｏｇｒａｍ  Ｓｃｅｎａｒｉｏ  Ｎａｍｅ：ＳＣＥＮＡＲＩＯ＿００１＿００１は、プログラム実行シナリオであり、図３に示した要求仕様可変部・シナリオ関連テーブル３０に格納されているプログラム実行シナリオと同一である。
【００６１】
実行ログ１１０の一部である１１２は、関数main（）から定数変数ｓｏｍｅＶａｒｉａｂｌｅ００１が利用され、その値が１６であることを示している。
【００６２】
実行ログ１１０の一部である１１３は、メソッドＣｌａｓｓＮａｍｅ００１：：ｍｅｔｈｏｄＮａｍｅ００１（）からメソッドＣｌａｓｓＮａｍｅ００２：：ｍｅｔｈｏｄＮａｍｅ００１（）が呼び出され、メソッドＣｌａｓｓＮａｍｅ００２：：ｍｅｔｈｏｄＮａｍｅ００１（）から定数変数ｓｏｍｅＶａｒｉａｂｌｅ００２が利用され、その値が５００であることを示している。
【００６３】
実行ログ１１０の一部である１１４は、メソッドＣｌａｓｓＮａｍｅ００３：：ｍｅｔｈｏｄＮａｍｅ００１（）から列挙子ＳＯＭＥ＿ＥＮＵＭＥＲＡＴＯＲ＿００１が利用され、その値が１６であることを示している。
【００６４】
Ｃ＋＋ではなく、Ｊａｖａ（登録商標）など、他のプログラミング言語を用いてプログラムコードが記述されている場合は、実行ログに保存される内容は異なるが、設計可変部を構成するソフトウェア設計要素が生成されることには変わりない。
【００６５】
図１２は、図１に示したソフトウェア開発環境１における処理動作を説明するためのフローチャートである。
【００６６】
図１２においてステップＳ１０１では、要求仕様可変部テーブル２０より要求仕様可変ポイントを選択する。ステップＳ１０２では、ステップＳ１０１で選択された要求仕様可変ポイントに対して、ソフトウェア製品系列の複数製品の要求仕様可変部に該当するプログラム実行シナリオとを関連付け、要求仕様可変部・シナリオ関連テーブル３０を生成する。ステップＳ１０３では、ステップＳ１０２で選択されたプログラム実行シナリオを実行して実行ログを生成する。ステップＳ１０４では、ステップＳ１０３で生成された実行ログからソフトウェア設計要素を抽出する。ステップＳ１０５では、ステップＳ１０４で抽出したソフトウェア設計要素から設計可変部を抽出する。ステップＳ１０６では、ステップＳ１０１で選択された要求仕様可変ポイントと、ステップＳ１０５で抽出した設計可変ポイントとを関連付け、要求仕様可変ポイント・設計可変ポイント関連テーブル５０を生成する。
【００６７】
図１２に示した各ステップの詳細を以下に示す。
【００６８】
図１３は、図１２に示した処理動作のうち、要求仕様可変ポイントとプログラム実行シナリオとを関連付けるステップＳ１０２の処理動作の詳細を説明するためのフローチャートである。
【００６９】
要求仕様可変部・シナリオ関連データベース４に格納されている要求仕様可変部・シナリオ関連テーブル３０を、要求仕様可変部・シナリオ関連管理部３を利用して、表示部２に表示する。
【００７０】
表示部２において、ソフトウェア開発者は入力端末１６から、ステップＳ１０１で選択された要求仕様可変ポイントを処理対象として選択する（ステップＳ２０１）。
ソフトウェア製品系列の全ての製品に対して、要求仕様可変部とプログラム実行シナリオとの関連付けが終了した場合（ステップＳ２０２のｙｅｓ）、要求仕様可変部とプログラム実行シナリオとの関連付けを終了する（ステップＳ２０５）。
【００７１】
ソフトウェア製品系列の全ての製品に対して、要求仕様可変部とプログラム実行シナリオとの関連付けが終了していない場合（ステップＳ２０２のｎｏ）、表示部２において、ソフトウェア開発者は入力端末１６から、製品の要求仕様可変部に該当するプログラム実行シナリオを選択し（ステップＳ２０３）、要求仕様可変部・シナリオ関連管理部３を利用して、要求仕様可変部・シナリオ関連テーブル３０を改変し、要求仕様可変部・シナリオ関連データベース４へ格納する（ステップＳ２０４）。
【００７２】
以上により、選択された要求仕様可変ポイントに対して、ソフトウェア製品系列の全ての製品の要求仕様可変部とプログラム実行シナリオとが関連付けられて保存された。
【００７３】
図１４は、図１２に示した処理動作のうち、プログラム実行シナリオを実行するステップＳ１０３の処理動作の詳細を説明するためのフローチャートである。
【００７４】
要求仕様可変部・シナリオ関連データベース４に格納されている要求仕様可変部・シナリオ関連テーブル３０を、要求仕様可変部・シナリオ関連管理部３を利用して、表示部２に表示する。
【００７５】
表示部２において、ソフトウェア開発者は入力端末１６から、ステップＳ１０１で選択された要求仕様可変ポイントを処理対象として選択する（ステップＳ３０１）。
【００７６】
ソフトウェア製品系列の全ての製品に対して、プログラム実行シナリオの実行が終了した場合（ステップＳ３０２のｙｅｓ）、プログラム実行シナリオの実行を終了する（ステップＳ３０６）。
【００７７】
ソフトウェア製品系列の全ての製品に対して、プログラム実行シナリオの実行が終了していない場合（ステップＳ３０２のｎｏ）、表示部２において、ソフトウェア開発者が入力端末１６から、製品の要求仕様可変部に該当するプログラム実行シナリオを選択すると、要求仕様可変部・シナリオ関連管理部３を利用して、要求仕様可変部・シナリオ関連データベース４に格納されている要求仕様可変部・シナリオ関連テーブル３０を参照し、プログラム実行シナリオが取得される（ステップＳ３０３）。シナリオ実行部１１は、ステップＳ３０３で取得されたプログラム実行シナリオを実行し（ステップＳ３０４）、実行結果を実行ログとしてプログラム実行ログ保存部１２に保存する（ステップＳ３０５）。
【００７８】
以上により、選択された要求仕様可変ポイントに対して、ソフトウェア製品系列の全ての製品の要求仕様可変部に関連付けられたプログラム実行シナリオが実行され、実行結果が実行ログとして保存された。
【００７９】
図１５は、図１２に示した処理動作のうち、ソフトウェア設計要素を抽出するステップＳ１０４の処理動作の詳細を説明するためのフローチャートである。
【００８０】
要求仕様可変部・シナリオ関連データベース４に格納されている要求仕様可変部・シナリオ関連テーブル３０を、要求仕様可変部・シナリオ関連管理部３を利用して、表示部２に表示する。
【００８１】
表示部２において、ソフトウェア開発者は入力端末１６から、ステップＳ１０１で選択された要求仕様可変ポイントを処理対象として選択する（ステップＳ４０１）。
ソフトウェア製品系列の全ての製品に対して、ソフトウェア設計要素の生成が終了した場合（ステップＳ４０２のｙｅｓ）、ソフトウェア設計要素の生成保存を終了する（ステップＳ４０６）。
【００８２】
ソフトウェア製品系列の全ての製品に対して、ソフトウェア設計要素の生成保存が終了していない場合（ステップＳ４０２のｎｏ）、表示部２において、ソフトウェア開発者が入力端末１６から、製品の要求仕様可変部に該当するプログラム実行シナリオを選択すると、シナリオ実行部１１を利用して、プログラム実行ログ保存部１２に格納されている実行ログ１１０が取得される（ステップＳ４０３）。ソフトウェア設計要素抽出部１３は、ステップＳ４０３で取得された実行ログ１１０からソフトウェア設計要素を抽出する（ステップＳ４０４）。ソフトウェア設計要素抽出部１３は、ステップＳ４０４で抽出したソフトウェア設計要素をソフトウェア設計要素保存部１４に保存する（ステップＳ４０５）。
ソフトウェア設計要素は、適用するプログラミング言語により異なる。Ｃ＋＋の場合には、図６と図７に示すクラス、図８に示す定数変数、図９に示す列挙型・列挙子などである。
【００８３】
以上により、選択された要求仕様可変ポイントに対して、ソフトウェア製品系列の全ての製品の要求仕様可変部に関連付けられたプログラム実行シナリオが実行され、実行結果が実行ログとして保存され、実行ログからソフトウェア設計要素が生成された。
【００８４】
図１６は、図１２に示した処理動作のうち、設計可変部を抽出するステップＳ１０５の処理動作の詳細を説明するためのフローチャートである。
【００８５】
要求仕様可変部・シナリオ関連データベース４に格納されている要求仕様可変部・シナリオ関連テーブル３０を、要求仕様可変部・シナリオ関連管理部３を利用して、表示部２に表示する。
【００８６】
表示部２において、ソフトウェア開発者は入力端末１６から、ステップＳ１０１で選択された要求仕様可変ポイントを処理対象として選択する（ステップＳ５０１）。
【００８７】
次に、設計可変部データベース７に格納されている設計可変部テーブル４０を、設計可変部管理部６を利用して、表示部２に表示する。
【００８８】
ソフトウェア製品系列の２つの製品の組み合わせ（製品Ａ、製品Ｂ）全てに対して、設計可変部の生成保存が終了した場合（ステップＳ５０２のｙｅｓ）、設計可変部の生成を終了する（ステップＳ５０６）。
【００８９】
ソフトウェア製品系列の２つの製品の組み合わせ（製品Ａ、製品Ｂ）とは、当該ソフトウェア製品系列に属する任意の２つの製品を選択した組み合わせであり、組み合わせの順序は問わない。例えば、ソフトウェア製品系列に３製品が属し、３製品を、それぞれ、製品１、製品２、製品３とすると、（製品Ａ、製品Ｂ）の組み合わせは、以下の３通りとなる。
（製品Ａ、製品Ｂ）＝（製品１、製品２）
（製品Ａ、製品Ｂ）＝（製品２、製品３）
（製品Ａ、製品Ｂ）＝（製品３、製品１）
ソフトウェア製品系列の２つの製品の組み合わせ（製品Ａ、製品Ｂ）全てに対して、設計可変部の生成保存が終了していない場合（ステップＳ５０２のｎｏ）、表示部２において、ソフトウェア開発者は入力端末１６から、設計可変部抽出部１５を利用して、製品Ａのソフトウェア設計要素を選択する（ステップＳ５０３）。次に、ソフトウェア開発者は入力端末１６から、同一の方法で製品Ｂのソフトウェア設計要素を選択する（ステップＳ５０４）。設計可変部抽出部１５は、製品Ａのソフトウェア設計要素と、製品Ｂのソフトウェア設計要素との差分を算出して設計可変部を生成し、設計可変部管理部６を利用して、設計可変部テーブル４０を改変し、設計可変部データベース７へ登録する。更に、設計可変部管理部６を利用して、設計可変部テーブル４０を表示部２へ表示する（ステップＳ５０５）。
【００９０】
図１７は、ソフトウェア製品系列の製品である製品１と製品２の実行ログから、図１５に示した処理動作により抽出された製品１のソフトウェア設計要素１７０と、製品２のソフトウェア設計要素１７５である。設計可変部を抽出するためには、製品１のソフトウェア設計要素と、製品２のソフトウェア設計要素との差分を抽出する。
【００９１】
図１７において、Ｃ＋＋の定数変数である製品１のＷｉｎｄｏｗＳｉｚｅＨｅｉｇｈｔ１７１の値が３２０であるのに対し、製品２のＷｉｎｄｏｗＳｉｚｅＨｅｉｇｈｔ１７６の値が６４０である。当該例は、設計可変ポイントが、Ｃ＋＋の定数変数ＷｉｎｄｏｗＳｉｚｅＨｅｉｇｈｔ、設計可変部が、製品１では３２０、製品２では６４０、となる。当該例は、図４に示した設計可変部テーブルの設計可変ポイントID４１が００３であるレコードに対応した例である。
【００９２】
図１７において、Ｃ＋＋の定数変数である製品１のＷｉｎｄｏｗＳｉｚｅＷｉｄｔｈ１７２の値が２４０であるのに対し、製品２のＷｉｎｄｏｗＳｉｚｅＷｉｄｔｈ１７７の値が４８０である。当該例では、設計可変ポイントが、Ｃ＋＋の定数変数ＷｉｎｄｏｗＳｉｚｅＷｉｄｔｈ、設計可変部が、製品１では２４０、製品２では４８０、となる。当該例は、図４に示した設計可変部テーブルの設計可変ポイントID４１が００４であるレコードに対応した例である。
【００９３】
図１７において、Ｃ＋＋のメソッドである製品１のＷｉｄｇｅｔＨｉｎｔＳｉｚｅＰｒｏｄｕｃｅｒＳｍａｌｌＷｉｎｄｏｗ：：ｐｒｏｄｕｃｅＷｉｄｇｅｔＨｉｎｔ１７３と、製品２のＷｉｄｇｅｔＨｉｎｔＳｉｚｅＰｒｏｄｕｃｅｒＬａｒｇｅＷｉｎｄｏｗ：：ｐｒｏｄｕｃｅＷｉｄｇｅｔＨｉｎｔ１７８が差分である。当該例は、設計可変ポイントが、Ｃ＋＋のクラスＷｉｄｇｅｔＨｉｎｔＳｉｚｅＰｒｏｄｕｃｅｒ、設計可変部が、製品１ではＣ＋＋のクラスＷｉｄｇｅｔＨｉｎｔＳｉｚｅＰｒｏｄｕｃｅｒＳｍａｌｌＷｉｎｄｏｗ、製品２ではＣ＋＋のクラスＷｉｄｇｅｔＨｉｎｔＳｉｚｅＰｒｏｄｕｃｅｒＬａｒｇｅＷｉｎｄｏｗ、となる。なお、製品１で使用されているＣ＋＋のクラスＷｉｄｇｅｔＨｉｎｔＳｉｚｅＰｒｏｄｕｃｅｒＳｍａｌｌＷｉｎｄｏｗと、製品２で使用されているＣ＋＋のクラスＷｉｄｇｅｔＨｉｎｔＳｉｚｅＰｒｏｄｕｃｅｒＬａｒｇｅＷｉｎｄｏｗのスーパークラスであるＷｉｄｇｅｔＨｉｎｔＳｉｚｅＰｒｏｄｕｃｅｒが存在し、ソフトウェア製品系列の全ての製品において使用されていると仮定した。当該例は、図４に示した設計可変部テーブルの設計可変ポイントID４１が００５であるレコードに対応した例である。
【００９４】
図１７において、Ｃ＋＋のメソッドである製品１のＤｉｓｐｌａｙＴｒａｎｓｆｅｒＣｏｎｔｒｏｌｌｅｒＬｏｗＳｐｅｅｄ：：ｔｒａｎｓｆｅｒ１７４と、製品２のＤｉｓｐｌａｙＴｒａｎｓｆｅｒＣｏｎｔｒｏｌｌｅｒＨｉｇｈＳｐｅｅｄ：：ｔｒａｎｓｆｅｒ１７９が差分である。当該例は、設計可変ポイントが、Ｃ＋＋のクラスＤｉｓｐｌａｙＴｒａｎｓｆｅｒＣｏｎｔｒｏｌｌｅｒ、設計可変部が、製品１ではＣ＋＋のクラスＤｉｓｐｌａｙＴｒａｎｓｆｅｒＣｏｎｔｒｏｌｌｅｒＬｏｗＳｐｅｅｄ、製品２ではＣ＋＋のクラスＤｉｓｐｌａｙＴｒａｎｓｆｅｒＣｏｎｔｒｏｌｌｅｒＨｉｇｈＳｐｅｅｄ、となる。なお、製品１で使用されているＣ＋＋のクラスＤｉｓｐｌａｙＴｒａｎｓｆｅｒＣｏｎｔｒｏｌｌｅｒＬｏｗＳｐｅｅｄと、製品２で使用されているＣ＋＋のクラスＤｉｓｐｌａｙＴｒａｎｓｆｅｒＣｏｎｔｒｏｌｌｅｒＨｉｇｈＳｐｅｅｄのスーパークラスであるＤｉｓｐｌａｙＴｒａｎｓｆｅｒＣｏｎｔｒｏｌｌｅｒが存在し、ソフトウェア製品系列の全ての製品において使用されていると仮定した。当該例は、図４に示した設計可変部テーブルの設計可変ポイントID４１が００１であるレコードに対応した例である。
【００９５】
以上により、選択された要求仕様可変ポイントに対して、ソフトウェア製品系列の全ての製品の要求仕様可変部に関連付けられたプログラム実行シナリオが実行され、実行結果が実行ログとして保存され、実行ログからソフトウェア設計要素が生成され、設計可変部が生成され、保存された。
【００９６】
図１８は、図１２に示した処理動作のうち、要求仕様可変ポイントと設計可変ポイントとを関連付けるステップＳ１０６の処理動作の詳細を説明するためのフローチャートである。
【００９７】
要求仕様可変部・シナリオ関連データベース４に格納されている要求仕様可変部・シナリオ関連テーブル３０を、要求仕様可変部・シナリオ関連管理部３を利用して、表示部２に表示する。
【００９８】
表示部２において、ソフトウェア開発者は入力端末１６から、ステップＳ１０１で選択された要求仕様可変ポイントを処理対象として選択する（ステップＳ６０１）。
【００９９】
次に、設計可変部データベース７に格納されている設計可変部テーブル４０を、設計可変部管理部６を利用して、表示部２に表示する。その際、ソフトウェア開発者がステップＳ６０１で選択した要求仕様可変ポイントに関連付けられたプログラム実行シナリオが実行され、実行結果が実行ログとして保存され、実行ログからソフトウェア設計要素が抽出され、その結果として生成された設計可変部のみが、表示部２に表示される。表示形式は、設計可変部テーブル４０である。
【０１００】
次に、要求仕様可変ポイント・設計可変ポイント関連データベース１０に格納されている要求仕様可変ポイント・設計可変ポイント関連テーブル５０を、要求仕様可変ポイント・設計可変ポイント関連管理部９を利用して、表示部２に表示する。
【０１０１】
表示部２に表示された設計可変ポイント全てに対して、要求仕様可変ポイントと設計可変ポイントとの関連付けが終了した場合（ステップＳ６０２のｙｅｓ）、設計可変部の生成を終了する（ステップＳ６０４）。
【０１０２】
表示部２に表示された設計可変ポイント全てに対して、要求仕様可変ポイントと設計可変ポイントとの関連付けが終了していない場合（ステップＳ６０２のｎｏ）、要求仕様可変ポイント・設計可変ポイント関連管理部９は、要求仕様可変部・シナリオ関連管理部３を利用して、要求仕様可変部・シナリオ関連データベース４から、ステップＳ６０１で選択した要求仕様可変ポイントを選択し、設計可変部管理部６を利用して、設計可変部データベース７に格納されている設計可変ポイントを選択し、当該要求仕様可変ポイントと当該設計可変ポイントとを関連付ける。要求仕様可変ポイント・設計可変ポイント関連管理部９は、当該関連付けによって、要求仕様可変ポイント・設計可変ポイント関連テーブル５０を改変し、要求仕様可変ポイント・設計可変ポイント関連データベース１０へ登録する。更に、要求仕様可変ポイント・設計可変ポイント関連管理部９は、要求仕様可変ポイント・設計可変ポイント関連テーブル５０を表示部２へ表示する（ステップＳ６０３）。
【０１０３】
以上により、選択された要求仕様可変ポイントに対して、ソフトウェア製品系列の全ての製品の要求仕様可変部に関連付けられたプログラム実行シナリオが実行され、実行結果が実行ログとして保存され、実行ログからソフトウェア設計要素が生成され、設計可変部が生成され、要求仕様可変ポイントと設計可変ポイントとが関連付けられて保存された。
【０１０４】
本実施の形態により、要求仕様可変ポイントと設計可変ポイントとが関連付けられていないソフトウェア製品系列資産から、要求仕様可変ポイントと設計可変ポイントとの関連を抽出することが可能となり、当該ソフトウェア製品系列を利用して、要求仕様可変部に新たなバリエーションを設定して新製品のソフトウェアを設計する際、要求仕様可変ポイントに対する設計可変ポイントを漏れなく特定することによって、ソフトウェア設計上の不具合混入を防止し、ソフトウェア開発作業の手戻りによる作業工数を削減することができ、極めて有用である。
【産業上の利用可能性】
【０１０５】
本発明は、ソフトウェア製品系列資産から要求仕様可変ポイントと設計可変ポイントとの関連を抽出することができるため、ソフトウェア開発支援装置として適用が可能である。
【符号の説明】
【０１０６】
１    ソフトウェア開発環境
２    表示部
３    要求仕様可変部・シナリオ関連管理部
４    要求仕様可変部・シナリオ関連データベース
６    設計可変部管理部
７    設計可変部データベース
９    要求仕様可変ポイント・設計可変ポイント関連管理部
１０    要求仕様可変ポイント・設計可変ポイント関連データベース
１１    シナリオ実行部
１２    プログラム実行ログ保存部
１３    ソフトウェア設計要素抽出部
１４    ソフトウェア設計要素保存部
１５    設計可変部抽出部
１６    入力端末
２０    要求仕様可変部テーブル
３０    要求仕様可変部・シナリオ関連テーブル
４０    設計可変部テーブル
５０    要求仕様可変ポイント・設計可変ポイント関連テーブル
６０    ソフトウェア設計要素（Ｃ＋＋クラスヘッダ部）
７０    ソフトウェア設計要素（Ｃ＋＋クラス実装部）
８０    ソフトウェア設計要素（Ｃ＋＋定数変数）
９０    ソフトウェア設計要素（Ｃ＋＋列挙型・列挙子）
１００    プログラム実行シナリオ
１１０    実行ログ
【図１】
2012198739.tif 000003
【図２】
2012198739.tif 000004
【図３】
2012198739.tif 000005
【図４】
2012198739.tif 000006
【図５】
2012198739.tif 000007
【図６】
2012198739.tif 000008
【図７】
2012198739.tif 000009
【図８】
2012198739.tif 000010
【図９】
2012198739.tif 000011
【図１０】
2012198739.tif 000012
【図１１】
2012198739.tif 000013
【図１２】
2012198739.tif 000014
【図１３】
2012198739.tif 000015
【図１４】
2012198739.tif 000016
【図１５】
2012198739.tif 000017
【図１６】
2012198739.tif 000018
【図１７】
2012198739.tif 000019
【図１８】
2012198739.tif 000020