【実施例1】
【0014】
<動作の概略>
図1は、本実施形態の見積装置100の概略的な動作を説明する図の一例である。
(1)まず、見積装置100にソフトウェアの設計書9が入力される。
(2)見積装置100はイベントデータテーブル51のキーワードに合致する表記を設計書9から抽出する。例えば、キーワードが「[エディットフィールド]<[エディットフィールド]」である場合、設計書9から「開始日<終了日」という表記が抽出される。また、この表記は「入力値存在チェック(エディット)」というイベント(ソフトウェアの動作を引き起こす事象)の可能性があることがイベントデータテーブル51から判明する。
(3)見積装置100はFS値データテーブル53から「入力値存在チェック」に対応付けられているFS値を取得してFS値を集計する。したがって、イベントについて自動集計ができるようになる。
(4)また、見積装置100は、暫定的に決定したイベント名を設計書の例えば当該項目(キーワード)の横の出力欄に出力する。暫定的なイベント名はその信頼性に応じて強調して表示されるため、計測者はイベント名が正しいかどうかを確認しやすい。間違っている場合は、計測者は設計書の当該項目出力欄の横などにある修正欄に正しいイベント名を入力する。計測者は設計書9を目視して、キーワードと暫定のイベント名を確認する。計測者は文脈から正しいイベント名を判断できるので、暫定のイベント名が正しいか否かを判断し、異なっている場合には設計書の当該項目出力欄の横に正しいイベント名を入力する。
図1では、設計書に「相関チェック」という正しいイベント名が登録されている。
(5)見積装置100は再度、設計書を読み取る。見積装置100は、修正データテーブル52に誤ったキーワード(自動判断結果イベント名)と正しいイベント名(誤判断修正イベント名)を対応付けて記録する。
(6)見積装置100は、計測者の集計結果をイベントデータテーブル51に反映させる。具体的には、誤判断修正イベント名にイベント名が登録されているキーワードがある場合、イベントデータテーブル51のキーワードの間違い回数を1つ大きくする。また、修正データテーブル52のキーワードと誤判断修正イベントをイベントデータテーブル51に追加する。この時の間違い回数と正解回数はゼロでよい。また、誤判断修正イベント名にイベント名が登録されているキーワードがある場合(自動判断結果イベント名には何も記載されていない)、イベントデータテーブル51の該キーワードの正解回数を1つ大きくする。間違い回数、修正回数が更新されるので集計の正誤記録が蓄積されていく。
(7)修正結果付きの設計書を見積装置100が読み取ると、修正データテーブル52を参照して、最終的な集計結果(FS値)を出力する。修正データテーブル52が参照されるので正確なFS値を出力できる。
【0015】
したがって、イベントデータテーブル51において修正が不要なキーワードの正解回数は大きくなり、修正されたキーワードは間違い回数が増え、正しいイベント名と共にイベントデータテーブル51に登録される。修正されたイベント名の蓄積により次回のイベント名の判断精度が向上し、FS値の集計の精度を向上させることができる。
【0016】
なお、この結果、同じキーワードが複数登録される可能性があるが、この場合、FS値の集計には、原則的に信頼性がより高いキーワードが使用されるので不都合はない。
【0017】
このように、本実施形態の見積装置100は、ソフトウェアの動的な機能を含む規模を自動集計することができる。すなわち、従来は、自動集計が困難だった設計書9のイベントに関する表記についても自動で集計できる。キーワードの信頼性による判断に加え、設計書の当該項目に対応する形で自動変換結果出力と修正入力欄を設けることで、誰でも容易に自動判断結果の確認と修正ができる。信頼性に基づく強調表示により、自動判断結果の確認が容易になる。また、集計結果に対し計測者が誤集計のキーワードに正しいイベント名を登録するので、集計が徐々に高精度になる。
【0018】
<用語について>
特許請求の範囲のソフトウェアの機能に関する書類とは、ソフトウェアが有している機能が記述された書類である。例えば、設計書、提案書、要件定義書、仕様書、テスト仕様書などがある。本実施形態では設計書という用語で説明するが、書類の名称はどのようなものでもよい。
【0019】
ソフトウェアの動作に関する表記とは、ソフトウェアがどのように動作するかについて記述されたものをいう。
【0020】
また、表記とは文字や記号で表すことをいう。表記は、日本語でも外国でもよい。また、自由筆記されていても、XMLなどの所定の形式で記述されていてもよい。
【0021】
動作名情報とは、ソフトウェアの動作の名称である。動作名情報によりどのようにソフトウェアが動作するかが特定される。本実施形態ではイベント又はイベント名という用語で説明する。また、動作名情報にはイベント又はイベント名を特定するための情報(例えば、後述する対応イベントデータ通番)も含まれる。
【0022】
規模情報とは、ソフトウェアの規模に相関又は関連する情報である。ソフトウェアの規模は提供する機能が大きいほど大きくなる傾向がある。規模情報は機能に必要なコストと称してもよい。
【0023】
<構成例>
図2は、見積装置100の構成例を示す図である。
図2(a)は見積装置100がスタンドアローン型で構成される場合の構成例を示し、
図2(b)は見積システム200としてサーバ・クライアント型で構成される場合の構成例を示す。
【0024】
図2(a)の見積装置100は情報処理装置である。情報処理装置は一般にPC(Personal Computer)であるが、情報処理装置としての機能を有する、タブレット端末、スマートフォン、ゲーム機、PDA(Personal Digital Assistant)などでもよい。
【0025】
図2(b)では、端末150と見積装置100がネットワークを介して接続されている。端末150と見積装置100は
図2(a)の情報処理装置と同様でよい。また、サーバ・クライアント型の見積装置100はサーバと呼ばれる場合がある。この場合、見積装置100はクラウドコンピューティングに対応していてもよい。クラウドとはネットワークを利用した特定ハードウェア資源を意識しない利用形態である。クラウド上の見積装置100は、1つの筐体に収納されていたりひとまとまりの装置として備えられていたりする必要はなく、負荷に応じてハード的なリソースが動的に接続・切断されることで構成される。また、一台の情報処理装置の中の仮想化環境に構築されていたり、複数台の情報処理装置に跨って構築されたりしてもよい。
【0026】
<ハードウェア構成>
図3は、見積装置100のハードウェア構成を説明する図の一例である。見積装置100は、CPU301、ROM302、RAM303及び補助記憶装置304を備える。更に、見積装置100は、入力部305、ディスプレイI/F306、ネットワークI/F307及び外部機器I/F308を備える。なお、見積装置100の各部は、バスBを介して相互に接続されている。
【0027】
CPU301は、補助記憶装置304に格納された各種のプログラム304p、OS(Operating System)等を実行する。ROM302は不揮発性メモリである。ROM302は、システムローダーやデータ等を格納する。
【0028】
RAM303は、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)等の主記憶装置である。CPU301によって実行される際に補助記憶装置304に格納されたプログラム304pがRAM303に展開され、RAM303はCPU301の作業領域となる。
【0029】
補助記憶装置304は、CPU301により実行されるプログラム304p及びプログラム304pがCPU301により実行される際に利用される各種データベースを記憶する。補助記憶装置304は例えばHDD(Hard Disk Drive)やSSD(Solid State Drive)などの不揮発性メモリである。
【0030】
入力部305は、オペレータが見積装置100に各種指示を入力するためのインタフェースである。例えば、キーボード、マウス、タッチパネル、音声入力装置などである。ただし、入力部305は必要に応じて接続されてよい。
【0031】
ディスプレイI/F306は、CPU301からの要求により、見積装置100が有する各種情報をカーソル、メニュー、ウィンドウ、文字、又は画像などの形態で表示装置であるディスプレイ310に表示する。ディスプレイI/F306は、例えばグラフィックチップやディスプレイI/Fである。ただし、ディスプレイI/F306は必要に応じて接続されてよい。
【0032】
ネットワークI/F307は、ネットワークを介して、他の端末や装置と通信を行う通信装置である。ネットワークI/F307は例えばイーサネット(登録商標)カードであるがこれに限られない。
【0033】
外部機器I/F308は、USBケーブル、又は、USBメモリ等の各種の記憶媒体320などを接続するためのインタフェースである。
【0034】
なお、端末150のハードウェア構成については見積装置100と同様であるか、相違があるとしても本実施形態の説明に支障はないものとする。
【0035】
<FS法について>
図4は、一般的なFS法を説明する図の一例である。
図4(a)は、一般的な情報処理装置がデータベースを検索して検索結果を一覧表示するユーザインタフェース画面の一例を示す。
図4(a)には、20個のディスプレイフィールド501(501−1〜501−21(501−16は欠番))、2個のエディットフィールド502(502−1、502−2)、1つのスプレッド503、4つの遷移ボタン504(504−1〜504−4)、及び、1つの検索ボタン505が表示されている。
【0036】
また、
図4(b)はユーザインタフェース画面のFS値が示されている。FS値の集計要素としてコントロールとイベントがある。
【0037】
コントロールの一例として、20個のディスプレイフィールド501は、それぞれ決まった情報(項目名や数値など)を表示するだけである。1個のスプレッド503も同様であり、スプレッド503には検索結果が表示されるだけである。
【0038】
イベントの一例としての相関チェックは、例えば項目間の入力が正しいか否かが検証されることをいう。後述するように相関チェックを実施する表記が設計書に含まれる場合、解析結果に基づきイベントとして判断される。
【0039】
例えば、エディットフィールド502にはユーザが数値や文字を入力するので、ソフトウェアは入力値が適切か否かを判断が必要な場合があり、この判断、すなわちソフトウェアの動作がイベントとして判断される。
図4(b)に示すように、エディットフィールド502に相関チェックがあることが示されており、FS値が集計されている。
【0040】
また、一般にボタンは、押下されたボタンの内容に応じてソフトウェアを動作させる契機となるため、1つの検索ボタン505及び4つの遷移ボタン504は、ソフトウェアの動作をもたらすものである。
図4(b)ではボタン類に相関チェックの項目がないが、これは、ボタン類は情報の入力に使用されないためである。ただし、イベントとして判断されるためFS値が計上される。
【0041】
以上のように、
図4では、ディスプレイフィールド501及びスプレッド503を除きイベントを有している。表示に関するディスプレイフィールド501及びスプレッド503のFS値の計測は
図5にて説明するように比較的、容易である。本実施形態ではイベントに関するFS値の集計について説明する。
【0042】
なお、
図4のユーザインタフェース画面はあくまで一例であり、画面例には存在しない他のコントロールやイベントの要素が存在する場合もある。
【0043】
<設計書の例>
図5は、設計書9のうち表示に関する表記の一例を示す。
図5の設計書9には、画面ID、画面名、項目名、階層レベル、繰り返し数、型、桁数、項目タイプ、入出力種別、表示形式などが含まれている。これらは、各項目の表示形式などを規定するための記載となっている。また、表記は統一されている場合が多く、例えば、項目名、型、桁数、項目タイプ、表示形式などをキーワードにすることで、見積装置100は表示に関する表記、すなわちイベントでなく静的な機能であると判断しFS値を正しく集計できる。
【0044】
図6は、設計書9のうちソフトウェアの動作に関する表記の一例を示す。
図6の設計書9には、見出し番号(1〜5)に対し、それぞれソフトウェアが何を行うかが比較的、高い自由度で記述されている。換言すると、ソフトウェアの動作の表記について決まったフォーマットがない。
【0045】
しかし、
図6の表記601は、「作業開始日>稼働日(実績)」の場合エラーであり、表記602は、「開発工程(From)>開発工程(To)の場合エラーである。これらの表記601,602は、「エディット名」と呼ばれる入力項目が比較されることが「<」により意味されており、ソフトウェアの動作を表す記述である。
【0046】
また、表記603は、
「チェックを行う」
である。この表記603は、なんらかのチェックをソフトウェアが行うため、ソフトウェアの動作を表す記述である。
【0047】
このように、自由に記載可能な動作に関する表記でも、ソフトウェアの動作に関する部分は特徴的な表記を有する。本実施形態ではこのような表記に着目してソフトウェアの動作に関する表記を検出し、FS値の自動集計を行う。
<見積装置100の機能>
図7は、見積装置100の機能を説明する機能ブロック図の一例である。見積装置100は、設計書取得部11、設計書解析部12、FS値算出部13、テーブル更新部16、修正受付部15、及び、表示処理部14を有する。これら各機能部は、
図3に示された各構成要素のいずれかが、補助記憶装置304からRAM303に展開されたプログラム304pに従ったCPU301からの命令により動作することで実現される機能又は手段である。
【0048】
また、見積装置100は、RAM303や補助記憶装置304などにより実現され、各種情報を記憶する記憶部19を有する。記憶部19には、計測方法蓄積DB191、解析結果DB192、及び、FS値DB193が構築されている。以下では、これらのデータベースについて説明する。
【0049】
【表1】
表1は、計測方法蓄積DB191に作成されているイベントデータテーブル51を模式的に示す。イベントデータテーブル51は、設計書9からイベントを検出するためのテーブルであると共に、検出されたキーワード(判断根拠文字列)と候補イベント名に紐付く間違い回数と正解回数の合計(累積値)など信頼性情報を有する。イベントデータテーブル51は、1つのレコードに、通番、キーワード、候補イベント名、間違い回数、正解回数、及び、信頼性の各フィールドを有している。
【0050】
通番は、各レコードに付された重複しない番号である。キーワードの識別情報又はキーワードを特定する特定情報と称してもよい。なお、識別情報は、複数の対象から、ある特定の対象を一意的に区別するために用いられる名称、符号、文字列、数値又はこれらの2つ以上の組み合わせをいう。
【0051】
候補イベント名は、キーワードが該当する可能性が高いイベント名である。すなわち、あるキーワードが検出された場合に設計書9の作成者が意図した可能性が高いイベント名がキーワードに対応付けて登録されている。
【0052】
間違い回数は、後述するように、見積装置100がキーワードに基づき候補イベント名を決定したが、この候補イベント名が誤っていると計測者により判断された回数である。正解回数は、候補イベント名が正しいと判断された回数である。
【0053】
信頼性は「正解率」と「実施数」から判断される。
【0054】
また、実施例2で説明するプロジェクト毎の判断に対応するため、プロジェクト属性情報も有してよい。この他、出現位置(出現順)など、判断に必要な属性項目も有することができる。
【0055】
キーワードについて簡単に説明する。
・ [エディットフィールド]<[エディットフィールド]
入力項目をエディットフィールドという。2つのエディットフィールドが「<」で結ばれているのは、任意の2つのエディットフィールドの値をソフトウェアが比較することを意味する。エディットフィールド内の値は任意である。例えば、入力された値が「開始日 < 終了日」であることを確認する処理を意味する。このため候補イベント名には、相関チェックというイベント名が登録されている。
・新規にDBを更新する
更新という言葉があるため、ソフトウェアがDBを更新することを意味する。このため候補イベント名には、更新というイベント名が登録されている。
・[チェックボックス]が選択されている場合、[エディットフィールド]に入力
あるチェックボックスが選択されている場合、ある「エディットフィールド」に値が存在することをソフトウェアが確認することが記載されている。すなわち、ソフトウェアはエディットフィールドの値の有無をチェックする。このため候補イベント名には、相関チェックというイベント名が登録されている。
・画面初期表示時にDBより
ソフトウェアが画面を初期表示することが記載されている。画面を初期表示することは種々の処理をソフトウェアが行うことを意味する。このため候補イベント名には、初期表示というイベント名が登録されている。
・DBより検索する
検索という言葉があるため、ソフトウェアがDBを検索することを意味する。このため候補イベント名には、検索というイベント名が登録されている。
・[ラジオボタン名]のロストフォーカス時に
ロストフォーカスとは、カーソルがオブジェクトから外れることをいう。ロストフォーカス時にはオブジェクトの入力内容がDBに存在しているかのチェックが行われることがあり、ソフトウェアが動作する。このため候補イベント名には、ラジオボタンの入力値存在チェックというイベント名が登録されている。
【0056】
【表2】
表2は、解析結果DB192に作成されている修正データテーブル52を模式的に示す。修正データテーブル52は、集計実施の記録データを蓄積するテーブル、及び、イベントデータテーブル51を見積装置100が更新するためのテーブルである。修正データテーブル52は、1つのレコードに、通番、キーワード、自動判断結果イベント名、誤判断修正イベント名、対応イベントデータ通番、及び、時刻の各フィールドを有している。
【0057】
修正データテーブル52の通番とキーワードはイベントデータテーブル51の通番とキーワードと同様である。自動判断結果イベント名は、見積装置100がイベントデータテーブル51のキーワードに基づいて検出したイベント名である。誤判断修正イベント名には、自動判断結果イベント名が正しくないと計測者等が判断した場合に登録した(入力した)正しいイベント名である。なお、自動判断結果イベント名が正しい場合はNull(値がないことを意味する)値が登録されるが、Null値は初期値であるため、見積装置100が登録しなくてもよい。対応イベントデータ通番にはイベントデータテーブル51の通番が登録され、これにより修正データテーブル52のキーワードとイベントデータテーブル51のキーワードが対応付けられている。時刻は、修正データテーブルにレコードが登録された時刻である。
【0058】
また、表2に示す他、プロジェクト名、利用者、及び、出現位置(出現順)などの情報を有していてもよい。
【0059】
修正データテーブルは、例えばログのように変換実施情報も記録する。これらの情報は後述する機械学習の組み込み時の学習データとしても利用される。このため、正解であった情報も記録される。
【0060】
【表3】
表3は、FS値DB193に作成されているFS値データテーブル53を模式的に示す。FS値データテーブル53には、イベントに対応付けたFS値が登録されている。FS値データテーブル53は、1つのレコードにイベント名とFS値が登録されている。イベント名は、設計書9に含まれうるイベントのリストになっている。FS値は予めイベントごとに定められており、機能が多い(すなわち規模が大きくなる)イベントほど大きい値になる。
【0061】
(見積装置100の機能について)
設計書取得部11は、
図3に示したCPU301がプログラム304pを実行すること等により実現され、設計書9を外部装置から取得する。例えば、補助記憶装置304や可搬性の記憶媒体から設計書9を文書データとして格納するファイルを読み取る。あるいは、ネットワークを介して端末150から受信する。
【0062】
設計書解析部12は、
図3に示したCPU301がプログラム304pを実行すること等により実現され、設計書9からイベントデータテーブル51のキーワードを検索して、設計書に暫定結果を出力する。計測者は設計書の修正欄に修正結果を入力して、見積装置100に再読み込みさせる。また、設計書解析部12は、再読込された設計書9の自動判断結果イベント名と修正により入力されたイベント名を、検索に合致したキーワードに対応付けて修正データテーブル52に登録する。更に、イベントデータテーブル51の通番を登録する。設計書解析部12はこの修正データテーブル52を参照して、設計書のキーワードが相当するイベント名を決定する。
【0063】
FS値算出部13は、
図3に示したCPU301がプログラム304pを実行すること等により実現され、設計書解析部12が設計書9から検索した候補イベント名(自動判断結果イベント名)のFS値をFS値データテーブル53から読み出すことで、候補イベント名をFS値に変換する。設計書が再読込みされた場合は、設計書のキーワードが相当するイベント名をFS値に変換する。
【0064】
表示処理部14は、
図3に示したCPU301がプログラム304pを実行して設計書あるいは、ディスプレイI/F306を制御すること等により実現され、設計書あるいはディスプレイ310にFS値の算出結果等を表示する。
【0065】
修正受付部15は、
図3に示したCPU301がプログラム304pを実行して入力部305を制御すること等により実現され、計測者による設計書の暫定結果の修正その他の操作を受け付ける。
【0066】
テーブル更新部16は、
図3に示したCPU301がプログラム304pを実行して入力部305を制御すること等により実現される。テーブル更新部16は、修正データテーブル52の誤判断修正イベント名にイベントが登録されたレコードのキーワードと誤判断修正イベント名をイベントデータテーブル51に追加する。詳細は後述される。
【0067】
<動作手順>
図8は、見積装置100の動作手順を示すフローチャート図の一例である。
図8の処理は、計測者が例えば設計書9の見積を作成するためにFS値を算出する操作を行うとスタートする。なお、適宜、
図9,
図10のデータ例を参照しながら説明する。
【0068】
まず、見積装置100の設計書取得部11は、設計書9を読み込む(S10)。
【0069】
次に、設計書解析部12はイベントデータテーブル51のキーワードに合致する表記が設計書9に含まれるかどうかを判断する(S20)。
図9(a)は、イベントデータテーブル51の一例と、設計書9から検索された文字列であるイベント判断文字列を示す。イベントデータテーブル51の「ロストフォーカス時に」、「新規にDBを更新」、「DBより検索する」のキーワードが設計書9から検索された。
【0070】
図8に戻って説明する。次に、設計書解析部12は、イベントデータテーブル51のキーワードに対応付けられた候補イベント名が自動集計の対象か否かを判断する(S30)。自動集計の対象かどうかは、候補イベント名の信頼性に基づいて判断される。信頼に足りないイベント名でFS値を集計すると、見積結果の信頼性も低下してしまうためである。ステップS20で決定されたイベント名の信頼性を間違い回数と間違い率で判断する場合を説明する。設計書解析部12は、例えば、間違い回数が3回以上、かつ、間違い率が50%以上の場合に(信頼性が閾値未満の場合に)自動集計の対象外と判断する。なお、間違い回数のみ又は間違い率のみで判断してもよい。こうすることで、イベント名の判断精度が向上し見積結果の信頼性を向上できる。この基準の場合、
図9(a)に示すように、「新規にDBを更新」のキーワードの間違い回数が3で正解回数が0なので、間違い率は100%である。このため、
図9(b)に示すように、「新規にDBを更新」のキーワードに基づく候補イベント名が自動集計の対象から除外される。なお、間違い率とは、間違い回数/(間違い回数+正解回数)で算出される。
【0071】
図8に戻って説明する。次に、FS値算出部13は、自動集計の対象の候補イベント名のFS値をFS値DB193から読み取ってFS値に変換する(S40)。
【0072】
設計書解析部12は、設計書の当該欄に暫定結果を出力する(S50)。「暫定的に」とは修正の余地があるためである。設計書の当該項目付近に暫定結果を出力することにより、間違い箇所の確認が、暫定結果のみを設計書の表記とは別にディスプレイに出力するよりも容易になる。このため、自動集計結果の間違い箇所の確認ができる。このため、容易に自動集計結果の間違い箇所の確認ができる。
【0073】
これにより、計測者は設計書の強調表示された関係項目を見ながら、容易に修正できる(S60)。修正受付部15は、計測者による修正を受け付ける。この強調表示では信頼性に応じて色分けされたり、文字の太さや書体が変更されたり、信頼性の段階が数値やマークで表示されたりする。これにより、自動判断結果の確認が容易になる。
【0074】
次に、見積装置100の設計書取得部11は、設計書9を再度、読み込む(S70)。
【0075】
設計書解析部12は、設計書の当該欄と計測者による修正結果を使って、修正データテーブル52を作成する(S80)。修正データテーブル52のキーワードは、イベントデータテーブル51で検索に合致したキーワードであり、自動判断結果イベント名は、このキーワードに対応付けられている候補イベント名である。誤判断修正イベント名は、計測者が修正したイベント名である。対応イベントデータ通番はイベントデータテーブル51の通番である。
図10(a)は、誤判断修正イベント名が更新された修正データテーブル52の一例を示す。誤判断修正イベント名に計測者が設計書に入力したイベント名が登録されている。修正されなかった誤判断修正イベント名はNull値のままである。
【0076】
次に、テーブル更新部16は、イベントデータテーブル51を更新する(S90)。すなわち、以下の処理を行う。
(i) 修正データテーブル52で修正がなかった対応イベントデータ通番のレコードの正解回数を1つ大きくする。
(ii) 修正データテーブル52のうち修正があった対応イベントデータ通番のレコードの間違い回数を1つ大きくする。
(iii) 修正データテーブル52のうち修正があったレコードのキーワードと誤判断修正イベント名をイベントデータテーブル51に登録する。なお、間違い回数と正解回数はゼロでよい。すでに、イベントデータテーブル51にキーワードと誤判断修正イベント名の組み合わせが登録されている場合は、新たに登録せずに間違い回数を1つ大きくする。
【0077】
図10(b)は、テーブル更新部16が更新したイベントデータテーブル51の一例を示す。
図9(a)と比較すると、(i)により「ロストフォーカス時に」と「DBより検索する」というキーワードの正解回数が1つ大きくなっている。また、(ii)により「新規にDBを更新」というキーワードの間違い回数が1つ大きくなっている。また、(iii)により「新規にDBを更新」というキーワードと「登録」という候補イベント名を有するレコードが追加されている。
【0078】
こうすることで、キーワードと候補イベント名の対応付けが誤っている場合、新たにキーワードと正しい候補イベント名の組み合わせが登録される。なお、次述するFS値の再集計では、イベントデータテーブル51にキーワードが同じレコードが存在するが、FS値算出部13は最も信頼性が高いレコードを使ってイベント名をFS値に変換する。したがって、再集計の際は、計測者が修正した候補イベント名で集計される。
【0079】
以上で、イベントデータテーブル51が修正されたので、見積装置100はFS値を再集計する(S100)。再集計時には「信頼性」によらず、修正データテーブル52に基づいて誤判断修正イベント名の通りに集計する。これにより、再集計ではその設計書について正しく集計ができる。
【0080】
また、表示処理部14は最終結果を出力する(S110)。出力結果は
図4(b)に示したように各要素の数とFS値及びFS値の合計として得られる。
【0081】
このように、本実施形態の見積装置100は、イベントデータテーブル51に登録されたキーワードで設計書9を検索し、まず、FS値を算出する。仮に、キーワードで正しくイベントを検出できない場合でも、設計書への出力結果に基づき、計測者が容易に正誤判断を行うことができ、修正結果をイベントデータテーブル51に登録することができる。修正が繰り返されると徐々に修正が少なくなり計測者の作業量を低減できる。修正後の2回目のFS値の算出では、正しいFS値を算出できる。また、どの計測者がソフトウェアの規模を見積を作っても同じ集計結果が得られる。
【実施例2】
【0082】
実施例1によれば、イベントデータテーブル51がFS値の算出に使用されるほど、修正が行われFS値の算出精度が向上すると期待される。
【0083】
しかし、イベントデータテーブル51に同じキーワードがある場合、間違い回数が少ない方を採用するだけでは、再集計において間違い回数が少ないキーワードに対応付けられた候補イベント名が正しいとは限らない場合がある。
図11を用いてこの事例を説明する。
【0084】
図11(a)は修正前のイベントデータテーブル51の一例を示す。
図11(a)では、「新規にDBを更新」というキーワードに対し「更新」という候補イベント名が登録されている。この状態のテーブルで設計書解析部12が「新規にDBを更新」で設計書を検索したが、計測者が候補イベント名を「登録」に修正したものとする。
【0085】
図11(b)は「新規にDBを更新」というキーワードと「登録」という候補イベント名の組み合わせが登録されたイベントデータテーブル51の一例を示す。候補イベント名が「更新」の間違い回数が4になっている。このように同じキーワードが存在する場合、設計書解析部12が同じ設計書を再集計する際、間違い回数が少ない方のキーワードを採用するので、正しいイベント名である「登録」が選択される。
【0086】
しかし、見積装置100が別の設計書に基づいてソフトウェアの規模を見積もる場合、「新規にDBを更新」というキーワードに対し「登録」という判断(イベント名)が正しいとは限らない。別の設計書で「更新」が正しい場合を想定して説明する。最初の集計では、間違い回数が少ない方のキーワードが採用されるので、「新規にDBを更新」というキーワードに対し「登録」という候補イベント名が選択される。これに対し、計測者は設計書に出力された暫定結果を参照しイベント名を修正する。
【0087】
テーブル更新部16がイベントデータテーブル51にレコードを登録する際、すでに「新規にDBを更新」と「更新」の組み合わせが登録されているので、正解回数が1つ大きくなる。また、「登録」の間違い回数が1になる。
図11(c)はレコードが更新されたイベントデータテーブル51を示す。
【0088】
図11(c)の状態で見積装置100が次に別の設計書で集計した場合、間違い回数は「登録」の方が少ない。このため、設計書解析部12は次の集計でも「登録」を選択してしまい、別の設計書の「新規にDBを更新」で正解とされる「更新」を選択できない。
【0089】
このような不都合に対しては、本実施例で説明するプロジェクトIDを利用することが有効である。
【0090】
まず、イベントデータテーブル51は異なるソフトウェア開発のプロジェクトに共通に使用されると考えられる。プロジェクトが異なる場合、設計書も異なる場合が多いが、Aというソフトウェア(システム)の開発のプロジェクトにも、Bというソフトウェア(システム)の開発のプロジェクトにも同じイベントデータテーブル51が使用される。イベントデータテーブル51が使用されるほどキーワードと候補イベント名の組み合わせが充実するためである。
【0091】
プロジェクトが異なると設計書9を記述する者が同じとは限らず、異なるイベントに対し同じ表記が使用されるおそれがある(同じイベントに対する異なるキーワードに関してはキーワードと候補イベント名の組み合わせを増やせばよい。)。このため、あるプロジェクトで修正されたイベントデータテーブル51が別のプロジェクトの規模の見積に使用される場合、多くの修正が必要になるなどのおそれがある。
【0092】
そこで、イベントデータテーブル51の中で、設計書9に適用されるキーワードを選択するためにプロジェクトIDを使用する。プロジェクトIDとは、プロジェクトを特定するための情報又はプロジェクトを識別するための情報である。したがって、イベントデータテーブル51のキーワードにプロジェクトIDが対応付けられる。
【0093】
計測者が修正するフェーズで、計測者は修正する際に現在のプロジェクトIDを見積装置100に登録する。あるいは、計測開始時に設計書9を読み込ませる時点で登録してもよい。他の方法として、設計書9にプロジェクト名が含まれているので見積装置100が自動で読み取ることもできる。
【0094】
計測者は設計書の暫定出力に基づきイベント名を修正するので、これに基づき設計書解析部12は修正データテーブルを作成する。そして、テーブル更新部16は誤判断修正イベント名にイベント名が登録されたレコードをイベントデータテーブル51に反映させる。
図12(a)は、プロジェクトIDが対応付けられたイベントデータテーブル51の一例を示す。通番1〜3は初期登録された(まだ、キーワードが設計書と適合した判断されたことがない)レコードであり、プロジェクトIDは登録されていない。通番4はプロジェクトIDがP001のプロジェクトで正解と判断されたキーワードであるとする。
【0095】
このイベントデータテーブル51にテーブル更新部16が暫定結果の修正内容を反映させる。「新規にDBを更新」と「更新」の組み合わせはすでにイベントデータテーブル51の通番2に登録されている。このため、テーブル更新部16は通番2の正解回数を1つ大きくする。また、通番4の「新規にDBを更新」と「登録」の組み合わせはP002のプロジェクトでは正しくないので間違い回数を1つ大きくする。更に、「新規にDBを更新」と「更新」の組み合わせの「適用プロジェクトID」にP002を登録する。これにより、
図12(b)のイベントデータテーブル51が得られる。
【0096】
このように、テーブル更新部16は、キーワードと候補イベント名の組み合わせが正しい場合、適用プロジェクトIDの欄に、現在のプロジェクトIDを登録する。適用プロジェクトIDに登録されるプロジェクトIDは徐々に増えていく。プロジェクトIDがP001のプロジェクトでは、「新規にDBを更新」に対し「登録」というイベント名が判断され、プロジェクトIDがP002のプロジェクトでは、「新規にDBを更新」に対し「更新」というイベント名が判断される。
【0097】
各キーワードに、正解であることが判明しているプロジェクトIDが対応付けられるので、設計書解析部12は適用プロジェクトIDを参照して、適用するキーワードを選択できる。再集計の際、現在のプロジェクトIDはP002なので、「新規にDBを更新」と「更新」の組み合わせが選択され、正しいイベント名を決定できる。
【0098】
図13は、本実施例の見積装置100の動作手順を示すフローチャート図の一例である。なお、
図13では主に
図8との相違を説明する。ステップS10の処理は
図8と同様でよい。
【0099】
次に、ステップS15で設計書解析部12は現在の設計書のプロジェクトIDを取得する(S15)。計測者が入力してもよいし、設計書に記述されていてもよい。
【0100】
次に、設計書解析部12は、イベントデータテーブル51の適用プロジェクトIDが現在のプロジェクトIDのキーワードを特定し、このキーワードが設計書にあるか否かを判断する(S20)。なお、適用プロジェクトIDが現在のプロジェクトIDのキーワードがない場合は、実施例1と同様にキーワードのみに着目する。
【0101】
ステップS30〜S70は
図8と同様である。次に、ステップS80で、設計書解析部12、設計書の当該欄と計測者による修正結果を使って、修正データテーブル52を作成する(S80)。この時、プロジェクトIDを登録する。
【0102】
次に、テーブル更新部16は、イベントデータテーブル51を更新する(S90)。
図8の処理に加え、適用プロジェクトIDをイベントデータテーブル51に登録する。以降の処理は
図8と同様である。イベントデータテーブル51には、現在のプロジェクトIDで正解であったプロジェクトIDが登録されているので、設計書のキーワードに対し正しいイベント名を決定できる。
【0103】
なお、計測者は現在のプロジェクトIDをそのまま入力するのでなく、例えば、適用したいプロジェクトIDを予め入力しておいてもよい。計測者は、現在のプロジェクトがどのようなプロジェクトか知っているので、使用されている表記が近いプロジェクトも推定できる。したがって、1回目の集計から、よい適切なキーワードでFS値を算出できる。
【0104】
あるいは、計測者が入力した現在のプロジェクトIDと適用プロジェクトIDを比較して、設計書解析部12が適用するキーワードを決定してもよい。類似のプロジェクトには類似のプロジェクトIDが付与される。例えば、特許の期間管理のプロジェクトではPatent_001、Patent_002などのようなプロジェクトIDが付与される。設計書解析部12は、現在のプロジェクトIDと類似しているプロジェクトIDのキーワードを使用して設計書9を解析できる。なお、プロジェクトIDの類似とは、プロジェクトIDの一部が一致することなどをいう。
【0105】
<<同じキーワードに異なる候補イベント名と同じプロジェクトIDが対応付く場合>>
設計書のキーワードは同じイベントを意味するように使用されることが理想であるが、設計書の作成者が1つの設計書内で同じキーワードを異なるイベントの意味で使用する可能性は否定できない。また、1つの設計書を複数の作成者が記述する場合もある。このため、以下のように、同じキーワードに異なる候補イベント名と同じプロジェクトIDが対応付けられる場合がある。
【0106】
図14(a)は、同じキーワードに異なる候補イベント名と同じプロジェクトIDが対応付けられたイベントデータテーブルの一例である。
図14(a)では、「新規にDBを更新」というキーワードに「登録」「更新」という異なる候補イベント名が対応付けられているが、どちらもP002のプロジェクトIDにおいて正しい。このような登録状況は、P002の設計書でどちらの組み合わせも正しい場合に生じうる(計測者が登録する)。イベントデータテーブル51の同じキーワードに異なる候補イベント名が登録されることで、設計書の同じキーワードが異なるイベントを意味していても、正しい候補イベント名を決定できる。
【0107】
なお、
図14(a)では適用プロジェクトIDに1つのプロジェクトIDしか設定されない態様で記載されているが、
図14(b)のように記載されてもよい。
図14(b)では、P001、P002のプロジェクトIDに「新規にDBを更新」と「登録」の組み合わせが対応付けられている。P001とP002の両方で、「新規にDBを更新」というキーワードに対し「登録」という候補イベント名が検出され、P002では「新規にDBを更新」というキーワードに対し「更新」という候補イベント名が検出される。したがって、実質的に
図14(a)と同じである。
【0108】
一方、
図14(a)(又は
図14(b)でもよい)のようなイベントデータテーブル51では、設計書解析部12がP002の設計書の「新規にDBを更新」というキーワードに対し、通番4と5のどちらを適用すべきか判断しにくい。そこで、設計書の中のキーワードと1対1に対応してイベントデータテーブル51にキーワードが登録されることが好ましい。設計書解析部12はイベントデータテーブル51の通番の若い順にキーワードを検索し、一度使用したキーワードを使用しないようにすれば、設計書のキーワードの出現順にイベントデータテーブル51のキーワードを対応させ、正しい候補イベント名を決定できる。
【0109】
あるいは、
図15に示すように、設計書のキーワードの行番号をキーワードに対応付けてもよい。
図15では、通番2の「新規にDBを更新」というキーワードはP002の設計書の12行目と対応して「更新」というイベントを意味し、通番5の「新規にDBを更新」というキーワードはP002の設計書の156行目と対応して「登録」というイベントを意味することが明らかになる。
【0110】
なお、出現順や行番号を用いることなく、設計書解析部12は信頼性に基づいて使用するキーワードを選択してもよい。このような判断は、同じキーワードに対する2つの候補イベント名のどちらかが正しい場合に有効である。信頼性に基づく場合、同じキーワードで同じ正解回数かつ間違い回数の候補イベント名がある場合、FS値と共にキーワードと要確認の旨のメッセージ等を暫定結果に出力あるいは表示することが好ましい。1回目の集計の際には、表示処理部14は同じ正解回数かつ間違い回数の候補イベント名と該キーワードを強調して表示する。
【0111】
仮にP003の設計書のFS値が集計され、「新規にDBを更新」というキーワードがある場合、通番2,4,5の3つのレコードが該当する。この場合は、設計書解析部12は信頼性に基づいて「更新」又は「登録」を選択する。
【0112】
<<キーワードを削除する場合>>
プロジェクトの設計書で同じキーワードは同じイベントしか意味しないという前提では、テーブル更新部16はイベントデータテーブル51からレコードを削除することもできる。
【0113】
図16(a)のイベントデータテーブル51は
図14(a)と同じものである。この状態で、計測者がP002の「新規にDBを更新」の候補イベント名を「登録」に修正した場合、「新規にDBを更新」に対応付けられた「更新」は誤りになる。そこで、テーブル更新部16は、
図16(b)に示すように通番2のレコードを削除する。こうすることで、イベントデータテーブル51におけるキーワードと候補イベント名の組み合わせの一意性を維持できる。
【0114】
<変形例>
以下では、本実施形態の見積装置100に適用可能ないくつかの変形例を説明する。
【0115】
<<サーバ・クライアント型について>>
サーバ・クライアント型でも処理に大きな相違はないが、計測者は端末150を操作するため端末150と見積装置100との間で通信が発生する。
【0116】
図17は、見積システム200が有する端末150と見積装置100の機能ブロック図の一例である。端末150は、通信部18、修正受付部15、及び、表示処理部14を有する。このうち、修正受付部15の機能は
図7の見積装置100と同様である。
【0117】
通信部18は、
図3に示したCPU301がプログラム304pを実行しネットワークI/Fを制御すること等により実現され、見積装置100と各種の情報を送受信する。
【0118】
表示処理部14は、
図3に示したCPU301がプログラム304pを実行してディスプレイI/F306を制御すること等により実現され、ディスプレイ310に各種の画面を表示する。
【0119】
見積装置100の機能は
図7と同様であるが、新たにサーバ機能部17を有している。サーバ機能部17は、
図3に示したCPU301がプログラム304pを実行すること等により実現され、Webサーバとして機能する。また、設計書解析部12、FS値算出部13、及び、テーブル更新部16を制御してWebアプリを提供する。
【0120】
図18は、サーバ・クライアント型の見積システム200の動作手順を示すシーケンス図の一例である。
【0121】
S1:計測者は設計書9を見積装置100に送信する操作を行う。端末150は操作を受け付け、通信部18が設計書9を見積装置100に送信する。見積装置100はWebサーバとして動作するので、例えばHTTPなどで通信する。
【0122】
S2:見積装置100の設計書取得部11は設計書9を受信する。また、見積装置100は、
図8のステップS20〜S50を実行し、暫定結果を生成する。暫定結果は設計書に記載される。
【0123】
S3:見積装置100のサーバ機能部17は暫定結果を端末150に送信する。
【0124】
S4:端末150の通信部18は暫定結果を受信して、修正受付部15が計測者による修正を受け付ける。
【0125】
S5:修正が終了すると、端末150の通信部18は修正結果を含む設計書を見積装置100に送信する。
【0126】
S6:見積装置100は設計書を受信し、設計書解析部12が修正データテーブル52に登録する。
【0127】
S7:テーブル更新部16はイベントデータテーブル51に修正データテーブル52の内容を反映する。
【0128】
S8:FS値算出部13がFS値を再集計する。
【0129】
S9:サーバ機能部17は、最終結果を端末150に送信する。
【0130】
S10:見積装置100の通信部18は最終結果を受信し、表示処理部14が最終結果をファイルに出力又はディスプレイ310に表示する。
【0131】
このように、本実施形態の見積装置100はサーバ・クライアント型でも好適に適用できる。
【0132】
<<機械学習>>
本実施形態では、自動判断結果の蓄積情報を元に、より信頼性の高い判断パターンを機械学習する。機械学習手法には例えば、分類アルゴリズム法、回帰分析法などがある。
【0133】
<まとめ>
以上説明したように、本実施形態の見積装置100は、ソフトウェアの動的な機能の量を自動集計することができる。従来は、自動集計が困難だった設計書9のイベントに関する表記についても自動で集計できる。また、集計結果に対し計測者が誤集計のキーワードに正しいイベント名を登録するので、集計が徐々に高精度になる。
【0134】
<その他の適用例>
以上、本発明を実施するための最良の形態について実施例を用いて説明したが、本発明はこうした実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。
【0135】
例えば、時間による重み付けをしてもよい。例えば、一年以内のデータを重んじるパターンや、連続していると大きく重み付けるパターンがあり得る。
【0136】
また、設計作成者(や計測者)ごとに重み付けしてもよい。例えば、熟練者の入力値を重んじることができる。
【0137】
また、プロジェクトで規約に合わせた重み付けをしてもよい。規約に沿った表現でないと集計対象としないことができる。
【0138】
また、暫定結果は設計書に出力する以外にも、設計書に対応するレイアウトでディスプレイ310に表示することもできる。
【0139】
本実施形態では、FS値の集計を例に説明したが、FS法以外であっても、書類に基づく規模の見積もりにおいて、表現に幅のある要素(キーワードやイベント名)にポイントが対応付けられている場合に適用できる。
【0140】
また、
図7,17などの構成例は、見積装置100の処理の理解を容易にするために、主な機能に応じて分割したものである。処理単位の分割の仕方や名称によって本願発明が制限されることはない。また、見積装置100の処理は、処理内容に応じて更に多くの処理単位に分割することもできる。また、1つの処理単位が更に多くの処理を含むように分割することもできる。
【0141】
また、記憶部19に記憶された各種のデータベースは、見積装置100が有している必要はなく、見積装置100がアクセスできるネットワーク上にあればよい。
【0142】
なお、設計書取得部11は書類取得手段の一例であり、設計書解析部12は書類解析手段の一例であり、FS値算出部13は集計手段の一例である。FS値DB193は第二の記憶手段の一例であり、計測方法蓄積DB191は第一の記憶手段の一例であり、解析結果DB192は第三の記憶手段の一例であり、表示処理部14は表示処理手段の一例であり、修正受付部15は受付手段の一例であり、テーブル更新部16は登録手段の一例である。