ソフトウェアモジュール内で関数や変数によって実現される機能とそれら機能毎の規模を併せて入力する機能入力部と、前記機能毎に関連情報を入力する関連情報入力部と、前記ソフトウェアモジュールのある機能に関連する機能群の規模の割合と機能の規模による加重平均の積によって凝集度を算出する凝集度算出部を備える凝集度計測装置。前記機能を記憶する機能記憶部と、前記関連情報を記憶する関連記憶部を備える請求項1記載の凝集度計測装置。前記関連情報は、ある機能同士が関連有り或いは関連無しである請求項1又は請求項2記載の凝集度計測装置。前記機能の規模は、ある機能を実現する関数、変数を記述したソースコードの行数である請求項1乃至請求項3のいずれか1項に記載の凝集度計測装置。前記凝集度は、ソフトウェアモジュール内の任意の2箇所を選んだ場合、それら任意の2箇所が関連する確率である請求項1記載の凝集度計測装置。前記凝集度は、下式で算出する請求項1記載の凝集度計測装置。である。ソースコードやソフトウェアの設計書から、関数の名前及び規模から成る関数情報と、関数の呼び出し関係、変数の利用関係、型の利用関係のいずれかである構造情報を取得する構造解析部と、前記構造解析部で取得した関数情報と構造情報を用いて、関数や変数によって実現される機能を検出する機能検出部と、前記検出した機能間の関連有無を検出する際に使用する関連の定義を付与する関連定義入力部と、前記構造情報及び前記関連の定義に基づいて機能間の関連を検出する関連検出部と、前記機能と機能毎の関連情報に基づいて凝集度を算出する凝集度算出部を備える凝集度計測装置。前記構造解析部で取得した関数情報を記憶する関数情報記憶部と、前記構造解析部で取得した構造情報を記憶する構造情報記憶部と、前記機能検出部で検出した機能を記憶する機能記憶部と、前記検出した関連を記憶する関連記憶部を備える請求項7記載の凝集度計測装置。前記機能間の関連の定義は、内部変数の共有、型の共有、関数の呼び出し関係のいずれかである請求項7又は請求項8記載の凝集度計測装置。前記機能検出部は、検出した機能について、ある関数を呼び出している関数の数が1つであった場合、呼び出し元の関数と統合して1機能として数える請求項7乃至請求項9のいずれか1項に記載の凝集度計測装置。前記機能の規模は、ある機能を実現する関数、変数を記述したソースコードの行数である請求項7乃至請求項10のいずれか1項に記載の凝集度計測装置。ソフトウェアモジュール内の関数や変数によって実現される機能を検出し、前記機能を実現する関数、変数を記述したソースコードの行数によって前記機能毎の規模を取得し、前記機能間の関連の有無を検出し、前記全ての機能について、その機能を更新する際、無駄にならない保守作業の割合を算出し、前記割合を足し合わせて平均を取り、ソフトウェアモジュールの凝集度を算出する、凝集度計測方法。本発明が解決しようとする課題は、ソフトウェアモジュールの保守において無駄となる保守作業量を把握可能な凝集度計測装置及び凝集度計測方法を提供することである。実施形態の凝集度計測装置は、ソフトウェアモジュール内で関数や変数によって実現される機能とそれら機能毎の規模を併せて入力する機能入力部と、前記機能毎に関連情報を入力する関連情報入力部と、前記ソフトウェアモジュールのある機能に関連する機能群の規模の割合と機能の規模による加重平均の積によって凝集度を算出する凝集度算出部を備える。以下、本発明の一実施の形態について、図面を参照して説明する。尚、各図において同一箇所については同一の符号を付すとともに、重複した説明は省略する。第1の実施形態まず、本実施形態で用いる主要な用語について説明する。モジュールとは、関数や変数などのソフトウェアの構成部品のうち、所定の関係があるものをまとめたものをいう。モジュールの規模とは、あるモジュールを構成する関数、変数を記述したソースコードの行数をいう。ステップ数でもモジュールの規模を表すことができる。無駄な保守作業とは、機能の更新による影響を受けないにも関わらず、調査やテストに費やされる保守作業改定作業をいう。機能の変更確率とは、モジュール内の機能の変更されやすさを示す指標である。本実施形態に係るソフトウェアモジュールの凝集度計測装置は、モジュールの規模の違いによる無駄な保守作業量の違いを凝集度で表現可能とするもので、関数や変数によって実現される機能の規模を加味して、無駄な保守作業量を見積もることのできる凝集度を算出するものである。本実施形態では、二つの構造において、同じ凝集度である場合、同じ保守作業量となる。例えば、凝集度0.8ならば、保守時に無駄でない作業量は必ず80となる。さらに、二つの構造において同じ保守作業量の場合、同じ凝集度となる。例えば、無駄でない保守作業量が80ならば、凝集度は必ず0.8である。凝集度と保守作業量には相関があり、凝集度が高いほど、無駄でない保守作業量が多くなる。機能の規模と凝集度との関係機能の規模を加味して、無駄な保守作業量に直結する凝集度を算出するために、1モジュール内のある機能fに関連する機能群の規模の割合をAとする。ここで、関連する機能群とは、機能間で内部変数の共有関係や関数の呼び出しがあることである。2Aは機能fを変更する際、無駄にならない作業の割合を示す値である。換言すれば、変更に対してモジュール全体を再テストしたとき、無駄ではないテストの割合であり、変更に際してモジュール全体を調査したとき、無駄ではない調査の割合である。そこで、モジュール内のある一機能を変更するときの、Aの平均値をもって凝集度とする。モジュール内の各機能の変更確率はその規模に比例するものとし、各機能の規模での加重平均とする。これらのことをまとめると、上記凝集度の定義は、以下のように言い換えることができる。本実施形態における凝集度とは、モジュール内の任意の2箇所2行を選んだ時、それらが関連する確率である。図1は、機能の規模と凝集度との関係を示す図である。図1に示すモジュールAは、機能A1、A2、A3から構成され、機能A2とA3の間には何らかの関係がある。機能A1はモジュールA全体の50の規模を占め、機能A2は30の規模、機能A3は20の規模を占めている。このようなモジュールAについて、上記A及び凝集度への寄与は図1に示すようになる。例えば、機能A2は、機能A2自身と機能A3が関連し、Aは各機能の規模0.3及び0.2の合計であり、凝集度への寄与はAと機能の規模による加重平均との積、すなわち、0.30.20.3となる。ここで、機能の規模による加重平均は、機能の変更確率を表している。図2は、本実施形態に係る凝集度計測装置の構成例を示す図である。凝集度計測装置100は、機能入力部10、機能記憶部20、関連情報入力部30、関連記憶部40、凝集度算出部50から構成されている。まず、各部を簡潔に説明する。機能入力部10は、モジュール内の機能を入力するものである。各機能毎の規模行数も併せて入力する。機能入力部10で入力した機能は機能記憶部20に記憶される。図3は、機能記憶部20における機能記憶表の一例を示している。関連情報入力部30は、各機能毎に関連情報を入力する。関連がある場合には、関連有り、関連が無い場合には、関連無しと入力する。関連情報入力部30で入力した関連情報は関連記憶部40に記憶される。図4は、関連記憶部40における関連情報記憶表の一例を示す図である。図4に示す例では、機能3は機能1及び機能2と関連しているが、機能1と機能2は関連が無いことがわかる。凝集度算出部50は、モジュールの全機能と機能毎の関連情報から、凝集度を算出する。凝集度は、下式によって算出する。凝集度算出のフロー図5は、以上のように構成された凝集度計測装置における凝集度算出の流れを示すフローチャートである。まず、モジュール内の機能を検出するステップS51。次いで、各機能の規模を取得するステップS52。また、機能間の関連の有無を検出するステップS53。次に、全ての機能fiについて、Aを算出するステップS54。ここで、Aは機能fiを更新する際、無駄にならない保守作業の割合を示す値であり、i=機能の数である。次に、Aを足し合わせて平均を取り、モジュールの凝集度を算出するステップS55。凝集度算出例図6は、あるモジュールAの構造と、その凝集度の算出例を示す図である。図6に示す例では、モジュールAの機能A1は20の規模、機能A2は50の規模、機能A3は30の規模であり、機能A3は機能A1と機能A2に関連している。このような場合、機能A1について、機能A1自身の凝集度への寄与は規模A関連の有無=0.20.21であり、機能A3の凝集度への寄与は0.20.31である。機能A2について、機能A2自身の凝集度への寄与は0.50.51であり、機能A3の凝集度への寄与は0.50.31である。同様に、機能A3について、機能A1の凝集度への寄与は0.30.21であり、機能A2の凝集度への寄与は0.30.51であり、機能A3自身の凝集度への寄与は0.30.31である。したがって、モジュールAの凝集度は、0.8となる。凝集度の効果の検証既存の凝集度と本実施形態に係る凝集度について対比することにより、凝集度の効果について検証する。既存の凝集度は、LCOMLackofCohesioninMethodsの式ここでは、略すで計算され、LCOMの値が小さいほど、ゼロに近づくほど凝集度が高いと評価している。今、図7に示すようなモジュールAとモジュールBを例にとって対比する。モジュールAは、規模500行の機能1、規模250行の規模2、規模250行の規模3から成り、機能2と機能3は関連がある。一方、モジュールBは、規模10行の機能1、規模495行の規模2、規模495行の規模3から成り、機能2と機能3は関連がある。既存の凝集度では、モジュールAとモジュールBもLCOM=0.5であり、両モジュールに差異は無いと判定していた。これに対し、本実施形態によって凝集度を算出し、保守作業量を求めると、図8のようになる。図8は、各モジュールごとのLCOM、本実施形態による凝集度、保守作業量の一例である。図8では、モジュールAの凝集度は0.5、各機能の変更確率を考慮した場合の保守作業量は機能1の変更時で250行、機能2の変更時で125行、機能3の変更時で125行、保守に無駄でない作業量は500行となっている。また、モジュールBの凝集度は0.982、各機能の変更確率を考慮した場合の保守作業量は機能1の変更時で0.1行、機能2の変更時で約491行、機能3の変更時で約491行、保守に無駄でない作業量は約982行となっている。このことから、モジュールAに比べて、モジュールBの方が無駄な保守作業が発生しない、すなわち保守し易い構造であることが明らかとなる。さらに、モジュールの構成を変えて検証を続ける。図9は、機能、規模、関連の異なるモジュールを比較する図である。図9に示した各モジュールについて、LCOM、本実施形態による凝集度、保守作業量を求めると、図10のようになる。今まで述べてきたように、保守作業量を見積もることのできる凝集度であるためには、条件1:二つの構造において同じ凝集度である場合、同じ保守作業量となる。条件2:二つの構造において同じ保守作業量である場合、同じ凝集度となる。条件3:凝集度と保守作業量には相関がある。の3条件を満たすことが必要である。図10によれば、LCOMでは、条件1:同じ凝集度の場合でも保守作業量が異なるモジュールBとモジュールD。条件2:同じ保守作業量の場合でも凝集度が異なるモジュールBとモジュールC。条件3:LCOMの大小と保守作業量は関係がない。ことから、3条件を満たさず、保守作業量を見積もることができない。一方、本実施形態による凝集度によれば、条件1:モジュールBとモジュールCは同じ凝集度で、同じ保守作業量である。条件2:モジュールBとモジュールCは同じ保守作業量で、同じ凝集度である。条件3:凝集度と保守作業量には相関がある。ことから、3条件を満たし、保守作業量を見積もることができる。本実施形態によれば、モジュールの機能の規模を用いて保守作業量を見積もることができるので、無駄な保守作業量を評価することができる。第2の実施形態次に、第2の実施形態について説明する。図11は、第2の実施形態に係る凝集度計測装置の構成例を示す図である。第2の実施形態に係る凝集度計測装置200は、構造解析部60、関数情報記憶部61、構造情報記憶部62、機能検出部70、関連検出部80、関連定義入力部90、機能記憶部20、関連記憶部40、凝集度算出部50から構成されている。第2の実施形態に係る凝集度計測装置200と第1の実施形態に係る凝集度計測装置100との大きな相違点は、機能の検出、機能間の関連の検出を行う点である。それ以外の点については、第1の実施形態と同様である。構造解析部60は、ソースコードやソフトウェアの設計書から、関数の名前、規模行数及び構造情報を取得する。ここで、構造情報とは、関数の呼び出し関係、変数の利用関係、型の利用関係である。図12は、モジュールAの構造の一例を示している。構造解析部60で取得した関数情報は、関数情報記憶部61に記憶される。図13は、記憶する関数情報の一例を示す図で、関数名と規模を記憶する。構造解析部60で取得した構造情報は、構造情報記憶部62に記憶される。図14は、記憶する構造情報の一例を示す図で、関連の主体毎に、関連の対象及び関連の種類を記憶する。機能検出部70は、構造解析部60で取得した関数情報と構造情報を用いて、機能を検出する。検出した機能は、関数の呼び出し関係においてまとめる。図15は、検出後にまとめた機能を示す図である。図16は、機能記憶部20における機能記憶表の一例を示している。機能の検出では、1関数=1機能とするが、ある関数を呼び出している関数の数が1つであった場合、呼び出し元の関数と統合して1機能とする。図17は、機能の検出に際し、呼び出し元の関数との統合を説明する図である。図17に示す例では、関数A5は関数A4からのみ呼ばれているので統合することを示している。関連定義入力部90は、機能間の関連検出において、関連の定義を与えるものである。例えば、内部変数の共有時のみ関連がある、と定義する。機能間の関連の定義には、次のような例を挙げることができる。1内部変数の共有これは、モジュール内に定義されている同一変数を参照リード/ライトしている場合、それらの機能には関連がある、とする例である。2型の共有これは、同一の型を使用している場合、それらの機能間には関連がある、とする例である。尚、型はユーザ定義の構造体とする。3関数の呼び出し関係これは、一方の機能が他方の機能を呼び出していれば、それらの機能間には関連がある、とする例である。呼び出しには間接的な呼び出しも含め、機能A→機能B→機能Cという呼び出し関係があった場合、機能Aと機能Cの間にも呼び出し関係があるものとする。関連検出部80は、構造情報記憶部62の記憶内容及び関連定義入力部90の入力から、機能間の関連を検出する。検出した関連は、関連記憶部40に記憶される。図18は、機能間の関連検出を説明する図である。図18に示す例では、内部変数の共有に該当するものを関連の定義とし、機能1と機能2の間に関連があることがわかる。凝集度算出部50は、第1の実施形態と同様に、モジュールの全機能と機能毎の関連情報から、凝集度を算出する。図19は、第2の実施形態における凝集度の算出例を示す図である。図19に示す例では、モジュールAの凝集度は0.45となる。第2の実施形態によれば、ソースコードやソフトウェアの設計書を入力として与えることで、凝集度の算出が可能となる。本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。