以下、一実施形態について図面を用いて説明するが、その前に、各種の詳細な情報や機能を含めない一般化した概要について図面を参照しながら述べる。
一実施形態のソフトウェア開発支援装置100は、ソフトウェア開発のプロジェクトにおける複数の成果物を作成、変更及び更新する作業に関し、ログ記憶部10と、成果物記憶部20と、根拠記憶部30と、知識記憶部40とを備えている(図1参照)。
ログ記憶部10は、ログID、作業日、作業終了時刻、各成果物を識別する成果物ID、変更部分、作業理由、及びプロジェクトを識別するプロジェクトIDを関連付けた表形式のログ情報を記憶する(図2参照)。
成果物記憶部20は、プロジェクトID、成果物ID、及び当該成果物IDで識別される成果物のインスタンスを識別する要素IDを関連付けた表形式の要素情報23を記憶する(図5及び図6参照)。
また、ソフトウェア開発支援装置100は、インタフェース50、知識定義部70及び知識利用部80を備えている(図1参照)。
知識定義部70は、ログ情報11及び要素情報23に基づいて、根拠ID、プロジェクトID、成果物ID、要素ID、同一の作業日内の作業終了時刻を示す第1軸方向の座標、同一の成果物IDに関連する要素IDを示す第2軸方向の座標、及び同一の成果物IDを示す第3軸方向の座標を関連付けた表形式の根拠情報を作成し、当該根拠情報を根拠記憶部30に書込む(図9参照)。
インタフェース50は、根拠記憶部30内の根拠情報に基づいて生成されたグラフを表示する(図37参照)。
インタフェース50は、表示されたグラフに対応する根拠情報を識別する根拠IDを含む知識作成要求の入力を受け付ける(図37参照)。
知識定義部70は、入力を受け付けた知識作成要求に基づいて、知識ID、作業手順知識名及び説明を関連付けた表形式の作業手順知識41と、知識ID、プロジェクトID、成果物ID、要素ID、作業理由、当該要素IDに関連する作業終了時刻の直前の作業終了時刻に関連する要素ID、プロジェクトID及び成果物IDを含む直前作業物ID、及び当該要素IDに関連する作業終了時刻の直後の作業終了時刻に関連する要素ID、プロジェクトID及び成果物IDを含む直後作業物IDを関連付けた表形式の作業手順知識詳細42とを作成し、当該作業手順知識41及び当該作業手順知識詳細42を知識記憶部40に書込む(図10及び図11参照)。
インタフェース50は、知識記憶部30内の作業手順知識41及び作業手順知識詳細42を表示する。
このようなソフトウェア開発支援装置100においては、インタフェース50が、成果物IDと各座標の項目とを含む条件の入力を受け付ける機能(図20参照)と、ログ情報の選択と、知識ID、作業手順知識名及び説明の入力とを受け付ける機能(図40参照)とを更に備えてもよい。
この場合、知識定義部70は、入力を受け付けた条件に基づいてログ情報11及び要素情報23から、プロジェクトID、成果物ID、要素ID、第1軸方向の座標、及び第2軸方向の座標からなる2次元表示情報を作成する(図23参照)。
また、知識定義部70は、2次元表示情報を成果物ID毎に作成し、得られた各2次元表示情報を区別する第3軸方向の座標を追加して根拠情報31を作成する(図33参照)。
また、知識定義部70は、入力を受け付けた知識ID、作業手順知識名及び説明に基づいて作業手順知識41を作成する。知識定義部70は、選択を受け付けたログ情報と、入力を受け付けた知識IDとに基づいて作業手順知識詳細42を作成する。
これに加え、このようなソフトウェア開発支援装置100においては、知識利用部80を更に備えてもよい(図1参照)。
インタフェース50は、作業手順知識41及び作業手順知識詳細42の検索条件として、プロジェクトID、成果物ID及び要素IDの入力を受け付ける(図44参照)。
知識利用部80は、入力を受け付けた検索条件に基づいて知識記憶部40を検索し、当該検索条件に該当する作業手順知識41及び作業手順知識詳細42を知識記憶部40から取得する。また、知識利用部80は、取得した作業手順知識41及び作業手順知識詳細42を表示させるようにインタフェース50に送出する(図45参照)。
以上が一実施形態の一般化した概要である。次に、一実施形態について具体的に説明する。
<一実施形態>
図1は一実施形態に係るソフトウェア開発支援装置の構成を示す模式図である。このソフトウェア開発支援装置100は、ソフトウェアの設計/開発作業において、開発者のワークログから作業手順を抽出し、ソフトウェア開発の品質向上を支援する装置である。なお、ワークログとは、ソフトウェア開発者が行った作業(例えば、設計書やソースコードの作成、修正、テストの実施など)の記録である。また、作業とは、ソフトウェア開発のプロジェクトにおける複数の成果物を作成、変更及び更新する操作を意味する。
具体的には、ソフトウェア開発支援装置100は、ログ記憶部10、成果物記憶部20、根拠記憶部30、知識記憶部40、インタフェース50、ログ収集部60、知識定義部70、知識利用部80及びメモリ90を備えている。なお、このようなソフトウェア開発支援装置100は、ハードウェア構成、又はハードウェア資源とソフトウェアとの組合せ構成のいずれでも実施可能となっている。組合せ構成のソフトウェアとしては、予めネットワーク又は記憶媒体からコンピュータにインストールされ、当該コンピュータにソフトウェア開発支援装置100の機能を実現させるためのプログラムが用いられる。各記憶部10,20,30,40及びメモリ90の各々は、それぞれ同一又は異なる記憶装置内の異なる記憶領域からなるハードウェア資源である。
ログ記憶部10は、ベテラン技術者のソフトウェア開発のワークログを蓄積したデータベースであり、図2に示すように、当該ワークログを示すログ情報11を格納している。
ログ情報11は、ベテラン技術者の作業に関してログ収集部60を介して収集され、ログ記憶部10に格納される。ログ情報11は、ログID、作業日、作業終了時刻、作業者、対象成果物、変更部分、作業理由の属性を有し、各属性を関連付けた表形式の情報となっている。また、ワークログ収集のタイミングは、ベテラン技術者が作業結果の成果物を成果物記憶部20に登録した時である。作業理由属性は、ワークログ収集のタイミングにログ収集部60によってベテラン技術者に記入させる。ログ情報11のNo.5は、作業者Bが2010年1月27日の11時15分に、成果物ID“S−005”である画面設計仕様書に含まれる要素ID“SG05”である登録画面に、登録画面の入力フィールド追加という作業を行ったワークログを示している。
以下に、各属性の詳細を示す。
ログID:収集したワークログを一意に識別するための識別子。
作業日:作業を行った日を示す情報。
作業終了時刻:作業結果の登録時間
成果物ID:作業により作成した成果物情報22を一意に識別するための識別子。
変更部分:作業前と作業後の成果物の変更を格納している。具体的には変更部分として、要素情報23の要素IDを格納している。
作業理由:作業実施の理由。
作業者名:作業者の氏名を示す情報。
成果物記憶部20は、対象となるソフトウェア開発のライフサイクル全体の成果物を蓄積したデータベースであり、成果物の他に、図3〜図8に示すように、プロジェクト情報21、成果物情報22、要素情報23及び関連情報24を格納している。また、蓄積されている成果物は、成果物IDにより一意に特定が可能である。
プロジェクト情報21は、図3に示すように、プロジェクトを表す情報であり、この例では、No.1〜3のプロジェクトを表す情報となっている。プロジェクト情報21は、プロジェクトID、プロジェクト名の属性を有し、各属性を関連付けた表形式の情報となっている。なお、プロジェクト情報21は、プロジェクトIDがプロジェクト名としても通じる場合などは省略可能である。
以下に、各属性の詳細を示す。
プロジェクトID:プロジェクトを一意に識別するための識別子。
プロジェクト名:プロジェクトの名称。
成果物情報22は、図4に示すように、成果物を表す情報であり、この例では、No.1〜12までのソフトウェア開発における成果物を表す情報となっている。成果物情報22は、成果物ID、成果物名、関連ID、作成日、更新日の属性を有し、各属性を関連付けた表形式の情報となっている。図4に示すNo.5は、成果物ID“S−005”は画面設計仕様書であることを示している。関連IDは、定義の元となった成果物情報22を示す。
例えば、図4に示すNo.5の関連ID“R−003”は、成果物ID“S−005”の画面設計仕様書が、成果物ID“S−004”の機能設計仕様書を元に定義したことを示している。成果物情報22は、“プロジェクトID.成果物ID”で一意に識別する。
以下に、各属性の詳細を示す。
プロジェクトID:プロジェクトを一意に識別するための識別子。
成果物ID:成果物を一意に識別するための識別子。
成果物名:(当該成果物IDで識別される)成果物の名称。
関連ID:当該成果物IDに関連する関連情報24を一意に識別するための識別子。
作成日:成果物を最初に作成した日付。
更新日:成果物の作成後に変更を行った日付。
要素情報23は、図5及び図6に示すように、成果物のインスタンスを表す情報である。例えば、図5に示すNo.9〜16は、画面設計仕様書に、8個のインスタンスが含まれていることを示す。要素情報23は、プロジェクトID、成果物ID、要素ID、要素名、関連ID、作成日、更新日の属性を有し、各属性を関連付けた表形式の情報となっている。要素情報23は、“プロジェクトID.成果物ID.要素ID”で一意に識別する。
以下に、各属性の詳細を示す。
プロジェクト情報21:プロジェクトを一意に識別するための識別子。
成果物ID:成果物を一意に識別するための識別子。
要素ID:(当該成果物IDで識別される成果物の)要素(インスタンス)を一意に識別するための識別子。
要素名:成果物のインスタンスの名称。
関連ID:当該要素IDに関連する関連情報24を一意に識別するための識別子。
作成日:要素情報23を最初に作成した日付。
更新日:要素情報23の作成後に変更を行った日付。
関連情報24は、図7及び図8に示すように、成果物情報22または要素情報23の関連を表す情報である。例えば、No.1の関連ID“R−001”は、“PJ−001.S−002”が“PJ−001.S−001”に対して関連を持つことを表している。関連情報24は、関連ID、関連元ID、関連先IDの属性を有し、各属性を関連付けた表形式の情報となっている。
以下に、各属性の詳細を示す。
関連ID:関連情報24を一意に識別するための識別子。
関連元ID:関連を定義したい成果物情報22、要素情報23の識別子。入力は、“プロジェクトID.成果物ID”もしくは“プロジェクトID.成果物ID.要素ID”である。なお、関連元IDは、当該関連IDを含む成果物情報22と要素情報23とにそれぞれ含まれる成果物IDと要素IDとを含んでいる。
関連先ID:関連元IDから関連付けられる成果物ID、要素IDの識別子。入力は、“プロジェクトID.成果物ID”もしくは“プロジェクトID.成果物ID.要素ID”である。なお、関連先IDは、当該関連元IDに含まれる成果物IDと要素IDとにそれぞれ識別される成果物と要素情報23とに時系列的に先行する成果物と要素情報23とをそれぞれ識別する成果物IDと要素IDとを含んでいる。
根拠記憶部30は、成果物記憶部20内の成果物情報22、要素情報23及び関連情報24と、ログ記憶部10内のログ情報11とに基づいて作成され、作業手順知識41を抽出するための根拠となる根拠情報を蓄積したデータベースである。
具体的には根拠記憶部30は、図9に示すように、作業手順に関する根拠をグラフ表示するための根拠情報31を格納している。根拠情報31は、知識抽出部72により生成され、根拠記憶部30に格納される。根拠情報31は、根拠ID、プロジェクトID、成果物ID、要素ID、X座標(第1軸方向の座標)、Y座標(第2軸方向の座標)、Z座標(第3軸方向の座標)の属性を有し、各属性を関連付けた表形式の情報となっている。なお、X座標、Y座標及びZ座標は、グラフ表示の仕方に応じて互いに交換してもよい。また、「根拠情報」の用語は、例えば「要素変更ログ表示情報」又は「グラフ表示情報」などの他の用語に読み替えてもよい。
以下に各属性の詳細を示す。
根拠ID:根拠情報31を一意に識別するための識別子。
プロジェクトID:根拠情報31が対象とするプロジェクト情報21を一意に識別するための識別子。
成果物ID:根拠情報31が対象とする成果物情報22を一意に識別するための識別子。
要素ID:根拠情報31が対象とする要素情報23を一意に識別するための識別子。
X座標:グラフのX座標を示す。
Y座標:グラフのY座標を示す。
Z座標:グラフのZ座標を示す。
知識記憶部40は、図10及び図11に示すように、ソフトウェア開発の作業手順に関する知識を示す作業手順知識41及び作業手順知識詳細42を蓄積(格納)したデータベースである。
作業手順知識41は、図10に示すように、作業手順に関する知識を表す情報であり、知識登録部73により生成され、知識記憶部40に格納される。作業手順知識41は、知識ID、知識名、説明の属性を有し、各属性を関連付けた表形式の情報となっている。
以下に各属性の詳細を示す。
知識ID:作業手順知識41を一意に識別するための識別子。
知識名:作業手順知識41の名称。
説明:作業手順知識41の説明。
作業手順知識詳細42は、図11に示すように、作業手順に関する知識の詳細を表す情報であり、知識登録部73により生成され、知識記憶部40に格納される。作業手順知識詳細42は、知識ID、成果物ID、要素ID、作業理由、直前作業物ID、直後作業物IDの属性を有し、各属性を関連付けた表形式の情報となっている。
以下に各属性の詳細を示す。
知識ID:作業手順知識41を一意に識別するための識別子。
成果物ID:成果物情報22を一意に識別するための識別子。
要素ID:要素情報23を一意に識別するための識別子。
作業理由:成果物の作業理由を記入する項目。
直前作業物ID:当該成果物の作業前に作業を行った成果物を識別するための識別子。
直後作業物ID:当該成果物の作業後に作業を行う成果物を識別するための識別子。
図11に示す作業手順知識詳細42の直前作業物IDと直前作業物IDの関係を、知識ID“T−124”を例に可視化すると図12のようになる。
直前作業物IDは、時系列にて当該行の成果物の直前に作業を行った成果物を示している。
直前作業物IDは、時系列にて当該行の成果物の直後に作業を行った成果物を示している。
インタフェース50は、ベテラン技術者、管理者、初級技術者に対して、情報を入出力するための画面や通信インタフェースを提供する。ベテラン技術者、管理者、初級技術者の操作に応じた入力データを受け付ける機能と、受け付けた入力データをログ収集部60、知識定義部70又は知識利用部80に引き渡す機能と、ログ収集部60、知識定義部70及び知識利用部80から出力された出力データを表示する機能とをもっている。
ログ収集部60は、ソフトウェア開発の作業に関するベテラン技術者からの入力データ(例、作業者名、作業日時、成果物名、成果物ID、作業理由など)にログIDを関連付けたログ情報11をログ記憶部10に書込む機能と、変更された成果物の差分情報を収集して変更箇所をログ情報11の一部としてログ記憶部10に書込む機能と、ログ記憶部10への登録をインタフェース50に表示するための返り値を出力する機能とをもっている。
知識定義部70は、知識定義制御部71、知識抽出部72及び知識登録部73を備えている。
知識定義制御部71は、ベテラン技術者または管理者から入力された条件に応じて、各部72,73に情報を引き渡す機能と、各部72,73による処理結果をインタフェース50に出力する機能とをもっている。知識抽出部72に引き渡す情報は、プロジェクト情報21と作業手順抽出で着目するログ情報11の項目である。知識登録部73に引き渡す情報は、根拠IDと期間情報である。
知識抽出部72は、知識定義制御部71から引き渡された、プロジェクト情報21と作業手順抽出で着目するログ情報11の項目とに基づいてログ記憶部10を検索し、ログ情報11を取得する機能と、取得したログ情報11と作業手順抽出で着目するログ情報11の項目に基づいて根拠情報31を生成する機能と、生成した根拠情報31をベテラン技術者または管理者の要望する形式(平面、立体など)で表示するようにインタフェース50に送出する機能と、生成した根拠情報31を根拠記憶部30に格納する機能とをもっている。
知識登録部73は、知識定義制御部71から引き渡された根拠IDに基づき、成果物の要素を選択し作業手順知識41と作業手順知識詳細42を定義する機能と、定義した作業手順知識41と作業手順知識詳細42を知識記憶部40に格納する機能とをもっている。知識登録部73は、知識定義制御部71から引き渡された期間情報に基づき、根拠情報31を絞り込んで選択することが可能である。
知識利用部80は、利用制御部81及び知識検索部82を備えている。
利用制御部81は、初級技術者から入力された条件(例、プロジェクトID、成果物ID、要素ID、知識IDの全て又はいずれか)を知識検索部82に引き渡す機能と、知識検索部82による処理結果をインタフェース50に出力する機能とをもっている。
知識検索部82は、利用制御部81から引き渡された、プロジェクトID、成果物ID、要素ID、知識IDを検索条件として知識記憶部40から、検索条件が含まれる作業手順知識41、作業手順知識詳細42を取得する機能と、取得した作業手順知識41、作業手順知識詳細42をインターフェース50に出力する機能とをもっている。
メモリ90は、各部50〜80から適宜、読出/書込可能な記憶部である。メモリ90に保管された情報は次の手順に引き継がれる。
次に、以上のように構成されたソフトウェア開発支援装置の動作を図13乃至図42のフローチャートを用いて説明する。なお、初期状態のソフトウェア開発支援装置100は、ログ記憶部10にログ情報11を含んでおり、成果物記憶部20にプロジェクト情報21、成果物情報22、要素情報23及び関連情報24を含んでいる。
始めに、全体動作を図13に示す。
インタフェース50は、ベテラン技術者、管理者又は初級技術者の操作に応じて、入力データの入力を受け付けた後(ST100)、入力データの種類によって、ログ収集部60による処理、知識定義部70による処理、知識利用部80による処理に振り分ける(ST200)。
しかる後、インタフェース50は、振り分けた機能部60,70又は80による処理の実行後(ST300〜ST500)、当該機能部60,70又は80から送出された処理結果を取得し(ST600)、この処理結果を表示出力する(ST700)。
ソフトウェア開発支援装置100は、ベテラン技術者、管理者又は初級技術者の操作により終了が設定されるまで、ステップST100〜ST800の処理を繰り返し実行する。
ステップST400の知識定義部70による処理の主な動作を図14に示す。
知識定義部70は、インタフェース50から入力データを受けると(ST410)、入力データの種類によって(ST420)、知識抽出部72による処理(ST430)、知識登録部73による処理(ST450)を実行する。知識定義部70は、ベテラン技術者又は管理者の操作により終了が設定されるまで、ステップST410〜ST470の処理を繰り返し実行する。
ステップST430の知識抽出部72による処理の主な動作を図15に示す。
ステップST430を実行する場合、先行するステップST100において、ベテラン技術者または管理者は、図16に示すように、インタフェース50を介して表示されるメニュー画面G10の知識抽出ボタンを押下する。
インタフェース50は、知識抽出ボタンが押下されると、知識定義制御部71を介して知識抽出部72を呼び出す。これにより、ステップST430が開始される。
知識抽出部72は、図17に示すように、知識定義制御部71を介してログ情報検索画面G11をインタフェース50に表示する。
ベテラン技術者または管理者は、図18に示すように、検索条件(ここでは、プロジェクトID“PJ−001”)をログ情報検索画面G11に入力し検索ボタンを押下する。
インタフェース50は、検索ボタンが押下されると、知識定義制御部71を介して知識抽出部72に検索条件を引き渡す。
知識抽出部72は、プロジェクトID“PJ−001”を含む検索条件からなる入力データがインタフェース50から引き渡される(ST431)。
知識抽出部72は、入力データである検索条件に基づいてログ記憶部10を検索し、検索条件に該当するログ情報11を取得する(ST432)。
具体的には、知識抽出部72は、ログ記憶部10に含まれるログ情報11(検索条件であるプロジェクトID“PJ−001”に一致するログ情報11のレコード。ここでは図2に示すログ情報11の一式が相当する)を取得し、メモリ90に保管する。
また、知識抽出部72は、当該検索条件に基づいて成果物記憶部20を検索し、検索条件に該当する成果物情報22、要素情報23及び関連情報24を取得する(ST433)。
具体的には、知識抽出部72は、成果物記憶部20に含まれる成果物情報22(検索条件であるプロジェクトID“PJ−001”に一致する成果物情報22のレコード。ここでは図4に示す成果物情報22の一式が相当する)、要素情報23(検索条件であるプロジェクトID“PJ−001”に一致する要素情報23のレコード。ここでは図5及び図6に示す要素情報23の一式が相当する)、関連情報24(検索条件であるプロジェクトID“PJ−001”に一致する関連情報24のレコード。ここでは図7及び図8に示す関連情報24の一式が相当する)を取得し、メモリ90に保管する。
しかる後、知識抽出部72は、ステップST432で取得したログ情報11をインタフェース50により表示する(ST434)。具体的には、知識抽出部72は、知識抽出部72は、図19に示すように、メモリ90内のログ情報11からログ情報検索結果画面G12を生成し、ログ情報検索結果画面G12を知識定義制御部71を介してインタフェース50に引き渡す。インタフェース50は、受け取ったログ情報検索結果画面G12を表示する。ベテラン技術者または管理者は、表示されたログ情報検索結果画面G12を確認する。
ベテラン技術者または管理者は、表示されたログ情報のうち、根拠情報の生成条件を入力する(ST435)。すなわち、ベテラン技術者または管理者は、図20に示すように、抽出条件(ここでは、成果物ID)、知識抽出で着目する項目(ここでは、作業終了時刻、変更部分(変更情報に入力されているIDは、要素IDに相当する))をX軸、Y軸のフィールドをログ情報検索結果画面G12に入力し、“次へ”ボタンを押下する。
知識抽出部72は、“次へ”ボタンが押下されると、知識抽出で着目する項目をメモリ90に保管する。
知識抽出部72は、図21に示すように、受けた抽出条件を用いて知識抽出画面G13を生成する。知識抽出画面G13の抽出条件フィールドは、ログ情報11の成果物IDから選択する。知識抽出部72は、生成した知識抽出画面G13を、知識定義制御部71を介してインタフェース50に引き渡す。
インタフェース50は、受け取った知識抽出画面G13をベテラン技術者または管理者に提示する。
ベテラン技術者または管理者は、図22に示すように、抽出条件(ここでは、成果物ID“S−005”)を知識抽出画面G13に入力し抽出ボタンを押下する。
インタフェース50は、抽出ボタンが押下されると、抽出条件を、知識定義制御部71を介して知識抽出部72に受け渡す。
知識抽出部72は、入力された抽出条件に基づき、メモリ90内の情報を用いて、2次元グラフを表示するための根拠情報を生成する(ST436)。
具体的には、知識抽出部72は、受け取った抽出条件をキーに、ステップST433でメモリ90上に保管したログ情報11を検索し、抽出条件(成果物ID“S−005”)に一致するログ情報11のレコード(ここでは、No.1、No.5、No.13のレコードが相当する)を取得し、メモリ90に保管する。
また、知識抽出部72は、メモリ90上に保管したログ情報11のレコードから作業終了時刻、変更部分を検索し、検索の結果、作業終了時刻8:45、変更部分SG−03と作業終了時刻11:15、変更部分SG−05と作業終了時刻13:46、変更部分SG−06を取得し、メモリ90に保管する。
さらに、知識抽出部72は、作業終了時刻をX座標に、変更部分をY座標に変換する。Y座標への変換は、要素情報23の成果物IDが一致するレコード数で目盛りを振り、レコードの登録順に数値へ変換する。
ここで、知識抽出部72は、変換したX座標とY座標、ステップST435で入力した抽出条件、ステップST436でメモリ90上に保管したログ情報11のレコードのプロジェクトIDの3つを合成して根拠情報31を生成し、メモリ90へ保管する。
根拠情報31の例は、以下の通り、(プロジェクトID,成果物ID,要素ID,X座標,Y座標)の順に示している。
((PJ−001,S−005,SG−03,0845,3),
(PJ−001,S−005,SG−05,1115,5),
(PJ−001,S−005,SG−06,1346,6))
知識抽出部72は、このように2次元グラフの根拠情報を生成したら、インタフェース50を介してベテラン技術者または管理者に結果を表示する(ST437)。
例えば、知識抽出部72は、図23に示すように、根拠情報31から散布図G14a1を生成する。根拠情報31から散布図への変換は、既存のグラフ生成ツール等を利用して実行される。散布図G14a1は、知識定義制御部71を介してインタフェース50に引き渡される。インタフェース50は、受け取った散布図G14a1をベテラン技術者または管理者に表示する。
必要に応じて、知識抽出画面G13による抽出条件の入力から散布図の表示までの処理を繰り返す。
例えば、図24〜図30に示すように、抽出条件に成果物IDとして、S−002,S−006,S−008,S−009,S−010,S−011,S−012を指定して散布図G14a2〜G14a8を繰り返し生成する。
次に、ベテラン技術者または管理者は、2次元グラフの根拠情報の作成が終わったら、3次元グラフの根拠情報の生成条件を入力する(ST438)。
例えば、インタフェース50は、図31に示すように、3次元グラフ生成画面G15を表示中であるとする。ベテラン技術者または管理者は、図32に示すように、生成条件(ここでは、S−005,S−002,S−006,S−008,S−009,S−010,S−011,S−012。生成条件は、成果物IDをカンマ区切り“,”で入力する)を3次元グラフ生成画面G15に入力し、生成ボタンを押下する。
インタフェース50は、生成ボタンが押下されると、生成条件を、知識定義制御部71を介して知識抽出部72に受け渡す。
知識抽出部72は、入力された生成条件に基づき、メモリ90内の情報を用いて、3次元グラフを表示するための根拠情報を生成する(ST439)。
具体的には、知識抽出部72は、受け取った生成条件をキーにメモリ90に保管されている根拠情報31を検索する。
知識抽出部72は、生成条件に一致する根拠情報31にZ座標を追加し3次元グラフの根拠情報31を生成しメモリ90へ保管する。Z座標は、生成条件で入力した成果物IDの数で目盛りを振り、生成条件の左から順に数値へ変換する。3次元グラフの根拠情報31の例は、以下の通り、(プロジェクトID,成果物ID,要素ID,X座標,Y座標,Z座標)の順に示している。
(((PJ−001,S−005,SG03, 0845,3,1),
(PJ−001,S−005,SG05, 1115,5,1),
(PJ−001,S−005,SG06, 1346,6,1)),
((PJ−001,S−002,G05, 1045,5,2),
(PJ−001,S−002,G06, 1336,6,2)),
((PJ−001,S−006,SGC02,0925,2,3),
(PJ−001,S−006,SGC03,1130,3,3)),
((PJ−001,S−008,T05, 1215,5,4),
(PJ−001,S−008,T06, 1425,6,4)),
((PJ−001,S−009,TT01, 1227,1,5),
(PJ−001,S−009,TT02, 1227,2,5),
(PJ−001,S−009,TT04, 1435,4,5),
(PJ−001,S−009,TT05, 1435,5,5)),
((PJ−001,S−010,SC03, 0936,3,6),
(PJ−001,S−010,SC05, 1205,5,6),
(PJ−001,S−010,SC06, 1410,6,6)),
((PJ−001,S−011,D06, 1355,6,7)),
((PJ−001,S−012,M06, 1443,6,8)))
3次元グラフの根拠情報を生成したらベテラン技術者または管理者に結果を表示する(ST440)。
例えば、知識抽出部72は、図33に示すように、根拠情報31から3次元グラフG16を生成する。根拠情報31から3次元グラフG16への変換は既存のグラフ生成ツール等を利用して実行可能となっている。知識抽出部72は、3次元グラフG16を、知識定義制御部71を介してインタフェース50に引き渡す。
インタフェース50は、受けた3次元グラフG16をベテラン技術者または管理者に表示する。
また、知識抽出部72は、根拠情報生成の繰り返し処理の有無を判定し(ST441)、繰り返し処理があれば、ステップST438に戻ってステップST438〜ST441の処理を繰り返し実行する。
しかる後、知識抽出部72は、生成した2次元グラフと3次元グラフの根拠情報31に根拠IDを付与して根拠記憶部30に格納する(ST442)。根拠IDは、装置が自動採番する。根拠記憶部30に格納される根拠情報31の例を図9に示す。ベテラン技術者または管理者は、必要に応じ、ステップST431〜ST440の処理を繰り返すようにインタフェース50を操作し、知識抽出部72によって根拠情報31を生成する。
次に、ステップST450の知識登録部73による処理の主な動作を図34に示す。
ステップST450を実行する場合、先行するステップST100において、ベテラン技術者または管理者は、図16に示すように、インタフェース50を介して表示されるメニュー画面G10の知識登録ボタンを押下する。
インタフェース50は、知識登録ボタンが押下されると、知識定義制御部71を介して知識登録部73を呼び出す。これにより、ステップST450が開始される。
知識登録部73は、図17に示すように、知識定義制御部71を介してログ情報検索画面G11をインタフェース50に表示する。
ベテラン技術者または管理者は、図18に示すように、検索条件(ここでは、PJ−001)をログ情報検索画面G11に入力し検索ボタンを押下する。
インタフェース50は、検索ボタンが押下されると、知識定義制御部71を介して知識登録部73に検索条件を引き渡す。
知識登録部73は、プロジェクトID“PJ−001”を含む検索条件からなる入力データがインタフェース50から引き渡される(ST451)。
知識登録部73は、入力データである検索条件に基づいて根拠記憶部30を検索し、検索条件に該当する根拠情報31を取得する(ST452)。
具体的には、知識登録部73は、根拠記憶部30に含まれる根拠情報31(検索条件であるプロジェクトID“PJ−001”に一致する根拠情報31のレコード。ここでは図9に示す根拠情報31の一式が相当する)を取得し、メモリ90に保管する。
また、知識登録部73は、当該検索条件に基づいて成果物記憶部20を検索し、検索条件に該当する成果物情報22、要素情報23及び関連情報24を取得する(ST453)。
具体的には、知識登録部73は、成果物記憶部20に含まれる成果物情報22(検索条件であるプロジェクトID“PJ−001”に一致する成果物情報22のレコード。ここでは図4に示す成果物情報22の一式が相当する)、要素情報23(検索条件であるプロジェクトID“PJ−001”に一致する要素情報23のレコード。ここでは図5及び図6に示す要素情報23の一式が相当する)、関連情報24(検索条件であるプロジェクトID“PJ−001”に一致する関連情報24のレコード。ここでは図7及び図8に示す関連情報24の一式が相当する)とを取得し、メモリ90に保管する。
さらに、知識登録部73は、当該検索条件に基づいてログ記憶部10を検索し、検索条件に該当するログ情報11を取得する(ST454)。
具体的には、知識登録部73は、ログ記憶部10に含まれるログ情報11(検索条件であるプロジェクトID“PJ−001”に一致するログ情報11のレコード。ここでは図2に示すログ情報11の一式が相当する)を取得し、メモリ90に保管する。
しかる後、知識登録部73は、ステップST454で取得したログ情報11をインタフェース50により表示する(ST455)。具体的には、知識登録部73は、図35に示すように、メモリ90内のログ情報11から知識登録画面G17を生成し、知識登録画面G17を知識定義制御部71を介してインタフェース50に引き渡す。インタフェース50は、受け取った知識登録画面G17を表示する。ベテラン技術者または管理者は、表示された知識登録画面G17を確認する。
インタフェース50は、ベテラン技術者または管理者による条件(例えば、根拠ID)の入力により、知識登録部73の処理を介して根拠情報をグラフで表示する(ST456)。
詳しくは、ベテラン技術者または管理者は、図35に示す如き、知識登録画面G17の根拠表示ボタンを押下する。
知識登録部73は、根拠表示ボタンが押下されると、図36に示すように、根拠表示画面G18を表示する。ベテラン技術者または管理者は、根拠ID(ここでは、A−009)を根拠表示画面G18に入力し、表示ボタンを押下する。根拠IDは、ステップST454でメモリ90に保管した根拠情報31の一覧から選択する。
知識登録部73は、表示ボタンが押下されると、入力された根拠IDをキーに、ステップST452でメモリ90に保管した根拠情報31を検索する。
知識登録部73は、検索の結果、根拠情報31のレコード(ここでは、図9に示すNo.19〜36のレコードが相当する)を取得しメモリ90に保管する。知識登録部73は、既存のグラフ生成ツール等を利用してメモリ90内の根拠情報31をグラフへ変換し、図37に示すように、根拠表示画面G18をインタフェース50に表示する。
ベテラン技術者または管理者は、絞り込み条件として期間(ここでは、1000と1300)を根拠表示画面G18に与えて反映ボタンを押下する。
知識登録部73は、受け取った絞込み条件をキーに、ステップST452でメモリ90に保管した根拠情報31のレコードを検索する。
知識登録部73は、検索の結果、根拠情報31のレコード(ここでは、図9に示すNo.20,22,25,26,28,29,33)を取得し、メモリ90に保管する。知識登録部73は、メモリ90に保管した根拠情報31のレコードを既存のグラフ生成ツールに引き渡し、図38に示すように、3次元グラフの要素を網掛けして表示する。
表示した根拠情報は、入力条件により表示の変更が可能である(ST457〜ST460)。例えば、ベテラン技術者または管理者は、根拠表示画面G18に要素ID(ここでは、SG−05)を入力する(ST458)。要素IDは、ST456でメモリ90に保管した根拠情報31の要素IDから選択する。
知識登録部73は、受け取った要素IDをキーに、ステップST453でメモリ90に保管した関連情報24を検索する。
知識登録部73は、検索の結果、関連情報24のレコード(ここでは、図7及び図8に示すNo.15,16,25,26,36,58が相当する)を取得し、メモリ90に保管する。メモリ90に保管した関連情報24のレコードを既存のグラフ生成ツールに引渡し、図39に示すように、3次元グラフの要素間を線で結ぶ(ST459)。
ベテラン技術者または管理者は、根拠表示画面G18の“知識登録画面へ反映”ボタンを押下する。
知識登録部73は、“知識登録画面へ反映”ボタンが押下されると、ST456でメモリ90に保管した根拠情報31のレコードのプロジェクトID、成果物ID、要素ID、X軸をキーに、ステップST454でメモリ90に保管したログ情報11を検索する。
知識登録部73は、検索の結果、検索条件に一致したログ情報11のレコードを選択し、図40に示すように、知識登録画面G17の対応するレコードに網掛け表示する。
ここで、作業手順知識41を生成しない場合には、ステップST457〜ST460の処理を継続する(ST460;No)。また、作業手順知識41を生成する場合には、ステップST461に移行する(ST460;Yes)
ベテラン技術者または管理者は、知識登録部73を利用してログ情報11を選択し、作業手順知識41、作業手順知識詳細42を定義する(ST461)。
例えば、ベテラン技術者または管理者は、図41に示すように、知識登録画面G17に表示しているログ情報11から作業手順知識41にしたいレコードを選択し(図41の部分P1。レコードを選択すると、選択項目の白丸が黒丸に変化する)、知識ID、作業手順知識名、説明の入力を行い(図41の部分P2)、登録ボタンを押下する。
知識登録部73は、当該選択したログ情報11を取得し、メモリ90に保管する。
知識登録部73は、登録ボタンが押下されると、知識ID、作業手順知識名、説明から作業手順知識41を生成し(ここでは、知識ID“T−124”が一致する作業手順知識41のNo.2のレコードが相当する)、メモリ90に保管する。
知識登録部73は、作業手順知識41の生成処理と並列に、部分P1で選択されてメモリ90に保管されたログ情報11のレコードを変換して作業手順知識詳細42(ここでは、知識ID“T−124”が一致する作業手順知識詳細42のNo.4〜10が相当する)を生成し、部分P2で入力した知識IDを付加してメモリ90に保管する。作業手順知識詳細42の直前作業物IDと直後作業物IDを生成する例を以下の(1)〜(3)に示す。
(1)知識登録部73は、メモリ90に保管したログ情報11を作業終了時刻で昇順にソートする。以下に、ログ情報11(ここでは、ログ情報11のNo.4〜11が相当)をソートした例を示す。
[[L−004,1045],[L−005,1115],
[L−006,1130],[L−007,1205],
[L−008,1215],[L−009,1227],
[L−010,1227],[L−011,1241]]
(2)知識登録部73は、ソートしたログ情報11に対してシーケンシャルな番号を振る。ただし、ログ情報11の作業終了時刻が同時刻のレコードには、同じ番号を振る。以下に、シーケンシャル番号を振った例を示す。この例では、同じ作業終了時刻12:27のレコードNo.9〜10に対し、同じシーケンシャル番号“6”を振っている。
[[1,L−004,1045],[2,L−005,1115],
[3,L−006,1130],[4,L−007,1205],
[5,L−008,1215],[6,[L−009,L−010],1227],
[7,L−011,1241]]
(3)知識登録部73は、上記(2)のリストの先頭から順に、ログ情報11を作業手順知識詳細42に変換する。ここで、作業知識詳細42に含まれる直前作業物IDを作成する過程を以下の(KK1)〜(KK4)に示す。KKは川上(直前)を意味する。
(KK1)登録する要素の一つ前の要素を取得する(例えば、ログID“L−005”の登録の場合では、[1,L−004,1045]を取得)。
(KK2)取得した要素のログID(ここでは、L−004)をキーに、部分P1で選択されてメモリ90に保管したログ情報11を検索し、レコード(ログ情報11のNo.4が相当)を取得する。
(KK3)取得したレコードを検索し、プロジェクトID、成果物ID、変更部分を取得する。
(KK4)直前作業物IDを、プロジェクトID.成果物ID.変更部分((KK3)の結果からPJ−001.S−004.G05)の形で作成する。
続いて、作業知識詳細42に含まれる直後作業物IDを作成する過程を以下の(KS1)〜(KS4)に示す。KSは川下(直後)を意味する。
(KS1)登録する要素の次の要素を取得する(例えば、ログID“L−005”の登録する場合、[3,L−006,1130]を取得)。
(KS2)取得した要素のログID(ここでは、L−006)をキーに、部分P1で選択されてメモリ90に保管したログ情報11を検索し、レコード(ログ情報11のNo.6が相当)を取得する。
(KS3)取得したレコードを検索し、プロジェクトID、成果物ID、変更部分を取得する。
(KS4)直後作業物IDを、プロジェクトID.成果物ID.変更部分((KS3)の結果から、PJ−001.S−006.SG03)の形で作成する。
知識登録部73は、定義した作業手順知識41及び作業手順知識詳細42を知識記憶部40に格納する(ST462)。
また、知識登録部73は、ベテラン技術者または管理者の操作に応じ、ステップST451〜ST462の処理を繰り返して作業手順知識41及び作業手順知識詳細42を生成する。
ステップST500の知識利用部80による処理の主な動作を図42に示す。
事前に初級技術者は、成果物記憶部20に含まれるプロジェクト情報21、成果物情報22、要素情報23及び関連情報24を確認しているとする。
インタフェース50は、図43に示すように、作業手順知識検索画面G19を表示中であるとする。
初級技術者は、図44に示すように、インタフェース50を介して検索条件(ここではプロジェクトID“PJ−001”、成果物ID“S−002”、要素ID“G05”)を入力し、検索ボタンを押下する。
知識利用部80では、検索ボタンが押下されると、インタフェース50から利用制御部81を介して知識検索部82に検索条件を引き渡す(ST510)。
知識検索部82は、入力された検索条件に基づき、以下の(検索1)〜(検索2)の処理を行う(ST520)。
(検索1) 検索条件がプロジェクトID、成果物ID、要素IDの場合、知識検索部82は、プロジェクトID、成果物ID、要素IDの検索条件に基づいて、知識記憶部40内の作業手順知識詳細42を検索し、検索条件に一致する作業手順知識詳細42のNo.4のレコードを取得し、メモリ90に保管する(ST530)。
また、知識検索部82は、取得した作業手順知識詳細42のNo.4のレコードから知識IDを検索し、検索の結果、知識ID“T−124”を取得し、メモリ90に保管する(ST540)。また、知識検索部82は、得た知識ID“T−124”を検索条件(検索キー)にして知識記憶部40を検索し、知識ID“T−124”(検索キー)が一致する作業手順知識41のNo.2のレコードを取得し、メモリ90に保管する(ST550)。
(検索2) 検索条件が知識IDの場合、知識検索部82は、検索条件の知識ID“T−124”に基づいて知識記憶部40から作業手順知識41のNo.2のレコードを取得し、メモリ90に保管する(ST560)。
また、知識検索部82は、検索条件の知識ID“T−124”に基づいて知識記憶部40から作業手順知識詳細42のNo.4〜10のレコードを取得し、メモリ90に保管する(ST570)。
知識検索部82は、取得した作業手順知識41と作業手順知識詳細42を含む出力データを作成してインタフェース50に送出する(ST580)。
例えば、知識検索部82はステップST550,ST570の出力を合成し、図45に示すように、検索結果画面G20を生成する。しかる後、知識検索部82は、利用制御部81を介して検索結果画面G20をインタフェース50に引き渡す。
インタフェース50は、受けた検索結果画面G20を表示する(ST600〜ST700)検索結果画面G20は、検索結果フィールドにステップST550の出力結果、詳細フィールドにステップST570の出力結果が表示されている。
初級技術者は、表示された検索結果画面G20内の作業手順知識41と作業手順知識詳細42を確認し、画面の要件定義の作成手順の立案等の作業を行う。
知識利用部80及びインタフェース50は、初級技術者の操作に応じて、検索条件を変更してステップST510〜ST700の処理を繰り返す。
上述したように本実施形態によれば、知識定義部70が、ログ情報11及び要素情報23に基づいて根拠情報を作成し、インタフェース50が、根拠情報に基づいて生成されたグラフを表示し、知識定義部70は、入力を受け付けた知識作成要求に基づいて、知識ID、作業手順知識名及び説明を関連付けた表形式の作業手順知識41と、作業手順知識詳細42とを作成し、インタフェース50が作業手順知識41及び作業手順知識詳細42を表示する構成により、全てのバリエーションにおける成果物間の関連情報を定義するという困難な手法を用いずに成果物間の関連を提示することができる。
詳しくは、本実施形態は、技術者から収集したログ情報11から成果物の作業手順の根拠を抽出して登録管理し、抽出した根拠から、成果物の作業手順を形式知化し、登録管理し、これら根拠情報及び作業手順知識41を用いて、初級技術者へ作業手順の知識を提示している。
補足すると、従来、ソフトウェア開発の過程で発生した問題、問題に対する対策、結果の開発履歴を利用して開発者がプロジェクトの状況を把握したとしても、暗黙知が形式知化していないと、技術者には作業で必要な知識が伝達されず作業に漏れが生じる。
また従来、あらかじめ定義してある修正経路を、関連のある成果物の修正時に通知するとしても、全ての修正経路を予め定義することは難しい。なぜなら、ソフトウェアの修正過程では、バグ修正のみならず法改正や組織変更など発生した原因の内容によって修正の手順が様々となるからである。
しかしながら、本実施形態では、ログ情報11から修正の手順を形式知化する構成により、ソフトウェア開発者の暗黙知となっていた修正経路を可視化することができる。加えて、正しい修正経路を技術者へ提示することで、修正漏れを減らすことができる。
なお、上記の各実施形態に記載した手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク(フロッピー(登録商標)ディスク、ハードディスクなど)、光ディスク(CD−ROM、DVDなど)、光磁気ディスク(MO)、半導体メモリなどの記憶媒体に格納して頒布することもできる。
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であっても良い。
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているOS(オペレーティングシステム)や、データベース管理ソフト、ネットワークソフト等のMW(ミドルウェア)等が上記実施形態を実現するための各処理の一部を実行しても良い。
さらに、各実施形態における記憶媒体は、コンピュータと独立した媒体に限らず、LANやインターネット等により伝送されたプログラムをダウンロードして記憶または一時記憶した記憶媒体も含まれる。
また、記憶媒体は1つに限らず、複数の媒体から上記の各実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であっても良い。
なお、各実施形態におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき、上記の各実施形態における各処理を実行するものであって、パソコン等の1つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であっても良い。
また、各実施形態におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の機能を実現することが可能な機器、装置を総称している。
なお、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。