以下、図面に基づいて本発明の実施の形態を説明する。図1は、第1の実施の形態における分析装置10のハードウェア構成例を示す図である。図1の分析装置10は、それぞれバスBで相互に接続されているドライブ装置100、補助記憶装置102、メモリ装置103、CPU104、インタフェース装置105、表示装置106、及び入力装置107等を有する。
分析装置10での処理を実現するプログラムは、CD−ROM等の記録媒体101によって提供される。プログラムを記憶した記録媒体101がドライブ装置100にセットされると、プログラムが記録媒体101からドライブ装置100を介して補助記憶装置102にインストールされる。但し、プログラムのインストールは必ずしも記録媒体101より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置102は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
メモリ装置103は、プログラムの起動指示があった場合に、補助記憶装置102からプログラムを読み出して格納する。CPU104は、メモリ装置103に格納されたプログラムに従って分析装置10に係る機能を実現する。インタフェース装置105は、ネットワークに接続するためのインタフェースとして用いられる。表示装置106はプログラムによるGUI(Graphical User Interface)等を表示する。入力装置107はキーボード及びマウス等で構成され、様々な操作指示を入力させるために用いられる。
図2は、第1の実施の形態における分析装置10の機能構成例を示す図である。図2において、分析装置10は、入力部11、分類部12及び加工部13等を有する。これら各部は、分析装置10にインストールされた1以上のプログラムが、CPU104に実行させる処理により実現される。
入力部11は、仕様の分析対象とされているコンピュータシステムのデータベースのデータ(以下、「DBストアデータ」という。)がテキスト形式に変換されたデータ(以下、「テーブルデータ」という。)を格納したファイル(以下、「テーブルデータファイル」という。)を入力する。DBストアデータは、表形式の構造を有するデータである。
分類部12は、テーブルデータにおける列のうち、複数の種別の値を含む列を種別ごとの列に分類すると共に、テーブルデータの各行を、それぞれの行が含む値の種別に応じて分類する。
加工部13は、分類部12による分類結果に基づいて、入力されたテーブルデータを加工することで、当該分類結果が反映されたテーブルデータを生成する。
以下、分析装置10が実行する処理手順について説明する。図3は、第1の実施の形態において分析装置10が実行する処理手順の一例を説明するためのフローチャートである。
ステップS100において、入力部11は、ユーザによって指定されたテーブルデータファイルに格納されているテーブルデータを読み込む。
図4は、テーブルデータの一例を示す図である。図4に示されるように、テーブルデータは、表形式の構造を有する。
続いて、分類部12は、テーブルデータ内の列方向又は行方向において、種別の異なるデータが混在しているか否かを判定する(S110)。具体的には、分類部12は、まず、各列について、当該列に含まれる各値の種別を判定する。値の種別の判定には、例えば、「正規表現による分類フィルタ」を用いることができる。当該分類フィルタは、種別ごとに用意されており、各値に各分類フィルタを適用することで、各値の種別を判定することができる。例えば、「電話番号」を表現する分類フィルタに合致した値の種別は、「電話番号」と判定される。そうすることで、複数の種別の値が含まれている列は、種別の異なるデータが混在している列であると判定される。
図4の例では、2列目について、「住所」と「英数字」の2種類のデータが混在していることが判定される。すなわち、1行目について2列目の値は住所であるが、2行目及び4行目の値は、英数字である。一方、1列目、3列目、4列目、5列目については、それぞれ、「氏名」、「メールアドレス」、「年月日」、「数字」の単一の種別の列であると判定される。
また、行方向については、列方向の判定が行われた後に、各行を構成する列の種別の組み合わせの異同によって、各行の種別の異同が判定される。
なお、RDB(Relational Database)等のデータベースにおいては、図4に示されるような、2種類以上のデータが混在する列又は行を含むテーブルが構築される可能性は低いが、一般的にレガシーシステムと呼ばれるような、メインフレーム系のシステムにおいては、例えば、記憶容量の削減等の目的のため、図4に示されるような形式のテーブル情報が存在する場合が有る。
列方向又は行方向において複数の種別が混在している場合(S110でYes)、加工部13は、複数の種別が混在している列を種別ごとに分類して、種別の混在を解消する(S111)。すなわち、加工部13は、複数の種別が混在している列を、種別ごとの列に分類(分割)することで、テーブルデータを加工する。
続いて、加工部13は、分類された各列及び各行にラベルを付与する(S130)。
図5は、混在が解消されてラベルが付与されたテーブルデータの例を示す図である。図5では、各列に対して、当該列について判定された種別(「氏名」、「住所」、「英数字」、「メールアドレス」、「年月日」、「数値」)がラベルとして付与されている。なお、当初の図4の状態では、「住所」と「英数字」とは同じ列に属していたが、図5では、ステップS111の作用により異なる列に分類(分割)されている。
また、図5では、各行に対して、「★」又は「○」がラベルとして付与されている。すなわち、「★」は、「氏名」、「住所」、「メールアドレス」、「年月日」及び「数字」を含む行に対して付与されたラベルである。「○」は、「英数字」及び「数字」を含む行に対して付与されたラベルである。なお、同じ種別の行に対して共通のラベルが付与されればよく、「★」及び「○」以外の記号又は文字列等がラベルとして使用されてもよい。
なお、加工部13は、ラベルが付与されたテーブルデータを、例えば、図5に示されるような表形式で表示装置106に表示してもよい。
上述したように、第1の実施の形態によれば、異種類のデータが混在した列を含むテーブルデータについて、種別ごとに列が分類されたテーブルデータに変換することができる。その結果、分かりにくかったテーブルデータの構造の意味の明確性を向上させることができる。すなわち、現行システム等のコンピュータシステムの仕様の理解を支援することができる。例えば、新システム設計等の設計負担を軽減するとともに、データ解析等に高スキル者を不要とすることを可能とすることができる。
次に、第2の実施の形態について説明する。第2の実施の形態では第1の実施の形態と異なる点について説明する。第2の実施の形態において特に言及されない点については、第1の実施の形態と同様でもよい。
図6は、第2の実施の形態における分析装置10の機能構成例を示す図である。図6中、図2と同一部分には同一符号を付し、その説明は省略する。図6において、分析装置10は、更に、分類支援部14を有する。分類支援部14は、分析装置10にインストールされた1以上のプログラムが、CPU104に実行させる処理により実現される。
分類支援部14は、図5のように自動的に加工(混在の解消及びラベルの付与)されたテーブルデータについて、ユーザの手作業等による更なる分類を支援する。
図7は、第2の実施の形態において分析装置10が実行する処理手順の一例を説明するためのフローチャートである。図7中、図3と同一ステップには同一ステップ番号を付し、その説明は省略する。
ステップS130に続いて、分類支援部14は、現時点のテーブルデータに対する修正の要否を判定する(S140)。現時点のテーブルデータとは、ステップS111が実行されている場合には、ステップS111の実行後のテーブルデータをいい、ステップS111が実行されていない場合には、ステップS100において入力された状態のテーブルデータをいう。修正の要否の判定は、ユーザによる入力の有無に基づいて行われてもよい。例えば、加工部13によって表示されたテーブルデータに対する修正の要否がユーザによって入力されてもよい。
続いて、分類支援部14は、テーブルデータの修正のために、新たな分類フィルタが入力されたか否かを判定する(S141)。ここでは、ステップS130までが実行されることで表示されたテーブルデータが、図8に示される通りであったとする。
図8は、第2の実施の形態におけるテーブルデータの例を示す図である。図8では、「氏名」が「佐藤 誠」である行の「住所」の値が、「大阪府芸術文化管理財団」である。すなわち、図8では、「大阪府芸術文化管理財団」が、誤って「住所」に分類された例が示されている。
この場合、ユーザは、例えば、末尾が「財団」である文字列について、企業名に分類するための分類フィルタを定義し、ステップS111において利用されるフィルタ群の一つとして追加することができる。なお、新たに追加される分類フィルタは、既存の種別に対応するものであってもよいし、新たな種別に対応するものであってもよい。
新たな分類フィルタが入力されると(S140でYes)、当該分類フィルタと既存の分類フィルタとが利用されてステップS100以降が再実行される。その結果、図8のテーブルデータは、図9に示されるように修正される。
図9は、第2の実施の形態において修正後のテーブルデータの例を示す図である。図9では、「住所」の列の右隣に「企業名」の列が追加され、「大阪府芸術文化管理財団」が、「企業名」の列に移動されている。
このような方法をとることによって、例えば、想定した分類フィルタによって分類し切れなかった種別の混在が発見された場合に、分類フィルタを更に追加することで正しい分類を行なうことができる。
一方、分類フィルタでは分類しきれない場合(S141でNo)、分類支援部14は、ユーザの手修正によって混在を解消するための直接的な修正指示をユーザから受け付ける。例えば、新たな列の追加と、当該列に分類される値とがユーザによって選択される。この場合、分類支援部14は、テーブルデータに対して新たな列を追加し、選択された値を当該列に移動する(S141)。
図10は、第2の実施の形態におけるテーブルデータの手修正の例を示す図である。図10の(1)には、テーブルデータの或る列について、氏名を抽出できる分類フィルタによって氏名の抽出を行なった結果、誤って、「氏名」のデータとして「所長」、「室長」が選択されてしまい、「氏名以外」のデータとして、「主幹研究員」、「主任研究員」、「担当課長」、「主査」等が選択されてしまった例が示されている。なお、「氏名以外」のデータとは、「氏名」として選択されなかったデータをいい、「氏名以外」という種別が存在することを意図するものではない。また、図10に示されるデータは、便宜上、図4とは異なるデータである。
この場合、ユーザは、(2)に示されるように、「役職」というラベルが付与された新たな列をテーブルデータに追加し、「所長」、「室長」、「主幹研究員」、「主任研究員」、「担当課長」、「主査」等の役職に該当する値を当該列に移動することの指示を入力する。
このようにすれば、例えば、ユーザが、分類フィルタによる自動分類の結果に誤りが有ると気づいた場合に、手修正によって正しい分類結果に導くことができる。
次に、第3の実施の形態について説明する。第3の実施の形態では第2の実施の形態と異なる点について説明する。第3の実施の形態において特に言及されない点については、第2の実施の形態と同様でもよい。
図11は、第3の実施の形態における分析装置10の機能構成例を示す図である。図11中、図6と同一部分には同一符号を付し、その説明は省略する。図11において、分析装置10は、更に、ノイズ除去部15を有する。ノイズ除去部15は、分析装置10にインストールされた1以上のプログラムが、CPU104に実行させる処理により実現される。
ノイズ除去部15は、テーブルデータにおいて、ノイズ(テストデータ等の実際の運用では使われていないデータ)と思われるデータを行又は列において検出した場合に、当該行又は当該列を削除(除去)する。
図12は、第3の実施の形態において分析装置10が実行する処理手順の一例を説明するためのフローチャートである。図12中、図7と同一ステップには同一ステップ番号を付し、その説明は省略する。
ステップS110又はステップS111に続いて、ノイズ除去部15は、テーブルデータの中に、ノイズに該当する行又は列が有るか否かを判定する(S120)。ノイズに該当するか否かは、例えば、補助記憶装置102に予め記憶されているキーワードのうちのいずれかが含まれているか否かによって判定されてもよい。いずれかのキーワードが1つでも含まれている場合にノイズに該当すると判定されてもよいし、或るキーワードが所定の割合以上含まれている場合にノイズに該当すると判定されてもよい。この場合、キーワードと共に当該所定の割合が、ノイズ対象を特定するためのルール(規則)として補助記憶装置102に記憶されていてもよい。
図13は、ノイズに該当する行又は列の一例を示す図である。例えば、「test」というキーワードと一致する文字を含むデータが全データのうちの80%以上に及ぶ列をノイズ対象とするルールが有る場合、図13における列c1がノイズに該当する。列c1は、20行中16行において「test」を含むからである。
また、「旅費太郎」を1つでも含む行をノイズ対象とするルールが有る場合、矩形r1によって囲まれている行がノイズに該当する。
なお、仮に、「旅費太郎」をキーワードと一致する文字を含むデータが全データの80%以上に及ぶ列をノイズ対象とするルールが有ったとしても、列c2はノイズに該当しない。列c2において、「旅費太郎」の割合は50%だからである。
ノイズに該当する行又は列が有る場合(S120でYes)、ノイズ除去部15は、当該行又は当該列を削除する(S121)。
上述したように、第3の実施の形態によれば、ノイズに該当する行又は列が削除された状態で、ステップS130以降の処理を実行することができる。したがって、ステップS130以降の処理の精度を高めることができると共に、当該処理を効率化することができる。
次に、第4の実施の形態について説明する。第4の実施の形態では第3の実施の形態と異なる点について説明する。第4の実施の形態において特に言及されない点については、第3の実施の形態と同様でもよい。
図14は、第4の実施の形態における分析装置10の機能構成例を示す図である。図14中、図11と同一部分には同一符号を付し、その説明は省略する。図14において、分析装置10は、更に、マルチレイアウト解析部16を有する。マルチレイアウト解析部16は、分析装置10にインストールされた1以上のプログラムが、CPU104に実行させる処理により実現される。
マルチレイアウト解析部16は、テーブルデータ内におけるマルチレイアウト構造の存在を検出すると共に、当該マルチレイアウト構造の単位を解析する。マルチレイアウト構造とは、図4に示したように、1つのテーブルデータ内において、複数種別が混在した列を含む構造をいう。「マルチレイアウト構造の単位」とは、複数の種別の値を含む列における種別の繰り返しのパタンの単位をいう。
マルチレイアウト構造の検出は、通常、専門知識の豊富な高スキル者が手動で分析し、検出することで行われるが、それではごく限られた特定の人にしか検出できず、広く手法を広めることができない。また、高スキル者の手作業に委ねられるため、高コストとなり普及が阻害される。そこで、本実施の形態では、マルチレイアウト解析部16がマルチレイアウト構造を自動で検出する。
図15は、第4の実施の形態において分析装置10が実行する処理手順の一例を説明するためのフローチャートである。図15中、図12と同一ステップには同一ステップ番号を付し、その説明は省略する。
ステップS140又はステップS142に続いて、マルチレイアウト解析部16は、テーブルデータ内にマルチレイアウト構造が存在するか否かを判定する(S150)。マルチレイアウト構造が存在する場合(S150でYes)、マルチレイアウト解析部16は、マルチレイアウト構造の単位を解析する(S151)。
図16は、マルチレイアウト構造の単位の解析を説明するための第1の図である。図16の(1)には、列#1において、住所と氏名とが交互に出現し、他の種別は単一である例が示されている。すなわち、(1)のテーブルデータは、住所と氏名との繰り返しのパタンが2行ごとであり、2行単位の周期性を有する。なお、厳密には、ステップS151の時点において、列#1は、ステップS111の作用により、2つの列に分類されている。したがって、ステップS151では、当初同じ列であった列の集合ごとに解析が行われる。なお、列#1〜列#4は、各列のラベルを抽象的に示す記号である。
この場合の解析結果は(2)に示される通りである。すなわち、マルチレイアウト解析部16は、2行をマルチレイアウト構造の単位として判定する。また、マルチレイアウト解析部16は、2行のうちの先頭の行(「住所」を含む行)を、マルチレイアウト構造の「ヘッド構造(ヘッド行)」(主要情報構造)であると判定し、それ以外の行(「氏名」を含む行)を、マルチレイアウト構造の「ボディ構造(ボディ行)」(補助情報構造)であると判定する。
すなわち、マルチレイアウト構造に規則的な周期性が有る場合には、当該周期がマルチレイアウト構造の単位として判定される。
また、図17は、マルチレイアウト構造の単位の解析を説明するための第2の図である。図17の(1)には、列#1のみならず、列#3(厳密には、列#3から分類された列の集合)にも周期性が有る例が示されている。但し、列#1の周期性の単位は2であるのに対し、列#3の周期性の単位は4である。
この場合の解析結果は(2)に示される通りである。すなわち、マルチレイアウト解析部16は、各列の周期性(本例では2と4)の最小公倍数である4を全体の行の周期性とみなし、これをもってマルチレイアウト構造の単位と判定する。また、マルチレイアウト解析部16は、マルチレイアウト構造の単位ごとに、先頭の行をヘッド行と判定し、それ以外の行(図17では2〜3行目)をボディ行と判定する。
また、図18は、マルチレイアウト構造の単位の解析を説明するための第3の図である。図18の(1)には、列#1のみにおいて種別(種別A及び種別B)が混在しており、その他の列では種別が混在していない例が示されている。但し、列#1は、一定周期ではないが、種別Aと種別Bが繰り返し現れる構造になっている。
この場合の解析結果は(2)に示される通りである。すなわち、マルチレイアウト解析部16は、1〜3行、4〜8行をそれぞれマルチレイアウト構造の単位として判定する。また、マルチレイアウト解析部16は、マルチレイアウト構造の単位ごとに、先頭の行をヘッド行と判定し、それ以外の行をボディ行と判定する。
なお、マルチレイアウト構造の検出及びマルチレイアウト構造の単位の解析は、例えば、各行における各列の種別の集合をベクトルとし、ベクトルのパタンが存在することを検出し(例えば、ベクトルAとベクトルB)、ベクトルAの複数回出現とベクトルBの複数回出現が繰り返されるパタンを見出し、これらの繰り返しの単位をマルチレイアウト構造の単位として判定することで行われてもよい。
なお、マルチレイアウト解析部16は、マルチレイアウト構造の単位の解析結果を、例えば、図19に示されるようにテーブルデータに反映してもよい。
図19は、マルチレイアウト構造の単位が解析されたテーブルデータの例を示す図である。図19に示されるテーブルデータは、「マルチレイアウトフラグ」の列を含む。また、各列のラベルが、「HEADの場合」及び「BODYの場合」に分類されている。なお、図19のテーブルデータは、便宜上、図4のテーブルデータとは異なるテーブルデータである。
「マルチレイアウトフラグ」の列は、各行が、ヘッド行であるのかボディ行であるのかを示す列である。すなわち、ヘッド行における当該列の値は「HEAD」であり、ボディ行における当該列の値は「BODY」である。
また、「HEADの場合」の行は、ヘッド行における各列のラベルを示し、「BODYの場合」の行は、ボディ行における各列のラベルを示す。
上述したように、第4の実施の形態によれば、古い現行システムにありがちな、テーブルデータ内におけるマルチレイアウト構造を自動的に検出することができ、当該マルチレイアウト構造の単位を判定(推定)することができる。その結果、テーブル構造の明確性を向上させることができる。
なお、第4の実施の形態は、第1の実施の形態のみ又は第2の実施の形態のみと組み合わされてもよい。
次に、第5の実施の形態について説明する。第5の実施の形態では第4の実施の形態と異なる点について説明する。第5の実施の形態において特に言及されない点については、第4の実施の形態と同様でもよい。
現行システムを新システムへ移行する場合、現行システム(及びそれを用いた業務)に存在する重要なビジネスルールの検出が漏れてしまい、新システムの開発の下流工程(主にテスト工程)で問題が発見され、開発の手戻りとなることが問題となっている。この問題を解消するために、現行システムの保有するビジネスルール(特に重要なルール)を漏れなく検出する必要があるが、この作業は、現状、経験豊富な高スキル者が現行システムの各種ドキュメントを読み理解したり、現行システムの業務担当者からヒアリングしたり、更に最終手段としては現行システムのソースコードを解析するなどして検出しており、非常に手間と稼動がかかり、そのわりには抜け漏れも発生している。
そこで、第5の実施の形態では、誰でも簡単に現行システムの持つ重要なビジネスルールを検出するため、現行システムの保有するDBストアデータに着目し、DBストアデータのみを入力情報として、重要なビジネスルールを発見する例について説明する。
図20は、第5の実施の形態における分析装置10の機能構成例を示す図である。図20中、図14と同一部分には同一符号を付し、その説明は省略する。図20において、分析装置10は、更に、特異点検出部17を有する。特異点検出部17は、分析装置10にインストールされた1以上のプログラムが、CPU104に実行させる処理により実現される。
特異点検出部17は、ステップS151までにおいて明らかにされた(推定された)、テーブルデータ内の関係構造に基づいて、数字列ごとに、異端な値(特異点)を検出する。数字列とは、数字のみを値として含む列(すなわち、数値を値とする列)をいう。特異点検出部17は、特異点を検出することにより、同一のジャンルに属する業務の中で、メジャーな作業に潜むマイナーな作業の兆候を発見し、そこからマイナーな業務ルールを推定することに寄与する。同一のジャンルに属する業務は、1テーブル内の1列に相当すると考え、その中で特異点となる値を検出することによってマイナーなルールの兆候を検出する。
図21は、第5の実施の形態において分析装置10が実行する処理手順の一例を説明するためのフローチャートである。図21中、図15と同一ステップには同一ステップ番号を付し、その説明は省略する。
ステップS150又はステップS151に続いて、特異点検出部17は、テーブルデータ内に1以上の数字列が有るか否かを判定する(S160)。数字列の判定は、例えば、各列に含まれている値を確認することによって行われる。図19に示したテーブルデータであれば、ヘッド行及びボディ行の「年月日」の列、ボディ行の「商品番号」の列、ボディ行の「番号」の列、ヘッド行の「電話番号」の列が数字列に該当する。
1以上の数字列が有る場合(S160でYes)、特異点検出部17は、数字列ごとに、特異点の検出を試みる(S161)。例えば、特異点検出部17は、数字列ごとに、マルチレイアウト構造の各単位について、数字が示す数値の最小値、最大値及び平均値を求め、最小値、最大値、又は平均値において、他の大多数の単位における値とは異なる傾向を示す値(特異点)があれば、当該値を検出する。
図22は、特異点の第1の検出例を示す図である。図22では、図19に示したテーブルデータにおいて、「年月日」の列と、ボディ行の「番号」の列について、マルチレイアウト構造の単位ごとに、最小値(最古年月日)、最大値(最新年月日)、及び平均値(平均年月日)が算出された例が示されている。
図22の例では、「年月日」の列の最初のマルチレイアウト構造の単位の最古年月日(「10000101」)が、同じ列の他のマルチレイアウト構造の単位の最古年月日から乖離していることが分かる。この場合、特異点検出部17は、「年月日」の列の最初のマルチレイアウト構造の単位の最古年月日(「10000101」)を特異点として検出し、当該最古年月日が格納されているセルの位置情報を出力する。
ユーザは、この特異点となる値がなぜ大多数の値と異なるのかを調査し、原因となるビジネスルールを、その特異点が持つ意味を知っていると思われる現場の業務担当者等に対するヒアリング等によって発見する。その結果、例えば、図22の例によれば、ユーザは、1000年1月1日という値は他の年月日(発送完了日)とは違って返納処理を行なったというローカルルールであるといった、見落としやすいビジネスルールを発見することができる。
又は、特異点の検出は次のように行われてもよい。図23は、特異点の第2の検出例を示す図である。図23では、「年月日」の列の値が、当該列内で最も古い年月日(図23では、1行目の年月日)を基準日として、当該基準日からの積算日の数値列に変換されている。この場合、特異点検出部17は、当該数値列内において、他とは大きくかけ離れた値を検出する。図23の例では、0のみが他とは大きくかけ離れていることが検出される。その結果、上記したようなローカルルールの発見を支援することができる。
また、特異点の検出は次のように行われてもよい。図24は、特異点の第3の検出例を示す図である。図24では、列#1及び列#3が数字列であるとする。
特異点検出部17は、各数字列について、分散値を算出する(1)。図24では、列#1についての分散値が0.1であり、列#3についての分散値が0.001であったとする。この場合、列#1の分散値が最大であるため、特異点検出部17は、列#1の中に特異点が有るだろうと推定し(2)、列#1の値をクラスタリング手法によって分類する(3)。クラスタリング手法としては、例えば、K−means法等の公知の手法が用いられればよい。特異点検出部17は、クラスタリングの結果、相対的に要素数が少ないクラスタに属する値を、特異点として検出する(4)。
ユーザは、当該特異点に基づいて、上述したようなローカルルールを発見することができる。
上述したように、第5の実施の形態によれば、DBストアデータ(テーブルデータ)から特異点を検出し、当該特異点をユーザに通知することができる。ユーザは、当該特異点の原因を調査することでビジネスルールを発見することができる。すなわち、従来法のソースコード解析などの手法では、そこに実装されているルールしか抽出できないため、業務の現場担当者のみが知っているような見落としがちなマイナー業務のビジネスルールを検出することは困難であった。本実施の形態によれば、現行の作業結果を保持しているDBストアデータから業務ルール等を抽出するため、このようなマイナーなビジネスルールも検出できる。したがって、高度のスキルを要することなく、重要なビジネスルールの発見を可能とすることができる。
なお、第5の実施の形態は、第4の実施の形態以外の各実施の形態とのみ組み合わされてもよい。
次に、第6の実施の形態について説明する。第6の実施の形態では第5の実施の形態と異なる点について説明する。第6の実施の形態において特に言及されない点については、第5の実施の形態と同様でもよい。
図25は、第6の実施の形態における分析装置10の機能構成例を示す図である。図25中、図20と同一部分には同一符号を付し、その説明は省略する。図25において、分析装置10は、更に、関係性推定部18を有する。関係性推定部18は、分析装置10にインストールされた1以上のプログラムが、CPU104に実行させる処理により実現される。
関係性推定部18は、複数のテーブルデータ(複数のテーブル)が入力された場合に、テーブル間の関係性(参照関係)を推定する。
図26は、第6の実施の形態において分析装置10が実行する処理手順の一例を説明するためのフローチャートである。図26中、図21と同一ステップには同一ステップ番号を付し、その説明は省略する。
第6の実施の形態では、ステップS100〜S160又はS161までが、複数のテーブルデータについて実行される。
図27は、第6の実施の形態において入力される複数のテーブルデータの例を示す図である。図27には、テーブルデータT1〜T3の3つのテーブルデータが示されている。
テーブルデータT1〜T3のそれぞれについて、ステップS100〜S160又はS161までが実行されると、各テーブルデータは、例えば、図28に示される状態になる。
図28は、第6の実施の形態において関係構造が推定された複数のテーブルデータの例を示す図である。図28では、テーブルデータT1〜T3の各列が、カラム1〜7、カラム11〜13、又はカラム21〜23に分類されている。特に、テーブルデータT1については、図27における2番目の列が、カラム2−1及びカラム2−2に分類されている。なお、各列のラベル及び各行に対するラベルは省略されている。
続いて、関係性推定部18は、各テーブルデータ間の関係性を推定する(S170)。例えば、テーブルデータ間の関係性は、例えば、一方のテーブルデータのいずれかの列に含まれている全ての値が、他方のテーブルデータのいずれかの列に含まれているか否かにより判定される。一方のテーブルデータのいずれかの列に含まれている全ての値が、他方のテーブルデータのいずれかの列に含まれている場合、当該2つのテーブルデータ間(厳密には当該2つの列の間)には参照関係が有ると判定される。この場合、参照関係にあると判定された2つの列のうち、値の重複の有る列から値の重複の無い列への方向が、参照の方向とされてもよい。値の重複の無い列は、当該列を含むテーブルデータにおいてキーとなる値を格納している列である可能性が推定されるからである。
例えば、テーブルデータT1のカラム2−2の全ての値は、テーブルデータT2カラム11に含まれている。また、テーブルデータT1のカラム2−2には値の重複が有るのに対し、テーブルデータT2のカラム11には値の重複が無い。したがって、テーブルデータT1のカラム2−2は、テーブルデータT2カラム11を参照していると判定される。また、テーブルデータT1のカラム7の全ての値は、テーブルデータT3のカラム21に含まれている。また、テーブルデータT1のカラム7には値の重複が有るのに対し、テーブルデータT3のカラム21には値の重複が無い。したがって、テーブルデータT1のカラム7は、テーブルデータT3のカラム21を参照していると判定される。
関係性推定部18は、判定結果を示す情報を表示装置106に表示してもよい。
上述したように、第6の実施の形態によれば、テーブルデータ同士の関係構造を明確化することができる。テーブル間の関係構造の明確化により、不明だったシステムの仕様やビジネスルールの発見等の容易化を期待することができる。
なお、第6の実施の形態は、第5の実施の形態以外の各実施の形態とのみ組み合わされてもよい。
次に、第7の実施の形態について説明する。第7の実施の形態では第6の実施の形態と異なる点について説明する。第7の実施の形態において特に言及されない点については、第6の実施の形態と同様でもよい。
図29は、第7の実施の形態における分析装置10の機能構成例を示す図である。図29中、図25と同一部分には同一符号を付し、その説明は省略する。図29において、分析装置10は、更に、モデル生成部19を有する。モデル生成部19は、分析装置10にインストールされた1以上のプログラムが、CPU104に実行させる処理により実現される。
モデル生成部19は、ステップS161以前の処理結果について、概念データモデルを生成する。現行システム上にあるDBストアデータはシステムが複雑かつ大規模になるほどデータ量が大量となり、テーブルデータ数も多くなる。その場合、テーブルデータ同士の関係を構造として理解することが難しくなるため、何らかの方法で図形によって表すと理解がしやすい。そこで、モデル生成部19は、1テーブルデータを1概念とし、1テーブルデータ内の各列のラベルを当該概念の属性として概念データモデル図(クラス図)を生成して、分かりにくいデータの構造の理解の向上に寄与する。なお、モデル生成部19は、他の各部と並行して処理を実行してもよい。
例えば、モデル生成部19は、図27に示した3種類のテーブルデータが入力されると、入力された状態における各テーブルデータを1個ずつの箱(概念又はクラス)として表し、各テーブル内のカラム(列構造)をクラスの属性として自動変換することで得られる概念データモデル図を表示装置106に表示する。
図30は、概念データモデル図の第1の例を示す図である。図30において、クラス1は、図27のテーブルデータT1に基づくクラスである。クラス2は、テーブルデータT2に基づくクラスである。クラス3は、テーブルデータT3に基づくクラスである。各クラスは、対応するテーブルデータが有する列に対応する属性を有する。
また、各テーブルデータについてステップS170までが実行された時点において、モデル生成部19は、概念データモデル図を図31に示されるように更新してもよい。
図31は、概念データモデル図の第2の例を示す図である。図31では、クラス1が、クラス1H及びクラス1Bを集約することが示されている。クラス1Hは、テーブルT1についてステップS151が実行されることにより解析される、マルチレイアウト構造のヘッド行に対応するクラスである。すなわち、クラス1Hは、図28のテーブルT1において、カラム1、カラム2−1、カラム3、カラム4、カラム5、カラム6及びカラム7に値を含む行に対応するクラスである。一方、クラス1Bは、テーブルT1について図26のステップS151が実行されることにより解析される、マルチレイアウト構造のボディ行に対応するクラスである。すなわち、クラス1Bは、図28のテーブルT1においてカラム2−2、カラム4及びカラム5に値を含む行に対応するクラスである。なお、クラス1は、複数のマルチレイアウト構造の単位を含む。したがって、クラス1とクラス1Hとの多重度は、1対多であり、当該多重度がクラス1とクラス1Hとの関係線に付与されている。同様に、クラス1とクラス1Bと多重度は、1対多であり、当該多重度がクラス1とクラス1Bとの関係線に付与されている。
マルチレイアウト構造のヘッド行及びボディ行が、概念データモデル上で分離して表示されることにより、当該マルチレイアウト構造の把握を容易とすることができる。
また、図31では、クラス1Hとクラス3とが関係線で接続されており、クラス1Bとクラス2とが関係線で接続されている。関係線の矢印の方向は、当該関係線に係るクラス間の参照方向に従う。これは、テーブルデータT1〜T3についての図26のステップS170の実行結果に基づく。すなわち、ステップS170では、テーブルデータT1のカラム7に係る列が、テーブルデータ3のカラム1に係る列を参照していることが推定される。また、テーブルデータT1のカラム2−2に係る列が、テーブルデータ2のカラム1に係る列を参照していることが推定される。なお、図31では、矢印の元の概念が矢印の先の概念を参照していることを示す。なお、図31に示されるように、各関係線には、参照関係を有する列のラベル等が付記されてもよい。
更に、図26のステップS161の実行結果が概念データモデル図に反映されてもよい。この場合、ステップS161において、特異点検出部17は、検出した特異点ごとの列をテーブルデータに追加し、当該列に対して当該特異点を移動する。その結果、図28のテーブルデータT1であれば、例えば、図32に示されるように更新される。
図32は、特異点ごとに列が追加されたテーブルデータの例を示す図である。図32において、テーブルデータT1のカラム4は、カラム4−1、4−2、及び4−3に分類されている。カラム4−2は、カラム4に含まれていた特異点「10000101」の移動先の列である。カラム4−3は、カラム4に含まれていた特異点「99999999」の移動先の列である。
モデル生成部19は、このようなテーブルデータT1について、図33に示されるような概念データモデル図を生成してもよい。
図33は、概念データモデル図の第3の例を示す図である。図33では、特異点に対応する列(カラム4−2、4−3)についても、クラス1Hの属性として明確に示されている。そうすることで、概念データモデル構造を用いて、特異点の情報(特異点の存在)を分かり易く示すことができる。
上述したように、第7の実施の形態によれば、テーブルデータ内及びテーブルデータ間の構造を明確化した結果を概念データモデルを用いて自動変換し表現することによって、テーブルデータの構造の理解を容易化することができる。
なお、第7の実施の形態は、第6以外の各実施の形態とのみ組み合わされてもよい。
また、上記各実施の形態によれば、DBストアデータを入力情報として使用することにより、様々な入力情報を総合的に判断する技量を不要とすることができる。
また、上記各実施の形態によれば、本発明では、現行システムの持つ仕様の情報をDBストアデータから抽出することによって、様々なドキュメントやヒアリングやプログラム解析を行なわずに、DBストアデータのみを分析するという唯一の方法によって熟練者でなくても現行システムの仕様を推定することができる。更に、概念データモデルによって、システムの構造を表現することによって、現行システムの仕様を推定する人が分かりやすく理解することができる。
なお、上記各実施の形態において、列と行との概念が入れ替えられてもよい。すなわち、列が行として把握されてもよいし、行が列として把握されてもよい。
なお、上記各実施の形態において、分析装置10にインストールされるプログラムは、表データ分析プログラムの一例である。テーブルデータは、表データの一例である。分類支援部14は、受付部の一例である。マルチレイアウト解析部16は、解析部の一例である。特異点検出部17は、検出部の一例である。モデル生成部19は、生成部の一例である。ノイズ除去部15は、削除部の一例である。
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。