以下に、本発明にかかるプロジェクト管理装置の実施の形態を図面に基づいて詳細に説明する。実施の形態では、プロジェクト管理装置が管理するプロジェクトの一例として、製品開発プロジェクトを管理する場合について説明する。なお、この実施の形態によりこの発明が限定されるものではない。
実施の形態
まず、本実施の形態に係るプロジェクト管理の概念について説明する。図1は、実施の形態に係るプロジェクト管理の概念を説明するための説明図である。本実施の形態では、プロジェクト全体の進捗を管理する全体スケジュール表Aと、全体スケジュール表Aに基づいてプロジェクトを実行するチーム毎に作成されるとともにチームが実行する作業の進捗を管理するチーム毎のチームスケジュール表B1〜Bnと、を用いてプロジェクトの進捗を管理する。
全体スケジュール表Aは、プロジェクトの計画時にプロジェクトのおおまかなフェーズ(ソフトウェア設計、コーディング、試験などタスク)のスケジュール(作業の完了期限など)を計画したものである。ここでの作業の完了期限は、例えばプロジェクトリーダ等によって設定される。
また、チームスケジュール表B1〜Bnは、各タスクの中で細かなタスク(例えば試験フェーズに対して試験環境構築やテストケースの作成などの作業工程)とそのスケジュール(作業の完了期限)を設定したものである。ここでの作業の完了期限は、例えばチームリーダ等によって設定される。
プロジェクト管理装置10は、プロジェクトリーダ等に全体スケジュール表Aを作成させる際に、各タスクに対してタスクを識別する識別情報(後述の全体タスクID)を設定しておく。
また、プロジェクト管理装置10は、チームリーダ等にチームスケジュール表B1〜Bnを作成させる際に、全体スケジュール表Aと同じタスクに対して全体スケジュール表Aで設定したタスクの識別情報を設定しておく。すなわち、プロジェクト管理装置10は、チームスケジュール表B1〜Bnを作成する際に、全体スケジュール表A内のタスクとチームスケジュール表B1〜Bnのタスクを対応付けておく。例えば、全体スケジュール表Aの「S/W」の下位の「S/W設計」の下の「機能1」タスクとチームスケジュール表B1のモジュール開発チーム(1)の「機能1」の下位の「S/W設計」タスクには対応関係があり、同一のタスクとみなす。
各チームにおいてタスクの実行が開始されると、タスク(作業)の進捗に関する情報(進捗情報)がチームスケジュール表B1〜Bnに入力される。プロジェクト管理装置10は、この進捗情報を全体スケジュール表Aに反映させる。このとき、プロジェクト管理装置10は、全体タスクIDやチームタスクIDを用いて全体スケジュール表Aに進捗情報を反映させる。
これにより、プロジェクト管理装置は、プロジェクト全体での進捗管理とチーム毎の進捗管理の整合性を取りながらプロジェクトの進捗管理を行う。なお、1つのチームは1つのプロジェクトで複数の機能あるいは部品を担当してもよい。例えば、図1では、モジュール開発チーム(1)が「機能1」と「機能2」を担当する場合を示している。
図2は、本発明の実施の形態に係るプロジェクト管理システムの構成を示す図である。プロジェクト管理システムは、製品開発プロジェクトの進捗管理を行うプロジェクト管理装置10、機能登録情報DB31、全体スケジュールDB32、チームスケジュールDB33、LAN(Local Area Network)などの通信ネットワーク40、プロジェクトリーダ端末装置21、チームリーダ端末装置T1〜Tn(nは自然数)を備えている。なお、ここではチームリーダ端末装置T1〜Tnのそれぞれが、図1に示したチームスケジュール表B1〜Bnに対応するものとする。
プロジェクトリーダ端末装置21とチームリーダ端末装置T1〜Tnがプロジェクトチーム20を構成している。通信ネットワーク40は、プロジェクト管理装置10と、プロジェクトチーム20側の端末装置(プロジェクトリーダ端末装置21、チームリーダ端末装置T1〜Tn)を接続している。
機能登録情報DB31は、製品開発プロジェクトで開発する機能全般に関する情報(機能登録情報)を格納したデータベースである。機能登録情報DB31は、機能登録情報として、機能を開発するチームの識別情報、機能の下に配置されるタスク(機能の開発に必要な作業工程)などの情報を機能毎に格納する。
全体スケジュールDB32は、全体スケジュール表AのタスクをWBS(Work Breakdown Structure)の形式で整備した状態で保管するデータベースである。チームスケジュールDB33は、チーム毎のチームスケジュール表B1〜BnをWBSの形式で保管するデータベースである。
プロジェクト管理装置10は、機能登録情報DB31、全体スケジュールDB32、チームスケジュールDB33、通信ネットワーク40と接続している。プロジェクト管理装置10は、全体スケジュール登録支援部11、機能登録支援部12、進捗情報入力部13、進捗情報反映部14、期限遅れ抽出部(メール送信部)15、データベースI/F部16、端末I/F部17を備えている。
データベースI/F部16は、機能登録情報DB31、全体スケジュールDB32、チームスケジュールDB33との間でデータのやりとりを行なう通信インタフェースである。端末I/F部17は、通信ネットワーク40を介してプロジェクトリーダ端末装置21、チームリーダ端末装置T1〜Tnとの間でデータのやりとりを行なう通信インタフェースである。
全体スケジュール登録支援部11、機能登録支援部12、進捗情報入力部13、進捗情報反映部14、期限遅れ抽出部15は、それぞれデータベースI/F部16を介して各DB(機能登録情報DB31、全体スケジュールDB32、チームスケジュールDB33)からのデータ取得や各DBへのデータ保存を行なう。また、全体スケジュール登録支援部11、機能登録支援部12、進捗情報入力部13、進捗情報反映部14、期限遅れ抽出部15は、それぞれ端末I/F部17を介してプロジェクトチーム20側の端末装置(プロジェクトリーダ端末装置21、チームリーダ端末装置T1〜Tn)への情報の出力やプロジェクトチーム20側の端末装置から送られる情報の入力を行なう。
全体スケジュール登録支援部11は、プロジェクトリーダが担当する製品開発プロジェクトに関する情報の登録を行なう。具体的には、全体スケジュール登録支援部11は、プロジェクトリーダ端末装置21から送られるプロジェクトの属性情報やプロジェクトのタスクを全体スケジュールDB32内のデータテーブル(全体スケジュール表Aに対応するデータテーブル(後述の全体基本テーブル54や全体タスクテーブル55))に登録(保存)する。
機能登録支援部12は、チームリーダが担当する機能の登録をチーム毎に行なって、チーム毎のスケジュール表B1〜Bnを作成する。具体的には、機能登録支援部12は、チームリーダ端末装置T1〜Tnから送られる機能の設定に関する情報(機能設定情報)(各機能に含まれるタスクなど)とチームリーダからの指示情報に基づいてチーム毎のチームスケジュール表を作成し、作成したチームスケジュール表B1〜Bnに対応するデータテーブル(後述のチームタスクテーブル56)をチームスケジュールDB33に登録(保存)する。
機能登録支援部12は、チームスケジュールDB33へのチームスケジュール表B1〜Bnの登録の際に、全体スケジュール表Aに機能タスク(チームスケジュールDB33に登録された機能設定情報)(各タスクに含まれる機能)を追加し、追加後の全体スケジュール表Aに対応するデータテーブル(全体タスクテーブル55)を全体スケジュールDB32に保存する。具体的には、機能登録支援部12は、チームスケジュール表B1〜Bnに登録したタスクを全体スケジュール表Aに登録する。
さらに、機能登録支援部12は、全体スケジュールDB32に登録した機能タスクやチームスケジュールDB33に登録したデータテーブル(チームタスクテーブル56)から所定の機能登録情報を抽出(取得)して機能登録情報DB31に保存する。具体的には、機能登録支援部12は、チームスケジュール表B1〜Bnや全体スケジュール表Aに登録したタスクの情報(プロジェクトID、機能IDなど)を機能登録基本テーブル51、機能登録タスクテーブル52、機能登録チームテーブル53に登録する。
進捗情報入力部13は、プロジェクトに対する作業の進捗状況に関する情報(進捗情報)(タスクの実施完了日など)を入力するとともに、入力された進捗情報をチームスケジュールDB33に保存する。進捗情報入力部13へは、所定のタイミング(例えば1日に1回)でチームリーダや作業担当者などによって進捗情報が入力される。進捗情報入力部13への進捗情報の入力は、プロジェクト管理装置10が備える情報の入力手段(例えば、マウス、キーボード)などから直接入力してもよいし、通信ネットワーク40などを介して所定の通信端末(作業担当者の通信端末、チームリーダ端末装置T1〜Tn)から入力してもよい。
進捗情報反映部14は、チーム毎のチームスケジュール表B1〜Bnから進捗情報を取得し、全体スケジュール表Aに自動反映する。進捗情報反映部14は、全体スケジュール表Aに反映させた進捗情報を、全体スケジュールDB32に保存する。進捗情報反映部14は、例えばプロジェクト全体の進捗状況を把握するために、プロジェクトリーダ端末装置21から進捗状況の取得要求(アクセス指示)が送られた際に、全体スケジュール表Aに進捗情報を反映する。
期限遅れ抽出部15は、プロジェクト全体のスケジュール(全体スケジュール表A)に対して遅れたタスク(作業の完了期限よりも進行が遅れている作業)をチーム毎のチームスケジュール表B1〜Bnから抽出し、チームリーダ(チームリーダ端末装置T1〜Tn)(チームの通信端末)へアラームメールとして発信する。
全体スケジュール登録支援部11、機能登録支援部12、進捗情報反映部14は、それぞれの処理を行なう際に、処理内容をプロジェクトリーダ端末装置21やチームリーダ端末装置T1〜Tnに送信し、プロジェクトリーダ端末装置21やチームリーダ端末装置T1〜Tnに処理内容を表示させる。例えば、全体スケジュール登録支援部11は、プロジェクトの属性情報やプロジェクトのタスクを全体スケジュール表Aに登録したことを示す情報をプロジェクトリーダ端末装置21に送信する。また、機能登録支援部12は、チームスケジュールDB33に登録されたチームスケジュール表B1〜Bnをチームリーダ端末装置T1〜Tnに送信する。また、進捗情報反映部14は、チームスケジュール表B1〜Bnの進捗情報を全体スケジュール表Aに反映したことを示す情報(例えば、反映された進捗情報など)をプロジェクトリーダ端末装置21に送信する。
プロジェクトリーダ端末装置21は、マウスやキーボードなどの情報入力手段(図示せず)と、液晶モニタなどの情報表示手段(図示せず)とを備えた、パーソナルコンピュータなどの装置である。
プロジェクトリーダ端末装置21は、プロジェクトリーダなどによって情報入力手段から入力された情報(プロジェクトの属性情報やプロジェクトのタスクを全体スケジュール表Aに反映させる指示情報など)をプロジェクト管理装置10に送る。また、プロジェクトリーダ端末装置21は、例えば全体スケジュール表Aなどを表示する。
チームリーダ端末装置T1〜Tnは、マウスやキーボードなどの情報入力手段(図示せず)と、液晶モニタなどの情報表示手段(図示せず)とを備えたパーソナルコンピュータなどの装置である。
チームリーダ端末装置T1〜Tnは、チームリーダなどによって情報入力手段から入力された情報(機能設定情報、チームスケジュール表B1〜Bnを作成する指示情報)をプロジェクト管理装置10に送る。また、チームリーダ端末装置T1〜Tnは、例えばチームスケジュールDB33に登録されているチームスケジュール表B1〜Bnなどを表示する。
なお、進捗情報反映部14は、プロジェクトリーダ端末装置21から進捗状況の取得要求が送られた際に全体スケジュール表Aに進捗情報を反映することとしたが、進捗情報反映部14は、予め設定された所定のタイミング(例えば毎日午前0時)で、全体スケジュール表Aに進捗情報を反映させてもよいし、進捗情報入力部13に進捗情報が入力された際に全体スケジュール表Aに進捗情報を反映させてもよい。
ここで、機能登録情報DB31、全体スケジュールDB32、チームスケジュールDB33がそれぞれ格納する情報の構成について説明する。まず、機能登録情報DB31の構成について説明する。機能登録情報DB31は、機能登録情報として、図3に示す機能登録基本テーブル51、図4に示す機能登録タスクテーブル52、図5に示す機能登録チームテーブル53を格納している。機能登録基本テーブル51、機能登録タスクテーブル52、機能登録チームテーブル53は、後述する全体基本テーブル54、全体タスクテーブル55、チームタスクテーブル56などに基づいて作成される。
図3の機能登録基本テーブル51は、各機能が何れのプロジェクトに属するか、何れのチームに属するかを示した情報テーブルである。機能登録基本テーブル51は、フィールドとして、「プロジェクトID」、「機能ID」、「機能名」、「チームID」、「削除フラグ」を有しており、これらがそれぞれ対応付けられている。
「プロジェクトID」は、製品開発プロジェクトを識別する識別子であり、「機能ID」は、プロジェクトで開発する機能を識別する識別子である。「機能名」は、「機能ID」に対応する機能の名称である。「チームID」は、チームを識別する識別子である。
「削除フラグ」は、設定されている機能が削除されたものであるか否かを示すフラグである。ここでは、「削除フラグ」が「1」の場合に、削除された機能であることを示している。「プロジェクトID」と「機能ID」とによって、機能登録基本テーブル51内におけるフィールドの対応関係(組合せ)を一意に識別することができる。例えば、「機能1」は「機能ID」が「0001」であり、「機能2」は「機能ID」が「0002」である。
図4の機能登録タスクテーブル52は、各機能が何れのタスクに対応するかを示した情報テーブルである。機能登録タスクテーブル52は、フィールドとして、「プロジェクトID」、「機能ID」、「全体タスクID」を有しており、これらがそれぞれ対応付けられている。
「全体タスクID」は、全体スケジュール表Aにおけるタスクを識別する識別子(作業識別情報)である。「プロジェクトID」、「機能ID」、「全体タスクID」の3つフィールドによって、機能登録タスクテーブル52内におけるフィールドの対応関係(組合せ)を一意に識別することができる。
図5の機能登録チームテーブル53は、各チームに関する情報を管理する情報テーブルであり、各プロジェクトに何れのチームが対応するかを示している。機能登録チームテーブル53は、フィールドとして、「プロジェクトID」、「チームID」、「チーム名」、「チームリーダメールアドレス」を有しており、これらがそれぞれ対応付けられている。
「チーム名」は、「チームID」に対応するチームの名称であり、「チームリーダメールアドレス」はチームリーダがプロジェクト管理の際に使用するメールアドレスである。「プロジェクトID」と「チームID」とによって、機能登録チームテーブル53内におけるフィールドの対応関係(組合せ)を一意に識別することができる。
つぎに、全体スケジュールDB32の構成について説明する。全体スケジュールDB32は、図6に示す全体基本テーブル54、図7に示す全体タスクテーブル55を格納している。
図6の全体基本テーブル54は、プロジェクトの基本的な情報を管理する情報テーブルである。全体基本テーブル54は、フィールドとして、「プロジェクトID」、「プロジェクト名」、「プロジェクト番号」、「作成部門」、「作成者」、「完了予定日」、「備考」を有しており、これらがそれぞれ対応付けられている。
「プロジェクト名」は「プロジェクトID」に対応するプロジェクトの名称であり、「プロジェクト番号」は各プロジェクトに割当てられた番号である。「作成部門」はプロジェクトを実行(作成)する部門であり、「作成者」はプロジェクトの実行を行なう部門での担当者(作成者)であり、「完了予定日」はプロジェクトを完了する予定日である。「プロジェクトID」によって、全体基本テーブル54内におけるフィールドの対応関係(組合せ)を一意に識別することができる。
図7の全体タスクテーブル55は、全体スケジュール表AにおけるWBS形式のタスクに関する情報を示す情報テーブルである。全体タスクテーブル55は、フィールドとして、「プロジェクトID」、「全体タスクID」、「全体タスク名」、「親全体タスクID」、「並び順」、「機能ID」、「開始予定日」、「完了予定日」、「開始実績日」、「完了実績日」、「達成率」を有しており、これらがそれぞれ対応付けられている。ここでの「開始予定日」や「完了予定日」は、プロジェクトリーダによって設定されるものである。また、「開始実績日」、「完了実績日」は、全体タスクテーブル55の更新処理が行なわれた後は、後述のチームタスクテーブル56の「開始実績日」、「完了実績日」に対応することとなる。また、ここでの「達成率」は、全体タスクテーブル55でのタスクの達成率である。
「全体タスクID」は、全体タスクテーブル55でのタスクの識別子である。ここでの「全体タスクID」が図4に示した機能登録タスクテーブル52の「全体タスクID」に対応している。「全体タスク名」は「全体タスクID」に対応するタスクの名称である。
「親全体タスクID」は、全体タスクテーブル55において、子供側のタスクから見て上位(親側)にあるタスク(自タスクよりも1つ上位のタスク)を識別する識別子である。なお、親が存在しない最も上の階層のタスクでは「親全体タスクID」が「0000」となる。
「並び順」は「親全体タスクID」で分類されるタスク群の中での並びの順位(「親全体タスクID」を同一に持つ複数の子供タスクの並び順)である。「並び順」の数値が大きいものが全体スケジュール表A内で下側に配置される。「機能ID」は、機能を識別する識別子である。
「開始予定日」はタスクの実行を開始する予定日であり、「完了予定日」はタスクの実行を完了させる予定日である。「開始実績日」はタスクの実行を開始した日(実績日)であり、「完了実績日」はタスクの実行を完了した日(実績日)である。「達成率」は、タスクの達成率である。ここでの「完了予定日」が図6の全体基本テーブル54の「完了予定日」に対応する。「プロジェクトID」と「全体タスクID」とによって、全体タスクテーブル55内におけるフィールドの対応関係(組合せ)を一意に識別することができる。
全体スケジュール表のツリーの構成には「親全体タスクID」と「並び順」を用いる。例えば、図7に示す全体タスクテーブル55の場合、「全体タスクID」が「0001」、「0002」、「0003」のタスクでは、各「親全体タスクID」が「0000」で共通であるので、これらで1つのタスク群を構成している。ここでは、「親全体タスクID」が「0000」であるので、これらのタスク群が最上位のタスクであることを示している。このタスク群内での並びは、図1の全体スケジュール表Aに示すように、「並び順」が「0001」である「方針」(「全体タスクID」が「0001」)が1番目となる。また、「並び順」が「0002」である「H/W」(「全体タスクID」が「0002」)が2番目となり、「並び順」が「0003」である「S/W」(「全体タスクID」が「0003」)が3番目となる。
また、「全体タスクID」が「0004」、「0005」、「0006」のタスクでは、各「親全体タスクID」が「0003」で共通あるので、これらで1つのタスク群を構成している。ここでは、「親全体タスクID」が「0003」であるので、「全体タスクID」が「0003」のタスク「S/W」がこれらのタスク群の親タスクとなることを示している。このタスク群内での並びは、図1の全体スケジュール表Aに示すように、「並び順」が「0001」である「S/W設計」(「全体タスクID」が「0004」)が1番目となる。また、「並び順」が「0002」である「コーディング」(「全体タスクID」が「0005」)が2番目となり、「並び順」が「0003」である「試験」(「全体タスクID」が「0006」)が3番目となる。
つぎに、チームスケジュールDB33の構成について説明する。チームスケジュールDB33は、図8に示すチームタスクテーブル56を格納している。チームタスクテーブル56は、チーム毎のチームスケジュール表B1〜BnにおけるWBS形式のタスクに関する情報を示す情報テーブルである。
チームタスクテーブル56は、フィールドとして、「プロジェクトID」、「チームID」、「チームタスクID」、「チームタスク名」、「親チームタスクID」、「並び順」、「機能ID・全体タスクID」、「期限遅れフラグ」、「開始予定日」、「完了予定日」、「開始実績日」、「完了実績日」、「達成率」を有しており、これらがそれぞれ対応付けられている。
「チームタスクID」はチームタスクテーブル56でのタスクの識別子であり、「チームタスク名」は「チームタスクID」に対応するタスクの名称である。「親チームタスクID」は、チームタスクテーブル56において、子供側のタスクから見て上位(親側)にあるタスク(自タスクよりも1つ上位のタスク)を識別する識別子である。なお、親が存在しない最も上の階層のタスクでは「親チームタスクID」が「0000」となる。
「並び順」は「親チームタスクID」で分類されるタスク群の中での並びの順位である。「並び順」の数値が大きいものがチームスケジュール表B1〜Bn内で下側に配置される。
「機能ID・全体タスクID」には、親が存在しないタスク(「親チームタスクID」が「0000」)では機能IDが入り、それ以外のタスクで全体スケジュール表から追加されたタスクには全体スケジュール表Aの「全体タスクID」が入る。
親が存在しないタスクの場合、例えば「機能1」では「機能ID」の「0001」が入り、「機能2」では「機能ID」の「0002」が入る。また、全体スケジュール表Aから追加されたタスクの場合、例えば「S/W設計」では「全体タスクID」の「0004」が入り、「コーディング」では「全体タスクID」の「0005」が入る。
なお、チーム毎のチームスケジュール表B1〜Bnで後から追加されたタスクは、全体スケジュール表Aに未登録のタスクであるため、「機能ID・全体タスクID」のフィールドが空となる。
「期限遅れフラグ」は、タスクの期限遅れが発生しているか否かを示している。ここでは、「期限遅れフラグ」が「1」の場合に、タスクの期限遅れが発生しているものとする。「開始予定日」はタスクの実行を開始する予定日であり、「完了予定日」はタスクの実行を完了させる予定日である。「開始実績日」はタスクの実行を開始した日(実績日)であり、「完了実績日」はタスクの実行を完了した日(実績日)である。「達成率」は、タスクの達成率である。ここでの「開始予定日」、「完了予定日」は、各チームリーダによって設定されるものである。このうち、「開始実績日」、「完了実績日」は、全体タスクテーブル55の更新処理によって、図7の全体タスクテーブル55の「開始実績日」、「完了実績日」に対応することとなる。また、ここでの「達成率」は、チームタスクテーブル56におけるタスクの達成率である。「プロジェクトID」と「チームタスクID」とによって、チームタスクテーブル56内におけるフィールドの対応関係(組合せ)を一意に識別することができる。
例えば、「チームID」が「0001」のタスクによって、チームスケジュール表B1が作成され、「チームID」が「0003」のタスクによって、チームスケジュール表B3が作成される。
チームスケジュール表B1〜Bnのツリーの構成には、全体スケジュール表Aと同様に「親チームタスクID」と「並び順」を用いる。例えば、図8に示すチームタスクテーブル56のうち、「チームID」が「0001」のタスク(チームスケジュール表B1)では、「チームタスクID」が「0001」や「0005」のタスクは、「親チームタスクID」がそれぞれ「0000」であるので、これらのタスクが最上位のタスクであることを示している。
また、「チームタスクID」が「0002」、「0003」、「0004」のタスクでは、各「親チームタスクID」が「0001」で共通あるので、これらで1つのタスク群を構成している。ここでは、「親チームタスクID」が「0001」であるので、「チームタスクID」が「0001」のタスク「機能1」がこれらのタスク群の親タスクとなることを示している。このタスク群内での並びは、図1のチームスケジュール表B1〜Bnに示すように、「並び順」が「0001」である「S/W設計」(「チームタスクID」が「0002」)が1番目となる。また、「並び順」が「0002」である「コーディング」(「全体タスクID」が「0003」)が2番目となり、「並び順」が「0003」である「試験」(「全体タスクID」が「0004」)が3番目となる。
また、「チームタスクID」が「0006」のタスクでは、「親チームタスクID」が「0005」であるので、「チームタスクID」が「0005」のタスク「機能2」がこのタスクの親タスクとなることを示している。
また、図8に示すチームタスクテーブル56のうち、「チームID」が「0003」のタスク(チームスケジュール表B3)は、「機能5」タスクの構成を示している。「チームタスクID」が「0008」の「単体試験」タスクは、「親チームタスクID」が「0004」である。したがって、「チームタスクID」が「0004」である「試験」タスクが「単体試験」タスクの親タスクとなる。
また、「チームタスクID」が「0004」の「試験」タスクは、「親チームタスクID」が「0003」である。したがって、「チームタスクID」が「0003」である「機能5」が「試験」タスク(「チームタスクID」が「0004」)の親タスクとなる。また、「チームタスクID」が「0003」の「機能5」タスクは、「親チームタスクID」が「0000」である。したがって、「機能5」タスクが最上位のタスクである。
ここで、プロジェクト管理装置10の備える各構成要素とプロジェクト管理システム内の各DB(機能登録情報DB31、全体スケジュールDB32、チームスケジュールDB33)との関係を説明する。図9は、プロジェクト管理装置の構成要素と各DBの関係を説明するための図である。
機能登録情報DB31は、機能登録情報を格納している。また、全体スケジュール登録支援部11が全体スケジュールDB32へ全体スケジュール表Aを格納させている。また、機能登録支援部12がチームスケジュール表B1〜Bnを作成してチームスケジュールDB33へ格納させ、進捗情報入力部13がチームスケジュールDB33内に進捗情報を格納させている。さらに、機能登録支援部12は、全体スケジュール表に機能設定情報の機能タスクを追加して全体スケジュールDB32に保存させるとともに、全体スケジュールDB32に登録した機能設定情報を機能登録情報として機能登録情報DB31に保存させている。
進捗情報反映部14は、チームスケジュール表B1〜Bnから進捗情報を抽出して全体スケジュール表Aに反映させている。期限遅れ抽出部15は、全体スケジュール表に対して期限の遅れたタスクをチームスケジュール表B1〜Bnから抽出し、チームリーダ(チームリーダ端末装置T1〜Tn)へアラームメールとして発信する。
つぎに、プロジェクト管理装置10の動作手順について説明する。図10は、プロジェクト管理装置の動作手順を示すフローチャートである。プロジェクトリーダによって、プロジェクトリーダ端末装置21にプロジェクトの全体スケジュール表A(プロジェクトの属性情報やプロジェクトのタスク)が入力されると、この全体スケジュール表Aは通信ネットワーク40を介してプロジェクト管理装置10に送られる。プロジェクト管理装置10の端末I/F部17は、全体スケジュール表Aを受信して全体スケジュール登録支援部11に入力する。全体スケジュール登録支援部11は、プロジェクトの全体スケジュール表Aを全体スケジュールDB32に登録する(ステップS10)。全体スケジュール登録支援部11は、全体スケジュール表AのタスクをWBSの形式で全体スケジュールDB32に保管する。
ここで、WBSで記述されたタスクの構成について説明する。図11は、WBSで記述したタスクの構成の一例を示す図である。タスクはツリー構造で表現されるとともに、上位の階層から順番に詳細なタスク(作業内容)に分解されている。タスクは、ツリー構造として以下の制限があるものとする。
・階層数には制限がないものとする。
・タスクは必ず属性を保有するものとする。この属性は、例えば「開始予定日」、「完了予定日」、「開始実績日」、「完了実績日」、「達成率」とする。
・自タスクよりも下に子タスク(子供のタスク)が存在するタスク(以下、サマリータスクという)の場合、自サマリータスクの属性の値は子タスクの属性の値に基づいて算出された値とする。サマリータスクの「開始予定日」、「開始実績日」の属性値は、子タスクの中で最も早い日付(日時)となる。サマリータスクの「完了予定日」、「完了実績日」の属性値は、子タスクの中で最も遅い日付(日時)となる。サマリータスクの「達成率」の属性値は、子タスクの「達成率」の平均値となる。例えば、図11に示したタスク「S/W」は、サマリータスクであり、子タスクとして3つのタスク「S/W設計」、「コーディング」、「試験」を有している。この場合において、サマリータスク「S/W」の「開始予定日」は、3つの子タスクの中で最も早い日付「06/07/01」(2006年7月1日)となる。また、サマリータスク「S/W」の「完了予定日」は、3つの子タスクの中で最も遅い日付「06/12/31」(2006年12月31日)となる。また、サマリータスク「S/W」の「達成率」は、3つの子タスクの「達成率」を平均した「50%」となる。
・プロジェクトリーダ等が属性の値を入力できるタスク(他のタスクの属性地に応じて属性値が算出されることのないタスク)は、自タスクより下に子タスクが存在しないタスク(最下層のタスク)である。
各チームリーダによって、各チームリーダ端末装置T1〜Tnに機能設定情報、チームスケジュール表B1〜Bnを作成するための指示情報が入力されると、この機能設定情報と指示情報は通信ネットワーク40を介してプロジェクト管理装置10に送られる。プロジェクト管理装置10の端末I/F部17は、機能設定情報と指示情報を受信して機能登録支援部12に入力する。機能登録支援部12は、機能設定情報と指示情報に基づいてチーム毎のチームスケジュール表B1〜Bnを作成し、作成したチームスケジュール表B1〜BnをチームスケジュールDB33に登録する(ステップS20)。
全体スケジュール表Aとチームスケジュール表B1〜Bnが作成された後に、各チームリーダによって、各チームリーダ端末装置T1〜Tnに自チームの進捗情報が入力されると、この進捗情報は通信ネットワーク40を介してプロジェクト管理装置10に送られる。プロジェクト管理装置10の端末I/F部17は、進捗情報を受信して進捗情報入力部13に入力する。進捗情報入力部13は、入力された進捗情報をチームスケジュールDB33内のチームスケジュール表B1〜Bnに保存する(ステップS30)。
プロジェクトリーダによって、プロジェクトリーダ端末装置21に進捗情報の取得要求が入力されると、この取得要求は通信ネットワーク40を介してプロジェクト管理装置10に送られる。プロジェクト管理装置10の端末I/F部17は、進捗情報の取得要求を受信して進捗情報反映部14に入力する。進捗情報反映部14は、進捗情報の取得要求に基づいて、チームスケジュール表から進捗情報を抽出し、全体スケジュール表Aに反映する。すなわち、チーム毎の進捗情報を吸い上げて全体スケジュール表Aに反映させる(ステップS40)。進捗情報の取得要求にに対応する進捗情報(進捗情報が反映された全体スケジュール表A)は、プロジェクトリーダ端末装置21に送られる。
期限遅れ抽出部15は、全体スケジュール表Aのスケジュールに対して期限の遅れたタスクをチーム毎のチームスケジュール表B1〜Bnから抽出し、スケジュールの遅れているチームリーダ通信端末へアラームメール(フォローメール)を送信する(ステップS50)。これにより、アラームメールを受けたチームリーダは、スケジュールの再計画などの是正処置を行うか否かを容易に判断できる。各チームリーダは、必要に応じてスケジュールの再計画などの是正処置を行う。
つぎに、プロジェクト管理装置10の詳細な動作手順として、図10のフローチャートで説明した処理(ステップS10〜S50)の詳細な動作手順について説明する。以下では、ステップS10〜S50の各処理を順番に説明する。
まず、ステップS10の処理である、全体スケジュール登録支援部11による全体スケジュール表の登録手順について説明する。図12は、全体スケジュール表の登録手順を示すフローチャートである。
プロジェクトリーダによって、プロジェクトリーダ端末装置21に全体スケジュール表Aの登録を開始する指示情報が入力されると、全体スケジュール登録支援部11は、プロジェクトリーダ端末装置21の情報表示手段にプロジェクト登録画面を表示させる(ステップS110)。ここでのプロジェクト登録画面は、例えば図13に示す画面であり、全体スケジュール表Aにプロジェクトを登録するための画面である。
プロジェクト登録画面において、プロジェクトで開発する機種に関する情報(プロジェクト情報)(プロジェクト名、プロジェクト番号、作成部門、作成者、完了予定日など)が入力されると、このプロジェクト情報はプロジェクト管理装置10の全体スケジュール登録支援部11に送られる。全体スケジュール登録支援部11は、プロジェクトリーダ端末装置21からのプロジェクト情報を端末I/F部17を介して入力する(ステップS120)。
この後、プロジェクト登録画面において、プロジェクト情報を保存させる指示情報が入力(例えば「保存」ボタンのクリック)されると、この指示情報も全体スケジュール登録支援部11に送られる。
全体スケジュール登録支援部11は、プロジェクト情報と、このプロジェクト情報を保存させる指示情報を受信すると、全体スケジュールDB32の全体基本テーブル54にプロジェクト情報を保存する(ステップS130)。
そして、全体スケジュール登録支援部11は、プロジェクトリーダ端末装置21の情報表示手段にプロジェクト専用のタスク編集画面(全体スケジュール表Aのタスク編集画面)を表示させる(ステップS140)。ここでのタスク編集画面は、例えば図14に示す画面であり、プロジェクトリーダがタスクの内容を編集するための画面である。
タスク編集画面において、ツリー形式のタスクの追加や削除、タスクの開始予定日の設定や完了予定日の設定などのタスク編集処理が行なわれると、この編集内容はプロジェクト管理装置10の全体スケジュール登録支援部11に送られる。例えば図14に示すタスク編集画面の場合、「方針」、「H/W」、「S/W」、「S/W設計」、「コーディング」、「試験」、「現品会議」が追加されており、これらのタスクとともに、これらの階層構造が全体スケジュール登録支援部11に送られる。
この後、タスク編集画面において、編集後のタスクを保存させる指示情報が入力(例えば「保存」ボタンのクリック)されると、この指示情報も全体スケジュール登録支援部11に送られる。
全体スケジュール登録支援部11は、タスクの編集内容と、この編集内容を保存させる指示情報を受信すると、全体スケジュールDB32の全体タスクテーブル55に編集後のタスクを保存する(ステップS150,S160)。このとき、全体スケジュール登録支援部11は、編集後のタスクと、ステップS130の処理で保存しておいたプロジェクトIDとを対応付けする。そして、編集後のタスクとプロジェクトIDを全体スケジュールDB32の全体タスクテーブル55に保存する。全体スケジュールDB32へは、タスク間の関係がタスク編集画面で表示していたWBSの形式(全体スケジュール表A)を示すよう、各タスクを全体タスクテーブル55内に保存させる。具体的には、各タスクに「全体タスクID」、「親全体タスクID」、「並び順」を設定することによって、WBSの形式でタスクを保存させる。
つぎに、ステップS20の処理である、機能登録支援部12によるチームスケジュール表B1〜Bnの作成手順について説明する。ここでは、まずチームスケジュール表B1〜Bnの作成手順の概要について説明し、その後チームスケジュール表B1〜Bnの作成手順の詳細な手順について説明する。
まず、チームスケジュール表の作成手順の概要として、チームリーダ端末装置T1〜Tnと機能登録支援部12との間のやり取り(機能設定情報の入出力など)について説明する。図15は、チームスケジュール表の作成手順の概要を示すフローチャートである。
チームリーダによって、チームリーダ端末装置T1〜Tnの何れかに機能登録を開始する指示情報(プロジェクトID)が入力されると、機能登録支援部12は、チームリーダ端末装置の情報表示手段にプロジェクトIDに対応する機能登録画面を表示させる(ステップS210)。ここでの機能登録画面は、例えば図16に示す画面であり、チームスケジュール表B1〜Bnに機能を登録(自動生成)するための画面である。
機能登録画面では、「機能名」、「チーム名」、「チームリーダメールアドレス」、複数のタスク(「タスク1」〜「タスクM」(Mは自然数))を対応付けて表示している。ここでは、例えば、「機能1」と「機能2」をモジュール開発チーム(1)(「メールアドレス」が「aaa」)に指定されている場合を示している。また、機能登録画面に表示している「機能名」は、機能を識別する機能IDと対応付けられている。
機能登録画面において、機能に関する情報として機能設定情報(「機能名」、「チーム名」、「メールアドレス」、「タスク1」〜「タスクM」など)が入力されると、この機能設定情報はプロジェクト管理装置10の機能登録支援部12に送られる。機能登録支援部12は、チームリーダ端末装置T1〜Tnから送られた機能設定情報を端末I/F部17を介して入力する(ステップS220〜S240)。
機能登録画面において、例えば「機能名」や「チーム名」へは任意の文字列を入力してよい。ただし、機能同士でチーム名が同一の場合は、同一のチームとみなし、同一のチームスケジュール表に記載する。
また、「メールアドレス」には、チームリーダのメールアドレスを設定する。さらに、「タスク1」〜「タスクM」の何れかのタスクを指定して、実行するタスクを入力する。「タスク1」〜「タスクM」は、プルダウンで設定できる構成としてもよい。「タスク1」〜「タスクM」に指定されるタスクの候補は、全体スケジュール表Aに含まれるタスクである。
例えば、全体スケジュール表が図14のタスク編集画面に対応する全体スケジュール表Aである場合、図16に示す機能登録画面の「タスク1」〜「タスクM」に設定できるタスクは、「方針」、「H/W」、「S/W」、「S/W設計」、「コーディング」、「試験」、「現品会議」の7つである。
この後、機能登録画面において、機能設定情報(機能登録情報)を保存させる指示情報が入力(例えば「作成」ボタンのクリック)されると(ステップS250)、この指示情報も機能登録支援部12に送られる。
機能登録支援部12は、機能登録画面に入力された機能設定情報(タスク)を追加することによってチームスケジュール表B1〜Bnを作成する。機能登録支援部12は、作成したチームスケジュール表B1〜Bnを、チームタスクテーブル56としてチームスケジュールDB33に保存する。
このとき、機能登録支援部12は、編集後の機能設定情報と、機能登録画面に対応するプロジェクトIDと、機能設定情報を編集したチームリーダ端末装置に対応するチームIDとを対応付けする。そして、これらの情報をチームスケジュールDB33のチームタスクテーブル56に保存する。チームスケジュールDB33へは、タスク間の関係がWBSの形式(チームスケジュール表B1〜Bn)を示すよう、各タスクをチームタスクテーブル56内に保存させる。具体的には、各タスクに「チームタスクID」、「親チームタスクID」、「並び順」を設定することによって、WBSの形式でタスクを保存させる。
また、このとき、機能登録支援部12は、チームタスクテーブル56の「機能ID・全体タスクID」に、親が存在しないタスクには機能ID(機能登録画面の機能名に対応する機能ID)を入力し、その他のタスクで全体スケジュール表Aで設定されたタスクには全体スケジュール表Aの「全体タスクID」を入力する。
さらに、機能登録支援部12は、チームスケジュールDB33に登録したタスクに対応する機能タスクを全体スケジュール表(全体タスクテーブル55)に追加する(ステップS250)。例えば、図7に示した全体タスクテーブル55の場合、「機能1」〜「機能5」の機能タスクが全体タスクテーブル55に追加される。このとき、タスク間の関係がWBSの形式を示すよう各タスクを全体タスクテーブル55内に保存させる。また、追加した機能タスクには、機能IDを対応付けておく。
つぎに、ステップS250の処理(チームスケジュール表の作成手順)の詳細な手順について説明する。図17は、チームスケジュール表の詳細な作成手順を示すフローチャートである。
機能登録支援部12は、表示中の機能登録画面に基づいて、「プロジェクトID」、「機能ID」、「機能名」、「チーム名」、「メールアドレス」(チームリーダメールアドレス)、「タスク1」〜「タスクM」のリストを抽出する(ステップS310)。
また、機能登録支援部12は、図3に示した機能登録基本テーブル51から機能IDのリストを抽出する。このとき、機能登録画面から抽出した「プロジェクトID」をキーとして、機能登録基本テーブル51から機能IDを抽出する(ステップS320)。
機能登録支援部12は、機能登録画面から抽出した「機能ID」を用いて、機能登録画面の情報(機能設定情報のタスクなど)と機能登録基本テーブル51を比較する(ステップS330)。
機能登録支援部12は、機能登録画面の情報と機能登録基本テーブル51の差分(機能名、チーム名、メールアドレス、タスクなどの追加)を抽出する(ステップS340)。機能登録支援部12は、機能登録画面から抽出した「機能ID」を順番にループさせて、機能登録画面と機能登録基本テーブル51の比較と差分の抽出を順番に行なっていく。
機能登録画面内の機能設定情報のタスクと機能登録基本テーブル51内のタスクに差分がある場合、機能登録支援部12は、差分の情報を用いてチームスケジュール表を作成(修正)する。具体的には、差分のタスクをチームスケジュール表に追加または削除することによってチームスケジュール表を作成する(ステップS350)。
機能登録支援部12が、チーム毎のチームスケジュール表を作成する際には、チームスケジュール表を作成させるチームリーダ端末装置に、チームスケジュール表の作成画面(チームスケジュール作成画面)を表示させながらチームスケジュール表を作成する。
ここで、チームスケジュール表の作成例について説明する。図18は、チームスケジュール作成画面の一例を示す図である。チームスケジュール作成画面は、作成中のチームスケジュール表を表示させながら、チームスケジュール表を作成するための情報を入力させてチームスケジュール表を作成する画面である。図18では、チームスケジュール作成画面の一例として、機能登録支援部12がモジュール開発チーム1のチームリーダ端末装置T1に表示させるチームスケジュール作成画面を示している。
ここでのモジュール開発チーム1は、図16に示したように、「機能1」と「機能2」が指定されているものとする。また、「機能1」の「タスク1」〜「タスク3」に「S/W設計」、「コーディング」、「試験」が設定され、「機能2」の「タスク1」に「試験」が設定されている。この場合において、機能登録支援部12は、モジュール開発チーム1のスケジュール表として、「機能1」と「機能2」を1階層目とし、各機能に設定したタスクが2階層目となるようWBS形式のチームスケジュール表を作成する。チームスケジュール表内に設定される各予定日(「開始予定日」、「完了予定日」)は、全体スケジュール表に設定されている各予定日が引き継いでもよいし、チームリーダによって新たに設定してもよい。
機能登録支援部12は、作成したチームスケジュール表をチームスケジュールDB33に保存する(ステップS360)。このとき、チームスケジュール表と、タスクの入力処理を行っていたチームリーダ端末装置とを対応付けしてチームスケジュールDB33に保存する。例えば、チームスケジュール表にチームリーダ端末装置を識別する情報を含めておく。また、機能登録支援部12は、チームスケジュールDB33に登録したタスクに対応する機能タスクを全体スケジュール表に追加する(ステップS370)。
図19は、全体スケジュール表に追加された機能タスクを説明するための図であり、全体スケジュール表のタスク編集画面を示している。ここでは、図16に示したように、「機能1」、「機能3」の「タスク1」〜「タスク3」に「S/W設計」、「コーディング」、「試験」を設定(追加)し、「機能2」、「機能4」、「機能5」の「タスク1」に「試験」を設定(追加)した場合を示している。
これにより、全体スケジュール表の「S/W設計」タスクの下に「機能1」、「機能3」の機能タスクが追加され、「コーディング」タスクの下に「機能1」、「機能3」の機能タスクが追加される。また、「試験」タスクの下に「機能1」〜「機能5」の機能タスクが追加される。
機能タスクの追加された全体スケジュール表(機能タスクが追加されたもの)は、全体スケジュールDB32に保存する(ステップS380)。機能タスクが追加された全体スケジュール表は、以後、プロジェクトリーダ端末装置21からの要求に応じて、全体スケジュール表のタスク編集画面としてプロジェクトリーダ端末装置21に提供されることとなる。
さらに、機能登録支援部12は、全体スケジュールDB32に登録した機能タスクやチームスケジュールDB33に登録したチームスケジュール表から所定の機能登録情報(機能ID、機能名、チーム名、チームリーダメールアドレスなど)を抽出して機能登録情報DB31に保存する(ステップS390)。
つぎに、ステップS30の処理である、進捗情報入力部13によるチーム毎の進捗情報の入力手順について説明する。図20は、進捗情報の入力手順を示すフローチャートである。ここでは、進捗情報入力部13への進捗情報の入力手順の一例として、モジュール開発チーム3のチームリーダ端末装置T3から進捗情報入力部13に進捗情報を入力する場合の手順について説明する。
チームリーダによって、チームリーダ端末装置T3に進捗情報の入力を開始する指示情報が入力されると、進捗情報入力部13は、チームリーダ端末装置T3の情報表示手段にタスク編集画面を表示させる(ステップS410)。ここでのタスク編集画面は、例えば図21に示す画面であり、チームリーダなどが進捗情報(追加の必要となったタスク、削除するタスク、タスクの達成率など)を入力(登録)するための画面である。タスク編集画面が表示されると、チームリーダはタスクの追加や削除を検討するとともに、進捗情報入力部13は、待機状態(情報の入力待ち)となる(ステップS420)。
進捗情報入力部13は、タスクの追加や削除が指示されたか否かを判断する(ステップS430)。タスクの追加や削除が必要な場合には(ステップS430、Yes)、タスク編集画面にて追加や削除を行われる。具体的には、チームリーダ端末装置T3のタスク編集画面において、タスクの追加指示(「追加」ボタンのクリックなど)やタスクの削除指示(「削除」ボタンのクリックなど)が入力されると、この指示はプロジェクト管理装置10の進捗情報入力部13に送られる。
進捗情報入力部13は、タスクの追加指示やタスクの削除指示に基づいて、チームリーダ端末装置T3に対応するチームスケジュール表に、タスクの追加処理やタスクの削除処理を行う(ステップS440)。このとき、機能登録支援部12は、タスクの削除処理を行なったタスクに対して機能登録基本テーブル51の「削除フラグ」を「1」に設定する。
図21に示したタスク処理画面では、「機能4」の「試験」タスクの下に、「試験環境構築」、「テストケース作成」、「単体試験」などのタスクが追加されている場合を示している。
この後、進捗情報入力部13は、再び待機状態となる。タスクの追加や削除が不要な場合(ステップS430、No)、進捗情報入力部13は、タスクの追加処理やタスクの削除処理を行うことなく待機状態となる。
チームリーダによって、チームリーダ端末装置T3にタスクの達成率が入力されると、この達成率は進捗情報入力部13に送られる。進捗情報入力部13は、チームリーダ端末装置T3からの達成率を、チームリーダ端末装置T3に対応するチームスケジュール表に入力する(ステップS450)。そして、進捗情報入力部13は、チームリーダ端末装置T3の情報表示手段にタスク編集後のタスク編集画面を表示させる。
この後、タスク編集画面において、編集後のタスク編集画面の情報を保存させる指示情報が入力(例えば「保存」ボタンのクリック)されると(ステップS460)、この指示情報も進捗情報入力部13に送られる。
進捗情報入力部13は、編集後のタスク編集画面の情報を保存させる指示情報を受信すると、チームスケジュールDB33にチームスケジュール表(編集後のタスク編集画面)を保存させる。
タスク編集画面において、進捗情報の入力を完了させる指示情報が入力(例えば「終了」ボタンのクリック)されると(ステップS470、Yes)、この指示情報も進捗情報入力部13に送られる。
進捗情報入力部13は、進捗情報の入力を完了させる指示情報を受信すると、進捗情報の入力を完了し、チームリーダ端末装置T3の情報表示手段にタスク編集画面を閉じさせる。タスク編集画面において、進捗情報の入力を完了させる指示情報が入力されるまで、ステップS420〜S470の処理が繰り返される。
なお、ここでは進捗情報として追加の必要となったタスク、削除するタスク、タスクの達成率などをチームスケジュール表に入力する場合について説明したが、進捗情報として開始実績日や完了実績日チームスケジュール表にを入力してもよい。
つぎに、ステップS40の処理である、進捗情報反映部14によるチーム毎の進捗情報の全体スケジュール表への反映手順(進捗情報の更新処理)について説明する。図22は、進捗情報の全体スケジュール表への反映処理手順を示すフローチャートである。
プロジェクトリーダによって、プロジェクトリーダ端末装置21に進捗情報の更新を開始する指示情報が入力されると、進捗情報反映部14は、プロジェクトリーダ端末装置21の情報表示手段に全体スケジュール表のタスク編集画面(図19に示したタスク編集画面)(全体スケジュール表A)を表示させる(ステップS510)。
プロジェクトリーダによって、プロジェクトリーダ端末装置21に進捗情報の反映指示が入力(「進捗取込」ボタンのクリックなど)されると、この指示はプロジェクト管理装置10の進捗情報反映部14に送られる。進捗情報反映部14は、チームスケジュール表から進捗情報(達成率、開始実績日、完了実績日など)を取得し、チームスケジュール表に対応する全体スケジュール表へ進捗情報を反映する(ステップS520)。
図23は、チームスケジュール表の全体スケジュール表への反映を説明するための図であり、チームスケジュール表の進捗情報(追加や修正の行なわれた情報)が全体スケジュール表へ反映される様子を概念的に示している。
ここでは、チームスケジュール表の全体スケジュール表への反映処理の一例として、モジュール開発チーム3のチームリーダ端末装置T3に対応するチームスケジュール表の進捗情報を全体スケジュール表へ反映する場合について説明する。
図23では、モジュール開発チーム3のチームスケジュール表から「機能4」の「試験」タスクに対応する進捗情報を取得し、全体スケジュール表に進捗情報を反映している。具体的には、進捗情報反映部14がチームスケジュール表の「機能4」の「試験」タスクの「開始実績日」(07/01/01)と「達成率」(50%)を取得する。そして、全体スケジュール表の「試験」タスクの「機能4」の機能タスクにおける「開始実績日」と「達成率」に進捗情報を反映している。
チームスケジュール表の進捗情報を全体スケジュール表へ反映すると、進捗情報反映部14は、プロジェクトリーダ端末装置21の情報表示手段に、進捗情報を反映させた後の全体スケジュール表(タスク編集画面)を表示させる。
この後、全体スケジュール表のタスク編集画面において、進捗情報の反映を保存させる指示情報が入力(例えば「保存」ボタンのクリック)されると、この指示情報も進捗情報反映部14に送られる。進捗情報反映部14は、進捗情報の反映を保存させる指示情報を受信すると、全体スケジュールDB32に進捗情報を反映させた後の全体スケジュール表を保存させる(ステップS530)。
ここで、進捗情報反映部14による進捗情報の全体スケジュール表への反映手順を詳細に説明する。図24は、進捗情報反映部の動作手順を示したフローチャートであり、進捗情報の全体スケジュール表への反映処理手順を詳細に示している。
進捗情報反映部14は、プロジェクトリーダ端末装置21の情報表示手段に全体スケジュール表のタスク編集画面を表示させると、表示させているタスク編集画面に関する情報としてタスク編集画面の全体スケジュール表に対応するプロジェクトIDを、全体スケジュールDB32内の全体タスクテーブル55から抽出(取得)する(ステップS610)。
進捗情報反映部14は、プロジェクトIDをキーとして、機能登録基本テーブル51から機能IDのリストを抽出する(ステップS620)。進捗情報反映部14は、抽出した機能ID(リスト)を順番にループさせて、以下の処理(後述のステップS640〜S680)の処理を行っていく(ステップS630)。まず、進捗情報反映部14は、プロジェクトIDと機能ID(1つ目)をキーとして、機能登録タスクテーブル52から全体タスクIDのリストを抽出する(ステップS640)。
進捗情報反映部14は、抽出した全体タスクID(リスト)を順番にループさせて、以下の処理(後述のステップS660〜S680)の処理を行っていく(ステップS650)。進捗情報反映部14は、まずチームタスクテーブル56から進捗情報の更新対象となるタスク(最上位タスク)を検索して抽出する。このとき、進捗情報反映部14は、チームタスクテーブル56内で以下の条件を満たすタスクを検索して抽出する。すなわち、抽出した全体タスクIDに一致する全体タスクIDを有したタスクで、かつ「親チームタスク」が「0000」を示すタスクで、かつ機能登録タスクテーブル52から抽出した機能IDに一致する機能IDを有したタスクを、チームタスクテーブル56から検索して抽出する(ステップS660)。
進捗情報反映部14は、抽出した最上位タスクの「開始実績日」、「完了実績日」、「達成率」を進捗情報としてチームタスクテーブル56から抽出する。さらに、抽出した最上位タスクの下位にあるタスク(子供タスクなど)で、全体タスクIDが抽出した全体タスクIDと一致するタスクの「開始実績日」、「完了実績日」、「達成率」を進捗情報としてチームタスクテーブル56から抽出する(ステップS670)。
進捗情報反映部14は、抽出した「開始実績日」、「完了実績日」、「達成率」を進捗情報として全体タスクテーブル55に登録(更新)する。このとき、進捗情報反映部14は、抽出しておいたプロジェクトID、全体タスクID、機能IDをキーとして、全体タスクテーブル55から「開始実績日」、「完了実績日」、「達成率」の登録位置を検出し、新たな「開始実績日」、「完了実績日」、「達成率」(チームタスクテーブル56から抽出した進捗情報)を所定の登録位置に登録する(ステップS680)。
進捗情報反映部14は、全ての全体タスクIDに対して進捗情報の登録を行なったか否かを判断する(ステップS690)。全ての全体タスクIDに対して進捗情報の登録(更新)を行なっていない場合(ステップS690、No)、進捗情報反映部14は、抽出した全体タスクID(リスト)を順番にループさせて、進捗情報の登録を行なっていく(ステップS650〜S690)。
一方、全ての全体タスクIDに対して進捗情報の登録を行なうと(ステップS690、Yes)、全ての機能IDに対して機能登録タスクテーブル52から全体タスクIDを抽出して進捗情報の登録を行なったか否かを判断する(ステップS695)。
全ての機能IDに対して機能登録タスクテーブル52から全体タスクIDを抽出していない場合(ステップS695、No)、進捗情報反映部14は、抽出した機能ID(リスト)を順番にループさせて、機能登録タスクテーブル52から全体タスクIDを抽出していく。そして、抽出した全体タスクIDに対して進捗情報の登録を行なっていく(ステップS630〜S690)。
全ての機能IDに対して機能登録タスクテーブル52から全体タスクIDを抽出し、抽出した全体タスクIDの進捗情報の登録を全て完了すると(ステップS695、Yes)、進捗情報反映部14は進捗情報の更新処理を終了する。
つぎに、ステップS50の処理である、期限遅れ抽出部15による期限遅れのフォロー処理(フォローメールの送信)手順について説明する。図25は、期限遅れに対するフォロー処理の処理手順の概要を示すフローチャートである。
期限遅れ抽出部15は、予め設定された所定のタイミング(例えば、午前0時などの深夜)(夜間バッチ処理など)で、全体スケジュールDB32の全体スケジュール表(全体タスクテーブル55)から期限に関する情報(「開始予定日」、「完了予定日」)、(期限情報)を抽出する。このとき、期限遅れ抽出部15は、チームスケジュール表B1〜Bnからタスクの進捗に関する情報(「開始実績日」、「完了実績日」)を抽出する。そして、全体タスクテーブル55の期限情報(「開始予定日」、「完了予定日」)と、チームスケジュール表B1〜Bnの進捗に関する情報(「開始実績日」、「完了実績日」)を比較する(ステップS710)。これにより、期限遅れ抽出部15は、期限の遅れているタスクを抽出する。
期限遅れ抽出部15は、期限の遅れているタスクを担当しているチームリーダ(チームリーダ端末装置)に期限が遅れていることを示すメール(フォローメール)を発信する(ステップS720)。
ここで、期限遅れ抽出部15による期限遅れのフォロー処理の詳細な手順について説明する。図26および図27は、期限遅れに対するフォロー処理の詳細な処理手順を示すフローチャートである。
期限遅れ抽出部15は、チームタスクテーブル56内を順番にループして、以下の処理(後述のステップS810〜S890)の処理を行っていく(ステップS810)。まず、期限遅れ抽出部15は、チームタスクテーブル56を検索して、全体スケジュール表から追加されたタスクを抽出する(ステップS820)。このとき、期限遅れ抽出部15は、機能IDが空ではないタスクであって、かつ全体タスクIDが空ではないタスクであって、かつ親チームタスクIDが「0000」ではないタスクをチームタスクテーブル56から抽出する。
期限遅れ抽出部15は、抽出したタスクに基づいて、このタスクの全体タスクIDとプロジェクトIDをチームタスクテーブル56から抽出する(ステップS830)。このとき、期限遅れ抽出部15は、チームタスクテーブル56内の「機能ID・全体タスクID」から全体タスクIDを抽出する。
期限遅れ抽出部15は、抽出した全体タスクIDとプロジェクトIDをキーとして、全体タスクテーブル55から全体タスクの「完了予定日」を抽出する(ステップS840)。
期限遅れ抽出部15は、抽出したタスクが実行の完了したタスクであるか否かを判断する(ステップS850)。抽出したタスクが実行の完了したタスクである場合(ステップS850、Yes)、次のタスクを抽出するとともに、次のタスクの「完了予定日」を抽出する(ステップS810〜S840)。そして、この次のタスクが実行の完了したタスクであるか否かを判断する(ステップS850)。
抽出したタスクが実行の完了したタスクではない場合(ステップS850、No)、このタスクの「完了予定日」は過ぎているか否か(「完了予定日」の確認処理)を判断する(ステップS860)。
タスクの「完了予定日」が過ぎていない場合(ステップS860、No)、次のタスクを抽出して「完了予定日」を抽出するとともに、次のタスクが実行の完了したタスクであるか否かを判断する(ステップS810〜S850)。そして、タスクが実行の完了したタスクである場合には、タスクの「完了予定日」が過ぎているか否かを判断する(ステップS860)。タスクの「完了予定日」が過ぎている場合(ステップS860、Yes)、チームタスクテーブル56の期限遅れフラグを「1」にセットする(ステップS870)。
この後、期限遅れ抽出部15は、抽出した全てのタスクに対して「完了予定日」の確認処理を行なったか否かを判断する(ステップS880)。抽出した全てのタスクに対して「完了予定日」の確認処理を行なっていない場合(ステップS880、No)、抽出した次のタスクに対して「完了予定日」の確認処理を行なう(ステップS810〜S880)。この後、抽出した全てのタスクに対して「完了予定日」の確認処理を行なうまで(ステップS880、Yes)、抽出したタスクに対する「完了予定日」の確認処理を繰り返す。
抽出したタスクに対する「完了予定日」の確認処理を全て終えると、期限遅れ抽出部15は、チームタスクテーブル56内を順番にループして、以下の処理(後述のステップS910〜S960)の処理を行っていく(ステップS910)。
まず、期限遅れ抽出部15は、チームタスクテーブル56を検索して、タスクに期限遅れフラグが「1」に設定されているか否か(期限遅れフラグの確認処理)を判断する(ステップS920)。
期限遅れフラグが「1」に設定されていない場合(ステップS920、No)、次のタスクに対して期限遅れフラグが「1」に設定されているか否かを判断する。期限遅れフラグが「1」に設定されている場合(ステップS920、Yes)、期限遅れ抽出部15は、このタスクのプロジェクトIDとチームIDをチームタスクテーブル56から抽出する(ステップS930)。さらに、期限遅れ抽出部15は、このプロジェクトIDとチームIDをキーとして、機能登録チームテーブル53からチームリーダメールアドレスを抽出する(ステップS940)。そして、このチームリーダメールアドレスにタスクの期限遅れを示すフォローメールを送信する(ステップS950)。このとき、フォローメールには、期限の遅れているタスクを識別できる情報(チームタスクIDなど)を付加してフォローメールを送信する。
この後、期限遅れ抽出部15は、全てのタスクに対して期限遅れフラグの確認処理を行なったか否かを判断する(ステップS960)。全てのタスクに対して期限遅れフラグの確認処理を行なっていない場合(ステップS960、No)、次のタスクに対して期限遅れフラグの確認処理を行なう(ステップS910〜S950)。この後、全てのタスクに対して期限遅れフラグの確認処理を行なうまで(ステップS960、Yes)、タスクに対する期限遅れフラグの確認処理を繰り返す。
なお、1人のチームリーダに対して複数の期限遅れのタスクが発生した場合は、このチームリーダにフォローメールをまとめて送信してもよい。このとき、フォローメールには、期限の遅れている複数のタスクをそれぞれ識別できる情報(複数のチームタスクIDなど)を付加してフォローメールを送信する。
なお、本実施の形態では、プロジェクト管理装置が製品開発プロジェクトを管理する場合について説明したが、プロジェクト管理装置によるプロジェクト管理は、製品開発プロジェクトに限られず、他のプロジェクトを管理してもよい。また、各DB(機能登録情報DB31、全体スケジュールDB32、チームスケジュールDB33)はプロジェクト管理装置が備える構成としてもよい。
また、本実施の形態では、全体スケジュール表Aとチームスケジュール表B1〜Bnを用いて期限の遅れているタスクを確認することとしたが、チームスケジュール表B1〜Bnに設定されている各予定日(「開始予定日」、「完了予定日」)が全体スケジュール表に設定されている各予定日を引き継いでいる場合は、チームスケジュール表B1〜Bnのみから期限の遅れているタスクを確認してもよい。
これにより、プロジェクトリーダが最初に立てたおおまなかフェーズ毎の全体スケジュール表Aと、全体スケジュール表Aを元にチームリーダが立てたチームスケジュール表B1〜Bnとを用いてプロジェクトを実行する場合に、フェーズ毎の進捗管理(フェーズや機能または部品での進捗管理)とチーム毎の進捗管理(機能または部品をさらに詳細化した作業の進捗管理)の整合性を取りながらプロジェクトを遂行することが可能となる。
このように実施の形態によれば、進捗情報反映部14が全体タスクIDに基づいて、チームスケジュール表B1〜Bnの進捗情報を全体スケジュール表Aに反映させているので、チームスケジュール表B1〜Bnと全体スケジュール表Aとの間で整合性を取りながら容易にプロジェクトの進捗管理を行うことが可能となる。
また、進捗情報反映部14がチームスケジュール表B1〜Bnの進捗情報を全体スケジュール表Aに反映させているので、全体スケジュール表Aとチームスケジュール表B1〜Bnへの進捗情報の二重の手入力を行なう必要がなくなり、プロジェクトの進捗管理に対する負荷を低減することが可能となる。
また、機能登録支援部12が全体スケジュール表Aに基づいて、チーム毎のチームスケジュール表B1〜Bnを作成するので、各チームリーダ端末装置T1〜Tnでは全体スケジュール表Aをベースにした計画を容易に立てることが可能となる。
また、期限遅れ抽出部15が全体スケジュール表Aから抽出した期限情報とチームスケジュール表B1〜Bnの進捗に関する情報とを比較し、期限が過ぎたタスクに対応するチームリーダ端末装置にアラームメールを送信するので、各チームリーダ端末装置に対して容易にタスクの期限遅れを通知することが可能となる。