(57)【要約】【課題】ソフトウェア改造時の開発規模をコーディングの対象と再利用の対象とを区別して算出すること。【解決手段】改造されるプログラムのソースコードの各行に、再利用の対象となることを識別可能な行区分を付与するステップと、前記ソースコードの各行と前記行区分とを含む区分付きソースコードを生成するステップと、生成した前記区分付きソースコードに含まれる前記ソースコードが編集された場合には、編集された行の行区分を編集があったことを識別可能な行区分に変更するステップと、前記区分付きソースコードの前記行区分ごとの行数に基づいて、前記ソースコードの改造に要する開発規模を算出するステップと、を含む開発規模算出方法を提供する。【選択図】図１
2010061610.tif 000002
【特許請求の範囲】
【請求項１】
改造されるプログラムのソースコードの各行に、再利用の対象となることを識別可能な行区分を付与するステップと；
前記ソースコードの各行と前記行区分とを含む区分付きソースコードを生成するステップと；
生成した前記区分付きソースコードに含まれる前記ソースコードが編集された場合には、編集された行の行区分を編集があったことを識別可能な行区分に変更するステップと；
前記区分付きソースコードの前記行区分ごとの行数に基づいて、前記ソースコードの改造に要する開発規模を算出するステップと；
を含む開発規模算出方法。
【請求項２】
前記行区分を付与するステップにおいて、再利用の対象となることを識別可能な前記行区分は、さらにコメント行と空行とを除く有効行については関数に属す内部有効行と関数に属さない外部有効行とを識別可能な区分である、請求項１に記載の開発規模算出方法。
【請求項３】
前記行区分を変更するステップにおいて、編集があったことを識別可能な前記行区分は、追加された行、削除された行、修正される前の行、又は修正された後の行のいずれかを識別可能な行区分である、請求項１に記載の開発規模算出方法。
【請求項４】
前記行区分を変更するステップにおいて、コメント行と空行とを除く関数に属す行である内部有効行が編集された場合には、さらに、当該内部有効行を含む関数に属す他の行の行区分は、編集があった関数に属し且つ再利用の対象となる行であることを識別可能な行区分に変更される、請求項１に記載の開発規模算出方法。
【請求項５】
前記開発規模を算出するステップにおいて、前記開発規模は、編集があった行数に応じた値と、編集は無かったが再利用の対象となる行数に応じた値とを区別し得るように算出される、請求項１に記載の開発規模算出方法。
【請求項６】
さらに、ユーザからの指示に応じて、前記区分付きソースコードのうち、削除された行と修正される前の行とを除く各行のソースコード、又は追加された行と修正された後の行とを除く各行のソースコードをファイル出力するステップを含む、請求項３に記載の開発規模算出方法。
【請求項７】
さらに、ユーザからの指示に応じて、前記区分付きソースコードに含まれる前記ソースコードと、当該ソースコードの各行の前記行区分に基づいて生成される編集履歴情報とを表示装置の画面に表示させるステップを含む、請求項１に記載の開発規模算出方法。
【請求項８】
改造されるプログラムのソースコードの各行に再利用の対象となることを識別可能な行区分を付与し、前記ソースコードの各行と前記行区分とを含む区分付きソースコードを生成する初期解析部と；
前記区分付きソースコードに含まれる前記ソースコードが編集された場合には、編集された行の行区分を編集があったことを識別可能な行区分に変更する編集解析部と；
前記区分付きソースコードの前記行区分ごとの行数に基づいて、前記ソースコードの改造に要する開発規模を算出する開発規模算出部と；
を備える情報処理装置。
【請求項９】
情報処理装置を制御するコンピュータを：
改造されるプログラムのソースコードの各行に再利用の対象となることを識別可能な行区分を付与し、前記ソースコードの各行と前記行区分とを含む区分付きソースコードを生成する初期解析部と；
前記区分付きソースコードに含まれる前記ソースコードが編集された場合には、編集された行の行区分を編集があったことを識別可能な行区分に変更する編集解析部と；
前記区分付きソースコードの前記行区分ごとの行数に基づいて、前記ソースコードの改造に要する開発規模を算出する開発規模算出部と；
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、開発規模算出方法、情報処理装置、及びプログラムに関する。
【背景技術】
【０００２】
コンピュータソフトウェアが初期開発され、又はユーザによる利用に供された後でも、機能の追加又は不具合の解消などのために、バージョンアップと呼ばれる改造がソフトウェアに加えられることは多い。ソフトウェアの改造に際して、例えばソフトウェア開発者は、改造の目的又は内容（機能追加、不具合解消、仕様変更など）に応じてプログラムを改修する。そして、改修されたプログラムは、プログラム単体又はプログラム間の試験により、改造の目的を達成しているか、又は退行が生じていないかなどを検査される。また、開発管理者は、例えば、プログラムの改修や試験に要する作業量の把握、適切な試験項目数の算出、又は成果物の品質分析などのために、改造に要する開発規模をできるだけ正確に把握する必要がある。
【０００３】
ソフトウェアの開発規模を定量的に表す指標としては、典型的には、ステップ数、即ちソースコードの行数が用いられる。例えば、下記特許文献１では、プログラムの修正の種類に応じた修正種別情報を部分プログラムごとに付与し、ソースコードの追加、削除、変更ごとの行数を自動的に算出する開発規模算出方法が開示されている。
【０００４】
【特許文献１】特開２００４−１８５５１９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、ソフトウェアの開発規模は、例えば、コーディング（ソースコードの追加、修正、削除などの編集作業）の対象となる規模と、試験の対象となる規模とを区別できる形で算出されるのが望ましい。なぜならば、コーディングと試験とは、作業内容、作業者に要求されるスキル、又はスケジュール上の実施時期などが異なり、両者を管理する上で開発規模を区別して取り扱わざるを得ないためである。
【０００６】
ここで、ソフトウェアを構成するソースコードの一部が改修された場合、試験の対象となる範囲は、直接的に改修された範囲に留まらない。例えば、ソースコードの一部が改修された場合には、その改修により再利用された他の部分に退行（デグレード）などの悪影響が生じていないかを、退行試験を実施して検査しなければならない。これに対し、例えば上記特許文献１に記載の開発規模算出方法では、ソースコードの追加、削除、変更ごとの開発規模は算出されるものの、再利用の対象となる部分の開発規模を知ることはできない。
【０００７】
そこで、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、ソフトウェア改造時の開発規模をコーディングの対象と再利用の対象とを区別して算出することのできる、新規かつ改良された開発規模算出方法、情報処理装置、及びプログラムを提供することにある。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明のある観点によれば、改造されるプログラムのソースコードの各行に、再利用の対象となることを識別可能な行区分を付与するステップと、前記ソースコードの各行と前記行区分とを含む区分付きソースコードを生成するステップと、生成した前記区分付きソースコードに含まれる前記ソースコードが編集された場合には、編集された行の行区分を編集があったことを識別可能な行区分に変更するステップと、前記区分付きソースコードの前記行区分ごとの行数に基づいて、前記ソースコードの改造に要する開発規模を算出するステップと、を含む開発規模算出方法が提供される。
【０００９】
かかる開発規模算出方法によれば、改造されるソースコードの各行には再利用の対象となることを識別可能な行区分が初期値として付与される。そして、ソースコードがユーザにより編集された場合には、編集された行の行区分が編集があったことを識別可能な行区分に変更される。その結果、編集後の行区分は、編集があった行と編集は無かったが再利用の対象となる行とを区別し得るように付与され、そのような行区分ごとの行数に基づく開発規模が算出される。
【００１０】
また、前記行区分を付与するステップにおいて、再利用の対象となることを識別可能な前記行区分は、さらにコメント行と空行とを除く有効行については関数に属す内部有効行と関数に属さない外部有効行とを識別可能な区分であってもよい。
【００１１】
また、前記行区分を変更するステップにおいて、編集があったことを識別可能な前記行区分は、追加された行、削除された行、修正される前の行、又は修正された後の行のいずれかを識別可能な行区分であってもよい。
【００１２】
また、前記行区分を変更するステップにおいて、前記内部有効行が編集された場合には、さらに、当該内部有効行を含む関数に属す他の行の行区分は、編集があった関数に属し且つ再利用の対象となる行であることを識別可能な行区分に変更されてもよい。
【００１３】
また、前記開発規模を算出するステップにおいて、前記開発規模は、編集があった行数に応じた値と、編集は無かったが再利用の対象となる行数に応じた値とを区別し得るように算出されてもよい。
【００１４】
また、前記開発規模算出方法は、さらに、ユーザからの指示に応じて、前記区分付きソースコードのうち、削除された行と修正される前の行とを除く各行のソースコード、又は追加された行と修正された後の行とを除く各行のソースコードのいずれかをファイル出力するステップを含んでもよい。
【００１５】
また、前記開発規模算出方法は、さらに、ユーザからの指示に応じて、前記区分付きソースコードに含まれる前記ソースコードと、当該ソースコードの各行の前記行区分に基づいて生成される編集履歴情報とを表示装置の画面に表示させるステップを含んでもよい。
【００１６】
上記課題を解決するために、本発明の別の観点によれば、改造されるプログラムのソースコードの各行に再利用の対象となることを識別可能な行区分を付与し、前記ソースコードの各行と前記行区分とを含む区分付きソースコードを生成する初期解析部と、前記区分付きソースコードに含まれる前記ソースコードが編集された場合には、編集された行の行区分を編集があったことを識別可能な行区分に変更する編集解析部と、前記区分付きソースコードの前記行区分ごとの行数に基づいて、前記ソースコードの改造に要する開発規模を算出する開発規模算出部と、を備える情報処理装置が提供される。
【００１７】
上記課題を解決するために、本発明の別の観点によれば、情報処理装置を制御するコンピュータを、改造されるプログラムのソースコードの各行に再利用の対象となることを識別可能な行区分を付与し、前記ソースコードの各行と前記行区分とを含む区分付きソースコードを生成する初期解析部と、前記区分付きソースコードに含まれる前記ソースコードが編集された場合には、編集された行の行区分を編集があったことを識別可能な行区分に変更する編集解析部と、前記区分付きソースコードの前記行区分ごとの行数に基づいて、前記ソースコードの改造に要する開発規模を算出する開発規模算出部と、として機能させるためのプログラムが提供される。
【発明の効果】
【００１８】
以上説明したように、本発明に係る開発規模算出方法、情報処理装置、及びプログラムによれば、ソフトウェア改造時の開発規模をコーディングの対象と再利用の対象とを区別して算出することができる。
【発明を実施するための最良の形態】
【００１９】
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００２０】
〔１〕開発規模を算出する情報処理装置の構成
図１は、本発明の一実施形態に係る情報処理装置１００の論理的な構成を示すブロック図である。
【００２１】
図１を参照すると、情報処理装置１００は、ソースコード取得部１１０、初期解析部１２０、区分付きソースコードファイル群１３０、編集画面表示部１４０、編集解析部１５０、ソースコード出力部１６０、行数集計部１７０、行数集計結果ファイル群１８０、及び開発規模算出部１９０を備える。
【００２２】
〔１−１〕ソースコード取得部
ソースコード取得部１１０は、ユーザからの指示に応じて、開発規模の算出の対象とするプログラムのソースコードを取得する。例えば、ソースコード取得部１１０により取得されるソースコードは、ユーザにより指定された１つのプログラムファイルに含まれるソースコードの全体であってもよい。その代わりに、ソースコード取得部１１０により取得されるソースコードは、ユーザにより指定されたプログラムと呼び出し関係のある複数のファイルにまたがったソースコードであってもよい。そして、ソースコード取得部１１０は、取得したソースコードを初期解析部１２０へ出力する。
【００２３】
〔１−２〕初期解析部
初期解析部１２０は、ソースコード取得部１１０から入力されるソースコードを解析し、ソースコードの各行に開発規模の算出に用いる行区分の初期値を付与する。そして、初期解析部１２０は、例えばソースコードの各行に付与された行区分と当該ソースコードとを含む区分付きソースコードファイルを生成する。
【００２４】
図２は、初期解析部１２０によってソースコードに付与される行区分の初期値と、各初期値が付与されるための付与条件の一例を示す説明図である。
【００２５】
図２を参照すると、ソースコードはまず、コメント行及び空行に該当しない有効行と、コメント行又は空行に該当する非有効行とに分類される。また、有効行は、さらに関数の内部の内部有効行と、関数の外部の外部有効行とに分類される。そして、内部有効行の行区分には初期値“Ａ５０”、外部有効行の行区分には初期値“Ｂ５０”、非有効行の行区分には初期値“Ｃ５０”が付与される。
【００２６】
図３は、初期解析部１２０によって生成される区分付きソースコードファイルの一例を示す説明図である。ここでは、一例として、Ｃ言語により記述されたソースコードを示している。
【００２７】
図３において、区分付きソースコードファイルＦ１は、それぞれカンマで区切られた３つのフィールドを含む計７つのレコードよりなるＣＳＶ（Comma  Separated  Value）形式のファイルとして生成されている。各レコードの３つのフィールドは、左から順に、行区分、付加情報（最終更新日）、及びソースコードの各行に対応する。
【００２８】
区分付きソースコードファイルＦ１の行区分を参照すると、ソースコードは、３つの内部有効行（第５行〜第７行）、１つの外部有効行（第３行）、及び３つの非有効行（第１行、第２行、第４行）を含んでいることが理解される。図１に示した初期解析部１２０は、このような区分付きソースコードファイルを生成し、例えば情報処理装置１００のファイルシステムへ出力する。
【００２９】
なお、区分付きソースコードファイルのフィールドの内容、数、又は順序は、図３の例に限定されない。また、区分付きソースコードファイルとして、ＣＳＶ形式のファイルの代わりに、例えばＴＳＶ（Tab  Separated  Value）形式や、空白記号などでパディングされた固定長形式のファイルなどを用いてもよい。さらに、初期解析部１２０は、区分付きソースコードファイルを生成する代わりに、ソースコードの各行と関連付けて行区分をデータベースに登録することにより、区分付きソースコードを実現してもよい。
【００３０】
〔１−３〕区分付きソースコードファイル群
図１へ戻り、情報処理装置１００の論理的な構成の説明を継続する。
【００３１】
区分付きソースコードファイル群１３０は、初期解析部１２０によって生成され、例えば情報処理装置１００のファイルシステム上に蓄積される、区分付きソースコードファイルの集合である。
【００３２】
〔１−４〕編集画面表示部
編集画面表示部１４０は、ユーザからの指示に応じて、区分付きソースコードファイル群１３０から指定された区分付きソースコードを取得し、当該区分付きソースコードに含まれるソースコードをユーザに編集させるための編集画面を情報処理装置１００に接続された表示装置に表示する。
【００３３】
図４は、編集画面表示部１４０により表示される編集画面の一例としての編集画面Ｗ１を示している。図４を参照すると、編集画面Ｗ１には、ソースコード表示領域Ａ１、及び履歴情報表示領域Ａ２が含まれる。
【００３４】
ソースコード表示領域Ａ１は、ユーザにより編集されるソースコードを表示するための領域である。編集画面表示部１４０は、後にソースコード出力部１６０に関連して説明する最新のソースコード出力処理と同様の手順で、指定された区分付きソースコードから最新のソースコードを抽出し、ソースコード表示領域Ａ１に表示する。
【００３５】
履歴情報表示領域Ａ２は、ソースコード表示領域Ａ１に表示されたソースコードの各行について、行区分に基づいて生成される過去の編集に関する履歴情報を表示するための領域である。図４の例では、履歴情報表示領域Ａ２には、編集の種類と日付からなる３つの履歴情報が示されている。第１の履歴情報は、ソースコード第４行が、２００８年１月１日に追加されたことを示している。第２の履歴情報は、ソースコード第７行が、２００８年１月１日に修正されたことを示している。また、第３の履歴情報は、ソースコード第１０行〜第１２行の関数が、２００８年１月１日に追加されたことを示している。こうした履歴情報は、後に図５を用いて説明する行区分のコード定義に応じて、編集画面表示部１４０により生成される。
【００３６】
編集画面Ｗ１を用い、機能追加、不具合解消、又は仕様変更などの目的に応じてソースコード表示領域Ａ１に表示されたソースコードを編集したユーザは、例えば保存ボタンＢ１を押下することにより、編集後のソースコードの保存を指示する。そうすると、編集画面表示部１４０は、編集解析部１５０に編集の内容に応じた行区分の更新を要求する。
【００３７】
〔１−５〕編集解析部
編集解析部１５０は、例えば編集画面表示部１４０から前述した要求を受けると、ソースコードの編集内容に応じて、区分付きソースコードに含まれる各行の行区分を更新する。
【００３８】
図５は、行区分のコード定義の一例を示している。図５を参照すると、行区分は、アルファベット１桁と数字２桁の組合せにより定義されている。
【００３９】
このうち、先頭１桁目のアルファベットは、当該行が図２を用いて説明した内部有効行、外部有効行、又は非有効行のいずれに該当するかを、それぞれＡ、Ｂ、Ｃを用いて表している。
【００４０】
また、残りの２桁の数字は、当該行に対してなされた編集の内容を示している。
【００４１】
より具体的には、関数に属す内部有効行のうち、同じ関数に属す他の行も含めて編集がされていない、再利用のみされる行の行区分は、“Ａ５０”となる。また、同じ関数に属す他の行は編集されており、当該行は再利用されるのみである行の行区分は、“Ａ４０”となる。また、内部有効行のうち、新規追加された行の行区分は、“Ａ１０”となる。また、内部有効行のうち、削除された行の行区分は、“Ａ６０”となる。また、内部有効行であって、修正された修正前の行の行区分は、“Ａ８０”となる。また、内部有効行であって、修正後の行の行区分は、“Ａ２０”となる。また、関数全体が新規追加された場合の当該関数に属す各行の行区分は、“Ａ３０”となる。また、関数全体が削除された場合の当該関数に属す各行の行区分は、“Ａ９０”となる。
【００４２】
さらに、関数に属さない外部有効行のうち、再利用のみされる行の行区分は、“Ｂ５０”となる。また、外部有効行のうち、新規追加された行の行区分は、“Ｂ１０”となる。また、外部有効行のうち、削除された行の行区分は、“Ｂ６０”となる。また、外部有効行であって、修正された修正前の行の行区分は、“Ｂ８０”となる。また、外部有効行であって、修正後の行の行区分は、“Ｂ２０”となる。
【００４３】
さらに、コメント行又は空行に該当する非有効行のうち、再利用のみされる行の行区分は、“Ｃ５０”となる。また、非有効行のうち、新規追加された行の行区分は、“Ｃ１０”となる。また、非有効行のうち、削除された行の行区分は、“Ｃ６０”となる。また、非有効行であって、修正された修正前の行の行区分は、“Ｃ８０”となる。また、非有効行であって、修正後の行の行区分は、“Ｃ２０”となる。
【００４４】
このような行区分によれば、例えば区分付きソースコードから最新のソースコードを取得したい場合には、行区分の下２桁の数字が“５０”以下である行を抽出すればよい。また、例えば区分付きソースコードから当初の（改修前の）ソースコードを取得したい場合には、行区分の下２桁の数字が“４０”以上である行を抽出すればよい。
【００４５】
また、最新のソースコードのうち編集があった行を識別したい場合には、行区分の下２桁の数字が“３０”以下である行に着目すればよい。例えば、ソフトウェア開発者によるコーディングに要した開発規模を集計するためには、最新のソースコードのうち編集があった行を識別することが必要となる。
【００４６】
また、最新のソースコードのうち編集がなく再利用の対象となっている行を識別したい場合には、行区分の下２桁の数字が“４０”又は“５０”である行に着目すればよい。例えば、ソフトウェアの改修により退行が生じていないことを検査するための退行試験に要する作業量を把握するためには、再利用の対象となっている行を識別することが必要となる。
【００４７】
また、最新のソースコードのうち同一関数内で編集があった行のみを識別したい場合には、行区分の上１桁のアルファベットが“Ａ”であって、下２桁の数字が“４０”以下である行に着目すればよい。例えば、関数の単位でコーディングや試験に要する作業量を把握するためには、このような識別の仕方が有効である。
【００４８】
このように、例えば図５に示したような行区分のコード定義を用いることで、開発の実情に応じた柔軟な開発規模の集計が可能となる。
【００４９】
図６は、図５に例示した行区分のコード定義を前提とした場合の、コード定義の変更規則を示している。編集解析部１５０は、このような変更規則に基づき、ソースコードの編集内容に応じて、区分付きソースコードに含まれる各行の行区分を変更する。
【００５０】
図６を参照すると、ユーザにより新たな関数が追加された場合には、追加された各行に行区分“Ａ３０”が付与される。また、ユーザにより関数の全体が削除された場合には、削除された各行の行区分は“Ａ９０”に変更される。
【００５１】
また、ある関数に内部有効行が追加された場合には、追加された行には行区分“Ａ１０”が付与される。また、ある関数の内部有効行が削除された場合には、削除された行の行区分は“Ａ６０”に変更される。また、ある関数の内部有効行が修正された場合には、修正前の行の行区分は“Ａ８０”に設定され、修正後の行には行区分“Ａ２０”が付与される（即ち、行が修正された場合には、修正前の行と修正後の行が共に保持される）。
【００５２】
さらに、ある関数内の有効行について行の追加、削除又は修正などの編集があった場合には、当該行を含む関数に属す他の行の行区分は、“Ａ４０”に変更される。但し、ここで行区分が変更される他の行とは、変更前の行区分が“Ａ５０（再利用）”の行のみである。
【００５３】
また、関数外の有効行が新たに追加された場合には、追加された行には行区分“Ｂ１０”が付与される。また、関数外の有効行が削除された場合には、削除された各行の行区分は“Ｂ６０”に変更される。また、関数外の有効行が修正された場合には、修正前の行の行区分は“Ｂ８０”に設定され、修正後の行には行区分“Ｂ２０”が付与される。
【００５４】
また、非有効行が新たに追加された場合には、追加された行には行区分“Ｃ１０”が付与される。また、非有効行が削除された場合には、削除された各行の行区分は“Ｃ６０”に変更される。また、非有効行が修正された場合には、修正前の行の行区分は“Ｃ８０”に設定され、修正後の行には行区分“Ｃ２０”が付与される
【００５５】
このような、図６に示したような変更規則に基づく編集解析部１５０の動作により、情報処理装置１００が保持する区分付きソースコードファイルにおいて、図５に示したコード定義が維持される。
【００５６】
〔１−６〕ソースコード出力部
再び図１へ戻り、情報処理装置１００の論理的な構成の説明を継続する。
【００５７】
ソースコード出力部１６０は、例えばユーザから最新のソースコードの出力を求める指示を受けると、指定された区分付きソースコードファイルを区分付きソースコードファイル群１３０から取得し、行区分の下２桁の数字が“５０”以下である行のソースコードを抽出してファイル出力する。
【００５８】
また、ソースコード出力部１６０は、例えばユーザから当初のソースコードの出力を求める指示を受けると、指定された区分付きソースコードファイルを取得し、行区分の下２桁の数字が“４０”以上である行のソースコードを抽出して出力する。
【００５９】
〔１−７〕行数集計部
行数集計部１７０は、区分付きソースコードファイルを区分付きソースコードファイル群１３０から取得し、区分付きソースコードの行区分ごとの行数を集計する。そして、行数集計部１７０は、集計した結果を、例えば行数集計結果ファイルとして情報処理装置１００のファイルシステムへ出力する。なお、行数集計結果ファイルは、例えばＣＳＶ形式、ＴＳＶ形式、又は固定長形式など、任意の形式のファイルであってよい。また、行数集計部１７０は、例えば行数の集計結果を行区分と関連付けてデータベースに登録してもよい。
【００６０】
〔１−８〕行数集計結果ファイル群
行数集計結果ファイル群１８０は、行数集計部１７０によって生成され、例えば情報処理装置１００のファイルシステム上に蓄積される、行数集計結果ファイルの集合である。例えば、行数集計結果ファイルは、１つの区分付きソースコードファイルに対して１つ生成される。そして、行数集計結果ファイル群１８０には、開発規模を管理する対象の複数のファイル（例えば１つの開発グループで取り扱うソースコードに対応する全ての行数集計結果ファイルなど）が蓄積される。
【００６１】
〔１−９〕開発規模算出部
開発規模算出部１９０は、例えばユーザから開発規模の算出を求める指示を受けると、まず行数集計結果ファイル群１８０から所定の行数集計結果ファイルを取得する。そして、開発規模算出部１９０は、行数集計結果ファイルに含まれる行区分ごとの行数に基づいて、ソースコードの改造に要する開発規模を算出する。
【００６２】
開発規模は、例えば図７に示したような各分類に対応する行数として算出されてもよい。図７の例では、開発規模算出部１９０は、行区分に応じた６つの分類ごとに合算した行数を、開発規模として算出している。
【００６３】
図７において、第１の分類（「編集なし・再利用のみ」）の合算の対象となる行区分は“Ａ５０”及び“Ｂ５０”である。この第１の分類について合算された行数は、例えばコーディングや関数単位での試験の規模には影響を与えないが、プログラム単位での試験の規模には影響し得る。
【００６４】
第２の分類（「同一関数内で編集あり」）の対象となる行区分は“Ａ４０”である。この第２の分類に対応する行数は、例えばコーディングの規模には影響を与えないが、関数単位及びプログラム単位での試験の規模には影響し得る。
【００６５】
第３の分類（「編集あり」）の合算の対象となる行区分は“Ａ１０”、“Ａ２０”、“Ａ６０”、“Ｂ１０”、“Ｂ２０”、及び“Ｂ６０”である。この第３の分類について合算された行数は、例えばコーディングの規模と試験の規模の双方に影響し得る。
【００６６】
第４の分類（「関数全体削除」）の対象となる行区分は“Ａ９０”である。この第４の分類に対応する行数は、例えば試験の規模には影響を与えないが、コーディングの規模に影響し得る。
【００６７】
第５の分類（「新規関数追加」）の対象となる行区分は“Ａ３０”である。この第５の分類に対応する行数は、例えばコーディングの規模と試験の規模の双方に影響し得る。なお、新規関数を追加する場合と、既存の関数を編集する場合は、通常、開発の難易度は異なる。既存の関数を編集する場合には、例えば、編集箇所が一部分であっても関数全体の処理内容を理解する必要があり、初期開発者と同一の開発者が編集を実施するのか、若しくは異なる開発者が実施するのか、又は適切な設計書が用意されているのか、などといった開発の実情により難易度は変わる。一方、新規関数を追加する場合には、例えば、難易度を初期開発と同等としてもよい。このような事情から、第３の分類と第５の分類とを分けて合算をしておき、例えば、分類ごとの難易度に応じて開発規模を重み付けすることなどが有益となる。
【００６８】
第６の分類（「その他」）の対象の行区分には、“Ａ８０”、“Ｂ８０”、“Ｃ１０”、“Ｃ２０”、“Ｃ５０”、“Ｃ６０”、及び“Ｃ８０”が含まれる。この第６の分類に対応する行数は、例えばコーディングの規模と試験の規模の双方に影響を与えない。このうち、行単位での修正前の行に相当する“Ａ８０”及び“Ｂ８０”については、既に第３の分類で行単位での修正後の行数（“Ａ２０”及び“Ｂ２０”）を合算しているため、重複して合算する必要がない。また、非有効行を表す各行区分（“ＣＸＸ”）については、必要に応じて合算の対象としてもよい（図７の例では合算の対象としてない）。
【００６９】
開発規模算出部１９０は、例えば、このような分類ごとに行数を合算して算出した開発規模を、情報処理装置１００に接続された表示装置に表示し、又は任意の形式のファイルとして出力する。
【００７０】
なお、図７では、開発規模を分類ごとに集計された行数として示したが、開発規模算出部１９０により算出される開発規模の内容はかかる例に限定されない。例えば、開発規模は、集計された行数に対して分類ごとに予め定義される係数を乗算して得られる工数であってもよい。工数とは、例えば、１人の作業者が１日作業をすることにより完了する作業量を１人日とし、何人日（又は何人月）などといった形式で与えられる指標である。また、図７の第５の分類に関連して説明したように、分類ごとのコーディングや試験の難易度に応じた重み付け係数を予め定義し、集計された行数に重み付け係数を乗算した結果の工数を開発規模として算出してもよい。
【００７１】
〔２〕開発規模算出に関連する処理の流れ
ここまで、図１〜図７を用いて、ソフトウェア改造時の開発規模をコーディングの対象と再利用の対象とを区別して算出することのできる情報処理装置１００の構成について説明した。次に、情報処理装置１００による開発規模の算出に関連する処理の流れについてフローチャートを用いて説明する。
【００７２】
〔２−１〕初期解析処理
図８は、開発規模の算出の対象とするソースコードが取得された後、初期解析部１２０によって区分付きソースコードファイルが生成されるまでの処理の流れを示すフローチャートである。
【００７３】
図８を参照すると、まず、ソースコード取得部１１０により、ユーザからの指示に応じて、開発規模の算出の対象とするプログラムのソースコードが取得される（Ｓ２０２）。ここで取得されたソースコードは、初期解析部１２０へ出力される。
【００７４】
次に、初期解析部１２０は、ソースコード取得部１１０から入力されたソースコードの最初の１行を読み込む（Ｓ２０４）。
【００７５】
そして、初期解析部１２０は、使用されているプログラム言語の文法に従い、読み込んだ行を構文解析して行の種類を特定する（Ｓ２０６）。例えば、初期解析部１２０は、改行文字やコメント開始記号の位置に応じて各行が有効行か非有効行かを判定し、又は関数の開始位置と終了位置に応じて各行が関数に属すか属さないかを判定する。
【００７６】
次に、処理は、構文解析の結果特定された行の種類に応じて分岐する（Ｓ２０８）。ここで、行の種類が内部有効行であれば、初期解析部１２０は、当該行の行区分の初期値を“Ａ５０”とする（Ｓ２１０）。また、行の種類が外部有効行であれば、初期解析部１２０は、当該行の行区分の初期値を“Ｂ５０”とする（Ｓ２１２）。また、行の種類が非有効行であれば、初期解析部１２０は、当該行の行区分の初期値を“Ｃ５０”とする（Ｓ２１４）。
【００７７】
そして、初期解析部１２０は、例えば、決定した行区分と、処理日などの付加情報と、読み込んだソースコードの１行とをカンマ記号などで区切って、区分付きソースコードファイルに出力する（Ｓ２１６）。
【００７８】
こうした処理は、ソースコードの全ての行について処理が終了するまで繰り返される（Ｓ２１８）。即ち、処理が終了していない行が残っていれば、処理はＳ２０４へ戻り、次の行についてＳ２０４以降の上述した一連の処理が行われる。
【００７９】
〔２−２〕編集解析処理
図９は、ユーザによりソースコードが編集され、編集解析部１５０によって区分付きソースコードファイルの行区分が変更されるまでの処理の流れを示すフローチャートである。
【００８０】
図９を参照すると、まず、編集画面表示部１４０により、例えばユーザが編集の対象として指定したソースコードが区分付きソースコードファイル群１３０から取得され、表示装置に表示される（Ｓ５０２）。
【００８１】
その後、例えばソースコードへの行の追加、削除、又は修正など、ユーザによるソースコードの編集が行われる（Ｓ５０４）。
【００８２】
ユーザによりソースコードが編集されると、編集解析部１５０は、例えば図６を用いて説明した変更規則に従い、ソースコードに付与された行区分を変更する（Ｓ５０６）。なお、ここで変更された行区分は、ソースコードが編集されている間内部的なメモリに一時的に保持されてもよい。その代わりに、編集の都度変更された行区分がファイルに書込まれてもよい。
【００８３】
そして、ユーザにより編集を終了する操作（例えば保存ボタンの押下など）が行われると、処理はＳ５１０へ移動する。一方、ユーザにより編集を終了する操作が行われなければ、処理はＳ５０４に戻り、編集作業が継続される（Ｓ５０８）。
【００８４】
ユーザにより編集を終了する操作が行われた場合には、編集解析部１５０により、更新された最終的な行区分を含む区分付きソースコードファイルが区分付きソースコードファイル群１３０へ出力される（Ｓ５１０）。
【００８５】
〔２−３〕ファイル出力処理
図１０は、ソースコード出力部１６０によるソースコード出力処理の流れを示すフローチャートである。
【００８６】
図１０を参照すると、まず、ユーザにより、例えば取得したいソースコードのファイル名と出力種別が入力される（Ｓ６０２）。出力種別とは、編集後の最新のソースコード、又は編集前の当初のソースコードのいずれかを指定する種別を意味する。なお、ここで、ファイル名の代わりに、プログラムＩＤなど、ソースコードを特定可能な任意の情報が入力されてもよい。
【００８７】
次に、ソースコード出力部１６０により、ユーザから指定された区分付きソースコードが区分付きソースコードファイル群１３０から取得され、その最初の１行が読み込まれる（Ｓ６０４）。
【００８８】
そして、ソースコード出力部１６０により、読み込まれた行が出力対象の行か否かが判定される（Ｓ６０６）。ここで、例えば出力種別が“最新のソースコード”であれば、行区分の下２桁の数字が“５０”以下である行が出力対象となる。また、例えば出力種別が“当初のソースコード”であれば、行区分の下２桁の数字が“４０”以上である行が出力対象となる。
【００８９】
Ｓ６０６において、読み込まれた行が出力対象の行であれば、その行のソースコードが出力ファイルに書込まれる（Ｓ６０８）。一方、読み込まれた行が出力対象の行でなければ、出力ファイルにソースコードは書込まれない。
【００９０】
こうした処理は、区分付きソースコードの全ての行について処理が終了するまで繰り返される（Ｓ６１０）。即ち、処理が終了していない行が残っていれば、処理はＳ６０４へ戻る。全ての行について処理が終了していれば、ファイル出力処理は終了する。
【００９１】
〔２−４〕行数集計処理
図１１は、行数集計部１７０による行数集計処理の流れを示すフローチャートである。
【００９２】
図１１を参照すると、まず、行数集計部１７０により、行数を集計する対象の区分付きソースコードファイルが区分付きソースコードファイル群１３０から取得される（Ｓ７０２）。
【００９３】
次に、行数集計部１７０により、取得された区分付きソースコードファイルの最初の１行が読み込まれる（Ｓ７０４）。
【００９４】
そして、読み込まれた行の行区分に対応する行数カウンタに１が加算される（Ｓ７０６）。即ち、ここでは１つの行区分について１つの行数カウンタ（変数）が用意されており、例えば、読み込まれた行の行区分が“Ａ５０”であれば、“Ａ５０”に対応する行数カウンタに１が加算される。それにより、行区分ごとの行数が計数される。
【００９５】
こうした処理は、区分付きソースコードの全ての行について処理が終了するまで繰り返される（Ｓ７０８）。即ち、処理が終了していない行が残っていれば、処理はＳ７０４へ戻る。一方、全ての行について処理が終了していれば、処理はＳ７１０へ進む。
【００９６】
Ｓ７１０では、ここまでの処理により集計された行数カウンタの内容、即ち行区分ごとの行数が、行数集計結果ファイルに出力される（Ｓ７１０）。
【００９７】
〔２−５〕開発規模算出処理
図１２は、開発規模算出部１９０による開発規模算出処理の流れを示すフローチャートである。
【００９８】
図１２を参照すると、まず、開発規模算出部１９０により、開発規模の算出の対象とする行数集計結果ファイルが、行数集計結果ファイル群１８０から取得される（Ｓ９０２）。ここで取得されるファイルは、１つのファイルであってもよく、又は複数のファイルであってもよい。
【００９９】
次に、開発規模算出部１９０により、行数集計結果ファイルの最初の１行が読み込まれる（Ｓ９０４）。
【０１００】
そして、読み込まれた行の行区分が属す分類の開発規模に、その行区分について集計された行数が加算される（Ｓ９０６）。即ち、ここでは例えば図７に示されたような分類ごとに開発規模の算出結果を格納するための変数が１つずつ用意されており、その変数に開発規模を表す行数が順次加算される。
【０１０１】
こうした処理は、行数集計結果ファイルの全ての行（又は、全ての行数集計結果ファイルの全ての行）について処理が終了するまで繰り返される（Ｓ９０８）。即ち、処理が終了していない行が残っていれば、処理はＳ９０４へ戻る。一方、全ての行について処理が終了していれば、処理はＳ９１０へ進む。
【０１０２】
Ｓ９１０では、ここまでの処理の結果算出された分類ごとの開発規模が、例えば情報処理装置１００に接続された表示装置に、又は任意の形式のファイルとして出力される（Ｓ９１０）。
【０１０３】
〔３〕ハードウェア構成
本明細書において説明した情報処理装置１００による一連の処理は、典型的には汎用コンピュータ上で動作するソフトウェアを用いて実行される。図１３は、汎用コンピュータのハードウェア構成の一例を示すブロック図である。
【０１０４】
図１３において、ＣＰＵ（Central  Processing  Unit）１２は、汎用コンピュータの動作全般を制御する。ＲＯＭ（Read  Only  Memory）１４には、一連の処理の一部又は全部を記述したプログラム又はデータが格納される。ＲＡＭ（Random  Access  Memory）１６には、処理の実行時にＣＰＵ１２により用いられるプログラムやデータなどが一時的に記憶される。
【０１０５】
ＣＰＵ１２、ＲＯＭ１４、及びＲＡＭ１６は、バス２０を介して相互に接続される。バス２０にはさらに、入出力インタフェース２２が接続される。
【０１０６】
入出力インタフェース２２は、ＣＰＵ１２、ＲＯＭ１４、及びＲＡＭ１６と、入力装置３０、出力装置３２、記憶装置３４、及び通信装置３６とを接続するためのインタフェースである。
【０１０７】
入力装置３０は、例えばマウスやキーボードなどの入力装置を介して、ユーザからの指示や情報入力を受け付ける。出力装置３２は、例えばＣＲＴ（Cathode  Ray  Tube）、液晶ディスプレイ、ＯＬＥＤ（Organic  Light  Emitting  Diode）などの表示装置、又はスピーカなどの音声出力装置を介してユーザに情報を出力する。
【０１０８】
記憶装置３４は、例えばハードディスクドライブ又はフラッシュメモリなどにより構成され、プログラムファイル、データファイル、又は制御データなどを記憶する。通信装置３６は、ＬＡＮ又はインターネットなどのネットワークを介する通信処理を行う。
【０１０９】
〔４〕まとめ
ここまで、図１〜図１３を用いて、本発明の一実施形態に係る情報処理装置１００について説明を行った。本実施形態によれば、再利用の対象となるソースコードと編集されたソースコードとを識別可能な行区分が行ごとに付与されるため、ソフトウェア改造時の開発規模を、コーディングの対象と再利用の対象とを区別して算出することができる。
【０１１０】
また、本実施形態において行ごとに付与される行区分によれば、例えばコメント行と空行とを除く有効行のみを識別し、また、関数に属す内部有効行と関数に属さない外部有効行とを識別することもできる。それにより、ファイル単位、ファイル内の有効行の単位、又は関数の単位など、例えばプロジェクトの実情に合わせた様々な単位で、ソフトウェア改造時の開発規模を集計することが可能となる。
【０１１１】
また、本実施形態において行ごとに付与される行区分によれば、再利用の対象となる内部有効行について、同じ関数の内部で編集があった行と同じ関数の内部で編集がなかった行とを識別することもできる。それにより、例えばプロジェクトごとに異なる試験の方針などに応じて、ソフトウェア改造時の開発規模を柔軟に算出することが可能となる。
【０１１２】
また、本実施形態において生成される区分付きソースコードに基づいて、ソースコードをユーザに編集させるための画面に、編集履歴情報を表示させることもできる。それにより、ソフトウェア開発者は過去の編集の内容を容易に把握することができるため、開発効率や品質の向上が期待される。
【０１１３】
以上、添付図面を参照しながら本発明の好適な実施形態について説明したが、本発明は係る例に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇内において、各種の変更例又は修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属すものと了解される。
【０１１４】
例えば、図８〜図１２のフローチャートを用いて説明した処理を、必ずしもフローチャートに記載された順序に沿って実行しなくてもよい。
【０１１５】
また、例えば、開発規模をオブジェクト指向言語におけるクラスの単位で算出したい場合には、クラスの内部の有効行が編集された場合に、当該クラスに属す他の行の行区分を特別な値に変更するなどの追加的な処理を実装してもよい。
【図面の簡単な説明】
【０１１６】
【図１】一実施形態に係る情報処理装置の論理的な構成を示すブロック図である。
【図２】一実施形態に係る行区分の初期値の付与条件を示す説明図である。
【図３】一実施形態に係る区分付きソースコードファイルを例示する説明図である。
【図４】一実施形態に係るソースコード編集画面を例示する説明図である。
【図５】一実施形態に係る行区分のコード定義を示す説明図である。
【図６】一実施形態に係る行区分の変更規則を示す説明図である。
【図７】一実施形態に係る開発規模算出部によって算出される開発規模の一例を示す説明図である。
【図８】一実施形態に係る初期解析処理の流れを示すフローチャートである。
【図９】一実施形態に係る編集解析処理の流れを示すフローチャートである。
【図１０】一実施形態に係るファイル出力処理の流れを示すフローチャートである。
【図１１】一実施形態に係る行数集計処理の流れを示すフローチャートである。
【図１２】一実施形態に係る開発規模算出処理の流れを示すフローチャートである。
【図１３】汎用コンピュータの構成例を示すブロック図である。
【符号の説明】
【０１１７】
１００        情報処理装置
１１０        ソースコード取得部
１２０        初期解析部
１３０        区分付きソースコードファイル群
１４０        編集画面表示部
１５０        編集解析部
１６０        ソースコード出力部
１７０        行数集計部
１８０        行数集計結果ファイル群
１９０        開発規模算出部
【図１】
2010061610.tif 000003
【図２】
2010061610.tif 000004
【図３】
2010061610.tif 000005
【図４】
2010061610.tif 000006
【図５】
2010061610.tif 000007
【図６】
2010061610.tif 000008
【図７】
2010061610.tif 000009
【図８】
2010061610.tif 000010
【図９】
2010061610.tif 000011
【図１０】
2010061610.tif 000012
【図１１】
2010061610.tif 000013
【図１２】
2010061610.tif 000014
【図１３】
2010061610.tif 000015