(57)【特許請求の範囲】
【請求項１】
業務システムが実行した複数種類の業務の実行履歴データを取得する取得部と、
前記業務の実行履歴データから、前記業務の種類ごとに当該業務に含まれる実行単位の実行履歴を抽出する履歴抽出部と、
前記履歴抽出部により抽出された実行単位の実行履歴において、所定の頻度で実行された実行単位を共通実行単位として抽出する共通実行単位抽出部と、
前記複数種類の業務の各々について、該業務に含まれる実行単位のうち、該実行単位を含む第１の業務よりも実行量の多い第２の業務において実行されていない実行単位をまとめて、固有実行単位群を抽出する固有実行単位群抽出部と、
前記実行単位と前記業務で実行するプログラムソースの呼び出し単位との関係を示す第１のデータに基づいて、前記共通実行単位及び前記固有実行単位群に含まれる実行単位を当該実行単位に対応する呼び出し単位で置き換え、呼び出し単位間の呼び出し関係を示す第２のデータに基づいて、前記置き換えた呼び出し単位と呼び出し関係にある呼び出し単位を、前記共通実行単位又は前記固有実行単位群のいずれかに対して関連付ける関連付け部と、を備える解析装置。
【請求項２】
前記関連付け部は、前記共通実行単位に含まれる実行単位に対応する呼び出し単位に該呼び出し単位と呼び出し関係にある呼び出し単位を関連付け、前記業務の実行量が多い順に、前記固有実行単位群に含まれる実行単位に対応する呼び出し単位に、該呼び出し単位と呼び出し関係にあり、且つ、まだ他の実行単位に関連付けていない呼び出し単位を関連付けることを特徴とする請求項１に記載の解析装置。
【請求項３】
前記固有実行単位群抽出部は、
前記抽出された固有実行単位群のうちの第１の固有実行単位群を含む第１の業務に、当該第１の業務よりも実行量の多い第２の業務に含まれる第２の固有実行単位群の全ての実行単位が含まれる場合に、
前記第１の固有実行単位群と前記第２の固有実行単位群とをまとめることを特徴とする請求項１又は２に記載の解析装置。
【請求項４】
前記固有実行単位群抽出部は、
前記第１の業務に、当該第１の業務よりも実行量の多い第２の業務に含まれる第２の固有実行単位群が複数含まれる場合には、当該第２の固有実行単位群を含む複数の業務の各々毎に、当該第２の固有実行単位を含む複数の業務の実行量の合計に対する、当該業務の実行量の割合をそれぞれ算出し、
前記割合が所定の割合よりも高い前記第２の固有実行単位群と、前記第１の固有実行単位群とをまとめることを特徴とする請求項３に記載の解析装置。
【請求項５】
業務システムが実行した複数種類の業務の実行履歴データを取得し、
前記業務の実行履歴データから、前記業務の種類ごとに当該業務に含まれる実行単位の実行履歴を抽出し、
前記抽出された実行単位の実行履歴において所定の頻度で実行された実行単位を共通実行単位として抽出し、
前記複数種類の業務の各々について、該業務に含まれる実行単位のうち、該実行単位を含む第１の業務よりも実行量の多い第２の業務において実行されていない実行単位をまとめて、固有実行単位群を抽出し、
前記実行単位と前記業務で実行するプログラムソースの呼び出し単位との関係を示す第１のデータに基づいて、前記共通実行単位及び前記固有実行単位群に含まれる実行単位を当該実行単位に対応する呼び出し単位で置き換え、呼び出し単位間の呼び出し関係を示す第２のデータに基づいて、前記置き換えた呼び出し単位と呼び出し関係にある呼び出し単位を、前記共通実行単位又は前記固有実行単位群のいずれかに対して関連付ける処理を、コンピュータに実行させることを特徴とする解析プログラム。
【請求項６】
コンピュータが、
業務システムが実行した複数種類の業務の実行履歴データを取得する取得工程と、
前記業務の実行履歴データから、前記業務の種類ごとに当該業務に含まれる実行単位の実行履歴を抽出する履歴抽出工程と、
前記履歴抽出工程により抽出された実行単位の実行履歴において、所定の頻度で実行された実行単位を共通実行単位として抽出する共通実行単位抽出工程と、
前記複数種類の業務の各々について、該業務に含まれる実行単位のうち、該実行単位を含む第１の業務よりも実行量の多い第２の業務において実行されていない実行単位をまとめて、固有実行単位群を抽出する固有実行単位群抽出工程と、
前記実行単位と前記業務で実行するプログラムソースの呼び出し単位との関係を示す第１のデータに基づいて、前記共通実行単位及び前記固有実行単位群に含まれる実行単位を当該実行単位に対応する呼び出し単位で置き換え、呼び出し単位間の呼び出し関係を示す第２のデータに基づいて、前記置き換えた呼び出し単位と呼び出し関係にある呼び出し単位を、前記共通実行単位又は前記固有実行単位群のいずれかに対して関連付ける関連付け工程と、を実行することを特徴とする解析方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本件は、解析装置、解析プログラム及び解析方法に関する。
【背景技術】
【０００２】
企業内に存在する業務システム（業務アプリケーション）においては、保守を行う際に、新規機能の追加や保守工数の削減などを目的として業務システムの作り直しを行うことがある。この場合、作業工数やコストの低減を図るため、業務システムのすべてを一律に作り直すのではなく、作り直すかの判断や作り直す場合の方式検討を部分単位で行うことが好ましい。
【０００３】
ここで、部分単位に分割する基準としては、業務の実行単位が挙げられる。しかるに、長期にわたって業務システムのプログラムを改良・変更すると、当初の構造とは異なる構造になることがある。また、一つの業務が複数の業務システムに跨って実行されたり、一つの業務システムで複数の業務が実行されたりすることもある。このため、業務と当該業務を実行するためのプログラムソース（以下、「ソース」と呼ぶ）の対応関係が不明になることがある。
【０００４】
これに対し、業務に関係するソースの範囲が明らかになれば、保守作業においてソースを変更するときに、影響がある範囲や詳細に検討すべき範囲を推定するのに有用である。また、業務システムの部分的な再構築などのために、業務システム内で独立性の高い部分を切り出しやすくなる。
【０００５】
業務システムで用いられる複数のソース（ソース群）を分割する方法には、ディレクトリ単位で分割する方法や、ソース内のメソッドの呼び出し関係をたどり、関係の強さを用いて分割する方法が挙げられる（静的解析と呼ばれる）。しかしながら、このような静的解析では、ソースは業務と関係なく分割・分類される。
【０００６】
一方、業務システムで用いられるソース群を分割する別の方法としては、ソースに加え、業務フロー情報を用いる方法がある。なお、業務フロー情報とは、業務の処理の流れ（業務の実行単位（イベントやタスクなどと呼ばれる）の実行順）を図などで記述したものである。この場合、業務フローと、業務フローにおいて実行されるイベントに対応するソースの範囲との対応が分かれば、業務に対応するソースの範囲を把握することができる。しかしながら、正確に記述した業務フロー情報が必要であり、またイベントに対応するソースの範囲を別途指定する必要がある。
【０００７】
これに対し、業務フローを業務データから抽出する手法として、process miningが知られている。このprocess miningを用いることで、業務フローの種別とその実行量、業務フローを構成するイベントの各情報が得られる（例えば、非特許文献１、２参照）。また、ソースにおいてイベントに対応する業務データを生成する箇所を抽出する技術も知られている（例えば、特許文献１参照）。そのため、これらを組み合わせることで、業務とソースの関係づけが可能である。
【０００８】
また、業務フローの種別に含まれるイベント種別の組み合わせを業務の特徴とする場合に、どのようなイベントの組み合わせが業務を特徴付けるかを求める方法として、アソシエーション分析技術が知られている。アソシエーション分析技術の代表例として、Aprioriアルゴリズム（非特許文献３）がある。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】国際公開第２００８／１４６３４１号
【非特許文献】
【００１０】
【非特許文献１】M. Dumasなど編, Process-Aware Information Systems: Bridging People and Software Through Process Technology, Wiley-Interscience, 2005年9月, ISBN: 978-0-471-66306-5.
【非特許文献２】W. M. P. van der Aalstなど, Workflow mining:  A survey of issues and approaches, Data & Knowledge Engineering, Vol. 47, Issue 2, 2003年11月.
【非特許文献３】金 明哲, Rによるデータサイエンス, 森北出版, 2007年10月, ISBN: 978-4-627-09601-1.
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、上述した特許文献１の方法や、Aprioriアルゴリズムを用いた（組み合わせた）としても、変更・修正された業務システムにおいて、業務フロー及びこれに関連するメソッドを適切に分類・分割することができない可能性がある。
【００１２】
そこで本件は上記の課題に鑑みてなされたものであり、プログラムソースの呼び出し単位を適切に分類・分割することが可能な解析装置、解析プログラム及び解析方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
本明細書に記載の解析装置は、業務システムが実行した複数種類の業務の実行履歴データを取得する取得部と、前記業務の実行履歴データから、前記業務の種類ごとに当該業務に含まれる実行単位の実行履歴を抽出する履歴抽出部と、前記履歴抽出部により抽出された実行単位の実行履歴において、所定の頻度で実行された実行単位を共通実行単位として抽出する共通実行単位抽出部と、前記複数種類の業務の各々について、該業務に含まれる実行単位のうち、該実行単位を含む第１の業務よりも実行量の多い第２の業務において実行されていない実行単位をまとめて、固有実行単位群を抽出する固有実行単位群抽出部と、前記実行単位と前記業務で実行するプログラムソースの呼び出し単位との関係を示す第１のデータに基づいて、前記共通実行単位及び前記固有実行単位群に含まれる実行単位を当該実行単位に対応する呼び出し単位で置き換え、呼び出し単位間の呼び出し関係を示す第２のデータに基づいて、前記置き換えた呼び出し単位と呼び出し関係にある呼び出し単位を、前記共通実行単位又は前記固有実行単位群のいずれかに対して関連付ける関連付け部と、を備えている。
【００１４】
本明細書に記載の解析プログラムは、業務システムが実行した複数種類の業務の実行履歴データを取得し、前記業務の実行履歴データから、前記業務の種類ごとに当該業務に含まれる実行単位の実行履歴を抽出し、前記抽出された実行単位の実行履歴において所定の頻度で実行された実行単位を共通実行単位として抽出し、前記複数種類の業務の各々について、該業務に含まれる実行単位のうち、該実行単位を含む第１の業務よりも実行量の多い第２の業務において実行されていない実行単位をまとめて、固有実行単位群を抽出し、前記実行単位と前記業務で実行するプログラムソースの呼び出し単位との関係を示す第１のデータに基づいて、前記共通実行単位及び前記固有実行単位群に含まれる実行単位を当該実行単位に対応する呼び出し単位で置き換え、呼び出し単位間の呼び出し関係を示す第２のデータに基づいて、前記置き換えた呼び出し単位と呼び出し関係にある呼び出し単位を、前記共通実行単位又は前記固有実行単位群のいずれかに対して関連付ける処理を、コンピュータに実行させる解析プログラムである。
【００１５】
本明細書に記載の解析方法は、コンピュータが、業務システムが実行した複数種類の業務の実行履歴データを取得する取得工程と、前記業務の実行履歴データから、前記業務の種類ごとに当該業務に含まれる実行単位の実行履歴を抽出する履歴抽出工程と、前記履歴抽出工程により抽出された実行単位の実行履歴において、所定の頻度で実行された実行単位を共通実行単位として抽出する共通実行単位抽出工程と、前記複数種類の業務の各々について、該業務に含まれる実行単位のうち、該実行単位を含む第１の業務よりも実行量の多い第２の業務において実行されていない実行単位をまとめて、固有実行単位群を抽出する固有実行単位群抽出工程と、前記実行単位と前記業務で実行するプログラムソースの呼び出し単位との関係を示す第１のデータに基づいて、前記共通実行単位及び前記固有実行単位群に含まれる実行単位を当該実行単位に対応する呼び出し単位で置き換え、呼び出し単位間の呼び出し関係を示す第２のデータに基づいて、前記置き換えた呼び出し単位と呼び出し関係にある呼び出し単位を、前記共通実行単位又は前記固有実行単位群のいずれかに対して関連付ける関連付け工程と、を実行する解析方法である。
【発明の効果】
【００１６】
本明細書に記載の解析装置、解析プログラム及び解析方法は、プログラムソースの呼び出し単位を適切に分類・分割することができるという効果を奏する。
【図面の簡単な説明】
【００１７】
【図１】一実施形態に係る解析装置の解析対象である業務遂行システムの構成を概略的に示す図である。
【図２】解析装置と業務遂行システムとの間のデータのやり取りを模式的に示す図である。
【図３】解析装置のハードウェア構成を示す図である。
【図４】解析装置の機能ブロック図である。
【図５】解析装置による一連の処理を示すフローチャートである。
【図６】図５のステップＳ１４の具体的内容を示すフローチャート（その１）である。
【図７】図５のステップＳ１４の具体的内容を示すフローチャート（その２）である。
【図８】図５のステップＳ１６の具体的内容を示すフローチャートである。
【図９】テーブルｔ１のデータ例を示す図である。
【図１０】対象業務フロー種別と実行量を示す図である。
【図１１】対象業務フロー種別と実行量（実行量でソート後）を示す図である。
【図１２】イベント種別とそれを含むフロー種別数を示す図である。
【図１３】検出した共通イベントと、イベント群を格納する記憶域Ｓを示す図である。
【図１４】図１４（ａ）は、イベント群Ｇ７に対するカウンタＣを示す図であり、図１４（ｂ）は、記憶域Ｚを示す図である。
【図１５】図１５（ａ）は、イベント群Ｇ５に対するカウンタＣを示す図であり、図１５（ｂ）は、記憶域Ｚを示す図である。
【図１６】イベント群Ｇ４に対するカウンタＣを示す図である。
【図１７】記憶域Ｓ（最終結果）を示す図である。
【図１８】図１８（ａ）は、process miningの定義情報テーブル例を示す図であり、図１４（ｂ）は、process miningの対応情報テーブル例を示す図である。
【図１９】ソースのメソッド間の呼び出し関係を示す図である。
【図２０】書き込みメソッドの一例を示す図である。
【図２１】呼び出しメソッドの一例を示す図である。
【図２２】表示イベント名と対応するメソッドを関連付けたデータを示す図である。
【図２３】図２３（ａ）は、記憶域Ｍ（イベント群に対応するメソッドのみを記録した状態）を示す図であり、図２３（ｂ）は、記憶域Ｍ（メソッド呼び出し元のメソッド情報を追加した状態）を示す図である。
【図２４】記憶域Ｍ（メソッド呼び出し先のメソッド情報を追加した状態）を示す図である。
【図２５】図２４の記憶域Ｍを図に表した状態を示す図である。
【図２６】図２５のメソッドを分類した状態を示す図である。
【発明を実施するための形態】
【００１８】
以下、一実施形態について、図１〜図２６に基づいて詳細に説明する。図１には、本実施形態の解析装置２０（図２参照）が解析を行う企業内の業務遂行システム１００の構成が概略的に示されている。本実施形態の業務遂行システム１００は、図１に示すように、１又は複数（図１では２つ）の業務システム１０Ａ，１０Ｂを備える。業務システム１０Ａ，１０Ｂでは、様々な業務が行われ、各業務においては、業務システム１０Ａ，１０Ｂ上においてプログラムソース（ソース）が実行される。業務システム１０Ａ，１０Ｂは、ネットワーク１４を介して接続されており、業務を業務システム間で分担したり、データを共有したりする。
【００１９】
業務システム１０Ａ、１０Ｂにおける業務の実行履歴データ（業務の実行単位（イベント）の実行履歴）等は、業務システム１０Ａ、１０Ｂそれぞれが有する業務ＤＢ１２Ａ、１２Ｂに格納される。業務ＤＢ１２Ａ、１２Ｂは、例えば、図９のようなテーブルｔ１を有するものとする。なお、図９のテーブルｔ１は、業務の識別子である項目「id」と、業務の実行単位であるイベントのタイプ（イベント種別）である項目「type」と、業務実行時刻の項目「datetime」と、を含む。
【００２０】
本実施形態の解析装置２０は、図２に示すように、業務システム１０Ａ、１０Ｂからイベントの実行履歴データを取得し、解析を行う。なお、業務システム１０Ａ，１０Ｂから解析装置２０へのデータの受け渡しは、記憶媒体（ＣＤ−ＲＯＭやＵＳＢメモリなど）やネットワーク（インターネットなど）を介して行うものとする。また、本解析では、業務において実行されるイベント間の関連等に基づいて、関連するプログラムソースを塊として分類する。
【００２１】
図３には、解析装置２０のハードウェア構成が示されている。図３に示すように、解析装置２０は、コンピュータとしてのＣＰＵ９０、ＲＯＭ９２、ＲＡＭ９４、記憶部（ここではＨＤＤ（Hard Disk Drive））９６、入出力部９７、可搬型記憶媒体用ドライブ９９等を備えており、解析装置２０の構成各部は、バス９８に接続されている。入出力部９７には、表示部や入力部等が接続されている。解析装置２０では、ＲＯＭ９２あるいはＨＤＤ９６に格納されているプログラム（解析プログラム）又は可搬型記憶媒体用ドライブ９９が可搬型記憶媒体９１から読み出したプログラム（解析プログラム）をＣＰＵ９０が実行することにより、図４の各部の機能が実現される。
【００２２】
図４は解析装置２０の機能ブロック図である。図４に示すように、解析装置２０は、process mining定義情報格納部３０、取得部としての業務データ蓄積部３２、履歴抽出部としてのprocess mining実行部３４、共通実行単位抽出部及び固有実行単位群抽出部としてのイベント分類部３６、関連付け部としてのソース分割部３８、及び、ソース蓄積部４０、として機能する。
【００２３】
process mining定義情報格納部３０は、process mining実行部３４がprocess miningを実行する際に用いる定義情報を格納する。なお、定義情報は、公知のprocess miningにおいて用いられる定義情報と同一又は同等の情報である（図１８（ａ）参照）。業務データ蓄積部３２は、業務システムの業務ＤＢ１２Ａ，１２Ｂから業務データを抽出して、蓄積する。業務データは、process mining実行部３４がprocess miningを実行する際に用いるデータ（図９のデータ）である。
【００２４】
process mining実行部３４は、process mining処理を実行する。イベント分類部３６は、process mining処理の結果を用いて、共通実行単位としての共通イベントと、固有実行単位群としてのイベント群とを抽出する。なお、イベント分類部３６は、所定の頻度で実行されたイベントを共通イベントとして抽出し、複数種類の業務の各々について、該業務に含まれるイベントのうち、該イベントを含む業務（第１の業務）よりも実行量の多い業務（第２の業務）において実行されていないイベントをまとめて、イベント群とする。
【００２５】
ソース分割部３８は、イベント分類部３６で抽出された共通イベント又はイベント群と、ソース蓄積部４０に蓄積されているプログラムソース（ソース）の情報とに基づいて、ソースを関連するソースの塊として分類・分割する。また、ソース分割部３８は、分類・分割結果を、表示部への表示や、紙媒体への印刷、あるいはデータとして、出力する。
【００２６】
次に、上記のように構成される解析装置２０による処理について、図５〜図２６に基づいて詳細に説明する。
【００２７】
図５には、解析装置２０の一連の処理がフローチャートにて示されている。また、図６、図７には、図５のステップＳ１４の具体的な処理内容、図８には、図５のステップＳ１６の具体的な処理内容が示されている。なお、解析装置２０の処理は、図１、図２の業務遂行システム１００を稼動している企業等からの解析依頼を受けて、実行されるものとする。
【００２８】
図５の処理では、まず、ステップＳ１０において、業務データ蓄積部３２が、業務システム１０Ａ，１０Ｂの業務ＤＢ１２Ａ，１２Ｂから業務データ（図９のテーブルｔ１参照）を抽出して、蓄積する。なお、業務データの抽出は、前述したようにネットワークや記憶媒体を介して行われる。
【００２９】
次いで、ステップＳ１２では、process mining実行部３４が、業務データに対して既存のprocess mining技術を適用し、複数の業務フロー種別とそれらの実行量を得る。この場合、process mining実行部３４は、process mining技術により、図９に示すようなテーブルｔ１に基づいて、図１０に示すような対象業務フロー種別と実行量のデータを得ることができる。なお、図１０のデータは、項目「フロー種別Ｎｏ．」、実行回数を表す項目「実行量」、業務の実行単位であるイベント（イベント種別）の実行順を記述した項目「業務フロー種別」を含んでいる。ここで、業務フロー種別に含まれる「ＩＮＩＴ」、「Ａ１」、「Ａ２」などはイベント種別を表し、イベント種別間に記述されている「→」はイベントの実行順を表している。なお、業務においては、手戻り等により、同一の業務内において同一のイベント種別が複数回行われる場合もある。このような場合であっても、一の業務においては、同一のイベント種別を１回のみカウントすることとする。
【００３０】
次いで、ステップＳ１４では、イベント分類部３６が、各業務フロー種別に特有のイベント種別の組み合わせを抽出する処理を実行する。具体的には、イベント分類部３６は、図６、図７に示す処理を実行する。
【００３１】
図６のステップＳ２０では、イベント分類部３６が、process mining技術を用いて抽出した業務フロー種別とその実行量のデータを読み込む。次いで、ステップＳ２２では、イベント分類部３６が、読み込んだ業務フロー種別を実行量の多い順にソートする。なお、ステップＳ２０でイベント分類部３６が読み込むデータが、図１０に示すようなデータであり、ステップＳ２２でソートされた後のデータが、図１１のようなデータである。
【００３２】
次いで、ステップＳ２４では、イベント分類部３６が、イベント群Ｇiを格納する記憶域Ｓを用意する（図１３参照）。なお、図１３の記憶域Ｓのうち、該当フロー種別Ｎｏ．の列は、結果を分かりやすく示すためのものであり、実際の処理では不要である。
【００３３】
次いで、ステップＳ２６では、イベント分類部３６が、イベント種別ごとに、フロー種別数に対する当該イベント種別を含むフロー種別数の割合が閾値以上の場合、そのイベント種別を共通イベントと判断する。すなわち、ステップＳ２６では、イベント分類部３６が、各イベント種別（Ａ１，Ａ２…）を抽出するとともに、各イベント種別を含むフロー種別の数を、図１２のように抽出する。そして、イベント分類部３６は、次式（１）を満たすイベント種別を、共通イベントと判断する。
(イベント種別を含む業務フロー種別の個数／全体の業務フロー種別数)≧閾値
…（１）
【００３４】
より具体的には、図１１の業務フロー種別からイベント種別（Ａ１，Ａ２…）とそれを含む業務フロー種別の個数を抽出し、業務フロー種別数全体に対するイベント種別を含むフロー種別数の割合を計算すると、図１２のようになる。このとき、全体の業務フロー種別数は１１である。また、閾値を例えば０．８とすると、図１２のうち、イベント種別「INIT」と「FINAL」が上式（１）を満たす。したがって、ステップＳ２６では、イベント分類部３６は、イベント種別「INIT」と「FINAL」を、共通イベントと判断する。そして、これらを図１３に示すように、Ｇ０（共通イベント）として記憶域Ｓに登録する。
【００３５】
次いで、ステップＳ２８では、イベント分類部３６が、業務フロー種別をソート順に抽出する。ここでは、例えば、図１１の１つ目の業務フロー（フロー種別Ｎｏ．＝１１の業務フロー種別）が抽出されることになる。
【００３６】
次いで、ステップＳ３０では、イベント分類部３６が、抽出した業務フロー種別に含まれているイベント種別のうち、まだどのイベント群にも含まれていないイベント種別があるか否かを参照する。そして、イベント分類部３６は、そのようなイベント種別があれば、新たなイベント群Ｇｘとして記憶域Ｓに登録する。
【００３７】
例えば、フロー種別Ｎｏ．＝１１の業務フロー種別の場合、共通イベントとして抽出された「INIT」と「FINAL」を除いたイベントの組み合わせを抽出すると、イベント種別「Ａ１、Ｘ、Ａ３、Ａ４」が得られる。これらはまだどのイベント群にも含まれていないので、イベント分類部３６は、新たなイベント群Ｇ１としてイベント種別「Ａ１、Ｘ、Ａ３、Ａ４」の組を、記憶域Ｓに登録する（図１３参照）。
【００３８】
次いで、ステップＳ３２では、イベント分類部３６が、全てのフロー種別を抽出したか否かを判断する。ここでの判断が否定された場合には、ステップＳ２８に戻る。ステップＳ２８に戻ると、イベント分類部３６は、次の業務フロー種別を抽出する。ここでは、例えば、図１１の２つ目の業務フロー（フロー種別Ｎｏ．＝９の業務フロー種別）が抽出されることになる。
【００３９】
次いで、ステップＳ３０では、イベント分類部３６が、共通イベントとして抽出された「INIT」と「FINAL」を除いたイベント種別の組み合わせを抽出する。この場合、イベント種別「Ａ１、Ａ２、Ａ３、Ａ４」が抽出され、これらのイベント種別のうち、イベント種別「Ａ２」は、どのイベント群にも含まれていない。したがって、本ステップＳ３０では、イベント分類部３６は、新たなイベント群Ｇ２として、イベント種別「Ａ２」のみを、図１３の記憶域Ｓに登録する。
【００４０】
その後、ステップＳ３２の判断が肯定されるまで、ステップＳ２８、Ｓ３０を繰り返す。これにより、図１３のように、記憶域Ｓにイベント群Ｇ１〜Ｇ７を登録することができる。そして、ステップＳ３２の判断が肯定されると、ステップＳ３４に移行する。
【００４１】
ステップＳ３４では、イベント分類部３６が、イベント群の移動先を記憶する記憶域Ｚを用意する（図１４（ｂ）参照）。その後は、図７の処理に移行する。なお、これまでの処理で記憶域Ｓに登録されたイベント群は、実際は、他のイベント群と同時に出現することが多い場合もある。したがって、そのようなイベント群同士を併合して、より大きな塊として捉えるべき場合もある。図７の処理では、このようなイベント群の併合処理を行うこととしている。なお、併合すべきイベント群は、後の方で抽出されたイベント群（実行回数が少ないイベント群）である可能性が高いと考えられる。
【００４２】
図７の処理では、まず、ステップＳ３６において、イベント分類部３６が、最後に加えたイベント群から（図１３の下側から順に）イベント群を抽出する。ここでは、イベント群Ｇ１〜Ｇ７のうち、最後に記憶域Ｓに登録されたイベント群Ｇ７を抽出する。
【００４３】
次いで、ステップＳ３８では、イベント分類部３６が、イベント群の個数分のカウンタＣを用意する（図１４（ａ）参照）。次いで、ステップＳ４０では、イベント分類部３６が、未抽出の業務フロー種別を１つ抽出する。ここでは、図１０のフロー種別Ｎｏ．＝１〜１１のうちのいずれかの業務フロー種別（例えば、フロー種別Ｎｏ．が最も小さい、フロー種別Ｎｏ．＝１の業務フロー種別とする）を抽出する。
【００４４】
次いで、ステップＳ４２では、イベント分類部３６が、ステップＳ４０で抽出した業務フロー種別が、ステップＳ３６で抽出したイベント群（Ｇ７）のイベント種別（Ｃ３）を全て含んでいるか否かを判断する。ここでは、含んでいないので、ステップＳ４２の判断が否定され、ステップＳ４６に移行する。そして、ステップＳ４６では、全ての業務フロー種別を抽出したか否かを判断する。ここでの判断が否定された場合には、ステップＳ４０に戻り、未抽出のフロー種別を１つ（例えば、フロー種別Ｎｏ．＝２のフロー種別）抽出する。
【００４５】
このように、イベント群Ｇ７に対して、業務フロー種別のうちＧ７のイベントを全て含んでいるものを調べると、ステップＳ４０でフロー種別Ｎｏ．＝１０の業務フロー種別が抽出されているときにステップＳ４２の判断が肯定される。この場合、ステップＳ４４に移行する。ステップＳ４４では、イベント分類部３６は、抽出したフロー種別が、抽出したイベント群より先に登録したｋ番目の（すなわち、抽出したフロー種別よりも実行量の多いフロー種別に含まれる）イベント群（Ｇｋ）の全イベントを含む場合に、ｋ番目のイベントのカウンタＣに、抽出したフロー種別の実行量を加算する。この場合、イベント群Ｇ１からＧ６のイベント種別のうち、フロー種別Ｎｏ．＝１０にすべて含まれているイベント種別はＧ６であるので、カウンタＣの値は、図１４（ａ）のようになる。
【００４６】
その後、ステップＳ４６の判断が肯定されると、ステップＳ４８に移行する。ステップＳ４８では、イベント分類部３６は、カウンタの合計値（ＣSUM）に対する最大カウンタ値（Ｃmax）の割合が閾値（例えば、０．８とする）以上の場合、当該イベント群の移動先を最大カウンタ値に対応するイベント群に設定する。
【００４７】
ここでは、図１４（ａ）に示すように、Ｃmax＝２１であり、カウンタの合計値（ＣSUM）は２１である。したがって、Ｃmax／ＣSUM＝２１／２１＞０．８より、記憶域Ｚにおいては、イベント群Ｇ７の移動先としてイベント群Ｇ６が設定されることになる（図１４（ｂ）参照)。
【００４８】
次いで、ステップＳ５０では、イベント分類部３６が、全てのイベント群を抽出したか否かを判断する。ここでは、まだ、イベント群Ｇ７を抽出したのみであるので、ステップＳ５０の判断は、否定され、ステップＳ４０に戻る。その後、イベント分類部３６は、上記と同様の処理を、イベント群Ｇ６→Ｇ５→…→Ｇ１について実行する。
【００４９】
例えば、イベント群Ｇ５について上記と同様の処理を実行した場合のカウンタＣの値は、図１５（ａ）のようになる。したがって、記憶域Ｚにおいては、イベント群Ｇ５の移動先として、イベント群Ｇ３が設定されることになる。
【００５０】
また、例えば、イベント群Ｇ４について上記と同様の処理を実行した場合のカウンタＣの値は、図１６に示すようになる。この場合、Ｃmax／ＣSUM＝５４／（５４＋５２）≒０．５１となり、閾値（０．８）を超えない。したがって、イベント群Ｇ４の移動先としては、何も設定されない。
【００５１】
なお、その他のイベントについても移動先は設定されない。このため、最終的に移動先が設定されるイベント群は、図１５（ｂ）に示すようにイベント群Ｇ５とイベント群Ｇ７となる。
【００５２】
図７に戻り、上述したようなステップＳ３６〜Ｓ５０の繰り返し処理が行われ、ステップＳ５０の判断が肯定されると、ステップＳ５２に移行する。ステップＳ５２では、イベント分類部３６が、最後に加えたイベント群から順に、当該イベント群に対応する移動先が設定されているかを確認し、設定されている場合は、当該イベント群を移動先イベント群に併合する。このステップＳ５２の処理の結果、記憶域Ｓの最終結果（併合結果）は、図１７のようになる。なお、図１７では、イベント群に新たに併合されたイベント種別に下線を付して示している。
【００５３】
以上の処理では、イベント分類部３６は、抽出されたイベント群のうちのあるイベント群を含む業務（第１の業務）に、そのイベントよりも実行量の多い業務（第２の業務）に含まれるイベント群の全てのイベントが含まれる場合に、両イベント群をまとめることとしており、これにより、イベント群は、共通イベント（Ｇ０）と、５個のイベント群（Ｇ１、Ｇ２，Ｇ３，Ｇ４，Ｇ６）に分類されることになる。これ以降は、図５のステップＳ１６に移行する。
【００５４】
図５に戻り、ステップＳ１６では、ソース分割部３８が、イベントの組に対応するコードを抽出し、それを業務に対応するコードの範囲とする処理を実行する。具体的には、図８のフローチャートに沿った処理が実行される。なお、本実施形態では、プログラムソースの記述言語がＪａｖａ（登録商標）であるものとする。ただし、これに限らず、メソッドのように何らかのコードの塊があり、当該コードの塊を呼び出し単位とする言語で記述されていれば、他の記述言語を採用してもよい。また、業務データ（図９参照）は、ＲＤＢ（Relational Database）に格納されており、ＲＤＢに対するアクセスには、ＳＱＬを用いると仮定する。
【００５５】
図８の処理では、まず、ステップＳ６０において、ソース分割部３８が、共通イベントおよびイベント群それぞれに対応する呼び出し単位（メソッド）を記録する記憶域Ｍ（図２３（ａ）参照）を作成する。具体的には、後の処理で抽出する共通イベントＧ０に対応するメソッドを格納する記憶域Ｍ０と、ｎ個のイベント群Ｇｉ（ｉ＝１、２、…、ｎ）に対応するメソッドを記録する記憶域Ｍｉを作成する。
【００５６】
次いで、ステップＳ６２では、ソース分割部３８が、process mining実行時の定義ファイルから、イベントに対応するテーブル名とカラム名を取得する。ここで、process miningの定義ファイルは、実装によって異なるが、例えば、図１８（ａ）に示すような、業務データが格納されているテーブル名、そのテーブルにおける業務案件の識別子が格納されるカラム名、イベントのタイプを表すカラム名、イベントが発生した時刻が格納されるカラム名、のようなイベントを生成するための定義情報テーブルを含む。また、process miningの定義ファイルは、図１８（ｂ）に示すような、process miningが生成したイベント種別識別子と表示イベント名との対応情報テーブルを含む。ここで、図１８（ｂ）の表示イベント名は、表示時に利用者に分かりやすく表示するためのものである。したがって、ソース分割部３８は、上述した定義情報を入力として、業務フロー種別に含まれるイベント名（ここでは、表示イベント名）に対応するテーブル名、タイプが格納されるカラム名、時刻のカラム名を抽出する。
【００５７】
なお、本実施形態では、第２のデータとしてのソースのメソッド間の呼び出し関係が図１９のようになっているとする。ここで、楕円はメソッド１個を表し、楕円と楕円を結ぶ矢印は呼び出し関係（始点が呼出元メソッド、終点が呼び出し先メソッド）を表しているものとする。このような呼び出し関係は、例えば開発環境であるEclipse（http://www.eclipse.org/）に含まれる構文解析木AST(Abstract Syntax Tree)を用いて取得することができる。
【００５８】
図１９では、ソースは、クラスMainのメソッドmain（以下ではMain#mainと記述する）から実行を開始し、Main#initDbやMain#goを呼び出し、更にMain#goからはAmodel#goなどを呼び出す。実際のＳＱＬ文の組み立てはSqlAccess#execUtilで行われ、実行はPreparedStatement#executeで行われるが、その際に実行されるＳＱＬ文に設定されるイベント種別を識別する情報は呼出元のメソッドで設定される。
【００５９】
図８に戻り、次のステップＳ６４では、ソース分割部３８が、ソースから、イベントに対応するテーブル名とカラム名に対して、書き込みアクセス(INSERT又はUPDATE)を行うＳＱＬ文を生成するメソッド(イベント生成メソッド)を検索し、イベントと対応づける（対応表Ｔに記録する）。
【００６０】
ここで、例えば、ある業務フロー種別にイベント種別「Ａ１」が存在し、イベント名として表示イベント名を使用している場合、図１８（ｂ）に示すイベント種別識別子と表示イベント名の対応定義からイベント種別「Ａ１」のイベント種別識別子は「t1.A1.datetime」となる。また、process miningがイベント種別識別子を「テーブル名.タイプ名.時刻名」という規則で表現しているとすると、イベント「Ａ１」に対応するテーブル名は「ｔ１」で、タイプ名は「Ａ１」、時刻のカラム名はdatetimeであることが分かる。さらに、図１８（ａ）の定義情報から、テーブルｔ１においてタイプ名が格納されるカラム名がtypeであることが分かる。
【００６１】
一方、ソース分割部３８は、ソースに対して構文解析を行うことで、ＳＱＬ文を生成するメソッドを検出する。具体的には、図９に示すテーブルｔ１に書き込むＳＱＬはINSERT文か、UPDATE文のいずれかなので、ソース分割部３８は、構文解析で得られるノードのうち「INSERT」ないし「UPDATE」の文字列が含まれているものを検索する。そして、ソース分割部３８は、当該文字列でＳＱＬの文法に合致しており、かつテーブルｔ１を処理対象としカラムtypeに値「Ａ１」を設定し、カラムdatetimeに値を設定しているものを検索する。このときＳＱＬ文を構成する要素がメソッドの引数などで与えられる場合がある。例えば、図２０に示すメソッドSqlAccess#execUtilにはINSERT文が存在するが、その値は引数で与えられ、その値は図２１に示すA1#execA1で生成され与えられる。このような場合は、ＳＱＬ文を直接生成するメソッドSqlAccess#execUtilではなく、その値を渡すA1#execA1のほうをイベントＡ１に対応するメソッドとして用いる。このようにして対応づけた結果として対応表Ｔ(図２２)を得ることが可能となる。
【００６２】
図８に戻り、次のステップＳ６６では、ソース分割部３８が、共通イベント及び各イベント群が包含するイベント種別に対応するイベント生成メソッドを、第１のデータとしての対応表Ｔを参照して取得し、イベント群に対応する記憶域Ｍｉに追加する。この結果として得られる記憶域Ｍｉの状態が、図２３（ａ）に示されている。
【００６３】
次いで、ステップＳ６８では、ソース分割部３８が、共通イベントを先頭に、フロー種別に対応するイベント群で実行量の多い順に、対応するイベント生成メソッドを呼び出すメソッドを再帰的に探索する。そして、それらをイベント群に対応するメソッドとして追加する。ただし、登録済みのメソッドにたどり着いたら探索を中止するものとする。この結果として得られる記憶域Ｍｉが、図２３（ｂ）に示されている。
【００６４】
次いで、ステップＳ７０では、ソース分割部３８が、共通イベントを先頭に、フロー種別に対応するイベント群で実行量の多い順に、イベント種別に対応するメソッドとして記録したメソッドから呼び出すメソッドを検索する。そして、呼び出すメソッドを、イベントに対応するメソッドとして追加する。ただし、登録済みのメソッドにたどり着いたら探索を中止する。このようにして、得られる記憶域Ｍｉが、図２４に示されている。
【００６５】
次いで、ステップＳ７２では、ソース分割部３８が、イベント群それぞれに対応するメソッドの集合（図２４参照）を、フロー種別に対応するソース範囲として得る。
【００６６】
次いで、ステップＳ７４では、ソース分割部３８が、これまでの処理で登録されなかったメソッド群を、業務とは直接関係のないメソッドとして記録する。
【００６７】
以下、ステップＳ６８〜Ｓ７４の処理についてより詳細かつ具体的に説明する。
【００６８】
まず、ソース分割部３８が、記憶域に関し、対応するメソッドの呼出元メソッドを、構文解析（Eclipce）を用いて再帰的に求める場合（ステップＳ６８）について説明する。図１９に示すように、メソッドInit#execの呼出元メソッドはAmodel#go、Bmodel#go、Cmodel#goであり、さらにAmodel#goの呼出元はMain#goであり、さらにMain#goの呼出元がMain#mainである。同様にBmodel#goとCmodel#goの呼出元はMain#goである。またFinal#execの呼出元もAmodel#go、Bmodel#go、Cmodel#goである。したがって、ソース分割部３８は、ステップＳ６８において、これらのメソッドのうち、まだ記憶域Ｍｉに出現していないメソッドをＭ０に追加する。
【００６９】
また、記憶域Ｍ１の場合、記憶域Ｍ１に対応するメソッドに対して、メソッドA1#execA1の呼出元メソッドはAmodel#goであるが、これは既に記憶域Ｍ０に出現している。したがって、ソース分割部３８は、記憶域Ｍ１には追加せず、それ以上の再帰的な探索を中止する。その他も同様に処理すると、記憶域Ｍ１に追加するメソッドがないことが分かる。同様にして、記憶域Ｍ２以降も処理すると、図２３（ｂ）に示すメソッド呼出元のメソッド情報を追加した状態の記憶域Ｍ２以降の結果が得られる。
【００７０】
次に、ソース分割部３８が、記憶域Ｍ０から順に、対応するメソッドが呼び出すメソッドを、構文解析を用いて再帰的に求める場合（ステップＳ７０）について説明する。図１９に示すように、メソッドInit#execの呼び出し先はSqlAccess#execUtilであり、更にSqlAccess#execUtilはPreparedStatement#executeを呼び出す。Final#execも同様である。また、Main#goの呼び出し先はUtil#getNewId、Amodel#go、Bmodel#go、Cmodel#goである。さらにMain#mainの呼び出し先はMain#goとMain#initDbである。したがって、ステップＳ７０では、ソース分割部３８が、記憶域Ｍにまだ出現していないSqlAccess#execUtil、SqlAccess#execUtil、Util#getNewId、Main#initDbを記憶域Ｍ０に追加する。同様に記憶域Ｍ１以降も処理すると、結果として図２４に示す記憶域の内容を得る。
【００７１】
次に、ステップＳ７２、Ｓ７４について説明する。ステップＳ７２では、ソース分割部３８が、イベント群それぞれに対応するメソッドの集合を、フロー種別に対応するソース範囲として得、ステップＳ７４では、未登録のメソッド群を、業務とは直接関係のないメソッドとして記録する。この結果、図２４の記憶域Ｍは、図２５のように図示することができる。なお、図２５では説明のため呼出元方向探索（（Ｇ０）などと表記）と呼び出し先探索（[Ｇ０]などと表記）を区別して表示しているが、これらの差異は記憶域Ｍの情報からは得られない。なお、図２５では、楕円で示すメソッドの左上に、メソッドが属するイベント群を示している。また、ハッチングを付して示す楕円は、イベント種別に対応するメソッドを表している。
【００７２】
以上の処理により、ソース分割部３８では、共通イベントに含まれるイベントに対応するメソッドに、これと呼び出し関係にあるメソッドを関連付け、ソース分割部３８は、イベントの実行量が多い順に、イベント群に含まれるイベントに対応するメソッドに、これと呼び出し関係にあり、かつ、まだ他のイベントに関連付けていないメソッドを関連付けるので、共通イベントおよび業務の特徴を表すイベント群それぞれに対応するメソッドを取得できる（図２６：解析結果）。具体的には、図２６に示すように、例えばイベントＡ２を含む業務と関係するソースは、太い実線で囲んだ範囲のメソッド群（Ｇ１）であり、共通的に用いられているメソッド群（Ｇ０)は破線で囲んだ範囲のメソッド群である。このため、当該業務を変更する場合には、これらの業務に直接関与するメソッドと共通メソッドに注目すればよいことになる。図２６の解析結果は、解析依頼先の企業などに納入したりすることで、業務システム１０Ａ、１０Ｂのメンテナンスの際に利用されることになる。
【００７３】
以上、詳細に説明したように、本実施形態によると、業務データ蓄積部３２が、業務システム１０Ａ，１０Ｂが実行した複数種類の業務の実行履歴データを業務ＤＢ１２Ａ，１２Ｂから取得し（ステップＳ１０）、process mining実行部３４が、業務の実行履歴データから、業務の種類ごとに当該業務に含まれるイベントの実行履歴を抽出し（ステップＳ１２）、イベント分類部３６が、抽出されたイベントの実行履歴のうち、所定の頻度で実行されたイベントを共通イベントとして抽出する（ステップＳ２６）。また、イベント分類部３６は、複数種類の業務の各々について、該業務に含まれるイベントのうち、該イベントを含む業務よりも実行量の多い業務において実行されていないイベントをまとめて、イベント群とする（ステップＳ３０）。そして、ソース分割部３８は、第１のデータとしての対応表Ｔ（図２２）に基づいて、共通イベント及びイベント群に含まれるイベントをメソッドで置き換え、第２のデータとしてのソースのメソッド間の呼び出し関係（図１９）に基づいて、置き換えたメソッドと呼び出し関係にあるメソッドを、共通イベント又はイベント群に関連付ける（図２４）。このように、本実施形態では、業務システムのメソッドを、各業務で共通に用いられる部分と、各業務特有の部分とに分類することができる。このような分類結果を業務システムの保守を行う際に利用することで、業務特有のメソッドについては、他の業務とは独立に変更・修正することが可能となる。また、共通部分については、他の業務への影響を考慮して変更する必要があることが明確となる。更に、業務単位で他システムへの移行を行う場合等においては、移行元システムで不要になったメソッド部分を保守対象から正しく除くのに有用である。また、移行元システムで他業務と共通に使われていたメソッドは保守対象のままにし、業務固有のメソッド部分のみ保守対象から外すことができるため、適切な保守コストを維持することが可能となる。
【００７４】
また、本実施形態では、ソース分割部３８は、共通イベントに含まれるイベントに対応するメソッドに、これと呼び出し関係にあるメソッドを関連付ける。そして、ソース分割部３８は、イベントの実行量が多い順に、イベント群に含まれるイベントに対応するメソッドに、これと呼び出し関係にあり、かつ、まだ他のイベントに関連付けていないメソッドを関連付ける。このように、呼び出し関係にある部分が変更されることによる影響の大きいイベント群（又は共通イベント）に対する関連付けを行うことで、適切な分類が可能となる。
【００７５】
また、本実施形態では、イベント分類部３６は、抽出されたイベント群のうちのあるイベント群を含む業務（第１の業務）に、そのイベントよりも実行量の多い業務（第２の業務）に含まれるイベント群の全てのイベントが含まれる場合に、両イベント群をまとめる。これにより、本来まとめるべきイベント群をまとめることができるので、適切なメソッドの分類が可能であり、かつ、業務システムの保守をより適切に行うことが可能となる。
【００７６】
この場合、イベント分類部３６は、ある業務（第１の業務）に、当該業務よりも実行量の多い業務（第２の業務）に含まれるイベント群が複数含まれる場合には、当該イベント群を含む複数の業務の各々毎に、当該イベント群を含む複数の業務の実行量の合計に対する、当該業務の実行量の割合をそれぞれ算出し、その割合が所定の割合（例えば、０．８）よりも高いイベント群と、第１の業務のイベント群とをまとめる。したがって、適切にイベント群をまとめることが可能となる。
【００７７】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、処理装置が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。
【００７８】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ（Digital Versatile Disc）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）などの可搬型記録媒体の形態で販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【００７９】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【００８０】
上述した実施形態は本発明の好適な実施の例である。但し、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形実施可能である。
【００８１】
なお、以上の説明に関して更に以下の付記を開示する。
（付記１）  業務システムが実行した複数種類の業務の実行履歴データを取得する取得部と、前記業務の実行履歴データから、前記業務の種類ごとに当該業務に含まれる実行単位の実行履歴を抽出する履歴抽出部と、前記履歴抽出部により抽出された実行単位の実行履歴において、所定の頻度で実行された実行単位を共通実行単位として抽出する共通実行単位抽出部と、前記複数種類の業務の各々について、該業務に含まれる実行単位のうち、該実行単位を含む第１の業務よりも実行量の多い第２の業務において実行されていない実行単位をまとめて、固有実行単位群を抽出する固有実行単位群抽出部と、前記実行単位と前記業務で実行するプログラムソースの呼び出し単位との関係を示す第１のデータに基づいて、前記共通実行単位及び前記固有実行単位群に含まれる実行単位を当該実行単位に対応する呼び出し単位で置き換え、呼び出し単位間の呼び出し関係を示す第２のデータに基づいて、前記置き換えた呼び出し単位と呼び出し関係にある呼び出し単位を、前記共通実行単位又は前記固有実行単位群のいずれかに対して関連付ける関連付け部と、を備える解析装置。
（付記２）  前記関連付け部は、前記共通実行単位に含まれる実行単位に対応する呼び出し単位に該呼び出し単位と呼び出し関係にある呼び出し単位を関連付け、前記業務の実行量が多い順に、前記固有実行単位群に含まれる実行単位に対応する呼び出し単位に、該呼び出し単位と呼び出し関係にあり、且つ、まだ他の実行単位に関連付けていない呼び出し単位を関連付けることを特徴とする付記１に記載の解析装置。
（付記３）  前記固有実行単位群抽出部は、前記抽出された固有実行単位群のうちの第１の固有実行単位群を含む第１の業務に、当該第１の業務よりも実行量の多い第２の業務に含まれる第２の固有実行単位群の全ての実行単位が含まれる場合に、前記第１の固有実行単位群と前記第２の固有実行単位群とをまとめることを特徴とする付記１又は２に記載の解析装置。
（付記４）  前記固有実行単位群抽出部は、前記第１の業務に、当該第１の業務よりも実行量の多い第２の業務に含まれる第２の固有実行単位群が複数含まれる場合には、当該第２の固有実行単位群を含む複数の業務の各々毎に、当該第２の固有実行単位を含む複数の業務の実行量の合計に対する、当該業務の実行量の割合をそれぞれ算出し、前記割合が所定の割合よりも高い前記第２の固有実行単位群と、前記第１の固有実行単位群とをまとめることを特徴とする付記３に記載の解析装置。
（付記５）  業務システムが実行した複数種類の業務の実行履歴データを取得し、前記業務の実行履歴データから、前記業務の種類ごとに当該業務に含まれる実行単位の実行履歴を抽出し、前記抽出された実行単位の実行履歴において所定の頻度で実行された実行単位を共通実行単位として抽出し、前記複数種類の業務の各々について、該業務に含まれる実行単位のうち、該実行単位を含む第１の業務よりも実行量の多い第２の業務において実行されていない実行単位をまとめて、固有実行単位群を抽出し、前記実行単位と前記業務で実行するプログラムソースの呼び出し単位との関係を示す第１のデータに基づいて、前記共通実行単位及び前記固有実行単位群に含まれる実行単位を当該実行単位に対応する呼び出し単位で置き換え、呼び出し単位間の呼び出し関係を示す第２のデータに基づいて、前記置き換えた呼び出し単位と呼び出し関係にある呼び出し単位を、前記共通実行単位又は前記固有実行単位群のいずれかに対して関連付ける処理を、コンピュータに実行させることを特徴とする解析プログラム。
（付記６）  前記関連付ける処理では、前記共通実行単位に含まれる実行単位に対応する呼び出し単位に該呼び出し単位と呼び出し関係にある呼び出し単位を関連付け、前記業務の実行量が多い順に、前記固有実行単位群に含まれる実行単位に対応する呼び出し単位に、該呼び出し単位と呼び出し関係にあり、且つ、まだ他の実行単位に関連付けていない呼び出し単位を関連付ける処理を、コンピュータに実行させることを特徴とする付記５に記載の解析プログラム。
（付記７）  前記固有実行単位群を抽出する処理では、前記抽出された固有実行単位群のうちの第１の固有実行単位群を含む第１の業務に、当該第１の業務よりも実行量の多い第２の業務に含まれる第２の固有実行単位群の全ての実行単位が含まれる場合に、前記第１の固有実行単位群と前記第２の固有実行単位群とをまとめる処理を、コンピュータに実行させることを特徴とする付記５又は６に記載の解析プログラム。
（付記８）  前記固有実行単位群を抽出する処理では、前記第１の業務に、当該第１の業務よりも実行量の多い第２の業務に含まれる第２の固有実行単位群が複数含まれる場合には、当該第２の固有実行単位群を含む複数の業務の各々毎に、当該第２の固有実行単位を含む複数の業務の実行量の合計に対する、当該業務の実行量の割合をそれぞれ算出し、前記割合が所定の割合よりも高い前記第２の固有実行単位群と、前記第１の固有実行単位群とをまとめる処理を、コンピュータに実行させることを特徴とする付記７に記載の解析プログラム。
（付記９）コンピュータが、業務システムが実行した複数種類の業務の実行履歴データを取得する取得工程と、前記業務の実行履歴データから、前記業務の種類ごとに当該業務に含まれる実行単位の実行履歴を抽出する履歴抽出工程と、前記履歴抽出部により抽出された実行単位の実行履歴において、所定の頻度で実行された実行単位を共通実行単位として抽出する共通実行単位抽出工程と、前記複数種類の業務の各々について、該業務に含まれる実行単位のうち、該実行単位を含む第１の業務よりも実行量の多い第２の業務において実行されていない実行単位をまとめて、固有実行単位群を抽出する固有実行単位群抽出工程と、前記実行単位と前記業務で実行するプログラムソースの呼び出し単位との関係を示す第１のデータに基づいて、前記共通実行単位及び前記固有実行単位群に含まれる実行単位を当該実行単位に対応する呼び出し単位で置き換え、呼び出し単位間の呼び出し関係を示す第２のデータに基づいて、前記置き換えた呼び出し単位と呼び出し関係にある呼び出し単位を、前記共通実行単位又は前記固有実行単位群のいずれかに対して関連付ける関連付け工程と、を実行することを特徴とする解析方法。
（付記１０）  前記関連付け工程では、前記共通実行単位に含まれる実行単位に対応する呼び出し単位に該呼び出し単位と呼び出し関係にある呼び出し単位を関連付け、前記業務の実行量が多い順に、前記固有実行単位群に含まれる実行単位に対応する呼び出し単位に、該呼び出し単位と呼び出し関係にあり、且つ、まだ他の実行単位に関連付けていない呼び出し単位を関連付けることを特徴とする付記９に記載の解析方法。
（付記１１）  前記固有実行単位群抽出工程では、前記抽出された固有実行単位群のうちの第１の固有実行単位群を含む第１の業務に、当該第１の業務よりも実行量の多い第２の業務に含まれる第２の固有実行単位群の全ての実行単位が含まれる場合に、前記第１の固有実行単位群と前記第２の固有実行単位群とをまとめることを特徴とする付記９又は１０に記載の解析方法。
（付記１２）  前記固有実行単位群抽出工程では、前記第１の業務に、当該第１の業務よりも実行量の多い第２の業務に含まれる第２の固有実行単位群が複数含まれる場合には、当該第２の固有実行単位群を含む複数の業務の各々毎に、当該第２の固有実行単位を含む複数の業務の実行量の合計に対する、当該業務の実行量の割合をそれぞれ算出し、前記割合が所定の割合よりも高い前記第２の固有実行単位群と、前記第１の固有実行単位群とをまとめることを特徴とする付記１１に記載の解析方法。
【符号の説明】
【００８２】
１０Ａ，１０Ｂ  業務システム
２０  解析装置
３２  業務データ蓄積部（取得部）
３４  process mining実行部（履歴抽出部）
３６  イベント分類部（共通実行単位抽出部、固有実行単位群抽出部）
３８  ソース分割部（関連付け部）
９０  ＣＰＵ（コンピュータ）
【図１】
0005605233.tif 000002
【図２】
0005605233.tif 000003
【図３】
0005605233.tif 000004
【図４】
0005605233.tif 000005
【図５】
0005605233.tif 000006
【図６】
0005605233.tif 000007
【図７】
0005605233.tif 000008
【図８】
0005605233.tif 000009
【図９】
0005605233.tif 000010
【図１０】
0005605233.tif 000011
【図１１】
0005605233.tif 000012
【図１２】
0005605233.tif 000013
【図１３】
0005605233.tif 000014
【図１４】
0005605233.tif 000015
【図１５】
0005605233.tif 000016
【図１６】
0005605233.tif 000017
【図１７】
0005605233.tif 000018
【図１８】
0005605233.tif 000019
【図１９】
0005605233.tif 000020
【図２０】
0005605233.tif 000021
【図２１】
0005605233.tif 000022
【図２２】
0005605233.tif 000023
【図２３】
0005605233.tif 000024
【図２４】
0005605233.tif 000025
【図２５】
0005605233.tif 000026
【図２６】
0005605233.tif 000027