(57)【要約】【課題】本発明は、ソフトウェアの開発工数を少ない工数で、かつ高精度に見積もることができるようにする新たなソフトウェア開発工数見積技術の提供を目的とする。【解決手段】画面上のコントロールの裏側にはそれを処理するソフトウェアが存在することに着目して、見積対象のソフトウェアの表示する画面のデザイン情報に従って、そのソフトウェアの表示する画面をディスプレイに表示するときに、画面上のコントロールを実装する際のソフトウェアの開発に要する工数を特定可能とするものとして定義される見積用コントロールの一覧をディスプレイに表示して、表示した画面上のコントロールに対して該当する見積用コントロールを割り付け、表示した画面毎に、割り付けた見積用コントロールの個数を見積用コントロール種別毎に集計し、見積用コントロール種別に応じて設定される重み付けに基づいた評価を行うことでソフトウェアの開発工数を見積もる。【選択図】図１
2011216104.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアの開発工数を見積もるソフトウェア開発工数見積装置であって，
見積対象のソフトウェアの画面デザインを，少なくともエディットフィールド，ラジオボタン，選択ボタン，ボタンを含むコントロールを作成する画面デザイン作成部と，
上記画面のデザイン情報に従って，そのソフトウェアの表示する画面をディスプレイに表示するとともに，その表示に対応付けて，上記コントロールを実装する際の，ソフトウェアの開発に要する工数を特定可能とするものとして定義される見積用コントロールの一覧をディスプレイに表示する表示手段と，
上記表示手段に表示した画面上の上記機能を表すコントロールに対して，見積用コントロール一覧の中から，該当する見積用コントロールを割り付ける割付手段と，
上記表示手段の表示した画面毎に，上記割付手段の割り付けた見積用コントロールの個数を見積用コントロール種別毎に集計し，上記機能で細分化した見積用コントロール種別に応じて設定される重み付けに基づいた評価を行い，上記割付手段により見積用コントロールが割り付けられていない画面上のコントロールについては，そのコントロールの種別に応じた見積用コントロールが割り付けられていると見なし，ソフトウェアの開発工数を見積もる見積手段と，
上記割付手段の割り付けた見積用コントロールとその見積用コントロールの割り付け先のコントロールとの対応関係の情報を保持する保持手段とを備えることを，
特徴とするソフトウェア開発工数見積装置。
【請求項２】
ソフトウェアの開発工数を見積もるソフトウェア開発工数見積装置であって，
見積対象のソフトウェアの画面デザインを，少なくともエディットフィールド，ラジオボタン，選択ボタン，チェックボックス，ボタンを含むコントロールを作成する画面デザイン作成部と，
上記画面のデザイン情報に従って，そのソフトウェアの表示する画面をディスプレイに表示するとともに，その表示に対応付けて，上記コントロールを実装する際の，ソフトウェアの開発に要する工数を特定可能とするものとして定義される見積用コントロールの一覧をディスプレイに表示する表示手段と，
上記表示手段に表示した画面上の上記機能を表すコントロールに対して，見積用コントロールの一覧の中から，該当する見積用コントロールを割り付ける割付手段と，
上記表示手段の表示した画面毎に，上記割付手段の割り付けた見積用コントロールの個数を見積用コントロール種別毎に集計し，機能で細分化した見積用コントロール種別に応じて設定される重み付けに基づいた評価を行い，上記割付手段により見積用コントロールが割り付けられていない画面上のコントロールについては，そのコントロールの種別に応じた見積用コントロールが割り付けられていると見なし，相関チェックを行う見積用コントロールについては，それらの相関チェックの数に応じて設定される重み付けを用いて，ソフトウェアの開発工数を見積もる見積手段と，
上記割付手段の割り付けた見積用コントロールとその見積用コントロールの割り付け先のコントロールとの対応関係の情報を保持する保持手段と，
上記保持手段の保持する上記対応関係情報に従って，上記割付手段により割り付けられている見積用コントロールの情報をディスプレイに表示する第２の表示手段とを備えることを，
特徴とするソフトウェア開発工数見積装置。
【請求項３】
請求項１または請求項２のいずれかにおいて，
見積対象のソフトウェアの業務の違いに対応して異なる値のファンクションスケールを設定することができるファンクションスケール設定手段を備えることを，
特徴とするソフトウェア開発工数見積装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，ソフトウェアの開発工数を見積もるソフトウェア開発工数見積装置に関し，特に，ソフトウェアの開発工数を少ない工数で，かつ高精度に見積もることができるようにするソフトウェア開発工数見積装置に関する。
【背景技術】
【０００２】
ソフトウェアを開発する場合には，スケジュールの計画立案を行う必要があることから，ソフトウェアの開発工数を見積もる必要がある。
【０００３】
ソフトウェアの開発工数の見積もりに関係して，製品開発プロジェクトにおいて，プロジェクトの日程計画を立案する際に，工数算出式の持つ係数を変化できるようにすることで，製品や製品を構成する部品の仕様が変化したり，製品開発における各作業の生産性が変化する場合にも，プロジェクトの日程計画立案に必要となる工数を高精度に見積もることができるようにするという発明が開示されている（例えば，特許文献１参照）。
【０００４】
また，ソフトウェアの開発工数の見積技術として，開発途中の任意の時点において，過去の見積値や実績値を利用して，それ以降の工程で導出される成果物の量や作業の量を高精度に見積もることができるようにするという発明が開示されている（例えば，特許文献２参照）。
【０００５】
また，別のソフトウェアの開発工数の見積技術として，機能仕様書の情報よりユーザが要求する各種の機能を抽出し，その抽出した各機能の複雑度に従って機能量（ファンクションポイント）という値を求めて，プロジェクトを構成する全部の機能の機能量を総合計した総機能量を算出することで，複数の作業で構成されるプロジェクトを実行する場合における作業工数を見積もることができるようにするという発明が開示されている（例えば，特許文献３参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００２−１０９１７３号公報
【特許文献２】特開平１０−２４０８０８号公報
【特許文献３】特開平１１−２０３３５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
このように，従来から，ソフトウェアの開発工数を見積もるための様々な手法が提案されている。
【０００８】
しかしながら，従来の手法では，ソフトウェアの開発工数の見積もりを少ない工数で実現できないという問題がある。
【０００９】
すなわち，特許文献１に記載された発明では，製品や製品を構成する部品の仕様が変化したり，製品開発における各作業の生産性が変化する場合にも，プロジェクトの日程計画立案に必要となる工数を高精度に見積もることができるようになるものの，各工程の工数の算出に用いる工数算出式が必要となり，この工数算出式の構築に手間がかかるという問題がある。
【００１０】
また，特許文献２に記載された発明では，開発途中の任意の時点において，それ以降の工程で導出される成果物の量や作業の量を高精度に見積もることができるようになるものの，結局のところ，見積値算出式に従って見積値を算出して，その見積値と実際の実績値との差異を求めて見積値の誤差の傾向を分析し，その分析結果に基づいて見積値算出式を補正するようにしていることから，この見積値算出式の構築に手間がかかるという問題がある。
【００１１】
さらに，特許文献２に記載された発明では，過去の見積値や実績値が必要になるので，開発途中の任意の時点での見積もりになるという問題がある。
【００１２】
また，特許文献３に記載された発明では，機能仕様書の情報に基づいて，複数の作業で構成されるプロジェクトを実行する場合における作業工数を見積もることができるようになるものの，各機能の複雑度に従って機能量を求めるときに，データ項目数や関数・ファイル数に基づいて複雑度を求めるようにしており，機能仕様書に記載されている内容を詳細に読まなくてはならないことから，見積もりを行う者の負荷が大きいという問題がある。
【００１３】
このように，従来の手法では，ソフトウェアの開発工数の見積もりを少ない工数で実現できないという問題がある。
【００１４】
しかも，従来の手法では，工数算出式や見積値算出式を使って見積もりを行うようにしていることから，これらの算出式が適切なものになっていないと，高精度の見積もりを行うことができないという問題もある。
【００１５】
本発明はかかる事情に鑑みてなされたものであって，ソフトウェアの開発工数を少ない工数で，かつ高精度に見積もることができるようにする新たなソフトウェア開発工数見積技術の提供を目的とする。
【課題を解決するための手段】
【００１６】
この目的を達成するために，本発明のソフトウェア開発工数見積装置は，ソフトウェアの開発工数を少ない工数で，かつ高精度に見積もることができるようにするために，（１）見積対象のソフトウェアの表示する画面のデザイン情報に従って，そのソフトウェアの表示する画面をディスプレイに表示するとともに，その表示に対応付けて，画面上のコントロールを実装する際のソフトウェアの開発に要する工数を特定可能とするものとして定義される見積用コントロールの一覧をディスプレイに表示する表示手段と，（２）表示手段の表示した画面上のコントロールに対して，見積用コントロール一覧の中から，該当する見積用コントロールを割り付ける割付手段と，（３）表示手段の表示した画面毎に，割付手段の割り付けた見積用コントロールの個数を見積用コントロール種別毎に集計し，見積用コントロール種別に応じて設定される重み付けに基づいた評価を行うことで，ソフトウェアの開発工数を見積もる見積手段と，（４）割付手段の割り付けた見積用コントロールとその見積用コントロールの割り付け先のコントロールとの対応関係の情報を一時的に保持する保持手段と，（５）保持手段の保持する対応関係情報に従って，割付手段により割り付けられている見積用コントロールの情報をディスプレイに表示する第２の表示手段とを備えるように構成する。
【００１７】
この構成を採るときに，見積手段は，割付手段により見積用コントロールが割り付けられていない画面上のコントロールについては，そのコントロールの種別に応じた見積用コントロールが割り付けられていると見なして見積処理を行うことがある。
【００１８】
また，見積手段は，相関チェックを行う見積用コントロールについては，それらの見積用コントロールの数に応じて設定される重み付けを用いることがある。
【００１９】
また，表示手段は，画面上のコントロールの種別とそのコントロールで行う処理内容とに応じて定義される見積用コントロールの一覧をディスプレイに表示することがある。すなわち，画面上のコントロールの種別が同一であっても，そのコントロールを実装する際のソフトウェアの開発に要する工数が異なるものとなるものについては，異なる見積用コントロールとして見積用コントロール一覧をディスプレイに表示することがある。
【００２０】
また，第２の表示手段は，画面上のコントロールとそれに割り付けられている見積用コントロールとの間にリンクを表示することで，割付手段により割り付けられている見積用コントロールの情報をディスプレイに表示することがある。
【００２１】
ここで，以上の各処理手段が動作することで実現される本発明のソフトウェア開発工数見積方法はコンピュータプログラムでも実現できるものであり，このコンピュータプログラムは，適当なコンピュータ読み取り可能な記録媒体に記録して提供されたり，ネットワークを介して提供され，本発明を実施する際にインストールされてＣＰＵなどの制御手段上で動作することにより本発明を実現することになる。
【００２２】
このように構成される本発明のソフトウェア開発工数見積装置では，見積対象のソフトウェアの表示する画面のデザイン情報を入力すると，そのデザイン情報に従って，そのソフトウェアの表示する画面をディスプレイに表示するとともに，その表示に対応付けて，見積用コントロールの一覧をディスプレイに表示する。
【００２３】
ソフトウェアの表示する画面には，エディットフィールドや，ラジオボタン（複数の選択項目の中から１つだけを選択可能にする仕組み）や，チェックボックス（複数の選択項目の中から１つ以上を選択可能にする仕組み）や，選択ボタンや，通常のボタンなどの様々なコントロールが表示されることになるが，画面のデザイン情報は，ただ単に，それらのコントロールが画面上のどの位置にあるのかを示すだけのものである。
【００２４】
一方，画面にコントロールがあると，それに伴ったソフトウェア（プログラム）が必要となる。このとき必要となるソフトウェアの大きさ（プログラムの量）は，そのコントロールの種別により単純に決まるものではなく，そのコントロールの種別に加えて，例えば，入力値がマスタに存在するのか否かをチェックする必要があるとか，他項目との相関をチェックする必要があるとか，マスタを検索する必要があるとか，マスタに登録する必要があるとか，マスタを更新する必要があるとか，マスタから削除する必要があるとかということなどを加味したもので決まることになる。
【００２５】
すなわち，このようなチェックなどが必要であるということは，それに応じた大きさのソフトウェアを開発する必要があるということを意味するからである。
【００２６】
そこで，本発明のソフトウェア開発工数見積装置では，例えば，画面上のコントロールの種別とそのコントロールで行う処理内容とに応じて見積用コントロールを定義することで，画面上のコントロールを実装する際のソフトウェアの開発に要する工数を特定可能とする見積用コントロールを定義して，見積対象のソフトウェアの表示する画面のデザイン情報に従って，そのソフトウェアの表示する画面をディスプレイに表示するときに，その表示に対応付けて，それらの見積用コントロールの一覧をディスプレイに表示するようにする。
【００２７】
そして，ユーザからの割付指示に従って，表示した画面上のコントロールに対して，見積用コントロール一覧の中から，該当する見積用コントロールを割り付けて，表示した画面毎に，割り付けた見積用コントロールの個数を見積用コントロール種別毎に集計し，見積用コントロール種別に応じて設定される重み付けに基づいた評価を行うことで，ソフトウェアの開発工数を見積もるようにする。
【発明の効果】
【００２８】
以上説明したように，本発明では，画面上のコントロールの裏側には，それを処理するソフトウェアが存在しており，そのソフトウェアの大きさは，そのコントロールの種別とそのコントロールで行う処理内容とに応じておおよそ決められることになるということに着目して，見積対象のソフトウェアの表示する画面のデザイン情報に従って，そのソフトウェアの表示する画面をディスプレイに表示するときに，画面上のコントロールを実装する際のソフトウェアの開発に要する工数を特定可能とするものとして定義される見積用コントロールの一覧をディスプレイに表示して，ユーザとの対話処理に従って，表示した画面上のコントロールに対して該当する見積用コントロールを割り付けて，表示した画面毎に，割り付けた見積用コントロールの個数を見積用コントロール種別毎に集計し，見積用コントロール種別に応じて設定される重み付けに基づいた評価を行うことで，ソフトウェアの開発工数を見積もるようにする。
【００２９】
この構成に従って，本発明によれば，ユーザは，ユーザインタフェース仕様書などに基づいて，ただ単に，ディスプレイに表示される見積対象のソフトウェアの表示する画面のコントロールに対して，見積用コントロール一覧の中から該当する見積用コントロールを割り付けるだけで，ソフトウェアの開発工数を見積もることができるようになるので，ソフトウェアの開発工数の見積もりを少ない工数で実現できるようになる。
【００３０】
そして，画面上のコントロールを処理するソフトウェアの大きさについては，そのコントロールの種別とそのコントロールで行う処理内容とに応じておおよそ決められており，ユーザの導出する主観的な算出式のようなものに基づいて算出する必要がないので，本発明によれば，ソフトウェアの開発工数を高精度に見積もることができるようになる。
【００３１】
そして，画面上のコントロールについては市販されている画面作成開発ツールを利用して作成することが可能であるので，本発明によれば，見積用コントロールを付加するツールを追加するだけでソフトウェアの開発工数を見積もることができるようになるので，ソフトウェアの開発工数の見積もりを行うためのシステムを極めて簡単に実現できるようになる。
【図面の簡単な説明】
【００３２】
【図１】本発明のソフトウェア開発工数見積装置の一実施形態例である。
【図２】見積用コントロール情報記憶部の記憶する情報の説明図である。
【図３】ファンクションスケール記憶部の記憶する情報の説明図である。
【図４】見積用シート記憶部に記憶される見積用シートの説明図である。
【図５】画面デザイン作成部の実行する処理フローである。
【図６】見積用コントロール割付部の実行する処理フローである。
【図７】ソフトウェア開発工数見積部の実行する処理フローである。
【図８】本発明のソフトウェア開発工数見積装置の実行する処理の説明図である。
【図９】見積用コントロール割付部の表示する画面の説明図である。
【図１０】見積用コントロール割付部の表示する画面の説明図である。
【図１１】見積用コントロール割付部の表示する画面の説明図である。
【図１２】見積用コントロール割付部の表示する画面の説明図である。
【発明を実施するための形態】
【００３３】
以下，実施の形態に従って本発明を詳細に説明する。
【００３４】
図１に，本発明のソフトウェア開発工数見積装置１の一実施形態例を図示する。ここで，図中に示す２は，本発明のソフトウェア開発工数見積装置１の備える入出力端末であり，ユーザとの対話手段として用いられるものである。
【００３５】
この図に示すように，本発明のソフトウェア開発工数見積装置１は，見積用コントロール情報記憶部１０と，ファンクションスケール記憶部１１と，見積用シート記憶部１２と，ファンクションスケール設定部１３と，画面デザイン作成部１４と，見積用コントロール設定エリア１５０を持つ見積用コントロール割付部１５と，ソフトウェア開発工数見積部１６と，画面デザイン情報コード領域１７０と見積用コントロール情報コード領域１７１とを持つフォーム定義ファイル１７とを備える。
【００３６】
見積用コントロール情報記憶部１０は，画面上のコントロールに割り付けることになる上述の見積用コントロールとして，どのようなものがあるのかという情報を記憶する。
【００３７】
図２に，見積用コントロール情報記憶部１０の記憶する情報の一例を図示する。
【００３８】
この図に示す例では，見積用コントロール情報記憶部１０は，画面上のコントロールに割り付けることになる上述の見積用コントロールとして，他項目との関連をチェックするエディットフィールドであることを示す“EditRelationCheck ”と，マスタ（サーバ）に入力値が存在するのか否かをチェックするエディットフィールドであることを示す“EditInputCheck”と，他項目との関連をチェックするラジオボタンであることを示す“RadioRelationCheck”と，マスタに入力値が存在するのか否かをチェックするラジオボタンであることを示す“RadioInputCheck ”と，他項目との関連をチェックするチェックボックスであることを示す“CheckBoxRelationCheck ”と，マスタに入力値が存在するのか否かをチェックするチェックボックスであることを示す“CheckBoxInputCheck”と，他項目との関連をチェックする選択ボタンであることを示す“ToggleRelationCheck ”と，マスタに入力値が存在するのか否かをチェックする選択ボタンであることを示す“ToggleInputCheck”と，画面の表示・終了などを処理するボタン（マスタアクセスなしのボタン）であることを示す“ButtonNonAccess ”と，マスタからデータを検索するボタンであることを示す“ButtonSelectAccess”と，マスタにデータを登録するボタンであることを示す“ButtonInsertAccess”と，マスタに登録されているデータを更新するボタンであることを示す“ButtonUpdateAccess”と，マスタに登録されているデータを削除するボタンであることを示す“ButtonDeleteAccess”と，帳票を出力するボタンであることを示す“ButtonReportOutput”と，画面の初期表示時にマスタアクセスを行うコントロールであることを示す“InitialServerAccess ”と，Ｅxcel, ＣＳＶファイル等を出力するコントロールであることを示す“DataOutput”というものがあることを記憶する。
【００３９】
このような区分けで見積用コントロールを定義するのは，画面上のコントロールの裏側には，それを処理するソフトウェアが存在しており，それらのソフトウェアの大きさがこのような区分けに従ってかなりな精度でもって分類でき，それにより，その画面の開発に必要となるソフトウェアの大きさを高精度に予測できるようになるという点にあるからである。
【００４０】
ファンクションスケール記憶部１１は，コントロールを実装する際に必要となるソフトウェアの大きさの違いを示すファンクションスケールの値を記憶する。
【００４１】
図３に，ファンクションスケール記憶部１１の記憶するファンクションスケール値の一例を図示する。
【００４２】
この図に示す例では，ファンクションスケール記憶部１１は，ファンクションスケール値の記憶対象となるコントロールとして，図２に示した見積用コントロールに加えて，入力値のチェックのみを行うエディットフィールドであることを示す“TextBox ”や“Edit”があり，テキストエリアであることを示す“Label ”があり，入力値のチェックのみを行うラジオボタンであることを示す“RadioButton ”があり，入力値のチェックのみを行うチェックボックスであることを示す“CheckBox”があり，入力値のチェックのみを行う選択ボタンであることを示す“Combo ”や“ComboBox”や“ListBox ”があり，スプレッド（或いは表）であることを示す“DataGrid”や“FpPread ”や“MultiRowSheet ”があり，タブであることを示す“TabControl”があるということを想定するとともに，ボタンには不明な処理を示すもの（仕様未確定のもの）があるということを想定して，これらのコントロール（見積用コントロール）のファンクションスケールの値を記憶する。
【００４３】
すなわち，ファンクションスケール記憶部１１は，マスタに登録されているデータを更新するボタンを実装する場合に必要となるソフトウェアの大きさ（“ButtonUpdateAccess”という見積用コントロールを実装する場合に必要となるソフトウェアの大きさ）を１５０で表すならば，入力値の存在の有無をチェックするエディットフィールドを実装する場合に必要となるソフトウェアの大きさ（“EditInputCheck”という見積用コントロールを実装する場合に必要となるソフトウェアの大きさ）は１００であるというように，コントロール（見積用コントロール）を実装する際に必要となるソフトウェアの大きさの違いを示すファンクションスケールの値を記憶するのである。
【００４４】
ここで，相関チェックが必要となる見積用コントロールについては，その見積用コントロールの相関チェックの数に応じて，ファンクションスケールの値を定義するようにしている。例えば，２個のエディットフィールドが入力値のチェックのみを行うエディットフィールドである場合には，それらのエディットフィールドに割り付けられる見積用コントロールのファンクションスケールの合計値は“１５＋１５＝３０”となるのに対して，２個のエディットフィールドが他項目との関連をチェックするエディットフィールドである場合には，それらのエディットフィールドに割り付けられる見積用コントロールのファンクションスケールの合計値は“１５＋１０×２＝３５”となる。
【００４５】
なお，図３に記載するコントロールの内の図２に示す見積用コントロールに記載されていないコントロールは，画面デザイン作成部１４としてマイクロソフト社の提供するＶisual Ｓtudio と呼ばれる開発ツールを利用する場合において，Ｖisual Ｓtudio が画面上のコントロールをデザインするときに生成することになるコントロールである。
【００４６】
見積用シート記憶部１２は，ソフトウェアの表示する画面毎に集計された見積用コントロールの数（画面上のコントロールに割り付けられた見積用コントロールの数）について記録する見積用シートを記憶する。
【００４７】
ここで，図３に記載するコントロールの内の図２に示す見積用コントロールに記載されていないものについても，見積用コントロールとみなして見積用シートに記録するようにしている。
【００４８】
図４に，見積用シート記憶部１２に記憶される見積用シートの一例を図示する。
【００４９】
この図に示す例では，見積用シートは，開発工数の見積対象となるソフトウェアが５１枚の画面を表示することを想定しており，例えば，お客様情報詳細表示という画面については，入力値のチェックのみを行うエディットフィールドであることを示す見積用コントロールが１個割り付けられ，マスタに入力値が存在するのか否かをチェックするエディットフィールドであることを示す見積用コントロールが１個割り付けられ，テキストエリアであることを示す見積用コントロールが４８個割り付けられ，スプレッドであることを示す見積用コントロールが１個割り付けられ，サーバアクセス（マスタアクセス）なしのボタンであることを示す見積用コントロールが１個割り付けられ，サーバ（マスタ）からデータを検索するボタンであることを示す見積用コントロールが１個割り付けられているということを記録する。
【００５０】
ファンクションスケール設定部１３は，入出力端末２のディスプレイにファンクションスケールの設定のための画面を表示して，その設定画面を介してユーザと対話することで，ファンクションスケール記憶部１１に記憶されるファンクションスケールの値を設定して，ファンクションスケール記憶部１１に登録する処理を行う。
【００５１】
このファンクションスケール設定部１３を用意することで，ソフトウェアの業務の違いなどによりファンクションスケールの値が異なるものとなる場合に，見積対象となるソフトウェアに適合したファンクションスケールの値を用いることができるようになることで，ソフトウェア開発工数の見積精度を高めることができるようになる。
【００５２】
画面デザイン作成部１４は，開発するソフトウェアの表示する画面のデザイン（レイアウト）を作成するために用意されるものであり，入出力端末２を介してユーザと対話することで，開発するソフトウェアの表示する画面のデザインを作成して，そのデザイン情報をフォーム定義ファイル１７の画面デザイン情報コード領域１７０に書き込む処理を行う。
【００５３】
ここで，この画面デザイン作成部１４としては，マイクロソフト社の提供するＶisual Ｓtudio と呼ばれる開発ツールを利用することが可能である。
【００５４】
見積用コントロール割付部１５は，フォーム定義ファイル１７から画面デザイン情報を読み出して，その読み出した画面デザイン情報に従って，画面デザイン作成部１４によりデザインされた画面を入出力端末２のディスプレイに表示するとともに，その表示に対応付けて，見積用コントロール情報記憶部１０に記憶される見積用コントロールの一覧（図２に示したもの）を入出力端末２のディスプレイに表示して，入出力端末２を介してユーザと対話することで，先ず最初に，見積用コントロールの一覧の中から割付対象となるものを選択して見積用コントロール設定エリア１５０に保持するとともに，フォーム定義ファイル１７の見積用コントロール情報コード領域１７１に書き込み，続いて，その選択した見積用コントロールを画面上のどのコントロールに割り付けるのかということを設定して，その設定した対応関係の情報を見積用コントロール設定エリア１５０に保持するとともに，フォーム定義ファイル１７の見積用コントロール情報コード領域１７１に書き込む処理を行う。
【００５５】
ソフトウェア開発工数見積部１６は，フォーム定義ファイル１７から，画面デザイン作成部１４により書き込まれた画面上のコントロールの情報と，見積用コントロール割付部１５により書き込まれたそれらのコントロールに割り付けられた見積用コントロールの情報とを読み出して，それに基づいて見積用シートを作成するとともに，その作成した見積用シートの情報と，ファンクションスケール記憶部１１に記憶されるファンクションスケールの値とに基づいて，見積対象となるソフトウェアの開発工数を算出して，それを出力する処理を行う。
【００５６】
図５に，画面デザイン作成部１４の実行する処理フローの一例を図示し，図６に，見積用コントロール割付部１５の実行する処理フローの一例を図示し，図７に，ソフトウェア開発工数見積部１６の実行する処理フローの一例を図示する。
【００５７】
次に，これらの処理フローに従って，図１のように構成される本発明のソフトウェア開発工数見積装置１の実行する処理について詳細に説明する。
【００５８】
最初に，図５の処理フローに従って，画面デザイン作成部１４の実行する処理について説明する。ここで，図５の処理フローでは，説明の便宜上，開発するソフトウェアの表示するある１つの画面についての作成処理を想定しているが，実際には，開発するソフトウェアの表示する全ての画面について，この作成処理を実行することになる。
【００５９】
画面デザイン作成部１４は，ソフトウェアの開発にあたって，入出力端末２を操作するユーザから，そのソフトウェアの表示する画面の作成要求があると，図５の処理フローに示すように，先ず最初に，ステップ１０で，ユーザからの操作要求を待って，ユーザから操作要求が発行されると，ステップ１１に進んで，ユーザから画面上に配置するコントロールの作成要求が発行されたのか否かを判断する。
【００６０】
この判断処理に従って，画面上に配置するコントロールの作成要求が発行されたことを判断するときには，ステップ１２に進んで，ユーザとの対話処理に従って，ユーザの要求するコントロールを作成し，プロパティ情報を設定して，そのオブジェクト情報を生成する。
【００６１】
続いて，ステップ１３で，その生成したオブジェクト情報を，フォーム定義ファイル１７の画面デザイン情報コード領域１７０に格納してから，ユーザの操作要求を待つべくステップ１０に戻る。
【００６２】
このようにして，ステップ１０〜１３の処理を繰り返していくことで，ソフトウェアの表示する画面を作成していくときに，ステップ１１で，ユーザから画面上に配置するコントロールの作成要求以外の要求が発行されたことを判断するときには，ステップ１４に進んで，ユーザから終了要求が発行されたのか否かを判断して，ユーザから終了要求以外の処理要求が発行されたことを判断するときには，ステップ１５に進んで，その処理要求の処理を実行してから，ユーザの操作要求を待つべくステップ１０に戻る。
【００６３】
一方，ステップ１４で，ユーザから終了要求が発行されたことを判断するときには，処理を終了する。
【００６４】
このようにして，画面デザイン作成部１４は，入出力端末２を介してユーザと対話することで，開発するソフトウェアの表示する画面のデザインを作成して，その作成した画面上のコントロールについての情報をフォーム定義ファイル１７の画面デザイン情報コード領域１７０に格納するように処理する。
【００６５】
例えば，図８の上段に示すように，Ｅ１というエディットフィールドと，Ｅ２というエディットフィールドと，Ｅ３というエディットフィールドと，Ｂ１というボタンと，Ｂ２というボタンを持つ画面を作成して，それらのコントロールのオブジェクト情報をフォーム定義ファイル１７の画面デザイン情報コード領域１７０に格納するように処理するのである。
【００６６】
このとき，画面デザイン作成部１４としてマイクロソフト社の提供するＶisual Ｓtudio を利用する場合には，Ｖisual Ｓtudio の仕様に従って，図３に示した“TextBox ”や“Edit”や“Label ”や“RadioButton ”や“CheckBox”や“Combo ”や“ComboBox”や“ListBox ”や“DataGrid”や“FpPread ”や“MultiRowSheet ”や“TabControl”というコントロールのオブジェクト情報がフォーム定義ファイル１７の画面デザイン情報コード領域１７０に格納されることになる。また，ボタンについては，“Button”というコントロールとして，そのオブジェクト情報がフォーム定義ファイル１７の画面デザイン情報コード領域１７０に格納されることになる。
【００６７】
次に，図６の処理フローに従って，見積用コントロール割付部１５の実行する処理について説明する。ここで，図６の処理フローでは，説明の便宜上，画面デザイン作成部１４の作成したある１つの画面についての割付処理を想定しているが，実際には，画面デザイン作成部１４の作成した見積対象となるソフトウェアの表示する全ての画面について，この割付処理を実行することになる。
【００６８】
見積用コントロール割付部１５は，入出力端末２を操作するユーザから，画面デザイン作成部１４の作成した画面に対する見積用コントロールの割付要求があると，図６の処理フローに示すように，先ず最初に，ステップ２０で，フォーム定義ファイル１７の画面デザイン情報コード領域１７０から，割付要求のある画面のデザイン情報を読み込み，それに従って，その画面を入出力端末２のディスプレイに表示する。
【００６９】
続いて，ステップ２１で，見積用コントロール情報記憶部１０から，予め定義されている見積用コントロールの名称（図２に示したもの）を読み込んで，図９に示すように，ステップ２０の処理により表示した画面と対応をとりつつ，その名称の一覧を入出力端末２のディスプレイに表示する。
【００７０】
続いて，ステップ２２で，ユーザからの選択指示に従って，ステップ２１の処理により表示した見積用コントロールの一覧から，画面上のコントロールに割り付ける見積用コントロールを選択する。
【００７１】
すなわち，ユーザは，ソフトウェア開発の設計書の一つとして用意されているユーザインタフェース設計書（画面デザイン作成部１４の作成した画面上のコントロールが操作されたときに，どのような処理を行うのかということなどについて記載してある設計書）を参照することで，画面デザイン作成部１４の作成した画面上のコントロールが図２に定義した見積用コントロールのどれに相当するのかを調べて，それに基づいて，画面上のコントロールに対して該当する見積用コントロールを割り付けることを指示するので，その指示に従って，画面上のコントロールに割り付ける見積用コントロールを選択するのである。
【００７２】
続いて，ステップ２３で，その選択した見積用コントロールのコントロール名を見積用コントロール設定エリア１５０に保持するとともに，フォーム定義ファイル１７の見積用コントロール情報コード領域１７１に格納する。
【００７３】
例えば，図１０中に示す“btn-F1”というボタンに対して，“ButtonNonAccess ”という見積用コントロールを割り付けるときには（ただし，“btn-F1”というボタンに割り付けるということについては次のステップ２４で設定する），例えば，
“Friend WithEvents ButtonNonAccess1
As Gaia.Evaluation.Several.ButtonNonAccess”
というようなオブジェクト情報を作成して，見積用コントロール設定エリア１５０に保持するとともに，フォーム定義ファイル１７の見積用コントロール情報コード領域１７１に書き込むことで，その選択した見積用コントロールのコントロール名を見積用コントロール設定エリア１５０に保持するとともに，フォーム定義ファイル１７の見積用コントロール情報コード領域１７１に格納するのである。
【００７４】
ここで，“ButtonNonAccess1”の“１”については，“ButtonNonAccess ”が選択される度にカウントアップする通番が用いられる。
【００７５】
続いて，ステップ２４で，ユーザからの表示指示に従って，図１１に示すようなプロパティ画面を表示して，それに対する入力を受け付けることで，選択した見積用コントロールのターゲット先となるコントロール（割り付け先となるコントロール）を設定する。
【００７６】
図１０中に示す“btn-F1”というボタンに対して，“ButtonNonAccess1”という見積用コントロールを割り付けるときの例で説明するならば，図１１に示すように，その見積用コントロールのターゲット先のコントロールが“btn-F1”であるということについて設定するのである。
【００７７】
ここで，画面デザイン作成部１４の作成した画面上の全てのコントロールに対して見積用コントロールが割り付けられるようになるとは限らないが，見積用コントロールの割り付けられないコントロールについては，後述することから分かるように，ファンクションスケール記憶部１１には登録されているものの，見積用コントロール情報記憶部１０には登録されていないコントロールで，いわば見積用コントロールとして見なされるコントロールが割り付けられたものとして処理されることになる。
【００７８】
続いて，ステップ２５で，ステップ２２で選択した見積用コントロールのコントロール名と，ステップ２４で設定したターゲットのコントロールのコントロール名との対応関係を見積用コントロール設定エリア１５０に保持するとともに，フォーム定義ファイル１７の見積用コントロール情報コード領域１７１に格納する。
【００７９】
図１０中に示す“btn-F1”というボタンに対して，“ButtonNonAccess1”という見積用コントロールを割り付けたときの例で説明するならば，例えば，
“Me.ButtonNonAccess1.Target=Me.btn-F1
というようなオブジェクト情報を作成して，見積用コントロール設定エリア１５０に保持するとともに，フォーム定義ファイル１７の見積用コントロール情報コード領域１７１に書き込むことで，選択した見積用コントロールのコントロール名と，設定したターゲットのコントロールのコントロール名との対応関係を見積用コントロール設定エリア１５０に保持するとともに，フォーム定義ファイル１７の見積用コントロール情報コード領域１７１に格納するのである。
【００８０】
続いて，ステップ２６で，ユーザから処理終了要求が発行されたのか否かを判断して，処理終了要求が発行されていないことを判断するときには，見積用コントロールの割付処理を続行すべくステップ２２に戻り，処理終了要求が発行されたことを判断するときには，処理を終了する。
【００８１】
このようにして，見積用コントロール割付部１５は，画面デザイン作成部１４によりデザインされた画面をディスプレイに表示するとともに，その表示に対応付けて，見積用コントロールの一覧をディスプレイに表示して，ユーザと対話することで，その表示した画面上のコントロールに対して見積用コントロールを割り付けて，その割り付けた情報を見積用コントロール設定エリア１５０に保持するとともに，フォーム定義ファイル１７の見積用コントロール情報コード領域１７１に格納するように処理するのである。
【００８２】
この見積用コントロール割付部１５の処理に従って，例えば，画面デザイン作成部１４が，図８の上段に示すように，Ｅ１というエディットフィールドと，Ｅ２というエディットフィールドと，Ｅ３というエディットフィールドと，Ｂ１というボタンと，Ｂ２というボタンを持つ画面を作成して，それらのコントロールのオブジェクト情報をフォーム定義ファイル１７の画面デザイン情報コード領域１７０に格納するときに，見積用コントロール割付部１５が，Ｅ２というエディットフィールドに対して“EditInputCheck”という見積用コントロールを割り付け，Ｅ３というエディットフィールドに対して“EditInputCheck”という見積用コントロールを割り付け，Ｂ１というボタンに対して“ButtonSelectAccess”という見積用コントロールを割り付けた場合には，図８の中段に示すように，それらの割付情報が見積用コントロール設定エリア１５０に保持されるとともに，フォーム定義ファイル１７の見積用コントロール情報コード領域１７１に格納されることになる。
【００８３】
ここで，図６の処理フローでは説明しなかったが，見積用コントロールには，画面の初期表示時にマスタアクセスを行うコントロールであることを示す“InitialServerAccess ”のような画面全体に割り付けられるようなものもある。このような見積用コントロールについてはターゲットを選択することができないので，ステップ２４，２５の処理については省略することになる。
【００８４】
また，見積用コントロール設定エリア１５０には，ステップ２５の処理に従って，見積用コントロールの割付処理の実行中において，割り付けた見積用コントロールのコントロール名と，その見積用コントロールを割り付けたコントロールのコントロール名との対応関係が保持されている。
【００８５】
これから，見積用コントロール割付部１５は，この対応関係のデータを使って，どのコントロールに対してどのような見積用コントロールが割り付けられているのかということを入出力端末２のディスプレイに表示するようにしている。この表示を見ることで，ユーザは，まだ見積用コントロールの割り付けていないコントロールがどれであるのかということを把握することができるようになる。
【００８６】
この表示方法としては，対応関係のデータをそのままテキストの形で表示することでもよいが，例えば，図１２に示すように，見積用コントロール設定エリア１５０に保持されている見積用コントロールの一覧をディスプレイに表示するとともに，それらの見積用コントロールがどのコントロールに割り付けられているかを示すリンクをディスプレイに表示することにより行ってもよい。
【００８７】
見積用コントロール設定エリア１５０には，画面上のコントロールに割り付けられた見積用コントロールの一覧が保持されているとともに，それらの見積用コントロールがどのコントロール（ターゲット先のコントロール）に割り付けられたのかということを示す対応関係の情報が保持されており，一方，各コントロールが画面上のどの位置に表示されているのかということについては，画面デザイン情報コード領域１７０を参照すれば分かるので，見積用コントロール割付部１５は，それらの情報を使って，図１２に示すような表示を行うことが可能なのである。
【００８８】
図１２に示すように，見積用コントロール設定エリア１５０に保持されている見積用コントロールの一覧をディスプレイに表示するとともに，それらの見積用コントロールがどのコントロールに割り付けられているものなのかをリンクを使って表示するようにすると，同一のコントロールに対して誤って重複する形で見積用コントロールを割り付けてしまうというような不都合を防げるようになるとともに，後で見積用コントロールの割り付けについて見直しを行うような場合に極めて便利なものとなる。
【００８９】
なお，上述したように，見積用コントロールには，画面の初期表示時にマスタアクセスを行うコントロールであることを示す“InitialServerAccess ”のような画面全体に割り付けられるようなものもあり，このようなものについてはターゲットとなるコントロールがないのでリンクが表示されないことになるが，ユーザは，リンクが表示されていないことで，そのような見積用コントロールであることを知ることができるようになる。
【００９０】
また，図１２では図示していないが，見積用コントローラの種別に応じてリンクの色や線種を変えて表示するようにしてもよい。例えば，相関チェックを行う見積用コントローラについては，リンクの色や線種を変えて表示するようにしてもよい。
【００９１】
次に，図７の処理フローに従って，ソフトウェア開発工数見積部１６の実行する処理について説明する。
【００９２】
ソフトウェア開発工数見積部１６は，入出力端末２を操作するユーザから，ソフトウェアを指定して，そのソフトウェアの開発工数の見積要求があると，図７の処理フローに示すように，先ず最初に，ステップ３０で，見積要求のソフトウェアの表示する全ての画面について処理したのか否かを判断する。
【００９３】
このステップ３０の判断処理に従って，見積要求のソフトウェアの表示する全ての画面について処理を終了していないということを判断するときには，ステップ３１に進んで，見積要求のソフトウェアの表示する画面の中から未処理の画面を１つ選択する。
【００９４】
続いて，ステップ３２で，フォーム定義ファイル１７の見積用コントロール情報コード領域１７１から，その選択した画面についての見積用コントロールのオブジェクト情報を読み込むとともに，フォーム定義ファイル１７の画面デザイン情報コード領域１７０から，画面デザイン作成部１４がその画面について作成したコントロールのオブジェクト情報を読み込む。
【００９５】
続いて，ステップ３３で，その読み込んだ見積用コントロールのオブジェクト情報に従って，見積用コントロールのコントロール種別毎に，見積用コントロールの個数を算出する。
【００９６】
図８の中段に示す例で説明するならば，図８の下段に示すように，“EditInputCheck”という見積用コントロールが２個あり，“ButtonSelectAccess”という見積用コントロールが１個あるということを計数するのである。
【００９７】
続いて，ステップ３４で，ステップ３２で読み込んだ画面デザイン作成部１４が作成したコントロールのオブジェクト情報に従って，コントロールのコントロール種別毎に，コントロールの個数を算出する。
【００９８】
図８の上段に示す例で説明するならば，図８の下段に示すように，“Edit”というコントロールが３個あり，“Button”というコントロールが２個あるということを計数するのである。
【００９９】
続いて，ステップ３５で，クラス名で定義されるコントロール種別毎に，ステップ３３で計数した見積用コントロールの個数とステップ３４で計数したコントロールの個数とが一致するのか否かを判断する。
【０１００】
図８の下段の例で説明するならば，“Edit”というクラス名を持つコントロールについて，ステップ３３で計数した見積用コントロールの個数とステップ３４で計数したコントロールの個数とが一致するのか否かを判断し，“Button”というクラス名を持つコントロールについて，ステップ３３で計数した見積用コントロールの個数とステップ３４で計数したコントロールの個数とが一致するのか否かを判断するのである。
【０１０１】
このステップ３５の判断処理に従って，ステップ３３で計数した見積用コントロールの個数とステップ３４で計数したコントロールの個数とが一致しないコントロール種別がある場合には，ステップ３６に進んで，その一致しないコントロール種別について，その差分の数に相当するコントロールに対して，ファンクションスケール記憶部１１に登録されている規定のコントロール（見積用コントロールと見なされるコントロールであって，ファンクションスケールの値を持つことが定義されているコントロール）が割り付けられているものとみなす処理を行う。
【０１０２】
図８の下段の例で説明するならば，“Edit”というコントロール種別については，１個に対して図２に定義する見積用コントロールが割り付けられていないので，その“Edit”というコントロールに対しては，ファンクションスケール記憶部１１に登録されている入力値のみのチェックを行うエディットフィールドであるというコントロール（見積用コントロールと見なされるコントロール）が割り付けられているものとみなす処理を行うのである。そして，“Button”というコントロール種別については，１個に対して図２に定義する見積用コントロールが割り付けられていないので，その“Button”というコントロールに対しては，ファンクションスケール記憶部１１に登録されている不明な処理のボタンであるというコントロール（見積用コントロールと見なされるコントロール）が割り付けられているものとみなす処理を行うのである。
【０１０３】
続いて，ステップ３７で，見積用コントロールの個数に従って，選択した画面についての見積用シート（１行分）を作成して，それを見積用シート記憶部１２に保存してから，次の画面について処理すべくステップ３０に戻る。
【０１０４】
このようにして，ステップ３０〜ステップ３７の処理を繰り返していくことで，ステップ３０で，見積要求のソフトウェアの表示する全ての画面について処理を終了したことを判断することで，図４に示すようなデータ構造を持つ見積要求のソフトウェアについての見積用シートを作成して，それを見積用シート記憶部１２に保存したことを判断すると，ステップ３８に進んで，見積用シート記憶部１２から，その作成した見積用シート（全行）を読み込む。
【０１０５】
続いて，ステップ３９で，その読み込んだ見積用シートの各行について，ファンクションスケール記憶部１１に記憶されるファンクションスケールを重みとして用いて，重み付けされた見積用コントロールの個数の合計値（“重み×見積用コントロールの個数”の合計値）を算出する。
【０１０６】
続いて，ステップ４０で，見積要求のソフトウェアの表示する画面について，その算出した合計値の総和を算出することで，見積要求のソフトウェアの開発工数を算出する。
【０１０７】
そして，最後に，ステップ４１で，その算出したソフトウェアの開発工数を出力して，処理を終了する。
【０１０８】
このようにして，ソフトウェア開発工数見積部１６は，フォーム定義ファイル１７の見積用コントロール情報コード領域１７１から，画面上のコントロールに割り付けられた見積用コントロールのオブジェクト情報を読み込むとともに，フォーム定義ファイル１７の画面デザイン情報コード領域１７０から，画面デザイン作成部１４がその画面について作成したコントロールのオブジェクト情報を読み込んで，それに基づいて見積用シートを作成するとともに，その作成した見積用シートの情報と，ファンクションスケール記憶部１１に記憶されるファンクションスケールの値とに基づいて，見積対象となるソフトウェアの開発工数を算出して，それを出力するように処理するのである。
【０１０９】
このように，本発明ソフトウェア開発工数見積装置１は，見積対象のソフトウェアの表示する画面のデザイン情報に従って，そのソフトウェアの表示する画面をディスプレイに表示するときに，画面上のコントロールを実装する際のソフトウェアの開発に要する工数を特定可能とするものとして定義される見積用コントロールの一覧をディスプレイに表示して，ユーザとの対話処理に従って，表示した画面上のコントロールに対して該当する見積用コントロールを割り付けて，表示した画面毎に，割り付けた見積用コントロールの個数を見積用コントロール種別毎に集計し，見積用コントロール種別に応じて設定される重み付けに基づいた評価を行うことで，ソフトウェアの開発工数を見積もることを実現するのである。
【産業上の利用可能性】
【０１１０】
本発明によれば，ユーザは，ユーザインタフェース仕様書などに基づいて，ただ単に，ディスプレイに表示される見積対象のソフトウェアの表示する画面のコントロールに対して，見積用コントロール一覧の中から該当する見積用コントロールを割り付けるだけで，ソフトウェアの開発工数を見積もることができるようになるので，ソフトウェアの開発工数を少ない工数で，かつ高精度に見積もることができるようになる。
【符号の説明】
【０１１１】
１      ソフトウェア開発工数見積装置
２      入出力端末
１０    見積用コントロール情報記憶部
１１    ファンクションスケール記憶部
１２    見積用シート記憶部
１３    ファンクションスケール設定部
１４    画面デザイン作成部
１５    見積用コントロール割付部
１６    ソフトウェア開発工数見積部
１７    フォーム定義ファイル
１５０  見積用コントロール設定エリア
１７０  画面デザイン情報コード領域
１７１  見積用コントロール情報コード領域
【図１】
2011216104.tif 000003
【図２】
2011216104.tif 000004
【図３】
2011216104.tif 000005
【図４】
2011216104.tif 000006
【図５】
2011216104.tif 000007
【図６】
2011216104.tif 000008
【図７】
2011216104.tif 000009
【図８】
2011216104.tif 000010
【図９】
2011216104.tif 000011
【図１０】
2011216104.tif 000012
【図１１】
2011216104.tif 000013
【図１２】
2011216104.tif 000014