(57)【要約】【課題】ステップ数から開発工数の見積を行う従来技術では、修正する処理の内容や、修正がソースコード全体に及ぼす影響が考慮されていない。【解決手段】上記課題は、修正が必要な処理を特定し処理ごとの工数を求める修正箇所特定部と、ソースコードの構造を解析し処理の影響範囲をデータ化する構造解析部と、構造解析部の結果より処理の影響範囲に応じて工数を補正するテスト工数補正係数を求める影響範囲解析部と、修正箇所特定部で求めた工数と影響範囲解析部で求めたテスト工数補正係数より、移植に必要な総工数を、処理ごとの工数とテストに必要な工数を考慮して算出する工数計算部を備えることで達成される。【選択図】図１
2007128193.tif 000002
【特許請求の範囲】
【請求項１】
移植元プラットフォームと移植先プラットフォームでソースコードの移植の際に問題となる処理と、移植に必要な処理ごとの工数を格納した環境データベースと、
移植元ソースコードと環境データベースのデータから移植元ソースコードで修正が必要となる箇所を特定する修正箇所特定部と、
修正を行う処理ごとの工数から移植に必要な総工数を計算する工数計算部を具備することを特徴とする移植工数見積システム。
【請求項２】
修正箇所がどの処理内で実行されているかでテストに要する工数を考慮し、処理の分類に応じて移植に必要な処理ごとの工数を補正するための、テスト工数補正係数を格納したテスト工数データベースと、
ソースコードに使用されている処理の構造を解析し、特定の処理の影響範囲を、処理がどの処理内で実行されているかで表しデータ化する構造解析部と、
移植元ソースコードとテスト工数データベースと構造解析部から、工数を補正するためのテスト工数補正係数を、ソースコードの影響範囲の大きさに応じて補正する影響範囲解析部と、
補正されたテスト工数補正係数により、修正する処理の影響範囲を考慮した移植工数の見積を行う工数計算部を具備することを特徴とする移植工数見積システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウエア開発における移植作業の工数見積に関するものである。
【背景技術】
【０００２】
従来、特開平０７―１９１８３９号公報に記載のように、要求処理がどの種類のプログラム処理の組合せで対処できるかを判断し、プログラム開発に必要な総ステップ数から開発工数の見積を行う方法が知られている。
【０００３】
【特許文献１】特開平０７―１９１８３９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ステップ数から開発工数の見積を行う従来技術においては、工数を見積もるためのステップ数の見積に熟練を要し、個人差が発生するという問題があった。また、処理の内容による工数の差異が考慮されていないという問題があった。
【０００５】
本発明では、ソースコードの移植において、修正が必要となる処理の内容を考慮した工数見積を行うことを目的とする。さらに、修正箇所の影響範囲を考慮しテストに必要な工数の見積を行うことを目的とする。
【課題を解決するための手段】
【０００６】
上記課題は、移植元ソースコードにおいて移植先環境で修正が必要となる処理を特定し処理ごとの工数から移植に必要な工数を求める修正箇所特定部と、ソースコードに使用されている処理の構造を解析し、特定の処理の影響範囲を、処理がどの処理内で実行されているかで表しデータ化する構造解析部と、構造解析部の結果から修正箇所がソースコードに与える影響の大きさを考慮しテストに必要な工数を補正するためのテスト工数補正係数を求める影響範囲解析部と、修正箇所特定部と影響範囲解析部の実行結果より取得する情報からソースコードの移植に必要な総工数を算出する工数計算部を備えることで達成される。
【発明の効果】
【０００７】
ソースコードの移植において、修正が必要となる処理の複雑さや影響範囲を考慮することで、精度の高い見積を行うことができる。
【発明を実施するための最良の形態】
【０００８】
以下、図面を参照して本発明の実施形態について説明する。
【０００９】
図１は、本発明における一実施形態である移植工数見積システムの全体構成図である。移植工数見積システム１００は、本発明を適用したシステムである。移植元ソースコード１０１は、移植工数見積システム１００に与えるための、移植元となるソースコードのファイル群である。利用者１０２は、移植工数見積システム１００の利用者である。入力部１１１は、利用者１０２からの指示や、移植元ソースコード１０１を、移植工数見積システム１００に入力するためのインタフェースである。出力部１１２は、移植工数見積システム１００の処理結果である見積工数を表示するインタフェースである。移植環境データベース１１３は、プラットフォーム間で仕様差のある処理の情報を格納したデータベースである。テスト工数データベース１１４は、影響範囲の大きさに応じて工数を補正するための、係数を格納したデータベースである。修正箇所特定部１２０は、移植元ソースコードから修正が必要となる処理のリストアップを行い、移植環境データベース１１３の情報を基に、修正に必要な工数を修正箇所一覧テーブルに格納する。影響範囲解析部１２１は、修正箇所一覧テーブルにリストアップされた修正箇所が、ソースコードのどの処理内にあるかを解析し、影響範囲の大きさに応じた工数の補正係数を、修正箇所一覧テーブルに格納する。工数計算部１２２は、修正箇所一覧テーブルに格納された、修正箇所ごとの工数と補正係数から、移植に必要な総工数を計算する。修正箇所一覧テーブル１２３は、移植元ソースコードから修正が必要となる処理の位置と、修正に必要な工数と、影響範囲を考慮して工数を補正するための係数を格納するテーブルである。構造解析部１２４は、ソースコードの文法解析を行い、使用されている処理を分類し、処理が及ぼす影響範囲を行番号で出力する処理である。移植工数の見積を行う場合、利用者１０２は移植元ソースコード１０１と、移植元環境のプラットフォームと移植先環境のプラットフォームのデータを入力部１１１に与え、移植工数見積システム１００を起動する。移植工数見積システム１００は、入力部１１１で受けとったデータと、移植環境データベース１１３と、テスト工数データベース１１４から、総工数計算部１１０により移植に必要な総工数を計算し、結果を出力部１１２に出力する。利用者１０２は出力部１１２の表示から、見積結果を得る。総工数計算部１１０では、修正箇所特定部１２０、影響範囲解析部１２１、工数計算部１２２を順に実行することで、移植に必要な総工数の計算を行う。総工数の計算の過程では、修正箇所一覧テーブル１２３が利用される。各部の結果の出力は、修正箇所一覧テーブル１２３のデータを更新することで行い、更新された値は工数計算部１２２の入力としても使用される。修正箇所特定部１２０では、移植環境データベース１１３と移植元ソースコードを元に、修正箇所一覧テーブル１２３に移植が必要な処理と処理ごとの工数を格納する。影響範囲解析部１２１では、テスト工数データベース１１４と移植元ソースコードと更新された修正箇所一覧テーブル１２３の情報を元に、処理の影響範囲に応じたテスト工数補正係数を算出し、修正箇所一覧テーブル１２３に格納する。影響範囲の解析には構造解析部１２４を使用する。工数計算部１２２では、修正箇所一覧テーブル１２３に登録された処理ごとの工数と、テスト工数補正係数から、移植に必要な総工数を計算する。
【００１０】
図２は、移植環境データベース１１３に格納するデータの実施例である。実施例は、表形式でデータを管理する移植環境情報テーブル２００を表し、移植環境２０１と、移植元環境固有処理２０２と、工数２０３からなる。移植環境２０１は、移植を行う環境を、移植元プラットフォームと移植先プラットフォームの組み合わせにより表す。移植元環境固有処理２０２は、移植環境２０１のプラットフォームの組み合わせにおいて、移植時に問題が発生する処理の名前である。具体的には移植元プラットフォームに固有な関数名が該当する。工数２０３は、移植元関数固有処理２０２を、移植環境２０１の条件で単純移植する際に必要となる工数を表す。
【００１１】
図３は、テスト工数データベースに格納するデータの実施例である。実施例は表形式でデータを管理するテスト工数補正係数テーブル３００を表し、分類３０１と、テスト工数補正係数３０２からなる。分類３０１は、ソフトウェア開発で使用される処理の分類である。分類は開発に使用する言語により異なるが、条件分岐や繰返し処理などがあり、Ｃ言語で例えると条件分岐にはif文やcase文が、繰返し処理にはfor文やwhile文が該当する。分類３０１は、影響範囲解析部１２１において、修正が必要となる処理がどの処理内で実行されるかを調べる際、処理名の判別に使用される。テスト工数補正係数３０２は、処理の修正後、テストに必要な工数を考慮に入れ、修正箇所の移植工数を補正するための係数である。テストに必要な工数は、修正箇所がどの処理内で実行されているかで決まる。修正箇所を呼び出した処理の影響範囲が大きければ、テストに必要な工数は大きくなる。例えば、繰返し処理のように別の処理内で実行されている処理と、単体で実行されている処理とでは、ソースコードの修正にかかる工数自体に差はないが、修正が与える影響は繰返し処理内の処理を修正する方が大きくなるため、テストに必要な工数は大きくなる。このため、テスト工数補正係数は、分類３０１の処理がソースコード全体に及ぼす影響の大きさを表しているといえる。修正に必要な処理が分類３０１の処理内で実行されている場合に、テスト補正係数３０２を工数に乗じることで、工数を補正する。影響範囲が大きな処理では、テスト工数補正係数は１を超える値が設定され、複数のプラットフォームで共通の処理を移植する場合などは、１より小さな値が設定される。
【００１２】
図４は、図１で示した修正箇所一覧テーブル１２３の詳細図である。移植工数見積システムでは、移植元ソースコードにおいて修正を要する処理の情報を、修正箇所一覧テーブルに格納する。また、移植に必要な総工数の算出も、修正箇所一覧テーブルの情報を元に行う。ソースファイル名４０１は、修正を要する処理の記述されているソースコードのファイル名である。修正箇所特定部１２１を実行することで設定され、影響範囲解析部１２１において、修正箇所の影響範囲を解析する際に使用される。行番号４０２は、ソースファイル４０２において、修正を要する処理が記述されている行番号を表す。修正箇所は、ソースファイル名４０１と行番号４０２により一意に決まるため、管理にはこれらの値を使用する。修正箇所特定部１２１を実行することで設定され、影響範囲解析部１２１において、修正箇所の影響範囲を解析する際に使用される。修正を要する処理４０３は、修正を要する処理の名前を表し、移植環境情報テーブル２００に格納されている移植元環境固有処理２０２に示す名前を使用する。修正箇所特定部１２０を実行することで設定され、影響範囲解析部１２１において、修正箇所の影響範囲を解析する際に使用される。単体工数４０４は、修正を要する処理４０３を単純移植する際に必要となる工数である。単体工数４０４は、修正を要する処理４０３により一意に決まり、修正を要する処理４０３に一致する移植元環境固有処理２０２に対応する工数２０３の値が設定される。修正箇所特定部１２１を実行することで設定され、工数計算部１２２において、修正箇所移植工数の計算に使用される。テスト工数補正係数４０５は、修正の影響範囲の大きさを考慮に入れ、修正箇所の工数を補正するための係数である。初期値には１が設定されるが、影響範囲解析部１２１を実行することで、修正箇所の影響範囲に応じて更新される。最終的な値は、工数計算部１２２において、修正箇所移植工数の計算に使用される。
【００１３】
図５は、移植にかかる総工数を出力するまでの処理手順を示す。まず、利用者が移植元および移植先の環境情報を指定する(５０２)。指定した移植環境が、移植環境情報テーブル２００内の移植環境２０１と一致する場合、対応する移植元環境固有処理２０２と工数２０３を使用する。次に、移植元ソースコードを取得する(５０３)。次に、修正箇所特定処理の実行により、移植元ソースコードと移植環境データベースから、修正箇所一覧テーブルのソースファイル名４０１、行番号４０２、修正を要する処理４０３、単体工数４０４を更新する(５０４)。処理の詳細は図６で説明する。次に、影響範囲解析処理の実行により、修正箇所一覧テーブルの、テスト工数補正係数４０５を更新する(５０５)。処理の詳細は図７で説明する。次に、工数計算処理の実行により、修正箇所一覧テーブルから移植に必要な総工数を計算する(５０６)。処理の詳細は図８で説明する。以上の処理を、ソースコードのファイル全てに対して繰り返す(５０１)(５０７)。最後に、工数計算５０６で計算された総工数を表示する。
【００１４】
図６は、修正箇所特定処理の手順を示す。まず、移植環境情報テーブル２００のうち、対象とする移植環境２０１の、移植元環境固有処理２０２全てを読み込む(６０１)。次に、ソースコード全ての行に対して、以下の処理を繰り返す(６０２)。次に、読み込んだ移植元環境固有処理２０２全てに対して、以下の処理を繰り返す(６０３)。次に、ソースコードの現在行に記述されている処理が、移植元環境固有処理２０２と一致するかを、処理名を使用して文字列で判定する(６０４)。一致したら、修正箇所一覧テーブル１２３にデータの登録を行う。ソースファイル名４０１には現在検索を行っているソースファイル名を、行番号４０２にはソースコードの現在行を、修正を要する処理４０３には移植元環境固有処理２０２を、単体工数４０４に移植環境情報テーブル２００の工数２０３を、それぞれ登録する(６０５)。以上の処理が終わると、次の移植元固有処理２０２を検索の対象とする(６０６)。以上の処理が終わると、ソースコードの次の行を現在行とする(６０７)。
【００１５】
図７は、影響範囲解析処理の手順を示す。大きな流れとしては、最初にソースコードの構造解析を行い修正箇所の影響範囲を求め(７０１〜７０３)、結果に応じたテスト工数補正係数の更新を行う(７０４〜７１０)。まず、構造解析部１２４を起動して、修正元ソースコードの構造解析を行う(７０１)。ここで構造解析部１２４は、ソースコードの文法解析により、ソースコードに使用されている処理を分類する機能を持つ。また、分類した処理が影響を及ぼす範囲として開始行番号と終了行番号で表される構造情報を出力する機能を持つ。例えば、特開平５−３４１９７３に、ソースコードの構造解析結果をＰＡＤ図による表現形式で出力する技術がある。次に、構造解析部１２４の解析結果を元に、構造情報テーブル９００を更新する。構造情報テーブルの実施例は図９に示す。修正元ソースコードに使用されている処理全てをテスト工数補正係数テーブルにある分類３０１で分類し、結果を構造情報テーブルの処理分類９０４に格納する。また、処理が使用されているソースファイル名と影響範囲を表す開始行番号および終了行番号を、構造情報テーブルのソースファイル名９０１、開始行番号９０２、終了行番号９０３に格納する(７０２)。次に、構造情報テーブルの処理分類９０４に応じたテスト工数補正係数を、テスト工数補正テーブルより取得し、構造情報テーブルのテスト補正係数９０５に格納する(７０３)。構造情報テーブルの作成を終えると、修正箇所の影響範囲を解析し、修正箇所一覧テーブルのテスト補正係数を更新する。まず、修正箇所一覧テーブルの修正箇所全てに対して、以下の処理を繰り返す(７０４)。次に、構造情報テーブルの項目全てに対して、以下の処理を繰り返す(７０５)。次に、修正箇所を呼び出している処理を検索する。検索は、修正箇所の行番号が、構造情報テーブルの開始行番号９０２と終了行番号９０３の間に含まれるかを判定することで行う(７０６)。修正箇所が、検索対象の処理に含まれている場合、処理の分類に応じて修正箇所のテスト工数補正係数を修正する。まず、検索で一致した処理のテスト補正係数を構造情報テーブルから取得する(７０７)。次に、前処理で取得したテスト工数補正係数を、修正箇所一覧テーブルのテスト工数補正係数に乗じることで、値を更新する(７０８)。更新が終わると、構造情報テーブルの次の項目に対して、上記の処理を繰り返す(７０９)。構造情報テーブルの全ての項目を終えると、情報構造テーブルの次の修正箇所に対して、上記の処理を繰り返す(７１０)。
【００１６】
図８は、総工数計算処理の手順を示す。まず、修正箇所一覧テーブル１２３の全ての修正を要する処理４０３に対して、以下の処理を繰り返す(８０１)。次に、修正箇所一覧テーブル１２３の単体工数４０４と、テスト工数補正係数４０５の積を求め、処理ごとの移植工数を算出する(８０２)。次に、前処理８０２で求めた処理ごとの移植工数を、総工数に加算する(８０３)。以上の処理が終わると、次の修正を要する処理４０３の移植工数を求める(８０４)。
【００１７】
図９は、影響範囲解析部で作成する、ソースコードの構造を表すデータの実施例である。実施例は表形式でデータを管理する構造情報テーブル９００を表し、ソースファイル名９０１と、開始行番号９０２と、終了行番号９０３と、分類９０４と、テスト工数補正係数９０５からなる。構造情報テーブルは、ソースコードで使用されている処理を分類９０４で分類し、その位置をソースファイル名９０１、開始行番号９０２、終了行番号９０３で管理する。ソースファイル名９０１は、構造情報の解析対象であるソースコードのファイル名である。開始行番号９０２と終了行番号９０３は、分類９０４で表される処理が有効な範囲をソースファイル９０１内の行番号で表したものである。ソースコード上の記述が１行だけの処理の場合、開始行番号と終了行番号は等しくなる。分類９０４は、ソースコードで使用されている処理の内容を表し、分類にはテスト工数補正係数テーブルの分類３０１と同じ表現を使用する。テスト工数補正係数９０５は、テスト工数補正係数テーブル３００から取得した、分類９０４に対応するテスト工数補正係数を格納する場所である。構造情報テーブル９００は、影響範囲解析部１２１が実行する構造解析部１２４により作成される。
【図面の簡単な説明】
【００１８】
【図１】本発明における一実施形態である移植工数見積システムの全体構成図である。
【図２】移植環境データベース(１１３)に格納されている移植環境情報テーブルの詳細図である。
【図３】テスト工数データベース(１１４)に格納されているテスト工数補正係数テーブルの詳細図である。
【図４】修正箇所一覧テーブル(１２３)の詳細図である。
【図５】総工数計算部(１１０)の動作の詳細である。
【図６】修正箇所特定部(１２０)の動作の詳細である。
【図７】影響範囲解析部(１２１)の動作の詳細である。
【図８】工数計算部(１２２)の動作の詳細である。
【図９】影響範囲解析部(１２１)で使用する構造情報テーブル(９００)の詳細図である。
【符号の説明】
【００１９】
１００…移植工数見積システム、１０１…移植元ソースコード、１０２…利用者、１１０…総工数計算部、１１１…入力部、１１２…出力部、１１３…移植環境データベース、１１４…テスト工数データベース、１２０…修正箇所特定部、１２１…影響範囲解析部、１２２…工数計算部、１２３…修正箇所一覧テーブル、１２４…構造解析部、２００…移植環境情報テーブル、３００…テスト工数補正係数テーブル、９００…構造情報テーブル。
【図１】
2007128193.tif 000003
【図２】
2007128193.tif 000004
【図３】
2007128193.tif 000005
【図４】
2007128193.tif 000006
【図５】
2007128193.tif 000007
【図６】
2007128193.tif 000008
【図７】
2007128193.tif 000009
【図８】
2007128193.tif 000010
【図９】
2007128193.tif 000011