以下に本発明の一実施形態について図面を参照して説明する。図1には、本実施形態のプロジェクト管理システム10の全体構成が示されている。図2は、構成要素の階層のイメージを示す図であり、図3は、記憶手段であるデータベース40の構成図である。また、図4には、プロジェクト管理システム10による処理の全体的な流れがフローチャートで示されている。さらに、図5〜図20には、各種の画面例が示されている。
<プロジェクト管理システム10の全体構成>
図1において、プロジェクト管理システム10は、プロジェクト管理に関する各種の処理を実行するとともに各種の処理に必要なデータを記憶するプロジェクト管理サーバ20と、ユーザが操作する1台または複数台のユーザ端末60とが、ネットワーク1で接続されて構成されている。
ここで、ネットワーク1は、主としてインターネットにより構成された外部ネットワークであり、インターネットと、LANやイントラネット等の内部ネットワーク(例えば、社内、グループ企業内等で構築された限定的なネットワーク)との組合せでもよく、有線であるか無線であるか、さらには有線および無線の混在型であるかは問わず、要するに、複数地点(距離の長短は問わない。)間で、ある程度の速度をもって情報を伝送することができるものであればよい。
プロジェクト管理サーバ20は、1台または複数台のコンピュータにより構成され、プロジェクト管理に関する各種の処理を実行する処理手段20Aと、この処理手段20Aで実行される各種の処理で使用される各種のデータを記憶する記憶手段であるデータベース40とを備えて構成されている。具体的には、本実施形態では、プロジェクト管理サーバ20は、WEBサーバ、WEBアプリケーションサーバ、データベースサーバの機能を備え、これらの機能を何台のコンピュータで実現するかは任意である。
処理手段20Aは、プロジェクト登録手段21と、工程情報登録手段22と、構成要素登録手段23と、チケット登録手段24と、構成要素属性情報登録手段25と、品質指標値登録手段26と、品質・進捗情報表示手段27と、品質・進捗管理図表示手段28と、チケット進捗状況表示手段29とを含んで構成されている。また、処理手段20Aには、データベース・マネジメント・システム(DBMS)の機能も含まれる。
この処理手段20Aに含まれる各手段21〜29は、プロジェクト管理サーバ20を構成するコンピュータ本体の内部に設けられた中央演算処理装置(CPU)、およびこのCPUの動作手順を規定する1つまたは複数のプログラム、並びに、主メモリやキャッシュメモリ等の作業用メモリ等により実現される。なお、これらの各手段21〜29の詳細は、後述する。
記憶手段であるデータベース40は、チケット記憶手段であるチケットテーブル41と、プロジェクト情報記憶手段であるプロジェクト情報テーブル42と、工程情報記憶手段である工程情報テーブル43と、テーブル情報記憶手段であるテーブル情報テーブル44と、構成要素記憶手段である構成要素テーブル45と、構成要素属性情報記憶手段である構成要素属性情報テーブル46と、品質指標値記憶手段である品質指標値テーブル47と、テスト進捗情報記憶手段であるテスト進捗情報テーブル48と、階層上下関係記憶手段である階層上下関係テーブル49とを含んで構成されている。
本実施形態では、記憶手段は、DBMSによる制御で複数ユーザによる同時利用が可能とされたデータベース40により構成されているが、ファイルシステムとしてもよい。この記憶手段は、例えばハードディスクドライブ(HDD)やソリッドステートドライブ(SSD)等により好適に実現されるが、記憶容量やアクセス速度等に問題が生じない範囲であれば、例えば、USBメモリ、DVD、CD、MO、磁気テープ等の他の記録媒体を採用してもよい。なお、データベース40を構成する各テーブル41〜49の詳細は、後述する。
ユーザ端末60は、コンピュータにより構成され、液晶ディスプレイ等の表示手段と、キーボードやマウスやタッチパネル等の入力手段とを備えている。また、ユーザ端末60は、スマートフォンやタブレット端末等の携帯機器でもよい。本実施形態では、ユーザ端末60を操作するユーザには、一例として、異なる権限を有するアドミン、マネージャ、一般ユーザがいるが、特にこのような権限の階層を設けなくてもよい。
また、本実施形態では、ユーザ端末60には、汎用のWEBブラウザが搭載されていればよく、ユーザ端末60における表示や入力の処理は、WEBブラウザの機能や、WEBページに付随してプロジェクト管理サーバ20から提供されるプログラム(例えば、JavaScript(ECMAScript)等:JavaScriptは登録商標)で実行されるが、ユーザ端末60に、専用のプログラムを搭載してもよい。
<プロジェクト管理サーバ20/処理手段20A/プロジェクト登録手段21の構成>
プロジェクト登録手段21は、ユーザの要求に応じ、プロジェクト登録画面(不図示)の表示用データ(WEBページ)を、ネットワーク1を介してユーザ端末60に送信するとともに、ユーザ端末60で入力されてネットワーク1を介して送信されてくるプロジェクト情報を受信し、受信したプロジェクト情報を、プロジェクトIDと関連付けてプロジェクト情報テーブル42(図3参照)に記憶させる処理を実行するものである。
ユーザ端末60でユーザにより入力されるプロジェクト情報には、プロジェクト名(例えば「Project21」等)、プロジェクト概要を示すテキストデータが含まれる。プロジェクトIDは、プロジェクト登録手段21により自動付与される。従って、データベース40には、削除されない限り、過去のプロジェクトに関するデータも記憶されている。
また、プロジェクト登録手段21は、プロジェクトIDの自動付与と併せて、チケットテーブル41(チケット記憶手段)の自動作成を行う。1つのプロジェクトに対し、1つのチケットテーブル41が作成される。
<プロジェクト管理サーバ20/処理手段20A/工程情報登録手段22の構成>
工程情報登録手段22は、ユーザの要求に応じ、工程登録画面(不図示)の表示用データ(WEBページ)を、ネットワーク1を介してユーザ端末60に送信するとともに、ユーザ端末60で入力されてネットワーク1を介して送信されてくる工程情報(プロジェクトの指定情報を含む)を受信し、受信した工程情報を、プロジェクトIDおよび工程IDと関連付けて工程情報テーブル43(図3参照)に記憶させる処理を実行するものである。
ユーザ端末60でユーザにより入力される工程情報には、工程名(例えば「Test1」等)、工程分類(設計工程、コーディング工程、テスト工程、運用工程、保守工程の別)、予定工程開始日、予定工程完了日、実績工程開始日、実績工程完了日が含まれる。工程IDは、工程情報登録手段22により自動付与される。設計工程には、要件定義工程が含まれる。5つの工程分類のうち、設計工程(Designフェーズ)、テスト工程(Testingフェーズ)、運用工程(Operationフェーズ)、保守工程(Maintenanceフェーズ)については、1つのプロジェクトの配下に複数個ずつ登録することができる。例えば、設計工程として、要件定義工程、基本設計工程、詳細設計工程等のように、複数の工程を登録することができる。一方、コーディング工程(Codingフェーズ)については、1つのプロジェクトの配下に1つのみ登録することができる。
<プロジェクト管理サーバ20/処理手段20A/構成要素登録手段23の構成:図5>
構成要素登録手段23は、ユーザの要求に応じ、構成要素登録画面100(図5参照)の表示用データ(WEBページ)を、ネットワーク1を介してユーザ端末60に送信するとともに、ユーザ端末60で入力されてネットワーク1を介して送信されてくる構成要素に関する情報(プロジェクトの指定情報を含む)を受信し、受信した構成要素に関する情報を、構成要素IDおよびプロジェクトIDと関連付けて構成要素テーブル45(図3参照)に記憶させる処理を実行するものである。
図5において、構成要素登録画面100には、プロジェクトの選択部101と、テーブルの選択部102と、登録する構成要素の階層(Hierarchy of Component Part)の種別の選択部110と、いずれの構成要素の配下に登録するのかを選択する帰属先となる上位の構成要素の選択部120と、登録する構成要素の名称の入力部130と、登録する構成要素の概要(Overview)の入力部140と、構成要素の追加ボタン(Insertボタン)150と、構成要素の統合ボタン(Mergeボタン)151と、検索ワードの入力部152と、検索ボタン(Searchボタン)153とが設けられている。
また、構成要素登録画面100には、この画面100の表示時点で既に登録されている各構成要素に関する情報が表示されるようになっており、統合(Merge)する構成要素の選択部160と、大構成要素(Large)の名称の表示部161と、中構成要素(Medium)の名称の表示部162と、小構成要素(Small)の名称の表示部163と、最小構成要素(Minimal)の名称の表示部164と、構成要素の概要(Overview)の表示部165と、構成要素の分割ボタン(Splitボタン)166と、構成要素の更新ボタン(Updateボタン)167と、構成要素の削除ボタン(Delボタン)168とが設けられている。
図5の構成要素登録画面100において、ユーザが、選択部101でプロジェクト(この例では「Project21」)を選択し、選択部110で登録対象の構成要素の階層の種別(この例では「最小構成要素」)を選択し、選択部120で帰属先となる上位の構成要素(この例では「ユーザ管理/ユーザ登録/新規登録」)を選択し、入力部130で登録対象の構成要素の名称(この例では「登録画面」)を入力し、入力部140で登録対象の構成要素の概要(この例では「ユーザ情報を新規登録する画面」)を入力した後、追加ボタン150をクリックすると、入力した登録対象の構成要素に関する情報が、ユーザ端末60からネットワーク1を介してプロジェクト管理サーバ20に送信され、構成要素登録手段23により構成要素テーブル45(図3参照)に記憶される。すると、図5の例では、一番下に表示された「ユーザ管理/ユーザ登録/新規登録/登録処理」の下側に、登録した構成要素である「ユーザ管理/ユーザ登録/新規登録/登録画面」が追加表示される。
図2に示された構成要素の階層のイメージのように、本実施形態では、構成要素の階層の種別には、上位から順に、大構成要素(Large)、中構成要素(Medium)、小構成要素(Small)、最小構成要素(Minimal)の4階層があり、図5の選択部110では、この4階層のうちのいずれかを選択する。なお、階層の種別の数は、4つに限定されるものではなく、例えば、3階層でもよく、5階層以上でもよい。
大構成要素の直下には、必ず少なくとも1つの中構成要素が作成されるというわけではなく、同様に、中構成要素の直下には、必ず少なくとも1つの小構成要素が作成されるというわけではなく、また、小構成要素の直下には、必ず少なくとも1つの最小構成要素が作成されるというわけではない。従って、図2に示すような構成要素の階層ツリーにおいて、大構成要素が最も下位の構成要素(階層ツリーの枝の先端に位置する構成要素)である場合があり、同様に、中構成要素や小構成要素が、最も下位の構成要素である場合もある。本実施形態では、プロジェクトの進行に伴って、徐々に構成要素を作成し、階層構造を深くしていくことを前提としているので、プロジェクトの途中の段階では、大構成要素、中構成要素、小構成要素が、最も下位の構成要素(枝の先端)になっている状態は当然あり得るが、全ての工程が完了し、プロジェクトが終了した時点でも、そのような状態は、普通の状態として、あり得る。
また、自分の配下の構成要素が作成された場合でも、その構成要素(自分)自体に関する情報が消失する(意味を持たなくなる)わけではなく、大構成要素の直下に中構成要素が作成されれば、大構成要素に関する情報と、新たに作成された中構成要素に関する情報とが併存し、同様に、中構成要素の直下に小構成要素が作成されれば、中構成要素に関する情報と、新たに作成された小構成要素に関する情報とが併存し、また、小構成要素の直下に最小構成要素が作成されれば、小構成要素に関する情報と、新たに作成された最小構成要素に関する情報とが併存する。図5の例では、大構成要素「ユーザ管理」の配下に、中構成要素「ユーザ参照」や「ユーザ更新」等が作成されても、大構成要素「ユーザ管理」という構成要素の情報を表示する行は存在している。また、中構成要素「ユーザ参照」の配下に、小構成要素「参照画面」が作成されても、中構成要素「ユーザ参照」という構成要素の情報を表示する行は存在している。
さらに、前述したように、新たに作成した構成要素が追加登録される場合には、その構成要素に関する情報として、その構成要素(自分)の名称(図5の入力部130で入力した名称)および概要(図5の入力部140で入力したテキストデータ)が、構成要素テーブル45(図3参照)におけるその構成要素(自分)のレコードに記憶されるが、その他に、その構成要素(自分)についての階層情報として、その構成要素(自分)の階層(図5の選択部110で選択した階層種別)と、その構成要素(自分)の帰属先となる上位の階層の構成要素(図5の選択部120で選択した構成要素)の情報(IDおよび名称)とが記憶される。しかし、その構成要素(自分)のレコードには、自分よりも下位の階層の情報は存在しない状態である。その構成要素(自分)の登録時点では、自分の配下の構成要素は存在しないので、そのような状態になるのは当然であるが、その後、配下の構成要素が作成されても、その状態は変わらない。例えば、図5において、中構成要素「ユーザ参照」を新たな構成要素として登録すると、その「ユーザ参照」という構成要素のレコードには、自分の上位の「ユーザ管理」という構成要素の情報(IDおよび名称)は記憶されるが、自分よりも下位の階層である小構成要素および最小構成要素のカラムは、ブランクまたはNULLデータとなり、その後、自分の配下に「参照画面」という構成要素が作成されても、ブランクまたはNULLデータの状態は変わらない。
より詳細には、大構成要素として登録された構成要素のレコードには、大構成要素という自分の階層種別と、大構成要素IDおよび大構成要素の名称とが、その構成要素(自分)についての構成要素IDおよびプロジェクトIDと関連付けて構成要素テーブル45(図3参照)におけるその構成要素(自分)のレコードに記憶される。この場合、大構成要素の名称は、その構成要素(自分)の名称そのものであり、図5の入力部130で入力した名称である。
また、中構成要素として登録された構成要素のレコードには、中構成要素という自分の階層種別と、自分の上位の大構成要素IDおよび大構成要素の名称と、中構成要素IDおよび中構成要素の名称とが、その構成要素(自分)についての構成要素IDおよびプロジェクトIDと関連付けて構成要素テーブル45(図3参照)におけるその構成要素(自分)のレコードに記憶される。この場合、中構成要素の名称は、その構成要素(自分)の名称そのものであり、図5の入力部130で入力した名称である。
同様に、小構成要素として登録された構成要素のレコードには、小構成要素という自分の階層種別と、自分の上位の大構成要素IDおよび大構成要素の名称と、自分の上位の中構成要素IDおよび中構成要素の名称と、小構成要素IDおよび小構成要素の名称とが、その構成要素(自分)についての構成要素IDおよびプロジェクトIDと関連付けて構成要素テーブル45(図3参照)におけるその構成要素(自分)のレコードに記憶される。この場合、小構成要素の名称は、その構成要素(自分)の名称そのものであり、図5の入力部130で入力した名称である。
さらに、最小構成要素として登録された構成要素のレコードには、最小構成要素という自分の階層種別と、自分の上位の大構成要素IDおよび大構成要素の名称と、自分の上位の中構成要素IDおよび中構成要素の名称と、自分の上位の小構成要素IDおよび小構成要素の名称と、最小構成要素IDおよび最小構成要素の名称とが、その構成要素(自分)についての構成要素IDおよびプロジェクトIDと関連付けて構成要素テーブル45(図3参照)におけるその構成要素(自分)のレコードに記憶される。この場合、最小構成要素の名称は、その構成要素(自分)の名称そのものであり、図5の入力部130で入力した名称である。
ここで、構成要素IDは、階層の種別を問わず、構成要素を識別するために自動付与された情報であり、本実施形態では、一例として、登録順に付与した数字の連番である。この構成要素IDは、チケット情報(バグチケット等)、構成要素の属性情報、品質指標値、テスト進捗情報を関連付けるために使用される(図3参照)。一方、大構成要素ID、中構成要素ID、小構成要素ID、および最小構成要素IDは、階層上下関係を定める階層情報であり、上位の構成要素や下位の構成要素を取得するとき等に使用され、これらのIDは、プログラムで自動生成されたランダムな文字列(例えば、MRKCjax7p1M8ssToZsoG)である。
なお、本実施形態では、上述したように、階層上下関係を定める階層情報として、大構成要素ID、中構成要素ID、小構成要素ID、および最小構成要素IDを用いているが、構成要素IDを、階層上下関係を定める階層情報として用いてもよい。また、本実施形態では、前述したように、階層上下関係を定める階層情報として、自分の上位の構成要素の全て、すなわち、直上の階層だけではなく、2階層以上の上位の階層の構成要素も含めて、構成要素テーブル45(図3参照)のレコードに記憶しているが、直上の階層の構成要素だけを記憶するようにしてもよい。但し、本実施形態のような階層情報とすることで、処理速度を向上させることができる。
そして、本発明では、構成要素は、機能単位で作成し、登録する。すなわち、開発対象システムを包含関係にある大小の機能で分解して部品化し、その大小の部品単位で構成要素を作成し、登録する。システムを機能的に分解する場合、一般的には、コンポーネント、モジュール、ユニット、プログラム等のように、様々な呼び名の部品が存在し、必ずしも当業者間でそれぞれの呼び名の大小関係や意味が統一されているわけではないため、本実施形態では、このような部品の呼び名に拘泥されることなく、階層の種別(呼び名)を、大構成要素(Large component)、中構成要素(Medium component)、小構成要素(Small component)、最小構成要素(Minimal component)としている。従って、本実施形態の大構成要素、中構成要素、小構成要素、最小構成要素は、例えば、それぞれコンポーネント、大モジュール、中モジュール、小モジュール(プログラム)等の呼び名の部品に相当するが、これに限定されるものではなく、ユーザが自分で普段使用している呼び名による部品の大小関係を当て嵌めればよい。よって、通常、設計工程(要件定義工程を含む)では、設計書(要件定義書を含む)がその工程における作業の成果物であるから、作業を機能単位で分解して考えることはしないが、本発明では、設計工程の段階から、先の工程(未来の工程)であるコーディング工程における作業内容を考慮し、構成要素を作成することになる。
また、本発明では、徐々に構成要素を追加登録し、階層構造を深くしていくことを前提としている。従って、例えば、要件定義書を作成する要件定義工程では、大構成要素(例えば、コーディング工程で意識されるコンポーネントに相当)として登録される構成要素を作成し、基本設計書を作成する基本設計工程では、中構成要素(例えば、コーディング工程で意識される大モジュールに相当)として登録される構成要素を作成し、詳細設計書を作成する詳細設計工程では、小構成要素や最小構成要素(例えば、コーディング工程で意識される中モジュールや小モジュール(プログラム)に相当)として登録される構成要素を作成する。
さらに、構成要素登録手段23は、構成要素の追加時のチケット帰属先選択処理(図15、図16参照)、過去のプロジェクトの構成要素のコピーによる構成要素の追加処理(図17参照)、構成要素の削除時のチケット帰属先選択処理(図18参照)、構成要素の分割時のチケット帰属先選択処理(図19参照)、構成要素の統合処理(図20参照)を実行する構成としてもよく、これらの処理の詳細は、図15〜図20を用いて後述する。本発明では、最初から完全または略完全な形で構成要素を登録するのではなく、プロジェクトの進行に伴って(工程が移り変わっていくに従って)、徐々に構成要素を登録していくことを前提としているので、プロジェクトの進行中に一旦設定した階層構造を変える機会も多いと予想されることから、これらの処理は、そのために役立つ処理となる。
<プロジェクト管理サーバ20/処理手段20A/チケット登録手段24の構成:図6〜図8>
チケット登録手段24は、ユーザの要求に応じ、チケット登録画面200(図6参照)の表示用データ(WEBページ)を、ネットワーク1を介してユーザ端末60に送信するとともに、ユーザ端末60で入力されてネットワーク1を介して送信されてくるチケット情報(プロジェクト、工程、構成要素の指定情報を含む)を受信し、受信したチケット情報を、チケットID、プロジェクトID、工程ID、および構成要素IDと関連付けてチケットテーブル41(図3参照)に記憶させる処理を実行するものである。
図6において、チケット登録画面200には、プロジェクトの選択部201と、テーブルの選択部202と、登録するチケットの種類(バグチケット、タスクチケット、保留チケットの別:Classification)の選択部210と、バグが発生(バグを発見)した工程(Phase)の選択部211と、バグの発生個所を示す構成要素(Component Part)の選択部212と、バグの概要(Summary)の入力部220と、ステータス(Status)の選択部230と、優先度(Priority)の選択部231と、重大度(Severity)の選択部232と、バグの現象(Issue)の入力部240と、バグの原因(Cause)の入力部250と、バグ分類(Bug Class:設計バグ、プログラムバグの別)の選択部260と、担当者(Staff)の選択部261と、解決者(Resolver)の選択部262と、バグの発生日(Accrual Date)の入力部270と、バグを解決する期限日(Deadline Date)の入力部271と、バグの対策開始日(Start Date)の入力部272と、バグの対策完了日(解決日:Resolution Date)の入力部273と、バグに関する備考(Note)の入力部280と、参照ボタン290と、登録ボタン(Submitボタン)291と、「検索に戻る」ボタン(Back to Search)292とが設けられている。
ここで、チケットIDは、チケット登録手段24により自動付与される。選択部211で選択する工程は、バグが発生した工程であるが、バグを発見した工程(バグの存在が発覚したときの工程)という意味であり、バグの発生原因となった作業が行われた工程という意味ではない。バグの発生原因となった作業が行われた工程という入力項目はなく、選択部260でバグ分類として、設計に起因する設計バグであるか、プログラムに起因するプログラムバグであるかを選択する。バグは、いずれの工程でも発生し得る。設計工程での作業に起因するバグ(設計書の作成不備)が、設計工程での別の作業で発生する(発見される)ことがあり、その場合は、バグの発生した工程として設計工程が選択され、バグ分類として設計バグが選択される。また、設計工程での作業に起因するバグが、コーディング工程で発生する(発見される)ことがあり、その場合は、バグの発生した工程としてコーディング工程が選択され、バグ分類として設計バグが選択される。さらに、コーディング工程での作業に起因するバグ(コーディングの不備)が、コーディング工程の別の作業で発生する(発見される)ことがあり、その場合は、バグの発生した工程としてコーディング工程が選択され、バグ分類としてプログラムバグが選択される。バグが発生した場合には、原則的に、そのバグが発生した工程での解決が図られる。
図6のチケット登録画面200において、ユーザが、選択部201でプロジェクト(この例では「Project21」)を選択し、選択部202でチケットテーブル(この例では「Ticket」)を選択し、選択部210でチケットの種類(この例では「Bug:バグチケット」)を選択し、選択部211でバグが発生(バグを発見)した工程(この例では「coding:コーディング工程」)を選択し、選択部212でバグの発生個所を示す構成要素(この例では「ユーザ管理/ユーザ登録/新規登録/登録画面」)を選択し、入力部220でバグの概要を示すテキストデータを入力し、各選択部230〜232での選択を行い、入力部240でバグの現象を示すテキストデータを入力し、入力部250でバグの原因を示すテキストデータを入力し、選択部260でバグ分類(この例では「Program bug:プログラムバグ」)を選択し、各選択部261,262での選択および各入力部270〜273での入力を行い、入力部280でバグに関する備考を示すテキストデータを入力した後、登録ボタン291をクリックすると、入力した登録対象のチケット情報が、ユーザ端末60からネットワーク1を介してプロジェクト管理サーバ20に送信され、チケット登録手段24によりチケットテーブル41(図3参照)に記憶される。
また、登録したチケット情報の更新(例えば、バグの対策完了日(解決日)の入力や、バグの原因の入力等)も、図6のチケット登録画面200で行うことができる。チケットの最初の登録時には、登録ボタン(Submitボタン)291が設けられているが、その後の更新時には、図6の最下部に点線で示すように、登録ボタン291の代わりに、更新ボタン(Updateボタン)293が設けられているので、ユーザが、画面200で更新情報を選択または入力し、更新ボタン293をクリックすると、更新後のチケット情報が、ユーザ端末60からネットワーク1を介してプロジェクト管理サーバ20に送信され、チケット登録手段24によりチケットテーブル41(図3参照)に記憶される。
さらに、図6のチケット登録画面200において、参照ボタン290をクリックすると、チケット登録手段24により、チケットテーブル41に記憶されたレコードのデータを用いて、ユーザ端末60の画面上にチケット参照画面300(図7参照)が表示され、ユーザは、登録したチケット情報または更新後のチケット情報の内容を参照することができる。図7の例のID=10002124というのは、参照対象とされているチケットについてのチケットIDである。
また、図7のチケット参照画面300には、チケットを相互に関連付けるグループ(Group)の設定部310が設けられている。この設定部310で、親子関係の設定(Parent and Child)を選択し、グループ名(この例では「Group1」)を入力し、グループ作成ボタン(Make Groupボタン)311をクリックすると、グループの設定部310の中に、図7で参照対象とされているチケット(この例では「チケットID=10002124」)との親子関係の設定部が表示される。ユーザが、この親子関係の設定部で、子のチケットについてのチケットID(この例では「10002123」)を入力し、追加ボタン(addボタン)をクリックすると、チケット登録手段24により、親子関係の子としてグループに関連付けるチケットが登録され、グループの設定部310の中に、関連付けられた子のチケット(この例では「チケットID=10002123」)が、親のチケット(この例では「チケットID=10002124」)とともに表示される。バグAを修正するためには、バグBが修正されていないといけない場合は、バグBのチケットをバグAの子のチケットとして登録する。この親子関係は、ユーザの人為的な判断で決められる。なお、登録された親子関係を含むグループ情報は、図示されないグループテーブルに記憶される。
また、チケット登録手段24は、ユーザの要求に応じ、チケット検索画面400(図8参照)の表示用データ(WEBページ)を、ネットワーク1を介してユーザ端末60に送信するとともに、ユーザ端末60で入力されてネットワーク1を介して送信されてくる検索条件を受信し、受信した検索条件を用いて、チケットテーブル41(図3参照)から検索条件に該当するレコードを抽出し、抽出したレコードに記憶されたチケット情報を、ネットワーク1を介してユーザ端末60に送信することにより、チケット検索画面400に検索結果を表示する処理を実行するものである。
具体的には、図8のチケット検索画面400において、ユーザが、プロジェクトの選択部401でプロジェクト(この例では「Project21」)を選択し、テーブルの選択部402でチケットテーブル(この例では「Ticket」)を選択し、検索条件入力部410の各項目において検索条件を選択または入力した後、検索ボタン(Searchボタン)430をクリックすると、検索条件が、ユーザ端末60からネットワーク1を介してプロジェクト管理サーバ20に送信され、チケット登録手段24によりチケットテーブル41(図3参照)の検索処理が実行され、その検索結果が、ネットワーク1を介してユーザ端末60に送信され、ユーザ端末60上に記憶される。その後、ユーザが、検索結果表示項目選択部420で検索結果を表示する項目を選択(全項目も選択可)すると、検索結果として得られた情報(プロジェクト管理サーバ20からの取得情報)を用いて、選択した検索結果表示項目が、検索結果表示部440に表示される。従って、検索ボタン430のクリックによる再取得を行わなくても、検索結果表示項目選択部420での選択内容を変えれば、検索結果表示部440の表示内容が変わるようになっている。また、検索結果表示項目選択部420での選択は、検索ボタン430をクリックする前に行ってもよく、検索結果表示項目選択部420での選択内容は、チケット登録手段24による検索処理の内容(プロジェクト管理サーバ20から取得する情報の内容)に影響を与えない。このような検索結果表示項目選択部420での選択に基づく検索結果表示部440への表示処理は、WEBページに付随してプロジェクト管理サーバ20から提供されるプログラム(例えば、JavaScript(ECMAScript)等:JavaScriptは登録商標)で実行されるが、ユーザ端末60に搭載されている専用のプログラムで実行してもよい。
なお、検索条件入力部410で選択または入力した検索条件、および検索結果表示項目選択部420で選択した検索結果表示項目の双方を用いて、チケット登録手段24による検索処理を行うようにしてもよく、その場合には、検索結果表示項目選択部420で選択内容を変える都度に、検索ボタン430をクリックして表示対象の情報をプロジェクト管理サーバ20から取得し直す。
<プロジェクト管理サーバ20/処理手段20A/構成要素属性情報登録手段25の構成:図9、図10>
構成要素属性情報登録手段25は、ユーザの要求に応じ、構成要素属性情報登録画面500(図9、図10参照)やテスト進捗情報登録画面550(図10参照)の表示用データ(WEBページ)を、ネットワーク1を介してユーザ端末60に送信するとともに、ユーザ端末60で入力されてネットワーク1を介して送信されてくる構成要素の属性情報やテスト進捗情報(いずれもプロジェクト、工程、構成要素の指定情報を含む)を受信し、受信した構成要素の属性情報やテスト進捗情報を、プロジェクトID、工程ID、および構成要素IDと関連付けて構成要素属性情報テーブル46やテスト進捗情報テーブル48(図3参照)に記憶させる処理を実行するものである。
図9において、構成要素属性情報登録画面500には、プロジェクトの選択部501と、工程(Phase)の選択部510と、属性情報の登録(新規登録、変更)対象の構成要素(Component Part)の選択部520と、選択した構成要素の属性情報を構成要素属性情報テーブル46(図3参照)から取得する取得ボタン(Loadボタン)521と、選択した構成要素の属性情報の入力部530とが設けられている。
属性情報の入力部530は、選択部510で選択される工程により異なる。従って、登録される属性情報の項目は工程毎に異なり、全ての工程に共通する項目と、各工程に固有の項目とがある。より正確には、属性情報の入力部530は、工程分類毎に異なる項目となるので、選択部510で選択された工程(例えば、「design1」という名称の工程)が、いずれの工程分類に属するのかを工程情報テーブル43(図3参照)から取得し、取得した工程分類に従って、表示される項目が決まる。
図9の上部に示すように、選択部510で設計工程(designフェーズ)を選択した場合には、属性情報の入力部530には、選択部520で選択した構成要素およびその配下にある全ての構成要素について各構成要素の名称およびそれらの上位の階層の構成要素の名称を表示する構成要素の階層情報の表示部と、各構成要素の構成要素単位での作業(設計工程では、設計書の作成作業)の進捗(Progess:この例では設計進捗率)の表示部と、予定開始日(Plan dateのStart)、予定完了日(Plan dateのEnd)、実績開始日(Actual dateのStart)、および実績完了日(Actual dateのEnd)の各入力部と、予定ページ数(Document PagesのPlan)の入力部531と、実績ページ数(Document PagesのActual)の入力部532と、担当者の選択部と、承認のチェックの入力部と、更新ボタン(Updateボタン)と、ガントチャートの表示部とが設けられている。このうち、予定ページ数および実績ページ数の各入力部531,532は、設計工程に固有の入力項目である。
ここで、構成要素の階層情報の表示部は、構成要素テーブル45(図3参照)を用いて表示される。すなわち、構成要素テーブル45から、選択部520で選択した構成要素(自分)についての階層情報(自分および自分の上位の全階層を示す大構成要素ID、中構成要素ID、小構成要素ID、最小構成要素IDの組合せ情報)と同じ階層情報を含む構成要素のレコードを抽出することにより、選択した構成要素およびその配下にある全ての構成要素の情報を取得することができる。図9の上部の例では、選択部520で「ユーザ管理/ユーザ登録/コピー登録」という構成要素を選択しているので、「ユーザ管理」の大構成要素IDと、「ユーザ登録」の中構成要素IDと、「コピー登録」の小構成要素IDとの全部を含む構成要素を抽出することにより、選択した構成要素およびその配下にある全ての構成要素(例えば、「ユーザ管理/ユーザ登録/コピー登録/登録処理」等)の情報を取得することができる。
ガントチャートの表示部には、予定開始日から予定完了日までを結ぶ棒グラフ(図中では点線で示されているが、実際には着色表示)と、実績開始日から実績完了日または本日までを結ぶ棒グラフ(図中では実線で示されているが、実際には着色表示)とが表示される。
図9の下部に示すように、選択部510でコーディング工程(codingフェーズ)を選択した場合には、属性情報の入力部530には、図9の上部に示した設計工程の場合と略同様な項目が表示されるが、異なる点は、設計工程に固有の入力項目である予定ページ数(Document PagesのPlan)および実績ページ数(Document PagesのActual)の各入力部531,532に代えて、コーディング工程に固有の入力項目として予定ソースコード規模(KLOCのPlan)の入力部533および実績ソースコード規模(KLOCのActual)の入力部534が表示される点である。KLOCは、コンピュータプログラムの規模を表す単位であり、1KLOC=ソースコード1,000行である。また、図9の下部にも進捗(Progress)の表示部があるが、コーディング工程では、各構成要素の構成要素単位でのコーディング作業の進捗(この例では、コーディング進捗率)が表示される。
図10の上部に示すように、選択部510でテスト工程(testingフェーズ)を選択した場合には、属性情報の入力部530には、予定ページ数および実績ページ数の各入力部531,532(図9の上部参照)や、予定ソースコード規模および実績ソースコード規模の各入力部533,534(図9の下部参照)に代えて、テスト工程に固有の入力項目として予定テスト項目数(Test itemsのPlan)の入力部535、実績テスト項目数(Test itemsのActual)の入力部536、予定テスト実施数(Test progressのPlan)の表示部537、実績テスト実施数(Test progressのActual)の表示部538、および編集ボタン(Editボタン)539が表示される。
ここで、予定テスト項目数(Test itemsのPlan)は、構成要素のKLOC等を元に設定する予定数であり、一方、実績テスト項目数(Test itemsのActual)は、実際に作成したテスト項目数である。また、予定テスト実施数(Test progressのPlan)は、日々のテスト消化数の予定(何月何日に何件のテスト項目を消化する予定か)を全ての日について合計した数であり、実績テスト実施数(Test progressのActual)は、日々のテスト消化数の実績(何月何日に何件のテスト項目を消化したか)を全ての日について合計した数である。テスト工程では、テストを実施する前にテスト項目(「テスト仕様書」ともいう)を作成する。全てが予定通りに行けば、テスト項目の作成完了時点では、予定テスト項目数=実績テスト項目数となり、また、テスト完了時点では、予定テスト項目数=実績テスト項目数=予定テスト実施数=実績テスト実施数となる。但し、テスト項目の作成中にテスト項目数を変更することがあり、また、テスト実施中に一部のテスト項目を対象外としたり、追加したりすることもあるので、必ずしも上記のように4つの数値が一致するとは限らない。
さらに、図10の上部に示した編集ボタン(Editボタン)539をクリックすると、構成要素属性情報登録手段25により、図10の下部に示すようなテスト進捗情報登録画面550が表示される。このテスト進捗情報登録画面550は、日々のテスト進捗情報を、構成要素毎で、かつ、テスト実施日毎に登録する画面である。
図10の下部に示すテスト進捗情報登録画面550には、プロジェクトの選択部551と、工程の選択部560と、登録対象とするテスト実施日の範囲を指定する指定期間の始期および終期の各入力部561,562と、テスト進捗情報の登録(新規登録、更新)対象の構成要素(Component Part)の選択部570と、選択した構成要素の指定期間内のテスト進捗情報をテスト進捗情報テーブル48(図3参照)から取得する取得ボタン(Loadボタン)571と、選択した構成要素の指定期間内のテスト進捗情報の入力部580とが設けられている。
図10の上部に示した編集ボタン(Editボタン)539をクリックした場合には、図10の上部の選択部501で選択されたプロジェクト、選択部510で選択した工程が、図10の下部に示したプロジェクトの選択部551、工程の選択部560に引き継がれるとともに、編集ボタン539をクリックした行の構成要素が、構成要素の選択部570に引き継がれる。図10の例では、「ユーザ管理/ユーザ登録/コピー登録/登録処理」という構成要素の行で、編集ボタン539がクリックされているので、その構成要素が、構成要素の選択部570に引き継がれて表示される。
図10の下部に示したテスト進捗情報の入力部580には、指定期間内の各テスト実施日(Date)の表示部と、各日の予定テスト実施数(Plan)の入力部およびその更新ボタン(Updateボタン)と、各日の実績テスト実施数(Actual)の入力部およびその更新ボタン(Updateボタン)とが設けられている。各日の予定テスト実施数を全ての日について合計した数が、図10の上部の予定テスト実施数(Test progressのPlan)の表示部537に表示され、各日の実績テスト実施数を全ての日について合計した数が、図10の上部の実績テスト実施数(Test progressのActual)の表示部538に表示されるようになっている。
また、図示は省略されているが、図9、図10の構成要素属性情報登録画面500において、選択部510で運用工程や保守工程を選択した場合にも、属性情報の入力部530が表示される。但し、運用工程や保守工程では、設計工程に固有の項目である予定ページ数および実績ページ数の各入力部531,532(図9の上部参照)、コーディング工程に固有の項目である予定ソースコード規模および実績ソースコード規模の各入力部533,534(図9の下部参照)、テスト工程に固有の項目である予定テスト項目数および実績テスト項目数の各入力部535,536、予定テスト実施数および実績テスト実施数の各表示部537,538、および編集ボタン539(図10の上部参照)は表示されない。
図9、図10の構成要素属性情報登録画面500において、ユーザが、選択部501でプロジェクトを選択し、選択部510で工程を選択し、選択部520で構成要素を選択し、取得ボタン521をクリックすると、構成要素属性情報登録手段25により、構成要素テーブル45(図3参照)から、選択した構成要素およびその配下にある全ての構成要素の情報が取得され、さらに、取得した各構成要素ID、選択したプロジェクトについてのプロジェクトID、および選択した工程についての工程IDを用いて構成要素属性情報テーブル46(図3参照)から各構成要素の属性情報(既登録の情報がある場合には、既登録の情報)が取得され、属性情報の入力部530が表示される。ユーザが、この属性情報の入力部530で、表示されている構成要素のいずれかについて各項目の入力(更新を含む)を行い、その構成要素の行に設けられた更新ボタン(Updateボタン)をクリックすると、その構成要素の属性情報(プロジェクト、工程の指定情報を含む)が、ユーザ端末60からネットワーク1を介してプロジェクト管理サーバ20に送信され、構成要素属性情報登録手段25により、プロジェクトID、工程ID、および構成要素IDと関連付けて構成要素属性情報テーブル46に記憶される。
また、テスト工程では、図10の上部に示した構成要素属性情報登録画面500において、ユーザが、属性情報の入力部530で、表示されている構成要素のいずれかについて編集ボタン539をクリックすると、図10の下部のテスト進捗情報登録画面550が表示される。ユーザが、このテスト進捗情報登録画面550において、選択部551でプロジェクトを選択し、選択部560で工程を選択し、各入力部561,562で指定期間の始期および終期を入力し、選択部570で構成要素を選択した後(但し、プロジェクト、工程、構成要素は、画面500から引き継がれている)、取得ボタン571をクリックすると、構成要素属性情報登録手段25により、テスト進捗情報テーブル48(図3参照)から、テスト進捗情報(既登録の情報がある場合には、既登録の情報)が取得され、テスト進捗情報の入力部580が表示される。ユーザが、このテスト進捗情報の入力部580で、表示されている指定期間内のいずれかのテスト実施日について各項目の入力(更新を含む)を行い、そのテスト実施日の行に設けられた更新ボタン(Updateボタン)をクリックすると、そのテスト実施日のテスト進捗情報(構成要素、プロジェクト、工程の指定情報を含む)が、ユーザ端末60からネットワーク1を介してプロジェクト管理サーバ20に送信され、構成要素属性情報登録手段25により、構成要素ID、プロジェクトID、および工程IDと関連付けてテスト進捗情報テーブル48に記憶される。
さらに、構成要素属性情報登録手段25は、図10の上部に示すように、選択部510でテスト工程が選択された場合において、次のような入力支援を行う構成としてもよい。すなわち、構成要素属性情報登録手段25は、先ず、現在進行中のプロジェクトについてのプロジェクトID以外のプロジェクトIDを用いて、構成要素属性情報テーブル46(図3参照)に記憶された過去のプロジェクトの全ての構成要素についての実績ソースコード規模(KLOC)を取得して合計し、かつ、全ての構成要素についての実績テスト項目数を取得して合計し、さらに、得られた実績ソースコード規模の合計値および実績テスト項目数の合計値を、全ての過去のプロジェクトについて集計し、実績テスト項目数の合計値の集計値を、実績ソースコード規模の合計値の集計値で除することにより、単位ソースコード規模あたりのテスト項目数の基準値を算出する。この基準値は、構成要素属性情報登録手段25による登録処理が行われる都度に、毎回算出してもよく、構成要素属性情報登録手段25により予め算出しておき、図示されない基準値記憶手段に記憶しておいてもよい。
次に、構成要素属性情報登録手段25は、テスト工程の選択を受け付けたときに、図10の上部の属性情報の入力部530における各構成要素の入力部535に、予定テスト項目数(Test itemsのPlan)が未入力の場合には、構成要素属性情報テーブル46(図3参照)に記憶された進行中のプロジェクトの各構成要素の実績ソースコード規模(KLOC)に、算出した基準値または図示されない基準値記憶手段に記憶された基準値を乗じることにより、各構成要素の予定テスト項目数を自動算出して入力する処理を実行する。また、各構成要素の入力部535に、予定テスト項目数の手動入力が行われた場合には、手動入力された値が、基準値に対して予め定められた範囲内(例えば、基準値×0.8から基準値×1.2までの範囲内)にあるか否かを判定し、その範囲内にない場合には、手動入力された値が適切でない旨の警告を表示する処理を実行する。
<プロジェクト管理サーバ20/処理手段20A/品質指標値登録手段26の構成:図11>
品質指標値登録手段26は、ユーザの要求に応じ、品質指標値登録画面600(図11参照)の表示用データ(WEBページ)を、ネットワーク1を介してユーザ端末60に送信するとともに、ユーザ端末60で入力されてネットワーク1を介して送信されてくる品質指標値に関する情報(プロジェクト、工程、構成要素の指定情報を含む)を受信し、受信した品質指標値に関する情報を、プロジェクトID、工程ID、および構成要素IDと関連付けて品質指標値テーブル47(図3参照)に記憶させる処理を実行するものである。なお、本願では、除算によって得られた値そのもの(通常、品質指標値と呼ぶもの)ではなく、その値の適正範囲を定める閾値(最小値および最大値)を、品質指標値と呼ぶ。
図11において、品質指標値登録画面600には、プロジェクトの選択部601と、工程(Phase)の選択部610と、品質指標値の登録(新規登録、変更)対象の構成要素(Component Part)の選択部620と、選択した構成要素の品質指標値を品質指標値テーブル47(図3参照)から取得する取得ボタン(Loadボタン)621と、選択した構成要素の品質指標値の一覧表示部630とが設けられている。
品質指標値の一覧表示部630に表示される入力項目は、工程によって異なる。より正確には、工程種別毎に異なる。この点は、前述した図9、図10に示した構成要素属性情報登録画面500における属性情報の入力部530の場合と同様である。
選択部610でテスト工程を選択した場合には、図11に示すように、品質指標値の一覧表示部630には、選択部620で選択した構成要素およびその配下の全ての構成要素についての各構成要素の名称およびそれらの上位の階層の構成要素の名称を表示する構成要素の階層情報の表示部631と、最小テスト項目数/ソースコード1000行(Test items/KLOCのMin:テスト項目数をソースコード規模(KLOC)で除して得られた単位ソースコード規模(ソースコード1000行)あたりのテスト項目数の最小値)の表示部632と、最大テスト項目数/ソースコード1000行(Test items/KLOCのMax:テスト項目数をソースコード規模(KLOC)で除して得られた単位ソースコード規模(ソースコード1000行)あたりのテスト項目数の最大値)の表示部633と、最小バグ数/ソースコード1000行(Bugs/KLOCのMin:バグ数をソースコード規模(KLOC)で除して得られた単位ソースコード規模(ソースコード1000行)あたりのバグ数の最小値)の表示部634と、最大バグ数/ソースコード1000行(Bugs/KLOCのMax:バグ数をソースコード規模(KLOC)で除して得られた単位ソースコード規模(ソースコード1000行)あたりのバグ数の最大値)の表示部635と、最小チケット数/ソースコード1000行(Tickets/KLOCのMin:チケット数をソースコード規模(KLOC)で除して得られた単位ソースコード規模(ソースコード1000行)あたりのチケット数の最小値)の表示部636と、最大チケット数/ソースコード1000行(Tickets/KLOCのMax:チケット数をソースコード規模(KLOC)で除して得られた単位ソースコード規模(ソースコード1000行)あたりのチケット数の最大値)の表示部637と、更新ボタン(Updateボタン)638と、コピーボタン(Copyボタン)639とが表示される。
また、図示は省略されているが、選択部610で設計工程を選択した場合には、設計工程では未だKLOCは入力されていないので、品質指標値の一覧表示部630には、上述したKLOCで除した品質指標値の各表示部632〜637の代わりに、ページ数で除した次のような品質指標値の各表示部を表示する。すなわち、最小チケット数/ページ(チケット数をページ数で除して得られた1ページあたりのチケット数の最小値)の表示部と、最大チケット数/ページ(チケット数をページ数で除して得られた1ページあたりのチケット数の最大値)の表示部と、最小バグ数/ページ(バグ数をページ数で除して得られた1ページあたりのバグ数の最小値)の表示部と、最大バグ数/ページ(バグ数をページ数で除して得られた1ページあたりのバグ数の最大値)の表示部とが表示される。
さらに、選択部610で運用工程や保守工程を選択した場合には、これらの工程では既にKLOCが入力されているため、品質指標値の一覧表示部630には、図11の各表示部634〜637が表示される。
図11の品質指標値登録画面600において、ユーザが、選択部601でプロジェクトを選択し、選択部610で工程を選択し、選択部620で構成要素を選択した後、取得ボタン621をクリックすると、品質指標値登録手段26により、構成要素テーブル45(図3参照)から、選択した構成要素(この例では「ユーザ管理/ユーザ登録/コピー登録」)およびその配下にある全ての構成要素の情報が取得され、さらに、取得した各構成要素ID、選択したプロジェクトについてのプロジェクトID、および選択した工程についての工程IDを用いて品質指標値テーブル47(図3参照)から各構成要素の品質指標値(既登録の情報がある場合には、既登録の情報)が取得され、品質指標値の一覧表示部630が表示される。ユーザが、この品質指標値の一覧表示部630で、表示されている構成要素のうちのいずれかの構成要素の行に設けられている更新ボタン(Updateボタン)638をクリックすると、図11に示すように、その構成要素(この例では「ユーザ管理/ユーザ登録/コピー登録/登録画面」)についての品質指標値入力画面650が表示される。
図11の品質指標値入力画面650には、品質指標値の一覧表示部630における各表示部632〜637に表示された各品質指標値の入力部が設けられている。ユーザが、これらの入力部に各品質指標値を入力し、更新ボタン(Updateボタン)651をクリックすると、入力した各品質指標値に関する情報(プロジェクト、工程、構成要素の指定情報を含む)が、ユーザ端末60からネットワーク1を介してプロジェクト管理サーバ20に送信され、品質指標値登録手段26により、各品質指標値が、プロジェクトID、工程ID、および構成要素IDと関連付けて品質指標値テーブル47(図3参照)に記憶される。この登録により、図11に示すように、品質指標値の一覧表示部630における当該構成要素(この例では「ユーザ管理/ユーザ登録/コピー登録/登録画面」)の行の各表示部632〜637の値は、品質指標値入力画面650で入力された更新後の値に変わる。
また、ユーザが、品質指標値の一覧表示部630で、表示されている構成要素のうちの階層の種別が大構成要素(Large)、中構成要素(Medium)、または小構成要素(Small)の構成要素の行に設けられているコピーボタン(Copyボタン)639をクリックすると、図11に示すように、品質指標値コピー画面660が表示される。ユーザが、この品質指標値コピー画面660でコピーボタン(Copyボタン)661をクリックすると、図11に示すように、品質指標値の一覧表示部630においてコピーボタン(Copyボタン)639が設けられていた行の構成要素(この例では「ユーザ管理/ユーザ登録/コピー登録」)の各品質指標値が、その配下の全ての構成要素(この例では「ユーザ管理/ユーザ登録/コピー登録/登録画面」等)にコピーされ、品質指標値テーブル47(図3参照)に記憶される。
<プロジェクト管理サーバ20/処理手段20A/品質・進捗情報表示手段27の構成:図13>
品質・進捗情報表示手段27は、ユーザの表示要求に応じ、チケットテーブル41(図3参照)に記憶されたチケット情報(ここでは、バグチケット)、構成要素テーブル45(図3参照)に記憶された各構成要素の階層情報、構成要素属性情報テーブル46(図3参照)に記憶された各構成要素の属性情報、品質指標値テーブル47(図3参照)に記憶された各構成要素の品質指標値、およびテスト進捗情報テーブル48(図3参照)に記憶された各構成要素のテスト進捗情報を取得し、図13に示す品質・進捗情報表示画面800の表示用データ(WEBページ)を、ネットワーク1を介してユーザ端末60に送信する処理を実行するものである。
図13において、品質・進捗情報表示画面800には、プロジェクトの選択部801と、工程(Phase)の選択部810と、表示対象とする構成要素の階層の種別(Hierarchy of Component Part)の選択部820と、選択した階層の種別の各構成要素の属性情報およびテスト進捗情報を構成要素属性情報テーブル46およびテスト進捗情報テーブル48(図3参照)から取得する取得ボタン(Loadボタン)821と、取得した各構成要素の属性情報およびテスト進捗情報を表示する品質・進捗情報の一覧表示部830とが設けられている。
品質・進捗情報の一覧表示部830の表示項目は、選択部810で選択する工程により異なる。より正確には、工程分類毎に異なる。全ての工程に共通の項目と、各工程に固有の項目とがある。なお、図13では、記載スペースの都合上、品質・進捗情報の一覧表示部830が上下2段に分けて記載されているが、実際には、横方向に繋がっている。
図13の上部に示すように、選択部810でテスト工程が選択された場合には、品質・進捗情報の一覧表示部830には、選択部820で選択した階層の種別の各構成要素の名称およびそれらの上位の階層の構成要素の名称を表示する構成要素の階層情報の表示部831と、予定開始日(Plan dateのStart)の表示部832と、予定完了日(Plan dateのEnd)の表示部833と、実績開始日(Actual dateのStart)の表示部834と、実績完了日(Actual dateのEnd)の表示部835と、進捗(Testing Progress:予定テスト実施数に対する実績テスト実施数の割合を示すテスト進捗率)の表示部836と、発生(発見)したバグ数(Bugs)の表示部837と、発生(発見)したバグ数(登録したバグチケットの数)を実績ソースコード規模で除した値(Bugs/KLOC:単位実績ソースコード規模(実績ソースコード1000行)あたりのバグ数)の表示部838と、品質指標値としての最小バグ数/ソースコード1000行(Metrix Bugs/KLOCのMin:バグ数をソースコード規模(KLOC)で除して得られた単位ソースコード規模(ソースコード1000行)あたりのバグ数の最小値)の表示部839と、品質指標値としての最大バグ数/ソースコード1000行(Metrix Bugs/KLOCのMax:バグ数をソースコード規模(KLOC)で除して得られた単位ソースコード規模(ソースコード1000行)あたりのバグ数の最大値)の表示部840と、登録したチケット数(tickets)の表示部841と、登録したチケット数(バグチケットを含むチケットの数)を実績ソースコード規模で除した値(tickets/KLOC:単位実績ソースコード規模(実績ソースコード1000行)あたりのチケット数)の表示部842と、品質指標値としての最小チケット数/ソースコード1000行(Metrix Tickets/KLOCのMin:チケット数をソースコード規模(KLOC)で除して得られた単位ソースコード規模(ソースコード1000行)あたりのチケット数の最小値)の表示部843と、品質指標値としての最大チケット数/ソースコード1000行(Metrix Tickets/KLOCのMax:チケット数をソースコード規模(KLOC)で除して得られた単位ソースコード規模(ソースコード1000行)あたりのチケット数の最大値)の表示部844と、実績テスト項目数を実績ソースコード規模で除した値(Test items/KLOC:単位実績ソースコード規模(実績ソースコード1000行)あたりの実績テスト項目数)の表示部845と、品質指標値としての最小テスト項目数/ソースコード1000行(Metrix Test items/KLOCのMin:テスト項目数をソースコード規模(KLOC)で除して得られた単位ソースコード規模(ソースコード1000行)あたりのテスト項目数の最小値)の表示部846と、最大テスト項目数/ソースコード1000行(Metrix Test items/KLOCのMax:テスト項目数をソースコード規模(KLOC)で除して得られた単位ソースコード規模(ソースコード1000行)あたりのテスト項目数の最大値)の表示部847と、予定ソースコード規模(KLOCのPlan)の表示部848と、実績ソースコード規模(KLOCのActual)の表示部849と、予定テスト項目数(Test itemsのPlan)の表示部850と、実績テスト項目数(Test itemsのActual)の表示部851と、予定テスト実施数(TestingのPlan)の表示部852と、実績テスト実施数(TestingのActual)の表示部853と、担当者(Staff)の表示部854と、承認(Approval)の表示部855とが設けられている。
このうち、全工程に共通の表示項目は、構成要素の階層情報の表示部831と、予定開始日、予定完了日、実績開始日、および実績完了日の各表示部832〜835と、バグ数の表示部837と、チケット数の表示部841と、担当者名の表示部854と、承認の表示部855とである。一方、その他の表示項目は、テスト工程に固有の表示項目であるが、他の工程に存在しないという意味ではなく、全工程に共通ではないという意味である。従って、例えば、バグ数を実績ソースコード規模で除した値(Bugs/KLOC)の表示部838は、テスト工程だけではなく、コーディング工程、運用工程、保守工程にもあるが、実績ソースコード規模がコーディング工程で登録されることから、コーディング工程よりも前の工程である設計工程には、表示部838はない。
ここで、構成要素の階層情報の表示部831は、選択部820で選択された構成要素の階層の種別を用いて、構成要素テーブル45(図3参照)から階層情報を取得し、表示される。
予定開始日、予定完了日、実績開始日、および実績完了日の各表示部832〜835は、選択部801で選択されたプロジェクトについてのプロジェクトID、選択部810で選択された工程についての工程ID、および各構成要素IDを用いて、構成要素属性情報テーブル46(図3参照)から該当情報を取得し、表示される。
進捗(テスト進捗率)の表示部836は、選択部801で選択されたプロジェクトについてのプロジェクトID、選択部810で選択された工程についての工程ID、および各構成要素IDを用いて、テスト進捗情報テーブル48(図3参照)から各テスト実施日における実績テスト実施数および予定テスト実施数を取得し、各テスト実施日の実績テスト実施数の合計数を、各テスト実施日における予定テスト実施数の合計数で除することによりテスト進捗率を算出し、表示される。
バグ数の表示部837は、選択部801で選択されたプロジェクトについてのプロジェクトID、および選択部810で選択された工程についての工程IDを用いて、チケットテーブル41(図3参照)からチケットを取得し、同じ構成要素IDに関連付けられたバグチケットのチケット数をカウントして各構成要素のバグ数を算出し、表示される。
バグ数を実績ソースコード規模で除した値の表示部838には、表示部837に表示されたバグ数を、表示部849に表示された実績ソースコード規模で除した値が表示される。品質指標値としての最小バグ数/ソースコード1000行および最大バグ数/ソースコード1000行の各表示部839,840は、プロジェクトID、工程ID、および各構成要素IDを用いて、品質指標値テーブル47(図3参照)から該当情報を取得し、表示される。また、品質・進捗情報表示手段27は、表示部838を表示する際には、表示部838の値が、表示部839の品質指標値としての最小値未満である場合にはその旨を示す最小値未満表示処理を実行し、表示部840の品質指標値としての最大値を超える場合にはその旨を示す最大値超過表示処理を実行する。この際、最小値未満表示処理は、図13の例では、斜線表示処理だが、実際には、例えば緑色等の着色表示処理である。一方、最大値超過表示処理は、図13の例では、斜線による網掛け表示処理だが、実際には、例えばピンク色等の着色表示処理であり、最小値未満表示処理とは異なる色の着色表示処理である。なお、これらの表示処理は、着色による枠内の塗り潰し表示処理に限らず、例えば、着色した枠による枠囲い表示処理、点滅表示処理、数字自体の着色表示処理、数字を太文字や別の字体に変える表示処理、これらの組合せ表示処理等でもよい。他の表示項目における最小値未満表示処理や最大値超過表示処理も同様である。
チケット数の表示部841は、前述したバグ数の表示部837の場合と同様であり、プロジェクトIDおよび工程IDを用いて、チケットテーブル41(図3参照)からチケット(バグチケットを含む)を取得し、同じ構成要素IDに関連付けられたチケット数をカウントして各構成要素のチケット数を算出し、表示される。
チケット数を実績ソースコード規模で除した値の表示部842には、表示部841に表示されたチケット数を、表示部849に表示された実績ソースコード規模で除した値が表示される。品質指標値としての最小チケット数/ソースコード1000行および最大チケット数/ソースコード1000行の各表示部843,844は、プロジェクトID、工程ID、および各構成要素IDを用いて、品質指標値テーブル47(図3参照)から該当情報を取得し、表示される。また、品質・進捗情報表示手段27は、表示部842を表示する際には、表示部842の値が、表示部843の品質指標値としての最小値未満である場合にはその旨を示す最小値未満表示処理を実行し、表示部844の品質指標値としての最大値を超える場合にはその旨を示す最大値超過表示処理を実行する。
実績テスト項目数を実績ソースコード規模で除した値の表示部845には、表示部851に表示された実績テスト項目数を、表示部849に表示された実績ソースコード規模で除した値が表示される。品質指標値としての最小テスト項目数/ソースコード1000行および最大テスト項目数/ソースコード1000行の各表示部846,847は、プロジェクトID、工程ID、および各構成要素IDを用いて、品質指標値テーブル47(図3参照)から該当情報を取得し、表示される。また、品質・進捗情報表示手段27は、表示部845を表示する際には、表示部845の値が、表示部846の品質指標値としての最小値未満である場合にはその旨を示す最小値未満表示処理を実行し、表示部847の品質指標値としての最大値を超える場合にはその旨を示す最大値超過表示処理を実行する。
予定ソースコード規模および実績ソースコード規模の各表示部848,849、予定テスト項目数および実績テスト項目数の各表示部850,851は、プロジェクトID、工程ID、および各構成要素IDを用いて、構成要素属性情報テーブル46(図3参照)から該当情報を取得し、表示される。なお、予定ソースコード規模および実績ソースコード規模(KLOC)は、コーディング工程で登録されるので、テスト工程ではなく、コーディング工程についての工程IDに関連付けられて構成要素属性情報テーブル46に記憶されているが、コーディング工程で登録された後に、全ての工程についての工程IDに関連付けて構成要素属性情報テーブル46に記憶しておいてもよい。
予定テスト実施数および実績テスト実施数の各表示部852,853は、プロジェクトID、工程ID、および各構成要素IDを用いて、テスト進捗情報テーブル48(図3参照)に記憶された各構成要素のテスト進捗情報(日々のテスト項目消化の予定および実績を示す予定テスト実施数および実績テスト実施数)を取得し、取得した日々の情報を全ての日について合計した値を算出し、表示される。
担当者名および承認の各表示部854,855は、プロジェクトID、工程ID、および各構成要素IDを用いて、構成要素属性情報テーブル46(図3参照)から該当情報を取得し、表示される。
また、図13の下部に示すように、選択部810でコーディング工程が選択された場合には、品質・進捗情報の一覧表示部830には、図示は省略されているが、テスト工程の場合と同様に、各表示部831〜835が表示される。また、テスト工程の場合と同様に、進捗の表示部があるが、コーディング工程では、進捗(Coing Progress:予定ソースコード規模に対する実績ソースコード規模の割合を示すコーディング進捗率)の表示部となる。この進捗(コーディング進捗率)の表示部は、選択部801で選択されたプロジェクトについてのプロジェクトID、選択部810で選択された工程についての工程ID、および各構成要素IDを用いて、構成要素属性情報テーブル46(図3参照)から実績ソースコード規模(KLOC)および予定ソースコード規模(KLOC)を取得し、実績ソースコード規模(KLOC)を予定ソースコード規模(KLOC)で除することによりコーディング進捗率を算出し、表示される。なお、前述した図9の下部に示した属性情報の入力部530における進捗(Progess:コーディング進捗率)の表示部の表示処理も同様である。さらに、テスト工程の場合に設けられていた各表示部845〜847,850〜853はない。
図13の下部に示すように、選択部810で運用工程や保守工程が選択された場合には、品質・進捗情報の一覧表示部830には、図示は省略されているが、テスト工程の場合と同様に、各表示部831〜835が表示される。また、その他は、進捗の表示部がないことを除き、コーディング工程の場合と同様である。
図13の下部に示すように、選択部810で設計工程が選択された場合には、品質・進捗情報の一覧表示部830には、図示は省略されているが、テスト工程の場合と同様に、各表示部831〜835が表示される。また、テスト工程の場合と同様に、進捗の表示部があるが、設計工程では、進捗(Design Progress:予定ページ数に対する実績ページ数の割合を示す設計進捗率)の表示部となる。この進捗(設計進捗率)の表示部は、選択部801で選択されたプロジェクトについてのプロジェクトID、選択部810で選択された工程についての工程ID、および各構成要素IDを用いて、構成要素属性情報テーブル46(図3参照)から実績ページ数および予定ページ数を取得し、実績ページ数を予定ページ数で除することにより設計進捗率を算出し、表示される。なお、前述した図9の上部に示した属性情報の入力部530における進捗(Progess:設計進捗率)の表示部の表示処理も同様である。さらに、テスト工程では、バグ数を実績ソースコード規模で除した値の表示部838、品質指標値としての最小バグ数/ソースコード1000行および最大バグ数/ソースコード1000行の各表示部839,840が設けられていたが、設計工程では、その代わりに、バグ数を実績ページ数で除した値の表示部、品質指標値としての最小バグ数/ページおよび最大バグ数/ページの各表示部が設けられている。また、テスト工程では、チケット数を実績ソースコード規模で除した値の表示部842、品質指標値としての最小チケット数/ソースコード1000行および最大チケット数/ソースコード1000行の各表示部843,844が設けられていたが、設計工程では、その代わりに、チケット数を実績ページ数で除した値の表示部、品質指標値としての最小チケット数/ページおよび最大チケット数/ページの各表示部が設けられている。そして、設計工程では、テスト工程の場合に設けられていた表示部845〜847,850〜853はない。また、設計工程では、テスト工程の場合には設けられていない表示項目として、予定ページ数および実績ページ数の各表示部がある。なお、設計工程の時点では、予定ソースコード規模および実績ソースコード規模は未だ登録されていないが、コーディング工程でこれらの数値が登録された後に、事後的に表示するために、選択部810で設計工程が選択された場合にも、予定ソースコード規模および実績ソースコード規模の各表示部848,849が表示される。
また、図13の例では、選択部820で、階層の種別として、最小構成要素(Minimal)(つまり、配下の構成要素が存在しない構成要素)が選択されているが、大構成要素(Large)、中構成要素(Medium)、小構成要素(Small)を選択することもできる。選択部820で、これらの大構成要素(Large)、中構成要素(Medium)、小構成要素(Small)が選択された場合には、品質・進捗情報の一覧表示部830には、配下の構成要素の情報が集約(合計)された値が表示される。すなわち、品質・進捗情報の一覧表示部830には、選択部820で選択した階層の種別単位で集約(合計)された値が表示される。
より詳細には、選択部820で、大構成要素(Large)が選択された場合には、図13の品質・進捗情報の一覧表示部830における構成要素の階層情報の表示部831には、大構成要素(Large)の名称だけが表示され、品質・進捗情報の一覧表示部830における情報(数値で示される情報)は、大構成要素の単位で集約(合計)された値、すなわち、それぞれの大構成要素毎に集約(合計)された値が表示される。具体的には、配下に中構成要素(Medium)が存在しない大構成要素については、その大構成要素の情報が表示される。配下に中構成要素(Medium)、小構成要素(Small)、最小構成要素(Minimal)が少なくとも1つ存在する大構成要素については、その大構成要素の情報と、配下の中構成要素の情報と、配下の小構成要素の情報と、配下の最小構成要素の情報とを集約(合計)した値が表示される。この際、ある大構成要素の配下に中構成要素が存在するからといって、その大構成要素の情報は集約(合計)しないということではなく、例えば、その大構成要素に帰属するバグチケットと、配下の中構成要素に帰属するバグチケットとがあるので、その大構成要素の情報は集約(合計)することになる。同様に、ある中構成要素の配下に小構成要素が存在するからといって、その中構成要素の情報は集約(合計)しないということではなく、例えば、その中構成要素に帰属するバグチケットと、配下の小構成要素に帰属するバグチケットとがあるので、その中構成要素の情報は集約(合計)することになる。また、ある小構成要素の配下に最小構成要素が存在するからといって、その小構成要素の情報は集約(合計)しないということではなく、例えば、その小構成要素に帰属するバグチケットと、配下の最小構成要素に帰属するバグチケットとがあるので、その小構成要素の情報は集約(合計)することになる。
選択部820で、中構成要素(Medium)が選択された場合には、図13の品質・進捗情報の一覧表示部830における構成要素の階層情報の表示部831には、大構成要素(Large)の名称およびそれぞれの大構成要素の配下の中構成要素(Medium)の名称が表示され(なお、小構成要素の名称、および最小構成要素の名称は表示されない。)、品質・進捗情報の一覧表示部830における情報(数値で示される情報)は、中構成要素の単位で集約(合計)された値、すなわち、それぞれの中構成要素毎に集約(合計)された値が表示される。具体的には、配下に小構成要素(Small)が存在しない中構成要素については、その中構成要素の情報が表示される。配下に小構成要素(Small)、最小構成要素(Minimal)が少なくとも1つ存在する中構成要素については、その中構成要素の情報と、配下の小構成要素の情報と、配下の最小構成要素の情報とを集約(合計)した値が表示される。
選択部820で、小構成要素(Small)が選択された場合には、図13の品質・進捗情報の一覧表示部830における構成要素の階層情報の表示部831には、大構成要素(Large)の名称と、それぞれの大構成要素の配下の中構成要素(Medium)の名称と、それぞれの中構成要素の配下の小構成要素(Small)の名称とが表示され(なお、最小構成要素の名称は表示されない。)、品質・進捗情報の一覧表示部830における情報(数値で示される情報)は、小構成要素の単位で集約(合計)された値、すなわち、それぞれの小構成要素毎に集約(合計)された値が表示される。具体的には、配下に最小構成要素(Minimal)が存在しない小構成要素については、その小構成要素の情報が表示される。配下に最小構成要素(Minimal)が少なくとも1つ存在する小構成要素については、その小構成要素の情報と、配下の最小構成要素の情報とを集約(合計)した値が表示される。
<プロジェクト管理サーバ20/処理手段20A/品質・進捗管理図表示手段28の構成:図12>
品質・進捗管理図表示手段28は、ユーザの表示要求に応じ、チケットテーブル41(図3参照)に記憶されたチケット情報(ここでは、バグチケット)、構成要素テーブル45(図3参照)に記憶された各構成要素の階層情報、およびテスト進捗情報テーブル48(図3参照)に記憶された各構成要素のテスト進捗情報を取得し、図12に示す品質・進捗管理図の画面700の表示用データ(WEBページ)を、ネットワーク1を介してユーザ端末60に送信する処理を実行するものである。
図12において、品質・進捗管理図の画面700には、プロジェクトの選択部701と、工程(Phase)の選択部710と、表示対象とする構成要素(Component Part)の選択部720と、選択した構成要素およびその配下にある全ての構成要素の品質・進捗に関する情報をチケットテーブル41やテスト進捗情報テーブル48(図3参照)から取得する取得ボタン(Loadボタン)721と、選択した構成要素およびその配下にある全ての構成要素の品質・進捗管理図の表示部730とが設けられている。
品質・進捗管理図の表示部730には、横軸を時間軸(日付)とし、縦軸を未消化テスト項目数やバグ数とする各折れ線グラフを描いた品質・進捗管理図が表示される。この品質・進捗管理図には、図12に示すように、選択部710でテスト工程が選択された場合には、未消化テスト項目数の予定および実績、当日発生(発見)したバグ数、累積バグ数、未解決バグ数の各折れ線グラフが表示される。テスト工程以外の工程では、未消化テスト項目数の予定および実績の各折れ線グラフは表示されない。なお、図12の例では、各折れ線グラフは、実線、点線、1点鎖線、2点鎖線等の線種で区別されているが、実際には、異なる色の着色表示により区別されている。また、着色、線種、線の太さ、線の点滅等の組合せ表示としてもよい。
未消化テスト項目数の予定および実績の各折れ線グラフを表示する際には、品質・進捗管理図表示手段28が、選択部701で選択したプロジェクトについてのプロジェクトID、選択部710で選択された工程(テスト工程)についての工程ID、選択部720で選択した構成要素およびその配下にある全ての構成要素についての各構成要素ID(構成要素テーブル45(図3参照)から取得)を用いて、テスト進捗情報テーブル48(図3参照)から各構成要素についての各テスト実施日の予定テスト実施数および実績テスト実施数を取得し、取得した予定テスト実施数および実績テスト実施数のそれぞれをテスト実施日毎に集計し(テスト実施日毎に複数の構成要素の値を合計し)、各テスト実施日における予定テスト実施数の合計数および実績テスト実施数の合計数を算出する。例えば、2020年9月3日の予定テスト実施数の合計数および実績テスト実施数の合計数、2020年9月4日の予定テスト実施数の合計数および実績テスト実施数の合計数、…を算出する。
そして、各テスト実施日(横軸上の日付)における未消化テスト項目数の予定は、各テスト実施日における予定テスト実施数の合計数(この合計は、複数の構成要素の合計という意味)を全てのテスト実施日について合計した値から、各テスト実施日における予定テスト実施数の合計数をその日(横軸上の日付)までについて合計した値を減じて算出される。なお、未消化テスト項目数の予定の代わりに、消化テスト項目数の予定を示す折れ線グラフを表示してもよく、その場合には、各テスト実施日(横軸上の日付)における消化テスト項目数の予定は、各テスト実施日における予定テスト実施数の合計数をその日(横軸上の日付)までについて合計した値となる。
また、各テスト実施日(横軸上の日付)における未消化テスト項目数の実績は、各テスト実施日における予定テスト実施数の合計数を全てのテスト実施日について合計した値から、各テスト実施日における実績テスト実施数の合計数をその日(横軸上の日付)までについて合計した値を減じて算出される。なお、未消化テスト項目数の実績の代わりに、消化テスト項目数の実績を示す折れ線グラフを表示してもよく、その場合には、各テスト実施日(横軸上の日付)における消化テスト項目数の実績は、各テスト実施日における実績テスト実施数の合計数をその日(横軸上の日付)までについて合計した値となる。
当日発生(発見)したバグ数、累積バグ数、未解決バグ数の各折れ線グラフを表示する際には、品質・進捗管理図表示手段28が、選択部701で選択したプロジェクトについてのプロジェクトID、選択部710で選択された工程(テスト工程に限らず、いずれの工程でもよい)についての工程ID、選択部720で選択した構成要素およびその配下にある全ての構成要素についての各構成要素ID(構成要素テーブル45(図3参照)から取得)を用いて、チケットテーブル41(図3参照)に記憶されたチケット情報(ここでは、バグチケット)を取得する。
そして、各日(横軸上の日付)における当日発生(発見)したバグ数は、取得したバグチケットに含まれる発生日を参照し、同じ発生日を含むバグチケットの数をカウントして得られた値を表示する。
また、各日(横軸上の日付)における累積バグ数は、上述した各日における当日発生(発見)したバグ数を、その日(横軸上の日付)までについて合計した値を表示する。
さらに、各日(横軸上の日付)における未解決バグ数は、取得したバグチケットに含まれる解決日(対策完了日)を参照し、その日(横軸上の日付)までの日付の解決日が入力されていないバグチケットの数をカウントして得られた値を表示する。なお、未解決バグ数に代えて、解決バグ数の折れ線グラフを表示してもよく、その場合には、取得したバグチケットに含まれる解決日(対策完了日)を参照し、その日(横軸上の日付)までの日付の解決日が入力されているバグチケットの数をカウントして得られた値を表示する。従って、実際にバグを解決しても、バグチケットに解決日を入力しなければ、その情報が反映されないのは当然であるが、実際にバグを解決してから、何日か経過した後に実際の解決日を入力すると、その入力日以降の上記の表示処理では実際の解決日が反映される。但し、バグチケットの解決日には、その入力操作を行った日付しか入力できないようにしてもよい(つまり、データの入力作業を含めてバグの対策完了とみなしてもよい)。
<プロジェクト管理サーバ20/処理手段20A/チケット進捗状況表示手段29の構成:図14>
チケット進捗状況表示手段29は、ユーザの表示要求に応じ、チケットテーブル41(図3参照)に記憶されたチケット情報(ここでは、バグチケット)、および構成要素テーブル45(図3参照)に記憶された各構成要素の階層情報を取得し、図14に示すチケット進捗状況表示画面900の表示用データ(WEBページ)を、ネットワーク1を介してユーザ端末60に送信する処理を実行するものである。
図14において、チケット進捗状況表示画面900には、プロジェクトの選択部901と、テーブル(ここでは、チケットテーブル)の選択部902と、工程(Phase)の選択部910と、表示対象とする構成要素(Component Part)の選択部920と、チケットの種類(Classification:ここでは、バグチケット)の選択部921と、表示対象とするステータス(Status)の選択部922と、表示対象とするバグの発生日(Accrual Date)、期限日(Deadline Date)、対策開始日(Start Date)、および対策完了日(解決日:Resolution Date)の各選択部930〜933と、表示対象とする担当者名の選択部934と、表示対象のチケット情報(ここでは、バグチケット)をチケットテーブル41(図3参照)から取得する取得ボタン(Loadボタン)935と、取得したチケット情報(ここでは、バグチケット)の一覧表示部940とが設けられている。
取得ボタン935をクリックすると、チケット情報の一覧表示部940が表示される。この際、チケット進捗状況表示手段29は、選択部901で選択されたプロジェクトについてのプロジェクトID、選択部910で選択された工程についての工程ID、選択部920で選択された構成要素およびその配下にある全ての構成要素についての各構成要素ID(構成要素テーブル45(図3参照)から取得)を用いて、チケットテーブル41(図3参照)に記憶されたチケット情報(ここでは、バグチケット)を取得する。さらに、各選択部922,930〜934で、表示対象としてステータス、発生日、期限日、対策開始日、対策完了日(解決日)、担当者名が選択されている場合には、該当するバグチケットだけを取得する。そして、取得した各バグチケットを用いて、チケット情報の一覧表示部940の表示を行う。
チケット情報の一覧表示部940には、取得した各バグチケットについて、チケットID、当該バグチケットの帰属先である構成要素(Component Part)の階層情報、チケットの種類(Classification)、ステータス(Status)、バグの発生日(Accrual Date)、期限日(Deadline Date)、対策開始日(Start Date)、対策完了日(解決日:Resolution Date)、担当者名(Staff)の各表示部と、参照ボタン(Referボタン)と、ガントチャートの表示部とが設けられている。ガントチャートの表示部には、バグの発生日から期限日までを結ぶ棒グラフ(図中では点線で示されているが、実際には、例えば緑色等の着色表示による予定バー)と、対策開始日から対策完了日(解決日)までを結ぶ棒グラフ(図中では実線で示されているが、実際には、例えばピンク色等の着色表示による実績バー)とが表示される。後者の棒グラフは、対策完了日(解決日)が入力されていない場合には、本日(グラフを表示している日)までの棒グラフとなる。各棒グラフの左右の端部の日付部分をドラッグ&ドロップして左右に移動させて棒グラフの長さを変化させると、バグの発生日、期限日、対策開始日、対策完了日の各表示部にリアルタイムで反映される。
<プロジェクト管理サーバ20/データベース40/各テーブル41〜49の構成:図3>
チケットテーブル41(チケット記憶手段)は、図3に示すように、各レコードを構成するカラムのデータとして、チケットID、プロジェクトID、工程ID、構成要素ID、概要、現象、原因、チケットの種類(バグチケット、タスクチケット、保留チケットの別)、バグ分類(設計バグ、プログラムバグの別)、ステータス、優先度、重大度、登録者、担当者、解決者、発生日、期限日、対策開始日、対策完了日(解決日)、備考、レコード登録日時、レコード更新日時、レコード登録者、レコード更新者を関連付けて記憶するものである。
プロジェクト情報テーブル42(プロジェクト情報記憶手段)は、図3に示すように、各レコードを構成するカラムのデータとして、プロジェクトID、プロジェクト名、プロジェクト概要を関連付けて記憶するものである。
工程情報テーブル43(工程情報記憶手段)は、図3に示すように、各レコードを構成するカラムのデータとして、工程ID、プロジェクトID、工程名、工程分類(設計工程、コーディング工程、テスト工程、運用工程、保守工程の別)、予定工程開始日、予定工程完了日、実績工程開始日、実績工程完了日、レコード更新日時、レコード更新者を関連付けて記憶するものである。
テーブル情報テーブル44(テーブル情報記憶手段)は、図3に示すように、各レコードを構成するカラムのデータとして、プロジェクトID、テーブルID、テーブルの表示名を関連付けて記憶するものである。ここに記憶されるテーブル情報には、必須のものとして、プロジェクト登録手段21により自動作成されたチケットテーブルの情報があり、その場合のテーブルの表示名は、チケットテーブルの表示名(例えば「Ticket」等)となる。また、ユーザは、プロジェクトの中に自由にテーブル(チケットテーブル以外のテーブル)を追加することができ、そのテーブルの各レコードを構成する項目(カラム)も自由に設定することができる。例えば、社員テーブルを追加し、カラムとして、社員ID、氏名、所属部署、入社年月日、性別等を設定し、テーブルの表示名を「社員」等とすることができる。追加したテーブルについては、チケットテーブルと同様に、レコードを検索・登録・更新・削除等することができる。
構成要素テーブル45(構成要素記憶手段)は、図3に示すように、各レコードを構成するカラムのデータとして、構成要素ID、プロジェクトID、大構成要素ID(階層情報)、大構成要素の名称、中構成要素ID(階層情報)、中構成要素の名称、小構成要素ID(階層情報)、小構成要素の名称、最小構成要素ID(階層情報)、最小構成要素の名称、レコード更新日時、レコード更新者、構成要素の階層の種別(大構成要素、中構成要素、小構成要素、最小構成要素の別を示す階層情報)、構成要素の概要を関連付けて記憶するものである。なお、全ての構成要素について、大構成要素、中構成要素、小構成要素、最小構成要素のIDおよび名称の全カラムのデータが存在するわけではなく、自分の階層よりも下位の階層の情報は、ブランクまたはNULLになっている点は、構成要素登録手段23の説明で詳述しているため、ここでは詳しい説明を省略する。
構成要素属性情報テーブル46(構成要素属性情報記憶手段)は、図3に示すように、各レコードを構成するカラムのデータとして、プロジェクトID、工程ID、構成要素ID、予定ページ数、実績ページ数、予定ソースコード規模(KLOC)、実績ソースコード規模(KLOC)、予定テスト項目数、実績テスト項目数、担当者ID、担当者名、承認、予定開始日、予定完了日、実績開始日、実績完了日、レコード更新日時、レコード更新者を関連付けて記憶するものである。なお、全てのレコードについて、全カラムのデータが存在するわけではなく、工程分類(設計工程、コーディング工程、テスト工程、運用工程、保守工程の別)により、ブランクまたはNULLになるカラムがある点は、構成要素属性情報登録手段25の説明で詳述しているため、ここでは詳しい説明を省略する。
品質指標値テーブル47(品質指標値記憶手段)は、図3に示すように、各レコードを構成するカラムのデータとして、工程ID、プロジェクトID、構成要素ID、最小チケット数/ページ(チケット数をページ数で除して得られた1ページあたりのチケット数の最小値)、最大チケット数/ページ(チケット数をページ数で除して得られた1ページあたりのチケット数の最大値)、最小バグ数/ページ(バグ数をページ数で除して得られた1ページあたりのバグ数の最小値)、最大バグ数/ページ(バグ数をページ数で除して得られた1ページあたりのバグ数の最大値)、最小チケット数/ソースコード1000行(チケット数をソースコード規模(KLOC)で除して得られた単位ソースコード規模(ソースコード1000行)あたりのチケット数の最小値)、最大チケット数/ソースコード1000行(チケット数をソースコード規模(KLOC)で除して得られた単位ソースコード規模(ソースコード1000行)あたりのチケット数の最大値)、最小バグ数/ソースコード1000行(バグ数をソースコード規模(KLOC)で除して得られた単位ソースコード規模(ソースコード1000行)あたりのバグ数の最小値)、最大バグ数/ソースコード1000行(バグ数をソースコード規模(KLOC)で除して得られた単位ソースコード規模(ソースコード1000行)あたりのバグ数の最大値)、最小テスト項目数/ソースコード1000行(テスト項目数をソースコード規模(KLOC)で除して得られた単位ソースコード規模(ソースコード1000行)あたりのテスト項目数の最小値)、最大テスト項目数/ソースコード1000行(テスト項目数をソースコード規模(KLOC)で除して得られた単位ソースコード規模(ソースコード1000行)あたりのテスト項目数の最大値)、レコード更新日時、レコード更新者を関連付けて記憶するものである。なお、全てのレコードについて、全カラムのデータが存在するわけではなく、工程分類(設計工程、コーディング工程、テスト工程、運用工程、保守工程の別)により、ブランクまたはNULLになるカラムがある点は、品質指標値登録手段26の説明で詳述しているため、ここでは詳しい説明を省略する。
テスト進捗情報テーブル48(テスト進捗情報記憶手段)は、図3に示すように、各レコードを構成するカラムのデータとして、構成要素ID、プロジェクトID、工程ID、テスト実施日、予定テスト実施数、実績テスト実施数、レコード更新日時、レコード更新者を関連付けて記憶するものである。
階層上下関係テーブル49(階層上下関係記憶手段)は、図3に示すように、各レコードを構成するカラムのデータとして、レコードID、上位単語、下位単語を関連付けて記憶するものである。
<プロジェクト管理システム10による処理の全体的な流れ:図4>
図4に示す1つのプロジェクトに関する処理の流れは、概略であり、プロジェクト管理システム10の機能単位で、処理の大まかな流れをまとめたものである。従って、実際には、より多くの入力および表示の処理が、より細かい単位で、プロジェクトの進行に伴って繰り返し実行される。また、処理の順序も一例であり、特に各種の表示処理は、ユーザが必要なときに任意のタイミングで行われるので、表示処理どうしの順序は逆転してもよく、入力処理と表示処理との順序関係も、ある情報を表示する前に、その情報の入力が済んでいればよいことを示しているにすぎない。
図4において、先ず、ユーザは、ユーザ端末60にプロジェクト登録画面(不図示)を表示させ、この画面において、プロジェクト情報(プロジェクト名を含む)を入力し、ネットワーク1を介してプロジェクト管理サーバ20に送信する。このプロジェクト情報は、プロジェクト登録手段21により、プロジェクトIDと関連付けてプロジェクト情報テーブル42(図3参照)に記憶される(ステップS1)。この際、プロジェクト登録手段21は、データベース40にチケットテーブル41を自動作成する。この処理の内容は、プロジェクト登録手段21の説明で詳述しているため、ここでは詳しい説明を省略する。
続いて、ユーザは、ユーザ端末60に工程登録画面(不図示)を表示させ、この画面において、工程情報(プロジェクトの指定情報を含む)を入力し、ネットワーク1を介してプロジェクト管理サーバ20に送信する。この工程情報は、工程情報登録手段22により、プロジェクトIDおよび工程IDと関連付けて工程情報テーブル43(図3参照)に記憶される(ステップS2)。この処理の内容は、工程情報登録手段22の説明で詳述しているため、ここでは詳しい説明を省略する。なお、ここで全ての工程を登録する必要はなく、後から工程を追加することができる。
それから、ユーザは、ユーザ端末60に図5の構成要素登録画面100を表示させ、この画面100において、構成要素に関する情報(プロジェクトの指定情報を含む)を入力し、ネットワーク1を介してユーザ端末60に送信する。この構成要素に関する情報は、構成要素登録手段23により、構成要素IDおよびプロジェクトIDと関連付けて構成要素テーブル45(図3参照)に記憶される(ステップS3)。この処理の内容は、構成要素登録手段23の説明で詳述しているため、ここでは詳しい説明を省略する。なお、本発明では、構成要素は、全ての工程で共通して使用されるので、構成要素に関する情報には、工程の指定情報は含まれず、構成要素テーブル45の各レコードには、工程IDのカラムはない。また、本発明では、プロジェクトに進行に伴って、徐々に構成要素を追加し、階層構造を深くしていくことを前提としているので、ここで全ての構成要素が登録されるわけではない。但し、ここで全ての構成要素を登録することを排除するものではない。
その後、各工程では、以下のような処理が繰り返される。先ず、前述したステップS2で全ての工程を登録していない場合には、必要に応じ、工程の追加登録を行う(ステップS4)。この処理は、前述したステップS2の処理と同様である。
次に、必要に応じ、構成要素の追加登録、あるいは変更や削除等を行う(ステップS5)。ここでの追加登録は、既に登録済の構成要素が存在する状態で、新たな構成要素を追加して登録するという意味である。従って、この追加登録の処理は、前述したステップS3の処理(プロジェクトの開始当初の段階で、全く構成要素が登録されていない状態で、新たな構成要素を登録する処理)と同様である。変更や削除等には、後述する図15〜図20の処理が含まれる。なお、前述したステップS3においても、新たな構成要素の登録のみならず、変更や削除等を行うことができる。
続いて、ユーザは、ユーザ端末60に図9や図10の構成要素属性情報登録画面500を表示させ、この画面500において、構成要素の属性情報(プロジェクト、工程、構成要素の指定情報を含む)を入力し、ネットワーク1を介してユーザ端末60に送信する。この構成要素の属性情報は、構成要素属性情報登録手段25により、プロジェクトID、工程ID、および構成要素IDと関連付けて構成要素属性情報テーブル46(図3参照)に記憶される(ステップS6)。この処理の内容は、構成要素属性情報登録手段25の説明で詳述しているため、ここでは詳しい説明を省略する。
さらに、テスト工程の場合には、ユーザは、ユーザ端末60に図10のテスト進捗情報登録画面550を表示させ、この画面550において、日々のテスト進捗情報(プロジェクト、工程(ここではテスト工程)、構成要素の指定情報を含む)を入力し、ネットワーク1を介してユーザ端末60に送信する。この日々のテスト進捗情報は、構成要素属性情報登録手段25により、プロジェクトID、工程ID、および構成要素IDと関連付けてテスト進捗情報テーブル48(図3参照)に記憶される(ステップS7)。この処理の内容は、構成要素属性情報登録手段25の説明で詳述しているため、ここでは詳しい説明を省略する。なお、工程を指定し、工程IDに関連付けて記憶しているのは、複数のテスト工程を設定できるからである。
それから、ユーザは、ユーザ端末60に図11の品質指標値登録画面600を表示させ、この画面600において、品質指標値に関する情報(プロジェクト、工程、構成要素の指定情報を含む)を入力し、ネットワーク1を介してユーザ端末60に送信する。この品質指標値に関する情報は、品質指標値登録手段26により、プロジェクトID、工程ID、および構成要素IDと関連付けて品質指標値テーブル47(図3参照)に記憶される(ステップS8)。この処理の内容は、品質指標値登録手段26の説明で詳述しているため、ここでは詳しい説明を省略する。
また、バグが発生した場合やそのバグを解決した場合には、ユーザは、ユーザ端末60に図6のチケット登録画面200を表示させ、この画面200において、チケット情報(プロジェクト、工程、構成要素の指定情報を含む)を入力し、ネットワーク1を介してユーザ端末60に送信する。このチケット情報(ここでは、バグチケット)は、チケット登録手段24により、チケットID、プロジェクトID、工程ID、および構成要素IDと関連付けてチケットテーブル41(図3参照)に記憶される(ステップS9)。この処理の内容は、チケット登録手段24の説明で詳述しているため、ここでは詳しい説明を省略する。
その後、ユーザは、必要に応じ、ユーザ端末60に図12の品質・進捗管理図の画面700を表示させる(ステップS10)。この表示処理は、品質・進捗管理図表示手段28により、チケットテーブル41(図3参照)に記憶されたチケット情報(ここでは、バグチケット)、構成要素テーブル45(図3参照)に記憶された各構成要素の階層情報、およびテスト進捗情報テーブル48(図3参照)に記憶された各構成要素のテスト進捗情報を用いて実行される。この処理の内容は、品質・進捗管理図表示手段28の説明で詳述しているため、ここでは詳しい説明を省略する。
また、ユーザは、必要に応じ、ユーザ端末60に図13の品質・進捗情報表示画面800を表示させる(ステップS11)。この表示処理は、品質・進捗情報表示手段27により、チケットテーブル41(図3参照)に記憶されたチケット情報(ここでは、バグチケット)、構成要素テーブル45(図3参照)に記憶された各構成要素の階層情報、構成要素属性情報テーブル46(図3参照)に記憶された各構成要素の属性情報、品質指標値テーブル47(図3参照)に記憶された各構成要素の品質指標値、およびテスト進捗情報テーブル48(図3参照)に記憶された各構成要素のテスト進捗情報を用いて実行される。この処理の内容は、品質・進捗情報表示手段27の説明で詳述しているため、ここでは詳しい説明を省略する。
さらに、ユーザは、必要に応じ、ユーザ端末60に図14のチケット進捗状況表示画面900を表示させる(ステップS12)。この表示処理は、チケット進捗状況表示手段29により、チケットテーブル41(図3参照)に記憶されたチケット情報(ここでは、バグチケット)、および構成要素テーブル45(図3参照)に記憶された各構成要素の階層情報を用いて実行される。この処理の内容は、チケット進捗状況表示手段29の説明で詳述しているため、ここでは詳しい説明を省略する。
そして、次の工程に進む場合には(ステップS13)、前述したステップS4の処理に戻り、以降、プロジェクトが終了するまで(全ての工程の作業が完了するまで)、ステップS4〜S12の処理を繰り返す。一方、次の工程に進まない場合には(ステップS13)、プロジェクトを終了する。なお、ステップS13は、プロジェクト管理サーバ20の判断処理を示すものではなく、ユーザの判断である。
<構成要素登録手段23による構成要素の追加時のチケット帰属先選択処理:図15、図16>
構成要素登録手段23は、図15の構成要素登録画面100(図5と同様)において、ユーザが追加ボタン(Insertボタン)150をクリックして構成要素を追加した際に、追加した構成要素の1つ上位の構成要素(親構成要素)に帰属する全てのバグチケットをチケットテーブル41(図3参照)から取得する。この際、親構成要素についての構成要素IDは、構成要素テーブル45(図3参照)から取得し、その親構成要素についての構成要素IDに関連付けられてチケットテーブル41に記憶されている全てのバグチケットを取得する。また、親構成要素についての構成要素の概要も、構成要素テーブル45(図3参照)から取得する。図15の例では、「ユーザ管理/ユーザ検索」の配下(直下)に「検索結果ファイル出力」という構成要素(階層の種別は、小構成要素)を追加するので、その親構成要素は、「ユーザ管理/ユーザ検索」という構成要素(階層の種別は、中構成要素)である。具体的な状況としては、例えば、基本設計工程で、ユーザ情報のファイル出力機能が必要であると考え、構成要素「ユーザ検索」の配下(直下)に構成要素「検索結果ファイル出力」を追加する場合等である。なお、この構成要素の追加後には、図15の例の構成要素登録画面100は、図16の下部に示すような状態となり、これは、前述した図5を用いた構成要素登録手段23の説明の通りである。
そして、構成要素登録手段23は、取得した全てのバグチケットについて、バグチケットに含まれる概要、現象、原因、および備考を示す各テキストデータを連結した連結データを作成する。なお、備考がない場合や、備考が概要と同じデータとして入力される場合には、概要、現象、および原因を示す各テキストデータを連結した連結データを作成すればよい。それから、取得した全てのバグチケットについての連結データの各々と、追加した構成要素およびその親構成要素の各々の概要(Overview)を示すテキストデータとの類似度を算出する。図15の例では、追加した構成要素の概要を示すテキストデータは、「検索結果画面に表示された内容をCSVファイルに出力する」であり、親構成要素の概要を示すテキストデータは、「入力された検索条件に合うユーザを抽出し、一覧表示する」である。ここで、類似度の算出方法としては、例えば、バグチケットについての連結データと、構成要素の概要とのそれぞれを、KAKASIというプログラムによりローマ字綴りの文に変換し、その後、PHP言語のsimilar_text()関数を使い、類似度を求める方法等を採用することができる。ここで、similar_text()は、PHPというプログラミング言語に標準で実装されている文章の類似度を算出する関数である。また、Doc2Vec(任意の長さの文書をベクトル化する技術)により得られたベクトルについてコサイン類似度等を算出する方法などを採用してもよく、既存の類似度の算出方法や、今後開発される類似度の算出方法のいずれを採用してもよい。
続いて、構成要素登録手段23は、ユーザ端末60に、図16に示すようなチケット帰属先選択画面170を表示する。このチケット帰属先選択画面170は、取得したバグチケット毎に、追加した構成要素とその親構成要素とのうち類似度が高い方の構成要素に帰属させる選択状態を初期状態とする画面である。図16の例では、チケットID=10000032については、追加した構成要素の方が類似度が高いので、追加した構成要素(図15、図16の例では、「ユーザ管理/ユーザ検索/検索結果ファイル出力」)に帰属させ、チケットID=10000031,10000033については、親構成要素の方が類似度が高いので、親構成要素(図15、図16の例では、「ユーザ管理/ユーザ検索」)に帰属させたままとする選択状態を初期状態とする画面である。
その後、ユーザが、上記の初期状態とされた選択状態のままで、あるいは、必要な場合には選択状態を変更してから、実行ボタン(Executeボタン)171をクリックすると、構成要素登録手段23は、このチケット帰属先選択画面170でのバグチケットの帰属先の選択入力を受け付け、受け付けた選択結果に従って、取得した各バグチケットについてチケットテーブル41(図3参照)に記憶されている構成要素IDを、追加した構成要素についての構成要素IDに変更するか、または親構成要素についての構成要素IDのままとする処理を実行する。
<構成要素登録手段23による過去のプロジェクトの構成要素のコピーによる構成要素の追加処理:図17>
階層上下関係テーブル49には、図17に示すように、上位の階層の構成要素の名称およびその下位の階層の構成要素の名称に使用される関係にある上位単語と下位単語との組合せが記憶されている。この上位単語と下位単語との組合せは、構成要素テーブル45(図3参照)に記憶されている過去のプロジェクトについての各構成要素の名称を解析して作成されたものでもよく、プロジェクト管理システム10の管理者(運営者)が自らの知見、あるいはプロジェクト管理システム10とは関係のない過去のプロジェクト管理に関する情報に基づき作成したものでもよく、それらの組合せでもよい。
この際、構成要素テーブル45に記憶されている過去のプロジェクトの情報から作成する場合には、同一のユーザ(同一の会社等の団体に属するユーザ群)による過去のプロジェクトの情報だけを用いて作成してもよく、その場合には、最初はデータがない状態なので、そのユーザ(その団体)において、上位単語と下位単語との組合せのデータが、徐々に形成されていくことになる。また、複数のユーザ(複数の団体)の過去のプロジェクトの情報を用いて作成してもよく、その場合には、後発のユーザ(後発の団体)であれば、最初からデータが存在する状態で、プロジェクト管理システム10を使い始めることができる。さらに、構成要素テーブル45に記憶されている過去のプロジェクトの情報から作成する場合には、例えば、上位の階層の構成要素の名称に含まれる各単語に対する下位(その直下)の階層の構成要素の名称に含まれる各単語の出現頻度を算出し、出現頻度の高い単語を抽出すること等により、上位単語と下位単語との組合せを自動作成することが好ましいが、人の判断で作成してもよく、あるいは、自動作成した組合せの中から人の判断で適切な組合せを抽出するという半自動化による作成としてもよい。
構成要素登録手段23は、ユーザの要求に応じ、ユーザ端末60に構成要素コピー画面180を表示する。この構成要素コピー画面180には、進行中のプロジェクトの選択部181と、構成要素テーブル45に記憶された過去のプロジェクトの階層構造(階層化された各構成要素の名称のツリー)の表示部183と、構成要素テーブル45に記憶された進行中のプロジェクトの階層構造(階層化された各構成要素の名称のツリー)の表示部185とが設けられている。過去のプロジェクトの階層構造の表示部183の中には、その表示部183への表示対象となる過去のプロジェクトの選択部184が設けられている。
構成要素登録手段23は、構成要素コピー画面180で、表示部183の中に表示された過去のプロジェクトの階層化された構成要素の一部を、その一部の内部における階層上下関係を保持しながら、ドラッグ&ドロップにより、表示部185の中に表示された進行中のプロジェクトの階層構造内の指定位置(コピー先としてドロップで指定する位置)にコピーすることによる構成要素の追加を受け付ける。この際、ある1つの構成要素をドラッグ&ドロップすると、その配下の全ての構成要素も、階層上下関係を保持しながらドラッグ&ドロップされ、コピーされる。このコピーによる構成要素の追加は、効率的に構成要素を追加することを目的として行われるので、表示部183の中のコピー元(階層化された構成要素の一部)は、通常、複数の階層(つまり、ドラッグ&ドロップ操作の中心となるポインティング対象の構成要素は、配下の構成要素が存在する構成要素)であるが、1階層(つまり、配下の構成要素が存在しない構成要素)でもよい。
図17の例では、表示部183の中のコピー元は、構成要素「パスワード管理機能」をドラッグ&ドロップ操作の中心とし、その配下の2つの構成要素である「パスワード更新画面」および「パスワード更新処理」を含む3つの構成要素(2階層)である。具体的な状況としては、例えば、基本設計工程で、ユーザのパスワード管理機能が必要であると考え、パスワード管理機能を過去プロジェクトからコピーする場合等である。一方、表示部185の中のコピー先は、構成要素「ユーザ更新」であり、このコピーが確定すると、図17に示すように、コピー先としてドロップで指定された「ユーザ更新」の配下に、コピー元の3つの構成要素(2階層)が階層上下関係をそのまま保持した状態で追加される。なお、このコピーが確定する前に、構成要素登録手段23により、以下のような処理が実行される。
すなわち、構成要素登録手段23は、コピーによる構成要素の追加の際に、コピー前に存在していた進行中のプロジェクトの階層構造におけるコピー先の指定位置の構成要素の名称(図17の例では「ユーザ更新」)と、コピーされる構成要素の名称(図17の例では「パスワード管理機能」)とを用いて、コピーで新たに形成されるこれらの上下関係にある構成要素の名称の中に、階層上下関係テーブル49(図17、図3参照)に記憶された上位単語と下位単語との組合せに対し、上下関係が逆の関係になる単語が含まれているか否かを判断し、含まれている場合には、構成要素の上下関係に問題がある旨の警告表示処理を実行する。この判断は、コピー後に上位の階層になる構成要素の名称(図17の例では「ユーザ更新」)に含まれる各単語と、その下位の階層になる構成要素の名称(図17の例では「パスワード管理機能」)に含まれる各単語との全ての組合せについて実行される。図17の例では、警告表示処理は、「The hierarchical relationship between the component parts may be incorrect.(部品間の階層関係が間違っている可能性があります。) Do you really want a copy?(本当にコピーしますか?)」というメッセージの表示処理である。
このような警告表示処理を行うのは、次の理由からである。構成要素の名称と、階層の上下関係とには規則性があり、構成要素の名称に含まれる単語から、階層の上下関係を判定することができる。例えば、名称に「検索」が含まれる構成要素は、「ファイル出力」が含まれる構成要素よりも上位にあることが多い。ファイル出力は検索結果を出力するので、検索機能の一機能であることが多いからである。従って、このような単語の上下関係が、図17に示すように階層上下関係テーブル49に登録されているので、それらの関係と逆の関係になっていれば、不適切な階層構造になっている可能性がある。コピーによる追加により、ユーザの手間の軽減が図られる一方で、簡単に追加作業を行うことができるが故に、うっかり不適切なコピーをしてしまう可能性もあることから、その未然防止を図るために、警告表示処理が実行される。
<構成要素登録手段23による構成要素の削除時のチケット帰属先選択処理:図18>
構成要素登録手段23は、図18の構成要素登録画面100(図5と同様)において、ユーザが削除ボタン(Delボタン)168をクリックして構成要素を削除した際に、削除した構成要素に帰属していた各バグチケットの処理内容を確認するために、図18に示すような構成要素削除確認画面190を表示する。この構成要素削除確認画面190は、削除した構成要素に帰属していた各バグチケットについて、削除するか、削除した構成要素の1つ上位の構成要素(親構成要素)に帰属させるか、または削除した構成要素の1つ上位の親構成要素の直下に配置された別の構成要素(兄弟構成要素)に帰属させるかを選択する画面である。ユーザが、この構成要素削除確認画面190で処理内容を選択し、削除ボタン(Deleteボタン)191をクリックすると、構成要素登録手段23は、このユーザの選択を受け付ける。図18の例では、削除した構成要素は「ユーザ管理/ユーザ検索/検索結果ファイル出力」であり、親構成要素は「ユーザ管理/ユーザ検索」であり、兄弟構成要素は「ユーザ管理/ユーザ検索/検索処理」および「ユーザ管理/ユーザ検索/検索画面」の2つである。具体的な状況としては、例えば、詳細設計工程で、「検索結果ファイル出力」は不要となったため、削除する場合等である。
ここで、構成要素登録手段23は、削除した構成要素に帰属していた各バグチケットを削除する選択を受け付けた場合には、チケットテーブル41(図3参照)に記憶されている当該バグチケットを削除する。
また、構成要素登録手段23は、削除した構成要素に帰属していた各バグチケットを親構成要素に帰属させる選択を受け付けた場合には、当該バグチケットについてチケットテーブル41(図3参照)に記憶されている構成要素IDを、親構成要素についての構成要素IDに変更する。
さらに、構成要素登録手段23は、削除した構成要素に帰属していた各バグチケットを兄弟構成要素に帰属させる選択を受け付けた場合には、兄弟構成要素が1つだけ存在するときは、当該バグチケットについてチケットテーブル41(図3参照)に記憶されている構成要素IDを、唯一の兄弟構成要素についての構成要素IDに変更する。また、複数の兄弟構成要素が存在するときは、削除した構成要素についての構成要素IDを用いて、削除した構成要素に帰属していた全てのバグチケットをチケットテーブル41から取得する。そして、取得した全てのバグチケットについて、それぞれのバグチケットに含まれる概要、現象、原因、および備考を示す各テキストデータを連結した連結データを作成する。なお、備考がない場合や、備考が概要と同じデータとして入力される場合には、概要、現象、および原因を示す各テキストデータを連結した連結データを作成すればよい。それから、取得した全てのバグチケットについての連結データの各々と、複数の兄弟構成要素の各々の概要(Overview)を示すテキストデータとの類似度を算出する。この類似度の算出方法は、前述した図15、図16で説明した方法と同じでよい。図18の例では、取得したバグチケットが、チケットID=10000085,10000086,10000087,10000088の4つであり、一方、前述したように兄弟構成要素は「ユーザ管理/ユーザ検索/検索処理」および「ユーザ管理/ユーザ検索/検索画面」の2つであるから、4×2=8個の類似度を算出する。
続いて、構成要素登録手段23は、ユーザ端末60に、図18に示すようなチケット帰属先選択画面192を表示する。このチケット帰属先選択画面192は、バグチケット毎に複数の兄弟構成要素のうち最も類似度が高い兄弟構成要素に帰属させる選択状態を初期状態とする画面である。ユーザが、このチケット帰属先選択画面192で各バグチケットの帰属先を選択し、帰属先決定ボタン(Submitボタン)193をクリックすると、構成要素登録手段23は、それらの各バグチケットの帰属先の選択入力を受け付け、削除した構成要素に帰属していた各バグチケットについてチケットテーブル41(図3参照)に記憶されている構成要素IDを、選択された兄弟構成要素についての構成要素IDに変更する。
<構成要素登録手段23による構成要素の分割時のチケット帰属先選択処理:図19>
構成要素登録手段23は、図19の構成要素登録画面100(図5と同様)において、ユーザの分割ボタン(Splitボタン)166のクリックによる分割対象の構成要素の選択を受け付けると、ユーザ端末60に構成要素分割画面194を表示する。この構成要素分割画面194には、分割後の複数の構成要素の各々の名称(Name)および概要(Overview)の各入力部が設けられている。図10の画面例では、最大5分割が可能となっているが、最大分割数は、これに限定されず、4以下でも、6以上でもよい。図10の例では、分割対象の構成要素は「ユーザ管理/ユーザ登録/新規登録/登録処理」であり、これを「ユーザ管理/ユーザ登録/新規登録/ユーザ情報登録処理」と「ユーザ管理/ユーザ登録/新規登録/登録時入力チェック」とに2分割している。分割後の1つ目の「ユーザ情報登録処理」という名称の構成要素の概要は「ユーザ情報を新規登録する処理」であり、分割後の2つ目の「登録時入力チェック」という名称の構成要素の概要は「入力情報が適切か否かチェックする」である。
構成要素登録手段23は、構成要素分割画面194での分割後の各構成要素の名称および概要の入力を受け付けた後、分割前の構成要素についての構成要素IDを用いて、分割前の構成要素に帰属していた全てのバグチケットをチケットテーブル41(図3参照)から取得する。そして、取得した全てのバグチケットについて、それぞれのバグチケットに含まれる概要、現象、原因、および備考を示す各テキストデータを連結した連結データを作成する。なお、備考がない場合や、備考が概要と同じデータとして入力される場合には、概要、現象、および原因を示す各テキストデータを連結した連結データを作成すればよい。それから、取得した全てのバグチケットについての連結データの各々と、分割後の複数の構成要素の各々の概要(Overview)を示すテキストデータとの類似度を算出する。類似度の算出方法は、前述した図15、図16の場合と同じでよい。図19の例では、分割前の構成要素に帰属していたバグチケットは、チケットID=10000092,10000093,10000094,10000095,10000096の5つであり、一方、前述したように分割後の構成要素は、「ユーザ情報登録処理」および「登録時入力チェック」の2つであるから、5×2=10個の類似度を算出する。
続いて、構成要素登録手段23は、図19に示すようなチケット帰属先選択画面195を表示する。このチケット帰属先選択画面195は、バグチケット毎に分割後の複数の構成要素のうち最も類似度が高い構成要素に帰属させる選択状態を初期状態とする画面である。ユーザが、このチケット帰属先選択画面195で各バグチケットの帰属先を選択し、帰属先決定ボタン(Submitボタン)をクリックすると、構成要素登録手段23は、それらの選択入力を受け付け、分割前の構成要素に帰属していた各バグチケットについてチケットテーブル41(図3参照)に記憶されている構成要素IDを、選択された分割後の構成要素についての構成要素IDに変更する。
<構成要素登録手段23による構成要素の統合処理:図20>
構成要素登録手段23は、図20の構成要素登録画面100(図5と同様)において、ユーザによる統合対象の複数の構成要素の選択を受け付ける。この際、ユーザが、統合(Merge)する構成要素の選択部160にチェックを入れ、統合ボタン(Mergeボタン)151をクリックすると、構成要素登録手段23は、ユーザ端末60に図20に示すような構成要素統合画面196を表示する。この構成要素統合画面196には、統合後の構成要素の名称(Name)および概要(Overview)の各入力部と、属性情報の統合(Merge attribute information)および不統合(No merge)の各選択部とが設けられている。図20の例では、「ユーザ管理/ユーザ登録/新規登録/ユーザ情報登録処理」と「ユーザ管理/ユーザ登録/新規登録/登録時入力チェック」という2つの構成要素が統合対象であり、統合後は「ユーザ管理/ユーザ登録/新規登録/ユーザ新規登録処理」としている。この統合後の「ユーザ新規登録処理」という名称の構成要素の概要は「ユーザ登録処理と入力チェック処理を統合する」としている。
さらに、図20の構成要素統合画面196において、ユーザが属性情報の統合(Merge attribute information)を選択し(より正確には、統合前の複数の構成要素の属性情報およびテスト進捗情報を統合して統合後の構成要素に帰属させる選択をし)、統合ボタン(Mergeボタン)197をクリックした場合には、構成要素登録手段23は、その選択を受け付け、統合対象の各構成要素についての構成要素IDを用いて構成要素属性情報テーブル46(図3参照)から、統合対象の複数の構成要素の各々についての予定ページ数、実績ページ数、予定ソースコード規模、実績ソースコード規模、予定テスト項目数、および実績テスト項目数を取得して合算し、合算して得られた各値を、統合後の構成要素についての構成要素IDに関連付けて構成要素属性情報テーブル46に記憶させるとともに、統合対象の各構成要素についての構成要素IDを用いてテスト進捗情報テーブル48(図3参照)から、統合対象の複数の構成要素の各々についての各テスト実施日の予定テスト実施数および実績テスト実施数を取得して合算し、合算して得られた各値を、統合後の構成要素についての構成要素IDに関連付けてテスト進捗情報テーブル48に記憶させる。
<本実施形態の効果>
このような本実施形態によれば、次のような効果がある。すなわち、プロジェクト管理システム10は、構成要素登録手段23および構成要素テーブル45(図3参照)を備えているので、一部の工程だけに使用される工程毎の固別の構成要素ではなく、全ての工程で共通して使用される構成要素を機能単位で作成し、この機能単位で作成した構成要素毎に、プロジェクトにおける品質や進捗の情報管理を行うことができる。従って、従来、設計工程(要件定義工程も含む)では、設計書単位で作成された構成要素毎に、すなわち、設計書(要件定義書を含む)の章・節・関連資料等を単位として、品質や進捗の情報管理を行っていたが、プロジェクト管理システム10では、設計工程でも、コーディング工程以降の工程と同様に、設計書単位ではなく、機能単位で作成された構成要素毎に、すなわち、コンポーネント、モジュール、プログラム等のシステム部品を単位として、品質や進捗の情報管理を行うことができる。
このため、全ての工程で共通する構成要素を単位として品質や進捗の情報管理を行うことがきるので、複数の工程に跨がって構成要素の対応関係を確認(トレース)する作業が容易になるため、システム開発者の負担軽減を図ることができるとともに、仕様漏れや不整合を効果的に防ぐことができる。例えば、ある工程でバグが発生した(発見された)場合に、それよりも前の工程でそのバグの発生原因となる作業が行われた個所を容易に特定することができる。
この際、システム開発者は、設計工程では、コーディング工程以降の工程で行われる作業をある程度想定し、機能単位で構成要素を作成して登録するので、従来のように設計書単位(章・節・関連資料等の単位)で構成要素を作成する場合に比べ、時間的に先のこと(未来のこと)を考えて構成要素を作成することになるため、その分だけ、システム開発者の思考負担が増えることになる。しかし、先の工程に進んだ際に行われる対応関係の確認(トレース)の作業の負担を考慮すると、プロジェクト全体では、システム開発者の負担を軽減することができる。対応関係の確認(トレース)の作業は、バグ発生等の開発上の問題が生じる都度に繰り返し行われるので、トータルの負担は大きいが、設計工程における先の工程(未来の工程)を考慮した機能単位での構成要素の作成は、1回で済むからである。
また、先の工程(未来の工程)を考慮して機能単位で構成要素を作成するといっても、設計工程では、そもそも機能構成が未確定なので、一部の構成要素しか決めることができないため、それ程、細かい単位の構成要素を作成する必要はない。このため、設計工程において、機能単位で構成要素を作成することは、それ程、大きな手間を要する作業ではない。そして、構成要素登録手段23および構成要素テーブル45(図3参照)は、後から、新たな構成要素を自在な階層位置に自在な数だけ追加することができ、柔軟な階層構造の構築が可能とされているので、設計工程において、最初に大まかな構成要素(後から配下の構成要素が作成されることにより、上位の構成要素になることが予想されるもの)を作成しておき、先の工程に進むにつれて、構成要素の数を増やし、かつ、階層構造を深くしていくことができる。従って、プロジェクト管理システム10では、最初から、機能単位で構成要素を作成し、全ての工程で共通の構成要素を使用し、品質情報や進捗情報を管理することができる。
さらに、プロジェクト管理システム10では、工程間で構成要素の対応関係を把握しながら、品質や進捗の情報の分析を行うことが容易にできる。また、全ての工程で共通の構成要素を使用することにより、異なる工程で得られた情報どうしを容易に結び付けることができるので、ある工程で得られた情報を、別の工程で得られた情報との演算に活用することができる。例えば、コーディング工程で入力された実績ソースコード規模(KLOC)を用いて、それ以降の工程で得られた別の情報との演算を行うことができ、KLOCを利用して、複数の工程で、新たな評価用の情報を得ることができる。また、KLOCは、コーディング工程で入力されるので、設計工程の時点では存在しないが、構成要素が共通化されているため、設計工程で入力された実績ページ数と、コーディング工程で入力されたKLOCの実績値との対応関係を把握することができる。
また、プロジェクト管理システム10は、品質指標値登録手段26および品質指標値テーブル47(図3参照)を備えているので、品質・進捗情報表示手段27により最小値未満表示処理および最大値超過表示処理を行うことができる。このため、品質評価を一目瞭然で行うことができ、システム開発者の負担を軽減することができる。
そして、構成要素登録手段23は、構成要素の追加時にバグチケットの帰属先の選択を受け付ける構成とされているので(図15、図16参照)、構成要素の追加時に、親構成要素に帰属しているバグチケットが存在するときには、そのバグチケットを、より適切な構成要素に帰属させる作業を容易に行うことができ、システム開発者の手間を軽減できるとともに、より適切な情報分析を行うことができる。
また、構成要素登録手段23は、過去のプロジェクトのコピーによる構成要素の追加時に、構成要素の名称の上下関係が適切であるか否かを判断する構成とされているので(図17参照)、構成要素の追加作業を、容易かつ適切に行うことができる。
さらに、構成要素登録手段23は、構成要素の削除時にバグチケットの帰属先の選択を受け付ける構成とされているので(図18参照)、構成要素の削除時に、削除する構成要素に帰属しているバグチケットが存在するときには、そのバグチケットを、より適切な構成要素に帰属させる作業を容易に行うことができ、システム開発者の手間を軽減できるとともに、より適切な情報分析を行うことができる。
そして、構成要素登録手段23は、構成要素の分割時にバグチケットの帰属先の選択を受け付ける構成とされているので(図19参照)、構成要素の分割時に、分割前の構成要素に帰属しているバグチケットが存在するときには、そのバグチケットを、より適切な構成要素に帰属させる作業を容易に行うことができ、システム開発者の手間を軽減できるとともに、より適切な情報分析を行うことができる。
また、構成要素登録手段23は、構成要素の統合時に各構成要素の属性情報およびテスト進捗情報を合算する構成とされているので(図20参照)、データ統合の自動化によりシステム開発者の手間を軽減できるとともに、より適切な情報分析を行うことができる。
さらに、構成要素属性情報登録手段25は、予定テスト項目数の自動算出を行う構成とされているので、過去のプロジェクトの実績値を利用した入力補助を実現することができ、システム開発者の手間を軽減することができる。
<変形の形態>
なお、本発明は前記実施形態に限定されるものではなく、本発明の目的を達成できる範囲内での変形等は本発明に含まれるものである。
例えば、前記実施形態のプロジェクト管理システム10は、プロジェクト管理サーバ20とユーザ端末60とをネットワーク1で接続して構成されていたが、本発明のプロジェクト管理システムは、スタンドアローンのシステムとしてもよい。
また、前記実施形態のプロジェクト管理システム10は、設計工程(要件定義工程を含む)、コーディング工程、テスト工程、運用工程、および保守工程という5つの工程分類のいずれかに属する工程を登録できるようになっていたが、本発明では、運用工程や保守工程は、必ずしも工程分類として用意されていなくてもよい。例えば、ユーザの要望に応じてカスタマイズし、運用工程や保守工程が工程分類として用意されていないプロジェクト管理システムをユーザに提供してもよい。