(57)【要約】【課題】ソフトウェア開発における開発成果物の要素間の関係を分析できるようにすることを目的とする。【解決手段】関係強度算出部１２０は、上流文書に含まれる上流文書要素と下流文書に含まれる下流文書要素との組毎に上流文書要素と下流文書要素との関係強度を示す文書関係データと、下流文書要素とソースコードに含まれるソースコード要素との組毎に下流文書要素とソースコード要素との関係強度を示す下流関係データとを用いて、上流文書要素とソースコード要素との組毎に上流文書要素とソースコード要素との関係強度を算出する。【選択図】図１
2018120465.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアの開発の上流工程で作成される上流文書に含まれる上流文書要素と前記ソフトウェアの開発の下流工程で作成される下流文書に含まれる下流文書要素との組毎に上流文書要素と下流文書要素との関係強度を示す文書関係データと、下流文書要素と前記ソフトウェアのソースコードに含まれるソースコード要素との組毎に下流文書要素とソースコード要素との関係強度を示す下流関係データとを用いて、上流文書要素とソースコード要素との組毎に上流文書要素とソースコード要素との関係強度を算出する関係強度算出部
を備える関係分析装置。
【請求項２】
前記関係強度算出部は、上流文書要素と下流文書要素との複数の組に対応する複数の関係強度が配列された文書関係行列を前記文書関係データを用いて生成し、下流文書要素とソースコード要素との複数の組に対応する複数の関係強度が配列された下流関係行列を前記下流関係データを用いて生成し、前記文書関係行列に前記下流関係行列を掛けることによって上流文書要素とソースコード要素との複数の組に対応する複数の関係強度が配列された上流関係行列を算出する
請求項１に記載の関係分析装置。
【請求項３】
前記関係強度算出部は、前記文書関係データと前記下流関係データとを用いて、上流要素同士の組毎に上流要素同士の関係強度を算出する
請求項１に記載の関係分析装置。
【請求項４】
前記関係強度算出部は、上流文書要素と下流文書要素との複数の組に対応する複数の関係強度が配列された文書関係行列を前記文書関係データを用いて生成し、下流文書要素とソースコード要素との複数の組に対応する複数の関係強度が配列された下流関係行列を前記下流関係データを用いて生成し、前記文書関係行列に前記下流関係行列を掛けることによって上流文書要素とソースコード要素との複数の組に対応する複数の関係強度が配列された上流関係行列を算出し、前記上流関係行列に前記下流関係行列の転置行列と前記文書関係行列の転置行列とを掛けることによって上流文書要素同士の複数の組に対応する複数の関係強度が配列された上流要素行列を算出する
請求項３に記載の関係分析装置。
【請求項５】
前記関係分析装置は、前記関係強度算出部によって算出された各々の関係強度を表示する表示部を備える
請求項１から請求項４のいずれか１項に記載の関係分析装置。
【請求項６】
前記関係分析装置は、
上流文書要素と下流文書要素とソースコード要素との組み合わせである対象組に含まれる要素間の影響の有無を示す影響有無データを受け付ける受付部と、
前記文書関係データに示される関係強度と前記下流関係データに示される関係強度とのうち前記対象組に対応する関係強度を、前記影響有無データに示される影響の有無に基づいて更新する関係強度更新部と
を備える請求項１から請求項５のいずれか１項に記載の関係分析装置。
【請求項７】
前記関係強度算出部は、前記文書関係データと、前記下流関係データと、ソースコード要素同士の組毎にソースコード要素同士の関係強度を示すソースコード関係データとを用いて、上流文書要素とソースコード要素との組毎に上流文書要素とソースコード要素との関係強度を算出する
請求項１に記載の関係分析装置。
【請求項８】
前記関係強度算出部は、上流文書要素と下流文書要素との複数の組に対応する複数の関係強度が配列された文書関係行列を前記文書関係データを用いて生成し、下流文書要素とソースコード要素との複数の組に対応する複数の関係強度が配列された下流関係行列を前記下流関係データを用いて生成し、ソースコード要素同士の複数の組に対応する複数の関係強度が配列されたソースコード関係行列を前記ソースコード関係データを用いて生成し、前記文書関係行列に前記下流関係行列を掛けることによって上流文書要素とソースコード要素との複数の組に対応する複数の関係強度が配列された第１上流関係行列を算出し、前記第１上流関係行列に前記ソースコード関係行列を掛けることによって上流文書要素とソースコード要素との複数の組に対応する複数の関係強度が配列された第２上流関係行列を算出する
請求項７に記載の関係分析装置。
【請求項９】
前記関係強度算出部は、前記文書関係データと、前記下流関係データと、ソースコード要素同士の組毎にソースコード要素同士の関係強度を示すソースコード関係データとを用いて、上流要素同士の組毎に上流要素同士の関係強度を算出する
請求項１に記載の関係分析装置。
【請求項１０】
前記関係強度算出部は、上流文書要素と下流文書要素との複数の組に対応する複数の関係強度が配列された文書関係行列を前記文書関係データを用いて生成し、下流文書要素とソースコード要素との複数の組に対応する複数の関係強度が配列された下流関係行列を前記下流関係データを用いて生成し、ソースコード要素同士の複数の組に対応する複数の関係強度が配列されたソースコード関係行列を前記ソースコード関係データを用いて生成し、前記文書関係行列に前記下流関係行列を掛けることによって上流文書要素とソースコード要素との複数の組に対応する複数の関係強度が配列された第１上流関係行列を算出し、前記第１上流関係行列に前記ソースコード関係行列を掛けることによって上流文書要素とソースコード要素との複数の組に対応する複数の関係強度が配列された第２上流関係行列を算出し、前記第２上流関係行列に前記下流関係行列の転置行列と前記文書関係行列の転置行列とを掛けることによって上流文書要素同士の複数の組に対応する複数の関係強度が配列された上流要素行列を算出する
請求項９に記載の関係分析装置。
【請求項１１】
前記関係分析装置は、前記関係強度算出部によって算出された各々の関係強度を表示する表示部を備える
請求項７から請求項１０のいずれか１項に記載の関係分析装置。
【請求項１２】
前記関係分析装置は、
上流文書要素と下流文書要素とソースコード要素との組み合わせである対象組に含まれる要素間の影響の有無を示す影響有無データを受け付ける受付部と、
前記文書関係データに示される関係強度と前記下流関係データに示される関係強度と前記ソースコード関係データに示される関係強度とのうち前記対象組に対応する関係強度を、前記影響有無データに示される影響の有無に基づいて更新する関係強度更新部と
を備える請求項７から請求項１１のいずれか１項に記載の関係分析装置。
【請求項１３】
ソフトウェアの開発の上流工程で作成される上流文書に含まれる上流文書要素と前記ソフトウェアの開発の下流工程で作成される下流文書に含まれる下流文書要素との組毎に上流文書要素と下流文書要素との関係強度を示す文書関係データと、下流文書要素と前記ソフトウェアのソースコードに含まれるソースコード要素との組毎に下流文書要素とソースコード要素との関係強度を示す下流関係データとを用いて、上流文書要素とソースコード要素との組毎に上流文書要素とソースコード要素との関係強度を算出する関係強度算出部
としてコンピュータを機能させるための関係分析プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア開発における開発成果物の要素間の関係を分析する技術に関するものである。
【背景技術】
【０００２】
ソフトウェアの流用開発において、上流設計工程の要件変更が、下流設計工程のソフトウェア機能仕様およびソースコードに影響を及ぼす。その影響範囲を可視化技術は、トレーサビリティ技術として広く知られている。
【０００３】
特許文献１は、複数工程における開発成果物間のトレーサビリティを取ることによって、上流文書の要件修正に伴う下流文書の影響範囲を可視化して修正箇所を特定する手段を開示している。
【０００４】
一方で、近年、ソフトウェア開発規模の増加と繰り返される流用開発に伴い、ソフトウェアアーキテクチャ崩れが問題となっている。そして、ソースコードの構成要素である関数同士が大域変数を介して間接的な強い依存関係を有するケースが増加している。
【０００５】
特許文献２は、ソースコードレベルにおける影響範囲分析技術を開示している。具体的には、特許文献２は、関数の修正によるソースコードの影響範囲と任意の重みづけによる影響度とに基づいて変更危険度を算出する手段を開示している。変更危険度は、修正によって副次的に引き起こされる可能性のある危険の度合いである。
【０００６】
特許文献３は、ソースコードレベルにおいて影響範囲の分析技術およびシステム構造の分析技術を開示している。具体的には、特許文献３は、ソースコードにおける関数間の依存関係を抽出し、重み情報と依存頻度とに基づいて依存強度を算出する手段を開示している。重み情報は依存の種類ごとの重要度である。
【０００７】
特許文献４は、ソースコードレベルの間接的な依存関係を考慮して修正範囲を特定する手段を開示している。特許文献４に開示されている手段は、複数工程における開発成果物間のトレーサビリティを確立した上で、ソースコード中の任意の関数が他の関数から呼び出される回数とソースコード中の大域変数が参照される回数とに基づいて、変更影響優先度を算出する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００８−００４０２９号公報
【特許文献２】特開２００３−０４４２７５号公報
【特許文献３】特開２０１２−２３０５３８号公報
【特許文献４】特開２０１６−１１０３３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
特許文献１では、特許文献２および特許文献３で開示されているソースコードレベルの間接的な依存関係が考慮されていない。そのため、特許文献１に開示されている手段では、関数間に複雑な依存関係が有る場合に修正範囲を正確に特定することが困難である。
【００１０】
特許文献２および特許文献３では、ソースコードレベルにおける影響範囲の分析のみを対象としている。そのため、特許文献２および特許文献３に開示されている手段では、関数の修正が上流文書の構成要素に与える間接的な影響を可視化することはできない。
【００１１】
特許文献４に開示されている手段では、要件変更によるソフトウェア全体への影響度が、開発成果物間の関連有無とソースコードレベルの変更影響度とに基づいて算出される。つまり、特許文献４では、複数工程における開発成果物間の関連強度が考慮されていなかった。開発成果物間の関連強度は、上流文書の要件を下流文書のソフトウェア機能仕様及びソースコードで実現するための寄与度と同義であり、ソースコードレベルの依存強度とは異なる。
【００１２】
本発明は、ソフトウェア開発における開発成果物の要素間の関係を分析できるようにすることを目的とする。
【課題を解決するための手段】
【００１３】
本発明の関係分析装置は、
ソフトウェアの開発の上流工程で作成される上流文書に含まれる上流文書要素と前記ソフトウェアの開発の下流工程で作成される下流文書に含まれる下流文書要素との組毎に上流文書要素と下流文書要素との関係強度を示す文書関係データと、下流文書要素と前記ソフトウェアのソースコードに含まれるソースコード要素との組毎に下流文書要素とソースコード要素との関係強度を示す下流関係データとを用いて、上流文書要素とソースコード要素との組毎に上流文書要素とソースコード要素との関係強度を算出する関係強度算出部を備える。
【発明の効果】
【００１４】
本発明によれば、上流文書要素とソースコード要素との関係強度、すなわち、ソフトウェア開発における開発成果物である上流文書とソースコードとの要素間の関係強度を算出することができる。つまり、ソフトウェア開発における開発成果物の要素間の関係を分析することが可能である。
【図面の簡単な説明】
【００１５】
【図１】実施の形態１における関係分析装置１００の構成図。
【図２】実施の形態１における関係分析方法のフローチャート。
【図３】実施の形態１における要素関係図。
【図４】実施の形態１における上流関係強度算出処理（Ｓ１３０）のフローチャート。
【図５】実施の形態１における文書関係行列Ｒ１に対応する表。
【図６】実施の形態１における下流関係行列Ｒ２に対応する表。
【図７】実施の形態１における上流関係行列Ｒ１Ｒ２に対応する表。
【図８】実施の形態１における上流要素強度算出処理（Ｓ１４０）のフローチャート。
【図９】実施の形態１における文書関係行列の転置行列Ｒ１Ｔに対応する表。
【図１０】実施の形態１における下流関係行列の転置行列Ｒ２Ｔに対応する表。
【図１１】実施の形態１における中間行列Ｒ１Ｒ２Ｒ２Ｔに対応する表。
【図１２】実施の形態１における上流要素行列Ｒ１Ｒ２Ｒ２ＴＲ１Ｔに対応する表。
【図１３】実施の形態２における関係分析装置１００の構成図。
【図１４】実施の形態２における関係強度の最適化のフローチャート。
【図１５】実施の形態２における最適化された要素関係図。
【図１６】実施の形態３における関係分析方法のフローチャート。
【図１７】実施の形態３における要素関係図。
【図１８】実施の形態３における上流関係強度算出処理（Ｓ３３０）のフローチャート。
【図１９】実施の形態３におけるソースコード関係行列Ｄに対応する表。
【図２０】実施の形態３における第３上流関係行列Ｒ１Ｒ２Ｄに対応する表。
【図２１】実施の形態３における上流要素強度算出処理（Ｓ３４０）のフローチャート。
【図２２】実施の形態３における中間行列Ｒ１Ｒ２ＤＲ２Ｔに対応する表。
【図２３】実施の形態３における上流要素行列Ｒ１Ｒ２ＤＲ２ＴＲ１Ｔに対応する表。
【図２４】実施の形態４における関係強度の最適化のフローチャート。
【図２５】実施の形態４における最適化された要素関係図。
【図２６】実施の形態における関係分析装置１００のハードウェア構成図。
【発明を実施するための形態】
【００１６】
実施の形態および図面において、同じ要素および対応する要素には同じ符号を付している。同じ符号が付された要素の説明は適宜に省略または簡略化する。図中の矢印はデータの流れ又は処理の流れを主に示している。
【００１７】
実施の形態１．
ソフトウェア開発における開発成果物の要素間の関係を分析する形態について、図１から図１２に基づいて説明する。
【００１８】
＊＊＊構成の説明＊＊＊
図１に基づいて、関係分析装置１００の構成を説明する。
関係分析装置１００は、プロセッサ９０１とメモリ９０２と補助記憶装置９０３と入出力インタフェース９０４といったハードウェアを備えるコンピュータである。これらのハードウェアは、信号線を介して互いに接続されている。
【００１９】
プロセッサ９０１は、演算処理を行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）であり、他のハードウェアを制御する。例えば、プロセッサ９０１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）、またはＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
メモリ９０２は揮発性の記憶装置である。メモリ９０２は、主記憶装置またはメインメモリとも呼ばれる。例えば、メモリ９０２はＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。メモリ９０２に記憶されたデータは必要に応じて補助記憶装置９０３に保存される。
補助記憶装置９０３は不揮発性の記憶装置である。例えば、補助記憶装置９０３は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、またはフラッシュメモリである。補助記憶装置９０３に記憶されたデータは必要に応じてメモリ９０２にロードされる。
【００２０】
入出力インタフェース９０４は入力装置および出力装置が接続されるポートである。例えば、入出力インタフェース９０４はＵＳＢ端子であり、入力装置はキーボードおよびマウスであり、出力装置はディスプレイである。ＵＳＢはＵｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓの略称である。
【００２１】
関係分析装置１００は、要素抽出部１１０と関係強度算出部１２０といったソフトウェア要素を備える。ソフトウェア要素はソフトウェアで実現される要素である。
【００２２】
補助記憶装置９０３には、要素抽出部１１０と関係強度算出部１２０としてコンピュータを機能させるための関係分析プログラムが記憶されている。関係分析プログラムは、メモリ９０２にロードされて、プロセッサ９０１によって実行される。
さらに、補助記憶装置９０３にはＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）が記憶されている。ＯＳの少なくとも一部は、メモリ９０２にロードされて、プロセッサ９０１によって実行される。
つまり、プロセッサ９０１は、ＯＳを実行しながら、関係分析プログラムを実行する。
関係分析プログラムを実行して得られるデータは、メモリ９０２、補助記憶装置９０３、プロセッサ９０１内のレジスタまたはプロセッサ９０１内のキャッシュメモリといった記憶装置に記憶される。
【００２３】
メモリ９０２はデータを記憶する記憶部１９１として機能する。但し、他の記憶装置が、メモリ９０２の代わりに、又は、メモリ９０２と共に、記憶部１９１として機能してもよい。
入出力インタフェース９０４は、入力を受け付ける受付部１９２として機能し、さらにディスプレイに画像を表示する表示部１９３として機能する。
【００２４】
関係分析装置１００は、プロセッサ９０１を代替する複数のプロセッサを備えてもよい。複数のプロセッサは、プロセッサ９０１の役割を分担する。
【００２５】
関係分析プログラムは、磁気ディスク、光ディスクまたはフラッシュメモリ等の不揮発性の記憶媒体にコンピュータ読み取り可能に記憶することができる。不揮発性の記憶媒体は、一時的でない有形の媒体である。
【００２６】
＊＊＊動作の説明＊＊＊
関係分析装置１００の動作は関係分析方法に相当する。また、関係分析方法の手順は関係分析プログラムの手順に相当する。
【００２７】
図２に基づいて、関係分析方法を説明する。
ステップＳ１１０において、要素抽出部１１０は、上流文書データから上流文書要素を抽出し、下流文書データから下流文書要素を抽出し、ソースコードからソースコード要素を抽出する。
上流文書データは、上流文書のデータであり、記憶部１９１に記憶されている。上流文書は、ソフトウェアの開発の上流工程で作成される文書である。
下流文書データは、下流文書のデータであり、記憶部１９１に記憶されている。下流文書は、ソフトウェアの開発の下流工程で作成される文書である。
ソースコードは、ソフトウェアの実行プログラムの元となるソースコードであり、記憶部１９１に記憶されている。実行プログラムは、コンピュータによって実行可能なプログラム、すなわち、実行形式のプログラムである。
上流文書、下流文書およびソースコードは、ソフトウェアの開発成果物である。
【００２８】
上流文書要素は、上流文書に含まれる要素である。例えば、上流文書要素は製品機能の名称である。製品機能は製品に搭載されるソフトウェアによって実現される機能である。
下流文書要素は、下流文書に含まれる要素である。例えば、下流文書要素はソフトウェア要件の名称および制御動作の名称である。ソフトウェア要件はソフトウェアに必要な条件であり、制御動作はソフトウェアによって実現される制御または動作である。
ソースコード要件は、ソースコードに含まれる要素である。例えば、ソースコード要素は関数の名称である。
上流文書要素、下流文書要素およびソースコード要素は、トレーサビリティの対象となる要素である。
【００２９】
具体的には、要素抽出部１１０は、上流文書データから単語を抽出し、抽出された単語の中から、予め決められたパターンまたはキーワードに一致する要素を抽出する。抽出される要素が上流文書要素である。
下流文書要素およびソースコード要素を抽出する方法は、上流文書要素を抽出する方法と同様である。
【００３０】
ステップＳ１２１において、受付部１９２は文書関係データを受け付け、記憶部１９１は受け付けられた文書関係データを記憶する。但し、文書関係データは記憶部１９１に予め記憶されていてもよい。
文書関係データは、上流文書要素と下流文書要素との組毎に上流文書要素と下流文書要素との関係強度を示すデータである。関係強度は関係の度合いを表す値である。
【００３１】
ステップＳ１２２において、受付部１９２は下流関係データを受け付け、記憶部１９１は受け付けられた下流関係データを記憶する。但し、下流関係データは記憶部１９１に予め記憶されていてもよい。
下流関係データは、下流文書要素とソースコード要素との組毎に下流文書要素とソースコード要素との関係強度を示すデータである。
【００３２】
ステップＳ１１０、ステップＳ１２１およびステップＳ１２２の具体例を説明する。
ステップＳ１１０において、３つの上流文書要素（Ｕ１〜Ｕ３）が抽出され、４つの下流文書要素（Ｌ１〜Ｌ４）が抽出され、５つのソースコード要素（Ｓ１〜Ｓ５）が抽出された。
ステップＳ１２１において、文書関係データは、要素Ｕ１と要素Ｌ１との関係強度（２）と、要素Ｕ１と要素Ｌ２との関係強度（２）と、要素Ｕ２と要素Ｌ１との関係強度（２）と、要素Ｕ２と要素Ｌ３との関係強度（１）と、要素Ｕ３と要素Ｌ４との関係強度（１）とを示す。
ステップＳ１２２において、下流関係データは、要素Ｌ１と要素Ｓ１との関係強度（Ｓ１）と、要素Ｌ２と要素Ｓ２との関係強度（２）と、要素Ｌ３と要素Ｓ３との関係強度（１）と、要素Ｌ３と要素Ｓ４との関係強度（１）と、要素Ｌ４と要素Ｓ５との関係強度（３）とを示す。
この場合、図３に示す要素関係図が得られる。図３において、要素関係図は、要素を示すノードと、関係がある要素同士を繋ぐエッジとを含んでいる。エッジに付された値は、要素同士の関係強度である。
以下、図３の要素関係図に示される要素関係を例にして説明を行う。
【００３３】
図２に戻り、ステップＳ１３０を説明する。
ステップＳ１３０において、関係強度算出部１２０は、文書関係データと下流関係データとを用いて、上流文書要素とソースコード要素との組毎に上流文書要素とソースコード要素との関係強度を算出する。
【００３４】
上流文書要素とソースコード要素との関係強度は、上流文書要素の変更がソースコード要素に与える影響の度合い、すなわち、変更影響度を意味する。
【００３５】
図４に基づいて、上流関係行列算出部（Ｓ１３０）の詳細を説明する。
ステップＳ１３１において、関係強度算出部１２０は、文書関係データを用いて文書関係行列を生成する。
文書関係行列は、上流文書要素と下流文書要素との複数の組に対応する複数の関係強度が配列された行列である。
【００３６】
図５に、文書関係行列Ｒ１に対応する表を示す。文書関係行列Ｒ１は、図３の要素関係図に基づく文書関係行列である。
上流文書要素が３つあり、下流文書要素が４つあるので、文書関係行列Ｒ１は３×４行列である。文書関係行列Ｒ１のＮ行Ｍ列の要素は、上流要素ＵＮと下流要素ＬＭとの関係強度である。
上流要素Ｕ１とそれぞれの下流要素（Ｌ１〜Ｌ４）との関係強度は、２、１、０および０である。
上流要素Ｕ２とそれぞれの下流要素（Ｌ１〜Ｌ４）との関係強度は、２、０、１および０である。
上流要素Ｕ３とそれぞれの下流要素（Ｌ１〜Ｌ４）との関係強度は、０、０、０および１である。
【００３７】
図４に戻り、ステップＳ１３２を説明する。
ステップＳ１３２において、関係強度算出部１２０は、下流関係データを用いて下流関係行列を生成する。
下流関係行列は、下流文書要素とソースコード要素との複数の組に対応する複数の関係強度が配列された行列である。
【００３８】
図６に、下流関係行列Ｒ２に対応する表を示す。下流関係行列Ｒ２は、図３の要素関係図に基づく下流関係行列である。
下流文書要素が４つあり、ソースコード要素が５つあるので、下流関係行列Ｒ２は４×５行列である。下流関係行列Ｒ２のＮ行Ｍ列の要素は、下流要素ＬＮとソースコード要素ＳＭとの関係強度である。
下流要素Ｌ１とそれぞれのソースコード要素（Ｓ１〜Ｓ５）との関係強度は、１、０、０、０および０である。
下流要素Ｌ２とそれぞれのソースコード要素（Ｓ１〜Ｓ５）との関係強度は、０、２、０、０および０である。
下流要素Ｌ３とそれぞれのソースコード要素（Ｓ１〜Ｓ５）との関係強度は、０、０、１、１および０である。
下流要素Ｌ４とそれぞれのソースコード要素（Ｓ１〜Ｓ５）との関係強度は、０、０、０、０および３である。
【００３９】
図４に戻り、ステップＳ１３３を説明する。
ステップＳ１３３において、関係強度算出部１２０は、文書関係行列に下流関係行列を掛ける。これにより、上流関係行列が算出される。
上流関係行列は、上流文書要素とソースコード要素との複数の組に対応する複数の関係強度が配列された行列である。
【００４０】
図７に、上流関係行列Ｒ１Ｒ２に対応する表を示す。上流関係行列Ｒ１Ｒ２は、文書関係行列Ｒ１（図５参照）に下流関係行列Ｒ２（図６参照）を掛けることによって算出される上流関係行列である。
文書関係行列Ｒ１が３×４行列であり、下流関係行列Ｒ２が４×５行列であるので、上流関係行列Ｒ１Ｒ２は３×５行列である。上流関係行列Ｒ１Ｒ２のＮ行Ｍ列の要素は、上流要素ＵＮとソースコード要素ＳＭとの関係強度である。
上流要素Ｕ１とそれぞれのソースコード要素（Ｓ１〜Ｓ５）との関係強度は、２、２、０、０および０である。
上流要素Ｕ２とそれぞれのソースコード要素（Ｓ１〜Ｓ５）との関係強度は、２、０、１、１および０である。
上流要素Ｕ３とそれぞれのソースコード要素（Ｓ１〜Ｓ５）との関係強度は、０、０、０、０および３である。
【００４１】
図２に戻り、ステップＳ１４０を説明する。
ステップＳ１４０において、関係強度算出部１２０は、上流要素同士の組毎に上流要素同士の関係強度を算出する。
【００４２】
上流要素同士の関係強度は、上流文書要素とソースコード要素との関係を逆に遡ることによって得られる。
上流要素同士の関係強度は、上流文書要素の変更が他の上流文書要素に与える影響の度合い、すなわち、影響度を意味する。
【００４３】
図８に基づいて、上流要素強度算出処理（Ｓ１４０）の詳細を説明する。
ステップＳ１４１において、関係強度算出部１２０は、文書関係行列の転置行列を生成する。文書関係行列は、ステップＳ１３１（図４参照）で生成された行列である。
図９に、文書関係行列Ｒ１（図５参照）の転置行列Ｒ１Ｔに対応する表を示す。
【００４４】
ステップＳ１４２において、関係強度算出部１２０は、下流関係行列の転置行列を生成する。下流関係行列は、ステップＳ１３２（図４参照）で生成された行列である。
図１０に、下流関係行列Ｒ２（図６参照）の転置行列Ｒ２Ｔに対応する表を示す。
【００４５】
ステップＳ１４３およびステップＳ１４４において、関係強度算出部１２０は、上流関係行列に下流関係行列の転置行列と文書関係行列の転置行列とを掛ける。これにより、上流要素行列が算出される。
上流要素行列は、上流文書要素同士の複数の組に対応する複数の関係強度が配列された行列である。
【００４６】
ステップＳ１４３において、関係強度算出部１２０は、上流関係行列に下流関係行列の転置行列を掛ける。算出される行列を中間行列という。上流関係行列は、ステップＳ１３３（図４参照）で算出された行列である。
図１１に、中間行列Ｒ１Ｒ２Ｒ２Ｔに対応する表を示す。中間行列Ｒ１Ｒ２Ｒ２Ｔは、上流関係行列Ｒ１Ｒ２（図７参照）に下流関係行列の転置行列Ｒ２Ｔ（図１０参照）を掛けることによって算出される中間行列である。
【００４７】
ステップＳ１４４において、関係強度算出部１２０は、中間行列に文書関係行列の転置行列を掛ける。算出される行列が上流要素行列である。
図１２に、上流要素行列Ｒ１Ｒ２Ｒ２ＴＲ１Ｔに対応する表を示す。上流要素行列Ｒ１Ｒ２Ｒ２ＴＲ１Ｔは、中間行列Ｒ１Ｒ２Ｒ２Ｔ（図１１参照）に文書関係行列の転置行列Ｒ１Ｔ（図９参照）を掛けることによって算出される上流要素行列である。
上流文書要素が３つあるので、上流要素行列Ｒ１Ｒ２Ｒ２ＴＲ１Ｔは３×３行列である。上流要素行列Ｒ１Ｒ２Ｒ２ＴＲ１ＴのＮ行Ｍ列の要素は、上流要素ＵＮと上流要素ＵＭとの関係強度である。
上流文書要素Ｕ１とそれぞれの上流文書要素（Ｕ１〜Ｕ３）との関係強度は、８、４および０である。
上流文書要素Ｕ２とそれぞれの上流文書要素（Ｕ１〜Ｕ３）との関係強度は、４、６および０である。
上流文書要素Ｕ３とそれぞれの上流文書要素（Ｕ１〜Ｕ３）との関係強度は、０、０および９である。
【００４８】
図２に戻り、ステップＳ１５０を説明する。
ステップＳ１５０において、表示部１９３は、関係強度算出部１２０によって算出された各々の関係強度をディスプレイに表示する
具体的には、表示部１９３は、ステップＳ１３０で算出された関係強度とステップＳ１４０で算出された関係強度との少なくともいずれかを表示する。
例えば、表示部１９３は、上流関係行列Ｒ１Ｒ２に対応する表（図７参照）と上流要素行列Ｒ１Ｒ２Ｒ２ＴＲ１Ｔに対応する表（図１２参照）との少なくともいずれかを表示する。
【００４９】
＊＊＊実施の形態１の効果＊＊＊
要件の変更がソフトウェア全体に及ぼす影響範囲および影響度を可視化することができる。これにより、ソフトウェア開発における成果物である上流文書及び下流文書及びソースコードのトレーサビリティを確保することが可能となる。
【００５０】
要件の変更に伴う下流文書及びソースコードの修正範囲を特定することが可能となり、影響が特に大きい箇所を把握できる。そのため、設計工程及び実装工程の効率化が期待できる。
要件の変更に伴う下流文書及びソースコードの修正範囲を特定することが可能となり、下流の設計工程とソースコードの実装工程との見積もり精度の向上が期待できる。
要件の変更に伴う下流文書及びソースコードの修正範囲を特定して修正の抜け及び修正の漏れを防止することが可能となり、品質の向上が期待できる。
変更された要件が他の仕様に及ぼす影響を定量的に把握できる。そのため、回帰試験の範囲を特定して、また、優先順を各試験に付与して、試験の抜け及び試験の漏れを防止することが可能となり、品質の向上が期待できる。
変更された要件が他の仕様に及ぼす影響の度合いを把握できる。そのため、回帰試験の範囲を特定して過剰な試験を排除することが可能となり、試験の効率化が見込まれる。
回帰試験の可視化による過剰な試験の排除及び試験漏れの抑止が期待できる。
影響度は定量的な数値で算出される。そのため、設計変更または試験計画の際に、影響度は、優先順の決定および対象範囲を決めるための閾値の決定に用いることが可能である。
【００５１】
＊＊＊他の構成＊＊＊
上流文書要素および下流文書要素は、それぞれの要素であることを表すシンボルを文書内に埋め込んで管理されてもよいし、一覧表によって文書とは別に管理されてもよい。
【００５２】
ソフトウェア開発の設計工程は、２工程ではなく、３工程以上または１工程であってもよい。
設計工程が３工程である場合、例えば、最初の工程が上流工程となり、後の２工程が下流工程となる。連続する２工程において、先の工程が上流工程であり、後の工程が下流工程である。この場合、上流工程の文書と先の下流工程の文書との文書関係データと、先の下流工程の文書と後の下流工程の文書との文書関係データと、後の下流工程と文書とソースコードとの下流関係データとが用いられる。
設計工程が１工程である場合、設計工程の文書とソースコードとの関係データが用いられる。
【００５３】
要素間の関係強度を決めるための定量的な重み付けが困難な場合、関連強度は関連有り（１）または関連無し（０）で表してもよい。
【００５４】
実施の形態２．
文書関係データと下流関係データとを最適化する形態について、主に実施の形態１と異なる点を図１３から図１５に基づいて説明する。
【００５５】
＊＊＊構成の説明＊＊＊
図１３に基づいて、関係分析装置１００の構成を説明する。
関係分析装置１００は、要素抽出部１１０と関係強度算出部１２０との他に、関係強度更新部１３０をソフトウェア要素として備える。
関係分析装置１００は、要素抽出部１１０と関係強度算出部１２０と関係強度更新部１３０としてコンピュータを機能させるためのプログラムである。
【００５６】
＊＊＊動作の説明＊＊＊
図１４に基づいて、関係強度の最適化を説明する。
ステップＳ２１０において、受付部１９２は、影響有無データを受け付ける。
影響有無データは、対象組毎に対象組に含まれる要素間の影響の有無を示すデータである。
対象組は、上流文書要素と下流文書要素とソースコード要素との組み合わせである。
要素間の影響とは、一つの要素が変更された場合に他の要素に及ぶ影響である。
【００５７】
影響有無データに示される影響の有無は、開発者によって判断された影響の有無である。例えば、開発者は、設計文書（上流文書、下流文書）およびソースコードを確認することによって、実際の影響の有無を判断する。
【００５８】
ステップＳ２２０以降の処理において、関係強度更新部１３０は、文書関係データに示される関係強度と下流関係データに示される関係強度とのうち対象組に対応する関係強度を、影響有無データに示される影響の有無に基づいて更新する。
【００５９】
ステップＳ２２０において、関係強度更新部１３０は、影響有無データから未選択の対象組を１つ選択する。
ステップＳ２３０からステップＳ２４２までの処理の説明において、対象組は、ステップＳ２２０で選択された対象組を意味する。
【００６０】
ステップＳ２３０において、関係強度更新部１３０は、文書関係データと下流関係データとを用いて、対象組に対応する関係組を特定する。
関係組は、上流文書要素と下流文書要素との組と下流文書要素とソースコード要素との組とのうち、要素間の関係が有る組である。
【００６１】
具体的には、関係強度更新部１３０は、対象組に対応する関係組を以下のように特定する。
まず、関係強度更新部１３０は、文書関係データと下流関係データとを用いて、要素関係データを生成する。要素関係データは、上流文書要素と下流文書要素とソースコード要素との関係を示すデータである。例えば、関係強度更新部１３０は、要素関係データとして、図３に示すような要素関係図を表すデータを生成する。
次に、関係強度更新部１３０は、要素関係データを用いて、対象組に含まれる全ての要素を通る対象経路を要素関係図から抽出する。
そして、関係強度更新部１３０は、上流文書要素と下流文書要素との組と下流文書要素とソースコード要素との組とを対象経路から抽出する。抽出される組が対象組に対応する関係組である。
対象組が（Ｌ１、Ｓ１）である場合、図３の要素関係図における対象経路は、「Ｕ１→Ｌ１→Ｓ１」と「Ｕ２→Ｌ１→Ｓ１」との２つである。この場合、対象組に対応する関係組は、（Ｕ１、Ｌ１）と（Ｕ２、Ｌ１）と（Ｌ１、Ｓ１）との３組である。
【００６２】
ステップＳ２４０において、関係強度更新部１３０は、対象組の影響の有無を影響有無データから取得する。
対象組において影響が有る場合、処理はステップＳ２４１に進む。
対象組において影響が無い場合、処理はステップＳ２４２に進む。
【００６３】
ステップＳ２４１およびステップＳ２４２の説明において、関係組は、ステップＳ２３０で特定された関係組を意味する。
【００６４】
ステップＳ２４１において、関係強度更新部１３０は、関係組毎に関係組の関係強度を文書関係データまたは下流関係データから選択する。
そして、関係強度更新部１３０は、選択された関係強度を増加させる。
【００６５】
ステップＳ２４２において、関係強度更新部１３０は、関係組毎に関係組の関係強度を文書関係データまたは下流関係データから選択する。
そして、関係強度更新部１３０は、選択された関係強度を減少させる。
【００６６】
ステップＳ２５０において、関係強度更新部１３０は、未選択の対象組が有るか判定する。
未選択の対象組が有る場合、処理はステップＳ２２０に進む。
未選択の対象組が無い場合、関係強度の最適化は終了する。
【００６７】
図１５に、更新後の文書関係データと更新後の下流関係データとに基づく要素関係図を示す。
対象組が（Ｌ１、Ｓ１）である場合、図３の要素関係図において対象組に対応する関係組は、（Ｕ１、Ｌ１）と（Ｕ２、Ｌ１）と（Ｌ１、Ｓ１）との３組である。
対象組において影響が有る場合、対象組に対応する関係組の関係強度が増加される。例えば、関係強度が２倍になる。
その結果、図１５に示す要素関係図が得られる。
【００６８】
＊＊＊実施の形態２の効果＊＊＊
開発者によって判断された影響の有無、すなわち、実際の影響の有無のフィードバックにより、要素間の関係強度を最適化することが可能となる。その結果、より高精度な影響度分析が可能となる。
初期の関係強度が適切な値でなくても、関係強度が徐々に最適化されるため、徐々に適切な影響度を算出することが可能となる。
【００６９】
＊＊＊他の構成＊＊＊
影響の有無は、影響有り（１）と影響無し（２）との２値で示してもよいし、影響の度合いの大きさを表す値で示してもよい。
関係強度を増減する方法は任意である。例えば、関係強度は、１＋αに増加させ、または、１−αに減少させてもよい。αは０以上１以下の定数である。また、関係強度は、一般的な学習アルゴリズムを用いて増減させてもよい。
【００７０】
実施の形態３．
ソースコード要素同士の関係を考慮した形態について、主に実施の形態１と異なる点を図１６から図２３に基づいて説明する。
【００７１】
＊＊＊構成の説明＊＊＊
関係分析装置１００の構成は、実施の形態１で説明した構成（図１参照）と同じである。
【００７２】
＊＊＊動作の説明＊＊＊
図１６に基づいて、関係分析方法を説明する。
ステップＳ３１０からステップＳ３２２までの処理は、実施の形態１（図２参照）におけるステップＳ１１０からステップＳ１２２までの処理と同じである。
【００７３】
ステップＳ３２３において、受付部１９２はソースコード関係データを受け付け、記憶部１９１は受け付けられたソースコード関係データを記憶する。但し、ソースコード関係データは記憶部１９１に予め記憶されてもよい。
ソースコード関係データは、ソースコード要素同士の組毎にソースコード要素同士の関係強度を示すデータである。
【００７４】
ソースコードに対する静的解析および動的解析を行うことによって、ソースコード要素同士の関係強度、すなわち、ソースコード要素同士の依存関係の度合いを得ることが可能である。
具体的な関係強度は、関数の呼び出し回数または共通の共有変数へのアクセスの数である。但し、関係強度は、他の依存関係に関する値であってもよい。
依存関係は、双方向の関係と単方向の関係とのいずれであってもよい。さらに、間接的な関係を依存関係に含めるのが好ましい。
【００７５】
ステップＳ３１０およびステップＳ３２１からステップＳ３２３の具体例を説明する。
ステップＳ３１０において、３つの上流文書要素（Ｕ１〜Ｕ３）が抽出され、４つの下流文書要素（Ｌ１〜Ｌ４）が抽出され、５つのソースコード要素（Ｓ１〜Ｓ５）が抽出された。
ステップＳ３２１において、文書関係データは、要素Ｕ１と要素Ｌ１との関係強度（２）と、要素Ｕ１と要素Ｌ２との関係強度（２）と、要素Ｕ２と要素Ｌ１との関係強度（２）と、要素Ｕ２と要素Ｌ３との関係強度（１）と、要素Ｕ３と要素Ｌ４との関係強度（１）とを示す。
ステップＳ３２２において、下流関係データは、要素Ｌ１と要素Ｓ１との関係強度（Ｓ１）と、要素Ｌ２と要素Ｓ２との関係強度（２）と、要素Ｌ３と要素Ｓ３との関係強度（１）と、要素Ｌ３と要素Ｓ４との関係強度（１）と、要素Ｌ４と要素Ｓ５との関係強度（３）とを示す。
ステップＳ３２３において、ソースコード関係データは、要素Ｓ１と要素Ｓ４との関係強度（１）と、要素Ｓ１と要素Ｓ５との関係強度（１）と、要素Ｓ２と要素Ｓ３との関係強度（３）とを示す。
この場合、図１７に示す要素関係図が得られる。以下、図１７の要素関係図に示される要素関係を例にして説明を行う。
【００７６】
図１６に戻り、ステップＳ３３０を説明する。
ステップＳ３３０において、関係強度算出部１２０は、文書関係データと下流関係データとソースコード関係データとを用いて、上流文書要素とソースコード要素との組毎に上流文書要素とソースコード要素との関係強度を算出する。
【００７７】
図１８に基づいて、上流関係行列算出部（Ｓ３３０）の詳細を説明する。
ステップＳ３３１およびステップＳ３３２は、実施の形態１（図４参照）におけるステップＳ１３１およびステップＳ１３２と同じである。
【００７８】
ステップＳ３３３において、関係強度算出部１２０は、ソースコード関係データを用いてソースコード関係行列を生成する。
ソースコード関係行列は、ソースコード要素同士の複数の組に対応する複数の関係強度が配列された行列である。
【００７９】
図１９に、ソースコード関係行列Ｄに対応する表を示す。ソースコード関係行列Ｄは、図１７の要素関係図に基づくソースコード関係行列である。
ソースコード要素が５つあるので、ソースコード関係行列Ｄは５×５行列である。ソースコード関係行列ＤのＮ行Ｍ列の要素は、ソースコード要素ＳＮとソースコード要素ＳＭとの関係強度である。
ソースコード要素Ｓ１とそれぞれのソースコード要素（Ｓ１〜Ｓ５）との関係強度は０、０、０、１および１である。
ソースコード要素Ｓ２とそれぞれのソースコード要素（Ｓ１〜Ｓ５）との関係強度は０、０、３、０および０である。
ソースコード要素Ｓ３とそれぞれのソースコード要素（Ｓ１〜Ｓ５）との関係強度は全て０である。
ソースコード要素Ｓ４とそれぞれのソースコード要素（Ｓ１〜Ｓ５）との関係強度は全ての０である。
ソースコード要素Ｓ５とそれぞれのソースコード要素（Ｓ１〜Ｓ５）との関係強度は全て０である。
【００８０】
図１８に戻り、ステップＳ３３４から説明を続ける。
ステップＳ３３４は、実施の形態１におけるステップＳ１３３（図４参照）に相当する。
ステップＳ３３４において、関係強度算出部１２０は、文書関係行列に下流関係行列を掛ける。これにより、第１上流関係行列が算出される。
第１上流関係行列は、上流文書要素とソースコード要素との複数の組に対応する複数の関係強度が配列された行列である。
【００８１】
ステップＳ３３５において、関係強度算出部１２０は、第１上流関係行列にソースコード関係行列を掛ける。これにより、第２上流関係行列が算出される。
第２上流関係行列は、上流文書要素とソースコード要素との複数の組に対応する複数の関係強度が配列された行列である。
【００８２】
図２０に、第２上流関係行列Ｒ１Ｒ２Ｄに対応する表を示す。第２上流関係行列Ｒ１Ｒ２Ｄは、第１上流関係行列Ｒ１Ｒ２（図７参照）にソースコード関係行列Ｄ（図１９参照）を掛けることによって算出される第２上流関係行列である。
第１上流関係行列Ｒ１が３×５行列であり、ソースコード関係行列Ｄが５×５行列であるので、第２上流関係行列Ｒ１Ｒ２Ｄは３×５行列である。第２上流関係行列Ｒ１Ｒ２ＤのＮ行Ｍ列の要素は、上流要素ＵＮとソースコード要素ＳＭとの関係強度である。
上流要素Ｕ１とそれぞれのソースコード要素（Ｓ１〜Ｓ５）との関係強度は、０、０、６、２および２である。
上流要素Ｕ２とそれぞれのソースコード要素（Ｓ１〜Ｓ５）との関係強度は、０、０、０、２および２である。
上流要素Ｕ３とそれぞれのソースコード要素（Ｓ１〜Ｓ５）との関係強度は、全ての０である。
【００８３】
図１６に戻り、ステップＳ３４０を説明する。
ステップＳ３４０において、関係強度算出部１２０は、上流要素同士の組毎に上流要素同士の関係強度を算出する。
【００８４】
図２１に基づいて、上流要素強度算出処理（Ｓ３４０）の詳細を説明する。
ステップＳ３４１およびステップＳ３４２は、実施の形態１（図８参照）におけるステップＳ１３１およびステップＳ１３２と同じである。
【００８５】
ステップＳ３４３およびステップＳ３４４において、関係強度算出部１２０は、第２上流関係行列に下流関係行列の転置行列と文書関係行列の転置行列とを掛ける。これにより、上流要素行列が算出される。
上流要素行列は、上流文書要素同士の複数の組に対応する複数の関係強度が配列された行列である。
【００８６】
ステップＳ３４３は、実施の形態１におけるステップＳ１４３（図８参照）に相当する。
ステップＳ３４３において、関係強度算出部１２０は、第２上流関係行列に下流関係行列の転置行列を掛ける。算出される行列を中間行列という。第２上流関係行列は、ステップＳ３３５（図１８参照）で算出された行列である。
図２２に、中間行列Ｒ１Ｒ２ＤＲ２Ｔに対応する表を示す。中間行列Ｒ１Ｒ２ＤＲ２Ｔは、第２上流関係行列Ｒ１Ｒ２Ｄ（図２０参照）に下流関係行列の転置行列Ｒ２Ｔ（図１０参照）を掛けることによって算出される中間行列である。
【００８７】
ステップＳ３４４において、関係強度算出部１２０は、中間行列に文書関係行列の転置行列を掛ける。算出される行列が上流要素行列である。
図２３に、上流要素行列Ｒ１Ｒ２ＤＲ２ＴＲ１Ｔに対応する表を示す。上流要素行列Ｒ１Ｒ２ＤＲ２ＴＲ１Ｔは、中間行列Ｒ１Ｒ２ＤＲ２Ｔ（図２２参照）に文書関係行列の転置行列Ｒ１Ｔ（図９参照）を掛けることによって算出される上流要素行列である。
上流文書要素が３つあるので、上流要素行列Ｒ１Ｒ２ＤＲ２ＴＲ１Ｔは３×３行列である。上流要素行列Ｒ１Ｒ２ＤＲ２ＴＲ１ＴのＮ行Ｍ列の要素は、上流要素ＵＮと上流要素ＵＭとの関係強度である。
上流文書要素Ｕ１とそれぞれの上流文書要素（Ｕ１〜Ｕ３）との関係強度は、０、８および６である。
上流文書要素Ｕ２とそれぞれの上流文書要素（Ｕ１〜Ｕ３）との関係強度は、０、２および６である。
上流文書要素Ｕ３とそれぞれの上流文書要素（Ｕ１〜Ｕ３）との関係強度は、０、０および０である。
【００８８】
図１６に戻り、ステップＳ３５０を説明する。
ステップＳ３５０において、表示部１９３は、関係強度算出部１２０によって算出された各々の関係強度をディスプレイに表示する
具体的には、表示部１９３は、ステップＳ３３０で算出された関係強度とステップＳ３４０で算出された関係強度との少なくともいずれかを表示する。
例えば、表示部１９３は、第２上流関係行列Ｒ１Ｒ２Ｄに対応する表（図２０参照）と上流要素行列Ｒ１Ｒ２ＤＲ２ＴＲ１Ｔに対応する表（図２３参照）との少なくともいずれかを表示する。
【００８９】
＊＊＊実施の形態３の効果＊＊＊
ソースコード要素同士の関係を考慮した上で、実施の形態１で述べた効果を得ることができる。
【００９０】
実施の形態４．
文書関係データと下流関係データとソースコード関係データとを最適化する形態について、主に実施の形態２および実施の形態３と異なる点を図２４および図２５に基づいて説明する。
【００９１】
＊＊＊構成の説明＊＊＊
関係分析装置１００の構成は、実施の形態２で説明した構成（図１３参照）と同じである。
【００９２】
＊＊＊動作の説明＊＊＊
図２４に基づいて、関係強度の最適化を説明する。
ステップＳ４１０において、受付部１９２は、影響有無データを受け付ける。
【００９３】
ステップＳ４２０以降の処理において、関係強度更新部１３０は、文書関係データに示される関係強度と下流関係データに示される関係強度とソースコード関係データに示される関係強度とのうち対象組に対応する関係強度を、影響有無データに示される影響の有無に基づいて更新する。
【００９４】
ステップＳ４２０において、関係強度更新部１３０は、影響有無データから未選択の対象組を１つ選択する。
ステップＳ４３０からステップＳ４４２までの処理の説明において、対象組は、ステップＳ４２０で選択された対象組を意味する。
【００９５】
ステップＳ４３０において、関係強度更新部１３０は、文書関係データと下流関係データとソースコード関係データとを用いて、対象組に対応する関係組を特定する。
関係組は、上流文書要素と下流文書要素との組と下流文書要素とソースコード要素との組とソースコード要素同士の組とのうち、要素間の関係が有る組である。
【００９６】
具体的には、関係強度更新部１３０は、対象組に対応する関係組を以下のように特定する。
まず、関係強度更新部１３０は、文書関係データと下流関係データとソースコード関係データとを用いて、要素関係データを生成する。要素関係データは、上流文書要素と下流文書要素とソースコード要素との関係を示すデータである。例えば、関係強度更新部１３０は、要素関係データとして、図１７に示すような要素関係図を表すデータを生成する。
次に、関係強度更新部１３０は、要素関係データを用いて、対象組に含まれる全ての要素を通る対象経路を要素関係図から抽出する。
そして、関係強度更新部１３０は、上流文書要素と下流文書要素との組と下流文書要素とソースコード要素との組とソースコード要素同士の組とを対象経路から抽出する。抽出される組が対象組に対応する関係組である。
対象組が（Ｕ１、Ｕ２）である場合、図１７の要素関係図における対象経路は、「Ｕ１→Ｌ１→Ｓ１→Ｓ４→Ｌ３→Ｕ２」と「Ｕ１→Ｌ２→Ｓ２→Ｓ３→Ｌ３→Ｕ２」との２つである。この場合、対象組に対応する関係組は、（Ｕ１、Ｌ１）と（Ｌ１、Ｓ１）と（Ｓ１、Ｓ４）と（Ｓ４、Ｌ３）と（Ｌ３、Ｕ２）と（Ｕ１、Ｌ２）と（Ｌ２、Ｓ２）と（Ｓ２、Ｓ３）と（Ｓ３、Ｌ３）との９組である。
【００９７】
ステップＳ４４０において、関係強度更新部１３０は、対象組の影響の有無を影響有無データから取得する。
対象組において影響が有る場合、処理はステップＳ４４１に進む。
対象組において影響が無い場合、処理はステップＳ４４２に進む。
【００９８】
ステップＳ４４１およびステップＳ４４２の説明において、関係組は、ステップＳ４３０で特定された関係組を意味する。
【００９９】
ステップＳ４４１において、関係強度更新部１３０は、関係組毎に関係組の関係強度を文書関係データ、下流関係データまたはソースコード関係データから選択する。
そして、関係強度更新部１３０は、選択された関係強度を増加させる。
【０１００】
ステップＳ４４２において、関係強度更新部１３０は、関係組毎に関係組の関係強度を文書関係データ、下流関係データまたはソースコード関係データから選択する。
そして、関係強度更新部１３０は、選択された関係強度を減少させる。
【０１０１】
ステップＳ４５０において、関係強度更新部１３０は、未選択の対象組が有るか判定する。
未選択の対象組が有る場合、処理はステップＳ４２０に進む。
未選択の対象組が無い場合、関係強度の最適化は終了する。
【０１０２】
図２５に、更新後の文書関係データと更新後の下流関係データと更新後のソースコード関係データとに基づく要素関係図を示す。
対象組が（Ｕ１、Ｕ２）である場合、図１７の要素関係図において対象組に対応する関係組は、（Ｕ１、Ｌ１）と（Ｌ１、Ｓ１）と（Ｓ１、Ｓ４）と（Ｓ４、Ｌ３）と（Ｌ３、Ｕ２）と（Ｕ１、Ｌ２）と（Ｌ２、Ｓ２）と（Ｓ２、Ｓ３）と（Ｓ３、Ｌ３）との９組である。
対象組において影響が有る場合、対象組に対応する関係組の関係強度が増加される。例えば、関係強度が２倍になる。
その結果、図２５に示す要素関係図が得られる。
【０１０３】
＊＊＊実施の形態４の効果＊＊＊
ソースコード要素同士の関係強度を最適化すると共に、実施の形態２で述べた効果を得ることができる。
【０１０４】
＊＊＊実施の形態の補足＊＊＊
実施の形態において、関係分析装置１００の機能はハードウェアで実現してもよい。
図２６に、関係分析装置１００の機能がハードウェアで実現される場合の構成を示す。
関係分析装置１００は処理回路９９０を備える。処理回路９９０はプロセッシングサーキットリともいう。
処理回路９９０は、要素抽出部１１０と関係強度算出部１２０と関係強度更新部１３０と記憶部１９１とを実現する専用の電子回路である。
例えば、処理回路９９０は、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックＩＣ、ＧＡ、ＡＳＩＣ、ＦＰＧＡまたはこれらの組み合わせである。ＧＡはＧａｔｅ  Ａｒｒａｙの略称であり、ＡＳＩＣはＡｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔの略称であり、ＦＰＧＡはＦｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙの略称である。
【０１０５】
関係分析装置１００は、処理回路９９０を代替する複数の処理回路を備えてもよい。複数の処理回路は、処理回路９９０の役割を分担する。
【０１０６】
関係分析装置１００の機能は、ソフトウェアとハードウェアとの組み合わせで実現してもよい。つまり、一部の機能がソフトウェアで実現され、残りの機能がハードウェアで実現されてもよい。
【０１０７】
実施の形態は、好ましい形態の例示であり、本発明の技術的範囲を制限することを意図するものではない。実施の形態は、部分的に実施してもよいし、他の形態と組み合わせて実施してもよい。フローチャート等を用いて説明した手順は、適宜に変更してもよい。
【符号の説明】
【０１０８】
１００  関係分析装置、１１０  要素抽出部、１２０  関係強度算出部、１３０  関係強度更新部、１９１  記憶部、１９２  受付部、１９３  表示部、９０１  プロセッサ、９０２  メモリ、９０３  補助記憶装置、９０４  入出力インタフェース、９９０  処理回路。
【図１】
2018120465.tif 000003
【図２】
2018120465.tif 000004
【図３】
2018120465.tif 000005
【図４】
2018120465.tif 000006
【図５】
2018120465.tif 000007
【図６】
2018120465.tif 000008
【図７】
2018120465.tif 000009
【図８】
2018120465.tif 000010
【図９】
2018120465.tif 000011
【図１０】
2018120465.tif 000012
【図１１】
2018120465.tif 000013
【図１２】
2018120465.tif 000014
【図１３】
2018120465.tif 000015
【図１４】
2018120465.tif 000016
【図１５】
2018120465.tif 000017
【図１６】
2018120465.tif 000018
【図１７】
2018120465.tif 000019
【図１８】
2018120465.tif 000020
【図１９】
2018120465.tif 000021
【図２０】
2018120465.tif 000022
【図２１】
2018120465.tif 000023
【図２２】
2018120465.tif 000024
【図２３】
2018120465.tif 000025
【図２４】
2018120465.tif 000026
【図２５】
2018120465.tif 000027
【図２６】
2018120465.tif 000028