JP2011095918A - プロジェクト計画装置 - Google Patents

プロジェクト計画装置 Download PDF

Info

Publication number
JP2011095918A
JP2011095918A JP2009248053A JP2009248053A JP2011095918A JP 2011095918 A JP2011095918 A JP 2011095918A JP 2009248053 A JP2009248053 A JP 2009248053A JP 2009248053 A JP2009248053 A JP 2009248053A JP 2011095918 A JP2011095918 A JP 2011095918A
Authority
JP
Japan
Prior art keywords
task
tasks
project
relationship
critical chain
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2009248053A
Other languages
English (en)
Other versions
JP5443945B2 (ja
JP2011095918A5 (ja
Inventor
Shinichi Morita
慎一 森田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BEING KK
Being Co Ltd
Original Assignee
BEING KK
Being Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by BEING KK, Being Co Ltd filed Critical BEING KK
Priority to JP2009248053A priority Critical patent/JP5443945B2/ja
Publication of JP2011095918A publication Critical patent/JP2011095918A/ja
Publication of JP2011095918A5 publication Critical patent/JP2011095918A5/ja
Application granted granted Critical
Publication of JP5443945B2 publication Critical patent/JP5443945B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

【課題】階層関係を有するタスクを含むプロジェクトに対しても、C.C.を適切に決定可能なプロジェクト計画装置の提供。
【解決手段】各タスクの所要時間及びリソース、タスク同士の順序関係、及び、タスク同士の階層関係を示す情報の入力を受ける情報取得手段と、末端タスク間でリソースが競合しないように各タスクの順序を決定し、第1の工程図を作成する工程図作成手段と、親タスクの開始点と終了点とを仮想ノードとし、末端タスク及び仮想ノードで構成される仮想的な工程図を対象として、クリティカルチェーンを決定し、第1の工程図または第1の工程図から作成した第2の工程図に、クリティカルチェーン上の末端タスクを示す要素を、クリティカルチェーン上にない末端タスクを示す要素とは区別可能に表示するクリティカルチェーン決定手段と、を備えるプロジェクト計画装置。
【選択図】 図8

Description

本発明は、コンピュータを用いて複数のタスクからなるプロジェクトを計画するプロジェクト計画装置に関し、特に、制約条件の理論(Theory of Constraint;TOC)に従ってプロジェクトを計画する際の合流バッファの挿入を自動的に行えるプロジェクト計画装置に関する。
ゴールドラット博士によって提唱された制約条件の理論(以下、「TOC」とも表記する。)に従って、複数のタスク(作業)からなるプロジェクトを計画するシステムとして、下記特許文献1に記載された医療マネジメント支援システムがある。このシステムでは、サーバが、情報処理端末機からのアクセスに応じて、患者に対する一連の臨床行為をタスクとして並べ、各タスクの完了基準、所要時間、及び、リソースを設定して、クリティカルチェーン(以下、「C.C.」とも表記する。)を決定する。なお、C.C.とは、「それが遅れると全体が遅れる」というタスクをタスクの依存関係(順序関係)によって繋げたチェーンであり、TOCでいう「制約条件」に相当するものである。そして、所要時間内でタスクが完了しない場合の猶予時間として、プロジェクトのC.C.上のタスクの遅延からプロジェクトを保護するためのプロジェクトバッファと、C.C.に合流する作業又は作業群の遅延からプロジェクトを保護するためのフィーディングバッファ(合流バッファ)とを挿入して、患者毎のプロジェクトネットワーク図を作成し、情報処理端末機の表示部に表示させている。また、タスクが複数のサブタスク(子タスク)を含む場合、サブタスクの設定を可能としている(特許文献1の段落0126及び図32参照)。
特開2007−140607号公報
ところが、タスクに親子関係(階層関係)がある場合には、別々の親タスクの配下にある子タスク同士が同じリソースを必要とする場合や、ある親タスクの子タスクの成果物を他の親タスクの子タスクが利用する場合が生じ、子タスク同士で階層的には無関係であるにも係わらず依存関係が発生することがある。このように、タスクが階層関係を有する場合には、階層を跨った依存関係が発生することがあり、依存関係が複雑であるため、上記医療マネジメント支援システムを含めて従来のプロジェクト計画システムでは、適切にC.C.を決定することができないという問題があった。
本発明は、上述した問題を解決するものであり、階層関係を有するタスクを含むプロジェクトに対しても、適切にC.C.を決定することが可能なプロジェクト計画装置を提供することを目的とする。
本発明のプロジェクト計画装置は、入力部と表示部とを備え、制約条件の理論に従ってプロジェクトを計画するためのものであって、前記入力部を用いたユーザの操作に応じて、プロジェクト遂行に必要な各タスクの所要時間を示す情報、及び、必要なリソースを示す情報の入力を受けるとともに、タスク同士の順序関係を示す情報、及び、タスク同士の階層関係を示す情報の入力を受ける情報取得手段と、前記所要時間を示す情報と前記リソースを示す情報と前記順序関係を示す情報と前記階層関係を示す情報とに基づいて、前記順序関係と前記階層関係とに従うように、かつ、前記階層関係における下位のタスクを持たないタスク(以下、「末端タスク」という。)間で、リソースが競合しないように、各タスクの順序を決定し、当該順序に従って各タスクを示す要素を配置した第1の工程図を作成し、前記表示部に表示する工程図作成手段と、前記階層関係における下位のタスクを持つタスク(以下、「親タスク」という。)の開始点と終了点とを仮想的なノード(以下、「仮想ノード」という。)とし、前記順序関係に基づいて、末端タスク及び仮想ノードで構成される仮想的な工程図を対象として、前記プロジェクトにおけるクリティカルチェーン上にある末端タスク及び仮想ノードを決定し、前記第1の工程図または前記第1の工程図から作成した第2の工程図の少なくとも一方に、前記クリティカルチェーン上の末端タスクを示す要素を、前記クリティカルチェーン上にない末端タスクを示す要素とは区別可能に表示するクリティカルチェーン決定手段と、を備えることを特徴とする。
ここで、前記クリティカルチェーン上の末端タスク、及び、開始点の仮想ノードがクリティカルチェーン上にある親タスクを基点となるタスクとして、前記基点となるタスクに合流する末端タスクであって前記クリティカルチェーン上にない末端タスクを探索し、見つかった末端タスクの直後に合流バッファを設定し、当該合流バッファを示す要素を前記第1の工程図または前記第2の工程図の少なくとも一方に表示する合流バッファ設定手段を備えることが好ましい。
また、前記クリティカルチェーン上の末端タスクまたは前記クリティカルチェーン上の仮想ノードに合流する、末端タスクまたは仮想ノードであって前記クリティカルチェーン上にないものを探索し、見つかった末端タスク、及び、見つかった仮想ノードに対応する親タスクの開始点または終了点の直後に、合流バッファを設定し、当該合流バッファを示す要素を前記第1の工程図または前記第2の工程図の少なくとも一方に表示する合流バッファ設定手段を備えることとしてもよい。
本発明のプロジェクト計画プログラムは、制約条件の理論に従ってプロジェクトを計画するためのものであって、入力部と表示部とを備えたコンピュータを、前記入力部を用いたユーザの操作に応じて、プロジェクト遂行に必要な各タスクの所要時間を示す情報、及び、必要なリソースを示す情報の入力を受けるとともに、タスク同士の順序関係を示す情報、及び、タスク同士の階層関係を示す情報の入力を受ける情報取得手段、前記所要時間を示す情報と前記リソースを示す情報と前記順序関係を示す情報と前記階層関係を示す情報とに基づいて、前記順序関係と前記階層関係とに従うように、かつ、前記階層関係における下位のタスクを持たないタスク(以下、「末端タスク」という。)間で、リソースが競合しないように、各タスクの順序を決定し、当該順序に従って各タスクを示す要素を配置した第1の工程図を作成し、前記表示部に表示する工程図作成手段、及び、前記階層関係における下位のタスクを持つタスク(以下、「親タスク」という。)の開始点と終了点とを仮想的なノード(以下、「仮想ノード」という。)とし、前記順序関係に基づいて、末端タスク及び仮想ノードで構成される仮想的な工程図を対象として、前記プロジェクトにおけるクリティカルチェーン上にある末端タスク及び仮想ノードを決定し、前記第1の工程図または前記第1の工程図から作成した第2の工程図の少なくとも一方に、前記クリティカルチェーン上の末端タスクを示す要素を、前記クリティカルチェーン上にない末端タスクを示す要素とは区別可能に表示するクリティカルチェーン決定手段、として機能させることを特徴とする。
ここで、前記コンピュータを、前記クリティカルチェーン上の末端タスク、及び、開始点の仮想ノードがクリティカルチェーン上にある親タスクを基点となるタスクとして、前記基点となるタスクに合流する末端タスクであって前記クリティカルチェーン上にない末端タスクを探索し、見つかった末端タスクの直後に合流バッファを設定し、当該合流バッファを示す要素を前記第1の工程図または前記第2の工程図の少なくとも一方に表示する合流バッファ設定手段として機能させることが好ましい。
また、前記コンピュータを、前記クリティカルチェーン上の末端タスクまたは前記クリティカルチェーン上の仮想ノードに合流する、末端タスクまたは仮想ノードであって前記クリティカルチェーン上にないものを探索し、見つかった末端タスク、及び、見つかった仮想ノードに対応する親タスクの開始点または終了点の直後に、合流バッファを設定し、当該合流バッファを示す要素を前記第1の工程図または前記第2の工程図の少なくとも一方に表示する合流バッファ設定手段
として機能させることとしてもよい。
本発明によれば、階層関係を有するタスクを含むプロジェクトに対しても、適切にC.C.を決定することができる。
本発明の実施形態に係るプロジェクト計画装置のブロック構成図である。 同プロジェクト計画装置が行う処理のフローチャートである。 同フローチャートの続きである。 ユーザが入力した状態のネットワーク図作成画面の例である。 プロジェクトネットワーク図が表示されたネットワーク図作成画面の例である。 親タスクと子タスク及び先行タスクとの依存関係を説明するための図である。 図5の依存関係の模式図である。 図4のプロジェクトネットワーク図においてC.C.上のタスクを区別可能に表示したものである。 図7のプロジェクトネットワーク図から作成した工程表の図である。 図8の工程表において合流バッファを挿入したものである。 図7において合流バッファが必要となる部分を模式図で表したものである。 図7において合流バッファが必要となる他の部分を模式図で表したものである。 図7において合流バッファが必要となるまた他の部分を模式図で表したものである。 図8の工程表において合流バッファを、C.C.に合流する親タスクの開始点・終了点についてはその直後に挿入した図である。 依存関係が明示された階層構造を持つタスクの例である。 依存関係が明示された階層構造を持つタスクの他の例である。 依存関係が明示された階層構造を持つタスクのまた他の例である。 再帰的処理により合流バッファを挿入すべき末端タスクを探索する処理のフローチャートである。 図17−1の処理における上位方向探索処理のフローチャートである。 図17−2の処理における下位方向探索処理のフローチャートである。 図7のプロジェクトネットワーク図において依存関係を明示したものである。 ループ処理により合流バッファを挿入すべき末端タスクを探索する処理のフローチャートである。 図19−1の処理における下位方向探索処理のフローチャートである。 末端タスクを説明するための図である。
以下、本発明の一実施形態を図面に基づいて説明する。
図1に示すように、実施形態のプロジェクト計画装置3は、TOCに基づいて、商品開発、建設工事、ソフトウェア開発等、種々のプロジェクトを計画するための装置であり、サーバ装置(以下、「サーバ」と略す。)1と、サーバ1に通信回線(実施形態ではイントラネット)を介して接続されることによりサーバ1と交信可能な複数のクライアント装置(以下、「クライアント」と略す。)2とから構成されている。
サーバ1は、1又は複数のコンピュータからなり、入力部11、演算・制御部12、記憶部13、通信部14、及び、表示部15を備えている。サーバ1には、OS(オペレーティング・システム)及びそのOS上で動作するWebサーバプログラムやプロジェクト管理プログラム等の各種プログラムがインストールされている。入力部11は、キーボードやマウス等から構成されて、ユーザの操作に応じて各種情報や各種指令等を演算・制御部12に入力する。記憶部13は、半導体メモリ、ハードディスク装置、コンパクト・ディスク装置等から構成され、各プロジェクトのプロジェクトデータを記憶する。演算・制御部12は、CPU、CPUのワークエリアとなるRAM、固定データを格納したROM等から構成されている。通信部14は、通信回線を介してサーバ1とクライアント2を含む他のコンピュータとを接続するときのインタフェースとなる部分である。表示部15は、液晶ディスプレイ等から構成され、演算・制御部12からの表示命令に応じて各種の画面を表示する。
プロジェクト管理プログラムは、ユーザが入力したプロジェクト名等のデータに基づいて、プロジェクトデータを作成して記憶部13に格納し、また、クライアント2から受信したプロジェクトの詳細データを、当該プロジェクトのプロジェクトデータに追加して記憶部13に格納するように、サーバ装置1を機能させるプログラムである。
各クライアント2は、パーソナル・コンピュータであり、図1に示すように、入力部21、演算・制御部22、記憶部23、通信部24、及び、表示部25を備えている。各クライアント2には、OSとWebブラウザやプロジェクト計画プログラム等そのOS上で動作するプログラムとがインストールされている。入力部21は、マウス等のポインティング・デバイスやキーボード等から構成されて、ユーザの操作に応じて各種データや各種指令等を演算・制御部22に入力するものである。記憶部23は、半導体メモリ、ハードディスク装置、コンパクト・ディスク装置等から構成されている。演算・制御部22は、CPU、CPUのワークエリアとなるRAM、固定データを格納したROM等から構成されている。通信部24は、通信回線を介してクライアント2とサーバ1等他のコンピュータとを接続するときのインタフェースとなる部分である。表示部25は、液晶ディスプレイ等から構成され、演算・制御部22からの表示命令に応じて各種の画面を表示する。
プロジェクト計画プログラムは、クライアント2を、上述した情報取得手段、工程図作成手段、クリティカルチェーン決定手段、及び、合流バッファ設定手段として機能させるためのものであり、このプロジェクト計画プログラムに従って動作することにより、演算・制御部22は、入力部21、記憶部23、通信部24及び表示部25と協働して、上述した情報取得手段、工程図作成手段、クリティカルチェーン決定手段、及び、合流バッファ設定手段として機能する。
次に、プロジェクト計画装置3の動作について、図2―1、2−2のフローチャートを用いて説明する。図2−1、2−2では、ユーザの行う操作を二点鎖線で示している。プロジェクト管理者であるユーザが、サーバ1においてプロジェクト管理プログラムを起動し、表示されたプロジェクト一覧画面(図示せず。)において、所定のボタンのクリック等、所定の操作を行うと、サーバ1は、プロジェクト名やプロジェクトリーダー名等を入力可能な新規プロジェクト作成画面(図示せず。)を表示部15に表示する(図2−1のステップS101)。ユーザが新規プロジェクト作成画面において、プロジェクト名と、プロジェクトの開始時期及び終了時期とを入力し、所定のボタンのクリック等、所定の登録操作を行うと(S102)、サーバ1は、入力されたデータを含むプロジェクトデータを作成し、記憶部13に格納する(S103)。
次に、プロジェクト計画者であるユーザは、クライアント2においてプロジェクト計画プログラムを起動する。すると、クライアント2は、サーバ1からプロジェクトデータを受信して、プロジェクトデータ内のプロジェクト名を選択可能に表示するプロジェクト選択画面(図示せず。)を表示部25に表示する(S104、S105)。ユーザがプロジェクト選択画面において、プロジェクト名の選択等、所定の選択操作を行うと(S106)、クライアント2は、選択されたプロジェクト名を持つプロジェクトについて、プロジェクトネットワーク図を作成するためのネットワーク図作成画面(図3参照)を表示部25に表示する(S107)。
〈情報取得ステップ〉図3に示すように、ネットワーク図作成画面は、タスクボックスT1、T2、…(区別しないときは「タスクボックスT」という。)等を配置することにより、プロジェクトネットワーク図を作成可能に構成されている。プロジェクトネットワークとは、プロジェクト内のタスク同士の順序関係及び階層関係を示すネットワークであり、タスクボックスTは、プロジェクトネットワークを表したプロジェクトネットワーク図においてタスク(作業)を示す要素に相当する。
図3は、既にユーザが必要な情報を入力した状態のネットワーク図作成画面であるが、最初に表示されたネットワーク図作成画面は、プロジェクト名が表示されたゴールボックスGが配置されるとともに、その前(左側)に、情報が未入力のタスクボックスTが、1つ配置された状態である。ゴールボックスGは、プロジェクトのゴール(すなわち、プロジェクトの完了期限(納期、締切り))を示すものである。
ユーザは、かかるネットワーク図作成画面において、プロジェクトの遂行に必要な各タスクについて、画面上のタスクボタン(図示せず)をクリックしてから配置位置をクリックする等、入力部21を用いて所定の操作を行うことにより、タスクボックスTを配置し、ゴールボックスGまたは他のタスクボックスTと矢印Yで結ぶ。なお、図面では矢印Y1、Y2、…と符号「Y」の後に数字を付して区別しているが、これらを区別しないときは、「矢印Y」という。ユーザは、ゴールボックスGから遡るようにタスクボックスTを配置して矢印Yで結んで行く。タスクボックスT同士を結ぶ矢印Yは、その両端に連結されているタスク同士の順序関係を示す情報に相当し、矢印の先端側に連結されているタスク(矢印Y3、Y6、Y7であればタスクT8)の方が、矢印の基端側に連結されているタスク(矢印Y3、Y6、Y7であれば、それぞれ、タスクT3、T6、T7)よりも後に実行されるものであることを示している。
図3の例で説明すれば、タスクボックスT8は最初から表示されているので、矢印Y8でゴールボックスGと結び、そのタスクボックスT8に、プロジェクトの完了直前に必要なタスク「統合テストする」についての情報を入力する。各タスクボックスTは、そのタスクボックスTで示されるタスクの内容(名称でもよい。)、ID(識別情報)、実行に必要な所要時間、及び、実行に必要なリソースの情報(リソース名及び数量)を入力可能に構成されており、タスクボックスT8では、タスクの内容「統合テストする」、所要時間として3日を示す「3d」、リソースを示す情報としてリソース名「リソースB」とその数量「1」が入力されている。なお、リソースには、人、機械、資材等があり、したがって、リソース名としては、職種名、資格名、個人名、装置名、資材名等がある。各タスクボックスTは、必要に応じてリソース欄Rが複数行設けられるように構成されている。また、所要時間は、そのタスクを完了できる可能性が50%程度の時間とする。また、IDは自動的に決定されるように構成してもよい。
次に、ユーザは、タスクボックスT8で示されているタスクの直前に完了しておくことが必要なタスクのタスクボックスTを、タスクボックスT8の前に配置し、タスクボックスT8と矢印で結ぶとともに、それらのタスクボックスTに情報を入力する。図3の例では、タスクボックスT3、T6、T7を配置し、それぞれ、矢印Y3、Y6、Y7でタスクボックスT8と結んでいる。
一方、タスクが複数のタスクからなる場合には、前者のタスクを記載せずに後者の複数のタスクを同一階層として記載することもできるが、後者の複数のタスクの各々を子タスク、前者のタスクを親タスクとして、階層関係(親子関係)があるタスクとして記載することもできる。階層関係があるタスクとは、他のタスクを含むタスク、及び、他のタスクに含まれるタスクをいい、前者を親タスク、後者を子タスクという。親タスクとは、階層関係における下位のタスクを持つタスクであり、子タスクとは階層関係における上位のタスクを持つタスクである。図3では、例えば、タスクボックスT3、T31、T32で示されるタスクは階層関係を持ち、タスクボックスT3で示されるタスクは親タスク、タスクボックスT31、T32で示されるタスクはそれぞれ子タスクである。具体的には、ユーザは、入力部21を用いて所定の操作を行うことにより、図3のタスクボックスT3のように、その子タスクのタスクボックスT31、T32を、親タスクのタスクボックスT3の下に配置する。子タスクのタスクボックスTは、図3に示すように、図形や線(ここでは、子タスクを囲む四角形、及び、その四角形と親タスクのタスクボックスTとを結ぶ点線)を用いて、親タスクのタスクボックスTと連結されている。この連結のための図形や線が、タスク同士(親タスクと子タスク)の階層関係を示す情報に相当する。なお、タスクボックスT31、T32のように、同一の親タスクに含まれる子タスク同士に順序関係がある場合には、ユーザは、矢印Yでその順序関係を定義する。また、別々の親タスクに含まれる子タスク同士に順序関係がある場合にも、ユーザは、矢印Yでその順序関係を定義する。
以上のようにして、ユーザは、図3に示すようにゴールボックスG及び各タスクボックスTを配置して、タスク同士の順序関係や階層関係を定義するとともに、ゴールボックスG及び各タスクボックスTに必要な情報を入力した後、画面上の所定のボタンのクリック等、所定の確定操作を行う(S108)。
〈工程図作成ステップ〉すると、クライアント2は、入力された各タスクの所要時間を示す情報とリソースを示す情報と順序関係を示す情報と階層関係を示す情報とに基づいて、入力された順序関係を示す情報(矢印Y)で示された順序関係に従うように、かつ、末端タスク間でリソースが競合しないように、タスクの順序を決定する(S109)。末端タスクとは、階層関係における下位のタスクを持たないタスクをいう。例えば、図20の例では、親タスクの下位(配下)に子タスク1〜4が、子タスク3の下位に孫タスク1、2が存在しており、子タスク1、子タスク2、子タスク4、孫タスク1、及び、孫タスク2が末端タスクとなる。以下、階層関係があるタスクを、階層構造を持つタスク、階層関係がないタスクを、階層構造を持たないタスクともいう。クライアント2は、決定した順序に従って各タスクのタスクボックスTを配置したプロジェクトネットワーク図(第1の工程図に相当。)を作成し、図4に示すように、ネットワーク図作成画面に表示する(S110)。
階層を有するタスクの順序関係(依存関係)について説明する。図5に示すように、子タスクを含む親タスク(以下、「グループタスク」ともいう。)がある場合、親タスクとその前後のタスク及び配下の子タスクとの間には、(1)子タスクを実行するためには、親タスクの全ての先行タスクが完了していなければならない、(2)親タスクの後続タスクを実行するためには、全ての子タスクが完了していなければならない、というテクニカルな依存関係がある。なお、ここでは、先行タスクの成果物を使用しないとそのタスクが開始できないような関係にあるとき、先行タスクとそのタスクとはテクニカルな依存関係があるという。すなわち、トポロジー的には、図6に示すように、親タスクの開始点と終了点に、サブネットワークSを挟む仮想的なノード(イベントノード)Eが存在するのと同じ構造になる。
また、全く無関係な階層位置にあり、テクニカルな依存関係がないタスク同士であっても、リソースによって依存関係が発生する場合もある。図3に示す例では、互いに無関係な階層位置にあるタスクボックスT31、T61、T72で示されるタスクが、同じ時期に同じリソースAを必要としている。そこで、クライアント2は、タスクボックスT31、T61、T72の順序を、所定のルールで(ここでは、プロジェクトネットワーク図において上にあるタスクボックスTが左になるように)決定することにより、リソースの競合を解消する。すなわち、互いに無関係な階層位置にあるタスクボックスT31、T61、T72が、同じ時期に同じリソースAを必要とするために、互いに依存する(順序を持つ)関係となる。
また、クライアント2は、タスクボックスT31、T61、T72以外のタスクボックスTの順序は矢印Yにより決定する。したがって、クライアント2は、図4に示すように、タスクボックスT72より前(プロジェクトネットワーク図においては左側)にタスクボックスT61が、タスクボックスT61より前にタスクボックスT31が配置されるように、かつ、矢印Yで示された順序関係が変わらないように、関係するタスクボックスTをずらすことにより、プロジェクトネットワーク図を完成する。なお、リソースの競合による順序関係は、点線矢印で表す。
なお、図3の例では、階層関係が2階層までであったが、親タスクが子タスクを含み、その子タスクがさらに子タスク(すなわち、孫タスク)を含む等、階層関係が3階層以上ある場合にも、クライアント2は、末端タスクを対象として(すなわち、グループタスクを最下層のタスクまで展開して)、リソースが競合しているか否かを判定し、タスクボックスTをずらすことによりその競合を解消して、プロジェクトネットワーク図を完成する。
〈クリティカルチェーン決定ステップ〉ユーザが、プロジェクトネットワーク図が表示されたネットワーク図作成画面において、所定のボタンのクリック等、所定のC.C.決定指示操作を行うと(S111)、クライアント2は、末端タスクを対象として、上記のように決定したタスクの順序に基づいて、C.C.を決定する(S112)。
C.C.(クリティカルチェーン)とは、リソースの競合を考慮して、「それが遅れると全体が遅れる」という末端タスクを繋げたチェーンであり、TOCでいう「制約条件」に相当するものである。すなわち、本実施形態では、C.C.上のタスクは末端タスクである。チェーンとは、タスク同士の依存関係(テクニカルな依存関係及びリソースによる依存関係の両方を含む。)によって順序付けられているタスクの並び(繋がり)であり、その種類として、C.C.、合流チェーンがある。合流チェーンとは、C.C.に合流する末端タスクから遡りつつ、C.C.上にない末端タスクを繋げた(すなわち、C.C.上の末端タスクにぶつかった所で若しくは先行タスクがなくなった所で終了する)チェーンをいう。なお、チェーンは、複数の末端タスクからなるものとは限らず、1つの末端タスクからなるものもある。
クライアント2は、親タスクの開始点と終了点とを仮想的なノードEとしたときに、矢印Yで示される順序関係(テクニカルな依存関係)及びリソースによる依存関係に基づいて、末端タスク及びノードEで構成される仮想的な工程図(例えば図6に示すような工程図)を対象として、ゴールから全てのチェーンをそのチェーンの最初のタスクまで遡ることにより、最も時間が長く掛かるチェーンをC.C.と判定し、C.C.上にある末端タスク及びノードEを決定する。換言すれば、クライアント2は、末端タスクを対象として(すなわち、階層構造を持つタスクについては最下層のタスクまで分解(展開)して)、かつ、ノードEを末端タスクと同列に扱って、ゴールから全てのチェーンをそのチェーンの最初のタスクまで遡り、最も時間が長く掛かるチェーンをC.C.と判定する。なお、最も時間が長く掛かるチェーンが複数ある場合には、所定のルールに従ってC.C.を決定する。ここでは、プロジェクトネットワーク図において上になるチェーンをC.C.とする。
このように、クライアント2は、グループタスクの開始点、終了点に相当するノードEも末端タスクと同列に扱ってC.C.を決定し、内部的には、どのノードEがC.C.上にあるかという情報も持っている。なお、開始点に相当するノードEがC.C.上にあるとき、開始点がC.C.上にあるといい、終了点に相当するノードEがC.C.上にあるとき、終了点がC.C.上にあるという。
そして、クライアント2は、図7に示すように、プロジェクトネットワーク図において、C.C.上の末端タスクのタスクボックスTを、C.C.上にない末端タスクのタスクボックスTとは色を変えることにより、区別可能に表示する(図2−2のステップS113)。図7では、地の部分に網掛けが施されたタスクボックスT1、T31、T61、T72、T73、T8が、C.C.上にあるタスクボックスTである。
なお、親タスクのタスクボックスTは、その開始点あるいは終了点のいずれか一方においてC.C.上にある場合には、C.C.上のタスクボックスTと同様に色を変えて表示される。図7では、タスクボックスT3は開始点が、タスクボックスT7は終了点がC.C.上にあるため、色を変えて表示されている。
次に、ユーザが、プロジェクトネットワーク図が表示されたネットワーク図作成画面において、所定のボタンのクリック等、所定の工程表表示操作を行うと(S114)、クライアント2は、プロジェクトネットワーク図から工程表(第2の工程図に相当。)を作成し、図8に示すように表示部25に表示する(S115、116)。図8の工程表は、ガントチャートと称される種類のものであり、各タスクが所要時間に応じた長さを有するバー(横棒)Bで表示されている。なお、図中は、バーB1、B2、…というように符号「B」に数字を付して区別しているが、区別しないときは「バーB」という。バーB1、B2、…は、それぞれ、タスクボックスT1、T2、…に対応している。また、親タスクは両端部に下向き三角形が付された黒色のバーBで示され、C.C.上のタスクは斜め縞模様のバーBで表示されることにより、C.C.上にないタスクとは区別可能に表示される。バーBは、工程表においてタスクを示す要素である。また、ネットワーク図作成画面において入力されたタスク同士の順序関係は実線矢印で、タスク同士のリソースによる依存関係は点線矢印で示されている。
また、クライアント2は、図8の工程表の「CC上」と表示された欄において、各タスクがC.C.上にあるか否かを、ある場合には「True」、無い場合には「False」として示す。なお、親タスクの場合には、欄の左側にその開始点が、欄の右側にその終了点がC.C.上にあるか否かを示す。
なお、本実施形態では、図4の状態のC.C.決定前のプロジェクトネットワーク図から工程表を作成することも可能であり、その場合には、C.C.が表示されていない(斜め縞模様のバーB、及び、「True」、「False」の表示がない)工程表が作成されて表示される。そして、かかる工程表が表示された画面においてユーザが所定のC.C.決定指示操作を行うと、クライアント2は、プロジェクトネットワーク図においてC.C.を決定するときと同様に、C.C.を決定し、工程表に図8に示すように表示する。
〈合流バッファ設定ステップ〉次に、ユーザが、C.C.付き工程表が表示された画面において、所定のボタンのクリック等、所定のバッファ挿入指示操作を行うと(S117)、クライアント2は、工程表を解析して、バッファ(合流バッファとプロジェクトバッファ)の挿入位置と長さとを決定し(S118)、バッファが挿入された工程表を、図9に示すように表示部25に表示する(S119)。バッファは下辺が上辺より短い台形で表されている。また、図中、プロジェクトバッファには符号P、合流バッファには符号F及び数字を付している。なお、合流バッファF1、F2、…を区別しないときは、「合流バッファF」という。
プロジェクトバッファPは、プロジェクトのC.C.上のタスクの遅延からプロジェクトを保護する(すなわち、C.C.上のタスクが遅れても、プロジェクトが遅れないようにする)ための猶予時間(余裕時間)であり、ゴール直前のタスクとゴールとの間に挿入され、長さはC.C.の長さに応じて、例えば、C.C.の長さの1/2というように決定される。
また、合流バッファFは、C.C.に合流する合流チェーンの遅延からC.C.を保護する(すなわち、C.C.に合流する合流チェーンが遅れても、C.C.が遅れないようにする)ための猶予時間であり、C.C.に合流するタスクであってそれ自身はC.C.上にないものの直後に設けられ、合流バッファFの長さは、その合流バッファFが挿入されるタスクが乗っている合流チェーンの長さに応じて、例えば、その合流チェーンの長さの1/2というように決定される。
ところで、階層構造を有するプロジェクトでは、親タスクの途中から階層的に無関係なタスクにC.C.が移ったり、階層的に無関係なタスクから親タスクの途中にC.C.が入ってきたりすることがある。図8の例では、バーB1、B31、B61、B72、B73、B8が、C.C.上のタスクを示しているが、バーB3で表される親タスクの途中からバーB6で表される親タスクにC.C.が移り、バーB6で表される親タスクの途中からバーB7で表される親タスクの途中にC.C.が移っている。すなわち、親タスクの開始点や終了点はC.C.上にないが、その子タスクがC.C.上にあるという場合があり得る。
以下、クライアント2が行う合流バッファの挿入位置の判定手法について説明する。図10〜12は、図7において合流バッファが必要となる部分を、親タスクの開始点と終了点に相当するノードEを明示して、C.C.決定後の仮想的な工程図の一部として模式図で表したものである。なお、図10〜12では、各ノードには区別のために符号「E」の後に数字を付している。以下、「タスクボックス」を単に「タスク」ともいう。また、C.C.上のタスクT及びノードEには斜め縞模様を付している。
図10では、親タスクT3の開始点のノードE1はC.C.上にあり、タスクT2は、それ自身はC.C.上にないが、ノードE1に合流するので、タスクT2の直後は合流バッファの挿入箇所(合流箇所)と判断できる。また、C.C.はタスクT31からタスクT61に移っており、親タスクT3の終了点のノードE2は、それ自身はC.C.上にないが、C.C.上のタスクT8に合流していることから、ノードE2の直後は合流箇所と判断できる。
また、図11では、タスクT31、及び、親タスクT6の配下の子タスクT61は、いずれもC.C.上にあるが、親タスクT6の開始点のノードE3は、それ自身はC.C.上にない。しかし、ノードE3は、C.C.上のタスクT61に合流することから、ノードE3の直後は合流箇所と判断できる。また、タスクT61からタスクT72にC.C.が移っており、親タスクT6の終了点のノードE4は、それ自身はC.C.上にないが、C.C.上のタスクT8に合流していることから、ノードE4の直後は合流箇所と判断できる。
さらに、図12では、タスクT71は、それ自身はC.C.上にないが、C.C.上のタスクT72に合流することから、タスクT71の直後は合流箇所と判断できる。また、親タスクT7の終了点のノードE6はC.C.上にあり、タスクT74は、それ自身はC.C.上にないが、ノードE6に合流することから、タスクT74の直後は合流箇所と判断できる。
以上のように、親タスクの開始点及び終了点のノードEを末端タスクと同列に扱うことにより、合流バッファFの挿入位置を判定できる。図7のプロジェクトネットワーク図をガントチャートで表した図8の工程表において、以上のようにして合流箇所を判定し、合流バッファFを挿入したものを、図13に示す。図13では、タスクT2を示すバーB2の直後に合流バッファF1、タスクT71を示すバーB71の直後に合流バッファF6、タスクT74を示すバーB74の直後に合流バッファF7が挿入されている。また、タスクT3を示すバーB3の終了点の直後に合流バッファF8、タスクT6を示すバーB6の開始点、終了点の直後にそれぞれ合流バッファF9、F10が挿入されている。
図13では、グループタスクの開始点または終了点がC.C.に合流する場合、その直後に直接合流バッファFを挿入している。かかる図13に示す状態の工程表を表示部25に表示させることとしてもよいが、グループタスクの開始点と終了点は仮想的なノードEであって、実際に稼働時間のあるタスクではないため、その直後に合流バッファFを挿入するのは、直感的に理解し難い。そのため、本実施形態では、上述したような親タスクの開始点及び終了点のノードEを末端タスクと同列に扱うことにより、合流バッファFの挿入位置を判定する方法は用いず、図13に示すような工程表も表示しない。その代わりに、クライアント2は、図17−1〜17−3に示すように、階層構造を持つタスクを辿ることにより、C.C.上のタスクに合流する末端タスクであってそれ自身はC.C.上にないもの(すなわち、合流バッファFを挿入すべきタスク)を発見する。そして、そのタスクから合流先のC.C.上のタスクまで明示的に依存関係を作成し、そのタスクの直後に合流バッファFを挿入することとする。以下、再帰的処理により末端タスクを探索して合流バッファを挿入する方法について、図14〜16の例、及び、図17−1〜17−3を用いて説明する。図14〜16では、図10〜12と同様に、C.C.上のタスクT及びノードEを斜め縞模様が付された矩形で示している。
図14に示す例は、タスクT16から階層的に無関係なタスクT183にC.C.がつながっている。タスクT183は三重になった階層構造の末端タスクである。そして、タスクT183を配下に置く最も上位の親タスクT18に対し、テクニカルな依存関係により先行するタスクT17も、三重の階層構造を有している。このように、グループタスクは何重にも入れ子になっている可能性がある。
まず、クライアント2は、図17−1に示すように、基点となるC.C.上のタスク(図14の例ではタスクT183)についての〈見つかった末端タスクの一覧〉を初期化する(S201)。なお、基点となるC.C.上のタスク(以下、単に「基点となるタスク」ともいう。)は、C.C.上の末端タスク、及び、開始点がC.C.上にある親タスクであり、〈見つかった末端タスクの一覧〉とは、見つかった末端タスクの一覧を記憶する記憶領域を示す。次に、クライアント2は、基点となるC.C.上のタスクを対象として、上位方向に合流する末端タスクを探す処理(以下、「上位方向探索処理」という。)を行い(S202)、処理を終える。処理を終えたときに〈見つかった末端タスクの一覧〉に記憶されている末端タスクが、合流バッファを挿入すべきタスクとなる。
〈上位方向探索ステップ〉図17−2に示すように、上位方向探索処理では、クライアント2は、対象としているタスク(図中〈あるタスク〉と表示。)の各先行タスクについて、下位方向に合流する末端タスクを探す処理(以下、「下位方向探索処理」という。)を行う(S301、302)。なお、先行タスクとはテクニカルな依存関係またはリソースによる依存関係により先行するタスクをいう。図14の例では、まず、タスクT183を対象とするが、タスクT183は先行タスクT16を持つため、クライアント2は、タスクT16についてステップS302の下位方向探索処理を行う。下位方向探索処理では、後述するように、ステップS401で対象とするタスクが子タスクを持つか否かが判定され、タスクT16は子タスクを持たないので、ステップ404に進んで、C.C.上にあるか否かが判定され、タスクT16はC.C.上にあるので、ステップ404でNOと判定されて、下位方向探索処理を抜ける。そして、タスクT183は、タスクT16以外に先行タスクを持たないため、ステップS304に進む。
ステップS304では、対象としているタスクが親タスクを持つか否かを判定する。そして、親タスクを持たなければ上位方向探索処理を抜けて、図17−1に示す処理に戻って処理を終える。一方、親タスクを持っていれば、親タスクの開始点がC.C.上にあるか否かを判定し(S305)、C.C.上にあれば、上位方向探索処理を抜けて、図17−1に示す処理に戻って処理を終えるが、C.C.上に無ければ、親タスクを対象として、さらに上位方向探索処理を行う(S306)。
図14の例では、対象としているタスクT183は親タスクT182を持つので、クライアント2は、親タスクT182の開始点がC.C.上にあるか否かを判定し(S305)、親タスクT182の開始点はC.C.上に無いので、親タスクT182を対象として、さらに上位方向探索処理を行う(S306)。タスクT182は先行タスクを持たないので、下位方向探索処理は行わず、タスクT182の親タスクT181について、その開始点がC.C.上にあるか否かを判定し(S305)、C.C.上に無いので、親タスクT181を対象として、さらに上位方向探索処理を行う(S306)。タスクT181は、先行タスクを持たないので、下位方向探索処理は行わず、タスクT181の親タスクT18について、その開始点がC.C.上にあるか否かを判定し(S305)、C.C.上に無いので、親タスクT18を対象として、さらに上位方向探索処理を行う(S306)。親タスクT18を対象とする上位方向探索処理では、親タスクT18は先行タスクT17を持っているので、クライアント2は、タスクT17を対象として、下位方向探索処理を行う。
〈下位方向探索ステップ〉図17−3に示すように、下位方向探索処理では、クライアント2は、対象としているタスクが子タスクを持つか否かを判定し(S401)、持つ場合には、その最後尾の各子タスクについて、下位方向探索処理をさらに行う(S402、403)。なお、最後尾の子タスクとは、同じ親タスクの直下(1つ下の階層)の子タスクの中で順序が最も遅いタスクをいい、例えば、図16の親タスクT13を対象とするときは、タスクT132、T134となる。一方、子タスクを持たない場合には、対象としているタスクがC.C.上にあるか否かを判定し、C.C.上に無い場合にのみ、そのタスクを〈見つかった末端タスクの一覧〉に追加する(S404、405)。
図14の例では、下位方向探索処理において最初に対象とされるタスクT17は、子タスクT171を持つので(S401でYES)、クライアント2は、子タスクT171を対象として、さらに下位方向探索処理を行い(S402、403)、子タスクT171は子タスクT172を持つので(S401でYES)、クライアント2は、子タスクT172を対象として、さらに下位方向探索処理を行い(S402、403)、子タスクT172は子タスクT173を持つので(S401でYES)、子タスクT173を対象として、さらに下位方向探索処理を行う(S402、403)。子タスクT173を対象とする下位方向探索処理において、子タスクT173は、子タスクを持たず(S401でNO)、C.C.上にないので(S404でYES)、クライアント2は、子タスクT173を〈見つかった末端タスクの一覧〉に追加し(S405)、下位方向探索処理を抜けて、上位方向探索処理に戻る。
上位方向探索処理では、クライアント2は、対象としているタスクの先行タスクで、まだ下位方向探索処理を行っていないものが存在すれば、その先行タスクについて下位方向探索処理を行い、存在しなければステップS304に進む。図14の例では、タスクT18に先行するタスクはタスクT17のみであるので、クライアント2はステップS304に進む。そして、クライアント2は、ステップS304で、対象としているタスクT18は親タスクを持たないと判定し、図17−1に示す処理に戻って処理を終える。処理を終えたとき、〈見つかった末端タスクの一覧〉には、タスクT173が記憶されている。
以上のようにして、クライアント2は、合流バッファを挿入すべきタスクを取得し、取得したタスクと、基点となるC.C.上のタスクとの依存関係を明示する。図14の例では、二点鎖線矢印に示すように、タスクT173とタスクT183との依存関係が明示される。
クライアント2は、基点となるタスクに対し、それぞれ、図17−1〜17−3に示す方法で、合流バッファを挿入すべきタスクを取得する。図15に示す例では、タスクT121を基点としたとき、末端タスクT10、T11が取得される。また、図16に示す例では、タスクT15を基点としたとき、末端タスクT132、T134が取得される。なお、図15、16の二点鎖線矢印は、基点となるタスクと取得したタスクとの依存関係を明示したものである。
また、図17−1〜17−3に示す方法によれば、図7の例では、タスクT3(開始点がC.C.上にある親タスクに相当。)に対してタスクT2が、タスクT61に対してタスクT4、T5が、タスクT72に対してタスクT71が、タスクT8に対してタスクT32、T62、T74が、合流バッファを挿入すべきタスクとして取得される。クライアント2は、取得したタスクとC.C.上のタスクとの依存関係が、プロジェクトネットワーク図上で矢印Yで明示されていない場合には、依存関係を明示する。
図18は、図7に示すプロジェクトネットワーク図において、合流バッファを挿入すべきタスクとして取得したタスクと、基点となるC.C.上のタスクとの依存関係を明示したものであり、図7では明示されていなかったタスクT4、T5とタスクT61との依存関係、及び、タスクT32、T62、T74とタスクT8との依存関係が二点鎖線矢印で明示されている。なお、タスクT2とタスクT3との依存関係等は、既に矢印Y2等で明示されているので、二点鎖線矢印での表示は行わない。
そして、クライアント2は、上記のように取得した末端タスクの直後に合流バッファFを挿入する。すなわち、図9に示すように、合流バッファF1〜F7が挿入されることとなる。図9と図13とを比較すれば、親タスクT3、T6を示すバーB3、B6の開始点や終了点に挿入されていた合流バッファF8、F9、F10が、合流バッファF2、F3、F4、F5に置き換えられているのが分かる。
図2−2に戻って説明すれば、ユーザがクライアント2において所定の登録操作を行うと(S120)、クライアント2は、ゴールボックスGのプロジェクト名等、各タスクTの識別情報、所要時間を示す情報、必要なリソースを示す情報、タスクT同士の順序関係を示す情報、タスクT同士の依存関係を示す情報、C.C.に関する情報(C.C.上のタスクTやノードEの識別情報や順序等)、及び、バッファに関する情報(プロジェクトバッファP及び合流バッファFの挿入位置や長さ等)を含む詳細データを、サーバ1に送信し(S121)、サーバ1は、受信した詳細データを当該プロジェクトのプロジェクトデータに追加して記憶(格納)する(S122)。
以上説明したように、プロジェクト計画装置3は、親タスクの開始点と終了点とを仮想的なノードEとし、矢印Yで示される順序関係及びリソースによる依存関係に基づいて末端タスク及びノードEで構成される仮想的な工程図を対象として、C.C.上にある末端タスク及びノードEを決定するので、階層構造を持つタスクを含むプロジェクトに対しても、最も時間が掛かるチェーンを適切に選び出してC.C.を決定することができる。そして、工程表にC.C.上の末端タスクを示す要素を、C.C.上にない末端タスクを示す要素とは区別可能に表示するので、ユーザにC.C.を視覚的に示すことができる。
そして、C.C.上の末端タスク、及び、開始点がC.C.上にある親タスクを、基点となるタスクとして、かかる基点となるタスクに合流する末端タスクであってC.C.上にない末端タスクを探索し、見つかった末端タスクの直後に合流バッファを設定するので、階層関係を有するタスクを含むプロジェクトに対しても、合流バッファを適切な位置に自動的に挿入することができる。例えば、図7のタスクT31、T61、T72のように階層を跨ってC.C.が移るようなプロジェクトであっても、図9の合流バッファFに示すように、C.C.に合流する末端タスクであってそれ自身はC.C.上にないもの(すなわち、合流チェーンの末尾の末端タスク)の直後に、合流バッファを挿入できる。
なお、上記実施形態では、再帰的処理により、合流バッファを挿入すべき末端タスクを探索したが、再帰的処理はループ処理に置換できることが一般に知られている。以下、ループ処理による合流バッファを挿入すべき末端タスクの探索方法について、図19−1、19−2を用いて説明する。
基点となるC.C.上のタスクは、図17−1〜17−3の方法と同じく、C.C.上の末端タスク、及び、開始点がC.C.上にある親タスクである。また、先行タスクの意味も、図17−1〜17−3の方法と同じである。まず、〈見つかった末端タスクの一覧〉を初期化し(図19−1のステップS501)、基点となるC.C.上のタスクを、処理対象である〈あるタスク〉として処理を開始する(S502)。そして、あるタスクの各先行タスクについて、後述する下位方向に合流する末端タスクを探す処理(以下、「下位方向探索処理」という。)を行う(S504、505)。次に、対象としているタスクに親タスクがあり、かつ、その開始点がC.C.上にないか否かを判定し(S506)、ステップS506でYESであれば、対象とするタスクを、現在対象としているタスクの親タスクに置換して(S507)、ステップS505に戻り、NOであれば処理を終える。処理終了時に〈見つかった末端タスクの一覧〉に記憶されているタスクが、合流バッファを挿入すべき末端タスクである。
下位方向探索処理では、記憶領域〈探索対象タスクの一覧〉を初期化して、現在対象としている先行タスクを〈探索対象タスクの一覧〉に追加する(図19−2のステップS601)。そして、〈探索対象タスクの一覧〉が空でない間、〈探索対象タスクの一覧〉から処理対象とするタスク〈対象タスク〉を1つ取り出して(S602、603)、ステップS604〜609で示す処理(以下、「探索ループ処理」という。)を繰り返す。
探索ループ処理では、〈対象タスク〉が子タスクを持つか否かを判定し(S604)、持つ場合には、その〈対象タスク〉の各子タスクについて、その子タスクがその子タスクの階層で最後尾であるか否かを判定する(S606)。そして、その子タスクがその子タスクの階層で最後尾である場合にのみ、その子タスクを〈探索対象タスクの一覧〉に追加する(S607)。一方、ステップ604で、〈対象タスク〉が子タスクを持たないと判定した場合には、その〈対象タスク〉がC.C.上にあるか否かを判定し(S608)、C.C.上にない場合にのみ、その〈対象タスク〉を〈見つかった末端タスクの一覧〉に追加する(S609)。
図19−1、19−2に示す方法は、次のように記述できる。すなわち、基点となるC.C.上のタスクを最初の対象タスクとして、対象タスクの各先行タスクについて下位方向探索処理を行い、続けて、上位方向に、開始点がC.C.上にない親タスクが続く間、親タスクを新たな対象タスクとして、各先行タスクの下位方向探索処理を繰り返す。下位方向探索処理では、初期状態で先行タスクのみを含む探索対象タスクの一覧を用意し、この一覧が空になるまで、対象タスクをひとつずつ取り出しながら、探索ループ処理を繰り返す。探索ループ処理では、対象タスクが子タスクをもたない場合は、対象タスクがC.C.上になければ、それを合流する末端タスクの一覧に含め、対象タスクが子タスクをもつ場合は、対象タスクの各子タスクについて、子タスクがその子タスクが存在する階層内で最後尾であれば、それを探索対象タスクの一覧に追加する。
以上のように、ループ処理により、合流バッファを挿入すべき末端タスクを探索することも可能である。
また、図17−1〜17−3に示す方法、及び、図19−1、19−2に示す方法のように、階層構造を持つタスクを上位方向や下位方向に辿ることにより、C.C.に合流する末端タスクであってそれ自身はC.C.上にないものを探索して、その直後に合流バッファを挿入する方法ではなく、図10〜12を用いて上述したように、親タスクの開始点及び終了点を仮想的なノードとして末端タスクと同列に扱うことにより、合流バッファの挿入位置を判定する方法により、図13に示すように合流バッファFを挿入してもよい。
すなわち、C.C.上の末端タスクまたは仮想ノードEに合流する末端タスクまたは仮想ノードEであってC.C.上にないものを探索し、見つかった末端タスク、及び、見つかった仮想ノードEに対応する親タスクの開始点または終了点の直後に、合流バッファを設定し、その合流バッファを示す要素をプロジェクトネットワーク図またはガントチャートの少なくとも一方に表示してもよい(図13参照)。この方法であっても、上述した図17−1〜17−3や、図19−1、19−2に示すような方法と同様に、階層構造を有するタスクを含むプロジェクトに対して適切な位置に合流バッファを挿入可能である。
図9と図13とを比較すれば、上述したように合流バッファF3、F4が合流バッファF9に、合流バッファF2が合流バッファF8に、合流バッファF5が合流バッファF10に置き換わっているが、いずれの場合でも、時間的(稼働時間的)には、C.C.に合流する末端タスクであってそれ自身はC.C.上にないタスクT4、T5、T32、T62(それぞれ、バーB4、B5、B32、B62で表されている。)の直後に合流バッファFが挿入されている。なお、図13によるときの合流バッファFの長さは、合流する最も長い合流チェーンの長さに応じて決定される。
また、図17−1〜17−3、及び、図19−1、19−2を用いて説明したように、C.C.上の末端タスク及び開始点がC.C.上にある親タスクを基点となるタスクとして、基点となるタスクに合流する末端タスクであってC.C.上にない末端タスクを探索し、見つかった末端タスクの直後に合流バッファを設定する手段、及び、図10〜12を用いて説明したように、C.C.上の末端タスクまたはC.C.上の仮想ノードに合流する、末端タスクまたは仮想ノードであってC.C.上にないものを探索し、見つかった末端タスク、及び、見つかった仮想ノードに対応する親タスクの開始点または終了点の直後に、合流バッファを設定する手段のいずれをもクライアント2が備えるように構成し、ユーザがどちらの手段で合流バッファを挿入するかを選択可能に構成してもよい。
また、上記実施形態では、工程表(ガントチャート)にのみ合流バッファを挿入しているが、プロジェクトネットワーク図にも合流バッファを挿入するようにしてもよい。また、プロジェクトネットワーク図にはクリティカルチェーンを表示せず、工程表にのみ表示させるようにしてもよい。また、工程図として、プロジェクトネットワーク図のみ、或いは、工程表のみの実施形態も採り得る。さらに、工程図は、各タスクを示す要素を順序付けて配置することにより工程を示すものであればよく、上記のものに限られない。
また、上記実施形態では、実質的にクライアント2がプロジェクト計画装置3として構成されているが、サーバ1にもプロジェクト計画プログラムをインストールすることにより、サーバ1もプロジェクト計画装置3として構成できる。すなわち、同一のプロジェクトについて、クライアント2とサーバ1とで分担して計画することも可能である。また、作成した計画をクライアント2で修正したり、サーバ1で修正したりすることも可能である。
また、上記実施形態では、プロジェクト計画装置3をサーバ・クライアント型として構成したが、スタンドアロン型として構成してもよい。例えば、プロジェクトデータを共有する必要がない場合等には、上記ステップS105〜120の処理もサーバ1で行い、ステップS104及びS121の処理を無いものとすれば、サーバ1がスタンドアロン型のプロジェクト計画装置3となる。逆に、上記ステップS101〜103、及び、S122の処理もクライアント2で行うようにして、ステップS104及びS121の処理を無いものとすれば、クライアント2がスタンドアロン型のプロジェクト計画装置3となる。
1…サーバ
2…クライアント
3…プロジェクト計画装置
21…入力部
25…表示部
E…ノード
F…合流バッファ

Claims (6)

  1. 入力部と表示部とを備え、制約条件の理論に従ってプロジェクトを計画するためのプロジェクト計画装置であって、
    前記入力部を用いたユーザの操作に応じて、プロジェクト遂行に必要な各タスクの所要時間を示す情報、及び、必要なリソースを示す情報の入力を受けるとともに、タスク同士の順序関係を示す情報、及び、タスク同士の階層関係を示す情報の入力を受ける情報取得手段と、
    前記所要時間を示す情報と前記リソースを示す情報と前記順序関係を示す情報と前記階層関係を示す情報とに基づいて、前記順序関係と前記階層関係とに従うように、かつ、前記階層関係における下位のタスクを持たないタスク(以下、「末端タスク」という。)間で、リソースが競合しないように、各タスクの順序を決定し、当該順序に従って各タスクを示す要素を配置した第1の工程図を作成し、前記表示部に表示する工程図作成手段と、
    前記階層関係における下位のタスクを持つタスク(以下、「親タスク」という。)の開始点と終了点とを仮想的なノード(以下、「仮想ノード」という。)とし、前記順序関係に基づいて、末端タスク及び仮想ノードで構成される仮想的な工程図を対象として、前記プロジェクトにおけるクリティカルチェーン上にある末端タスク及び仮想ノードを決定し、前記第1の工程図または前記第1の工程図から作成した第2の工程図の少なくとも一方に、前記クリティカルチェーン上の末端タスクを示す要素を、前記クリティカルチェーン上にない末端タスクを示す要素とは区別可能に表示するクリティカルチェーン決定手段と、
    を備えることを特徴とするプロジェクト計画装置。
  2. 前記クリティカルチェーン上の末端タスク、及び、開始点の仮想ノードがクリティカルチェーン上にある親タスクを基点となるタスクとして、前記基点となるタスクに合流する末端タスクであって前記クリティカルチェーン上にない末端タスクを探索し、見つかった末端タスクの直後に合流バッファを設定し、当該合流バッファを示す要素を前記第1の工程図または前記第2の工程図の少なくとも一方に表示する合流バッファ設定手段
    を備えることを特徴とする請求項1記載のプロジェクト計画装置。
  3. 前記クリティカルチェーン上の末端タスクまたは前記クリティカルチェーン上の仮想ノードに合流する、末端タスクまたは仮想ノードであって前記クリティカルチェーン上にないものを探索し、見つかった末端タスク、及び、見つかった仮想ノードに対応する親タスクの開始点または終了点の直後に、合流バッファを設定し、当該合流バッファを示す要素を前記第1の工程図または前記第2の工程図の少なくとも一方に表示する合流バッファ設定手段
    を備えることを特徴とする請求項1記載のプロジェクト計画装置。
  4. 制約条件の理論に従ってプロジェクトを計画するためのプロジェクト計画プログラムであって、入力部と表示部とを備えたコンピュータを、
    前記入力部を用いたユーザの操作に応じて、プロジェクト遂行に必要な各タスクの所要時間を示す情報、及び、必要なリソースを示す情報の入力を受けるとともに、タスク同士の順序関係を示す情報、及び、タスク同士の階層関係を示す情報の入力を受ける情報取得手段、
    前記所要時間を示す情報と前記リソースを示す情報と前記順序関係を示す情報と前記階層関係を示す情報とに基づいて、前記順序関係と前記階層関係とに従うように、かつ、前記階層関係における下位のタスクを持たないタスク(以下、「末端タスク」という。)間で、リソースが競合しないように、各タスクの順序を決定し、当該順序に従って各タスクを示す要素を配置した第1の工程図を作成し、前記表示部に表示する工程図作成手段、
    及び、
    前記階層関係における下位のタスクを持つタスク(以下、「親タスク」という。)の開始点と終了点とを仮想的なノード(以下、「仮想ノード」という。)とし、前記順序関係に基づいて、末端タスク及び仮想ノードで構成される仮想的な工程図を対象として、前記プロジェクトにおけるクリティカルチェーン上にある末端タスク及び仮想ノードを決定し、前記第1の工程図または前記第1の工程図から作成した第2の工程図の少なくとも一方に、前記クリティカルチェーン上の末端タスクを示す要素を、前記クリティカルチェーン上にない末端タスクを示す要素とは区別可能に表示するクリティカルチェーン決定手段、
    として機能させることを特徴とするプロジェクト計画プログラム。
  5. 前記コンピュータを、
    前記クリティカルチェーン上の末端タスク、及び、開始点の仮想ノードがクリティカルチェーン上にある親タスクを基点となるタスクとして、前記基点となるタスクに合流する末端タスクであって前記クリティカルチェーン上にない末端タスクを探索し、見つかった末端タスクの直後に合流バッファを設定し、当該合流バッファを示す要素を前記第1の工程図または前記第2の工程図の少なくとも一方に表示する合流バッファ設定手段
    として機能させることを特徴とする請求項4記載のプロジェクト計画プログラム。
  6. 前記コンピュータを、
    前記クリティカルチェーン上の末端タスクまたは前記クリティカルチェーン上の仮想ノードに合流する、末端タスクまたは仮想ノードであって前記クリティカルチェーン上にないものを探索し、見つかった末端タスク、及び、見つかった仮想ノードに対応する親タスクの開始点または終了点の直後に、合流バッファを設定し、当該合流バッファを示す要素を前記第1の工程図または前記第2の工程図の少なくとも一方に表示する合流バッファ設定手段
    として機能させることを特徴とする請求項4記載のプロジェクト計画プログラム。
JP2009248053A 2009-10-28 2009-10-28 プロジェクト計画装置およびプロジェクト計画プログラム Active JP5443945B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009248053A JP5443945B2 (ja) 2009-10-28 2009-10-28 プロジェクト計画装置およびプロジェクト計画プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009248053A JP5443945B2 (ja) 2009-10-28 2009-10-28 プロジェクト計画装置およびプロジェクト計画プログラム

Publications (3)

Publication Number Publication Date
JP2011095918A true JP2011095918A (ja) 2011-05-12
JP2011095918A5 JP2011095918A5 (ja) 2013-03-21
JP5443945B2 JP5443945B2 (ja) 2014-03-19

Family

ID=44112769

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009248053A Active JP5443945B2 (ja) 2009-10-28 2009-10-28 プロジェクト計画装置およびプロジェクト計画プログラム

Country Status (1)

Country Link
JP (1) JP5443945B2 (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013254368A (ja) * 2012-06-07 2013-12-19 Ntt Data Corp シミュレーション装置、シミュレーション方法およびプログラム
JP2015219747A (ja) * 2014-05-19 2015-12-07 株式会社日立製作所 ソフトウェア開発における作業計画の立案を支援する方法、及び作業計画立案支援装置
JP2017004318A (ja) * 2015-06-11 2017-01-05 三菱重工業株式会社 計画立案支援システム
WO2021044487A1 (ja) * 2019-09-02 2021-03-11 日本電気株式会社 処理装置、処理方法及びプログラム
WO2021193800A1 (ja) * 2020-03-27 2021-09-30 パナソニックIpマネジメント株式会社 作業管理装置および準備指示方法
US20220035813A1 (en) * 2020-08-03 2022-02-03 Alipay (Hangzhou) Information Technology Co.. Ltd. Query optimization method and apparatus
CN117132095A (zh) * 2023-08-07 2023-11-28 中国船舶集团有限公司第七一九研究所 一种基于缓冲区监控的船舶研制进度管理***

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007140607A (ja) * 2005-11-14 2007-06-07 Noriaki Aoki 医療マネジメント支援装置、医療マネジメント支援方法、及び医療マネジメント支援プログラム、並びに医療マネジメント支援システム
JP2008059369A (ja) * 2006-08-31 2008-03-13 Ricoh Co Ltd ワークフロー管理システム、ワークフロー管理方法、ワークフロー管理プログラムおよび記録媒体

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007140607A (ja) * 2005-11-14 2007-06-07 Noriaki Aoki 医療マネジメント支援装置、医療マネジメント支援方法、及び医療マネジメント支援プログラム、並びに医療マネジメント支援システム
JP2008059369A (ja) * 2006-08-31 2008-03-13 Ricoh Co Ltd ワークフロー管理システム、ワークフロー管理方法、ワークフロー管理プログラムおよび記録媒体

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CSND200500007010; 津曲 公二: 'なるほどtheメソッド TOCによる業務改革' 日経ものづくり 第597号 , 20040601, 186-189, 日経BP社 *
JPN6013045784; 津曲 公二: 'なるほどtheメソッド TOCによる業務改革' 日経ものづくり 第597号 , 20040601, 186-189, 日経BP社 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013254368A (ja) * 2012-06-07 2013-12-19 Ntt Data Corp シミュレーション装置、シミュレーション方法およびプログラム
JP2015219747A (ja) * 2014-05-19 2015-12-07 株式会社日立製作所 ソフトウェア開発における作業計画の立案を支援する方法、及び作業計画立案支援装置
JP2017004318A (ja) * 2015-06-11 2017-01-05 三菱重工業株式会社 計画立案支援システム
WO2021044487A1 (ja) * 2019-09-02 2021-03-11 日本電気株式会社 処理装置、処理方法及びプログラム
WO2021193800A1 (ja) * 2020-03-27 2021-09-30 パナソニックIpマネジメント株式会社 作業管理装置および準備指示方法
US20220035813A1 (en) * 2020-08-03 2022-02-03 Alipay (Hangzhou) Information Technology Co.. Ltd. Query optimization method and apparatus
CN117132095A (zh) * 2023-08-07 2023-11-28 中国船舶集团有限公司第七一九研究所 一种基于缓冲区监控的船舶研制进度管理***
CN117132095B (zh) * 2023-08-07 2024-03-01 中国船舶集团有限公司第七一九研究所 一种基于缓冲区监控的船舶研制进度管理***

Also Published As

Publication number Publication date
JP5443945B2 (ja) 2014-03-19

Similar Documents

Publication Publication Date Title
JP5443945B2 (ja) プロジェクト計画装置およびプロジェクト計画プログラム
JP5260672B2 (ja) レイアウトマネージャ
McKinney et al. Generating, evaluating and visualizing construction schedules with CAD tools
US20190080289A1 (en) Graphical project management tool
US9213526B1 (en) Service oriented architecture (SOA) modeling
US20090234699A1 (en) User Interface For Scheduling Resource Assignments
US20140324493A1 (en) Display and management of a service composition candidate inventory
US20050257157A1 (en) Developing and executing applications with configurable patterns
US20070168384A1 (en) Mapping of designtime to runtime in a visual modeling language environment
CN102567840A (zh) 基于混合任务板和关键路径方法的项目管理应用界面
CN101226559A (zh) 包含一组约束对象的产品的cad的方法和计算机程序产品
US20110072352A1 (en) Method and application tool for dynamically navigating a user customizable representation of a network device configuration
US8924919B2 (en) Tracking and integrity enforcement of relationships between service and composition candidates in a service model
JP2018106306A (ja) ゲーム開発システム
US20050177814A1 (en) System for providing a graphical representation of user interface and executable application operation
US20050257190A1 (en) Developing and executing applications with configurable patterns
JP2011095917A (ja) プロジェクト進捗管理装置
US9229689B2 (en) System and method for providing user support in designing graph structures
Sangwan et al. Integrating a software architecture-centric method into object-oriented analysis and design
US7757208B2 (en) Floorplan manager
US20030041311A1 (en) Topological multi-tier business application composer
JP2009245054A (ja) 生産管理プログラム、生産管理装置および生産管理方法
JP2008003803A (ja) プロジェクト管理システム及びプロジェクト管理プログラム
JP5884925B2 (ja) 管理支援装置、管理支援方法及び管理支援プログラム
US20140201705A1 (en) Extended framework for no-coding dynamic control workflow development on spatial enterprise system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20121023

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20121023

RD05 Notification of revocation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7425

Effective date: 20121023

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20121023

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130201

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130902

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130917

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131115

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131203

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131220

R150 Certificate of patent or registration of utility model

Ref document number: 5443945

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250