(57)【要約】      （修正有）【課題】従来の派生開発からソフトウェアプロダクトライン開発への開発環境の移行を支援するソフトウェアプロダクトライン開発支援装置を提供する。【解決手段】ソフトウェアプロダクトライン開発支援装置は、派生開発のソースコード２１をもとに種々の処理を行って、プロダクトライン開発で用いるコア資産の生成を支援する。プロダクトライン開発支援装置は、ソースコード２１から、可変部分及び可変部分に対応するソフトウェア部品が定義されて再構成される複数機種対応ソースコード２２１を生成し、ソースコード２１から、ソースコード２１の制御項目名が自然言語で記述されて各制御項目名に対応するソースコード２１の内容が記述されるソフトウェア設計書２２２を生成し、機能仕様書２２３、複数機種対応ソースコード２２１及びソフトウェア設計書２２２に基づいて、可変性／フィーチャ定義書２２５を生成する。【選択図】図４
2020077191.tif 000002
【特許請求の範囲】
【請求項１】
派生開発のソースコードを分析して、プロダクトライン開発で使用するコア資産の生成を支援する装置であって、
前記派生開発のソースコードをもとに種々の処理を行う処理部を備え、
前記処理部は、
前記派生開発のソースコードから、可変部分及び前記可変部分に対応するソフトウェア部品が定義されて再構成される複数機種対応ソースコードを生成するソースコード解析／生成部と、
前記派生開発のソースコードから、前記派生開発のソースコードの制御項目名が自然言語で記述されて各前記制御項目名に対応するソースコードの内容が記述されるソフトウェア設計書を生成する仕様書リバース部と、
前記派生開発のソースコードの各機能項目名及び内容が自然言語で記述される機能仕様書、前記複数機種対応ソースコード、及び前記ソフトウェア設計書に基づいて、前記機能仕様書の機能項目名、前記可変部分、前記ソフトウェア部品、及び派生開発の各機種を特徴付ける要素であるフィーチャを対応付ける可変性／フィーチャ定義書を生成する可変性／フィーチャ分析部と、を備える、
プロダクトライン開発支援装置。
【請求項２】
前記ソースコード解析／生成部は、前記派生開発のソースコードの差異をユーザに提示して、ユーザ操作に従って、前記差異を前記可変部分及び前記ソフトウェア部品に設定して、複数機種対応ソースコードを生成する、請求項１に記載のプロダクトライン開発支援装置。
【請求項３】
前記仕様書リバース部は、さらに、前記ソフトウェア設計書の制御項目名と、前記機能仕様書の機能項目名とをユーザに一覧形式で提示して、ユーザ操作に従って、前記ソフトウェア設計書の制御項目名と、前記機能仕様書の機能項目名とを対応付ける、請求項１又は請求項２に記載のプロダクトライン開発支援装置。
【請求項４】
依存関係データベースをさらに備え、
前記可変性／フィーチャ分析部は、さらに、前記機能仕様書に含まれる名詞を抽出して、前記名詞を別の機能仕様書に含まれる名詞と対応付けて、前記依存関係データベースに記録する、請求項１〜３のいずれか１項に記載のプロダクトライン開発支援装置。
【請求項５】
前記可変性／フィーチャ分析部は、さらに、ユーザ操作に従って、機種名を、前記可変性／フィーチャ定義書に追記して、前記依存関係データベースに記録された情報に基づいて、前記機種名と対応付ける前記機能仕様書の機能項目名の候補を、ユーザに提示する、請求項４に記載のプロダクトライン開発支援装置。
【請求項６】
前記仕様書リバース部は、さらに、前記複数機種対応ソースコードから、前記ソフトウェア設計書を生成する、請求項１〜５のいずれか１項に記載のプロダクトライン開発支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、製品系列に再利用可能なソフトウェア資産の開発支援装置に関する。
【背景技術】
【０００２】
従来のソフトウェア開発は、類似機種と共通する部分を流用して、共通しない部分のみを作成する派生開発が主流であった。しかし、近年の、組み込み機器の高機能化に伴うソフトウェアの大規模化、及び顧客ニーズの多様化による派生機種の増加により、ソフトウェア開発の効率化が重要な課題となっている。
【０００３】
ソフトウェア開発の効率化を実現する方法として、プロダクトライン開発(ソフトウェアプロダクトライン開発ともいう。以後、ＳＰＬ開発という)がある。ＳＰＬ開発では、製品系列のロードマップがあらかじめ定義され、各製品間の、可変部分及び当該可変部分に対応するソフトウェア部品が定義される。可変部分及びソフトウェア部品は、区別されて再利用可能な資産（以後、コア資産という）として開発され、各製品に適用される。これにより、製品系列全体のソフトウェア開発は効率化する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−２２６３９８号公報
【特許文献２】特開２０１３−２０６４４３号公報
【特許文献３】特開２００９−８６７９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
派生開発からＳＰＬ開発に開発環境を移行する場合、コア資産を開発するための技術を獲得して、コア資産を開発する必要がある。
【０００６】
コア資産を開発するための技術として、フィーチャ分析技術がある。フィーチャとは、例えば、外部から識別可能な製品間の特性の差異などの、製品系列において、各製品を特徴付ける要素のことをいう。フィーチャを適切に分析することによって、可変部分及びソフトウェア部品を定義して、コア資産を開発する。しかし、高精度なフィーチャ分析は、製品系列全体を俯瞰して各製品間の依存関係を考慮することを要するので容易ではない。
【０００７】
また、コア資産は、ソースコードと、各顧客や開発部門等からのニーズに対応する仕様書やソフトウェア設計書等のドキュメントとを含む。ドキュメントは、顧客や開発部門等のソフトウェア開発に精通していない者に対しても高い可読性を有する必要がある。
【０００８】
さらに、派生開発におけるドキュメントは、その内容がソースコードと乖離していたり、記載が不十分であったりする場合がある。当該ドキュメントは、ＳＰＬ開発に移行する際に、記載を充実化した上でコア資産とする必要がある。
【０００９】
特許文献１は、ＵＭＬ形式のソフトウェア設計書を自動生成する技術を開示している。しかしながら、ＵＭＬ形式のソフトウェア設計書は、ソフトウェア開発に精通していない者にとって可読性が低い。
【００１０】
特許文献２は、仕様書からフィーチャの候補を生成するソフトウェア資産再利用支援装置を開示している。しかしながら、特許文献２の装置は、仕様書の内容がソースコードと乖離していたり、記載が不十分であったりする場合、適切にフィーチャの候補を生成することができない。
【００１１】
特許文献３は、ＳＰＬ開発において、コア資産の変更履歴に基づいてコア資産をグループ化することで、可変部分及びソフトウェア部品の定義を効率化する技術を開示している。しかしながら、特許文献３は、派生開発からＳＰＬ開発への開発環境の移行を支援するものではない。
【００１２】
本発明は、従来の派生開発からＳＰＬ開発への開発環境の移行を支援するプロダクトライン開発支援装置を提供する。
【課題を解決するための手段】
【００１３】
本発明の一態様にかかるＳＰＬ開発支援装置は、派生開発のソースコードを分析して、プロダクトライン開発で使用するコア資産の生成を支援する。ＳＰＬ開発支援装置は、派生開発のソースコードをもとに種々の処理を行う処理部を備える。処理部は、ソースコード解析／生成部と、仕様書リバース部と、可変性／フィーチャ分析部と、を備える。ソースコード解析／生成部は、派生開発のソースコードから、可変部分及び可変部分に対応するソフトウェア部品が定義されて再構成される複数機種対応ソースコードを生成する。仕様書リバース部は、派生開発のソースコードから、派生開発のソースコードの制御項目名が自然言語で記述されて各制御項目名に対応するソースコードの内容が記述されるソフトウェア設計書を生成する。可変性／フィーチャ分析部は、機能仕様書、複数機種対応ソースコード、及びソフトウェア設計書に基づいて、可変性／フィーチャ定義書を生成する。機能仕様書は、派生開発のソースコードの各機能項目名及び内容が自然言語で記述されるデータである。可変性／フィーチャ定義書は、機能仕様書の機能項目名、可変部分、ソフトウェア部品、及び派生開発の各機種を特徴付ける要素であるフィーチャを対応付けたデータである。
【発明の効果】
【００１４】
本発明に係るＳＰＬ開発支援装置は、従来の派生開発からＳＰＬ開発への開発環境の移行を支援することができる。
【図面の簡単な説明】
【００１５】
【図１】実施の形態１に係るＳＰＬ開発支援装置の構成を示すブロック図
【図２】ＳＰＬ開発支援装置のコア資産ＤＢに格納される情報を示す図
【図３】コア資産ＤＢの機能仕様書とソフトウェア設計書との関係を説明するための図
【図４】ＳＰＬ開発支援装置の構成要素と各構成要素に対する入出力データとを示す図
【図５】ソースコード解析／生成部の動作を示すフローチャート
【図６】従来の派生開発のソースコードの一例を示す図
【図７】ユーザによるソースコード解析／生成部の操作を説明するための図
【図８】複数機種対応ソースコードの一例を示す図
【図９】仕様書リバース部の動作を示すフローチャート
【図１０】仕様書リバース部の動作を説明するための図
【図１１】仕様書リバース部の動作を説明するための図
【図１２】可変性／フィーチャ分析部の動作を示すフローチャート
【図１３】可変性／フィーチャ分析部の動作を説明するための図
【図１４】依存関係ＤＢを説明するための図
【図１５】可変性／フィーチャ分析部の動作を示すフローチャート
【図１６】可変性／フィーチャ定義書の一例を示す図
【図１７】可変性／フィーチャ分析部の動作を説明するための図
【図１８】可変性／フィーチャ分析部の動作を説明するための図
【図１９】可変性／フィーチャ分析部の動作を説明するための図
【図２０】実施の形態２に係るＳＰＬ開発支援装置の構成要素と各構成要素に対する入出力データとを示す図
【図２１】仕様書リバース部の動作を説明するための図
【図２２】従来の派生開発の別のソースコードの一例を示す図
【発明を実施するための形態】
【００１６】
以下で説明する複数の実施の形態及びその変形例は、それぞれ、特徴的構成を有する。ある形態における特徴的構成または動作は、他の形態においても適用可能であり、また、本発明は、以下の例示する形態に限定されるものではない。
【００１７】
実施の形態１．
１．構成
図１は、実施の形態１に係るＳＰＬ開発支援装置１の構成を示すブロック図である。ＳＰＬ開発支援装置１は、従来の派生開発で作成されたソースコードを読み込んで、コア資産を生成する。ＳＰＬ開発支援装置１は、プロセッサ１０と、記憶部２０と、表示部３０と、操作部４０と、を備える。プロセッサ１０は、処理部の一例である。
【００１８】
プロセッサ１０は、中央演算処理装置（ＣＰＵ）、ＭＰＵ、ＤＳＰ、マイコン、ＦＰＧＡ、ＡＳＩＣ等で実現できる。プロセッサ１０は、ＯＳ、アプリケーションプログラム、種々のデータを読み込んで演算処理を実行することにより、種々の機能を実現する。プロセッサ１０は、機能的構成として、ソースコード解析／生成部１１と、仕様書リバース部１２と、可変性／フィーチャ分析部１３と、を備える。
【００１９】
記憶部２０は、従来の派生開発のソースコード２１と、コア資産を格納するコア資産データベース２２と、を備える。以下、データベースを「ＤＢ」という。本実施の形態のソースコード２１は、Ｃ言語で記述されている。
【００２０】
表示部３０は、ユーザ操作に従って、後述する文字列や画像を表示する。表示部３０は、液晶ディスプレイ、有機ＥＬディスプレイなどで構成される。
【００２１】
操作部４０は、キーボード、マウスなどで構成される。ユーザは、操作部４０を介してＳＰＬ開発支援装置１を操作する。
【００２２】
図２は、コア資産ＤＢ２２に格納される情報を示す図である。コア資産ＤＢ２２は、複数機種対応ソースコード２２１と、ソフトウェア設計書２２２と、機能仕様書２２３と、依存関係ＤＢ２２４と、可変性／フィーチャ定義書２２５とを含む。
【００２３】
複数機種対応ソースコード２２１は、ソースコード２１の間の、可変部分及び可変部分に対応するソフトウェア部品が定義されて再構成されるソースコードである。本実施の形態の複数機種対応ソースコード２２１は、Ｃ言語で記述される。詳細は後述する。
【００２４】
ソフトウェア設計書２２２は、ソースコード２１の制御項目名が自然言語で記述されて各制御項目名に対応するソースコード２１の内容が記述されるデータである。本実施の形態において、自然言語は例えば日本語など、ソフトウェア技術の知識が無い人が容易に解読できる言語である。ソフトウェア設計書２２２は、所定の制御項目毎に分かれて記載される。制御項目は、制御大項目、及び制御大項目を細分化した制御小項目から構成される。各制御小項目には、当該制御小項目の制御を実現するソースコード２１の内容が記載される。
【００２５】
機能仕様書２２３は、ソースコード２１の各機能項目名及び内容が自然言語で記述されるデータである。機能仕様書２２３は、例えば、従来の派生開発において、ソースコード２１を作成するために事前に準備される。機能仕様書２２３は、所定の機能項目毎に分かれて記載される。機能項目は、機能大項目、及び機能大項目を細分化した機能小項目から構成される。各機能小項目には、当該機能小項目の機能を実現する処理の内容が自然言語で記載される。
【００２６】
機能仕様書２２３の各機能項目は、複数のソフトウェア設計書２２２と対応する場合がある。図３は、ソフトウェア設計書２２２と機能仕様書２２３との関係を説明するための図である。図３の機能仕様書２２３Ａには、起動中、運転中、及び停止中の処理に関する機能項目及び処理の内容が記載されている。ソフトウェア設計書２２２Ａ〜２２２Ｃにはそれぞれ、起動制御、制御内容、及び停止制御に関する制御項目及び制御を実現するソースコード２１の内容が記載されている。例えば、空調装置の冷房機能がファン、電磁弁、及び圧縮機を用いて実現されるのであれば、機能仕様書２２３Ａの起動中の機能項目には、ファン制御、電磁弁制御、及び圧縮機制御のソフトウェア設計書２２２Ａ〜２２２Ｃの各制御項目と対応する機能項目及び処理の内容が記載されている。
【００２７】
依存関係ＤＢ２２４は、複数の機能仕様書２２３の間の依存関係を示す情報を格納する。依存関係ＤＢ２２４は、後述する可変性／フィーチャ分析部１３により管理される。
【００２８】
可変性／フィーチャ定義書２２５は、機能仕様書２２３の機能項目と、可変部分と、ソフトウェア部品と、フィーチャと、機種名と、が一覧表形式で定義されたデータである。可変性／フィーチャ定義書２２５は、後述する可変性／フィーチャ分析部１３により管理される。可変性／フィーチャ定義書２２５は、例えば、Ｅｘｃｅｌ形式、ＣＳＶ形式のデータとして管理される。
【００２９】
２．動作
以上のように構成されるＳＰＬ開発支援装置１の動作について、図１〜１９を参照して説明する。
【００３０】
図４は、ＳＰＬ開発支援装置１の構成要素と、各構成要素に対する入出力データと、を示す図である。ＳＰＬ開発支援装置１は、従来の派生開発のソースコード２１を読み込んで、ＳＰＬ開発を行うためのコア資産ＤＢ２２を構築する。
【００３１】
図４において、ソースコード解析／生成部１１は、ソースコード２１が入力されると、複数機種対応ソースコード２２１を出力する。仕様書リバース部１２は、ソースコード２１が入力されると、ソフトウェア設計書２２２を出力する。また、仕様書リバース部１２は、ソフトウェア設計書２２２と、機能仕様書２２３と、を対応付けて記憶部２０に記憶する。
【００３２】
可変性／フィーチャ分析部１３は、複数の機能仕様書２２３が入力されると、機能仕様書２２３間の依存関係を分析して、当該依存関係を示す情報を依存関係ＤＢ２２４に格納する。また、可変性／フィーチャ分析部１３は、複数機種対応ソースコード２２１、ソフトウェア設計書２２２、及び機能仕様書２２３が入力されると、可変性／フィーチャ定義書２２５を出力する。ＳＰＬ開発支援装置１は、複数機種対応ソースコード２２１、ソフトウェア設計書２２２、機能仕様書２２３、依存関係ＤＢ２２４、及び可変性／フィーチャ定義書２２５を、コア資産ＤＢ２２に格納する。
【００３３】
２−１．ソースコード解析／生成部の動作
図４のソースコード解析／生成部１１は、ソースコード２１が入力されると、ユーザ操作に従って、複数機種対応ソースコード２２１を出力する。図５は、ソースコード解析／生成部１１の動作を示すフローチャートである。図６は、ソースコード２１の一例を示す図である。図７は、ユーザによるソースコード解析／生成部１１の操作を説明するための図である。図８は、ソースコード解析／生成部１１により出力される複数機種対応ソースコード２２１の一例を示す図である。以下、図５のフローチャートに即して、ソースコード解析／生成部１１の動作を説明する。
【００３４】
図５において、最初に、ソースコード解析／生成部１１は、ユーザ操作に従って、所定の機種のソースコード２１を読み込む（Ｓ１０１）。ユーザは、操作部４０を介して、ソースコード解析／生成部１１を操作する。本実施の形態のソースコード２１は、所定の制御単位毎に作成される。各ソースコード２１の先頭には、機種名及び制御名がコメントされる。各ソースコード２１の各関数の一つ上の行には、関数の処理名及び関数名がコメントされる。ここで、機種名は、製品名であるがこれに限定されない。例えば、開発中の製品に付与される開発コードであってもよい。
【００３５】
図６（Ａ）のソースコード２１Ａは、機種Ａのソースコード２１のうち、ファンの回転制御を実現するためのものである。ソースコード２１Ａは、ファンの回転速度を変更するための関数ｓｐｅｅｄ２を含む。関数ｓｐｅｅｄ２は、ファンの回転速度を２段階切り替えるための関数である。ソースコード２１Ａの先頭には、機種名「機種Ａ」及び制御名「ファン制御」がコメントされている。関数ｓｐｅｅｄ２の一つ上の行には、処理名「ファン速」及び関数名「２段」がコメントされている。
【００３６】
図６（Ｂ）のソースコード２１Ｂは、機種Ｂにおいて、図６（Ａ）のソースコード２１Ａと同様の制御を実現するためのものである。ソースコード２１Ｂは、関数ｓｐｅｅｄ２の代わりに、ファンの回転速度を３段階切り替えるための関数ｓｐｅｅｄ３を含む。ソースコード２１Ｂの先頭には、機種名「機種Ｂ」及び制御名「ファン制御」がコメントされている。関数ｓｐｅｅｄ３の一つ上の行には、処理名「ファン速」及び関数名「３段」がコメントされている。
【００３７】
次に、ソースコード解析／生成部１１は、読み込んだ二つの機種のソースコード２１の差異を抽出する（Ｓ１０３）。図６の例では、ソースコード解析／生成部１１は、ソースコード２１Ａとソースコード２１Ｂとの間の差異として、ｓｐｅｅｄ２関数とｓｐｅｅｄ３関数とを抽出する。
【００３８】
次に、ソースコード解析／生成部１１は、ステップＳ１０３にて抽出した差異を表示部３０に表示する（Ｓ１０４）。図６の例では、ソースコード解析／生成部１１は、差異「ｓｐｅｅｄ２（）」及び「ｓｐｅｅｄ３（）」を、図７（Ａ）のように表示部３０に表示する。ソースコード解析／生成部１１は、ファイル名列の最上欄に、ソースコード２１Ａの名称「ｆａｎ．ｃ」を表示し、差異コード列の最上欄に、差異として抽出された関数「ｓｐｅｅｄ２（）」を表示する。同様に、ソースコード解析／生成部１１は、ファイル名列の上から二番目の欄に、ソースコード２１Ｂの名称「ｆａｎ．ｃ」を表示し、差異コード列の上から二番目の欄に、差異として抽出された関数「ｓｐｅｅｄ３（）」を表示する。なお、図６のソースコードの場合、ソースコード解析／生成部３０は、マクロ名列に際を表示しない。詳細は後述する。
【００３９】
次に、ソースコード解析／生成部１１は、ユーザ操作に従って、可変部分と可変部分のラベルとを定義する（Ｓ１０５）。可変部分は、コア資産において可変性を実現する場所のことをいう。ユーザは、表示部３０に表示された差異について、可変部分の名称と、可変部分のラベルと、可変部分の実現形式と、可変部分の実装方法と、を定義する。ユーザは、可変部分の名称列及び可変部分のラベル列の各欄に文字を入力することによって、各可変部分の名称及び可変部分のラベルを定義する。また、ユーザは、プルダウンメニューに表示される文字列のうちの一つを選択することによって、可変部分の実現形式及び可変部分の実装方法を定義する。ユーザが操作部４０を介して形式列の「∨」を押下すると、ソースコード解析／生成部１１は、プルダウン形式で「定数」、「処理」、及び「関数」を表示部３０に表示する。ユーザが操作部４０を介して実装列の「∨」を押下すると、ソースコード解析／生成部１１は、プルダウン形式で「静的」及び「動的」を表示部３０に表示する。
【００４０】
図６の例では、ユーザは、操作部４０を介して、図７（Ｂ）の可変部分の名称列の最上欄に「ファン速」を、可変部分のラベル列の最上欄に「ＦＡＮＳＰＥＥＤ」を、定義する。ユーザは、可変部分の名称列の最上欄に「２段」を、可変部分のラベル列の最上欄に「ｓｐｅｅｄ２」を定義する。同様に、ユーザは、図７（Ｂ）の可変部分の名称列の上から２番目の欄に「ファン速」を、可変部分のラベル列の上から２番目の欄に「ＦＡＮＳＰＥＥＤ」を、定義する。ユーザは、可変部分の名称列の上から２番目の欄に「３段」を、可変部分のラベル列の上から２番目の欄に「ｓｐｅｅｄ３」を定義する。また、ユーザは、形式列において、上から一番目の欄及び二番目の欄にて「関数」を定義し、実装列において、上から一番目の欄及び二番目の欄に「静的」を定義する。ユーザは、入力を終えると、操作部４０を介して、ＯＫ釦を押下する。
【００４１】
次に、ソースコード解析／生成部１１は、複数機種対応ソースコード２２１を生成する（Ｓ１０６）。ソースコード解析／生成部１１は、ステップＳ１０１及びＳ１０２にて読み込んだ、二つのソースコード２１の差異を、ステップＳ１０５にて可変部分のラベル欄に入力された文字列に置き換えることによって、可変部分ソースコード２２１Ａを生成する。また、ソースコード解析／生成部１１は、可変点のラベル欄に入力された文字列と、置き換えられた二つのソースコード２１の差異と、を対応付けることによって、ソフトウェア部品ソースコード２２１Ｂを生成する。
【００４２】
図７（Ｂ）の例では、ソースコード解析／生成部１１は、図８の複数機種対応ソースコード２２１を生成する。ソースコード解析／生成部１１は、図６の二つのソースコードの差異「ｓｐｅｅｄ２（）｛・・・｝」及び「ｓｐｅｅｄ３（）｛・・・｝」を、図７（Ｂ）の可変部分のラベル「ＦＡＮＳＰＥＥＤ」に置き換えて、可変部分ソースコード２２１Ａを生成する。
【００４３】
また、ソースコード解析／生成部１１は、＃ｉｆｄｅｆ文及び＃ｄｅｆｉｎｅ文を用いて、機種Ａでは、文字列「ＦＡＮＳＰＥＥＤ」が「ｓｐｅｅｄ２（）」であることを定義する。同様に、ソースコード解析／生成部１１は、＃ｉｆｄｅｆ文及び＃ｄｅｆｉｎｅ文を用いて、機種Ｂでは、文字列「ＦＡＮＳＰＥＥＤ」が「ｓｐｅｅｄ３（）」であることを定義する。これにより、ソースコード解析／生成部１１は、機種Ａにおいて、文字列「ＦＡＮＳＰＥＥＤ」と「ｓｐｅｅｄ２（）｛・・・｝」とを対応付けて、機種Ｂにおいて、文字列「ＦＡＮＳＰＥＥＤ」と「ｓｐｅｅｄ３（）｛・・・｝」とを対応付ける。
【００４４】
上述したように、ソースコード解析／生成部１１は、従来の派生開発のソースコード２１から、複数機種対応ソースコード２２１を生成する。複数機種対応ソースコード２２１は、可変部分ソースコード２２１Ａ及びソフトウェア部品ソースコード２２１Ｂから構成される。複数機種対応ソースコード２２１に基づいてＳＰＬ開発を行う場合、ユーザは、ソフトウェア部品ソースコード２２１Ｂのみ変更すればよい。よって、ソースコード解析／生成部１１は、効率の高い開発環境を提供することができる。
【００４５】
２−２．仕様書リバース部の動作
図４の仕様書リバース部１２は、ソースコード２１及び機能仕様書２２３が入力されると、ソフトウェア設計書２２２を出力する。その後、仕様書リバース部１２は、ソフトウェア設計書２２２と機能仕様書２２３とを対応付ける。図９は、仕様書リバース部１２の動作を示すフローチャートである。図１０，１１は、仕様書リバース部１２の動作を説明するための図である。以下、図９のフローチャートに即して、仕様書リバース部１２の動作を説明する。
【００４６】
図９において、最初に、仕様書リバース部１２は、ユーザ操作に従って、ソースコード２１を読み込む（Ｓ２０１）。ユーザは、操作部４０を介して、仕様書リバース部１２を操作する。
【００４７】
次に、仕様書リバース部１２は、ソフトウェア設計書２２２を自動生成する（Ｓ２０２）。仕様書リバース部１２は、所定の処理毎に、機種名と、各機種の処理を実現する関数と、を対応付けて、ソフトウェア設計書２２２を生成する。図１０は、仕様書リバース部１２が、ソースコード２１Ａ，２１Ｂに基づいて、ソフトウェア設計書２２２Ａを自動生成する例を示している。仕様書リバース部１２は、処理「ファン速」において、機種名「機種Ａ」、関数名「２段」、及び関数「ｓｐｅｅｄ２（）｛・・・｝」と、機種名「機種Ｂ」、関数名「３段」、及び関数「ｓｐｅｅｄ３（）｛・・・｝」と、を対応付けている。
【００４８】
仕様書リバース部１２は、ソースコード２１Ａ及びソースコード２１Ｂの「ファン制御」を、ソフトウェア設計書２２２Ａの名称とする。仕様書リバース部１２は、ソースコード２１Ａの「ファン速」を「＜＜ファン速＞＞」として、ソフトウェア設計書２２２Ａに記述する。仕様書リバース部１２は、ソースコード２１Ａの「機種Ａ」を「機種Ａ：」として、ソフトウェア設計書２２２Ａの「＜＜ファン速＞＞」の次の行に記述する。仕様書リバース部１２は、ソースコード２１Ａの「２段」を「＜２段＞」として、「機種Ａ：」の次の行に記述する。仕様書リバース部１２は、ソースコード２１Ａの「ｓｐｅｅｄ２（）｛・・・｝」を、「＜２段＞」の次の行に記述する。仕様書リバース部１２は、ソースコード２１Ａと同様に、ソースコード２１Ｂの「機種Ｂ」、「３段」、「ｓｐｅｅｄ３（）｛・・・｝」を、ソフトウェア設計書２２２Ａに記述する。
【００４９】
次に、仕様書リバース部１２は、機能仕様書２２３を読み込んで、表示部３０に、ソフトウェア設計書２２２及び機能仕様書２２３を表示部３０に表示する（Ｓ２０３）。例えば、図１１に示すように、仕様書リバース部１２は、機能仕様書２２３の機能項目と、ソフトウェア設計書２２２の制御項目と、を一覧形式で表示部３０に表示する。図１１において、仕様書リバース部１２は、機能大項目「冷房機能」と、機能小項目「起動制御」，「冷房制御」，「停止制御」と、を表示部３０に表示している。また、仕様書リバース部１２は、制御大項目「ファン制御」，「電磁弁制御」，「圧縮機制御」と、制御小項目「ファン速」と、を表示部３０に表示している。
【００５０】
次に、仕様書リバース部１２は、ユーザ操作に従って、ソフトウェア設計書２２２と機能仕様書２２３とを対応付ける（Ｓ２０４）。例えば、図１１において、ユーザは、操作部４０を介して、表示部３０に表示された機能仕様書２２３の機能小項目「冷房制御」を選択し、ソフトウェア設計書２２２の制御小項目「ファン速」を選択することによって、ソフトウェア設計書２２２の制御項目と機能仕様書２２３の機能項目とを対応付ける。その後、ユーザは、表示部３０に表示されたＯＫ釦を、操作部４０を介して押下する。仕様書リバース部１２は、ＯＫ釦の押下を検出すると、図９の処理を終了する。
【００５１】
上述したように、ソフトウェア設計書２２２は、制御項目名が日本語で記述される。よって、仕様書リバース部１２は、可読性の高いソフトウェア設計書２２２を、ユーザに提供することができる。また、ソフトウェア設計書２２２は、ソースコード２１の記載に基づいて作成されるので、仕様書リバース部１２は、ソースコード２１の記載から乖離することのないソフトウェア設計書２２２をユーザに提供することができる。
【００５２】
２−３．可変性／フィーチャ分析部の動作
図４に示すように、可変性／フィーチャ分析部１３は、機能仕様書２２３が入力されると、機能仕様書２２３間の依存関係を分析して、当該依存関係を示す情報を依存関係ＤＢ２２４に格納する。また、可変性／フィーチャ分析部１３は、複数機種対応ソースコード２２１、ソフトウェア設計書２２２、及び機能仕様書２２３が入力されると、可変性／フィーチャ定義書２２５を出力する。可変性／フィーチャ定義書２２５は、機能仕様書２２３の機能項目と、可変部分と、ソフトウェア部品と、フィーチャと、機種名と、が一覧表形式で定義されたデータである。可変性／フィーチャ分析部１３は、ユーザ操作に従って、機種名を追記し、依存関係ＤＢ２２４に記録された情報に基づいて、機種名と対応付ける機能項目名の候補を、ユーザに提示する。以下、可変性／フィーチャ分析部１３の各動作を説明する。
【００５３】
２−３−１．依存関係ＤＢへの依存関係を示す情報の格納動作
図１２は、可変性／フィーチャ分析部１３による依存関係ＤＢ２２４を管理する動作を示すフローチャートである。図１３は、可変性／フィーチャ分析部１３による依存関係ＤＢ２２４を管理する動作を説明するための図である。図１４は、依存関係ＤＢ２２４に格納された依存関係を示す情報を説明するための図である。以下、図１２のフローチャートに即して、当該動作を説明する。
【００５４】
図１２において、最初に、可変性／フィーチャ分析部１３は、機能仕様書２２３から名詞を抽出する（Ｓ３０１）。図１３（Ａ）の例において、相対補正の機能仕様書２２３Ｂに、文字列「周波数を相対補正する。」が記載されている場合、可変性／フィーチャ分析部１３は、名詞「周波数」及び「相対補正」を抽出する。
【００５５】
次に、可変性／フィーチャ分析部１３は、抽出した名詞が、依存関係ＤＢ２２４に既に登録されているか否かを判断する（Ｓ３０２）。図１３（Ａ）の例において、可変性／フィーチャ分析部１３は、名詞「周波数」及び「相対補正」が、依存関係ＤＢ２２４に登録されていないことを判断する。
【００５６】
次に、可変性／フィーチャ分析部１３は、抽出した名詞と、既に登録されている名詞とを対応付けて依存関係ＤＢ２２４に登録する（Ｓ３０３）。図１３（Ａ）の例では、依存関係ＤＢ２２４には、名詞「周波数」及び「相対補正」が登録されていない。したがって、可変性／フィーチャ分析部１３は、名詞「周波数」及び「相対補正」を、依存関係ＤＢ２２４に登録されている名詞と対応付けることなく、依存関係ＤＢ２２４に登録する。
【００５７】
可変性／フィーチャ分析部１３は、例えば、図１４（Ａ）のような表形式で名詞を登録する。表は、機能仕様ＩＤ、名詞ＩＤ、及び名詞の三つの列から構成される。可変性／フィーチャ分析部１３は、機能仕様ＩＤの列において、機能仕様書２２３毎に欄を分けて、機能仕様ＩＤを入力する。可変性／フィーチャ分析部１３は、名詞ＩＤの列において、名詞毎に欄を分けて、名詞ＩＤを入力する。可変性／フィーチャ分析部１３は、名詞の列において、抽出した名詞を入力する。
【００５８】
機能仕様ＩＤは、登録順に割り当てられる番号であり、図１４（Ａ）の例では、「１」が割り当てられている。名詞ＩＤは、機能仕様ＩＤの後ろに「．」及びアルファベットを繋げたものであり、アルファベットは、「Ａ」から登録順に割り当てられる。図１４（Ａ）の例では、「周波数」に割り当てられる名詞ＩＤは「１．Ｘ」であり、「相対補正」に割り当てられる名詞ＩＤは「１．Ｙ」である。
【００５９】
可変性／フィーチャ分析部１３は、機能仕様書２２３の名詞を登録すると、図１２の処理を終了する。
【００６０】
図１３（Ｂ）は、可変性／フィーチャ分析部１３が、図１３（Ａ）の機能仕様書２２３Ｂの名詞を登録した後に、別の機能仕様書２２３Ｃの名詞を登録する動作を示している。機能仕様書２２３Ｃに文字列「周波数を相対補正する場合は、必ず簡易検知をする。」が記載されている場合、可変性／フィーチャ分析部１３は、名詞「周波数」、「相対補正」、及び「簡易検知」を抽出する（Ｓ３０１）。
【００６１】
次に、可変性／フィーチャ分析部１３は、抽出した名詞のうち「周波数」及び「相対補正」が依存関係ＤＢに登録されていることを判断する（Ｓ３０２）。
【００６２】
次に、可変性／フィーチャ分析部１３は、抽出した名詞を依存関係ＤＢに登録する。このとき、可変性／フィーチャ分析部１３は、「周波数」及び「相対補正」を、依存関係ＤＢに登録されている名詞と対応付けて登録する（Ｓ３０３）。
【００６３】
図１３（Ｂ）の例では、可変性／フィーチャ分析部１３は、図１４（Ｂ）のような表形式で名詞を登録する。表は、追加機能仕様ＩＤ、名詞ＩＤ、名詞、及び対応する名詞ＩＤの四つの列から構成される。可変性／フィーチャ分析部１３は、追加機能仕様書ＩＤの列において、機能仕様書２２３毎に欄を分けて、追加機能仕様ＩＤを入力する。可変性／フィーチャ分析部１３は、名詞ＩＤの列において、図１４（Ａ）と同様の形式で名詞ＩＤを入力する。
【００６４】
可変性／フィーチャ分析部１３は、名詞の列において、図１４（Ａ）と同様の形式で抽出した名詞を入力する。可変性／フィーチャ分析部１３は、対応する名詞ＩＤの列において、対応する名詞に割り当てられている名詞ＩＤを入力する。
【００６５】
追加機能仕様ＩＤは、登録順に割り当てられる番号であり、図１４（Ｂ）の追加機能仕様ＩＤ欄には、図１４（Ａ）の機能仕様ＩＤ「１」に続いて、「２」が入力される。図１４（Ａ）の場合と同様に、「周波数」に割り当てられる名詞ＩＤは「２．Ｘ」であり、「相対補正」に割り当てられる名詞ＩＤは「２．Ｙ」であり、「簡易検知」に割り当てられる名詞ＩＤは「２．Ｚ」である。「周波数」に対応する名詞ＩＤは図１４（Ａ）の「１．Ｘ」であり、「相対補正」に対応する名詞ＩＤは図１３（Ａ）の「１．Ｙ」である。
【００６６】
上述したように、可変性／フィーチャ分析部１３は、機能仕様書２２３に含まれる名詞を、依存関係ＤＢ２２４に登録し、特に、複数の機能仕様書２２３に共通して含まれる名詞を対応付けて登録する。したがって、ユーザは、依存関係ＤＢ２２４に登録された情報を確認することによって、例えば、一部の機能仕様書２２３を修正するときに、あわせて別の機能仕様書２２３も修正する必要があるか否かを判断することができる。
【００６７】
２−３−２．可変性／フィーチャ定義書の出力動作
図１５は、可変性／フィーチャ分析部１３による可変性／フィーチャ定義書２２５を生成する動作を示すフローチャートである。図１６は、可変性／フィーチャ定義書２２５の一例を示す図である。図１７〜１９は、可変性／フィーチャ分析部１３の動作を説明するための図である。以下、図１５のフローチャートに即して、可変性／フィーチャ分析部１３の動作を説明する。
【００６８】
図１５において、最初に、可変性／フィーチャ分析部１３は、複数機種対応ソースコード２２１、ソフトウェア設計書２２２、及び機能仕様書２２３を読み出す（Ｓ４０１）。
【００６９】
次に、可変性／フィーチャ分析部１３は、可変性／フィーチャ定義書２２５の機能項目列、機能ブロック列、及び可変性列を生成する（Ｓ４０２）。可変性／フィーチャ分析部１３は、機能仕様書２２３の機能項目の番号及びタイトルを抽出して、機能項目列に入力する。ユーザは、操作部４０を介して、機能ブロック列に機能項目の名称、ラベル、及び目的を入力する。可変性／フィーチャ分析部１３は、複数機種対応ソースコード２１から可変部分の名称及びラベル、並びにソフトウェア部品の名称及びラベルを抽出して、可変性列に入力する。
【００７０】
図１７は、可変性／フィーチャ分析部１３が、複数機種対応ソースコード２１から可変部分の名称及びラベル、並びにソフトウェア部品の名称及びラベルを抽出して、可変性列に入力する例を示している。可変性／フィーチャ分析部１３は、可変部分ソースコード２２１Ａの「ファン速」及び「ＦＡＮＳＰＥＥＤ」を、可変性／フィーチャ定義書２２５Ａに入力する。可変性／フィーチャ分析部１３は、ソフトウェア部品ソースコード２２１Ｂの「２段」、「ｓｐｅｅｄ２」、「３段」、及び「ｓｐｅｅｄ３」を、可変性／フィーチャ定義書２２５Ａに入力する。同様に、可変性／フィーチャ分析部１３は、周波数補正及び異常検知の複数機種対応ソースコード２１から文字列を抽出して、当該文字列を可変性／フィーチャ定義書２２５Ａの可変性列に入力する。
【００７１】
次に、可変性／フィーチャ分析部１３は、ユーザ操作に従って、フィーチャを定義して、ソフトウェア部品とフィーチャとを対応付ける（Ｓ４０３）。ユーザは、操作部４０を介して、フィーチャの名称を入力する。その後、ユーザは、ソフトウェア部品と、フィーチャの名称とを対応付ける。
【００７２】
図１８の例では、ＸＸ方式の温度センサ、ＹＹ方式の温度センサ、冷房の運転モード、暖房の運転モード、及び送風の運転モードが、フィーチャとして設定されている。ユーザは、各フィーチャの列と、各ソフトウェア部品の行とが交わる欄に「○」を入力することによって、所望のフィーチャ及びソフトウェア部品を対応付ける。
【００７３】
図１８において、ソフトウェア部品「２段」はフィーチャ「ＸＸ方式」と、ソフトウェア部品「３段」はフィーチャ「ＹＹ方式」と、対応付けられている。ソフトウェア部品「相対補正」はフィーチャ「暖房」と、ソフトウェア部品「絶対補正」はフィーチャ「冷房」と、対応付けられている。ソフトウェア部品「通常検知」はフィーチャ「暖房」と、ソフトウェア部品「簡易検知」はフィーチャ「送風」と、対応付けられている。可変性／フィーチャ分析部１３は、ユーザ操作に従って、ＯＫ釦が押下されたことを検出すると、ステップＳ４０３を終了する。
【００７４】
次に、可変性／フィーチャ分析部１３は、ユーザ操作に従って、機種名を定義して、当該機種にて採用するソフトウェア部品を選択する（Ｓ４０４）。ユーザは、操作部４０を介して機種名を入力する。図１９の例では、機種Ａ、機種Ｂ、及び機種Ｃが機種名として定義されている。ユーザは、各機種の列と、各ソフトウェア部品の行とが交わる欄に「○」を入力することによって、所望のソフトウェア部品及び機種を対応付ける。図１９において、「機種Ａ」はソフトウェア部品「３段」、「絶対補正」、及び「簡易検知」と、「機種Ｂ」はソフトウェア部品「３段」、「相対補正」、及び「簡易検知」と、「機種Ｃ」はソフトウェア部品「２段」及び「相対補正」と、対応付けられている。
【００７５】
このとき、可変性／フィーチャ分析部１３は、依存関係ＤＢ２２４に記録された情報に基づいて、機種名と対応付ける機能項目の候補を、ユーザに提示する。図１８において、可変性／フィーチャ分析部１３は、「機種Ｃ」が「簡易検知」と対応付けられていることを検出する。その後、可変性／フィーチャ分析部１３は、図１４（Ｂ）の表を参照して、「機種Ｃ」が「相対補正」とも対応する可能性が高いと判断して、機種Ｃの列と相対補正の行とが交わる欄を色付けすることにより、候補をユーザに提示する。
【００７６】
上述したように、可変性／フィーチャ分析部１３は、機能仕様書２２３の機能項目と、可変部分と、ソフトウェア部品と、フィーチャと、機種名と、が定義された、可変性／フィーチャ定義書２２５を出力する。可変性／フィーチャ定義書２２５が一覧表形式で生成されるので、可変性／フィーチャ定義書２２５は、ユーザに、可読性の高いドキュメントを提供することができる。また、可変性／フィーチャ分析部１３は、機能名と対応付ける機能項目の候補をユーザに提示するので、ユーザ操作による誤りを抑制することができる。
【００７７】
３．まとめ
以上説明したように、本実施の形態に係るＳＰＬ開発支援装置１は、派生開発のソースコード２１を分析して、ＳＰＬ開発で使用するコア資産の生成を支援する。ＳＰＬ開発支援装置１は、ソースコード２１をもとに種々の処理を行う処理部１０を備える。処理部１０は、ソースコード解析／生成部１１と、仕様書リバース部１２と、可変性／フィーチャ分析部１３と、を備える。ソースコード解析／生成部１１は、ソースコード２１から、可変部分及び可変部分に対応するソフトウェア部品が定義されて再構成される複数機種対応ソースコード２２１を生成する。仕様書リバース部１２は、ソースコード２１から、ソースコード２１の制御項目名が自然言語で記述されて各制御項目名に対応するソースコード２１の内容が記述されるソフトウェア設計書２２２を生成する。可変性／フィーチャ分析部１３は、機能仕様書２２３、複数機種対応ソースコード２２１、及びソフトウェア設計書２２２に基づいて、可変性／フィーチャ定義書２２５を生成する。機能仕様書２２３は、ソースコード２１の各機能項目名及び内容が自然言語で記述されるデータである。可変性／フィーチャ定義書２２５は、機能仕様書２２３の機能項目名、可変部分、ソフトウェア部品、及び派生開発の各機種を特徴付ける要素であるフィーチャを対応付けたデータである。
【００７８】
このことにより、ＳＰＬ開発支援装置１は、従来の派生開発からＳＰＬ開発への開発環境の移行を支援することができる。
【００７９】
ソースコード解析／生成部１１は、派生開発のソースコード２１の差異をユーザに提示して、ユーザ操作に従って、差異を可変部分及びソフトウェア部品に設定して、複数機種対応ソースコード２２１を生成する。
【００８０】
このことにより、ソースコード解析／生成部１１は、ユーザによる可変部分及びソフトウェア部品の設定操作を支援することができる。
【００８１】
仕様書リバース部１２は、ソフトウェア設計書２２２の制御項目名と、機能仕様書２２３の機能項目名とをユーザに一覧形式で提示して、ユーザ操作に従って、ソフトウェア設計書２２２の制御項目名と、機能仕様書２２３の機能項目名とを対応付ける。
【００８２】
このことにより、仕様書リバース部１２は、ユーザによる、ソフトウェア設計書２２２と機能仕様書２２３との間の対応付け操作を支援することができる。
【００８３】
ＳＰＬ開発支援装置１は、依存関係データベース２２４をさらに備える。可変性／フィーチャ分析部１３は、さらに、機能仕様書２２３に含まれる名詞を抽出して、名詞を別の機能仕様書２２３に含まれる名詞と対応付けて、依存関係ＤＢ２２４に記録する。
【００８４】
可変性／フィーチャ分析部１３は、ユーザ操作に従って、機種名を、可変性／フィーチャ定義書２２５に追記して、依存関係ＤＢ２２４に記録された情報に基づいて、機種名と対応付ける機能仕様書２２３の機能項目名の候補を、ユーザに提示する。
【００８５】
このことにより、可変性／フィーチャ分析部１３は、可変性／フィーチャ定義書２２５を作成する際のユーザ操作の誤りを抑制することができる。
【００８６】
実施の形態２．
実施の形態２のプロセッサ１０は、ソースコード解析／生成部１１を備えない点で、実施の形態１のものと異なる。また、実施の形態２の仕様書リバース部１２Ａは、従来の派生開発のソースコード２１に代えて複数機種対応ソースコード２２１に基づいて、ソフトウェア設計書２２２を生成する点で、実施の形態１の仕様書リバース部１２と異なる。
【００８７】
図２０は、本実施の形態に係るＳＰＬ開発支援装置１の構成要素と、各構成要素に対して入出力されるデータと、を示す図である。仕様書リバース部１２Ａは、複数機種対応ソースコード２２１に基づいて、ソフトウェア設計書２２２を生成する。図２１は、仕様書リバース部１２Ａの動作を説明するための図である。図２１は、仕様書リバース部１２Ａが、複数機種対応ソースコード２２１に基づいて、ソフトウェア設計書２２２を自動生成する例を示している。
【００８８】
図２１において、仕様書リバース部１２Ａは、複数機種対応ソースコード２２１の可変部分ソースコード２２１Ａの「ファン制御」を、ソフトウェア設計書２２２Ａの名称とする。仕様書リバース部１２は、可変部分ソースコード２２１Ａの「ファン速」を「＜＜ファン速＞＞」として、ソフトウェア設計書２２２Ａに記述する。仕様書リバース部１２Ａは、ソフトウェア部品ソースコード２２１Ｂの「機種Ａ」を「機種Ａ：」として、ソフトウェア設計書２２２Ａの「＜＜ファン速＞＞」の次の行に記述する。仕様書リバース部１２Ａは、ソフトウェア部品ソースコード２２１Ｂの「２段」を「＜２段＞」として、ソフトウェア設計書２２２Ａの「機種Ａ：」の次の行に記述する。仕様書リバース部１２Ａは、ソフトウェア部品ソースコード２２１Ｂの「ｓｐｅｅｄ２（）；」を、ソフトウェア設計書２２２Ａの「＜２段＞」の次の行に記述する。仕様書リバース部１２Ａは、ソフトウェア部品ソースコード２２１Ｂの「機種Ｂ」を「機種Ｂ：」として、ソフトウェア設計書２２２Ａの「ｓｐｅｅｄ２（）；」の次の行に記述する。仕様書リバース部１２Ａは、ソフトウェア部品ソースコード２２１Ｂの「３段」を「＜３段＞」として、ソフトウェア設計書２２２Ａの「機種Ｂ：」の次の行に記述する。仕様書リバース部１２Ａは、ソフトウェア部品ソースコード２２１Ｂの「ｓｐｅｅｄ３（）；」を、ソフトウェア設計書２２２Ａの「＜３段＞」の次の行に記述する。
【００８９】
以上説明したように、本実施の形態に係る仕様書リバース部１２Ａは、さらに、複数機種対応ソースコード２２１から、ソフトウェア設計書２２２を生成する。このことにより、仕様書リバース部１２Ａは、例えば、派生開発からＳＰＬ開発への開発環境の移行後に、新機種に対応した複数機種対応ソースコード２２１に基づいて、ソフトウェア設計書２２２を自動生成することができる。したがって、仕様書リバース部１２は、複数機種対応ソースコード２２１の記載から乖離することのないソフトウェア設計書２２２をユーザに提供することができる。
【００９０】
他の実施の形態．
以上のように、本発明における技術の例示として、実施の形態を説明した。しかしながら、本発明における技術は、これに限定されず、適宜、変更、置き換え、付加、省略などを行った実施の形態にも適用可能である。また、上記実施の形態で説明した各構成要素を組み合わせて、新たな実施の形態とすることも可能である。
【００９１】
実施の形態１のＳＰＬ開発支援装置１は、図６のように機種毎に作成されたファイルであるソースコード２１に基づいてコア資産を生成するが、これに限定するものではない。ＳＰＬ開発支援装置１は、例えば、図２２のように一つのファイルに複数機種のコードが記述されたソースコード２１Ｃに基づいてコア資産を生成してもよい。この場合、ソースコード解析／生成部３０は、図７（Ａ）の差異コード列の「ｓｐｅｅｄ２（）」「ｓｐｅｅｄ３（）」に加えて、マクロ名列の上から一番目の欄に「ＡＡＡ」を、マクロ名列の上から二番目の欄に「ＢＢＢ」を表示する。
【００９２】
上記の実施の形態では、ソースコード２１はＣ言語で記述されるが、これに限定されない。例えば、Ｃ＋＋、Ｊａｖａ（登録商標）、Ｐｙｔｈｏｎ、Ｒｕｂｙ等の他の言語で記述されていてもよい。
【００９３】
上記の実施の形態のＳＰＬ開発支援装置１は、日本語を含むソースコード２１及び機能仕様書２２３に基づいてコア資産ＤＢを構築するが、これに限定されない。例えば、ソースコード２１及び機能仕様書２２３は、英語、フランス語、スペイン語等の他の言語を含んでもよい。
【００９４】
上記の実施の形態では、ソースコード２１のコメントは、ファイルの先頭及び関数の一つ上の行に記載されるが、これに限定するものではない。コメントの記載位置は、別途定義ファイルを用意することによって、自由に変更できてもよい。
【００９５】
実施の形態２のＳＰＬ開発支援装置１は、ソースコード解析／生成部１１を備えず、仕様書リバース部１２に代えて仕様書リバース部１２Ａを備えたが、これに限定するものではない。例えば、実施の形態２のＳＰＬ開発支援装置１は、ソースコード解析／生成部１１、仕様書リバース部１２，１２Ａの全てを備えてもよい。
【符号の説明】
【００９６】
１  プロダクトライン開発支援装置
１０  プロセッサ
１１  ソースコード解析／生成部
１２  仕様書リバース部
１３  可変性／フィーチャ分析部
２０  記憶部
２１  ソースコード
２２  コア資産データベース
２２１  複数機種対応ソースコード
２２２  ソフトウェア設計書
２２３  機能仕様書
２２４  依存関係データベース
２２５  可変性／フィーチャ定義書
【図１】
2020077191.tif 000003
【図２】
2020077191.tif 000004
【図３】
2020077191.tif 000005
【図４】
2020077191.tif 000006
【図５】
2020077191.tif 000007
【図６】
2020077191.tif 000008
【図７】
2020077191.tif 000009
【図８】
2020077191.tif 000010
【図９】
2020077191.tif 000011
【図１０】
2020077191.tif 000012
【図１１】
2020077191.tif 000013
【図１２】
2020077191.tif 000014
【図１３】
2020077191.tif 000015
【図１４】
2020077191.tif 000016
【図１５】
2020077191.tif 000017
【図１６】
2020077191.tif 000018
【図１７】
2020077191.tif 000019
【図１８】
2020077191.tif 000020
【図１９】
2020077191.tif 000021
【図２０】
2020077191.tif 000022
【図２１】
2020077191.tif 000023
【図２２】
2020077191.tif 000024