(57)【要約】【課題】ソフトウェアの開発工数見積において、関数単位での、コーディングと単体テストの工数見積が自動ででき、開発工数見積の省力化を可能にする。【解決手段】表示制御部１２は、記憶部１１からソフトウェア開発工数見積画面のデータを読み出し、表示部１３に表示させる。入力部１４は、選択されたＵＭＬファイル、基本時間、サブ関数係数およびオブジェクト係数を示す情報を含む指示情報の入力を受け付ける。工数見積部１５は、指示情報に基づいて、ユーザが選択したＵＭＬファイルを記憶部１１から読み出し、シーケンス図ごとの対象関数を抽出し、対象関数が呼び出すサブ関数の数および対象関数内でインターフェースをもつオブジェクトの数を数える。工数見積部１５は、記憶部１１が記憶する工数見積式に、これらの値を代入して対象関数ごとの見積工数を算出する。表示制御部１２は、見積結果を表示部１３に表示させる。【選択図】図１
2014123196.tif 000002
【特許請求の範囲】
【請求項１】
開発する対象ソフトウェアの仕様をＵＭＬで記述したＵＭＬファイルと、前記ＵＭＬファイルの関数ごとの見積工数を算出する工数見積式とを記憶する記憶部と、
ユーザが選択した前記ＵＭＬファイルを示す情報と、前記ＵＭＬファイルのシーケンス図内の１関数あたりの開発に要する最低限の工数を示す基本時間と、１関数が呼び出すサブ関数が１つ増えるごとに、その関数の開発に要する工数に追加される工数を示すサブ関数係数と、１関数内でインターフェースをもつオブジェクトが１つ増えるごとに、その関数の開発に要する工数に追加される工数を示すオブジェクト係数と、を示す情報を含む、指示情報を取得する取得部と、
前記指示情報に基づいて、前記ユーザが選択したＵＭＬファイルを前記記憶部から読み出し、前記シーケンス図ごとの工数見積の対象となる関数である対象関数を抽出し、前記対象関数が呼び出すサブ関数の数および前記対象関数内でインターフェースをもつオブジェクトの数を数え、前記工数見積式に、前記対象関数が呼び出すサブ関数の数および前記対象関数内でインターフェースをもつオブジェクトの数と、前記基本時間、前記サブ関数係数および前記オブジェクト係数の値とを代入して、前記対象関数ごとの見積工数を算出する工数見積部と、
前記工数見積部が算出した見積工数を出力する出力部と、
を備えるソフトウェア開発工数見積装置。
【請求項２】
前記工数見積式は、前記基本時間と、前記対象関数が呼び出すサブ関数の数に前記サブ関数係数を乗算した値と、前記対象関数内でインターフェースをもつオブジェクトの数に前記オブジェクト係数を乗算した値とを加算する式である
請求項１に記載のソフトウェア開発工数見積装置。
【請求項３】
前記指示情報は、前記対象関数の難易度を示す情報を含み、
前記工数見積式は、前記基本時間に、前記対象関数が呼び出すサブ関数の数に前記サブ関数係数を乗算した値と、前記対象関数内でインターフェースをもつオブジェクトの数に前記オブジェクト係数を乗算した値とを加算した値に、前記難易度の値で決まる難易度係数を乗算する式である
請求項１または２に記載のソフトウェア開発工数見積装置。
【請求項４】
前記出力部は、前記工数見積部が算出した見積工数を示す情報を表示する
請求項１ないし３のいずれか１項に記載のソフトウェア開発工数見積装置。
【請求項５】
開発する対象ソフトウェアの仕様をＵＭＬで記述したＵＭＬファイルと、前記ＵＭＬファイルの関数ごとの見積工数を算出する工数見積式とを記憶する記憶部を備えるソフトウェア開発工数見積装置が実行するソフトウェア開発工数見積方法であって、
ユーザが選択した前記ＵＭＬファイルを示す情報と、前記ＵＭＬファイルのシーケンス図内の１関数あたりの開発に要する最低限の工数を示す基本時間と、１関数が呼び出すサブ関数が１つ増えるごとに、その関数の開発に要する工数に追加される工数を示すサブ関数係数と、１関数内でインターフェースをもつオブジェクトが１つ増えるごとに、その関数の開発に要する工数に追加される工数を示すオブジェクト係数と、を示す情報を含む、指示情報を取得する取得ステップと、
前記指示情報に基づいて、前記ユーザが選択したＵＭＬファイルを前記記憶部から読み出し、前記シーケンス図ごとの工数見積の対象となる関数である対象関数を抽出し、前記対象関数が呼び出すサブ関数の数および前記対象関数内でインターフェースをもつオブジェクトの数を数え、前記工数見積式に、前記対象関数が呼び出すサブ関数の数および前記対象関数内でインターフェースをもつオブジェクトの数と、前記基本時間、前記サブ関数係数および前記オブジェクト係数の値とを代入して、前記対象関数ごとの見積工数を算出する工数見積ステップと、
前記工数見積ステップで算出した見積工数を出力する出力ステップと、
を備えるソフトウェア開発工数見積方法。
【請求項６】
コンピュータを、
開発する対象ソフトウェアの仕様をＵＭＬで記述したＵＭＬファイルと、前記ＵＭＬファイルの関数ごとの見積工数を算出する工数見積式とを記憶する記憶部、
ユーザが選択した前記ＵＭＬファイルを示す情報と、前記ＵＭＬファイルのシーケンス図内の１関数あたりの開発に要する最低限の工数を示す基本時間と、１関数が呼び出すサブ関数が１つ増えるごとに、その関数の開発に要する工数に追加される工数を示すサブ関数係数と、１関数内でインターフェースをもつオブジェクトが１つ増えるごとに、その関数の開発に要する工数に追加される工数を示すオブジェクト係数と、を示す情報を含む、指示情報を取得する取得部、
前記指示情報に基づいて、前記ユーザが選択したＵＭＬファイルを前記記憶部から読み出し、前記シーケンス図ごとの工数見積の対象となる関数である対象関数を抽出し、前記対象関数が呼び出すサブ関数の数および前記対象関数内でインターフェースをもつオブジェクトの数を数え、前記工数見積式に、前記対象関数が呼び出すサブ関数の数および前記対象関数内でインターフェースをもつオブジェクトの数と、前記基本時間、前記サブ関数係数および前記オブジェクト係数の値とを代入して、前記対象関数ごとの見積工数を算出する工数見積部、および、
前記工数見積部が算出した見積工数を出力する出力部、
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア開発における作業工数の見積を算出するソフトウェア開発工数見積装置、ソフトウェア開発工数見積方法およびプログラムに関する。
【背景技術】
【０００２】
ソフトウェア開発においては作業工数の見積を立て、スケジューリングすることが要求される。複数の開発者が関数単位で作業を分担することがあり、その作業計画を立てるためには関数単位での、コーディングと単体テストの工数見積が必要である。
【０００３】
また、見積担当者によるバラつきをなくすためや、見積の労力を削減するために、見積の自動化が求められている。
【０００４】
現在、ソフトウェアにおける機能単位やクラス単位で工数見積が可能な自動開発工数見積手法が提案されている。
【０００５】
たとえば、特許文献１には、ＵＭＬ（Unified Modeling Language）のクラス図のようなシステムの設計情報から実装やテストのタスクスケジュールを、人手を介さず機械的に作成するスケジュール作成方法が開示されている。
【０００６】
特許文献２には、１機能ごとの工数をファンクションポイント法で算出する手法、が開示されている。
【０００７】
特許文献３には、クラス図を作成し、クラス間の関連や複雑度からクラスごとの工数を算出する手法が開示されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００４−１５７８０５号公報
【特許文献２】特開２００８−０７７４４９号公報
【特許文献３】特開２００８−０７７４４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかし、特許文献１ないし３の手法ではソフトウェアの関数単位での開発工数は見積れないため、関数単位での詳細な作業計画が不可能である。
【００１０】
本発明は、上述のような事情に鑑みてなされたもので、ソフトウェアの開発工数見積において、関数単位での、コーディングと単体テストの工数見積が自動ででき、開発工数見積の省力化を可能にすることを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成するため、本発明のソフトウェア開発工数見積装置は、記憶部と取得部と工数見積部と出力部とを備える。記憶部は、開発する対象ソフトウェアの仕様をＵＭＬで記述したＵＭＬファイルと、ＵＭＬファイルの関数ごとの見積工数を算出する工数見積式とを記憶する。取得部は、ユーザが選択したＵＭＬファイルを示す情報と、ＵＭＬファイルのシーケンス図内の１関数あたりの開発に要する最低限の工数を示す基本時間と、１関数が呼び出すサブ関数が１つ増えるごとに、その関数の開発に要する工数に追加される工数を示すサブ関数係数と、１関数内でインターフェースをもつオブジェクトが１つ増えるごとに、その関数の開発に要する工数に追加される工数を示すオブジェクト係数と、を示す情報を含む、指示情報を取得する。工数見積部は、指示情報に基づいて、ユーザが選択したＵＭＬファイルを記憶部から読み出し、シーケンス図ごとの工数見積の対象となる関数である対象関数を抽出し、対象関数が呼び出すサブ関数の数および対象関数内でインターフェースをもつオブジェクトの数を数え、工数見積式に、対象関数が呼び出すサブ関数の数および対象関数内でインターフェースをもつオブジェクトの数と、基本時間、サブ関数係数およびオブジェクト係数の値とを代入して、対象関数ごとの見積工数を算出する。出力部は、工数見積部が算出した見積工数を出力する。
【発明の効果】
【００１２】
本発明によれば、ソフトウェアの開発工数見積において、関数単位での、コーディングと単体テストの工数見積が自動ででき、開発工数見積の省力化が可能になる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施の形態に係るソフトウェア開発工数見積装置の構成例を示すブロック図である。
【図２】実施の形態に係るソフトウェア開発工数見積画面の一例を示す図である。
【図３】実施の形態に係る工数見積対象のＵＭＬファイルのシーケンス図の一例である。
【図４】実施の形態に係るソフトウェア開発工数見積の動作の一例を示すフローチャートである。
【図５】本発明の実施の形態に係るソフトウェア開発工数見積装置のハードウェア構成の一例を示すブロック図である。
【発明を実施するための形態】
【００１４】
以下に、本発明を実施するための形態について図面を参照して詳細に説明する。なお、図中同一または相当する部分には同じ符号を付す。
【００１５】
図１は、本発明の実施の形態に係るソフトウェア開発工数見積装置の構成例を示すブロック図である。ソフトウェア開発工数見積装置１は、記憶部１１、表示制御部１２、表示部１３、入力部１４および工数見積部１５を備える。
【００１６】
ソフトウェア開発工数見積装置１は、開発する対象ソフトウェアの仕様をＵＭＬで記述したＵＭＬファイルの関数ごとの見積工数を算出する。ユーザは、ソフトウェア開発工数見積装置１の表示部１３に表示されるソフトウェア開発工数見積画面において、ＵＭＬファイルの関数ごとの見積工数を算出するために必要な指示情報を入力する。
【００１７】
記憶部１１は、ＵＭＬファイルを記憶している。ＵＭＬファイルは、あらかじめソフトウェア設計段階で作成される。また、記憶部１１は、ソフトウェア開発工数見積画面のデータを記憶している。さらに、記憶部１１は、ＵＭＬファイルの関数ごとの見積工数を算出する工数見積式を記憶している。
【００１８】
表示制御部１２は、記憶部１１からソフトウェア開発工数見積画面のデータを読み出し、表示部１３に表示させる。
【００１９】
入力部１４は、ユーザがソフトウェア開発工数見積画面に入力した指示情報を取得する。指示情報は、選択したＵＭＬファイルを示す情報と、１関数あたりの開発に要する最低限の工数（以下、基本時間という）を示す情報と、１関数が呼び出すサブ関数が１つ増えるごとに、その関数の開発に要する工数に追加される工数（以下、サブ関数係数という）を示す情報と、１関数内でインターフェースをもつオブジェクトが１つ増えるごとに、その関数の開発に要する工数に追加される工数（以下、オブジェクト係数という）を示す情報とを含む。本実施の形態では、工数を時間として扱う。入力部１４は、受け付けた指示情報を工数見積部１５に送る。なお、ユーザが入力部１４に直接指示情報を入力する構成に限らず、入力部１４が外部の端末から指示情報を取得する構成にしてもよい。
【００２０】
工数見積部１５は、入力部１４から受け取った指示情報に基づいて、ユーザが選択したＵＭＬファイルを記憶部１１から読み出す。工数見積部１５は、読み出したＵＭＬファイルのシーケンス図を解析し、シーケンス図内の工数見積対象の関数（以下、対象関数という）を抽出する。たとえば、作業が完了していない関数を対象関数としてもよいし、ユーザが対象関数を指定してもよい。
【００２１】
工数見積部１５は、対象関数が呼び出すサブ関数の数と、対象関数内でインターフェースをもつオブジェクトの数を数える。工数見積部１５は、対象関数が呼び出すサブ関数の数および対象関数内でインターフェースをもつオブジェクトの数と、指示情報が示す基本時間、サブ関数係数およびオブジェクト係数の値とを工数見積式に代入して、対象関数ごとの見積工数を算出する。
【００２２】
ユーザが基本時間、サブ関数係数およびオブジェクト係数に加えて、対象関数ごとの複雑さを考慮して難易度を入力した場合、指示情報は、難易度を示す情報を含む。この場合、工数見積部１５は、対象関数が呼び出すサブ関数の数および対象関数内でインターフェースをもつオブジェクトの数と、指示情報が示す基本時間、サブ関数係数およびオブジェクト係数の値とに加え、難易度で決まる値（以下、難易度係数という）を工数見積式に代入して、対象関数ごとのコーディングと単体テストの見積工数を算出する。
【００２３】
工数見積式は、見積工数＝（基本時間＋サブ関数係数×サブ関数の数＋オブジェクト係数×オブジェクトの数）、または、見積工数＝（基本時間＋サブ関数係数×サブ関数の数＋オブジェクト係数×オブジェクトの数）×難易度係数で表される。前者の式は、後者の式で難易度係数が１であるとみなせる。
【００２４】
工数見積部１５は、各対象関数について算出した見積工数を示す対象関数リストを表示制御部１２に送る。工数見積部１５は、対象関数リストをファイルとして記憶部１１に出力してもよい。出力先は、記憶部１１に限らず、ユーザにメールで送信してもよいし、プリントアウトしてもよい。
【００２５】
表示制御部１２は、工数見積部１５から受け取った対象関数リストをソフトウェア開発工数見積画面に表示させる。
【００２６】
図２は、実施の形態に係るソフトウェア開発工数見積画面の一例を示す図である。ソフトウェア開発工数見積装置１が起動すると、表示制御部１２は、表示部１３に図２に示すようなソフトウェア開発工数見積画面１００を表示させる。ソフトウェア開発工数見積画面１００には、ＵＭＬファイル名表示欄１０１、ＵＭＬファイル選択ボタン１０２、工数見積ボタン１０３、ファイル出力ボタン１０４、基本時間設定ボックス１０５、サブ関数係数設定ボックス１０６、オブジェクト係数設定ボックス１０７、および、対象関数リスト１０８が配置されている。
【００２７】
ユーザが入力部１４を介して、ＵＭＬファイル選択ボタン１０２を押下し、ＵＭＬファイルを選択すると、入力部１４は、ユーザが選択したＵＭＬファイルを示す情報を指示情報として取得する。入力部１４は、ユーザが選択したＵＭＬファイルを示す指示情報を表示制御部１２に送る。表示制御部１２は、入力部１４から受け取った指示情報に基づいて、ＵＭＬファイル名表示欄１０１に選択されたＵＭＬファイルのファイル名を表示させる。
【００２８】
ＵＭＬファイルの選択方法は、ＵＭＬファイル選択ボタン１０２を押下することにより、ＵＭＬファイルを選択する画面がポップアップする構成にしてもよいし、ＵＭＬファイル選択ボタン１０２を押下する回数に各ＵＭＬファイルが対応付けられており、ユーザは、ＵＭＬファイル名表示欄１０１に表示されたＵＭＬファイルのファイル名を見てＵＭＬファイルを選択してもよい。あるいは、プルダウンでＵＭＬファイルの一覧を表示させて、選択可能にしてもよい。
【００２９】
ユーザが基本時間設定ボックス１０５に基本時間を入力すると、入力部１４は、ユーザが入力した基本時間を示す情報を指示情報として取得する。ユーザがサブ関数係数設定ボックス１０６にサブ関数を入力すると、入力部１４は、ユーザが入力したサブ関数係数を示す情報を指示情報として取得する。ユーザがオブジェクト係数設定ボックス１０７にオブジェクト係数を入力すると、入力部１４は、ユーザが入力したオブジェクト係数を示す情報を指示情報として取得する。
【００３０】
ユーザが工数見積ボタンを押下すると、入力部１４は、指示情報を工数見積部１５に送る。
【００３１】
工数見積部１５は、入力部１４から指示情報を受け取ると、ユーザが選択したＵＭＬファイルを記憶部１１から読み出す。工数見積部１５は、読み出したＵＭＬファイルのシーケンス図を解析し、対象関数を抽出する。工数見積部１５は、対象関数が呼び出すサブ関数の数および対象関数内でインターフェースをもつオブジェクトの数を数える。工数見積部１５は、対象関数が呼び出すサブ関数の数および対象関数内でインターフェースをもつオブジェクトの数と、指示情報が示す基本時間、サブ関数係数およびオブジェクト係数の値とを工数見積式に代入し、対象関数ごとの見積工数を算出するソフトウェア開発工数見積処理を実行する。表示制御部１２は、対象関数のリストを対象関数リスト１０８の欄に表示させる。
【００３２】
対象関数リスト１０８は、対象関数のクラス名を示す「クラス名１０９」、対象関数の名称を示す「関数名１１０」、対象関数が呼び出すサブ関数の数を示す「呼び出しサブ関数の数１１１」、対象関数内でインターフェースをもつオブジェクトの数を示す「インターフェースをもつオブジェクト数１１２」、工数見積部１５が見積った工数の値を示す「見積工数１１３」および対象関数の難易度を示す「難易度１１４」の項目で構成されている。
【００３３】
対象関数リスト１０８の欄に対象関数のリストが表示されると、ユーザは、難易度１１４の項目に、関数ごとの難易度を入力することが可能となる。ユーザが難易度を入力した後、工数見積ボタン１０３を押下すると、工数見積部１５は、入力された難易度を加味して、再度ソフトウェア開発工数見積処理を実行する。これに従い、表示制御部１２は、対象関数リスト１０８を更新する。
【００３４】
また、ユーザがファイル出力ボタン１０４を押下すると、工数見積部１５は、対象関数リスト１０８をファイルとして出力する。ファイルとして出力するのは、対象関数ごとの見積工数のみを示す情報であってもよい。また、工数見積部１５が対象関数リスト１０８をファイルとして出力しない場合には、ファイル出力ボタン１０４はなくてもよい。
【００３５】
ここで、対象関数の工数見積方法の詳細を説明する。
【００３６】
図３は、実施の形態に係る工数見積対象のＵＭＬファイルのシーケンス図の一例である。ソフトウェア開発工数見積装置１の工数見積部１５は、ユーザが選択した工数見積対象のＵＭＬファイルを記憶部１１から読み出すと、該ＵＭＬファイルのシーケンス図をすべて抽出する。さらに、工数見積部１５は、抽出したシーケンス図の対象関数をすべて抽出する。
【００３７】
図３の例では、関数４０１を対象関数とする。まず、工数見積部１５は、対象関数４０１のクラス名とメソッド名を識別して取得する。そして、工数見積部１５は、対象関数４０１が呼び出すサブ関数４０２の数と、対象関数４０１内でインターフェースをもつオブジェクト４０３の数と、を数える。図３の例では、サブ関数４０２の数およびオブジェクト４０３の数はそれぞれ「２」である。
【００３８】
ソフトウェア開発の工数は、コーディング工数と単体テスト工数の合算である。記憶部１１が記憶する工数見積式を以下に示す。
（コーディング工数＋単体テスト工数）＝｛ＴＢ＋（Ａ×α）＋（Ｂ×β）｝×γ
【００３９】
ＴＢは、ユーザが入力した基本時間である。Ａは、対象関数が呼び出したサブ関数の数であって、αは、ユーザが入力したサブ関数係数である。Ｂは、対象関数内でインターフェースをもつオブジェクトの数であって、βは、ユーザが入力したオブジェクト係数である。γは、ユーザが対象関数に対して入力した難易度の値で決まる難易度係数である。γの初期設定値は１とする。
【００４０】
工数見積部１５は、ＴＢに、Ａに係数αを乗算した値とＢに係数βを乗算した値を加算する。Ｂに係数βを乗算した値を加算するのは、対象関数内でインターフェースをもつクラス（オブジェクト）の数が多いほど、単体テストにおける模擬クラスやスタブの作成に時間を要するためである。ＴＢ、Ａ、Ｂはユーザによる過去の実績値などに基づいて設定する。工数見積部１５は、ユーザが対象関数の難易度を入力した場合には、難易度で決まる値をγに代入する。難易度係数はユーザが入力した難易度の値をそのまま用いてもよいし、ユーザが入力した難易度の値から所定の計算式で算出してもよい。
【００４１】
たとえば、ＴＢの値が１０、αおよびβの値がそれぞれ５であって、ユーザが対象関数４０１の難易度として１．５を入力したとして、難易度係数に難易度の値をそのまま用いる場合、図３の例における対象関数４０１の見積工数は、｛１０＋（２×５）＋（２×５）｝×１．５＝４５となる。
【００４２】
工数見積部１５は、このように対象関数の工数を見積もり、この工数見積を全てのシーケンス図内の全ての対象関数に対して実施する。
【００４３】
図４は、実施の形態に係るソフトウェア開発工数見積の動作の一例を示すフローチャートである。ソフトウェア開発工数見積処理は、ソフトウェア開発工数見積装置１が起動すると開始する。
【００４４】
表示制御部１２は、記憶部１１からソフトウェア開発工数見積画面のデータを読み出し、表示部１３に表示させる（ステップＳ１１）。ユーザによって選択されたＵＭＬファイル、基本時間、サブ関数係数およびオブジェクト係数を示す指示情報が入力され、工数見積ボタンが押下されると（ステップＳ１２；ＹＥＳ）、入力部１４は、受け付けた指示情報を工数見積部１５に送る。ユーザによって工数見積ボタンが押下されない場合（ステップＳ１２；ＮＯ）、ステップＳ１２を繰り返す。
【００４５】
工数見積部１５は、入力部１４から受け取った指示情報に基づいて、ユーザが選択したＵＭＬファイルを記憶部１１から読み出し（ステップＳ１３）、該ＵＭＬファイルのシーケンス図を抽出する（ステップＳ１４）。工数見積部１５は、抽出したシーケンス図の対象関数を抽出する（ステップＳ１５）。
【００４６】
工数見積部１５は、対象関数のクラス名とメソッド名を識別して取得する（ステップＳ１６）。工数見積部１５は、対象関数が呼び出すサブ関数の数を数える（ステップＳ１７）。また、工数見積部１５は、対象関数内でインターフェースをもつオブジェクトの数を数える（ステップＳ１８）。そして、工数見積部１５は、対象関数が呼び出すサブ関数の数および対象関数内でインターフェースをもつオブジェクトの数と、指示情報が示す基本時間、サブ関数係数およびオブジェクト係数の値とを工数見積式に代入し、対象関数の見積工数を算出する（ステップＳ１９）。
【００４７】
ステップＳ１５で抽出された次の対象関数がある場合（ステップＳ２０；ＹＥＳ）、ステップＳ１６に戻り、次の対象関数についてステップＳ１６〜ステップＳ２０を繰り返す。ステップＳ１５で抽出された次の対象関数がない場合（ステップＳ２０；ＮＯ）、ステップＳ１４で抽出された次のシーケンス図があるか否かを判定する（ステップＳ２１）。
【００４８】
ステップＳ１４で抽出された次のシーケンス図がある場合（ステップＳ２１；ＹＥＳ）、ステップＳ１５に戻り、次のシーケンス図についてステップＳ１５〜ステップＳ２１を繰り返す。ステップＳ１４で抽出された次のシーケンス図がない場合（ステップＳ２１；ＮＯ）、工数見積部１５は、工数見積結果である対象関数リストを表示制御部１２に送る。
【００４９】
表示制御部１２は、工数見積部１５から受け取った対象関数リストをソフトウェア開発工数見積画面の所定の対象関数リストの欄に表示させる（ステップＳ２２）。ユーザによって対象関数の難易度が入力され、再度、工数見積ボタンが押下されると（ステップＳ２３；ＹＥＳ）、入力部１４は、受け付けた指示情報を工数見積部１５に送る。工数見積部１５は、ステップＳ１９に戻り、ステップＳ１９〜ステップＳ２２を繰り返す。このとき、工数見積部１５は、ステップＳ１９で、対象関数が呼び出すサブ関数の数および対象関数内でインターフェースをもつオブジェクトの数と、指示情報が示す基本時間、サブ関数係数およびオブジェクト係数の値とに加え、難易度係数を工数見積式に代入し、対象関数の見積工数を算出する。ユーザによって再度、工数見積ボタンが押下されなかった場合（ステップＳ２３；ＮＯ）、処理はステップＳ２４に移行する。
【００５０】
ソフトウェア開発工数見積装置１の電源がＯＦＦになっていない場合、（ステップＳ２４；ＮＯ）、処理はステップＳ１２に戻り、ステップＳ１２〜ステップＳ２４を繰り返す。電源がＯＦＦになった場合（ステップＳ２４；ＹＥＳ）、処理を終了する。
【００５１】
なお、ステップＳ２３において、ユーザによって再度、工数見積ボタンが押下されたか否かの判定ではなく、ユーザによって対象関数の難易度が入力されたか否かを判定してもよい。この場合、工数見積部１５は、対象関数ごとに、最初に算出した見積工数の値にユーザが入力した難易度の値で決まる難易度係数を乗算して、難易度を加味した見積工数を算出する。表示制御部１２は、工数見積部１５が再度算出した見積工数の値をソフトウェア開発工数見積画面の対象関数リストの見積工数の欄に更新表示させる。これにより、ユーザは再度工数見積ボタンを押す必要がなく、難易度を加味した見積工数を閲覧することができる。
【００５２】
ソフトウェア開発工数見積装置１の工数見積部１５が対象関数リストをファイルとして出力する機能を有する場合、ソフトウェア開発工数見積処理とは別に、ユーザがファイル出力ボタン１０４を押下した場合に、対象関数リストをファイルとして記憶部１１に出力するファイル出力処理を実行する。前述のように、出力先は、記憶部１１に限らず、ユーザにメールで送信してもよいし、プリントアウトしてもよい。また、ファイルとして出力するのは、対象関数ごとの見積工数のみを示す情報であってもよい。
【００５３】
以上説明したように、実施の形態のソフトウェア開発工数見積装置１によれば、ソフトウェアの開発工数見積において、関数単位での、コーディングと単体テストの工数見積が自動ででき、開発工数見積の省力化が可能になる。また、人が工数見積をする場合に比べ、バラつきがなくなり、工数見積の平準化が可能となる。
【００５４】
図５は、本発明の実施の形態に係るソフトウェア開発工数見積装置のハードウェア構成の一例を示すブロック図である。
【００５５】
制御部３１はＣＰＵ（Central Processing Unit）等から構成され、外部記憶部３３に記憶されている制御プログラム３９に従って、ソフトウェア開発工数見積装置１の表示制御部１２および工数見積部１５の各処理を実行する。
【００５６】
主記憶部３２はＲＡＭ（Random-Access Memory）等から構成され、外部記憶部３３に記憶されている制御プログラム３９をロードし、制御部３１の作業領域として用いられる。
【００５７】
外部記憶部３３は、フラッシュメモリ、ハードディスク、ＤＶＤ−ＲＡＭ（Digital Versatile Disc Random-Access Memory）、ＤＶＤ−ＲＷ（Digital Versatile Disc ReWritable）等の不揮発性メモリから構成され、ソフトウェア開発工数見積装置１の処理を制御部３１に行わせるためのプログラムをあらかじめ記憶し、また、制御部３１の指示に従って、このプログラムが記憶するデータを制御部３１に供給し、制御部３１から供給されたデータを記憶する。記憶部１１は、外部記憶部３３に構成される。
【００５８】
操作部３４はキーボードおよびマウスなどのポインティングデバイス等と、キーボードおよびポインティングデバイス等を内部バス３０に接続するインターフェース装置から構成されている。ユーザがソフトウェア開発工数見積装置１に情報を入力すると、操作部３４を介して、入力された情報が制御部３１に供給される。操作部３４は、入力部１４として機能する。
【００５９】
表示部３５は、ＣＲＴ（Cathode Ray Tube）またはＬＣＤ（Liquid Crystal Display）などから構成され、欠品確認情報を表示する。また、ユーザがソフトウェア開発工数見積装置１に情報を入力する際は、操作画面を表示する。表示部３５は、表示部１３として機能する。
【００６０】
図１に示すソフトウェア開発工数見積装置１の記憶部１１、表示制御部１２、表示部１３、入力部１４および工数見積部１５の処理は、制御プログラム３９が、制御部３１、主記憶部３２、外部記憶部３３、操作部３４および表示部３５などを資源として用いて処理することによって実行する。
【００６１】
その他、前記のハードウェア構成やフローチャートは一例であり、任意に変更および修正が可能である。
【００６２】
制御部３１、主記憶部３２、外部記憶部３３、操作部３４、表示部３５、内部バス３０などから構成されるソフトウェア開発工数見積装置１の処理を行う中心となる部分は、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。例えば、前記の動作を実行するためのコンピュータプログラムを、コンピュータが読み取り可能な記録媒体（フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等）に格納して配布し、当該コンピュータプログラムをコンピュータにインストールすることにより、前記の処理を実行するソフトウェア開発工数見積装置１を構成してもよい。また、インターネット等の通信ネットワーク上のサーバ装置が有する記憶装置に当該コンピュータプログラムを格納しておき、通常のコンピュータシステムがダウンロード等することでソフトウェア開発工数見積装置１を構成してもよい。
【００６３】
また、ソフトウェア開発工数見積装置１の機能を、ＯＳ（オペレーティングシステム）とアプリケーションプログラムの分担、またはＯＳとアプリケーションプログラムとの協働により実現する場合などには、アプリケーションプログラム部分のみを記録媒体や記憶装置に格納してもよい。
【００６４】
また、搬送波にコンピュータプログラムを重畳し、通信ネットワークを介して配信することも可能である。例えば、通信ネットワーク上の掲示板（BBS, Bulletin Board System）に前記コンピュータプログラムを掲示し、ネットワークを介して前記コンピュータプログラムを配信してもよい。そして、このコンピュータプログラムを起動し、ＯＳの制御下で、他のアプリケーションプログラムと同様に実行することにより、前記の処理を実行できるように構成してもよい。
【符号の説明】
【００６５】
１  ソフトウェア開発工数見積装置、１１  記憶部、１２  表示制御部、１３  表示部、１４  入力部、１５  工数見積部、３０  内部バス、３１  制御部、３２  主記憶部、３３  外部記憶部、３４  操作部、３５  表示部、３９  制御プログラム、１００  ソフトウェア開発工数見積画面、１０１  ＵＭＬファイル名表示欄、１０２  ＵＭＬファイル選択ボタン、１０３  工数見積ボタン、１０４  ファイル出力ボタン、１０５  基本時間設定ボックス、１０６  サブ関数係数設定ボックス、１０７  オブジェクト係数設定ボックス、１０８  対象関数リスト、１０９  クラス名、１１０  関数名、１１１  呼び出しサブ関数の数、１１２  インターフェースをもつオブジェクト数、１１３  見積工数、１１４  難易度、４０１  対象関数、４０２  サブ関数、４０３  オブジェクト。
【図１】
2014123196.tif 000003
【図２】
2014123196.tif 000004
【図３】
2014123196.tif 000005
【図４】
2014123196.tif 000006
【図５】
2014123196.tif 000007