(57)【要約】  【課題】  知的生産活動に関して、その工数の算出方法やスケジューリング方法の確立を課題とする。  【解決手段】  工数の定量化プログラム1600は、スキルテーブル1020および実績テーブル1030を参照し、登録された各メンバのスキルと実績データの相関関係から予定プロジェクトの予定工数を求める関係式を作成する。スケジューリングプログラム1800は、プロジェクトマネージャの要求に従い、算出された予定工数などに基づいて各メンバの予定プロジェクトへの配置とスケジューリングを行う。【選択図】  図１
2006244342.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータを用いて複数のプロセスから成るプロジェクトのスケジューリングをするプロジェクト計画算出方法であって、前記コンピュータにより、
各メンバについて各スキル項目が数値化されたスキル情報の入力を受け付けて記憶装置に格納し、
各メンバについてプロジェクトの各プロセスの実績データの入力を受け付けて記憶装置に格納し、
各メンバの前記スキル情報を説明変数とし、各プロセスの前記実績データを目的変数とする統計分析により、前記スキル情報の各々を変数とし、各プロセスの予定工数を求める１次関数式を作成し、
前記１次関数式の変数に各メンバのスキル情報を与えてプロセスごとに各メンバの予定工数を算出することを特徴とするプロジェクト計画算出方法。
【請求項２】
予定プロジェクトを構成する各プロセスについて前記予定工数の最小のメンバを割り当てることにより、メンバの配置と当該予定プロジェクトのスケジューリングを行うことを特徴とする請求項１記載のプロジェクト計画算出方法。
【請求項３】
さらに各メンバについて個人作業スケジュールの開始日、終了日および作業の従事率のデータ入力を受け付けて記憶装置に格納し、
予定プロジェクトを構成する各プロセスについて各メンバの予定工数を従事率が同一の少なくとも１つの期間で分割し、前記従事率で各期間をウェイト付けした予定工数が最小のメンバを割り当てることにより、メンバの配置と当該予定プロジェクトのスケジューリングを行うことを特徴とする請求項１記載のプロジェクト計画算出方法。
【請求項４】
複数のプロセスから成るプロジェクトのスケジューリングをするプロジェクト計画算出システムであって、
各メンバについて各スキル項目が数値化されたスキル情報を格納するスキルテーブルの記憶手段と、
各メンバについてプロジェクトの各プロセスの実績データを格納する実績テーブルの記憶手段と、
各メンバの前記スキル情報を説明変数とし、各プロセスの前記実績データを目的変数とする統計分析により、前記スキル情報の各々を変数とし、各プロセスの予定工数を求める１次関数式を作成し、前記１次関数式の変数に各メンバのスキル情報を与えてプロセスごとに各メンバの予定工数を算出する工数の定量化プログラムを実行する処理手段とを有することを特徴とするプロジェクト計画算出システム。
【請求項５】
さらに予定プロジェクトを構成する各プロセスについて前記予定工数の最小のメンバを割り当てることにより、メンバの配置と当該予定プロジェクトのスケジューリングを行うスケジューリングプログラムの実行手段を備えることを特徴とする請求項４記載のプロジェクト計画算出システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロジェクトに投入するメンバの選定および供給やプロジェクトのスケジューリングに係わり、特に、スキルや経験を要するプロジェクトなどに関わるメンバの配置方法とスケジューリング方法に関する。
【背景技術】
【０００２】
従来、プロジェクトのメンバ構成やスケジューリングに関しては、プログラムのステップ数やインプットファイルやアウトプットファイル数などの客観的に把握できるものを指標としてプロジェクトの規模を算出し、メンバ構成やスケジューリングが行われていた。しかし知的創造活動に関しては、ステップ数やインプットファイル数やアウトプットファイル数などの客観的に把握できる指標がなく、その結果数値的な把握ではなく、プロジェクトマネージャーや有識者の主観的な考えによるメンバ構成やスケジューリングが行われていた。
【０００３】
なおこの種の技術として関連するものには、例えば特開２００３−４４６４２号公報（特許文献１）などがある。
【０００４】
【特許文献１】特開２００３−４４６４２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
システム開発において、新たなニーズとして例えばデータモデル作成等の分析作業がある。分析作業では、スキルや経験などがその開発工数に影響を与えると考えられる。また、分析作業においては、ステップ数やインプットファイル数やアウトプットファイル数のように客観的な数値を把握できないため、工数見積は、見積もる人の主観に依存していた。そこで、分析作業についての標準化を図り、定量的かつ客観的な工数の算出をする必要があった。また、その工数に従い、精緻なスケジューリングを行う必要があった。
【課題を解決するための手段】
【０００６】
本発明は、登録されたメンバのスキルと実績からスキルを定量化し予定工数を算出し、その結果に基づいて、プロジェクトの制約や要求に従ったメンバ構成やスケジューリングを行う技術を特徴とする。
【発明の効果】
【０００７】
本発明によれば、上記課題の解決および適正なメンバ構成やスケジューリング時間の短縮を実現できる。さらに、作業者の予定外の離脱（病気・怪我など）が起こった場合、再スケジューリングを行う必要があるが、離脱に際する影響に対して、離脱したメンバが担当していたプロセスに要する時間や離脱したメンバの予定工数を計算しそれを埋めることを目的とした新たなプロジェクトに対する要求をプロジェクト計画算出システムに与えることによって、メンバの離脱後の新たなスケジュールを作成できる。
【発明を実施するための最良の形態】
【０００８】
以下、本発明の実施形態について、図面を用いて説明する。
【０００９】
本実施形態は、データモデリングプロジェクトにおけるプロジェクトのメンバ構成やスケジュールを、メンバの生産性とメンバの余剰従事率（プロジェクトに携わっていない従事率）から算出するものであるが、作業をプロセスに分けることができる他のプロジェクトにも適用可能である。まず、本実施形態のシステム構成図を図１に示す。プロジェクト計画算出サーバ1000を構成するコンピュータは、メモリ、ハードディスクを含む記憶装置、ＣＰＵなどの処理装置を有し、記憶装置に格納されたプログラムに従って処理装置がデータ処理を実行するものである。また、入力されたデータは、プログラムが加工処理を行っている間、つまりプログラムが加工されたデータの登録処理を行うまではメモリ上に記憶され、登録を行うときハードディスク上に記憶される。
【００１０】
プロジェクト計画算出サーバ1000のハードディスク上には、個人情報テーブル1010、スキルテーブル1020、実績テーブル1030、予定工数テーブル1040およびスケジュールテーブル1050が格納され、またメインプログラム1100、個人情報登録プログラム1200、ログインプログラム1300、個人情報変更プログラム1400、スキル／実績登録プログラム1500、工数の定量化プログラム1600、スケジュール登録プログラム1700およびスケジューリングプログラム1800が格納される。メインプログラム1100は、他の上記プログラム群全体を制御するプログラムである。
【００１１】
プロジェクト計画算出サーバ1000は、ネットワーク1005を介してクライアント端末1009と接続される。クライアント端末1009は、メンバによって使用されるパーソナルコンピュータのようなコンピュータであり、ＧＵＩ（グラフィック・ユーザインタフェース）のようなユーザインタフェースを有し、プロジェクト計画算出サーバ1000から受信した表示画面を表示装置上に表示し、また入力装置を介して入力されるデータをプロジェクト計画算出サーバ1000に送信する。
【００１２】
図２は、本プロジェクト計画算出システムの全体処理の流れを示す図である。プロジェクト計画算出サーバ1000のメインプログラム1100は、クライアント端末1009からのアクセス者に対してアクセスを許可されているメンバか否かを判断する（ステップ1101）。メインプログラム1100は、登録されていないアクセス者に対してアクセスを許可するため、つまりメンバとして登録するため、個人情報登録プログラム1200を呼び出し、個人情報登録処理を行う（ステップ1102）。アクセス者がメンバである場合、メインプログラム1100は、ログインを許可するため、ログインプログラム1300を呼び出し、ログイン処理を行う（ステップ1103）。ログイン許可を行った後、メインプログラム1100は、ログイン許可されたメンバに対して個人情報変更を行うか否かの判断を行う（ステップ1104）。個人情報変更を行うように選択された場合、メインプログラム1100は、個人情報変更プログラム1400を呼び出し、個人情報変更処理を行う（ステップ1105）。個人情報変更を行わないように選択された場合、メインプログラム1100は、メンバの役割（プロジェクトマネージャまたは作業者）の判断を行う（ステップ1106）。メンバの役割選択において作業者が選択された場合、メインプログラム1100は、メニューの判断を行う（ステップ1107）。メニュー選択においてスキル／実績登録が選択された場合、メインプログラム1100は、スキル／実績登録プログラム1500を呼び出し、スキル／実績登録処理を行う（ステップ1108）。メインプログラム1100は、スキル／実績登録処理後、工数の定量化プログラム1600を呼び出し、登録されたスキルデータ／実績データをもとにして、各作業者の工数の定量化処理を行う（ステップ1109）。一方、メニュー選択においてスケジュール登録が選択された場合、メインプログラム1100は、スケジュール登録プログラム1700を呼び出し、スケジュール登録処理を行う（ステップ1110）。また、メンバの役割選択においてプロジェクトマネージャが選択された場合、メインプログラム1100は、スケジューリングプログラム1800を呼び出し、プロジェクトのスケジューリング処理を行う（1111）。
【００１３】
図３は、個人情報テーブル1010のデータ構成を示す図である。個人情報テーブル1010は、個人番号1011、パスワード1012、氏名1013、所属事業部1014、所属部1015、登録日1016、最終更新日1017などの列から構成されていている。個人番号1011列は、メンバを一意に識別する番号であり、各メンバを特定する個人番号を各行に格納している。パスワード1012列は、各メンバが設定したパスワードを対応する行に格納している。氏名1013列は、各メンバの氏名を対応する行に格納している。所属事業部1014列は、各メンバの所属事業部を対応する行に格納しており、事業部制以外の場合はそれに準ずる内容か、NULL値を対応する行に格納する。所属部1015列は、各メンバの所属部を対応する行に格納しており、部制以外の場合はそれに準ずる内容か、NULL値を対応する行に格納する。登録日1016列は、各メンバが登録された年月日を対応する行に格納している。最終更新日1017列は、各メンバが更新された最終の年月日を対応する行に格納している。
【００１４】
図４は、スキルテーブル1020のデータ構成を示す図である。スキルテーブル1020は、個人番号1011、登録日1022、最終更新日1023、経験年数1024-A（スキル1）、経験プロジェクト数1024-B（スキル２）、業務知識1024-C（スキル３）、資格1024-D（スキル４）などの列から構成されている。1024-A/1024-B・・・などは、対象となるプロジェクトに必要なスキル項目を設定することができる。スキルテーブル1020の個人番号1011列は、個人情報テーブル1010の個人番号1011列からの外部キーであり、各メンバとスキルの連携を保つために格納している。登録日1022列は、スキルの登録が行われた年月日を格納している。最終更新日1023列は、スキルが更新された最終の年月日を格納している。1024-＊で示される各列は、対象となるプロジェクトに必要なスキル項目を設定することができ、例として経験年数1024-A、経験プロジェクト数1024-B、業務知識1024-C、資格1024-Dなどを数値で表現し、格納している。例えば業務知識1024-Cは業務知識の深さを示す数値、資格1024-Dは保持する資格の数などである。
【００１５】
図５は、実績テーブル1030のデータ構成を示す図である。実績テーブル1030は、個人番号1011、明細番号1032、登録日1033、データ項目収集1034-A（実績１）、キー項目設定1034-B（実績２）、第一正規化1034-C（実績３）、経験年数1024-A（スキル１）、経験プロジェクト数1024-B（スキル２）などの列から構成されている。個人番号1011列は、個人情報テーブル1010の個人番号1011列からの外部キーであり各メンバと実績の連携を保つために格納している。明細番号1032列は、各メンバの実績履歴に付された番号である。明細番号1032として各プロジェクトに付されたプロジェクト番号あるいは識別子を用いてもよい。登録日1033列は、実績の登録が行われた年月日を格納している。1034-A/1034-B/1034-Cなどは、対象となる同種プロジェクトの各プロセスのプロセス名を示している。ここでは例としてデータモデリングプロジェクトを構成する各プロセスの名称「データ項目収集」「キー項目設定」「第一正規化」などを示している。各プロセスに格納される数値は、そのプロセスについて各個人が要した作業日数を示している。1024-＊の各列は、実績登録が行われた時点のスキルテーブル1020の1024-＊と同じデータを格納している。
【００１６】
図６は、予定工数テーブル1040のデータ構成を示す図である。予定工数テーブル1040は、個人番号1011、データ項目収集1034-A（実績１の計測対象プロセスに対する予定工数）、キー項目設定1034-B（実績２の計測対象プロセスに対する予定工数）、第一正規化1034-C（実績３の計測対象プロセスに対する予定工数）などの列から構成されている。個人番号1011列は、個人情報テーブル1010の個人番号1011列からの外部キーであり、各メンバと実績の連携を保つために格納している。各プロセス、各個人に格納される数値は、予定工数であり、予定の作業日数を示している。
【００１７】
図７は、スケジュールテーブル1050のデータ構成を示す図である。スケジュールテーブル1050は、個人作業スケジュールとして、個人番号1011、明細番号1052、登録日1053、最終更新日1054、開始日1055、終了（予定）日1056、従事率1057などの列から構成されている。個人番号1011列は、個人情報テーブル1010の個人番号1011列からの外部キーであり各メンバとスケジュールの連携を保つために格納している。明細番号1052列は、各メンバのスケジュールに付された番号である。明細番号1052として各プロジェクトに付されたプロジェクト番号あるいは識別子を用いてもよい。登録日1053列は、スケジュールの登録が行われた年月日を格納している。最終更新日1054列は、スケジュールの最終更新が行われた年月日を格納している。開始日1055列は、明細番号1052列で特定されたプロジェクトにメンバが従事開始する日を格納している。終了（予定）日1056列は、明細番号1052列で特定されたプロジェクトにメンバが従事終了する（予定）日を格納している。従事率1057列は、明細番号1052列で特定されたプロジェクトに関するそのメンバの従事率を格納している。従事率とは、全作業時間のうち、そのプロジェクトに当てられる作業時間の割合である。例えば個人番号「123456」の場合、２００４年の２月１日から５月４日まで従事率合計は０．６となり、同５月５日から６月２０日まで従事率合計は０．８となる。
【００１８】
図８は、個人情報登録プログラム1200の処理の流れを示す図である。個人情報登録プログラム1200は、クライアント端末1009に個人情報登録画面を表示し、個人番号やパスワードなどの個人情報を受け付ける（ステップ1201）。個人情報登録プログラム1200は、ステップ1201で受け付けた個人情報を個人情報テーブル1010のレコードに登録する（ステップ1202）。
【００１９】
この個人情報登録処理によれば、プロジェクト計画自動算出システムのメンバの個人情報（個人番号／パスワードなど）を予め登録することにより、次回ログイン時のメンバ特定やなりすまし防止をすることができる。
【００２０】
代替案として、プロジェクト計画算出サーバ1000にアクセスするクライアント端末1009にログイン機能を持たせ、クライアント端末1009が個人番号とパスワードを管理することによって、プロジェクト計画算出サーバ1000がこれらの個人情報を管理する必要がなくなる。また、代替案を用いることによって、メンバは個人番号やパスワードなどを複数持つ必要がなくなる。つまり、端末のログイン用の個人番号やパスワードとプロジェクト計画算出システムの個人番号やパスワードの両方を持つ必要が無くなるのである。さらに、プロジェクト計画算出システムは、定期的に端末のパスワードを変えられても、その影響を受けない。そして、メンバがプロジェクト計画算出システムに通常アクセスしているクライアント端末1009以外の端末からアクセスする場合は、プロジェクト計画算出サーバ1000へのログインが必要となるので、その場合には個人情報登録プログラム1200は、上記個人情報登録処理を行う。
【００２１】
図９は、ログインプログラム1300の処理の流れを示す図である。ログインプログラム1300は、クライアント端末1009にログイン画面を表示し、個人番号やパスワードなどの個人情報を受け付ける（ステップ1301）。ログインプログラム1300は、ステップ1301で受け付けた個人番号を検索のキーとして、個人情報テーブル1010から対象行を検索し、対象行のパスワード1012列に格納されているパスワードデータを取得する（ステップ1302）。ログインプログラム1300は、ステップ1301で受け付けたパスワードとステップ1302で取得したパスワードの照合を行い（ステップ1303）、パスワードが一致の場合はログインを許可し、パスワードが不一致の場合は、ステップ1301に戻す。
【００２２】
このログイン処理によれば、プロジェクト計画算出システムの特定やなりすましを防止することによって、メンバの個人情報を保護したり不本意な変更を防止したりすることができる。
【００２３】
代替案としては、本人であることの証明を出来る生理的な特徴を用いた生体認証や身分証にICカード機能を持たせたカードのチップから読み取ることによって、上記のログイン処理を代替できる。また、代替案を用いることによって、メンバがプロジェクト計画算出システムにログインする際に、個人番号やパスワードを入力する手間が省ける。そして、メンバの誤入力によるプロジェクト計画算出システムへの負荷が軽減できる。さらに、プロジェクト計画算出システムは、生体認証や身分証の情報を読み取り、対応する個人情報が登録がされているか否かの判断のみでログイン許可を行うことができるので、パスワードの不一致の場合のように再入力に戻る処理が無くなる。
【００２４】
図１０は、個人情報変更プログラム1400の処理の流れを示す図である。個人情報変更プログラム1400は、個人情報テーブル1010からログイン処理で用いた個人番号を検索のキーとして対象行のデータを取得する（ステップ1401）。次に、個人情報変更プログラム1400は、個人情報変更画面にステップ1401で取得したデータをクライアント端末1009に表示し、変更項目を受け付ける（ステップ1402）。個人情報変更プログラム1400は、ステップ1402で受け付けた変更項目に最終更新日を付加して、個人情報テーブル1010の対象行のデータに更新処理を行う（ステップ1403）。
【００２５】
上記の個人情報変更処理によれば、メンバの個人情報（パスワード／所属部など）を変更することにより、なりすまし防止や所属部が変更になった際の連携をとることができる。
【００２６】
代替案としては、プロジェクト計画算出サーバ1000にアクセスするクライアント端末1009に個人情報変更の機能を持たせ、クライアント端末1009からの個人情報をプロジェクト計画算出サーバ1000が用いることで代替できる。また、代替案を用いることによって、クライアント端末1009とプロジェクト計画算出サーバ1000との個人情報についての不整合を無くすことができる。そして、プロジェクト計画算出システムは、クライアント端末1009からアクセスをされなくても、その個人情報変更が反映されるので、常に最新の個人情報を保持することができる。
【００２７】
図１１は、スキル／実績登録プログラム1500の処理の流れを示す図である。スキル／実績登録プログラム1500は、クライアント端末1009にスキル入力受付画面を表示し、スキルの情報を受け付ける（ステップ1501）。スキル／実績登録プログラム1500は、スキルテーブル1020からログイン処理で用いた個人番号を検索のキーとして対象行の検索を行う（ステップ1502）。
【００２８】
スキル／実績登録プログラム1500は、ステップ1502で検索した結果について、存在の有無の判断を行う（ステップ1503）。スキル／実績登録プログラム1500は、ステップ1503で存在すると判断された場合、ステップ1501で受け付けたスキル入力値があればその入力値をステップ1502で検索した行の各列に更新処理を行う（ステップ1504）。スキル／実績登録プログラム1500は、ステップ1503で存在しないと判断された場合、スキルテーブル1020に新たなレコードを作成し、ログイン処理で用いた個人番号とステップ1501で受け付けたスキル入力値を作成したレコードの各列に格納する（ステップ1505）。
【００２９】
スキル／実績登録プログラム1500は、クライアント端末1009に実績入力受付画面を表示し、実績入力または終了を受け付ける（ステップ1506）。スキル／実績登録プログラム1500は、実績入力の有無の判断を行い、実績入力が無かった場合は終了する（ステップ1507）。スキル／実績登録プログラム1500は、実績入力があった場合、実績テーブル1030からログイン処理で用いた個人番号を検索のキーとして対象行の検索を行う（ステップ1508）。
【００３０】
スキル／実績登録プログラム1500は、ステップ1508で検索した結果について、存在の有無の判断を行う（ステップ1509）。スキル／実績登録プログラム1500は、ステップ1509で存在すると判断された場合、対象行の明細番号1032の最大値に１を加算し新たなレコードを作成する（ステップ1510）。スキル／実績登録プログラム1500は、ステップ1509で存在しないと判断された場合、明細番号1032に１を設定し新たなレコードを作成する（ステップ1511）。スキル／実績登録プログラム1500は、ステップ1506で受け付けた実績データと現時点でのスキルデータをステップ1510または1511で作成したレコードに格納する（ステップ1512）。
【００３１】
上記スキル／実績登録処理によれば、現時点のスキルの入力を受け付けて登録を行ったり、現時点の実績を受け付けてスキルと実績を関連付けて登録を行ったりすることによって、メンバのスキルと実績の履歴管理を行うことができる。
【００３２】
代替案としては、プロジェクト計画算出サーバ1000にアクセスするクライアント端末1009や別のシステムにスキル／実績を取得させ、その結果をプロジェクト計画算出サーバ1000が登録することによって、上記のスキル／実績登録処理を代替できる。また、代替案を用いることによって、スキル／実績のデータはプロジェクト計画算出サーバ1000内で閉じていないので、例えば人事的な評価を行う場合、プロジェクトマネージャの評価報告データに加えてプロジェクト計画算出サーバ1000にアクセスするクライアント端末1009や別なシステムが取得したスキル／実績データを現場報告のインプットデータとして人事評価を行うことができる。そして、スキル／実績データは他のメンバについても同一の環境の下で入力が行われるので、客観的な現場の作業報告データとして利用することができる。さらに、スキル／実績データに関して、メンバによる恣意的な登録ではなく、プロジェクト計画算出サーバ1000にアクセスするクライアント端末1009や別のシステムがメンバのスキル／実績を取得しているので、プロジェクト計画自動算出システムは、より詳細かつ恣意性のないデータを得ることができる。
【００３３】
図１２は、工数の定量化プログラム1600の処理の流れを示す図である。工数の定量化プログラム1600は、実績テーブル1030の全てのレコードから実績データ（1034-＊）とスキルデータ（1035-＊）を取得する（ステップ1601）。工数の定量化プログラム1600は、実績データとスキルデータの関係について統計的手法を用いて関数化する（ステップ1602）。ここで、統計的手法の例について説明する。例えば、第１プロセスのデータ項目収集1034-A（実績データ１）を目的変数として、経験年数（スキルデータ１）、経験プロジェクト数（スキルデータ２）、業務知識（スキルデータ３）、資格（スキルデータ４）をそれぞれ説明変数とした重回帰分析を用いて、データ項目収集＝ａ×経験年数＋ｂ×経験プロジェクト数＋ｃ×業務知識＋ｄ×資格＋αのような関数を作成する。
【００３４】
あるメンバｉ(0≦i≦n)の実績テーブル1030に明細番号１，２，３の３つのレコードがあるとすると、第１のプロセスについては、
データ項目収集i1＝ａ×経験年数i1＋ｂ×経験プロジェクト数i1＋ｃ×業務知識i1＋ｄ×資格i1＋α
データ項目収集i2＝ａ×経験年数i2＋ｂ×経験プロジェクト数i2＋ｃ×業務知識i2＋ｄ×資格i2＋α
データ項目収集i3＝ａ×経験年数i3＋ｂ×経験プロジェクト数i3＋ｃ×業務知識i3＋ｄ×資格i3＋α
・・・
とあらわすことができる。第２のプロセスについては、別のパラメータ（ａ，ｂ，ｃ，ｄ，α）について、
キー項目設定i1＝ａ×経験年数i1＋ｂ×経験プロジェクト数i1＋ｃ×業務知識i1＋ｄ×資格i1＋α
キー項目設定i2＝ａ×経験年数i2＋ｂ×経験プロジェクト数i2＋ｃ×業務知識i2＋ｄ×資格i2＋α
キー項目設定i3＝ａ×経験年数i3＋ｂ×経験プロジェクト数i3＋ｃ×業務知識i3＋ｄ×資格i3＋α
・・・
とあらわすことができる。上記式はスキルと実績から統計的に妥当と認められる式である。
【００３５】
また、入社から経過した年数などのパラメータのように、４０歳くらいまで年々作業効率が上がるがその後は作業効率が徐々に落ちると考えられるパラメータに関しては、一度その傾向を統計的に分析し、上限値と下限値の間を数分割してそれぞれ数値化されたゾーンに変換したものを説明変数として使用することができる。そして、実績とスキルの関係を統計的に処理することによってプロセスとスキルの関係を把握することができるので、メンバとして登録されていない作業者をプロジェクトで採用する際の判断の基準としても使用することができる。例えば、プロジェクトがプロセス１からプロセス１０まで分かれていて、プロセス１とプロセス２にメンバとして登録されていない作業者を採用するとし、作業者のスキルを判断する基準としてスキル１、スキル２、スキル３およびスキル４がある場合、プロセス１の実績に対しては、スキル１、スキル２が非常に大きな影響を与え、スキル３、スキル４は影響をあまり与えないという結果が統計的に導かれたらスキル１、スキル２のレベルが高い作業者を採用したほうが予定工数は小さくなるという予想ができ、同様にプロセス２についても予想ができる。また、あるプロセスの日数が算出されていて、その日数で作業を終了させなければならない場合、プロセスの日数内で作業を終了させることができる作業者を選出しなければならない。そこで、実績とスキルの関係を把握することによって、どの程度のスキルレベルが必要とされているかを把握できるので、そのスキルレベルを有する作業者を選出することができる。工数の定量化プログラム1600は、スキルテーブル1020に格納されている全レコードを取得し、ステップ1602で作成された関数にスキルデータを与え、予定プロジェクトの各メンバ、各プロセスの予定工数を導く（ステップ1603）。
【００３６】
あるメンバｊ(0≦j≦n)のスキルデータをステップ1602で作成した関数に与えると、例えば第１のプロセスについては、
予定データ項目収集j1＝a×経験年数j1＋b×経験プロジェクト数j1＋c×業務知識j1＋d×資格j1＋α
のように、各スキルの数値を変数とする１次式であらわすことができる。
【００３７】
工数の定量化プログラム1600は、結果をログイン処理で用いた個人番号をもとに予定工数テーブル1040の対象レコードに格納する（ステップ1604）。
【００３８】
上記の工数の定量化処理によれば、統計的手法を用いて実績データを目的変数とし、スキルデータを説明変数とした関数化を行い、その関数にスキルデータを与えることによって、スキル登録したメンバの予定工数を算出することができる。そして、プロジェクト計画算出システムは、あるメンバの実績データが登録されるたびに新たに関数を作成し、最新の全ての実績から算出された関数に最新のスキルデータを与えることによって、最新の予定工数を算出することができる。たとえば、メンバＡが実績データを登録した場合、プロジェクト計画算出システムはそのデータを加えた全ての実績データを反映させた関数１を作成し、その関数１にメンバ全てのスキルを与えることによって、メンバＡ以外のメンバの予定工数にもメンバＡの実績を反映させることができる。
【００３９】
代替案としては、実績テーブル1030は、全てのメンバの全ての実績履歴を保持する構造なのでデータ量が大きく、また、プロジェクト計画算出システムは、実績とスキルの関係を表す関数にスキルデータを与えることによって予定工数を算出する方式なので、実績データそのものを常に必要としない。前記の点を踏まえると、実績テーブルのデータ自体をプロジェクト計画算出サーバ1000に保持する必要性はない。そこでプロジェクト計画算出システムの外部に実績履歴管理のシステムを設け、プロジェクト計画算出システムは、実績登録があった際は、外部の実績履歴管理システムに実績データとその時点でのスキルデータを渡し、外部の実績履歴管理システムは、渡されたデータと履歴管理しているデータを用いて、実績とスキルの関数化を行い、プロジェクト計画算出システムは、外部の実績履歴管理システムが作成した関数を用いて、スキルテーブル1020のデータを与えることによって予定工数を算出することができる。
【００４０】
また、この代替案を用いることによって、プロジェクト計画算出システムの実績履歴管理や実績とスキルデータの関数化の処理がなくなるので、プロジェクト計画算出システムの負荷は軽減される。
【００４１】
図１３は、スケジュール登録プログラム1700の処理の流れを示す図である。スケジュール登録プログラム1700は、クライアント端末1009にスケジュール入力画面を表示し、スケジュールの入力を受け付ける（ステップ1701）。スケジュール登録プログラム1700は、ログイン処理で用いた個人番号を検索のキーとしてスケジュールテーブル1050から、対象行の検索を行う（ステップ1702）。スケジュール登録プログラム1700は、ステップ1702で検索した結果について、存在の有無の判断を行う（ステップ1703）。スケジュール登録プログラム1700は、ステップ1703で存在すると判断された場合、対象行の明細番号1052の最大値に１を加算し新たなレコードを作成する（ステップ1704）。スケジュール登録プログラム1700は、ステップ1703で存在しないと判断された場合、明細番号1052に１を設定し新たなレコードを作成する（ステップ1705）。スケジュール登録プログラム1700は、ステップ1701で受け付けたスケジュールデータをステップ1704または1705で作成されたレコードに格納する（ステップ1706）。
【００４２】
上記のスケジュール登録処理によれば、プロジェクト計画算出システムのメンバのスケジュール（開始日／従事率など）を登録することにより、メンバの空いているスケジュールを参照することができる。
【００４３】
代替案としては、スケジュール管理機能を有したグループウェアなどのスケジュール管理機能からスケジュールデータを受取ることによって代替できる。また、代替案を用いることによって、メンバが登録したスケジュール以外のスケジュール（例えば、空いているスケジュールにプロジェクトマネージャや他の作業者からスケジュールを押さえられた場合など）もメンバのスケジュールに反映させることができる。その結果、常に最新の状態でスケジュールや従事率を算出することができる。
【００４４】
図１４は、スケジューリングプログラム1800の処理の流れを示す図である。スケジューリングプログラム1800は、プロジェクトマネージャ（ＰＭ）の使用するクライアント端末1009にプロジェクトに対する要求入力画面を表示し、予定プロジェクトに対する要求の入力を受け付ける（ステップ1801）。この際受け付ける要求は、納期や予算やスキルの条件や実績の条件や予定工数の誤差許容範囲やスケジュールに余裕がある人員を優先的に配置するなどの要求である。納期とは、プロジェクトの終了日を表し、プロジェクトの時間的な制約である。スケジューリングプログラム1800は、プロジェクトの終了日を受け付けることによって、出力するスケジュールの末日を決定することができる。予算とは、投入できる人月数などの金銭的な制約である。スケジューリングプログラム1800は、予算を受け付けることによって、投入できる作業者の人数や従事率を決めることができる。スキルの条件とは、スキルテーブル1020の経験年数列1024-Aを例にすると、経験年数何年以上（以下）といった制約である。スケジューリングプログラム1800は、スキルの条件を受け付けることによって、ある特定のスキルに特化したメンバを採用（不採用）としたりすることができる。実績の条件とは、実績テーブル1030の第１のプロセス、データ項目収集列1034-Aを例にすると、データ項目収集の実績が4.0以上（以下）やNULLであるといった条件である。スケジューリングプログラム1800は、実績の条件を受け付けることによって、あるプロセスに特化したメンバを採用（不採用）としたり、スキルのほぼ同様なメンバのうち経験したことがないメンバを優先的に採用したりすることができる。
【００４５】
予定工数の誤差許容範囲とは、ステップ1602で作成した回帰式上における予定工数を基準とした正規分布の信頼区間である。スケジューリングプログラム1800は、誤差許容範囲を受け付けることによって、算出された予定工数±βのβ部分を決めることができる。βとは、信頼区間の上限（下限）と基準である予定工数の差である。例えば、信頼区間を95％と設定した場合、σを標準偏差とするとβ＝２σとなる。
【００４６】
スケジューリングプログラム1800は、ステップ1801で受け付けた要求と、予定工数テーブル1040の予定工数データと、スケジュールテーブル1050のスケジュールデータとから、プロジェクトマネージャの要求に沿ったアルゴリズムによって、予定プロジェクトの人員配置やスケジュール作成を行う（ステップ1802）。例えば、予定プロジェクトの各プロセスには余剰従事率（プロジェクトに携わっていない従事率）の大きな順にメンバを配置するアルゴリズムをプロジェクトマネージャが指定した場合は、余剰従事率の大きな順にメンバを他の制約を守る範囲で優先的に配置することができる。またプロジェクトマネージャが短期終了を指定した場合は、各プロセスについて予定工数が最小のメンバを優先的に割り当て、その割り当てられたメンバの予定工数を用いて予定プロジェクトのスケジューリングを行うことができる。もしスキルの条件や実績の条件が指定されれば、条件に合うメンバ候補のみを選択の対象とすればよい。
【００４７】
もし各プロセスが直列に実行されるのであれば、割り当てられたメンバの予定工数を合計することにより、予定プロジェクト全体の予定工数が算出される。並行して実行される複数のプロセスがあれば、メンバの予定工数を並列させるようにスケジュール的に加算される。
【００４８】
各プロセスについてできるだけメンバの従事率が小さく、かつできるだけ予定工数の小さなメンバを選択する場合の処理手順の例は次の通りである。スケジューリングプログラム1800は、第１のプロセスについてメンバ候補の予定工数（作業日数）を小さなものから順に並べる。次にスケジューリングプログラム1800は、スケジュールテーブル1050を参照して各メンバ候補の従事率を取得し、期間ごとに合計従事率を計算する。次にスケジューリングプログラム1800は、各メンバ候補の予定工数を同一の従事率の少なくとも１つの期間に分割して各期間の日数を算出する。ただし予定工数の初日は予定プロジェクトの開始日とする。次にスケジューリングプログラム1800は、各メンバ候補の予定工数の全期間について次の式を計算する。
【００４９】
従事率１×期間日数１＋従事率２×期間日数２＋…
すなわち従事率は各期間日数のウェイトとなり、期間日数の合計は予定工数となるので、この式は従事率でウェイト付けした予定工数となる。スケジューリングプログラム1800は、第１のプロセスについて従事率でウェイト付けした予定工数が最小となるメンバを割り当てる。またその予定工数が第１プロセスの期間となる。第２以降のプロセスについても同様であり、各プロセスが直列実行か並列実行かによってその初日が決まり、割り当てられたメンバの予定工数によってその終了日が決まる。
【００５０】
また、誤差許容範囲が設定された場合、予定工数＋βを考慮して、最長スケジュールが納期の制約を守るスケジューリングを行う。例えば、予定工数をＹとして予定工数に＋βをした値をＹβとすると、誤差許容範囲を設定しない場合のスケジューリングを行うアルゴリズムの状況下のＹにＹβを代入することによってスケジュールを作成できる。その作成したスケジュールが納期を守っていて、その他の制約も守っていれば、誤差許容範囲を設定してもスケジューリングは可能であると言える。そして、誤差許容範囲設定後のスケジュールでかつ納期に近いスケジュールの中で、誤差許容範囲設定前と誤差許容範囲設定後のスケジュール間の日数等が多いほど余裕日数が多いので、最も余裕日数が多いスケジュールが時間的な制約の観点から適切なスケジュールであると言える。
【００５１】
また、作業者Ａ，Ｂ，Ｃがいて、プロセス１，２，３，４があるとし、作業者Ａがプロセス１，４を担当し、作業者Ｂがプロセス２を担当し、作業者Ｃがプロセス３を担当するとし、それぞれの予定工数をＹＡ１、ＹＡ４、ＹＢ２、ＹＣ３と表現し、作業者Ａのプロセス１と作業者Ｂのプロセス２には誤差許容範囲を設定し、その他の作業者およびプロセスには誤差許容範囲を設定しない場合は、誤差許容範囲を設定しない場合のスケジューリングを行うアルゴリズムの状況下のＹＡ１にＹＡ１＋ＹβＡ１（作業者Ａがプロセス１を担当した場合の信頼区間の上限（下限）と基準である予定工数の差）を代入し、誤差許容範囲を設定しない場合のスケジューリングを行うアルゴリズムの状況下のＹＢ２にＹＢ２＋ＹβＢ２（作業者Ｂがプロセス２を担当した場合の信頼区間の上限（下限）と基準である予定工数の差）を代入することによって、スケジュールは作成できる。その作成したスケジュールが誤差許容範囲以外の制約を守っていればスケジューリング可能であると言える。さらに、上記例同様、誤差許容範囲設定後のスケジュールでかつ納期に近いスケジュールの中で、誤差許容範囲設定前と誤差許容範囲設定後のスケジュール間の日数等が多いほど余裕日数が多いので、最も余裕日数が多いスケジュールが時間的な制約の観点から適切なスケジュールであると言える。
【００５２】
一方で、誤差許容範囲を設定することによって最短のスケジューリングを行うこともできる。例えば、上記＋βを−βに換え、予定工数で作成した場合のスケジュールが納期内で終了しその他の制約を守っていれば、予定工数−βを考慮して作成したスケジュールは適用可能であると言える。その作成したスケジュールの中で、誤差許容範囲設定前と誤差許容範囲設定後のスケジュール間の日数等が多いほど、スケジュールを短くすることが可能であるので、最もスケジュール間の差の日数が大きいスケジュールが最短であり、なるべく早くプロジェクトを終了させる観点から最適なスケジュールであると言える。
【００５３】
納期を遵守可能な複数の人員配置の組み合わせが存在するとき、誤差を考慮した場合としない場合とで日数の差が大きいものを最適としているが、人件費が最も安くなるものを最適とすることもできる。以下に具体的に説明する。
【００５４】
スキルテーブル１０２０に上記実施例で格納したデータのほかに各人の時間単価も合せて格納する。スキルテーブル１０２０から、配置された人員の個人番号をキーに時間単価を読み出し、各組み合わせでの人件費を算出する。具体的には、各人員配置案の中の各人の予定工数に時間単価を乗じたものの、総和を各組み合わせについて算出する。算出した人件費のうち最も安い人件費に対応する人員配置の組み合わせを最適な人員配置としてスケジューリングプログラム1800が選択する。ここでの予定工数においては、スケジューリングで利用するアルゴリズム及び／または目的に応じて、許容誤差範囲を考慮したものを用いてもよいし、考慮しないものを用いても良い。
【００５５】
スケジューリングプログラム1800は、ステップ1802で作成した人員配置やスケジュールを表などでクライアント端末1009に出力し、承認または新たなプロジェクトに対する要求を受け付ける（ステップ1803）。スケジューリングプログラム1800は、ステップ1803でプロジェクトに対する要求の追加入力があったかどうかの判断を行う（ステップ1804）。追加入力があった場合は、ステップ1802に戻る。追加入力が無かった場合は終了となる。
【００５６】
上記のスケジューリング処理によれば、メンバの予定工数とスケジュールとプロジェクトマネージャのプロジェクトに対する要求をアルゴリズムに従って処理することによって、メンバの配置やプロジェクトのスケジューリングを行うことができる。
【００５７】
代替案として、スケジューリングプログラム1800は、予定工数×余剰従事率でメンバの予定工数を直線状の図形で表現し、プロジェクトマネージャが視覚的に認識できるよう表示し、プロジェクトマネージャは、それらの図形を組み合わせることによって、メンバ配置やスケジュール作成を行うことができる。また、代替案を用いることによって、アルゴリズムで表現できないプロジェクトマネージャの要求（メンバの相性など）を満たすことができる。さらに、スケジューリングプログラム1800は、予定工数の視覚化をすることによって、プロジェクトマネージャの視覚的な全体の把握を補助することができる。
【図面の簡単な説明】
【００５８】
【図１】実施形態のプロジェクト計画算出システムの構成図である。
【図２】実施形態のシステム全体の処理の流れを示すフローチャートである。
【図３】個人情報テーブルのデータ構成例を示す図である。
【図４】スキルテーブルのデータ構成例を示す図である。
【図５】実績テーブルのデータ構成例を示す図である。
【図６】予定工数テーブルのデータ構成例を示す図である。
【図７】スケジュールテーブルのデータ構成例を示す図である。
【図８】実施形態の個人情報登録処理の流れを示すフローチャートである。
【図９】実施形態のログイン処理の流れを示すフローチャートである。
【図１０】実施形態の個人情報変更処理の流れを示すフローチャートである。
【図１１】実施形態のスキル/実績登録処理の流れを示すフローチャートである。
【図１２】実施形態の工数の定量化処理の流れを示すフローチャートである。
【図１３】実施形態のスケジュール登録処理の流れを示すフローチャートである。
【図１４】実施形態のスケジューリング処理の流れを示すフローチャートである。
【符号の説明】
【００５９】
1000：プロジェクト計画算出サーバ、1020：スキルテーブル、1030：実績テーブル、1040：予定工数テーブル、1050：スケジュールテーブル、1600：工数の定量化プログラム、1800：スケジューリングプログラム
【図１】
2006244342.tif 000003
【図２】
2006244342.tif 000004
【図３】
2006244342.tif 000005
【図４】
2006244342.tif 000006
【図５】
2006244342.tif 000007
【図６】
2006244342.tif 000008
【図７】
2006244342.tif 000009
【図８】
2006244342.tif 000010
【図９】
2006244342.tif 000011
【図１０】
2006244342.tif 000012
【図１１】
2006244342.tif 000013
【図１２】
2006244342.tif 000014
【図１３】
2006244342.tif 000015
【図１４】
2006244342.tif 000016