(57)【要約】【課題】ソフトウェアの保守作業の工数をより正確に評価可能なように、ソフトウェアモジュールの変更確率を考慮した保守度が得られる保守度測定装置を提供する。【解決手段】モジュール名、モジュールの規模、各モジュール間の依存関係を含む設計情報を入力する設計情報入力部と、設計情報に基づいて、あるモジュールが変更されたときに、そのモジュール自身の規模と当該変更の影響が波及するモジュールの規模の総和を意味する影響度を、対象となるモジュールについて算出する影響度算出部と、モジュールの変更されやすさを示す変更確率を取得する変更確率取得部と、モジュールの影響度にそのモジュールの変更確率を掛け合わせたものをモジュールの保守度として算出する保守度決定部を備える保守度測定装置。【選択図】図１
2013045421.tif 000002
【特許請求の範囲】
【請求項１】
モジュール名、モジュールの規模、各モジュール間の依存関係を含む設計情報を入力する設計情報入力部と、
前記設計情報に基づいて、あるモジュールが変更されたときに、そのモジュール自身の規模と当該変更の影響が波及するモジュールの規模の総和を意味する影響度を、対象となるモジュールについて算出する影響度算出部と、
モジュールの変更されやすさを示す変更確率を取得する変更確率取得部と、
前記モジュールの影響度にそのモジュールの前記変更確率を掛け合わせたものをモジュールの保守度として算出する保守度決定部を
備える保守度測定装置。
【請求項２】
前記設計情報を記憶する設計情報記憶部と、
前記影響度を記憶する影響度記憶部と、
前記変更確率を記憶する変更確率記憶部
を備える請求項１記載の保守度測定装置。
【請求項３】
前記設計情報記憶部は、モジュール名、モジュールの規模を設計情報表に記憶し、依存先モジュール名、依存元モジュール名を依存情報表に記憶する請求項２記載の保守度測定装置。
【請求項４】
前記モジュールの規模は、あるモジュールを構成する関数、変数を記述したソースコードの行数である請求項１乃至請求項３のいずれか１項に記載の保守度測定装置。
【請求項５】
前記変更の影響が波及するモジュールの前記依存関係は、直接的な依存関係と直接的な依存を繰り返し辿ることによって得られる間接的な依存関係である請求項１乃至請求項４のいずれか１項に記載の保守度測定装置。
【請求項６】
前記変更確率は、前記モジュールの規模から下式で算出する請求項１乃至請求項５のいずれか１項に記載の保守度測定装置。
【数３】
2013045421.tif 000005
【請求項７】
前記変更確率は、変更履歴管理システムのログから下式で算出する請求項１乃至請求項６のいずれか１項に記載の保守度測定装置。
【数４】
2013045421.tif 000006
【請求項８】
前記モジュールの保守度の総合計をソフトウェア全体の保守度として算出する請求項１乃至請求項７のいずれか１項に記載の保守度測定装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ソフトウェアモジュールの変更確率を考慮した保守度測定装置に関する。
【背景技術】
【０００２】
ソフトウェア開発において保守作業（改定作業）の工数は無視できないものとなってきている。そのため、保守作業に必要な努力の度合いである保守性が高いことが望まれる。ソフトウェアの保守作業では、変更されたモジュールだけでなく、影響が波及するモジュールも保守作業対象となる。影響が波及する範囲が広くなれば、保守工数が増大する。影響が波及する範囲を測定することで、保守工数を評価できる。モジュールの影響が波及する範囲を表す影響度という指標が考案されている。「ソフトウェア全体の影響度」が低くなるようにモジュールを構成することで、保守作業時にかかる工数が低いモジュール構成を選択できる。
【０００３】
モジュールの変更確率が考慮されていないため、実際に発生しうる保守作業工数と、影響度による評価結果との間に乖離が発生する。発生しない保守作業の工数が低くなるようにモジュール構成の見直し作業を実施してしまう。頻繁に発生する保守作業は、作業工数が低くなるようなモジュール構成を選択する必要があるが、誤ったモジュール構成を選択してしまう。保守作業工数と、乖離が少ない影響度にはモジュールの変更確率を考慮する必要がある。
【０００４】
ソフトウェアの修正の影響に関しては、ソフトウェアの修正仕様と修正によって影響を受けるコンポーネントの影響パターンから、修正によって影響を受けるソフトウェアの機能を特定し、当該機能数に影響機能あたりの単価を乗じて、カスタマイズ工数を算出することが提案されている（例えば、特許文献１参照。）。
【０００５】
また、プログラムのモジュール毎に、プログラムの他の部分に与える影響度を示すメトリクス情報とプログラムで発生した不良の過去の修正情報から算出した不良修正困難度の２種の数値を掛け合わせたものを重要度とする提案がなされている（例えば、特許文献２参照。）。
【０００６】
しかしながら、既存の影響度では、ソフトウェアの全モジュールの「モジュールの影響度」を低くしなければ、「ソフトウェア全体の影響度」が低くならず、発生しない保守作業に備えて、モジュール構成を再考するのは無駄である。
【０００７】
さらに、モジュールの変更確率が高いモジュールの「モジュールの影響度」は、特に低く保つ必要があるが、正しく判断できない場合がある。 
すなわち、実際に発生しうる保守作業工数と影響度による評価結果との間には乖離が生じ、発生しない保守作業の工数を低くなるようにモジュール構成の見直し作業を実施してしまう、あるいは、頻繁に発生する保守作業は作業工数が低くなるようなモジュール構成を選択する必要があるが、誤ったモジュール構成を選択してしまう、という問題があった。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００６−１３４２２５号公報
【特許文献２】特開２００６−１１３９３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明が解決しようとする課題は、ソフトウェアの保守作業の工数をより正確に評価可能なように、ソフトウェアモジュールの変更確率を考慮した保守度測定装置を提供することである。
【課題を解決するための手段】
【００１０】
実施形態の保守度測定装置は、モジュール名、モジュールの規模、各モジュール間の依存関係を含む設計情報を入力する設計情報入力部と、前記設計情報に基づいて、あるモジュールが変更されたときに、そのモジュール自身の規模と当該変更の影響が波及するモジュールの規模の総和を意味する影響度を、対象となるモジュールについて算出する影響度算出部と、モジュールの変更されやすさを示す変更確率を取得する変更確率取得部と、前記モジュールの影響度にそのモジュールの前記変更確率を掛け合わせたものをモジュールの保守度として算出する保守度決定部を備える。
【図面の簡単な説明】
【００１１】
【図１】本実施形態に係る保守度測定装置の構成例を示す図である。
【図２】各モジュールの規模と依存関係の一例を示す図である。
【図３】設計情報表と依存情報表の一例を示す図である。
【図４】影響度記録表の一例を示す図である。
【図５】モジュールの規模から算出した場合の変更確率を示す変更確率情報表の一例である。
【図６】図２に示すモジュール構成例において、モジュールの規模から算出した場合の変更確率の例を示す図である。
【図７】モジュールの更新回数から算出した場合の変更確率の例を示す図である。
【図８】保守度表の一例を示す図である。
【発明を実施するための形態】
【００１２】
以下、本発明の一実施の形態について、図面を参照して説明する。尚、各図において同一箇所については同一の符号を付すとともに、重複した説明は省略する。
【００１３】
まず、本実施形態で用いる主要な用語について説明する。
【００１４】
「モジュール」とは、関数や変数などのソフトウェアの構成部品のうち、所定の関係があるものをまとめたものをいう。
【００１５】
「モジュールの規模」とは、あるモジュールを構成する関数、変数を記述したソースコードの行数をいう。ステップ数でもモジュールの規模を表すことができる。
【００１６】
「モジュールの影響度」とは、あるモジュールが変更されたときに、そのモジュール自身の規模と影響が波及するモジュールの規模の総和である。
【００１７】
「影響が波及するモジュール」には、あるモジュールが変更された場合、そのモジュールを利用しているモジュール及び影響が波及するモジュールを利用しているモジュールが該当する。
【００１８】
「ソフトウェア全体の影響度」とは、あるソフトウェアに含まれる全てのモジュールの影響度の総和をいう。
【００１９】
「モジュールの変更確率」とは、モジュールの変更されやすさを示す指標である。ソフトウェア内では、数値演算などの基本演算を行うライブラリは変更されにくく、デバイスドライバやＧＵＩなどの外部やユーザからの入力を受け取るモジュールは変更されやすい。無作為にモジュールに更新が行われるとすると、モジュールの規模が大きいモジュールは更新される可能性が高いということができる。
【００２０】
本実施形態に係るソフトウェアモジュールの変更確率を考慮した保守度測定装置は、モジュールの影響度にそのモジュールの変更確率を掛け合わせたものをモジュールの保守度として算出し、モジュールの保守度の総合計をソフトウェア全体の保守度として算出するものである。
【００２１】
図1は、本実施形態に係る保守度測定装置の構成例を示す図である。
【００２２】
影響度測定装置１００は、設計情報入力部１０、設計情報記憶部２０、影響度算出部３０、影響度記憶部４０、変更確率取得部５０、変更確率記憶部６０、保守度決定部７０から構成されている。
【００２３】
まず、各部を簡潔に説明する。設計情報入力部１０は、設計情報を入力するものである。設計情報には、例えば、モジュール名、モジュールの規模、依存先モジュール名、依存元モジュール名がある。
【００２４】
図２は、各モジュールの規模と依存関係の一例を示す図である。図２に示す例では、モジュールＡはソースコードで１００行、モジュールＢはソースコードで１５０行、モジュールＣはソースコードで１５０行、モジュールＤはソースコードで２００行、モジュールＥはソースコードで１００行、モジュールＦはソースコードで３００行の規模となっている。また、モジュールＢはモジュールＡに依存し、モジュールＣはモジュールＡに依存し、モジュールＤはモジュールＣに依存し、モジュールＦはモジュールＥに依存している。以降の説明では、図２に示す例を題材として説明する。
【００２５】
設計情報記憶部２０は、入力された設計情報のうち、モジュール名、モジュールの規模を設計情報表に記憶する。さらに、依存先モジュール名、依存元モジュール名を依存情報表に記憶する。図３は、設計情報表と依存情報表の一例を示している。
【００２６】
影響度算出部３０は、設計情報記憶部２０に記憶されている設計情報表と依存情報表に基づいて、対象となるモジュールの影響度を以下の手順で算出するものである。
【００２７】
Step 1: 計測対象となるモジュールを選択する。
【００２８】
Step 2: 計測対象モジュールに、直接および間接に依存するモジュール群を依存情報表から抽出する。依存情報表には、直接的な依存関係だけが記載されている。そこで、間接的な依存関係は、依存情報表に記された直接的な依存を繰り返し辿ることによって得られる。
【００２９】
Step 3: 計測対象モジュール、および、Step 2 で得られた依存するモジュール群の規模の総和を算出する。
【００３０】
Step 4: 得られた値を「計測対象モジュールの影響度」として影響度記録表に記録する。
【００３１】
ここで、図２に示すモジュール構成例において、モジュールＤの影響度算出を説明する。
【００３２】
Step 1: モジュールＤを選択する。
【００３３】
Step 2: モジュールＤに直接依存しているのはモジュールＣである。 さらにモジュールＣに直接依存しているのはモジュールＡである。よって、モジュールＤに依存しているモジュール群は、モジュールＡおよびモジュールＣである。
【００３４】
Step 3: モジュールＤ自身、及びモジュールＤに依存するモジュールＡ及びモジュールＣの規模の合計を算出する。したがって、２００＋１００＋１５０＝４５０となる。
【００３５】
Step 4: ４５０ をモジュールＤの影響度として影響度記録表に記録する。
【００３６】
図４は、影響度記録表の一例を示す図である。
【００３７】
影響度算出部３０で算出された影響度は、影響度記録表の形式で、影響度記憶部４０に各モジュール別に記憶される。
【００３８】
変更確率取得部５０は、各モジュールの変更確率を取得するものである。変更確率の取得は、例えば、（１）モジュールの規模から算出、（２）変更履歴管理システムのログから算出、（３）ベテラン技術者による経験値の採用、がある。
【００３９】
図５は、モジュールの規模から算出した場合の変更確率を示す変更確率情報表の一例である。モジュールの規模に基づいて変更確率する場合には、モジュールの規模が大きいほど変更が発生しやすいと考え、下式にしたがって、各モジュールの変更確率を算出する。
【数１】
2013045421.tif 000003
【００４０】
図６は、図２に示すモジュール構成例において、モジュールの規模から算出した場合の変更確率の例を示す。
【００４１】
次に、変更履歴管理システムのログに基づいて変更確率を取得する場合について説明する。この場合、変更履歴管理システムのログから、各モジュールを構成するファイルの更新回数を取得し、その総和を当該モジュールの更新回数とする。その更新回数を元に、下式にしたがって、各モジュールの変更確率を算出する。
【数２】
2013045421.tif 000004
【００４２】
図７は、モジュールの更新回数から算出した場合の変更確率の例を示す。尚、図７における更新回数の数値は、仮のものである。
【００４３】
保守度決定部７０では、各モジュールの保守度を算出する。ここで、保守度は、（モジュールの影響度）×（モジュールの変更確率）＝保守度として表わされる。全てのモジュールの保守度の総和が、ソフトウェア全体の保守度として得られる。
【００４４】
図８は、保守度表の一例を示す図である。例えば、モジュールＣの影響度は２５０、変更確率は０．１５であるから保守度は３７．５であり、ソフトウェア全体の保守度は３０５となっている。各モジュール毎の保守度及びソフトウェア全体の保守度を利用することにより、モジュールの改変に伴って保守度が過度に高まることのないように、保守作業へ影響を的確に判断することが可能となる。
【００４５】
本実施形態によれば、ソフトウェアの保守度を評価するに際し、モジュールの変更確率を導入したので、実際に保守作業が発生した際の保守工数をより正確に評価することができる。保守度を基準にモジュール構成を決定することで、モジュールの変更確率が高いモジュールの「モジュールの影響度」が低いモジュール構成とすることにより、保守工数が低いモジュール構成となる。
【００４６】
ソフトウェア全体の影響度が低いモジュール構成でも、モジュールの変更確率が高いモジュールの「モジュールの影響度」が高いモジュール構成のものを保守度を基準にすることで回避することができる。
【００４７】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００４８】
１００・・・影響度測定装置、
１０・・・設計情報入力部、
２０・・・設計情報記憶部、
３０・・・影響度算出部、
４０・・・影響度記憶部、
５０・・・変更確率取得部、
６０・・・変更確率記憶部、
７０・・・保守度決定部。
【図１】
2013045421.tif 000007
【図２】
2013045421.tif 000008
【図３】
2013045421.tif 000009
【図４】
2013045421.tif 000010
【図５】
2013045421.tif 000011
【図６】
2013045421.tif 000012
【図７】
2013045421.tif 000013
【図８】
2013045421.tif 000014