(57)【要約】【課題】ソフトウェアの仕様変更に伴う、ソースプログラムの修正に要する工数を正確に見積もることのできる修正工数見積装置を提案する。【解決手段】修正内容取得部１０１は、プログラムに含まれる修正対象の機能の修正内容を示す情報を取得し、影響機能特定部１０３は、その修正内容とソフトウェアを構成する機能ごとのデータベースに対して蓄積・取得するデータベース項目とに基づいて、その修正によって影響を受ける他の機能を特定する。追加修正工数算出部１０５は、上記他の機能を修正するのに要する工数を算出し、総修正工数算出部１０７は、修正対象の機能を修正するのに要する工数および上記他の機能を修正するのに要する工数より総修正工数を算出する。【選択図】図１
2008077482.tif 000002
【特許請求の範囲】
【請求項１】
データベースに対してデータ項目を蓄積または取得する機能である第１機能を含む、複数の機能から構成されるソフトウェアにおいて、前記第１機能の仕様変更に伴う前記ソフトウェアの修正に要する工数を見積もる装置であって、
前記仕様変更によって必要となる前記第１機能に対する修正の内容を示す情報を取得する修正内容取得手段と、
前記第１機能の前記修正に関わるデータ項目を前記データベースに対して蓄積または取得する第２機能を、前記第１機能の前記修正の影響を受ける影響機能として特定する影響機能特定手段と、
１つの影響機能を修正するために必要な工数を換算するための係数である追加修正工数換算係数を取得する係数取得手段と、
前記影響機能特定手段によって特定された前記影響機能の数と、前記係数取得手段によって取得された前記追加修正工数換算係数とから、前記影響機能を修正するために必要な工数を算出する追加修正工数算出手段と、
前記第１機能を修正するために必要な工数と、前記追加修正工数算出手段で算出された前記影響機能を修正するために必要な工数とから、前記ソフトウェアの修正に要する総工数を算出する総修正工数算出手段とを備える、修正工数見積装置。
【請求項２】
前記第１機能に対する修正の内容を示す情報は、
前記第１機能の名前と、
前記第１機能に対してどの区分に類する修正が行なわれるのかを示す修正区分名と、
前記第１機能によって前記データベースに対して蓄積・取得されるデータ項目のうち、修正されるデータ項目のリストとを含む、請求項１に記載の修正工数見積装置。
【請求項３】
前記ソフトウェアを構成する機能ごとに、前記データベースに蓄積されるデータ項目および／または前記データベースから取得されるデータ項目を記載した第１テーブルを格納する手段をさらに備え、
前記影響機能特定手段は前記第１テーブルを参照して、前記第１機能によって前記データベースに対して蓄積・取得されるデータ項目のうち、修正されるデータ項目ごとに、前記データ項目を前記データベースに対して蓄積および／または取得する前記第２機能を抽出して、前記影響機能として特定する、請求項１に記載の修正工数見積装置。
【請求項４】
前記第１機能の修正によって前記修正に関わるデータ項目が変更される場合には、前記影響機能特定手段は前記第１テーブルを参照して、前記データ項目を前記データベースに蓄積する第２機能と、前記データ項目を前記データベースから取得する第３機能とを抽出して、前記影響機能として特定する、請求項３に記載の修正工数見積装置。
【請求項５】
前記第１機能の修正によって前記修正に関わるデータ項目が削除される場合には、前記影響機能特定手段は前記第１テーブルを参照して、前記第１機能が前記データ項目を前記データベースに蓄積する機能であって、前記データ項目を前記データベースに蓄積する第４機能が抽出されると、前記影響機能はないものとする、請求項３に記載の修正工数見積装置。
【請求項６】
前記第１機能の修正によって前記修正に関わるデータ項目が削除される場合には、前記影響機能特定手段は前記第１テーブルを参照して、前記第１機能が前記データ項目を前記データベースに蓄積する機能であって、前記データ項目を前記データベースに蓄積する第４機能が抽出されないときには、前記データ項目を前記データベースから取得する第３機能を抽出して、前記影響機能として特定する、請求項３に記載の修正工数見積装置。
【請求項７】
前記第１機能の修正によって前記修正に関わるデータ項目が削除される場合には、前記影響機能特定手段は前記第１テーブルを参照して、前記第１機能が前記データ項目を前記データベースから取得する機能であるときには、前記影響機能はないものとする、請求項３に記載の修正工数見積装置。
【請求項８】
仕様変更された機能の修正の区分ごとに、当該修正に要する工数を記載した第２テーブルを格納する手段をさらに備え、
前記総修正工数算出手段は前記第２テーブルを参照して、前記第１機能の修正の区分に応じた工数を取得し、前記追加修正工数算出手段で算出された前記影響機能を修正するために必要な工数に加算することで前記総工数を算出する、請求項１に記載の修正工数見積装置。
【請求項９】
データベースに対してデータ項目を蓄積または取得する機能である第１機能を含む、複数の機能から構成されるソフトウェアにおいて、前記第１機能の仕様変更に伴う前記ソフトウェアの修正に要する工数を、修正工数見積装置を用いて見積もる方法であって、
前記仕様変更によって必要となる前記第１機能に対する修正の内容を示す情報を取得するステップと、
前記第１機能の前記修正に関わるデータ項目を前記データベースに対して蓄積または取得する第２機能を、前記第１機能の前記修正の影響を受ける影響機能として特定する特定ステップと、
１つの影響機能を修正するために必要な工数を換算するための係数である追加修正工数換算係数を取得するステップと、
特定された前記影響機能の数と、取得された前記追加修正工数換算係数とから、前記影響機能を修正するために必要な工数を算出するステップと、
前記第１機能を修正するために必要な工数を取得するステップと、
前記第１機能を修正するために必要な工数と、前記影響機能を修正するために必要な工数とから、前記ソフトウェアの修正に要する総工数を算出するステップとを備える、修正工数見積方法。
【請求項１０】
前記特定ステップは、
前記第１機能の前記修正に関わるデータ項目を前記データベースに対して蓄積または取得する前記第２機能を抽出するステップと、
前記データ項目が、前記修正に伴って変更されるのか、削除されるかを判断するステップと、
前記データ項目が、前記修正に伴って削除される場合、前記第１機能が前記データ項目を前記データベースに対して蓄積するのか前記データベースから取得するのかを判断するステップとを含み、
前記データ項目が前記修正に伴って変更される場合には、前記第２機能を前記影響機能として特定し、
前記データ項目が前記修正に伴って削除され、かつ前記第１機能が前記データ項目を前記データベースから取得する場合には、影響機能がないものとし、
前記データ項目が前記修正に伴って削除され、かつ前記第１機能が前記データ項目を前記データベースに対して蓄積する場合であって、さらに前記第２機能が前記データ項目を前記データベースに対して蓄積する場合には、影響機能がないものとし、
前記データ項目が前記修正に伴って削除され、かつ前記第１機能が前記データ項目を前記データベースに対して蓄積する場合であって、さらに前記データ項目を前記データベースに対して蓄積する機能がない場合には、前記データ項目を前記データベースから取得する前記第２機能を前記影響機能として特定する、請求項９に記載の修正工数見積方法。
【請求項１１】
データベースに対してデータ項目を蓄積または取得する機能である第１機能を含む、複数の機能から構成されるソフトウェアにおいて、前記第１機能の仕様変更に伴う前記ソフトウェアの修正に要する工数を見積もる処理をコンピュータに実行させるプログラムであって、
前記仕様変更によって必要となる前記第１機能に対する修正の内容を示す情報を取得するステップと、
前記第１機能の前記修正に関わるデータ項目を前記データベースに対して蓄積または取得する第２機能を、前記第１機能の前記修正の影響を受ける影響機能として特定する特定ステップと、
１つの影響機能を修正するために必要な工数を換算するための係数である追加修正工数換算係数を取得するステップと、
特定された前記影響機能の数と、取得された前記追加修正工数換算係数とから、前記影響機能を修正するために必要な工数を算出するステップと、
前記第１機能を修正するために必要な工数を取得するステップと、
前記第１機能を修正するために必要な工数と、前記影響機能を修正するために必要な工数とから、前記ソフトウェアの修正に要する総工数を算出するステップとを実行させる、修正工数見積プログラム。
【請求項１２】
前記特定ステップは、
前記第１機能の前記修正に関わるデータ項目を前記データベースに対して蓄積または取得する前記第２機能を抽出するステップと、
前記データ項目が、前記修正に伴って変更されるのか、削除されるかを判断するステップと、
前記データ項目が、前記修正に伴って削除される場合、前記第１機能が前記データ項目を前記データベースに対して蓄積するのか前記データベースから取得するのかを判断するステップとを含み、
前記データ項目が前記修正に伴って変更される場合には、前記第２機能を前記影響機能として特定し、
前記データ項目が前記修正に伴って削除され、かつ前記第１機能が前記データ項目を前記データベースから取得する場合には、影響機能がないものとし、
前記データ項目が前記修正に伴って削除され、かつ前記第１機能が前記データ項目を前記データベースに対して蓄積する場合であって、さらに前記第２機能が前記データ項目を前記データベースに対して蓄積する場合には、影響機能がないものとし、
前記データ項目が前記修正に伴って削除され、かつ前記第１機能が前記データ項目を前記データベースに対して蓄積する場合であって、さらに前記データ項目を前記データベースに対して蓄積する機能がない場合には、前記データ項目を前記データベースから取得する前記第２機能を前記影響機能として特定する、請求項１１に記載の修正工数見積プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は修正工数見積装置、修正工数見積方法、および修正工数見積プログラムに関し、特に、ソフトウェアの仕様変更に伴う、ソースプログラムの修正に要する工数を見積もる修正工数見積装置、修正工数見積方法、および修正工数見積プログラムに関する。
【背景技術】
【０００２】
既存のソフトウェアを構成する複数の機能のうち、ある機能について仕様が変更されたため、ソフトウェアを修正する場合がある。その作業を行なう際、予めソフトウェアを修正するための工数を見積もることがなされている。
【０００３】
ソフトウェアを修正するためには、仕様が変更された機能（主修正機能と称する）のみならず、主修正機能に対する修正により影響を受ける他の機能（影響機能）も追加で修正する必要がある。そのため、ソフトウェアを修正するための工数を見積もる際には、主修正機能を修正するための工数（主修正工数と称する）だけでなく、影響機能を修正するための（追加修正工数と称する）も考慮して、より正確に見積を行なうことが重要である。
【０００４】
特開２００６−１３４２２５号公報（以下、特許文献１）には、追加修正工数も考慮した、ソフトウェアの修正工数見積方法が開示されている。特許文献１では、主修正工数の見積と追加修正工数の見積とを行ない、修正工数を算出する方法が開示されている。
【０００５】
具体的には、主修正工数の見積については、いくつかの修正区分ごとの修正工数が予め登録され、見積の段階において、見積者が修正区分を指定することで、指定された修正区分に該当する修正工数が取得されて主修正工数が得られる。追加修正工数の見積については、ソフトウェアの各機能を構成するコンポーネント間の依存関係を用いて影響機能が簡易的に特定される。そして、特定された影響機能の数に、予め設定された追加修正工数単価を掛けることで追加修正工数が算出される。上記見積により得られた、主修正工数と追加修正工数とを足し合わせることにより、修正工数が算出される。
【０００６】
また、特開２０００−９９５７１号公報（以下、特許文献２）には、ソフトウェアを構成する各機能が扱うデータ項目に着目した、より詳細な影響機能の特定方法が開示されている。特許文献２では、ソフトウェアを構成する各機能が扱うデータ項目を予め登録しておき、ある機能のデータ項目に対して変更が起こった場合に、そのデータ項目を参照している他の機能を影響機能として特定する影響機能特定方法が開示されている。
【特許文献１】特開２００６−１３４２２５号公報
【特許文献２】特開２０００−９９５７１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
図１１は、特許文献１に開示されている方法の概要を説明する図である。図１１を参照して、具体例として、ソフトウェアは、機能名１１０１およびデータ項目１１０２，１１０４を含む、３機能「発注指示入力機能」、「発注内容修正機能」、および「発注書出力機能」から構成されているものとする。さらに、各機能は、４種類のコンポーネントＰ層、Ｃ層、Ｆ層、Ｄ層で構成されているものとする。Ｐ層は画面に関するコンポーネント層、Ｃ層はロジック等の制御を行なうコンポーネント層、Ｆ層は計算等のロジックに関するコンポーネント層、およびＤ層はデータベース接続等に関するコンポーネント層を指す。上記４種類のコンポーネントの内、データベース接続等に関するＤ層を共有する機能を互いに関連のある機能とする。
【０００８】
上記３機能のうちの１機能の修正のためＤ層に修正が行なわれた場合、特許文献１に開示されている方法では、このＤ層を共有する上記３機能のすべてが影響機能として特定され、上記３機能のすべてについて一定の追加修正工数がかかるものとして見積りがされる。
【０００９】
たとえば、Ｄ層を共有する上記３機能から構成されるソフトウェアについて、各機能がデータベースに対して蓄積・取得するデータ項目が図１１に示される項目であって、「発注内容修正機能」の仕様が変更されて、同機能によってデータベースに蓄積されるデータ項目のうち、データ項目１１０２で表わされる「発注内容修正日」が削除される場合を考える。この場合、Ｄ層のコンポーネント１１０３である「ＤＤＤ」について、データ項目１１０２をデータベースに蓄積する部分の修正が必要となる。このため、特許文献１に開示されている方法では、コンポーネント１１０３を共有する「発注指示入力機能」と「発注書出力機能」との２機能が影響機能として特定される。さらに、影響機能１つあたりの追加修正工数（追加修正工数単価）を２倍することにより、追加修正工数が算出される。たとえば、影響機能１つあたりに追加修正工数単価として１０人時が与えられていた場合、これを２倍した２０人時が影響機能１つあたりの追加修正工数として算出される。
【００１０】
しかし、「発注内容修正機能」のデータ項目１１０２である「発注内容修正日」を削除する仕様変更の影響を受ける機能は、図１１に示される各機能が扱うデータ項目より、データ項目１１０４で表わされる「発注内容修正日」をデータベースから取得している「発注書出力機能」のみである。すなわち、影響機能は「発注書出力機能」の１機能のみである。このため、追加修正工数は、「発注書出力機能」の１機能のみについて発生する。このように、特許文献１に開示されている方法では、追加修正工数が多く見積もられてしまう場合があるという課題があった。
【００１１】
また、上記具体例と同様のソフトウェアについて、図１２に示されるように、「発注内容修正機能」の仕様が変更されて、同機能によってデータベースに蓄積されるデータ項目１２０２である「発注内容修正日」とデータ項目１２０３である「発注品名」とについてデータ長が変更される場合を考える。この場合においても、特許文献１の方法では、Ｄ層のコンポーネント１２０６である「ＤＤＤ」を共有する、「発注指示入力機能」と「発注書出力機能」との２機能が影響機能として特定され、追加修正工数単価を２倍することで、追加修正工数が算出される。
【００１２】
しかし、発注内容修正機能の仕様変更に伴う、データ項目１２０２とデータ項目１２０３とのデータ長の変更によって影響を受ける機能は、図１２を参照して、データ項目１２０２については、データ項目１２０４がデータ項目１２０２と同じであるため、データ項目１２０４をデータベースから取得している「発注書出力機能」の１機能のみである。また、データ項目１２０３については、データ項目１２０１とデータ項目１２０５とがデータ項目１２０３と同じであるため、データ項目１２０１をデータベースに蓄積している「発注指示入力機能」と、データ項目１２０５をデータベースから取得している「発注書出力機能」との２機能である。すなわち、影響機能は「発注指示入力機能」と「発注書出力機能」との２機能であるが、「発注指示入力機能」についてはデータ項目１２０１「発注品名」の１データ項目、「発注書出力機能」についてはデータ項目１２０４「発注内容修正日」とデータ項目１２０５「発注品名」との２データ項目に起因する追加修正工数が必要である。つまり、影響機能によって追加修正工数が異なる。このように、特許文献１に開示されている方法では、追加修正工数の見積について、１つの影響機能に対する追加修正工数を一定として見積を行なうため、上記具体例のように、影響機能ごとに追加修正工数が異なる場合に見積結果が不正確になってしまうという問題があった。
【００１３】
また、特許文献２に開示されている影響機能の特定方法は、特許文献１に開示されている方法とは異なり、ソフトウェアを構成する各機能が扱うデータ項目の情報を利用する。そのため、上記具体例では、Ｄ層を共有する複数の機能の内、ある機能について、Ｄ層の修正が必要となる仕様変更が起こった場合でも、同じＤ層を共有する他の機能は、データ項目を共有していない限り、特許文献１の方法のように誤って影響機能として特定されることはない。
【００１４】
しかしながら、特許文献２の方法では、ソフトウェアを構成する各機能が扱うデータ項目について、各データ項目が、ソフトウェアを構成する各機能にとって、データベースに蓄積されるデータ項目なのか、それともデータベースから取得されるデータ項目なのかを考慮していない。
【００１５】
たとえば、「発注指示入力機能」、「発注内容修正機能」、および「発注書出力機能」の３機能から構成されるソフトウェアについて、各機能がデータベースに対して蓄積・取得するデータ項目が図１３に示される項目である場合を考える。
【００１６】
図１３において、データ項目１３０１である「発注日」は「発注指示入力機能」によってデータベースに蓄積され、データ項目１３０２である「発注日」は「発注内容修正機能」によってデータベースから取得され、データ項目１３０３である「発注日」は「発注書出力機能」によってデータベースから取得される。
【００１７】
ここで、「発注内容修正機能」の仕様変更によって、同機能がデータベースから取得しているデータ項目１３０２「発注日」が削除されることになったとする。この場合、データ項目１３０２「発注日」は、「発注内容修正機能」においては、データベースから取得されるデータ項目であるため、上記仕様変更はデータ項目「発注日」をデータベースに蓄積する「発注指示入力機能」と、データベースから取得する「発注書出力機能」とへ影響しない。従って、この場合には、「発注内容修正機能」の仕様変更に伴う追加修正工数は発生しない。
【００１８】
しかしながら、特許文献２に開示されている方法では、ある機能においてあるデータ項目が変更されると、同じデータ項目を扱う他の機能のすべてが影響機能として特定される。そのため、たとえば上記具体例の場合でも、実際には影響を受けない、データ項目「発注日」をデータベースに蓄積する「発注指示入力機能」と、データベースから取得する「発注書出力機能」との２機能が影響機能として特定されてしまう。従って、特許文献２の影響機能を特定する方法を追加修正工数の見積に利用した場合、上記具体例に示されるように、本来は発生しない追加修正工数を勘定してしまい、見積結果が不正確になってしまうという問題があった。すなわち、特許文献２の方法では、ある機能の仕様変更のために、同機能が扱うデータ項目が削除された場合に、影響機能の特定が正確に行なわれないために、見積結果が不正確になってしまうという問題があった。
【００１９】
本発明はこれらの問題に鑑みてなされたものであって、影響機能を的確に特定し、追加修正工数を正確に見積もることで、正確な修正工数見積を行なうことのできる修正工数見積装置、修正工数見積方法、および修正工数見積プログラムを提供することを目的とする。
【課題を解決するための手段】
【００２０】
上記目的を達成するために、本発明のある局面に従うと、修正工数見積装置は、データベースに対してデータ項目を蓄積または取得する機能である第１機能を含む、複数の機能から構成されるソフトウェアにおいて、第１機能の仕様変更に伴うソフトウェアの修正に要する工数を見積もる装置であって、仕様変更によって必要となる第１機能に対する修正の内容を示す情報を取得する修正内容取得手段と、第１機能の修正に関わるデータ項目をデータベースに対して蓄積または取得する第２機能を、第１機能の修正の影響を受ける影響機能として特定する影響機能特定手段と、１つの影響機能を修正するために必要な工数を換算するための係数である追加修正工数換算係数を取得する係数取得手段と、影響機能特定手段によって特定された影響機能の数と、係数取得手段によって取得された追加修正工数換算係数とから、影響機能を修正するために必要な工数を算出する追加修正工数算出手段と、第１機能を修正するために必要な工数と、追加修正工数算出手段で算出された影響機能を修正するために必要な工数とから、ソフトウェアの修正に要する総工数を算出する総修正工数算出手段とを備える。
【００２１】
好ましくは、第１機能に対する修正の内容を示す情報は、第１機能の名前と、第１機能に対してどの区分に類する修正が行なわれるのかを示す修正区分名と、第１機能によってデータベースに対して蓄積または取得されるデータ項目のうち、修正されるデータ項目のリストとを含む。
【００２２】
好ましくは、修正工数見積装置は、ソフトウェアを構成する機能ごとに、データベースに蓄積されるデータ項目および／またはデータベースから取得されるデータ項目を記載した第１テーブルを格納する手段をさらに備え、影響機能特定手段は第１テーブルを参照して、第１機能によってデータベースに対して蓄積または取得されるデータ項目のうち、修正されるデータ項目ごとに、データ項目をデータベースに対して蓄積および／または取得する第２機能を抽出して、影響機能として特定する。
【００２３】
より好ましくは、第１機能の修正によって修正に関わるデータ項目が変更される場合には、影響機能特定手段は第１テーブルを参照して、上記データ項目をデータベースに蓄積する第２機能と、上記データ項目をデータベースから取得する第３機能とを抽出して、影響機能として特定する。
【００２４】
また好ましくは、第１機能の修正によって修正に関わるデータ項目が削除される場合には、影響機能特定手段は第１テーブルを参照して、第１機能が上記データ項目を前記データベースに蓄積する機能であって、上記データ項目をデータベースに蓄積する第４機能が抽出されると、影響機能はないものとする。
【００２５】
また好ましくは、第１機能の修正によって修正に関わるデータ項目が削除される場合には、影響機能特定手段は第１テーブルを参照して、第１機能が上記データ項目をデータベースに蓄積する機能であって、上記データ項目をデータベースに蓄積する第４機能が抽出されないときには、上記データ項目をデータベースから取得する第３機能を抽出して、影響機能として特定する。
【００２６】
また好ましくは、第１機能の修正によって修正に関わるデータ項目が削除される場合には、影響機能特定手段は第１テーブルを参照して、第１機能が上記データ項目をデータベースから取得する機能であるときには、影響機能はないものとする。
【００２７】
好ましくは、修正工数見積装置は、仕様変更された機能の修正の区分ごとに、当該修正に要する工数を記載した第２テーブルを格納する手段をさらに備え、総修正工数算出手段は第２テーブルを参照して、第１機能の修正の区分に応じた工数を取得し、追加修正工数算出手段で算出された影響機能を修正するために必要な工数に加算することで総工数を算出する。
【００２８】
本発明の他の局面に従うと、修正工数見積方法は、データベースに対してデータ項目を蓄積または取得する機能である第１機能を含む、複数の機能から構成されるソフトウェアにおいて、第１機能の仕様変更に伴うソフトウェアの修正に要する工数を、修正工数見積装置を用いて見積もる方法であって、仕様変更によって必要となる第１機能に対する修正の内容を示す情報を取得するステップと、第１機能の修正に関わるデータ項目をデータベースに対して蓄積または取得する第２機能を、第１機能の修正の影響を受ける影響機能として特定する特定ステップと、１つの影響機能を修正するために必要な工数を換算するための係数である追加修正工数換算係数を取得するステップと、特定された影響機能の数と取得された追加修正工数換算係数とから、影響機能を修正するために必要な工数を算出するステップと、第１機能を修正するために必要な工数を取得するステップと、第１機能を修正するために必要な工数と、影響機能を修正するために必要な工数とから、ソフトウェアの修正に要する総工数を算出するステップとを備える。
【００２９】
好ましくは、特定ステップは、第１機能の前記修正に関わるデータ項目をデータベースに対して蓄積または取得する前記第２機能を抽出するステップと、上記データ項目が、修正に伴って変更されるのか、削除されるかを判断するステップと、上記データ項目が、修正に伴って削除される場合、第１機能が上記データ項目をデータベースに対して蓄積するのかデータベースから取得するのかを判断するステップとを含み、上記データ項目が修正に伴って変更される場合には第２機能を影響機能として特定し、上記データ項目が修正に伴って削除され、かつ第１機能が上記データ項目をデータベースから取得する場合に影響機能がないものとし、上記データ項目が修正に伴って削除され、かつ第１機能が上記データ項目をデータベースに対して蓄積する場合であって、さらに第２機能が上記データ項目をデータベースに対して蓄積する場合には影響機能がないものとし、上記データ項目が修正に伴って削除され、かつ第１機能が上記データ項目をデータベースに対して蓄積する場合であって、さらに上記データ項目をデータベースに対して蓄積する機能がない場合には、上記データ項目をデータベースから取得する第２機能を影響機能として特定する。
【００３０】
本発明のさらに他の局面に従うと、修正工数見積プログラムは、データベースに対してデータ項目を蓄積または取得する機能である第１機能を含む、複数の機能から構成されるソフトウェアにおいて、第１機能の仕様変更に伴うソフトウェアの修正に要する工数を見積もる処理をコンピュータに実行させるプログラムであって、仕様変更によって必要となる第１機能に対する修正の内容を示す情報を取得するステップと、第１機能の修正に関わるデータ項目をデータベースに対して蓄積または取得する第２機能を、第１機能の修正の影響を受ける影響機能として特定する特定ステップと、１つの影響機能を修正するために必要な工数を換算するための係数である追加修正工数換算係数を取得するステップと、特定された影響機能の数と取得された追加修正工数換算係数とから、影響機能を修正するために必要な工数を算出するステップと、第１機能を修正するために必要な工数を取得するステップと、第１機能を修正するために必要な工数と、影響機能を修正するために必要な工数とから、ソフトウェアの修正に要する総工数を算出するステップとを実行させる。
【００３１】
好ましくは、特定ステップは、第１機能の修正に関わるデータ項目をデータベースに対して蓄積または取得する第２機能を抽出するステップと、上記データ項目が、修正に伴って変更されるのか、削除されるかを判断するステップと、上記データ項目が、修正に伴って削除される場合、第１機能が上記データ項目をデータベースに対して蓄積するのかデータベースから取得するのかを判断するステップとを含み、上記データ項目が修正に伴って変更される場合には第２機能を影響機能として特定し、上記データ項目が修正に伴って削除され、かつ第１機能が上記データ項目をデータベースから取得する場合には影響機能がないものとし、上記データ項目が修正に伴って削除され、かつ第１機能が上記データ項目をデータベースに対して蓄積する場合であって、さらに第２機能が上記データ項目をデータベースに対して蓄積する場合には影響機能がないものとし、上記データ項目が修正に伴って削除され、かつ第１機能が上記データ項目をデータベースに対して蓄積する場合であって、さらに上記データ項目をデータベースに対して蓄積する機能がない場合には、データ項目をデータベースから取得する第２機能を影響機能として特定する。
【発明の効果】
【００３２】
本発明によって、影響機能の特定と追加修正工数の見積とが正確に行なえるようになるため、正確な修正工数見積結果を得ることが可能となる。
【発明を実施するための最良の形態】
【００３３】
以下に、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。
【００３４】
本実施の形態にかかる修正工数見積装置１は、一般的なパーソナルコンピュータによって実現され、そのハードウェア構成は、ＣＰＵ（Central Processing Unit）やＲＡＭ（Random Access Memory）等を備える一般的なコンピュータのハードウェア構成と同様である。
【００３５】
図１は、本実施の形態にかかる修正工数見積装置１の機能構成の具体例を示すブロック図である。図１に示される各機能は、パーソナルコンピュータ等である修正工数見積装置１において、ＣＰＵがＲＡＭ等の記憶装置に記憶される修正工数見積プログラムを実行することで主にＣＰＵに形成される機能であり、その一部はハードウェアによって実現される機能であってもよい。
【００３６】
修正工数見積装置１で、ソフトウェアの仕様変更に伴うソースプログラムの修正に要する工数を見積もる処理を行なうための機能構成は、図１を参照して、修正内容取得部１０１、機能別ＤＢ（データベース）蓄積・取得データ項目テーブル格納部１０２、影響機能特定部１０３、追加修正工数換算係数取得部１０４、追加修正工数算出部１０５、修正区分別主修正工数テーブル格納部１０６、および総修正工数算出部１０７を含んで構成される。
【００３７】
修正内容取得部１０１は、修正内容を示す情報を取得する。取得された修正内容を示す情報は、影響機能特定部１０３および総修正工数算出部１０７に入力される。
【００３８】
図２に、修正内容取得部１０１で取得される、修正内容を示す情報の具体例が示される。図２に示されるように、修正内容取得部１０１で取得される修正内容を示す情報には、主修正機能名２０１、修正区分名２０２、および修正データ項目のリスト２０３が含まれる。図２に示される修正内容を示す情報は、たとえば、仕様策定者等のユーザによって作成される。
【００３９】
修正内容を示す情報において、主修正機能名２０１は、ソフトウェアを構成する機能の内、仕様の変更が起こった機能名を示す。修正区分名２０２は、予め用意された修正内容を示す修正区分のうちの、上記主修正機能に対して行なう修正内容を示す区分名を示す。修正データ項目のリスト２０３は、主修正機能に対する修正により、仕様変更または削除が必要となるデータ項目とその内容（仕様変更か、削除）との対応を示すリストである。
【００４０】
なお、ここで、データ項目の仕様変更とは、データ長の変更や、日付データ等のデータ表現形式の変更など、データ項目を扱う機能の修正を要する変更を意味する。
【００４１】
機能別ＤＢ蓄積・取得データ項目テーブル格納部１０２は、ソフトウェアを構成する機能ごとに機能別ＤＢ蓄積・取得データ項目テーブルを保持する。図３は、機能別ＤＢ蓄積・取得データ項目テーブル格納部１０２に保持される機能別ＤＢ蓄積・取得データ項目テーブルの具体例を示す図である。図３を参照して、機能別ＤＢ蓄積・取得データ項目テーブルには、データベースに蓄積されるデータ項目３０１とデータベースから取得されるデータ項目３０２とが列挙される。機能別ＤＢ蓄積・取得データ項目テーブルは、設計者等のユーザにより、ソフトウェアの設計情報等を用いて予め作成されて格納される。
【００４２】
影響機能特定部１０３は、修正内容取得部１０１で取得された修正内容と、機能別ＤＢ蓄積・取得データ項目テーブル格納部１０２内の機能別ＤＢ蓄積・取得データ項目テーブルとを用いて、修正データ項目ごとに影響機能を特定し、影響機能が扱うデータ項目の内、いくつのデータ項目が影響を受けるのかを算出する（算出されたデータ項目を、以下影響データ項目と称する）。そして、算出結果を追加修正工数算出部１０５に入力する。詳細については、後述する。
【００４３】
追加修正工数換算係数取得部１０４は、設計者等のユーザからの入力を受付けることで、影響データ項目１つあたりの追加修正工数（以下、追加修正工数換算係数）を取得し、追加修正工数算出部１０５に入力する。この値は、主観もしくは過去データの分析等により決定される。
【００４４】
追加修正工数算出部１０５は、影響機能特定部１０３で算出された影響データ項目数と、追加修正工数換算係数取得部１０４で取得された追加修正工数換算係数とを掛けることにより、追加修正工数を算出する。算出された追加修正工数は、総修正工数算出部１０７に入力される。
【００４５】
修正区分別主修正工数テーブル格納部１０６は、修正区分別主修正工数テーブルを保持する。図４は、修正区分別主修正工数テーブル格納部１０６に保持される修正区分別主修正工数テーブルの具体例を示す図である。図４を参照して、修正区分別主修正工数テーブルには、修正区分名４０１と、その修正区分名に類する修正を主修正機能に対して行なうのに必要な工数（以下、主修正工数）４０２との組が列挙される。修正区分別主修正工数テーブルは、設計者等のユーザにより予め作成されて格納される。
【００４６】
総修正工数算出部１０７は、修正内容取得部１０１で取得された修正内容に記載された修正区分名をキーとして、修正区分別主修正工数テーブル格納部１０６内の修正区分別主修正工数テーブルを検索し、主修正工数を取得する。取得された主修正工数を、追加修正工数算出部１０５で算出された追加修正工数と足し合わせることにより、総修正工数が算出される。
【００４７】
図５は、本実施の形態にかかる修正工数見積装置１におけるソフトウェアの仕様変更に伴うソースプログラムの修正に要する工数を見積もる処理を示したフローチャートである。図５のフローチャートに示される処理は、修正工数見積装置１のＣＰＵがＲＡＭ等の記憶装置に記憶される修正工数見積プログラムを実行し、図１に示される各部を制御することで実現される。
【００４８】
図５を参照して、始めに、ステップＳ５０１において、修正内容取得部１０１は図２に示されたような修正内容を示す情報を取得する。
【００４９】
次に、ステップＳ５０２において、影響機能特定部１０３は、ステップＳ５０１で取得された修正内容を示す情報のうちの修正データ項目のリストと、機能別ＤＢ蓄積・取得データ項目テーブル格納部１０２に保持される機能別ＤＢ蓄積・取得データ項目テーブルとを用いて修正データ項目ごとに影響機能を特定し、影響データ項目数を算出する。
【００５０】
次に、ステップＳ５０３において、追加修正工数換算係数取得部１０４は追加修正工数換算係数を取得し、ステップＳ５０４において、追加修正工数算出部１０５は、ステップＳ５０２で算出された影響データ項目数と、ステップＳ５０３で取得された追加修正工数換算係数とを掛けることで追加修正工数を算出する。
【００５１】
次に、ステップＳ５０５において、総修正工数算出部１０７は、上記ステップＳ５０１で取得された修正内容の修正区分名をキーとして、修正区分別主修正工数テーブル格納部１０６内の修正区分別主修正工数テーブルを検索し、修正区分名に類する修正を主修正機能に対して行なうのに必要な工数である主修正工数を取得する。
【００５２】
ステップＳ５０６において、総修正工数算出部１０７は、ステップＳ５０４で算出された追加修正工数と、ステップＳ５０５で取得された主修正工数とを足し合わせ、総修正工数を算出し、出力する。
【００５３】
さらに、上記ステップＳ５０２において影響機能を特定し、影響データ項目数を算出する処理について、図６にフローチャートを示す。
【００５４】
図６を参照して、影響機能特定部１０３は、まず、初期値の影響データ項目数を初期化した後（ステップＳ６０１）、修正データ項目リスト内の修正データ項目１つずつについて以下のステップＳ６０３〜Ｓ６１１の処理を実行する（ステップＳ６０２）。
【００５５】
ステップＳ６０３において、影響機能特定部１０３は、修正データ項目リストから修正データ項目１つを取得し、ステップＳ６０４において、その修正データ項目を扱っている他の機能を、機能別ＤＢ蓄積・取得データ項目テーブルを用いて抽出する。
【００５６】
たとえば、各機能と修正データ項目との関係が図７に示されるような関係である場合、つまり、ステップＳ６０３で取得した修正データ項目７０５が、主修正機能７０１と他機能ａ（７０２）とによってデータベースに蓄積され、他機能ｂ（７０３）と他機能ｃ（７０４）とによってデータベースから取得されている場合、影響機能特定部１０３は、機能別ＤＢ蓄積・取得データ項目テーブルを参照することによって、修正データ項目７０５に対する修正によって影響を受ける可能性のある機能（他機能ａ〜ｃ）を抽出する。
【００５７】
次に、ステップＳ６０５において、影響機能特定部１０３は、上記ステップＳ６０３で取得された修正データ項目の修正内容が、仕様変更か削除かを判断する。そして、仕様変更と判断された場合は（ステップＳ６０５で「仕様変更」）、ステップＳ６０６において、ステップＳ６０４で抽出された他の機能の数を影響機能数として特定する。たとえば図７に示された具体例において、主修正機能７０１において修正データ項目７０５の仕様変更が行なわれた場合、修正データ項目７０５を扱っている他機能ａ（７０２），他機能ｂ（７０３）、および他機能ｃ（７０４）の３機能についても修正データ項目７０５の仕様変更の影響を受ける。そこで、ステップＳ６０６において影響機能数が３と特定される。
【００５８】
一方、上記ステップＳ６０５において、上記ステップＳ６０３で取得された修正データ項目の修正内容が削除であると判断された場合は（ステップＳ６０５で「削除」）、ステップＳ６０７において、ステップＳ６０３で取得された修正データ項目が、主修正機能において、データベースに対して蓄積されるデータ項目なのか、データベースから取得されるデータ項目なのかが判断される。
【００５９】
蓄積されるデータ項目であると判断された場合には（ステップＳ６０７で「蓄積」）、ステップＳ６０８において、ステップＳ６０３で取得された修正データ項目がその他の機能により蓄積されているか否かが判断される。
【００６０】
その他の機能により蓄積されていると判断された場合は（ステップＳ６０８で「行なわれている」）、ステップＳ６０９で影響機能特定部１０３は影響機能はないと判断し、影響機能数を０と特定する。たとえば図７に示された具体例において、修正データ項目７０５を蓄積する主修正機能７０１において、修正データ項目７０５が削除されたとしても、修正データ項目７０５は、他機能ａ（７０２）によって蓄積されている。そのため、上記ステップＳ６０９で影響機能特定部１０３は、他機能ａ（７０２）への影響はもとより、修正データ項目７０５を取得している他機能ｂ（７０３），他機能ｃ（７０４）への影響もない。そこで、上記ステップＳ６０９で、影響機能数は０と特定される。
【００６１】
一方、上記ステップＳ６０８において、ステップＳ６０３で取得された修正データ項目がその他の機能により蓄積されていないと判断された場合は（ステップＳ６０８で「行なわれていない」）、ステップＳ６１０で影響機能特定部１０３は、上記ステップＳ６０４で抽出された機能の内、上記修正データ項目をデータベースから取得している他の機能の数を影響機能とする。たとえば、各機能と修正データ項目との関係が図８に示されるような関係である場合、つまり、ステップＳ６０３で取得された修正データ項目８０４が、主修正機能８０１のみによってデータベースに蓄積され、他機能ｂ（８０２），他機能ｃ（８０３）によってデータベースから取得されている場合、主修正機能８０１において、修正データ項目８０４が削除されると、修正データ項目８０４を蓄積する機能が存在しなくなるので、修正データ項目８０４をデータベースより取得している他機能ｂ（８０２），他機能ｃ（８０３）の２機能が影響を受ける。そこで、ステップＳ６１０において影響機能数が２と特定される。
【００６２】
また一方、上記ステップＳ６０７において、ステップＳ６０３で取得された修正データ項目が、主修正機能により取得されているデータ項目であると判断された場合には（ステップＳ６０７で「取得」）、ステップＳ６０９で影響機能特定部１０３は、影響機能はないと判断し、影響機能数を０と特定する。たとえば、各機能と修正データ項目との関係が図９に示されるような関係である場合、つまり、ステップＳ６０３で取得された修正データ項目９０４が、他機能ａ（９０１）によってデータベースに蓄積され、他機能ｂ（９０２），主修正機能（９０３）によってデータベースから取得されている場合、主修正機能（９０３）において、修正データ項目９０４が削除されても、修正データ項目９０４を蓄積している他機能ａ（９０１）、および取得している他機能ｂ（９０２）への影響はない。そこで、ステップＳ６０９において、影響機能数が０と特定される。
【００６３】
そして、ステップＳ６１１で影響機能特定部１０３は、上記ステップＳ６０３で取得された修正データ項目について、上記ステップＳ６０６，Ｓ６０６，またはＳ６１０で特定された影響機能数を影響データ項目数に加算する。ステップＳ６１１で加算して得られる影響データ項目数は、主修正機能がデータベースに対して蓄積・取得するデータ項目について仕様変更または削除が起こった場合に、影響機能がデータベースに対して蓄積・取得しているデータ項目の内、影響を受けるデータ項目（影響データ項目）の数を表している。
【００６４】
たとえば、上記ステップＳ５０１において図２に示された修正内容を示す情報が取得され、機能別ＤＢ蓄積・取得データ項目テーブル格納部１０２内の機能別ＤＢ蓄積・取得データ項目テーブルが図３に示されたものである場合、影響機能特定部１０３は、機能別ＤＢ蓄積・取得データ項目テーブルを検索して、主修正機能「発注内容修正機能」１００１において削除されるデータ項目「発注内容修正日」を扱っている他の機能を抽出する。この例では、各機能と修正データ項目との関係が図１０に示されるような関係であるため、修正データ項目１００３「発注内容修正日」をデータベースから取得している「発注書出力機能」１００２が抽出される。この場合は、上記ステップＳ６１０において、影響機能数は１と特定され、影響データ項目数も１と特定される。
【００６５】
さらに、上記ステップＳ５０３において追加修正工数換算係数が１０人時／影響データ項目と取得されると、上記ステップＳ５０３で追加修正工数算出部１０５において、追加修正工数が、１（影響データ項目数）×１０（１０人時／影響データ項目）で１０人時と算出される。
【００６６】
また、上記ステップＳ５０１で図２に示される修正内容を示す情報が取得され、修正区分別主修正工数テーブルが図４に示されるものである場合、上記ステップＳ５０５で総修正工数算出部１０７は、修正区分名「データ項目削除」をキーとして修正区分別主修正工数テーブルを検索し、図４のデータ項目追加４０３の主修正工数２０人時が取得される。
【００６７】
したがって、この具体例の場合、上記ステップＳ５０６で総修正工数算出部１０７において、ステップ５０４で算出された追加修正工数１０人時と、ステップＳ５０５で取得された主修正工数２０人時とが足し合わされて、総修正工数が３０人時と得られる。
【００６８】
さらに、上述の本実施の形態にかかる修正工数見積装置１におけるソフトウェアの仕様変更に伴うソースプログラムの修正に要する工数を見積もる方法を、プログラムとして提供することもできる。このようなプログラムは、コンピュータに付属するフレキシブルディスク、ＣＤ−ＲＯＭ（Compact Disk-Read Only Memory）、ＲＯＭ（Read Only Memory）、ＲＡＭおよびメモリカードなどのコンピュータ読取り可能な記録媒体にて記録させて、プログラム製品として提供することもできる。あるいは、コンピュータに内蔵するハードディスクなどの記録媒体にて記録させて、プログラムを提供することもできる。また、ネットワークを介したダウンロードによって、プログラムを提供することもできる。
【００６９】
なお、本発明にかかるプログラムは、コンピュータのオペレーションシステム（ＯＳ）の一部として提供されるプログラムモジュールのうち、必要なモジュールを所定の配列で所定のタイミングで呼出して処理を実行させるものであってもよい。その場合、プログラム自体には上記モジュールが含まれずＯＳと協働して処理が実行される。このようなモジュールを含まないプログラムも、本発明にかかるプログラムに含まれ得る。
【００７０】
また、本発明にかかるプログラムは他のプログラムの一部に組込まれて提供されるものであってもよい。その場合にも、プログラム自体には上記他のプログラムに含まれるモジュールが含まれず、他のプログラムと協働して処理が実行される。このような他のプログラムに組込まれたプログラムも、本発明にかかるプログラムに含まれ得る。
【００７１】
提供されるプログラム製品は、ハードディスクなどのプログラム格納部にインストールされて実行される。なお、プログラム製品は、プログラム自体と、プログラムが記録された記録媒体とを含む。
【００７２】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【００７３】
【図１】修正工数見積装置１の機能構成の具体例を示すブロック図である。
【図２】修正内容を示す情報の具体例を示す図である
【図３】機能別ＤＢ蓄積・取得データ項目テーブルの具体例を示す図である。
【図４】修正区分別主修正工数テーブルの具体例を示す図である。
【図５】修正工数見積装置１におけるソフトウェアの仕様変更に伴うソースプログラムの修正に要する工数を見積もる処理を示したフローチャートである。
【図６】ステップＳ５０２において影響機能を特定し、影響データ項目数を算出する処理を示したフローチャートである。
【図７】各機能と修正データ項目との関係の具体例を説明する図である。
【図８】各機能と修正データ項目との関係の具体例を説明する図である。
【図９】各機能と修正データ項目との関係の具体例を説明する図である。
【図１０】各機能と修正データ項目との関係の具体例を説明する図である。
【図１１】従来の、ソフトウェアの修正工数見積方法を説明する図である。
【図１２】従来の、ソフトウェアの修正工数見積方法を説明する図である。
【図１３】従来の、影響機能の特定方法を説明する図である。
【符号の説明】
【００７４】
１  修正工数見積装置、１０１  修正内容取得部、１０２  機能別ＤＢ蓄積・取得データ項目テーブル格納部、１０３  影響機能特定部、１０４  追加修正工数換算係数取得部、１０５  追加修正工数算出部、１０６  修正区分別主修正工数テーブル格納部、１０７  総修正工数算出部、２０１  主修正機能名、２０２  修正区分名、２０３  修正データ項目のリスト、３０１，３０２，１１０２，１１０４，１２０１〜１２０５，１３０１〜１３０３  データ項目、４０１  修正区分名、４０２  主修正工数、７０１〜７０４，８０１〜８０３，９０１〜９０３，１００１，１００２  機能、７０５，８０４，９０４，１００３  修正データ項目、１１０１  機能名、１１０３  コンポーネント。
【図１】
2008077482.tif 000003
【図２】
2008077482.tif 000004
【図３】
2008077482.tif 000005
【図４】
2008077482.tif 000006
【図５】
2008077482.tif 000007
【図６】
2008077482.tif 000008
【図７】
2008077482.tif 000009
【図８】
2008077482.tif 000010
【図９】
2008077482.tif 000011
【図１０】
2008077482.tif 000012
【図１１】
2008077482.tif 000013
【図１２】
2008077482.tif 000014
【図１３】
2008077482.tif 000015