(57)【特許請求の範囲】
【請求項１】
再利用可能なソフトウェアの部品であるドメインを開発するドメインエンジニアリングと、前記ドメインを用いることによって製品であるソフトウェアを開発するアプリケーションエンジニアリングとを含むプロダクトライン型のソフトウェア開発を支援するソフトウェア開発支援装置であって、
ドメイン分析によって作成されたフィーチャ図に関連するフィーチャ情報、該フィーチャ図をもとに設計されたアーキテクチャに関連するアーキテクチャ情報、および前記フィーチャ図に含まれるフィーチャと前記アーキテクチャに含まれるコンポーネントとを関連付けるフィーチャ／コンポーネント関連付け情報を有し、プロダクトラインに対応付けられたプロダクトライン用フィーチャ図／アーキテクチャ情報、ならびに製品要求分析に基づいて前記フィーチャ図から作成された製品用フィーチャ図に関連する製品用フィーチャ情報を記憶する記憶部と、
前記フィーチャ情報を前記記憶部から読み出して参照し、前記フィーチャ図から前記製品用フィーチャ図を作成する際に前記フィーチャ図から削除された削除フィーチャの親フィーチャとの関連性を検証することにより、前記製品用フィーチャ図が正常であるか否かを判定する判定部と、
前記プロダクトライン用フィーチャ図／アーキテクチャ情報および前記判定部によって正常と判定された前記製品用フィーチャ情報を前記記憶部から読み出して参照し、前記アーキテクチャから製品要求に含まれないコンポーネントの削除を行うことによって製品用アーキテクチャを生成する製品用アーキテクチャ生成部と、
を備えたことを特徴とするソフトウェア開発支援装置。
【請求項２】
前記判定部は、
前記削除フィーチャの前記親フィーチャとの関連が必須でなく、
かつ前記製品用フィーチャ図に存在するフィーチャであって前記親フィーチャとの関連が代替であるフィーチャが所定の制約条件を満たし、
かつ前記製品用フィーチャ図に存在するフィーチャに対して依存関係にあるフィーチャが前記削除フィーチャではなく、
かつ前記製品用フィーチャ図が「前記親フィーチャが削除され、かつその子フィーチャが未削除」という条件を満足しない場合、
前記製品用フィーチャ図が正常であると判定することを特徴とする請求項１に記載のソフトウェア開発支援装置。
【請求項３】
前記製品用アーキテクチャ生成部は、
前記製品用フィーチャ図を作成する際に前記フィーチャ図から削除された全ての前記削除フィーチャに対して以下の処理を行うことを特徴とする請求項１または２に記載のソフトウェア開発支援装置：
前記削除フィーチャに関連付けられたコンポーネントを抽出し、
抽出した前記コンポーネントに関連付けられたフィーチャを抽出し、
抽出した前記フィーチャが前記削除フィーチャである場合に前記コンポーネントを削除する。
【請求項４】
前記アーキテクチャはＵＭＬのコンポーネント図であり、
前記コンポーネントはＵＭＬのモデル図を含むことを特徴とする請求項１〜３のいずれか一項に記載のソフトウェア開発支援装置。
【請求項５】
再利用可能なソフトウェアの部品であるドメインを開発するドメインエンジニアリングと、前記ドメインを用いることによって製品であるソフトウェアを開発するアプリケーションエンジニアリングとを含むプロダクトライン型のソフトウェア開発を支援するソフトウェア開発支援装置が行うソフトウェア開発支援方法であって、
ドメイン分析によって作成されたフィーチャ図に関連するフィーチャ情報、該フィーチャ図をもとに設計されたアーキテクチャに関連するアーキテクチャ情報、および前記フィーチャ図に含まれるフィーチャと前記アーキテクチャに含まれるコンポーネントとを関連付けるフィーチャ／コンポーネント関連付け情報を有し、プロダクトラインに対応付けられたプロダクトライン用フィーチャ図／アーキテクチャ情報、ならびに製品要求分析に基づいて前記フィーチャ図から作成された製品用フィーチャ図に関連する製品用フィーチャ情報を記憶する記憶部から前記フィーチャ情報を読み出して参照し、前記フィーチャ図から前記製品用フィーチャ図を作成する際に前記フィーチャ図から削除された削除フィーチャの親フィーチャとの関連性を検証することにより、前記製品用フィーチャ図が正常であるか否かを判定する判定ステップと、
前記プロダクトライン用フィーチャ図／アーキテクチャ情報および前記判定ステップで正常と判定された前記製品用フィーチャ情報を前記記憶部から読み出して参照し、前記アーキテクチャから製品要求に含まれないコンポーネントの削除を行うことによって製品用アーキテクチャを生成する製品用アーキテクチャ生成ステップと、
を有することを特徴とするソフトウェア開発支援方法。
【請求項６】
前記判定ステップは、
前記削除フィーチャの前記親フィーチャとの関連が必須でなく、
かつ前記製品用フィーチャ図に存在するフィーチャであって前記親フィーチャとの関連が代替であるフィーチャが所定の制約条件を満たし、
かつ前記製品用フィーチャ図に存在するフィーチャに対して依存関係にあるフィーチャが前記削除フィーチャではなく、
かつ前記製品用フィーチャ図が「前記親フィーチャが削除され、かつその子フィーチャが未削除」という条件を満足しない場合、
前記製品用フィーチャ図が正常であると判定することを特徴とする請求項５に記載のソフトウェア開発支援方法。
【請求項７】
前記製品用アーキテクチャ生成ステップは、
前記製品用フィーチャ図を作成する際に前記フィーチャ図から削除された全ての前記削除フィーチャに対して以下の処理を行うことを特徴とする請求項５または６に記載のソフトウェア開発支援方法：
前記削除フィーチャに関連付けられたコンポーネントを抽出し、
抽出した前記コンポーネントに関連付けられたフィーチャを抽出し、
抽出した前記フィーチャが前記削除フィーチャである場合に前記コンポーネントを削除する。
【請求項８】
再利用可能なソフトウェアの部品であるドメインを開発するドメインエンジニアリングと、前記ドメインを用いることによって製品であるソフトウェアを開発するアプリケーションエンジニアリングとを含むプロダクトライン型のソフトウェア開発を支援するソフトウェア開発支援装置に、
ドメイン分析によって作成されたフィーチャ図に関連するフィーチャ情報、該フィーチャ図をもとに設計されたアーキテクチャに関連するアーキテクチャ情報、および前記フィーチャ図に含まれるフィーチャと前記アーキテクチャに含まれるコンポーネントとを関連付けるフィーチャ／コンポーネント関連付け情報を有し、プロダクトラインに対応付けられたプロダクトライン用フィーチャ図／アーキテクチャ情報、ならびに製品要求分析に基づいて前記フィーチャ図から作成された製品用フィーチャ図に関連する製品用フィーチャ情報を記憶する記憶部から前記フィーチャ情報を読み出して参照し、前記フィーチャ図から前記製品用フィーチャ図を作成する際に前記フィーチャ図から削除された削除フィーチャの親フィーチャとの関連性を検証することにより、前記製品用フィーチャ図が正常であるか否かを判定する判定ステップ、
前記プロダクトライン用フィーチャ図／アーキテクチャ情報および前記判定ステップで正常と判定された前記製品用フィーチャ情報を前記記憶部から読み出して参照し、前記アーキテクチャから製品要求に含まれないコンポーネントの削除を行うことによって製品用アーキテクチャを生成する製品用アーキテクチャ生成ステップ、
を実行させることを特徴とするソフトウェア開発支援プログラム。
【請求項９】
前記判定ステップは、
前記削除フィーチャの前記親フィーチャとの関連が必須でなく、
かつ前記製品用フィーチャ図に存在するフィーチャであって前記親フィーチャとの関連が代替であるフィーチャが所定の制約条件を満たし、
かつ前記製品用フィーチャ図に存在するフィーチャに対して依存関係にあるフィーチャが前記削除フィーチャではなく、
かつ前記製品用フィーチャ図が「前記親フィーチャが削除され、かつその子フィーチャが未削除」という条件を満足しない場合、
前記製品用フィーチャ図が正常であると判定することを特徴とする請求項８に記載のソフトウェア開発支援プログラム。
【請求項１０】
前記製品用アーキテクチャ生成ステップは、
前記製品用フィーチャ図を作成する際に前記フィーチャ図から削除された全ての前記削除フィーチャに対して以下の処理を行うことを特徴とする請求項８または９に記載のソフトウェア開発支援プログラム：
前記削除フィーチャに関連付けられたコンポーネントを抽出し、
抽出した前記コンポーネントに関連付けられたフィーチャを抽出し、
抽出した前記フィーチャが前記削除フィーチャである場合に前記コンポーネントを削除する。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロダクトライン型のソフトウェア開発を支援するソフトウェア開発支援装置、ソフトウェア開発支援方法およびソフトウェア開発支援プログラムに関する。
【背景技術】
【０００２】
従来、再利用可能なソフトウェアの部品であるドメインを開発するドメインエンジニアリングと、そのドメインを用いることによって製品であるソフトウェアを開発するアプリケーションエンジニアリングとを含むプロダクトライン型のソフトウェア開発に関して様々な技術が知られている。
【０００３】
例えば、プロダクトライン型のソフトウェア開発に関する情報として、プロダクトライン識別情報とプロダクト識別情報とを関連付けたプロダクト情報、フィーチャ識別情報とプロダクトライン識別情報とを関連付けたコアアセット情報、プロダクト識別情報とフィーチャ識別情報とを関連付けたフィーチャ／プロダクト関連付け情報、およびコアアセット識別情報とフィーチャ識別情報を関連付けたフィーチャ／コアアセット関連付け情報を記憶して管理する技術が開示されている（例えば、特許文献１を参照）。この技術によれば、ユーザがプロダクトライン型のソフトウェア開発に関する情報を容易に取得して利用することができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−５３９５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記特許文献１に記載の技術は、あくまでもドメインエンジニアリングで作成される情報を管理するための技術に過ぎないため、アプリケーションエンジニアリングにおいてソフトウェア開発を支援する技術については、何ら特別な考慮がなされていなかった。したがって、上記特許文献１に記載の技術では、プロダクトライン型のソフトウェア開発におけるアプリケーションエンジニアリングを容易にかつ効率的に行うことができるとは限らなかった。
【０００６】
本発明は、上記に鑑みてなされたものであって、プロダクトライン型のソフトウェア開発におけるアプリケーションエンジニアリングを容易にかつ効率的に行うことを可能にするソフトウェア開発支援装置、ソフトウェア開発支援方法およびソフトウェア開発支援プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、本発明に係るソフトウェア開発支援装置は、再利用可能なソフトウェアの部品であるドメインを開発するドメインエンジニアリングと、前記ドメインを用いることによって製品であるソフトウェアを開発するアプリケーションエンジニアリングとを含むプロダクトライン型のソフトウェア開発を支援するソフトウェア開発支援装置であって、ドメイン分析によって作成されたフィーチャ図に関連するフィーチャ情報、該フィーチャ図をもとに設計されたアーキテクチャに関連するアーキテクチャ情報、および前記フィーチャ図に含まれるフィーチャと前記アーキテクチャに含まれるコンポーネントとを関連付けるフィーチャ／コンポーネント関連付け情報を含み、プロダクトラインに対応付けられたプロダクトライン用フィーチャ図／アーキテクチャ情報と、製品要求分析に基づいて前記フィーチャ図から作成された製品用フィーチャ図に関連する製品用フィーチャ情報とを記憶する記憶部と、前記プロダクトライン用フィーチャ図／アーキテクチャ情報および前記製品用フィーチャ情報を前記記憶部から読み出して参照し、前記アーキテクチャから製品要求に含まれないコンポーネントの削除を行うことによって製品用アーキテクチャを生成する製品用アーキテクチャ生成部と、を備えたことを特徴とする。
【０００８】
また、本発明に係るソフトウェア開発支援装置は、上記発明において、前記アーキテクチャはＵＭＬのコンポーネント図であり、前記コンポーネントはＵＭＬのモデル図を含むことを特徴とする。
【０００９】
また、本発明に係るソフトウェア開発支援装置は、上記発明において、前記フィーチャ情報を参照して前記フィーチャ図から前記製品用フィーチャ図を作成する際に削除されたフィーチャの親フィーチャとの関連性を検証することにより、前記製品用フィーチャ図が正常であるか否かを判定する判定部をさらに備えたことを特徴とする。
【００１０】
また、本発明に係るソフトウェア開発支援方法は、再利用可能なソフトウェアの部品であるドメインを開発するドメインエンジニアリングと、前記ドメインを用いることによって製品であるソフトウェアを開発するアプリケーションエンジニアリングとを含むプロダクトライン型のソフトウェア開発を支援するソフトウェア開発支援装置が行うソフトウェア開発支援方法であって、ドメイン分析によって作成されたフィーチャ図に関連するフィーチャ情報、該フィーチャ図をもとに設計されたアーキテクチャに関連するアーキテクチャ情報、および前記フィーチャ図に含まれるフィーチャと前記アーキテクチャに含まれるコンポーネントとを関連付けるフィーチャ／コンポーネント関連付け情報を含み、プロダクトラインに対応付けられたプロダクトライン用フィーチャ図／アーキテクチャ情報と、製品要求分析に基づいて前記フィーチャ図から作成された製品用フィーチャ図に関連する製品用フィーチャ情報とを記憶部から読み出して参照し、前記アーキテクチャから製品要求に含まれないコンポーネントの削除を行うことによって製品用アーキテクチャを生成する製品用アーキテクチャ生成ステップ、を有することを特徴とする。
【００１１】
また、本発明に係るソフトウェア開発支援方法は、上記発明において、前記製品用アーキテクチャ生成ステップの前に、前記フィーチャ情報を参照して前記フィーチャ図から前記製品用フィーチャ図を作成する際に削除されたフィーチャの親フィーチャとの関連性を検証することにより、前記製品用フィーチャ図が正常であるか否かを判定する判定ステップ、を有することを特徴とする。
【００１２】
また、本発明に係るソフトウェア開発支援プログラムは、再利用可能なソフトウェアの部品であるドメインを開発するドメインエンジニアリングと、前記ドメインを用いることによって製品であるソフトウェアを開発するアプリケーションエンジニアリングとを含むプロダクトライン型のソフトウェア開発を支援するソフトウェア開発支援装置に、ドメイン分析によって作成されたフィーチャ図に関連するフィーチャ情報、該フィーチャ図をもとに設計されたアーキテクチャに関連するアーキテクチャ情報、および前記フィーチャ図に含まれるフィーチャと前記アーキテクチャに含まれるコンポーネントとを関連付けるフィーチャ／コンポーネント関連付け情報を含み、プロダクトラインに対応付けられたプロダクトライン用フィーチャ図／アーキテクチャ情報と、製品要求分析に基づいて前記フィーチャ図から作成された製品用フィーチャ図に関連する製品用フィーチャ情報とを記憶部から読み出して参照し、前記アーキテクチャから製品要求に含まれないコンポーネントの削除を行うことによって製品用アーキテクチャを生成する製品用アーキテクチャ生成ステップ、を実行させることを特徴とする。
【００１３】
また、本発明に係るソフトウェア開発支援プログラムは、上記発明において、前記製品用アーキテクチャ生成ステップの前に、前記フィーチャ情報を参照して前記フィーチャ図から前記製品用フィーチャ図を作成する際に削除されたフィーチャの親フィーチャとの関連性を検証することにより、前記製品用フィーチャ図が正常であるか否かを判定する判定ステップ、を実行させることを特徴とする。
【発明の効果】
【００１４】
本発明によれば、プロダクトライン用フィーチャ図／アーキテクチャ情報および製品要求分析によってフィーチャ図から作成された製品用フィーチャに関連する製品用フィーチャ情報を参照し、プロダクトライン用のアーキテクチャから製品要求に含まれないコンポーネントの削除を行うことによって製品用アーキテクチャを自動的に生成するため、プロダクトライン型のソフトウェア開発におけるアプリケーションエンジニアリングを容易にかつ効率的に行うことが可能となる。
【図面の簡単な説明】
【００１５】
【図１】図１は、プロダクトライン型のソフトウェア開発プロセスの概要を説明する図である。
【図２】図２は、ドメイン分析によって作成されるフィーチャ図の構成例を示す図である。
【図３】図３は、図２に示すフィーチャ図に対応するフィーチャ情報の要部の構成を示す図である。
【図４】図４は、アーキテクチャ設計によって作成されるコンポーネント図の構成例を示す図である。
【図５】図５は、図４に示すコンポーネント図に対応するコンポーネント情報の要部の構成を示す図である。
【図６】図６は、フィーチャ／コンポーネント関連付け情報の構成を示す図である。
【図７】図７は、プロダクトライン用フィーチャ図／アーキテクチャ情報の要部の構成を示す図である。
【図８】図８は、製品要求分析によって作成される製品用フィーチャ図の構成例を示す図である。
【図９】図９は、製品用アーキテクチャ抽出処理によって作成された製品用コンポーネント図の構成例を示す図である。
【図１０】図１０は、本発明の一実施の形態に係るソフトウェア開発支援装置の機能構成を示すブロック図である。
【図１１】図１１は、本発明の一実施の形態に係るソフトウェア開発支援装置の判定部が行う処理の概要を示すフローチャートである。
【図１２】図１２は、本発明の一実施の形態に係るソフトウェア開発支援装置の判定部が異常と判定する製品用フィーチャ図の構成（第１例）を示す図である。
【図１３】図１３は、本発明の一実施の形態に係るソフトウェア開発支援装置の判定部が異常と判定する製品用フィーチャ図の構成（第２例）を示す図である。
【図１４】図１４は、本発明の一実施の形態に係るソフトウェア開発支援装置の判定部が異常と判定する製品用フィーチャ図の構成（第３例）を示す図である。
【図１５】図１５は、本発明の一実施の形態に係るソフトウェア開発支援装置の判定部が異常と判定する製品用フィーチャ図の構成（第４例）を示す図である。
【図１６】図１６は、本発明の一実施の形態に係るソフトウェア開発支援装置の製品用アーキテクチャ生成部が行う処理の概要を示すフローチャートである。
【発明を実施するための形態】
【００１６】
以下、添付図面を参照して、本発明を実施するための形態（以下、「実施の形態」という）を説明する。
【００１７】
図１は、プロダクトライン型のソフトウェア開発の概要を説明する図である。図１に示すように、プロダクトライン型のソフトウェア開発は、ドメインエンジニアリング（ステップＳ１〜Ｓ４）とアプリケーションエンジニアリング（ステップＳ５〜Ｓ９）の２つのプロセスに大別される。
【００１８】
まず、ドメインエンジニアリングについて説明する。ドメインエンジニアリングは、プロダクトライン型のソフトウェア開発の中で再利用可能なソフトウェアの部品であるドメインを開発するプロセスである。
【００１９】
ドメインエンジニアリングでは、まずユーザが、製品要求仕様を参照しながらドメイン分析を行うことにより、コンピュータを用いてプロダクトライン用のフィーチャ図を作成する（ステップＳ１）。
【００２０】
図２は、ステップＳ１で作成するフィーチャ図の構成例を示す図である。図２に示すフィーチャ図Ｆｅ１には、７つのフィーチャ（フィーチャ名：Feature1〜Feature7）を有する。以下、フィーチャをフィーチャ名で呼ぶこととする。図２で黒丸が付されたFeature2は、親フィーチャ（Feature1）との関連が「必須」である。また、図２で白丸が付されたFeature3, Feature4, Feature5は、親フィーチャとの関連が「選択」である。ここで、Feature3, Feature4の親フィーチャはFeature1であり、Feature5の親フィーチャはFeature2である。また、図２で二重丸が付されたFeature6, Feature7は、親フィーチャ（Feature3）との関連が「代替」である。ここで、Feature6およびFeature7の制約条件は、「１以上２以下」である（図２では「１..２」と表記）。また、図２の破線矢印は、Feature6が依存フィーチャであることを示している。ここで、依存フィーチャとは、その親フィーチャを実現するために必要なフィーチャのことである。すなわち、フィーチャ図Ｆｅ１の場合、Feature4はFeature6を必要としている。
【００２１】
図３は、フィーチャ図Ｆｅ１に対応する情報として生成されるフィーチャ情報の要部の構成を示す図である。同図に示すフィーチャ情報Ｆｅ１１は、フィーチャ図Ｆｅ１の作成に伴って生成される情報であり、フィーチャ図Ｆｅ１の情報をテーブル化したものである。フィーチャ情報Ｆｅ１１は、フィーチャＩＤ、フィーチャ名、親フィーチャのフィーチャＩＤ、親フィーチャとの関連、依存フィーチャのフィーチャＩＤを有する。ここで、フィーチャＩＤは、フィーチャ図において一意に定義される。なお、フィーチャ情報としては、他にもフィーチャの内容を説明するフィーチャ説明などの項目が含まれる（図示せず）。また、フィーチャ情報Ｆｅ１１にはフィーチャ図Ｆｅ１も含まれるものとする。
【００２２】
ステップＳ１に続いて、ユーザは、ステップＳ１で作成したフィーチャ図を参照しながら、コンピュータを用いてプロダクトライン用のアーキテクチャを作成する（ステップＳ２）。本実施の形態では、アーキテクチャとしてコンポーネント図を採用する。ここで、コンポーネント図に含まれるソフトウェア部品としてのコンポーネントは、ＵＭＬ（Unified Modeling Language）モデル図（ステートマシン図、シーケンス図、クラス図、コンポーネント図等）を含んでいる。コンポーネント図を作成する際には、フィーチャ図との整合を図りながら行なうため、フィーチャ図の修正もあわせて行う場合がある。なお、フィーチャ図とコンポーネント図を同一のエディタによって作成すれば、一段と効率よくドメインエンジニアリングを実行することができるのでより好ましい。
【００２３】
図４は、ステップＳ２で作成されるコンポーネント図の構成例を示す図である。同図に示すコンポーネント図Ｃｏ１は、７つのコンポーネント（コンポーネント名：Component1〜Component7）を有する。以下、コンポーネントをコンポーネント名で呼ぶ。Component1は、Component2, Component3, Component4の親コンポーネントである。また、Component2は、Component5の親コンポーネントである。また、Component3は、Component6, Component7の親コンポーネントである。
【００２４】
図５は、コンポーネント図Ｃｏ１に対応するコンポーネント情報の要部の構成を示す図である。同図に示すコンポーネント情報Ｃｏ１１は、コンポーネント図Ｃｏ１の作成に伴って生成される情報であり、コンポーネント図Ｃｏ１の情報をテーブル化したものである。コンポーネント情報Ｃｏ１１は、コンポーネントＩＤ、コンポーネント名、親コンポーネントのコンポーネントＩＤを有する。ここで、コンポーネントＩＤは、アーキテクチャにおいて一意に定義される。なお、コンポーネント情報としては、他にもコンポーネントに含まれるＵＭＬモデル図の情報なども含まれる（図示せず）。また、コンポーネント情報Ｃｏ１１にはコンポーネント図Ｃｏ１も含まれるものとする。
【００２５】
フィーチャ図およびコンポーネント図の作成が完了した後、ユーザは、コンピュータを用いてフィーチャ図に含まれるフィーチャとコンポーネント図に含まれるコンポーネントとを関連付けるフィーチャ／コンポーネント関連付け情報を作成する（ステップＳ３）。
【００２６】
図６は、フィーチャ／コンポーネント関連付け情報の構成を示す図である。同図に示すフィーチャ／コンポーネント関連付け情報ＦｅＣｏは、フィーチャＩＤおよびコンポーネントＩＤを有する。互いに関連付けられるフィーチャＩＤとコンポーネントＩＤは、一般にＮ1：Ｍ1（Ｎ1，Ｍ1は０以上の整数）の関係にある。例えば、フィーチャ／コンポーネント関連付け情報ＦｅＣｏにおいて、フィーチャＩＤ＝Ｆ１に関連付けられたコンポーネントＩＤはない（Ｎ1：Ｍ1＝１：０）。また、フィーチャ／コンポーネント関連付け情報ＦｅＣｏにおいて、コンポーネントＩＤ＝Ｃ４に関連付けられたフィーチャＩＤはない（Ｎ1：Ｍ1＝０：１）。また、フィーチャ／コンポーネント関連付け情報ＦｅＣｏにおいて、フィーチャＩＤ＝Ｆ６には、二つのコンポーネントＩＤ＝Ｃ５、Ｃ６が関連付けられている（Ｎ1：Ｍ1＝１：２）。
【００２７】
この後、ユーザは、フィーチャ情報、コンポーネント情報、フィーチャ／コンポーネント関連付け情報からなる情報（以下、「プロダクトライン用フィーチャ図／アーキテクチャ情報ＦＡ」という）をコンピュータの記憶部に登録する（ステップＳ４）。
【００２８】
図７は、プロダクトライン用フィーチャ図／アーキテクチャ情報の要部の構成を示す図である。プロダクトライン用フィーチャ図／アーキテクチャ情報ＦＡは、プロダクトライン用フィーチャ図／アーキテクチャＩＤ、プロダクトライン名、プロダクトライン版数、関連するプロダクトライン用フィーチャ図／アーキテクチャＩＤ、キーワードを有する。ここで、プロダクトライン用フィーチャ図／アーキテクチャＩＤは、フィーチャ図とアーキテクチャ（コンポーネント図）の組み合わせに対して一意に定義される。また、キーワードは、プロダクトライン用フィーチャ図／アーキテクチャ情報ＦＡに含まれるフィーチャＩＤに対応するフィーチャ名、プロダクトライン用フィーチャ図／アーキテクチャ情報内に含まれるコンポーネントＩＤに対応するコンポーネント名、ユーザが登録時に入力した情報などから構成される。
【００２９】
プロダクトライン用フィーチャ図／アーキテクチャＩＤとこのＩＤに関連するプロダクトライン用フィーチャ図／アーキテクチャＩＤとの比は、一般にＮ2：Ｍ2（Ｎ2，Ｍ2は０以上の整数）の関係にある。例えば、プロダクトライン用フィーチャ図／アーキテクチャ情報ＦＡにおいて、プロダクトライン用フィーチャ図／アーキテクチャＩＤ＝ＦＣ１に関連するプロダクトライン用フィーチャ図／アーキテクチャＩＤはない（Ｎ2：Ｍ2＝１：０）。また、プロダクトライン用フィーチャ図／アーキテクチャ情報ＦＡにおいて、プロダクトライン用フィーチャ図／アーキテクチャＩＤ＝ＦＣ２には、プロダクトライン用フィーチャ図／アーキテクチャＩＤ＝ＦＣ１，ＦＣ４が関連している（Ｎ2：Ｍ2＝１：２）。このうち、ＦＣ２とＦＣ４は相互に関連している。
【００３０】
プロダクトライン用フィーチャ図／アーキテクチャＩＤとキーワードはＮ3：Ｍ3（Ｎ3，Ｍ3は０以上の整数）の関係にある。例えば、プロダクトライン用フィーチャ図／アーキテクチャ情報ＦＡにおいて、プロダクトライン用フィーチャ図／アーキテクチャＩＤ＝ＦＣ３には、キーワード２およびキーワード３が対応している（Ｎ3：Ｍ3＝１：２）。
【００３１】
次に、以上説明したドメインエンジニアリングに続いて行われるアプリケーションエンジニアリングについて説明する。アプリケーションエンジニアリングは、ドメインから製品であるソフトウェアを開発するプロセスである。
【００３２】
アプリケーションエンジニアリングでは、まずユーザが、コンピュータを用いることにより、記憶部が記憶するプロダクトライン用フィーチャ図／アーキテクチャ情報ＦＡを取得する（ステップＳ５）。ここで、ユーザは、プロダクトライン用フィーチャ図／アーキテクチャ情報ＦＡのプロダクトライン名やキーワードなどを用いて検索を行うことにより、プロダクトライン用フィーチャ図／アーキテクチャ情報ＦＡを容易に取得することができる。この際、ユーザは、関連するプロダクトライン用フィーチャ図／アーキテクチャＩＤも一緒に取得することができる。
【００３３】
続いて、ユーザは、コンピュータを用いて製品要求分析を行う（ステップＳ６）。具体的には、ユーザは、取得したプロダクトライン用フィーチャ図／アーキテクチャ情報ＦＡに含まれるフィーチャ図から製品要求に含まれないフィーチャの削除（刈り取り）を行うことによって製品用フィーチャ図を作成し、作成した製品用フィーチャ図を含む製品用フィーチャ情報を記憶部に記憶させる。図８は、製品用フィーチャ図の構成例を示す図である。同図に示す製品用フィーチャ図Ｆｅ２では、図２に示すフィーチャ図Ｆｅ１からFeature5およびFeature7が削除されている（破線で表示）。
【００３４】
その後、ユーザは、コンピュータに製品アーキテクチャ抽出を実行させる（ステップＳ７）。製品アーキテクチャ抽出処理において、まずコンピュータは、ステップＳ６で作成された製品用フィーチャ図が正常であるか否かを判定する。この判定の詳細な内容については後述する。なお、図８に示す製品用フィーチャ図Ｆｅ２は、正常な製品用フィーチャ図の例を示している。
【００３５】
コンピュータが判定を行った結果、製品用フィーチャ図が正常である場合、コンピュータは、記憶部に記憶されたプロダクトライン用フィーチャ図／アーキテクチャ情報ＦＡに含まれるフィーチャ／コンポーネント関連付け情報および製品用フィーチャ情報を参照し、製品要求に含まれないコンポーネントをコンポーネント図から削除して製品用アーキテクチャを自動的に生成する。
【００３６】
図９は、ステップＳ７で作成された製品用アーキテクチャである製品用コンポーネント図の構成例を示す図である。同図に示す製品用コンポーネント図Ｃｏ２では、図４に示すコンポーネント図Ｃｏ１からComponent7が削除されている（破線で表示）。
【００３７】
その後、ユーザは、コンピュータに、公知の形式表現手法を用いることによって製品用アーキテクチャが正しいか否かを事前検証させる（ステップＳ８）。
【００３８】
最後に、ユーザは、コンピュータに、事前検証によって正しいと判定された製品用アーキテクチャを実現する製品コードを生成させる（ステップＳ９）。このステップＳ９において、コンピュータは、例えば製品用コンポーネント図のコンポーネントに含まれるＵＭＬモデル図をＣコード等の所定のコードに変換することによって製品コードを生成する。これにより、アプリケーションエンジニアリングが終了する。
【００３９】
以上説明したプロダクトライン型のソフトウェア開発は、一つのコンピュータを用いて実行してもよいし、ステップごとに異なるコンピュータを用いて実行してもよい。また、各種情報を記憶する記憶部を複数個設けておき、インターネット等の通信ネットワークを介してデータの送受信を行いながらソフトウェア開発を実行するようにしてもよい。
【００４０】
上述したプロダクトライン型のソフトウェア開発のうち、少なくともステップＳ７の製品アーキテクチャ抽出処理は、本実施の形態に係るソフトウェア開発支援装置が実行する。以下、本実施の形態に係るソフトウェア開発支援装置の機能構成および製品用アーキテクチャ抽出処理の詳細について説明する。
【００４１】
図１０は、本実施の形態に係るソフトウェア開発支援装置の機能構成を示すブロック図である。同図に示すソフトウェア開発支援装置１は、キーボード、マウス、タッチパネル等のインタフェースを用いて実現される入力部２と、液晶または有機ＥＬ等からなる表示パネルや音声出力用のスピーカ等を有し、各種情報を出力する出力部３と、プロダクトライン用フィーチャ図／アーキテクチャ情報ＦＡや製品用フィーチャ情報ＰＦを含む各種情報を記憶する記憶部４と、ソフトウェア開発支援装置１の動作を制御する制御部５と、を備える。
【００４２】
記憶部４は、本実施の形態１に係るソフトウェア開発支援プログラムや所定のＯＳを起動するプログラム等が予め記憶されたＲＯＭ、および各処理の演算パラメータやデータ等を記憶するＲＡＭ等を用いて実現される。
【００４３】
制御部５は、判定部５１と、製品用アーキテクチャ生成部５２とを有する。判定部５１は、プロダクトライン用フィーチャ図／アーキテクチャ情報ＦＡおよび製品用フィーチャ情報ＰＦを参照し、記憶部４から取得したプロダクトライン用フィーチャ図／アーキテクチャ情報ＦＡに含まれるフィーチャ図をもとに作成された製品用フィーチャ図において、もとのフィーチャ図から削除されたフィーチャの親フィーチャとの関連性を検証することにより、製品用フィーチャ図が正常であるか否かを判定する。製品用アーキテクチャ生成部５２は、プロダクトライン用フィーチャ図／アーキテクチャ情報ＦＡおよび製品用フィーチャ情報ＰＦを参照し、プロダクトライン用アーキテクチャから製品要求に含まれないコンポーネントの削除を行うことにより、製品用アーキテクチャを生成する。
【００４４】
制御部５は、ＣＰＵ等を用いて実現され、制御対象であるソフトウェア開発支援装置１の各構成部位とバスラインを介して接続されている。制御部５は、記憶部４が記憶、格納する情報および本実施の形態に係るソフトウェア開発支援プログラムを含む各種プログラムを記憶部４から読み出すことにより、本実施の形態１に係るソフトウェア開発支援方法に関連した演算処理を実行する。
【００４５】
なお、本実施の形態に係るソフトウェア開発支援プログラムは、ハードディスク、フラッシュメモリ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、フレキシブルディスク等のコンピュータ読み取り可能な記録媒体に記録して広く流通させることも可能である。
【００４６】
図１１は、判定部５１が行う処理の概要を示すフローチャートである。図１１において、判定部５１は、プロダクトライン用フィーチャ図／アーキテクチャ情報ＦＡおよび製品用フィーチャ情報ＰＦを参照し、製品用フィーチャ図を作成する際にもとのフィーチャ図から削除されたフィーチャ（以下、「削除フィーチャ」という）に対して、親フィーチャとの関連が「必須」であるか否かを判定する（ステップＳ１１）。判定の結果、削除フィーチャの親フィーチャとの関連が「必須」である場合（ステップＳ１１：Ｙｅｓ）、判定部５１は異常と判定する（ステップＳ１２）。一方、判定の結果、削除フィーチャの親フィーチャとの関連が「必須」でない場合（ステップＳ１１：Ｎｏ）、判定部５１は後述するステップＳ１３へ移行する。図１２は、削除フィーチャの親フィーチャとの関連が「必須」である場合の製品用フィーチャ図の構成例を示す図である。図１２に示す製品用フィーチャ図Ｆｅ３は、図２に示すフィーチャ図Ｆｅ１からFeature2, Feature5を削除したフィーチャ図である。ここで、削除フィーチャFeature2は、親フィーチャであるFeature1との関連が「必須」のフィーチャである。したがって、製品用フィーチャ図Ｆｅ３は異常なフィーチャ図である。
【００４７】
ステップＳ１３において、判定部５１は、プロダクトライン用フィーチャ図／アーキテクチャ情報ＦＡおよび製品用フィーチャ情報ＰＦを参照し、製品用フィーチャ図に存在し、かつ親フィーチャとの関連が「代替」であるフィーチャが所定の制約条件（図２に示す場合には「１以上２以下」）を満たしているか否かを判定する（ステップＳ１３）。判定の結果、所定の制約条件を満たしていない場合（ステップＳ１３：Ｎｏ）、判定部５１はステップＳ１２へ移行する。一方、判定の結果、所定の制約条件を満たしている場合（ステップＳ１３：Ｙｅｓ）、判定部５１は後述するステップＳ１４へ移行する。図１３は、製品用フィーチャ図に存在し、かつ親フィーチャとの関連が「代替」であるフィーチャが所定の制約条件を満たしていない場合の製品用フィーチャ図の構成例を示す図である。図１３に示す製品用フィーチャ図Ｆｅ４は、図２に示すフィーチャ図Ｆｅ１からFeature4, Feature6, Feature7を削除したフィーチャ図である。ここで、削除フィーチャFeature6, Feature7は、親フィーチャであるFeature3との関連が「代替」であって制約条件が「１以上２以下」である。したがって、製品用フィーチャ図Ｆｅ４は異常なフィーチャ図である。
【００４８】
ステップＳ１４において、判定部５１は、プロダクトライン用フィーチャ図／アーキテクチャ情報ＦＡおよび製品用フィーチャ情報ＰＦを参照し、製品用フィーチャ図に存在するフィーチャに対して依存関係にあるフィーチャが削除フィーチャであるか否かを判定する（ステップＳ１４）。判定の結果、製品用フィーチャ図に存在するフィーチャ図に対して依存関係にあるフィーチャが削除フィーチャである場合（ステップＳ１４：Ｙｅｓ）、判定部５１はステップＳ１２へ移行する。一方、判定の結果、製品用フィーチャ図に存在するフィーチャに対して依存関係にあるフィーチャが削除フィーチャでない場合（ステップＳ１４：Ｎｏ）、判定部５１は後述するステップＳ１５へ移行する。図１４は、製品用フィーチャ図に存在するフィーチャに対して依存関係にあるフィーチャが削除フィーチャである場合の製品用フィーチャ図の構成例を示す図である。図１４に示す製品用フィーチャ図Ｆｅ５は、図２に示すフィーチャ図Ｆｅ１からFeature6を削除したフィーチャ図である。ここで、削除フィーチャFeature6は、削除されていないFeature4に対して依存関係にあるフィーチャである。したがって、製品用フィーチャ図Ｆｅ５は異常なフィーチャ図である。
【００４９】
ステップＳ１５において、判定部５１は、プロダクトライン用フィーチャ図／アーキテクチャ情報ＦＡおよび製品用フィーチャ情報ＰＦを参照し、製品用フィーチャ図に存在するフィーチャに対して、「親フィーチャが削除され、かつその子フィーチャが未削除」という条件を満足するか否かを判定する（ステップＳ１５）。判定の結果、上述した条件を満たす場合（ステップＳ１５：Ｙｅｓ）、判定部５１はステップＳ１２へ移行する。図１５は、「親フィーチャが削除され、かつその子フィーチャが未削除」という条件を満足する製品用フィーチャ図の構成例を示す図である。図１５に示す製品用フィーチャ図Ｆｅ６は、図２に示すフィーチャ図Ｆｅ１からFeature3を削除したフィーチャ図であり、上述した条件を満たしている。したがって、製品用フィーチャ図Ｆｅ６は異常なフィーチャ図である。
【００５０】
ステップＳ１５における判定の結果、上述した条件を満たさない場合（ステップＳ１５：Ｎｏ）、判定部５１は、製品用フィーチャ図が正常であると判定する（ステップＳ１６）。正常な製品用フィーチャ図として、図８に示す製品用フィーチャ図Ｆｅ２を挙げることができる。
【００５１】
図１６は、製品用アーキテクチャ生成部５２で製品アーキテクチャの生成を行う際の処理の概要を示すフローチャートである。製品用アーキテクチャ生成部５２は、プロダクトライン用フィーチャ図／アーキテクチャ情報ＦＡおよび製品用フィーチャ情報ＰＦを参照することにより、全ての削除フィーチャに対して、以下に説明するステップＳ２１〜Ｓ２４の処理を個別に行う。
【００５２】
まず、製品用アーキテクチャ生成部５２は、処理対象の削除フィーチャに関連付けられたコンポーネントを抽出する（ステップＳ２１）。
【００５３】
続いて、製品用アーキテクチャ生成部５２は、ステップＳ２１で抽出したコンポーネントに関連付けられたフィーチャを抽出する（ステップＳ２２）。
【００５４】
その後、製品用アーキテクチャ生成部５２は、ステップＳ２２で抽出した全てのフィーチャが削除フィーチャであるか否かをチェックする（ステップＳ２３）。ステップＳ２２で抽出された全てのフィーチャが削除フィーチャではない場合（ステップＳ２３：Ｎｏ）、製品用アーキテクチャ生成部５２は処理対象の削除フィーチャに対する一連の処理を終了する。一方、ステップＳ２３で抽出された全てのフィーチャが削除フィーチャである場合（ステップＳ２３：Ｙｅｓ）、製品用アーキテクチャ生成部５２は、プロダクトライン用フィーチャ図／アーキテクチャ情報ＦＡに含まれるプロダクトライン用アーキテクチャから、ステップＳ２１で抽出したコンポーネントを削除する（ステップＳ２４）。
【００５５】
製品用アーキテクチャ生成部５２は、上述したステップＳ２１〜Ｓ２４の処理を全ての削除フィーチャに対して実行することにより、製品用コンポーネント図を生成する。
【００５６】
以下、図８に示す製品用フィーチャ図Ｆｅ２を例にとってより具体的な処理を説明する。製品用フィーチャ図Ｆｅ２の場合、削除フィーチャはFeature5およびFeature7である。まず、削除フィーチャがFeature5である場合を説明する。この場合、製品用アーキテクチャ生成部５２は、Feature5に関連付けられたComponent5を抽出する（ステップＳ２１）。その後、製品用アーキテクチャ生成部５２は、ステップＳ２１で抽出したComponent5に関連付けられたフィーチャとして、Feature5およびFeature6を抽出する（ステップＳ２２）。ステップＳ２２で抽出されたフィーチャのうち、Feature6は削除フィーチャではない（ステップＳ２３：Ｎｏ）。したがって、製品用アーキテクチャ生成部５２は、削除フィーチャがFeature5である場合の一連の処理を終了する。
【００５７】
次に、削除フィーチャがFeature7である場合を説明する。この場合、製品用アーキテクチャ生成部５２は、Feature7に関連付けられたComponent7を抽出する（ステップＳ２１）。その後、製品用アーキテクチャ生成部５２は、ステップＳ２１で抽出したComponent7に関連付けられたフィーチャとしてFeature7を抽出する（ステップＳ２２）。ステップＳ２２で抽出されたFeature7は削除フィーチャである（ステップＳ２３：Ｙｅｓ）。そこで、製品用アーキテクチャ生成部５２は、ステップＳ２１で抽出したComponent7を削除（ステップＳ２４）し、削除フィーチャがFeature7である場合の一連の処理を終了する。
【００５８】
製品用フィーチャ図Ｆｅ２の場合、上述した二つの処理によって全ての削除フィーチャに対するループ処理が終了する。なお、製品用アーキテクチャ生成部５２が図１６に示すループ処理を実行する際の削除フィーチャの選択順は任意に設定することができる。例えば、製品用アーキテクチャ生成部５２は、図１６に示すループ処理を実行する際、製品用フィーチャ図を作成する際に削除された順序にしたがって削除フィーチャを選択してもよいし、上位に位置する削除フィーチャから順に選択するようにしてもよい。
【００５９】
以上説明した本発明の一実施の形態によれば、プロダクトライン用フィーチャ図／アーキテクチャ情報および製品要求分析によってフィーチャ図から作成された製品用フィーチャに関連する製品用フィーチャ情報を参照し、プロダクトライン用のアーキテクチャから製品要求に含まれないコンポーネントの削除を行うことによって製品用アーキテクチャを自動的に生成するため、プロダクトライン型のソフトウェア開発におけるアプリケーションエンジニアリングを容易にかつ効率的に行うことが可能となる。
【符号の説明】
【００６０】
１  ソフトウェア開発支援装置
２  入力部
３  出力部
４  記憶部
５  制御部
５１  判定部
５２  製品用アーキテクチャ生成部
Ｃｏ１  コンポーネント図
Ｃｏ１１  コンポーネント情報
Ｃｏ２  製品用コンポーネント図
ＦＡ  プロダクトライン用フィーチャ図／アーキテクチャ情報
Ｆｅ１  フィーチャ図
Ｆｅ１１  フィーチャ情報
Ｆｅ２、Ｆｅ３、Ｆｅ４、Ｆｅ５、Ｆｅ６  製品用フィーチャ図
ＦｅＣｏ  フィーチャ／コンポーネント関連付け情報
ＰＦ  製品用フィーチャ情報
【図１】
0005316485.tif 000002
【図２】
0005316485.tif 000003
【図３】
0005316485.tif 000004
【図４】
0005316485.tif 000005
【図５】
0005316485.tif 000006
【図６】
0005316485.tif 000007
【図７】
0005316485.tif 000008
【図８】
0005316485.tif 000009
【図９】
0005316485.tif 000010
【図１０】
0005316485.tif 000011
【図１１】
0005316485.tif 000012
【図１２】
0005316485.tif 000013
【図１３】
0005316485.tif 000014
【図１４】
0005316485.tif 000015
【図１５】
0005316485.tif 000016
【図１６】
0005316485.tif 000017