(57)【特許請求の範囲】
【請求項１】
記憶装置に記憶された複数のソースコードファイルを含むソフトウェア資産の再利用を支援して現実アーキテクチャモデルを作成する計算機に用いられるソフトウェア資産再利用支援プログラムであって、
前記計算機を、
前記記憶装置内の各ソースコードファイルに関して、所定のシンボルの定義を含むか否か及び当該シンボルを参照するか否かを解析する手段、
この解析結果として得られた各ソースコードファイル間の参照関係と、アーキテクチャモデルの構成要素名のうちの当該各ソースコードファイルのファイル名に対応する構成要素名と、操作者の操作により入力される情報とに基づいて、当該構成要素名毎に前記参照関係を表現した現状アーキテクチャモデルを作成する手段、
作成目標とするソフトウェアが搭載される製品系列における製品別開発計画を示す製品ロードマップと、操作者の操作により入力される情報とに基づいて、フィーチャモデルを作成する手段、
前記フィーチャモデル、及び操作者の操作により入力される情報に基づいて、前記現状アーキテクチャモデルを改善のために変更作業しながら編集することにより、前記作成目標とするソフトウェアに対応する現実アーキテクチャモデルを作成する手段、
として機能させるためのソフトウェア資産再利用支援プログラム。
【請求項２】
請求項１に記載のソフトウェア資産再利用支援プログラムにおいて、
前記計算機を、
前記各アーキテクチャモデル及び前記フィーチャモデルの作成中、制約条件記述に基づいて、当該作成中のモデルが制約条件に違反していないことを検証し、制約条件に違反している場合には当該違反を示す情報を出力する手段、
として更に機能させるためのソフトウェア資産再利用支援プログラム。
【請求項３】
請求項１又は請求項２に記載のソフトウェア資産再利用支援プログラムにおいて、
前記計算機を、
前記現状アーキテクチャモデル、又は、前記現実アーキテクチャモデル、又は、前記フィーチャモデル、の作成中、前記操作により入力される情報に基づいて、参照先ファイル名と構成要素名との関係を変更又は新規に作成した場合、当該参照先ファイル名の参照シンボル数が一定値以上である、当該参照先ファイル名に対応する参照元ファイル名についても変更又は新規に関係付けられた構成要素名に当該関係を変更することを推奨する情報を出力する手段、
として更に機能させるためのソフトウェア資産再利用支援プログラム。
【請求項４】
記憶装置に記憶された複数のソースコードファイルを含むソフトウェア資産の再利用を支援して現実アーキテクチャモデルを作成する計算機に用いられるソフトウェア資産再利用支援プログラムであって、
前記計算機を、
前記記憶装置内の各ソースコードファイルを検索し、予め定義されたシンボルを含むソースコードファイルのファイル名を有するシンボル定義情報を抽出する手段、
前記記憶装置内の各ソースコードファイルを検索し、参照するシンボルを含むソースコードファイルのファイル名を有するシンボル参照情報を抽出する手段、
前記シンボル定義情報及び前記シンボル参照情報に基づいて、前記シンボル定義情報内のファイル名である参照元ファイル名と、前記シンボル参照情報内のファイル名である参照先ファイル名とを含むファイル間依存関係解析情報を作成する手段、
複数のソースコードファイル名に関連付けられるファイル名パターン情報をアーキテクチャモデルの構成要素名に関連付けるアーキテクチャ構造ルールに基づいて、参照元ファイル名、参照先ファイル名、及びアーキテクチャモデルの構成要素名を含むファイル間アーキテクチャ構成要素間依存関係構造情報を作成する手段、
前記ファイル間依存関係解析情報に示される各ソースコードファイル間の参照関係と、前記ファイル間アーキテクチャ構成要素間依存関係構造情報内の参照元ファイル名及び参照先ファイル名に対応する構成要素名と、操作者の操作により入力される情報とに基づいて、当該構成要素名毎に前記参照関係を表現した現状アーキテクチャモデルを作成する手段、
作成目標とするソフトウェアが満たすべき機能要件を定義した要件定義と、操作者の操作により入力される情報とに基づいて、目標アーキテクチャモデルを作成する手段、
前記作成目標とするソフトウェアが搭載される製品系列における製品別開発計画を示す製品ロードマップと、操作者の操作により入力される情報とに基づいて、フィーチャモデルを作成する手段、
前記目標アーキテクチャモデル、前記フィーチャモデル、及び操作者の操作により入力される情報に基づいて、前記現状アーキテクチャモデルを改善のために変更作業しながら編集することにより、前記作成目標とするソフトウェアに対応する現実アーキテクチャモデルを作成する手段、
として機能させるためのソフトウェア資産再利用支援プログラム。
【請求項５】
請求項４に記載のソフトウェア資産再利用支援プログラムにおいて、
前記計算機を、
前記各アーキテクチャモデル及び前記フィーチャモデルの作成中、制約条件記述に基づいて、当該作成中のモデルが制約条件に違反していないことを検証し、制約条件に違反している場合には当該違反を示す情報を出力する手段、
として更に機能させるためのソフトウェア資産再利用支援プログラム。
【請求項６】
請求項４又は請求項５に記載のソフトウェア資産再利用支援プログラムにおいて、
前記計算機を、
前記現状アーキテクチャモデル、又は、前記現実アーキテクチャモデル、又は、前記フィーチャモデル、の作成中、前記操作により入力される情報に基づいて、参照先ファイル名と構成要素名との関係を変更又は新規に作成した場合、当該参照先ファイル名の参照シンボル数が一定値以上である、当該参照先ファイル名に対応する参照元ファイル名についても変更又は新規に関係付けられた構成要素名に当該関係を変更することを推奨する情報を出力する手段、
として更に機能させるためのソフトウェア資産再利用支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア資産再利用支援プログラムに係り、例えば、既存のソフトウェア資産を再利用しつつ新たにソフトウェアを開発する場合に、既存ソフトウェア資産の品質（使用性、保守性、移植性など）や再利用性を改善し得るソフトウェア資産再利用支援プログラムに関する。
【背景技術】
【０００２】
例えば、継続的に新製品が開発される車載端末や携帯電話には、カーナビゲーション用プログラムや電子メール作成支援プログラム等といった各種のソフトウェアが使用される。これらのソフトウェアは、新製品の発売開始に間に合うように、一般的には、既存のソフトウェア資産を再利用しつつ機能追加やバージョンアップすることにより開発される。
【０００３】
なお、この発明に関連した先行技術文献としては、例えば特許文献１がある。
【特許文献１】特開２００７−１２００３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、以上のようなソフトウェアは、既存のソフトウェア資産を再利用しつつ開発されることから、例えば携帯電話の場合には、本来、機種毎に開発すべき各機種のソースコードが混在し、いわゆるスパゲッティコードになり易い不都合がある。これは、携帯電話のソフトウェアに限らず、車載端末等の他の製品のソフトウェアでも同様である。
【０００５】
係る不都合は、具体的には、以下の（ａ）アーキテクチャ規約違反、（ｂ）可変性の実現方法の非統一、（ｃ）クラスとソースコードファイルとの関係の複雑化、といった状況を招き易く、ソフトウェアの品質（使用性、保守性、移植性など）や再利用性を低下させ再利用性を損なう可能性を生じさせる。
【０００６】
（ａ）アーキテクチャ規約違反
アーキテクチャ規約違反の場合、アーキテクチャ構造（階層構造、ＭＶＣ(model-view-controller)モデルなど）やデザインパターン等の規約を無視したＡＰＩ(application program interface)呼び出しが実行される。この違反は性能改善などの作業工程などで発生することが多い。
【０００７】
（ｂ）可変性の実現方法の非統一
可変性とは、ソフトウェアにおいて多種の製品に対応するために、各製品に使用されるソフトウェア部品の組み合わせが異なること、である。
【０００８】
可変性の実現方法としては以下の（ｂ１）〜（ｂ４）などの方法があるが、これらの方法が適切に選択され利用されない場合、ソフトウェアの品質（使用性、保守性、移植性など）の低下を招いてしまう。適切に選択するためには、アーキテクチャを検討するなかで考慮し、決定することが望ましい。（ｂ１）コンパイル時に#ifdefなどにより使用するコードを切り替える方法（ソースコードに記述）。（ｂ２）コンパイル時にリンクする静的ライブラリ、動的ライブラリを切り替える方法（Makefile等に記述）。（ｂ３）起動時に設定ファイルを参照し使用する機能を切り替える方法（設定ファイルに記述）。（ｂ４）実行中にレジストリ等を参照し動的に機能を切り替える方法（ソースコードに記述）。
【０００９】
（ｃ）クラスとソースコードファイルとの関係の複雑化
クラスとソースコードファイルとの関係としては、例えば、Ｃ＋＋ではクラスの宣言をヘッダファイル(＊.h)に記述し、実装を実装ファイル(＊.cpp)に記述するといった関係がある。この関係が複雑化した場合、例えば、一つのヘッダファイルに複数のクラスの宣言を記述し、各クラスの実装をそれぞれ別々の実装ファイルに記述する等の状況となる。最終的にソフトウェア資産として管理する場合、「ファイル」が管理最小単位である。製品の機能に対応して設計されたクラスが、実装として複数のファイルに分割して実装される、または、一つのファイルに複数のクラスの実装が行われる、などが発生した場合、品質（使用性、保守性、移植性など）や再利用性を低下させることになる。
【００１０】
以上のように、既存のソフトウェア資産には、品質（使用性、保守性、移植性など）や再利用性を低下させる阻害要因である(a)(b)(c)が程度の違いはあるが含まれている。品質を改善し再利用を推進するためには、これら阻害要因を出来る限り低減させることが望まれる。
【００１１】
本発明は上記実情を考慮してなされたもので、既存のソフトウェア資産を再利用しつつ新たにソフトウェアを開発する場合に、ソフトウェアの品質（使用性、保守性、移植性など）や再利用性を改善し得るソフトウェア資産再利用支援プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
以上の目的を達成するために本発明としては、例えば、第１及び第２の局面が考えられる。第１の局面は、目標となるフィーチャモデルによる特徴的な部分のみと、既存のソフトウェア資産との対応付けに基づく手法である。第２の局面は、目標となるフィーチャモデル及びアーキテクチャモデルによる網羅的なモデル群と、既存のソフトウェア資産との対応付けに基づく手法である。具体的には以下の通りである。
【００１３】
本発明の第１の局面は、記憶装置に記憶された複数のソースコードファイルを含むソフトウェア資産の再利用を支援して現実アーキテクチャモデルを作成する計算機に用いられるソフトウェア資産再利用支援プログラムであって、前記計算機を、前記記憶装置内の各ソースコードファイルに関して、所定のシンボルの定義を含むか否か及び当該シンボルを参照するか否かを解析する手段、この解析結果として得られた各ソースコードファイル間の参照関係と、アーキテクチャモデルの構成要素名のうちの当該各ソースコードファイルのファイル名に対応する構成要素名と、操作者の操作により入力される情報とに基づいて、当該構成要素名毎に前記参照関係を表現した現状アーキテクチャモデルを作成する手段、作成目標とするソフトウェアが搭載される製品系列における製品別開発計画を示す製品ロードマップと、操作者の操作により入力される情報とに基づいて、フィーチャモデルを作成する手段、前記フィーチャモデル、及び操作者の操作により入力される情報に基づいて、前記現状アーキテクチャモデルを改善のために変更作業しながら編集することにより、前記作成目標とするソフトウェアに対応する現実アーキテクチャモデルを作成する手段、として機能させるためのソフトウェア資産再利用支援プログラムである。
【００１４】
本発明の第２の局面は、記憶装置に記憶された複数のソースコードファイルを含むソフトウェア資産の再利用を支援して現実アーキテクチャモデルを作成する計算機に用いられるソフトウェア資産再利用支援プログラムであって、前記計算機を、前記記憶装置内の各ソースコードファイルを検索し、予め定義されたシンボルを含むソースコードファイルのファイル名を有するシンボル定義情報を抽出する手段、前記記憶装置内の各ソースコードファイルを検索し、参照するシンボルを含むソースコードファイルのファイル名を有するシンボル参照情報を抽出する手段、前記シンボル定義情報及び前記シンボル参照情報に基づいて、前記シンボル定義情報内のファイル名である参照元ファイル名と、前記シンボル参照情報内のファイル名である参照先ファイル名とを含むファイル間依存関係解析情報を作成する手段、複数のソースコードファイル名に関連付けられるファイル名パターン情報をアーキテクチャモデルの構成要素名に関連付けるアーキテクチャ構造ルールに基づいて、参照元ファイル名、参照先ファイル名、及びアーキテクチャモデルの構成要素名を含むファイル間アーキテクチャ構成要素間依存関係構造情報を作成する手段、前記ファイル間依存関係解析情報に示される各ソースコードファイル間の参照関係と、前記ファイル間アーキテクチャ構成要素間依存関係構造情報内の参照元ファイル名及び参照先ファイル名に対応する構成要素名と、操作者の操作により入力される情報とに基づいて、当該構成要素名毎に前記参照関係を表現した現状アーキテクチャモデルを作成する手段、作成目標とするソフトウェアが満たすべき機能要件を定義した要件定義と、操作者の操作により入力される情報とに基づいて、目標アーキテクチャモデルを作成する手段、前記作成目標とするソフトウェアが搭載される製品系列における製品別開発計画を示す製品ロードマップと、操作者の操作により入力される情報とに基づいて、フィーチャモデルを作成する手段、前記目標アーキテクチャモデル、前記フィーチャモデル、及び操作者の操作により入力される情報に基づいて、前記現状アーキテクチャモデルを改善のために変更作業しながら編集することにより、前記作成目標とするソフトウェアに対応する現実アーキテクチャモデルを作成する手段、として機能させるためのソフトウェア資産再利用支援プログラムである。
【発明の効果】
【００１５】
以上説明したように本発明によれば、既存のソフトウェア資産を再利用しつつ新たにソフトウェアを開発する場合に、既存ソフトウェア資産の品質（使用性、保守性、移植性など）や再利用性を低下させている阻害要因を低減させ、品質（使用性、保守性、移植性など）や再利用性を改善できる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の各実施形態について図面を用いて説明する。  
（第１の実施形態）
図１は本発明の第１の実施形態に係るソフトウェア資産再利用支援プログラムが適用された計算機の構成を示す模式図である。この計算機１０は、補助記憶装置１１、主記憶装置１２、キーボード１３、マウス１４、中央演算装置１５及びディスプレイ装置１６を備えている。
【００１７】
ここで、補助記憶装置１１は、中央演算装置１５から読出／書込み可能な大容量記憶装置であり、例えばハードディスク装置であって、図２に示すように、ソースコードファイルscf、メタモデルmt10、モデル編集プログラム生成プログラムpro1、モデル編集プログラムpro2、シンボル定義・参照解析プログラムpro3、製品ロードマップrm1、現状アーキテクチャモデルmd1、現実アーキテクチャモデルmd3、フィーチャモデルmd4などが記憶される。なお、各実施形態中、添字proを含むプログラムの集合がソフトウェア資産再利用支援プログラムに該当する。係るソフトウェア資産再利用支援プログラムは、予めネットワーク又は記憶媒体から計算機１０にインストールされ、対応する機能を計算機１０に実現させる。また、ソフトウェア資産再利用支援プログラムのうち、モデル編集プログラム生成プログラムpro1を除くプログラムproをアーキテクチャモデル作成プログラムpro10とも呼ぶ。
【００１８】
ここで、ソースコードファイルscfは、既存の製品に用いられた複数の既存のソースコードファイルであり、再利用可能となっている。なお、ソースコードファイルscfはアセット（ソフトウェア資産）の一部である。
【００１９】
アセットとは、要件定義書、各種設計書、アーキテクチャモデル、フィーチャモデル、ソースコードなど開発に必要な全ての情報をいう。コンテキストによっては、この中で特に、（部品化された）ソースコードをアセットという場合もある。
【００２０】
メタモデルmt10とは、モデリングに使用され、モデルの要素や構成の枠組み、規則、制限を提供する情報であり、また、トレーサビリティを実現するための情報構造を規定している。トレーサビリティとは、要件・アーキテクチャ・設計・実装（ソースコード）などの関係を追跡可能な情報であり、これらのいずれかに変更が発生した場合に、他のどの要素に影響が及ぶかを判断でき、変更履歴を把握できるという利点がある。
【００２１】
アーキテクチャとは、ソフトウェアシステム全体としての構造・振る舞いなどを規定する情報である。
【００２２】
アーキテクチャモデルmd1,md3とは、アーキテクチャメタモデルに準拠して作成されたアーキテクチャについてのモデルである。
【００２３】
アーキテクチャメタモデルとは、アーキテクチャが満たすべきメタモデルであり、どのような観点でアーキテクチャモデルを記述すべきかが規定され、構造及び振る舞いといった要素により構成される。構造とは、抽象度の異なる階層的な関係を規定する情報である。振る舞いとは、構成要素間の動的な相互作用や状態の遷移を規定する情報である。
【００２４】
製品ロードマップrm1とは、ある特定の製品系列における製品別開発計画を示す情報であり、例えば、その製品系列の仕向け地（例、日本、アメリカ、ＥＵなど）、グレード（例、エントリーモデル、標準モデル、上位モデルなど）、将来に向けての機能拡張内容、などを体系的にまとめた情報である。
【００２５】
フィーチャモデルmd4とは、フィーチャメタモデルに準拠し、製品ロードマップrm1（場合により技術ロードマップも合わせて使用される）を元に、後述する図１５に示すように、製品系列の特徴的な差異をグラフ等により表現した情報であり、製品についての共通部、差異部について必須、選択、オプションなどの関係が記述される。
【００２６】
フィーチャメタモデルとは、フィーチャモデルmd4が満たすべきメタモデルであり、どのような観点でフィーチャモデルmd4を記述すべきかが規定される情報である。
【００２７】
モデル編集プログラム生成プログラムpro1は、メタモデルmt10を入力とし、メタモデルmt10で規定されている枠組み／規則／制限にそってモデルを作成・編集するための「モデル編集プログラムpro2」を生成する手段として計算機１０を機能させるためのプログラムである。場合によっては、この生成を行う過程で、モデルが満たすべき規定が追加される。なお、本明細書中、モデルの「作成」を「編集」と読み替えてもよく、モデルの「編集」を「作成」と読み替えてもよい。
【００２８】
モデル編集プログラムpro2は、モデル編集プログラム生成プログラムpro1を実行した中央演算装置１５により作成され、シンボル定義・参照解析プログラムpro3の実行により作成されたシンボル定義情報、シンボル参照情報及びソースコードファイルscfと、アーキテクチャモデルの構成要素名のうちの当該各ソースコードファイルscfのファイル名に対応する構成要素名と、操作者によるキーボード１３又はマウス１４の操作により入力された情報とに基づいて、現状アーキテクチャモデルmd1、フィーチャモデルmd4及び現実アーキテクチャモデルmd3を作成する手段として計算機を機能させるためのプログラムである。
【００２９】
シンボル定義・参照解析プログラムpro3は、補助記憶装置１１又は主記憶装置１２内の各ソースコードファイルscfに関して、所定のシンボルの定義を含むか否か及び当該シンボルを参照するか否かを解析する手段、として計算機１０を機能させるためのプログラムである。
【００３０】
具体的には、シンボル定義・参照解析プログラムpro3は、補助記憶装置１１又は主記憶装置１２内の各ソースコードファイルscfを検索し、予め定義されたシンボルを含むソースコードファイルのファイル名を有するシンボル定義情報を抽出する手段、当該記憶装置１１又は１２内の各ソースコードファイルscfを検索し、参照するシンボルを含むソースコードファイルのファイル名を有するシンボル参照情報を抽出する手段、として計算機１０を機能させるためのプログラムである。
【００３１】
但し、シンボル定義・参照解析プログラムpro3としては、補助記憶装置１１又は主記憶装置１２内の各ソースコードファイルscfを検索し、図３に示すように、予め定義されたシンボルを示す定義シンボル名及び行番号と、当該シンボルを含むソースコードファイルのファイル名とを有するシンボル定義情報を抽出する手段、当該記憶装置１１又は１２内の各ソースコードファイルscfを検索し、図４に示すように、参照するシンボルを示す参照シンボル名及び行番号と、当該シンボルを含むソースコードファイルのファイル名とを有するシンボル参照情報を抽出する手段、として計算機１０を機能させるためのプログラムとしてもよい。シンボルとは、マクロ、変数、関数、クラス、メソッドなどである。
【００３２】
補足すると、シンボル定義・参照解析プログラムpro3は、シンボルが定義されている箇所、参照している箇所を網羅的に抽出し、異なる粒度・抽象度で依存関係や複雑度の解析を行うためのものである。利点としては、解析時間が小さく、大局的にも局所的にも複雑性・依存関係を解析可能であり、最終的な管理対象であるファイルを解析対象とし、多重定義として可変部・共通部の候補を検出可能である。
【００３３】
現状アーキテクチャモデルmd1とは、各種設計書等を参照しながら、実際のソースコードを解析（リバース）して現状でのソフトウェアシステムの構造・振る舞いをアーキテクチャモデルとして表現したものである。
【００３４】
現実アーキテクチャモデルmd3とは、現状アーキテクチャmd1を改善のために変更作業しながら、後述する目標アーキテクチャmd2に近づけることを検討するが、その過程で各種の評価を行って実行可能なアーキテクチャを作成し、モデルとして表現したものである。
【００３５】
各種の評価としては、（ｉ）変更に必要とされるコストの予測値を算出し、予算内に収まるか否かを示す予算の評価、（ii）変更が技術的に実現可能か否かを示す実現性の評価、（iii）変更が納期・期限までに実行可能であるか否かを示す期限の評価、がある。
【００３６】
主記憶装置１２は、中央演算装置１５から読出／書込み可能な記憶装置であり、例えばＲＡＭである。
【００３７】
キーボード１３及びマウス１４は、通常の入力装置であり、例えば、操作者の操作により、データ又は命令からなる各種情報を中央演算装置１５に入力する機能をもっている。
【００３８】
中央演算装置１５は、通常のＣＰＵであり、例えば、補助記憶装置１１の記憶内容を主記憶装置１２に読み出して各プログラムを実行する機能と、キーボード１３又はマウス１４から入力される情報に基づいて各プログラムの実行を制御する機能と、実行結果等をディスプレイ装置１６に出力する機能とをもっている。
【００３９】
ディスプレイ装置１６は、通常の表示装置であり、例えば、編集中の各アーキテクチャモデルやフィーチャモデル等を表示して可視化し、他にも中央演算装置１５から出力された情報を表示する機能をもっている。
【００４０】
次に、以上のように構成されたソフトウェア資産再利用支援システムの動作を図５の模式図を用いて説明する。
【００４１】
計算機１０においては、操作者によるキーボード１３又はマウス１４の操作により、中央演算装置１５がモデル編集プログラム生成プログラムpro1を起動する。
【００４２】
中央演算装置１５は、補助記憶装置１１からモデル編集プログラム生成プログラムpro1の実行ファイルを読み出して主記憶装置１２に書き込むと、操作者によるキーボード１３又はマウス１４の操作により、主記憶装置１２上のモデル編集プログラム生成プログラムpro1を逐次実行する。
【００４３】
中央演算装置１５は、モデル編集プログラム生成プログラムpro1の実行中、操作者によるキーボード１３又はマウス１４の操作により、補助記憶装置１１内のメタモデルmt10に基づいてモデル編集プログラムpro2を生成し（ＳＴ１０）、このモデル編集プログラムpro2を補助記憶装置１１に格納する。
【００４４】
続いて、計算機１０においては、操作者によるキーボード１３又はマウス１４の操作により、中央演算装置１５がアーキテクチャ作成プログラムpro10を起動する。
【００４５】
中央演算装置１５は、補助記憶装置１１からアーキテクチャ作成プログラムpro10に含まれる各プログラムpro2,3の実行ファイルを読み出して主記憶装置１２に書き込んだ後、操作者によるキーボード１３又はマウス１４の操作により、主記憶装置１２上の実行ファイルを逐次実行する（ＳＴ２０〜ＳＴ３０）。
【００４６】
具体的には、中央演算装置１５は、操作者によるキーボード１３又はマウス１４の操作により、シンボル定義・参照解析プログラムpro3を実行し、開発者に指定された解析対象であるソースコードファイルscfを補助記憶装置１１から読み出して主記憶装置１２に書き込む。
【００４７】
続いて中央演算装置１５は、シンボル定義・参照解析プログラムpro3に基づき、ソースコードファイルscfに含まれるシンボルであるマクロ名、変数名、クラス名、関数名、が定義されている部位と、その定義を参照している部位を抽出し、シンボル定義情報抽出結果及びシンボル参照情報抽出結果を作成して主記憶装置１２に書き込む（ＳＴ２０）。
【００４８】
次に、中央演算装置１５は、操作者によるキーボード１３又はマウス１４の操作により、モデル編集プログラムpro2を実行する（ＳＴ３０）。
【００４９】
始めに中央演算装置１５は、モデル編集プログラムpro2の実行中、操作者によるキーボード１３又はマウス１４の操作により、主記憶装置１２内のソースコードファイルscf、シンボル定義情報抽出結果及びシンボル参照情報抽出結果に基づく現状アーキテクチャモデル編集処理を実行し（ＳＴ３１）、現状アーキテクチャモデルmd1を作成する。ここで、現状アーキテクチャモデル編集処理は、具体的には例えば、シンボル定義情報及びシンボル参照情報に示される各ソースコードファイルscf間の参照関係と、アーキテクチャモデルの構成要素名のうちの当該各ソースコードファイルscfのファイル名に対応する構成要素名と、操作者の操作により入力される情報とに基づいて、当該構成要素名毎に当該参照関係を表現した現状アーキテクチャモデルを作成する処理である。なお、「ソースコードファイル間の参照関係」の用語は、「ソースコードファイル間の階層関係及び振る舞い」を意味している。
【００５０】
中央演算装置１５は、操作者によるキーボード１３又はマウス１４の操作により、この現状アーキテクチャモデルmd1を補助記憶装置１１に格納する。
【００５１】
また、中央演算装置１５は、モデル編集プログラムpro2の実行中、操作者によるキーボード１３又はマウス１４の操作により、補助記憶装置１１から主記憶装置１２に読み出した製品ロードマップrm1をディスプレイ装置１６に表示させる。
【００５２】
中央演算装置１５は、モデル編集プログラムの実行中、操作者によるキーボード１３又はマウス１４の操作により入力される情報に基づいて、表示中の製品ロードマップrm1に基づくフィーチャモデル編集処理を実行し（ＳＴ３２）、フィーチャモデルmd4を作成する。フィーチャモデルmd4の作成は、表示中の製品ロードマップrm1に基づく場合に限らず、それぞれ紙面または電子ファイルである製品ロードマップrm1と技術ロードマップrm2のどちらか又は両方を参照しながら、実行することができる。
【００５３】
中央演算装置１５は、操作者によるキーボード１３又はマウス１４の操作により、このフィーチャモデルmd4を補助記憶装置１１に格納する。
【００５４】
しかる後、中央演算装置１５は、モデル編集プログラムpro2の実行中、操作者によるキーボード１３又はマウス１４の操作により、現状アーキテクチャモデルmd1及びフィーチャモデルmd4を補助記憶装置１１から主記憶装置１２に読み出した後、現状アーキテクチャモデルmd1及びフィーチャモデルmd4に基づく現実アーキテクチャモデル編集処理を実行し（ＳＴ３３）、現実アーキテクチャモデルmd3を作成する。また、中央演算装置１５は、操作者によるキーボード１３又はマウス１４の操作により、この現実アーキテクチャモデルmd3を補助記憶装置１１に格納する。
【００５５】
上述したように本実施形態によれば、既存のソフトウェア資産としての既存のソースコードファイルscfを再利用しつつ新たにソフトウェアを開発する場合に、操作者の操作により現実アーキテクチャモデルmd3を作成するので、ソフトウェアの品質（使用性、保守性、移植性など）や再利用性を改善することができる。
【００５６】
また、ステップＳＴ３３の現実アーキテクチャモデル編集処理において、操作者の操作により、可変性の実現方法を洗い出し、整理・統合できるので、可変性の実現方法の非統一を解消することができる。
【００５７】
同様に、ステップＳＴ３３の現実アーキテクチャモデル編集処理において、操作者の操作により、ヘッダファイルと実装ファイルとの依存関係を洗い出し、整理・統合できるので、クラス−ソースコードファイル関係の複雑化を解消することができる。
【００５８】
（第２の実施形態）
次に、本発明の第２の実施形態に係るソフトウェア資産再利用支援システムが適用された計算機について説明するが、前述した図面と同一又は類似した部分には同一符号を付してその詳しい説明を省略し、ここでは異なる部分について主に述べる。なお、以下の各実施形態も同様にして重複した説明を省略する。
【００５９】
第２の実施形態は、第１の実施形態の変形例であり、補助記憶装置１１が、図２に示した記憶内容に加え、図６に示すように、モデル検証プログラムpro4及び対応関係推定・推奨プログラムpro5を含むアーキテクチャモデル作成プログラムpro10と、制約条件記述ccdとを更に備えている。なお、計算機１０の構成は、図１に示した構成と同一であり、これは以下の各実施形態でも同様である。また、本実施形態は、モデル検証プログラムpro4及び対応関係推定・推奨プログラムpro5を備えた場合について述べるが、これに限らず、モデル検証プログラムpro4及び対応関係推定・推奨プログラムpro5のうちのいずれか一方を省略した構成に変形してもよい。この変形は、後述する第４及び第６の実施形態でも同様に実施できる。
【００６０】
モデル検証プログラムpro4は、各アーキテクチャモデルmd1,md3及びフィーチャモデルmd4の作成中、図７に示す如き制約条件記述ccdに基づいて、当該作成中のモデルが制約条件に違反していないことを検証し、制約条件に違反している場合には当該違反を示す情報を出力する手段、として計算機１０を機能させるためのプログラムである。
【００６１】
補足すると、モデル検証プログラムpro4は、制約条件記述ccdにより以下の制約例が満たされていることを確認するためのものである。
【００６２】
名称記述：アーキテクチャ構成要素には必ず名称が記述されていること。
【００６３】
循環参照：ファイル間、または、アーキテクチャ構成要素間で、参照関係がお互いを参照する（循環している）ことになってはいけない。
【００６４】
アーキテクチャ規約：階層構造（ハードウェア、ＯＳ、ハードウェア抽象化層、コンポーネントミドルウェア、コンポーネントフレームワークなど）やアーキテクチャパターンまたはデザインパターンにより規定された構造を違反しないこと。違反とは、階層構造を飛び越したＡＰＩ呼び出しを行うことや、アーキテクチャパターンまたはデザインパターンにより規定された関係とは異なるＡＰＩ呼び出しを行うことを指す。
【００６５】
これらの制約条件記述ccdはモデル検証処理３０ｂにより次の時点で適用される。
【００６６】
アーキテクチャモデル編集手段１０３が補助記憶装置１１からファイル間アーキテクチャ構成要素間依存関係構造１１１を読み出した時点。
【００６７】
開発者がキーボード３またはマウス７によりアーキテクチャモデル編集手段１０３を操作し、アーキテクチャモデルを変更した時点。
【００６８】
なお、制約条件記述ccdとしては、ＯＭＧ(The Object Management Group：オブジェクトマネージメントグループ、http://www.omg.org/)で標準化が行われているＯＣＬ(Object Constraint Language：オブジェクト制約言語、http://www.omg.org/technology/documents/formal/ocl.htm)などの技術を適用することが好ましい。
【００６９】
対応関係推定・推奨プログラムpro5は、現状アーキテクチャモデルmd1、又は、現実アーキテクチャモデルmd3、又はフィーチャモデルmd4、の作成中、操作者の操作により入力される情報に基づいて、参照先ファイル名と構成要素名との関係を変更又は新規に作成した場合、当該参照先ファイル名の参照シンボル数が一定値以上である、当該参照先ファイル名に対応する参照元ファイル名についても変更又は新規に関係付けられた構成要素名に当該関係を変更することを推奨する情報を出力する手段、として計算機１０を機能させるためのプログラムである。
【００７０】
補足すると、対応関係推定・推奨プログラムpro5は、ソースコードファイルとソースコードファイル間、ソースコードファイルとアーキテクチャ構成要素間、アーキテクチャ構成要素とアーキテクチャ構成要素間などの関係性を変更又は新規に作成する操作を操作者が行い、対応関係が変更又は新規に作成された場合、他の対応関係を推定及び推奨する手段として計算機１０を機能させるためのプログラムである。
【００７１】
次に、以上のように構成されたソフトウェア資産再利用支援システムの動作を図８の模式図を用いて説明する。
【００７２】
始めに、計算機１０は、前述同様に、ステップＳＴ１０〜ＳＴ３０を実行する。但し、アーキテクチャ作成プログラムpro10がモデル検証プログラムpro4及び対応関係推定・推奨プログラムpro5を含むので、ステップＳＴ３０のモデル編集プログラムpro2の実行中、モデル検証プログラムpro4及び対応関係推定・推奨プログラムpro5も実行される。
【００７３】
すなわち、ステップＳＴ３０内のステップＳＴ３１〜ＳＴ３３においては、制約条件記述ｃｃｄに基づくモデル検証処理が実行される（ＳＴ３０ａ）。また、ステップＳＴ３０内のステップＳＴ３３においては、対応関係推定・推奨処理が実行される（ＳＴ３０ｂ）。
【００７４】
具体的にはステップＳＴ３０ａにおいては、中央演算装置１５は、モデル検証プログラムpro4の実行により、ステップＳＴ３１，ＳＴ３２，ＳＴ３３にて編集中のモデルに対し、補助記憶装置１１から読み出した制約条件記述ccdに基づいて、当該モデルが制約条件に違反していないことを検証する。
【００７５】
また、ステップＳＴ３０ｂにおいては、中央演算装置１５は、対応関係推定・推奨プログラムpro5の実行により、ステップＳＴ３３にて編集中のモデルに対し、操作者によるキーボード１３及びマウス１４への操作をモニターし、ファイルとファイル間、ファイルとアーキテクチャ構成要素間、アーキテクチャ構成要素とアーキテクチャ構成要素間などの関係性を変更又は新規に作成した場合、例えば他のソースコードファイルについても対応関係を推定し、対応関係が強いと判定した場合には関係性の変更を推奨するメッセージ情報をディスプレイ装置１６に出力する。
【００７６】
例えば、中央演算装置１５は、操作者によるキーボード１３又はマウス１４の操作により、あるソールコードファイルscf1をアーキテクチャ構成要素E1に関連付けた場合、ソースコードファイルscf1を参照している別のソースコードファイルscf2の参照数が予め開発者が設定していた閾値（値=ｘｘ）以上であるか否かを判定する。
【００７７】
判定の結果、閾値以上である場合には、中央演算装置１５は、ソースコードファイルscf2もアーキテクチャ構成要素E1に関連が強いと判定し、ソースコードファイルscf2もアーキテクチャ構成要素E1に分類すべきではないかというメッセージ情報をディスプレイ装置１６に出力して開発者に通知する。この通知は、ポップアップウィンドウ等、適宜な形態で実施して構わない。
【００７８】
上述したように本実施形態によれば、第１の実施形態の効果に加え、モデル検証プログラムpro4の実行により、制約条件記述ccdに違反せず、品質（使用性、保守性、移植性など）の高い現実アーキテクチャモデルを作成することができる。
【００７９】
（第３の実施形態）
次に、本発明の第３の実施形態について説明する。  
第３の実施形態は、第１の実施形態の変形例であり、補助記憶装置１１が、図２に示した記憶内容に加え、図９に示すように、技術ロードマップrm2と、要件定義rdと、汎用ドメインノウハウkh1と、特定ドメインノウハウkh2と、目標アーキテクチャモデルmd2とを更に備えている。なお、目標アーキテクチャモデルmd2は、モデル編集プログラムpro2により作成されるものである。モデル編集プログラムpro2は、前述した手段に加え、要件定義rd、汎用ドメインノウハウkh1及び特定ドメインノウハウkh2に基づき、目標アーキテクチャモデルmd2を作成する手段として計算機１０を機能させるプログラムとなっている。
【００８０】
ここで、技術ロードマップrm2とは、ある特定の製品系列に関連する技術について、世の中での技術発展やイノベーションを予測し、体系的にまとめた情報である。技術ロードマップは、それら関連技術をいつどのように自社製品に取り込むかを検討するために使用される。フィーチャモデルmd4は、前述した製品ロードマップrm1に加え、この技術ロードマップrm2にも基づいて作成される。
【００８１】
要件定義rdとは、ソフトウェアシステムが保持すべき、満たすべき機能、及び非機能（品質など）についての定義、規定である。
【００８２】
品質とは、品質特性（ISO 9126/JIS X 0129）などにより規定されるソフトウェアシステムの特徴である。
【００８３】
目標アーキテクチャモデルmd2とは、各種設計書等を参照しながら、本来あるべきアーキテクチャを検討し、モデルとして表現した情報である。
【００８４】
目標アーキテクチャモデルmd2を作成する場合、操作者はモデル編集プログラムpro2を用いて、開発対象であるシステムとして、あるべき目標とするアーキテクチャの設計を行う。このとき開発者は、以下の（１）〜（４）のいずれか、または複数を組み合わせた方法により作業を行う。
【００８５】
（１）過去の開発経験に基づき、新規にアーキテクチャモデルの作成を行う。
【００８６】
（２）世の中で適用実績のあるアーキテクチャの構造がパターン化され整理されたモデルを出発点としてアーキテクチャモデルの作成を行う。このパターン化されたモデル（のカタログ）は汎用ドメインノウハウと言われる場合があり、その利用方法には以下の方法などがある。（汎用ドメインノウハウは、例えばカーナビゲーション以外というように制約が緩いノウハウである。）
（２−１）紙面に印刷されたものを開発者が必要に応じて閲覧する
（２−２）アーキテクチャメタモデルmt11にそって予めモデル化・電子化され、補助記憶装置１１に記録されたものを必要に応じて開発者がモデル編集プログラムpro2により参照し、モデル作成の参考、または土台として利用する。
【００８７】
（３）自社または自部門において蓄積してきた過去に適用実績のあるアーキテクチャ構造がパターン化されたモデル（のカタログ）があり、特定ドメインノウハウと言われる場合があり、その利用方法には同様に以下の方法などがある。
【００８８】
（３−１）紙面に印刷されたものを開発者が必要に応じて閲覧する。
【００８９】
（３−２）アーキテクチャメタモデルmt11にそって予めモデル化・電子化され、補助記憶装置１１に記録されたものを必要に応じて開発者がモデル編集プログラムpro2により参照し、モデル作成の参考、または土台として利用する。（特定ドメインノウハウは、例えばカーナビゲーション専用というように制約がきついノウハウである。）。
【００９０】
（４）開発対象のシステムとして実現すべき機能的、非機能的な要件を定義したものであり、その利用方法には同様に以下の方法などがある。
【００９１】
（４−１）紙面に印刷されたものを開発者が必要に応じて閲覧する。
【００９２】
（４−２）アーキテクチャメタモデルmt11にそって予めモデル化・電子化され、補助記憶装置１１に記録されたものを必要に応じて開発者がアーキテクチャモデル編集プログラムpro21により参照する。
【００９３】
いずれにしても、どのような要件を満たすのかを明確に表現するように、目標アーキテクチャモデルmd2を作成する。これにより要件に変更が発生した場合に、その変更の影響が目標アーキテクチャモデルmd2の何処におよぶのかを明確にすることができる。
【００９４】
次に、以上のように構成されたソフトウェア資産再利用支援システムの動作を図１０の模式図を用いて説明する。
【００９５】
始めに、計算機１０においては、前述同様に、モデル編集プログラム生成プログラムpro1を起動する。中央演算装置１５は、モデル編集プログラム生成プログラムpro1の実行中、操作者によるキーボード１３又はマウス１４の操作により、補助記憶装置１１内のアーキテクチャメタモデルmt11及びフィーチャメタモデルmt12に基づいてモデル編集プログラムpro2を生成し（ＳＴ１０）、このモデル編集プログラムpro2を補助記憶装置１１に格納する。なお、ここでは、前述したメタモデルmt10に代えて、アーキテクチャメタモデルmt11及びフィーチャメタモデルmt12に基づいて、モデル編集プログラムpro2を生成している。
【００９６】
続いて、計算機１０においては、操作者によるキーボード１３又はマウス１４の操作により、中央演算装置１５がアーキテクチャ作成プログラムpro10を起動する。
【００９７】
中央演算装置１５は、補助記憶装置１１からアーキテクチャ作成プログラムpro10に含まれる各プログラムpro2,3の実行ファイルを読み出して主記憶装置１２に書き込んだ後、操作者によるキーボード１３又はマウス１４の操作により、主記憶装置１２上の実行ファイルを逐次実行する（ＳＴ２０，ＳＴ４０）。
【００９８】
具体的には、中央演算装置１５は、前述した通り、ステップＳＴ２０を実行し、シンボル定義情報抽出結果及びシンボル参照情報抽出結果を作成して主記憶装置１２に書き込む（ＳＴ２０）。
【００９９】
次に、中央演算装置１５は、操作者によるキーボード１３又はマウス１４の操作により、モデル編集プログラムpro2を実行する（ＳＴ４０）。
【０１００】
始めに中央演算装置１５は、モデル編集プログラムpro2の実行中、操作者によるキーボード１３又はマウス１４の操作により、主記憶装置１２内のソースコードファイルscf、シンボル定義情報抽出結果及びシンボル参照情報抽出結果に基づく現状アーキテクチャモデル編集処理を実行し（ＳＴ４１）、現状アーキテクチャモデルmd1を作成する。
【０１０１】
中央演算装置１５は、操作者によるキーボード１３又はマウス１４の操作により、この現状アーキテクチャモデルmd1を補助記憶装置１１に格納する。
【０１０２】
続いて、中央演算装置１５は、モデル編集プログラムpro2の実行中、操作者によるキーボード１３又はマウス１４の操作により、補助記憶装置１１内の要件定義rd、汎用ドメインノウハウkh1及び特定ドメインノウハウkh2を主記憶装置１２に読み出す。また、中央演算装置１５は、操作者によるキーボード１３又はマウス１４の操作により、この要件定義rd、汎用ドメインノウハウkh1及び特定ドメインノウハウkh2に基づく目標アーキテクチャモデル編集処理を実行し（ＳＴ４２）、目標アーキテクチャモデルmd2を作成する。
【０１０３】
中央演算装置１５は、操作者によるキーボード１３又はマウス１４の操作により、この目標アーキテクチャモデルmd2を補助記憶装置１１に格納する。
【０１０４】
また、中央演算装置１５は、モデル編集プログラムpro2の実行中、操作者によるキーボード１３又はマウス１４の操作により、補助記憶装置１１から主記憶装置１２に読み出した製品ロードマップrm1及び技術ロードマップrm2をディスプレイ装置１６に表示させる。
【０１０５】
中央演算装置１５は、モデル編集プログラムの実行中、操作者によるキーボード１３又はマウス１４の操作に基づいて、表示中の製品ロードマップrm1及び技術ロードマップrm2に基づくフィーチャモデル編集処理を実行し（ＳＴ４３）、フィーチャモデルmd4を作成する。
【０１０６】
中央演算装置１５は、操作者によるキーボード１３又はマウス１４の操作により、このフィーチャモデルmd4を補助記憶装置１１に格納する。
【０１０７】
しかる後、中央演算装置１５は、モデル編集プログラムpro2の実行中、操作者によるキーボード１３又はマウス１４の操作により、現状アーキテクチャモデルmd1及びフィーチャモデルmd4を補助記憶装置１１から主記憶装置１２に読み出した後、現状アーキテクチャモデルmd1、目標アーキテクチャモデルmd2及びフィーチャモデルmd4に基づく現実アーキテクチャモデル編集処理を実行し（ＳＴ４４）、現実アーキテクチャモデルmd3を作成する。また、中央演算装置１５は、操作者によるキーボード１３又はマウス１４の操作により、この現実アーキテクチャモデルmd3を補助記憶装置１１に格納する。
【０１０８】
（具体例）
図１１乃至図１５は、ステップＳＴ４４で用いられた現状アーキテクチャモデル、目標アーキテクチャモデル、現状アーキテクチャとソースコードファイル間の関係（修正前）、現状アーキテクチャとソースコードファイル間の関係（修正後）、及びフィーチャモデルの一例を示す模式図である。この例では以下の違反（１）〜（３）が検出された。
【０１０９】
違反（１）は、アーキテクチャ規約違反であり、ハードウェア抽象化層を使わずにデバイスドライバに直結している。このアーキテクチャ規約違反は、性能問題発生時に、少しでも性能を稼ぐためにハードウェア抽象化層を使わず直接ハードウェア依存ＡＰＩ（デバイスドライバ）を使用したものであり、品質（使用性、保守性、移植性など）低下を招いている。
【０１１０】
違反（２）は、ＭＶＣモデル規約違反であり、ビュー（View：表示処理）とモデル（Model：モデル化された処理）は必ずコントローラ（Controller：制御処理）を経由して連携するところを直接ViewがModelのAPIを呼び出しているものであり、品質（使用性、保守性、移植性など）低下を招いている。
【０１１１】
違反（３）は、メディエータ（Mediator：調停者）デザインパターン違反であり、カリーグ（Colleague：同僚）がメディエータとのみ連携するところを、相互にAPI呼び出しを行っているものであり、品質（使用性、保守性、移植性など）低下を招いている。
【０１１２】
しかしながら、これらの違反（１）〜（３）は、操作者の操作により、ステップＳＴ４４において修正されている。
【０１１３】
上述したように本実施形態によれば、第１の実施形態の効果に加え、目標アーキテクチャモデルmd2を明確に定義し、目標アーキテクチャモデルmd2を逸脱したコードをアーキテクチャ規約違反として検出し、整理・統合等により修正するので、アーキテクチャ規約違反を無くすことができる。また、予め要件定義に基づいて目標アーキテクチャを作成するので、実現性を前倒し検証することができる。
【０１１４】
補足すると、本実施形態では、目標としてフィーチャモデル、目標アーキテクチャモデルを構築し、現状として既存ソースコードの複雑度を解析して依存関係を可視化した現状アーキテクチャモデルを構築し、目標と現状の突合せ・検証したので、ソースコードファイルの品質（使用性、保守性、移植性など）を高め、アセット化を支援することができる。なお、
（第４の実施形態）
次に、本発明の第４の実施形態について説明する。
【０１１５】
第４の実施形態は、第３の実施形態に第２の実施形態を組み合わせた例であり、補助記憶装置１１が、図９に示した記憶内容に加え、図１６に示すように、モデル検証プログラムpro4及び対応関係推定・推奨プログラムpro5を含むアーキテクチャモデル作成プログラムpro10と、制約条件記述ccdとを更に備えている。
【０１１６】
次に、以上のように構成されたソフトウェア資産再利用支援システムの動作を図１７の模式図を用いて説明する。
【０１１７】
始めに、計算機１０は、前述した第３の実施形態と同様に、ステップＳＴ１０，ＳＴ２０，ＳＴ４０を実行する。但し、アーキテクチャ作成プログラムpro10がモデル検証プログラムpro4及び対応関係推定・推奨プログラムpro5を含むので、ステップＳＴ４０のモデル編集プログラムpro2の実行中、モデル検証プログラムpro4及び対応関係推定・推奨プログラムpro5も実行される。
【０１１８】
すなわち、ステップＳＴ４０内のステップＳＴ４１，ＳＴ４２，ＳＴ４３，ＳＴ４４においては、制約条件記述ｃｃｄに基づくモデル検証処理が実行される（ＳＴ４１ａ，ＳＴ４２ａ，ＳＴ４３ａ，ＳＴ４４ａ）。また、ステップＳＴ４０内のステップＳＴ４１，ＳＴ４４においては、対応関係推定・推奨処理が実行される（ＳＴ４１ｂ，ＳＴ４４ｂ）。
【０１１９】
具体的にはステップＳＴ４１ａ〜ＳＴ４４ａにおいては、中央演算装置１５は、モデル検証プログラムpro4の実行により、ステップＳＴ４１〜ＳＴ４４にて編集中のモデルに対し、補助記憶装置１１から読み出した制約条件記述ccdに基づいて、当該モデルが制約条件に違反していないことを検証する。
【０１２０】
また、ステップＳＴ４１ｂ，ＳＴ４４ｂにおいては、中央演算装置１５は、対応関係推定・推奨プログラムpro5の実行により、ステップＳＴ４１，ＳＴ４４にて編集中のモデルに対し、操作者によるキーボード１３及びマウス１４への操作をモニターし、前述同様に、関係性を変更した場合であって、他のものについても対応関係が強いと判定した場合には関係性の変更を推奨するメッセージ情報をディスプレイ装置１６に出力する。
【０１２１】
上述したように本実施形態によれば、第３及び第２の実施形態の効果を同時に得ることができる。
【０１２２】
（第５の実施形態）
次に、本発明の第５の実施形態について説明する。  
第５の実施形態は、第３の実施形態の変形例であり、補助記憶装置１１が、図９に示した記憶内容に加え、図１８に示すように、アーキテクチャ構造ルールasr、ファイル間依存関係解析プログラムpro6、アーキテクチャ構造ルール適用プログラムpro7、アーキテクチャモデル編集プログラムpro21、フィーチャモデル編集プログラムpro22、を更に備えている。
【０１２３】
ここで、ファイル間依存関係解析プログラムpro6は、シンボル定義・参照解析プログラムpro3の実行により得られたシンボル定義情報及びシンボル参照情報に基づいて、図１９に示すように、シンボル定義情報内のファイル名である参照元ファイル名と、シンボル参照情報内のファイル名である参照先ファイル名とを含むファイル間依存関係解析情報を作成する手段、として計算機１０を機能させるためのプログラムである。
【０１２４】
但し、ファイル間依存関係解析プログラムpro6は、シンボル定義・参照解析プログラムpro3の実行により得られたシンボル定義情報及びシンボル参照情報に基づいて、図１９に示すように、シンボル定義情報内のファイル名である参照元ファイル名と、シンボル参照情報内のファイル名である参照先ファイル名と、シンボル参照情報内の同一参照シンボル名における行番号の個数に相当する参照シンボル数とを有するファイル間依存関係解析情報を作成する手段、として計算機１０を機能させるためのプログラムとしてもよい。
【０１２５】
アーキテクチャ構造ルール適用プログラムpro7は、図２０に示す如き、複数のソースコードファイル名に関連付けるファイル名パターン情報をアーキテクチャモデルの構成要素名に関連付けるアーキテクチャ構造ルールasrに基づいて、参照元ファイル名、参照先ファイル名、及びアーキテクチャモデルの構成要素名を含むファイル間アーキテクチャ構成要素間依存関係構造情報を作成する手段、として計算機１０を機能させるためのプログラムである。
【０１２６】
なお、アーキテクチャ構造ルール適用プログラムpro7は、前述したアーキテクチャ構造ルールasrに基づいて、ファイル間依存関係解析情報内の参照元ファイル名及び参照先ファイル名をそれぞれアーキテクチャモデルの構成要素名に関連付けし、当該関連付け（マッピング）した構成要素間にファイル間依存関係解析情報内の参照シンボル数を関連付けることにより、互いに関連付けられた参照元ファイル名、参照先ファイル名、アーキテクチャモデルの構成要素名及び参照シンボル数を含むファイル間アーキテクチャ構成要素間依存関係構造情報を作成する手段、として計算機１０を機能させるためのプログラムとしてもよい。
【０１２７】
補足すると、アーキテクチャ構造ルールasrは、アーキテクチャ構成要素名と、複数のソースコードファイル名のパターンとの関係を定義した情報であり、ソースコードファイルをアーキテクチャ構成要素にマッピングするときのマッピング適用ルールとして用いられる。各ソースコードファイル名のパターンは、正規表現などの文字列パターン表記により記述されている。
【０１２８】
アーキテクチャモデル編集プログラムpro21は、前述したモデル編集プログラムpro2のうち、アーキテクチャモデルmd1〜md3を編集するためのプログラムに対応する。
【０１２９】
具体的にはアーキテクチャモデル編集プログラムpro21は、ファイル間依存関係解析情報に示される各ソースコードファイル間の参照関係と、ファイル間アーキテクチャ構成要素間依存関係構造情報内の参照元ファイル名及び参照先ファイル名に対応する構成要素名と、操作者の操作により入力される情報とに基づいて、当該構成要素名毎に当該参照関係を表現した現状アーキテクチャモデルmd1を作成する手段、作成目標とするソフトウェアが満たすべき機能要件を定義した要件定義と、操作者の操作により入力される情報とに基づいて、目標アーキテクチャモデルmd2を作成する手段、目標アーキテクチャモデルmd2、フィーチャモデルmd4、及び操作者の操作により入力される情報に基づいて、現状アーキテクチャモデルmd1を改善のために変更作業しながら編集することにより、作成目標とするソフトウェアに対応する現実アーキテクチャモデルmd3を作成する手段、として計算機１０を機能させるためのプログラムである。
【０１３０】
フィーチャモデル編集プログラムpro22は、前述したモデル編集プログラムpro2のうち、フィーチャモデルmd4を編集するためのプログラムに対応する。
【０１３１】
具体的にはフィーチャモデル編集プログラムpro22は、作成目標とするソフトウェアが搭載される製品系列における製品別開発計画（例、仕向け地、グレード及び機能拡張内容）を示す製品ロードマップと、操作者の操作により入力される情報とに基づいて、フィーチャモデルmd4を作成する手段、として計算機１０を機能させるためのプログラムである。
【０１３２】
次に、以上のように構成されたソフトウェア資産再利用支援システムの動作を図２１の模式図を用いて説明する。
【０１３３】
始めに、計算機１０においては、前述同様に、モデル編集プログラム生成プログラムpro1を起動する。
【０１３４】
中央演算装置１５は、モデル編集プログラム生成プログラムpro1の実行中、操作者によるキーボード１３又はマウス１４の操作により、補助記憶装置１１内のアーキテクチャメタモデルmt11に基づいてアーキテクチャモデル編集プログラムpro21を生成し（ＳＴ１１）、このアーキテクチャモデル編集プログラムpro21を補助記憶装置１１に格納する。
【０１３５】
同様に、中央演算装置１５は、モデル編集プログラム生成プログラムpro1の実行中、操作者によるキーボード１３又はマウス１４の操作により、補助記憶装置１１内のフィーチャメタモデルmt12に基づいてフィーチャモデル編集プログラムpro22を生成し（ＳＴ１２）、このフィーチャモデル編集プログラムpro2を補助記憶装置１１に格納する。
【０１３６】
続いて、計算機１０においては、操作者によるキーボード１３又はマウス１４の操作により、中央演算装置１５がアーキテクチャ作成プログラムpro10を起動する。
【０１３７】
中央演算装置１５は、補助記憶装置１１からアーキテクチャ作成プログラムpro10に含まれる各プログラムpro2,pro3,pro6,pro7の実行ファイルを読み出して主記憶装置１２に書き込んだ後、操作者によるキーボード１３又はマウス１４の操作により、主記憶装置１２上の実行ファイルを逐次実行する（ＳＴ２０，ＳＴ４０’）。
【０１３８】
具体的には、中央演算装置１５は、前述した通り、ステップＳＴ２０を実行し、シンボル定義情報抽出結果及びシンボル参照情報抽出結果を作成して主記憶装置１２に書き込む（ＳＴ２０）。
【０１３９】
次に、中央演算装置１５は、ファイル間依存関係解析プログラムpro6の実行により、主記憶装置１２内のシンボル定義情報抽出結果及びシンボル参照情報抽出結果に基づくファイル間依存関係解析処理を実行し（ＳＴ２１）、得られたファイル間依存関係解析結果を主記憶装置１２に書き込む。
【０１４０】
また、中央演算装置１５は、アーキテクチャ構造ルール適用プログラムpro7の実行により、補助記憶装置１１から読み出したアーキテクチャ構造ルールasrを主記憶装置１２に書き込む。続いて、中央演算装置１５は、アーキテクチャ構造ルール適用プログラムpro7の実行により、主記憶装置１２内のファイル間依存関係解析結果に対し、主記憶装置１２内のアーキテクチャ構造ルールasrを適用してファイル間アーキテクチャ構成要素間依存関係構造情報を作成するアーキテクチャ構造ルール適用処理を実行し（ＳＴ２２）、得られたファイル間アーキテクチャ構成要素間依存関係構造情報を補助記憶装置１１に格納する。
【０１４１】
中央演算装置１５は、操作者によるキーボード１３又はマウス１４の操作により、アーキテクチャモデル編集プログラムpro21及びフィーチャモデル編集プログラムpro22を実行する（ＳＴ４０’〜ＳＴ４４’）。
【０１４２】
始めに中央演算装置１５は、アーキテクチャモデル編集プログラムpro21の実行中、操作者によるキーボード１３又はマウス１４の操作により、補助記憶装置１１から読み出したファイル間アーキテクチャ構成要素間依存関係構造情報を主記憶装置１２に書き込む。また、中央演算装置１５は、アーキテクチャモデル編集プログラムpro21の実行中、操作者によるキーボード１３又はマウス１４の操作により、主記憶装置１２内のファイル間アーキテクチャ構成要素間依存関係構造情報に基づく現状アーキテクチャモデル編集処理を実行し（ＳＴ４１’）、現状アーキテクチャモデルmd21を作成する。
【０１４３】
中央演算装置１５は、操作者によるキーボード１３又はマウス１４の操作により、この現状アーキテクチャモデルmd1を補助記憶装置１１に格納する。
【０１４４】
続いて、中央演算装置１５は、アーキテクチャモデル編集プログラムpro21の実行中、操作者によるキーボード１３又はマウス１４の操作により、補助記憶装置１１内の要件定義rd、汎用ドメインノウハウkh1及び特定ドメインノウハウkh2を主記憶装置１２に読み出す。また、中央演算装置１５は、操作者によるキーボード１３又はマウス１４の操作により、この要件定義rd、汎用ドメインノウハウkh1及び特定ドメインノウハウkh2に基づく目標アーキテクチャモデル編集処理を実行し（ＳＴ４２’）、目標アーキテクチャモデルmd2を作成する。
【０１４５】
中央演算装置１５は、操作者によるキーボード１３又はマウス１４の操作により、この目標アーキテクチャモデルmd2を補助記憶装置１１に格納する。
【０１４６】
また、中央演算装置１５は、フィーチャモデル編集プログラムpro22の実行中、操作者によるキーボード１３又はマウス１４の操作により、補助記憶装置１１から主記憶装置１２に読み出した製品ロードマップrm1及び技術ロードマップrm2をディスプレイ装置１６に表示させる。
【０１４７】
中央演算装置１５は、フィーチャモデル編集プログラムpro2の実行中、操作者によるキーボード１３又はマウス１４の操作に基づいて、表示中の製品ロードマップrm1及び技術ロードマップrm2に基づくフィーチャモデル編集処理を実行し（ＳＴ４３’）、フィーチャモデルmd4を作成する。
【０１４８】
中央演算装置１５は、操作者によるキーボード１３又はマウス１４の操作により、このフィーチャモデルmd4を補助記憶装置１１に格納する。
【０１４９】
しかる後、中央演算装置１５は、アーキテクチャモデル編集プログラムpro21の実行中、操作者によるキーボード１３又はマウス１４の操作により、現状アーキテクチャモデルmd1及びフィーチャモデルmd4を補助記憶装置１１から主記憶装置１２に読み出した後、現状アーキテクチャモデルmd1、目標アーキテクチャモデルmd2及びフィーチャモデルmd4に基づく現実アーキテクチャモデル編集処理を実行し（ＳＴ４４’）、現実アーキテクチャモデルmd3を作成する。また、中央演算装置１５は、操作者によるキーボード１３又はマウス１４の操作により、この現実アーキテクチャモデルmd3を補助記憶装置１１に格納する。
【０１５０】
上述したように本実施形態によれば、第３の実施形態の効果に加え、アーキテクチャ構造ルールasr、アーキテクチャモデル編集プログラムpro21、フィーチャモデル編集プログラムpro22、ファイル間依存関係解析プログラムpro6、アーキテクチャ構造ルール適用プログラムpro7を用いる構成により、操作者の操作の負荷を低減することができる。
【０１５１】
（第６の実施形態）
次に、本発明の第６の実施形態について説明する。
【０１５２】
第６の実施形態は、第５の実施形態に第２の実施形態を組み合わせた例であり、補助記憶装置１１が、図１８に示した記憶内容に加え、図２２に示すように、モデル検証プログラムpro4及び対応関係推定・推奨プログラムpro5を含むアーキテクチャモデル作成プログラムpro10と、制約条件記述ccdとを更に備えている。
【０１５３】
次に、以上のように構成されたソフトウェア資産再利用支援システムの動作を図２３の模式図を用いて説明する。
【０１５４】
始めに、計算機１０は、前述した第５の実施形態と同様に、ステップＳＴ１１，ＳＴ１２，ＳＴ２０，ＳＴ４０’〜ＳＴ４４’を実行する。但し、アーキテクチャ作成プログラムpro10がモデル検証プログラムpro4及び対応関係推定・推奨プログラムpro5を含むので、ステップＳＴ４０’〜ＳＴ４４’のモデル編集プログラムpro21, pro22の実行中、モデル検証プログラムpro4及び対応関係推定・推奨プログラムpro5も実行される。
【０１５５】
すなわち、ステップＳＴ４１’〜ＳＴ４４’においては、制約条件記述ｃｃｄに基づくモデル検証処理が実行される（ＳＴ４１’ａ〜ＳＴ４４’ａ）。また、ステップＳＴ４１’，ＳＴ４４’においては、対応関係推定・推奨処理が実行される（ＳＴ４１’ｂ，ＳＴ４４’ｂ）。
【０１５６】
具体的にはステップＳＴ４１’ａ〜ＳＴ４４’ａにおいては、中央演算装置１５は、モデル検証プログラムpro4の実行により、ステップＳＴ４１’〜ＳＴ４４’にて編集中のモデルに対し、補助記憶装置１１から読み出した制約条件記述ccdに基づいて、当該モデルが制約条件に違反していないことを検証する。
【０１５７】
また、ステップＳＴ４１’ｂ，ＳＴ４４’ｂにおいては、中央演算装置１５は、対応関係推定・推奨プログラムpro5の実行により、ステップＳＴ４１’，ＳＴ４４’にて編集中のモデルに対し、操作者によるキーボード１３及びマウス１４への操作をモニターし、前述同様に、関係性を変更又は新規に作成した場合であって、他のものについても対応関係が強いと判定した場合には関係性の変更を推奨するメッセージ情報をディスプレイ装置１６に出力する。
【０１５８】
上述したように本実施形態によれば、第５及び第２の実施形態の効果を同時に得ることができる。
【０１５９】
（第７の実施形態）
次に、本発明の第７の実施形態について説明する。  
第７の実施形態は、第１の実施形態の変形例であり、前述した図５とは異なり、図２４に示すように、前述したステップＳＴ３１を省略して現状アーキテクチャモデルmd1を作成せずに、ステップＳＴ３３’において、シンボル定義・参照解析プログラムpro3の実行による解析結果と、ステップＳＴ３２で得られたフィーチャモデルと、操作者の操作により入力された情報とに基づき、現実アーキテクチャモデルmd3を作成する構成となっている。
【０１６０】
すなわち、本実施形態のモデル編集プログラムpro2は、作成目標とするソフトウェアが搭載される製品系列における製品別開発計画を示す製品ロードマップrm1と、操作者の操作により入力される情報とに基づいて、フィーチャモデルmd4を作成する手段、図２５の左側に示すように、このフィーチャモデルmd4と、図２５の右側に示すように、シンボル定義・参照解析プログラムpro3の実行による解析結果として得られた各ソースコードファイル間の参照関係（シンボル定義情報及びシンボル参照情報）を用いて表記される既存ソフトウェア資産の構造と、操作者の操作により入力される情報とに基づいて、図２６及び図２７に示すように、ソースコードファイルscfを改善のために変更作業しながら編集すると共に、フィーチャモデルの構成要素毎に当該参照関係を表現した現実アーキテクチャモデルを作成する手段、として計算機１０を機能させるためのプログラムとなっている。
【０１６１】
これに伴い、補助記憶装置１１は、図２に示した記憶内容に比べ、作成されない現状アーキテクチャモデルmd1が省略されたものとなる。
【０１６２】
次に、以上のように構成されたソフトウェア資産再利用支援システムの動作を図２４の模式図を用いて説明する。
【０１６３】
始めに、計算機１０は、前述した通り、ステップＳＴ１０，ＳＴ２０を実行することにより、モデル編集プログラムpro2、シンボル定義情報抽出結果及びシンボル参照情報抽出結果を主記憶装置１２に格納する。
【０１６４】
続いて、中央演算装置１５は、操作者によるキーボード１３又はマウス１４の操作により、モデル編集プログラムpro2を実行する（ＳＴ３０’）。
【０１６５】
始めに中央演算装置１５は、モデル編集プログラムpro2の実行中、操作者によるキーボード１３又はマウス１４の操作により、補助記憶装置１１から主記憶装置１２に読み出した製品ロードマップrm1をディスプレイ装置１６に表示させる。
【０１６６】
中央演算装置１５は、モデル編集プログラムpro2の実行中、操作者によるキーボード１３又はマウス１４の操作に基づいて、表示中の製品ロードマップrm1に基づくフィーチャモデル編集処理を実行し（ＳＴ３２）、フィーチャモデルmd4を作成する。
【０１６７】
中央演算装置１５は、操作者によるキーボード１３又はマウス１４の操作により、このフィーチャモデルmd4を補助記憶装置１１に格納する。
【０１６８】
続いて、中央演算装置１５は、モデル編集プログラムpro2の実行中、操作者によるキーボード１３又はマウス１４の操作により、現実アーキテクチャモデル編集処理を実行し（ＳＴ３３’）、現実アーキテクチャモデルmd3を作成する。
【０１６９】
具体的には中央演算装置１５は、フィーチャモデルmd4を補助記憶装置１１から主記憶装置１２に読み出した後、このフィーチャモデルmd4をディスプレイ装置１６の一部に表示させる。
【０１７０】
これに加え、中央演算装置１５は、このフィーチャモデルmd4と、主記憶装置１２内のシンボル定義情報及びシンボル参照情報を用いて表記される既存ソフトウェア資産の構造をディスプレイ装置１６の残りの一部に表示させる。このとき、ディスプレイ装置１６においては、図２５に示すように、例えばフィーチャモデルmd4が画面の左半分に表示され、既存ソフトウェア資産の構造が画面の右半分に表示される。なお、フィーチャモデルmd4及び既存ソフトウェア資産の構造は、図２５の例に限らず、同一画面内のどの領域に表示してもよい。
【０１７１】
続いて、中央演算装置１５は、フィーチャモデルmd4及び既存ソフトウェア資産の構造の表示中、操作者の操作により入力される情報とに基づいて、既存ソフトウェア資産のソースコードファイルscfを改善のために変更作業しながら編集すると共に、アーキテクチャモデルの構成要素毎に当該参照関係を表現した現実アーキテクチャモデルmd3を作成する。
【０１７２】
このようなステップＳＴ３３’にて行う処理は、図２６に示すように、「フィーチャモデルmd4」のフィーチャと、「既存ソフトウェア資産」の機能との対応関係を明らかにし、以下の違反（Ａ）〜（Ｃ）を見つけ、図２７に示すように解決することである。
【０１７３】
［違反（Ａ）：循環参照違反］
図２６に示すように、既存のソースコードファイルscf間で相互に参照が行われているため、「選択」フィーチャに対応する実装であるソースコードファイルを不必要な場合でも切り離すことが出来ない。このため、図２６及び図２７に示すように、例えば、ソースコードファイル「F.cpp」が参照しているソースコードファイル「D.cpp」に含まれるシンボル（またはシンボルを含む機能ブロック。矛盾無く独立して動作するソフトウェア領域）をソースコードファイル「F.cpp」に移動させそれぞれ新たなソースコードファイル「D.cpp’」「F.cpp’」とする。この新たなソースコードファイル「F.cpp’」は、「選択」フィーチャに対応した切り離し可能なソフトウェア資産となり、再利用性が向上する。
【０１７４】
［違反(B)：飛び越し参照違反］
図２６及び図２７に示すように、既存のソースコードファイル「I.cpp」が参照している「C.cpp」に含まれるシンボル（またはシンボルを含む機能ブロック）をソースコードファイル「I.cpp」または「A.cpp」に移行し、新たなソースコードファイル「I.cpp’」又は「A.cpp’」とする。この新たなソースコードファイル「I.cpp’」又は「A.cpp’」は、「選択」フィーチャに対応した切り離し可能なソフトウェア資産となり、再利用性を向上することができる。
【０１７５】
［違反(C)：機能参照違反］
図２６及び図２７に示すように、フィーチャモデルmd4により「選択」として分析された機能間で参照関係があると、同様にソフトウェア部品としての独立性が損なわれるため、既存のソースコードファイル「C.cpp」が参照しているソースコードファイル「B.cpp」に含まれるシンボル（またはシンボルを含む機能ブロック）を別のソースコードファイル「C.cpp」に移行し、それぞれ新たなソースコードファイル「B.cpp’」「C.cpp’」とする。
【０１７６】
これらの作業は、ここでフィーチャと機能分類との対応で問題（矛盾）が発生しないことを確認しながら行う。
【０１７７】
現状では操作者が手動で、将来的には支援プログラムにより自動的に処理が行われる。以上の作業により得られる「図２７」の右半分に示す領域が「現実アーキテクチャモデル」である。
【０１７８】
以上のようなステップＳＴ３３’が完了した後、中央演算装置１５は、操作者によるキーボード１３又はマウス１４の操作により、この現実アーキテクチャモデルmd3を補助記憶装置１１に格納する。
【０１７９】
上述したように本実施形態によれば、シンボル定義・参照解析処理による解析結果と、フィーチャモデルmd4とに基づき、操作者の操作により現実アーキテクチャモデルmd3を作成するので、第１の実施形態の効果に加え、現状アーキテクチャモデルmd3の作成を省略することができる。
【０１８０】
また、本実施形態は、前述同様に、第２の実施形態を組み合わせることにより、モデル検証プログラムpro4及び対応関係推定・推奨プログラムpro5を含むアーキテクチャモデル作成プログラムpro10と、制約条件記述ccdとを更に備えたものに変形できる。この場合、ステップＳＴ３２、ＳＴ３３’においては、前述同様に、制約条件記述ｃｃｄに基づくモデル検証処理が実行されると共に、対応関係推定・推奨処理が実行される。従って、本実施形態の変形例によれば、前述した本実施形態の効果と、第２の実施形態の効果とを同時に得ることができる。
【０１８１】
なお、上記実施形態に記載した手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク（フロッピー（登録商標）ディスク、ハードディスクなど）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤなど）、光磁気ディスク（ＭＯ）、半導体メモリなどの記憶媒体に格納して頒布することもできる。
【０１８２】
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であっても良い。
【０１８３】
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているＯＳ（オペレーティングシステム）や、データベース管理ソフト、ネットワークソフト等のＭＷ（ミドルウェア）等が上記実施形態を実現するための各処理の一部を実行しても良い。
【０１８４】
さらに、本発明における記憶媒体は、コンピュータと独立した媒体に限らず、ＬＡＮやインターネット等により伝送されたプログラムをダウンロードして記憶または一時記憶した記憶媒体も含まれる。
【０１８５】
また、記憶媒体は１つに限らず、複数の媒体から上記実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であっても良い。
【０１８６】
尚、本発明におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき、上記実施形態における各処理を実行するものであって、パソコン等の１つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であっても良い。
【０１８７】
また、本発明におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の機能を実現することが可能な機器、装置を総称している。
【０１８８】
なお、本願発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組合せてもよい。
【図面の簡単な説明】
【０１８９】
【図１】本発明の第１の実施形態に係るソフトウェア資産再利用支援プログラムが適用された計算機の構成を示す模式図である。
【図２】同実施形態における補助記憶装置の記憶内容を示す模式図である。
【図３】同実施形態におけるシンボル定義情報を示す模式図である。
【図４】同実施形態におけるシンボル参照情報を示す模式図である。
【図５】同実施形態における動作を説明するための模式図である。
【図６】本発明の第２の実施形態に係る補助記憶装置の記憶内容を示す模式図である。
【図７】同実施形態における制約条件記述を示す模式図である。
【図８】同実施形態における動作を説明するための模式図である。
【図９】本発明の第３の実施形態に係る補助記憶装置の記憶内容を示す模式図である。
【図１０】同実施形態における動作を説明するための模式図である。
【図１１】同実施形態における現状アーキテクチャモデルの一例を示す模式図である。
【図１２】同実施形態における目標アーキテクチャモデルの一例を示す模式図である。
【図１３】同実施形態における現状アーキテクチャとソースコードファイル間の関係（修正前）の一例を示す模式図である。
【図１４】同実施形態における現状アーキテクチャとソースコードファイル間の関係（修正後）の一例を示す模式図である。
【図１５】同実施形態におけるフィーチャモデルの一例を示す模式図である。
【図１６】本発明の第４の実施形態に係る補助記憶装置の記憶内容を示す模式図である。
【図１７】同実施形態における動作を説明するための模式図である。
【図１８】本発明の第５の実施形態に係る補助記憶装置の記憶内容を示す模式図である。
【図１９】同実施形態におけるフィル間依存関係解析結果を示す模式図である。
【図２０】同実施形態におけるアーキテクチャ構造ルールを示す模式図である。
【図２１】同実施形態における動作を説明するための模式図である。
【図２２】本発明の第６の実施形態に係る補助記憶装置の記憶内容を示す模式図である。
【図２３】同実施形態における動作を説明するための模式図である。
【図２４】本発明の第７の実施形態における動作を説明するための模式図である。
【図２５】同実施形態におけるフィーチャモデル及び既存ソフトウェア資産の構造を示す模式図である。
【図２６】同実施形態における現実アーキテクチャモデル編集処理を説明するための模式図である。
【図２７】同実施形態におけるフィーチャモデル及び現実アーキテクチャモデルを説明するための模式図である。
【符号の説明】
【０１９０】
１０…計算機、１１…補助記憶装置、１２…主記憶装置、１３…キーボード、１４…マウス、１５…中央演算装置、１６…ディスプレイ装置、scf…ソースコードファイル、mt10…メタモデル、pro1…モデル編集プログラム生成プログラム、pro2…モデル編集プログラム、pro3…シンボル定義・参照解析プログラム、pro4…モデル検証プログラム、pro5…対応関係推定・推奨プログラム、pro6…ファイル間依存関係解析プログラム、pro7…アーキテクチャ構造ルール適用プログラム、pro10…アーキテクチャモデル作成プログラム、pro21…アーキテクチャモデル編集プログラム、pro22…フィーチャモデル編集プログラム、ccd…制約条件記述、rd…要件定義、rm1…製品ロードマップ、rm2…技術ロードマップ、kh1…汎用ドメインノウハウ、kh2…特定ドメインノウハウ、asr…アーキテクチャ構造ルール、md1…現状アーキテクチャモデル、md2…目標アーキテクチャモデル、md3…現実アーキテクチャモデル、md4…フィーチャモデル。
【図１】
0005085421.tif 000002
【図２】
0005085421.tif 000003
【図３】
0005085421.tif 000004
【図４】
0005085421.tif 000005
【図５】
0005085421.tif 000006
【図６】
0005085421.tif 000007
【図７】
0005085421.tif 000008
【図８】
0005085421.tif 000009
【図９】
0005085421.tif 000010
【図１０】
0005085421.tif 000011
【図１１】
0005085421.tif 000012
【図１２】
0005085421.tif 000013
【図１３】
0005085421.tif 000014
【図１４】
0005085421.tif 000015
【図１５】
0005085421.tif 000016
【図１６】
0005085421.tif 000017
【図１７】
0005085421.tif 000018
【図１８】
0005085421.tif 000019
【図１９】
0005085421.tif 000020
【図２０】
0005085421.tif 000021
【図２１】
0005085421.tif 000022
【図２２】
0005085421.tif 000023
【図２３】
0005085421.tif 000024
【図２４】
0005085421.tif 000025
【図２５】
0005085421.tif 000026
【図２６】
0005085421.tif 000027
【図２７】
0005085421.tif 000028