[go: up one dir, main page]

JP5203806B2 - シーケンス図作成装置、シーケンス図作成方法及びコンピュータプログラム - Google Patents

シーケンス図作成装置、シーケンス図作成方法及びコンピュータプログラム Download PDF

Info

Publication number
JP5203806B2
JP5203806B2 JP2008149498A JP2008149498A JP5203806B2 JP 5203806 B2 JP5203806 B2 JP 5203806B2 JP 2008149498 A JP2008149498 A JP 2008149498A JP 2008149498 A JP2008149498 A JP 2008149498A JP 5203806 B2 JP5203806 B2 JP 5203806B2
Authority
JP
Japan
Prior art keywords
information
sequence diagram
function
log
source code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008149498A
Other languages
English (en)
Other versions
JP2009295021A (ja
Inventor
宏明 中村
康一 小野
石川  浩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2008149498A priority Critical patent/JP5203806B2/ja
Priority to US12/478,815 priority patent/US8423985B2/en
Publication of JP2009295021A publication Critical patent/JP2009295021A/ja
Application granted granted Critical
Publication of JP5203806B2 publication Critical patent/JP5203806B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/3604Analysis of software for verifying properties of programs
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/3604Analysis of software for verifying properties of programs
    • G06F11/3612Analysis of software for verifying properties of programs by runtime analysis
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Description

本発明は、大規模のソースコードであっても、特定のユースケース、関心に即してモデル化対象を絞り込んだシーケンス図を作成することができるシーケンス図作成装置、シーケンス図作成方法及びコンピュータプログラムに関する。
近年、システム開発は規模の増大、多機能化等に伴い、その構造は複雑化の一途をたどっている。このような大規模システムの生産性及び品質の向上を図るために、様々なシステム開発手法が提案されている。例えばモデル駆動型開発(Model−Driven Development)では、分析段階、設計段階等の成果物をモデルとして記述することで、プログラムの生産性向上を図ると共に、バグ等の発生確率を低減して品質の向上を図っている。
モデル駆動型開発では、適切なモデルさえ記述できれば生産性、品質の向上を図ることができるが、実際にはモデル化すること自体が困難なケースが多い。特にシステムの振る舞いをモデル化することは困難であり、効率的なシステム開発の阻害要因の一つとなっている。
斯かる問題点を解決するべく、例えば特許文献1では、ソースコードに含まれる関数の呼び出し及び戻りをトレースし、関数に関係する機能ブロックの情報を含むトレース結果に基づいて、機能ブロック間の呼び出し及び戻りを表現するシーケンス図を作成するシーケンス図作成装置が開示されている。ソースコードに基づいて機能間の処理の流れを把握することができ、モデル化を正確に行うことが可能となる。
また、特許文献2では、プログラム実行時に生成されたログファイルに含まれるログ情報に基づいて、プログラムに含まれる各オブジェクトを時系列に対応付けて構造化した構造化情報を生成し、構造化情報に基づくシーケンス図を生成して表示するシーケンス図表示装置が開示されている。ログ情報に基づいてシーケンス図を生成することから、実行プラグラムに相当するシーケンス図を生成することができる。
特開2004−094496号公報 特開2005−092609号公報
しかし、特許文献1に開示されているシーケンス図作成装置は、ソースコードに基づいてシーケンス図を作成していることから、大規模システムである場合にはソースコードの解析結果が複雑であり、しかもユースケース、関心の対象等に即してモデル化対象を絞り込むことができない。また、差分開発によって使用されないコードが含まれていた場合であっても、それらが混在したままモデル化されるため、作成されたシーケンス図が複雑であり、システムの解析を行うことが困難であるという問題点があった。
また、特許文献2に開示されているシーケンス図表示装置では、繰り返し、分岐等の構造を抽出することができない。したがって、ログ情報が膨大である場合には、巨大で複雑なシーケンス図が生成され、システムの解析を行うことが困難であるという問題点があった。
本発明は斯かる事情に鑑みてなされたものであり、大規模なソースコードであっても、繰り返し、分岐等を検出しつつ必要な部分のみモデル化したシーケンス図を生成することができるシーケンス図作成装置、シーケンス図作成方法及びコンピュータプログラムを提供することを目的とする。
上記目的を達成するために第1発明に係るシーケンス図作成装置は、ソースコードを解析して、該ソースコードに含まれるモジュール間の処理を特定するシーケンス図を作成するシーケンス図作成装置において、ソースコードを取得するコード取得手段と、取得したソースコードを解析する解析手段と、解析結果に基づいて、実行ログを取得するためのログ取得用コードを生成するログ取得用コード生成手段と、生成したログ取得用コードを含むプログラムを実行して、実行時のログ情報である実行ログ情報を取得する実行ログ情報取得手段と、取得した実行ログ情報に基づいて、状態及び該状態間の遷移に関するオートマトン情報を抽出するオートマトン情報抽出手段と、抽出されたオートマトン情報を、シーケンス図を構成するシーケンス図構成要素情報へ変換する変換手段と、変換されたシーケンス図構成要素情報に基づいてシーケンス図を生成する生成手段とを備え、前記解析手段は、前記ソースコードに基づいて、コール関数及び被コール関数の対応関係に関する対応関係情報を取得するようにしてあり、前記ログ取得用コード生成手段は、コール関数及び被コール関数をモジュール単位で分類する分類情報を取得する分類情報取得手段と、取得した前記対応関係情報から、コール関数と被コール関数とが異なり、コール関数及び被コール関数が異なるモジュールに分類されている対応関係情報のみを抽出する抽出手段とを備え、抽出された対応関係情報に含まれるコール関数にて被コール関数が呼び出された場合に実行ログを出力する前記ログ取得用コードを生成するようにしてあることを特徴とする。
また、第発明に係るシーケンス図作成装置は、ソースコードを解析して、該ソースコードに含まれるモジュール間の処理を特定するシーケンス図を作成するシーケンス図作成装置において、ソースコードを取得するコード取得手段と、取得したソースコードを解析する解析手段と、解析結果に基づいて、実行ログを取得するためのログ取得用コードを生成するログ取得用コード生成手段と、生成したログ取得用コードを含むプログラムを実行して、実行時のログ情報である実行ログ情報を取得する実行ログ情報取得手段と、取得した実行ログ情報に基づいて、状態及び該状態間の遷移に関するオートマトン情報を抽出するオートマトン情報抽出手段と、抽出されたオートマトン情報を、シーケンス図を構成するシーケンス図構成要素情報へ変換する変換手段と、変換されたシーケンス図構成要素情報に基づいてシーケンス図を生成する生成手段とを備え、前記解析手段は、前記ソースコードに基づいて、コール関数及び被コール関数の対応関係に関する対応関係情報を取得するようにしてあり、前記ログ取得用コード生成手段は、コール関数及び被コール関数をモジュール単位で分類する分類情報を取得する分類情報取得手段と、取得した前記対応関係情報から、コール関数と被コール関数とが異なり、コール関数及び被コール関数が異なるモジュールに分類されている対応関係情報のみを抽出する抽出手段とを備え、抽出された対応関係情報に含まれるコール関数にて被コール関数が呼び出された場合及びコール関数にリターンした場合に実行ログを出力する前記ログ取得用コードを生成するようにしてあることを特徴とする。
上記目的を達成するために第発明に係るシーケンス図作成装置は、ソースコードを解析して、該ソースコードに含まれるモジュール間の処理を特定するシーケンス図を作成するシーケンス図作成装置において、ソースコードを取得するコード取得手段と、取得したソースコードを解析して、コール関数及び被コール関数の対応関係に関する対応関係情報を取得する解析手段と、コール関数及び被コール関数をモジュール単位で分類する分類情報を取得する分類情報取得手段と、取得した前記対応関係情報から、コール関数と被コール関数とが異なり、コール関数及び被コール関数が異なるモジュールに分類されている対応関係情報のみを抽出する抽出手段と、抽出された対応関係情報に含まれるコール関数にて被コール関数が呼び出された場合に実行ログを出力するログ取得用コードを生成するログ取得用コード生成手段と、生成したログ取得用コードを含むプログラムを実行して、実行時のログ情報である実行ログ情報を取得する実行ログ情報取得手段と、取得した実行ログ情報に基づいて、状態及び該状態間の遷移に関するオートマトン情報を抽出するオートマトン情報抽出手段と、抽出されたオートマトン情報を、シーケンス図を構成するシーケンス図構成要素情報へ変換する変換手段と、変換されたシーケンス図構成要素情報に基づいてシーケンス図を生成する生成手段とを備えることを特徴とする。
上記目的を達成するために第発明に係るシーケンス図作成方法は、ソースコードを解析して、該ソースコードに含まれるモジュール間の処理を特定するシーケンス図を作成するシーケンス図作成装置で実行することが可能なシーケンス図作成方法において、ソースコードを取得し、取得したソースコードに基づいて、コール関数及び被コール関数の対応関係に関する対応関係情報を取得し、コール関数及び被コール関数をモジュール単位で分類する分類情報を取得し、取得した前記対応関係情報から、コール関数と被コール関数とが異なり、コール関数及び被コール関数が異なるモジュールに分類されている対応関係情報のみを抽出し、抽出された対応関係情報に含まれるコール関数にて被コール関数が呼び出された場合に実行ログを出力するログ取得用コードを生成し、生成したログ取得用コードを含むプログラムを実行して、実行時のログ情報である実行ログ情報を取得し、取得した実行ログ情報に基づいて、状態及び該状態間の遷移に関するオートマトン情報を抽出し、抽出されたオートマトン情報を、シーケンス図を構成するシーケンス図構成要素情報へ変換し、変換されたシーケンス図構成要素情報に基づいてシーケンス図を生成することを特徴とする。
また、第発明に係るシーケンス図作成方法は、ソースコードを解析して、該ソースコードに含まれるモジュール間の処理を特定するシーケンス図を作成するシーケンス図作成装置で実行することが可能なシーケンス図作成方法において、ソースコードを取得し、取得したソースコードに基づいて、コール関数及び被コール関数の対応関係に関する対応関係情報を取得し、コール関数及び被コール関数をモジュール単位で分類する分類情報を取得し、取得した前記対応関係情報から、コール関数と被コール関数とが異なり、コール関数及び被コール関数が異なるモジュールに分類されている対応関係情報のみを抽出し、抽出された対応関係情報に含まれるコール関数にて被コール関数が呼び出された場合及びコール関数にリターンした場合に実行ログを出力するログ取得用コードを生成し、生成したログ取得用コードを含むプログラムを実行して、実行時のログ情報である実行ログ情報を取得し、取得した実行ログ情報に基づいて、状態及び該状態間の遷移に関するオートマトン情報を抽出し、抽出されたオートマトン情報を、シーケンス図を構成するシーケンス図構成要素情報へ変換し、変換されたシーケンス図構成要素情報に基づいてシーケンス図を生成することを特徴とする。
上記目的を達成するために第発明に係るコンピュータプログラムは、ソースコードを解析して、該ソースコードに含まれるモジュール間の処理を特定するシーケンス図を作成するシーケンス図作成装置で実行することが可能なコンピュータプログラムにおいて、前記シーケンス図作成装置を、ソースコードを取得するコード取得手段、取得したソースコードを解析する解析手段、解析結果に基づいて、実行ログを取得するためのログ取得用コードを生成するログ取得用コード生成手段、生成したログ取得用コードを含むプログラムを実行して、実行時のログ情報である実行ログ情報を取得する実行ログ情報取得手段、取得した実行ログ情報に基づいて、状態及び該状態間の遷移に関するオートマトン情報を抽出するオートマトン情報抽出手段、抽出されたオートマトン情報を、シーケンス図を構成するシーケンス図構成要素情報へ変換する変換手段、及び変換されたシーケンス図構成要素情報に基づいてシーケンス図を生成する生成手段として機能させ、前記解析手段を、前記ソースコードに基づいて、コール関数及び被コール関数の対応関係に関する対応関係情報を取得する手段として機能させ、前記ログ取得用コード生成手段を、コール関数及び被コール関数をモジュール単位で分類する分類情報を取得する分類情報取得手段、取得した前記対応関係情報から、コール関数と被コール関数とが異なり、コール関数及び被コール関数が異なるモジュールに分類されている対応関係情報のみを抽出する抽出手段、及び抽出された対応関係情報に含まれるコール関数にて被コール関数が呼び出された場合に実行ログを出力する前記ログ取得用コードを生成する手段として機能させることを特徴とする。
また、第発明に係るコンピュータプログラムは、ソースコードを解析して、該ソースコードに含まれるモジュール間の処理を特定するシーケンス図を作成するシーケンス図作成装置で実行することが可能なコンピュータプログラムにおいて、前記シーケンス図作成装置を、ソースコードを取得するコード取得手段、取得したソースコードを解析する解析手段、解析結果に基づいて、実行ログを取得するためのログ取得用コードを生成するログ取得用コード生成手段、生成したログ取得用コードを含むプログラムを実行して、実行時のログ情報である実行ログ情報を取得する実行ログ情報取得手段、取得した実行ログ情報に基づいて、状態及び該状態間の遷移に関するオートマトン情報を抽出するオートマトン情報抽出手段、抽出されたオートマトン情報を、シーケンス図を構成するシーケンス図構成要素情報へ変換する変換手段、及び変換されたシーケンス図構成要素情報に基づいてシーケンス図を生成する生成手段として機能させ、前記解析手段を、前記ソースコードに基づいて、コール関数及び被コール関数の対応関係に関する対応関係情報を取得する手段として機能させ、前記ログ取得用コード生成手段を、コール関数及び被コール関数をモジュール単位で分類する分類情報を取得する分類情報取得手段、取得した前記対応関係情報から、コール関数と被コール関数とが異なり、コール関数及び被コール関数が異なるモジュールに分類されている対応関係情報のみを抽出する抽出手段、及び抽出された対応関係情報に含まれるコール関数にて被コール関数が呼び出された場合及びコール関数にリターンした場合に実行ログを出力する前記ログ取得用コードを生成する手段として機能させることを特徴とする。
第1発明、第発明及び第発明では、ソースコードを解析して、該ソースコードに含まれるモジュール間の処理を特定するシーケンス図を作成する。ソースコードを取得し、取得したソースコードを解析する。解析結果に基づいて、実行ログを取得するためのログ取得用コードを生成し、生成したログ取得用コードを含むプログラムを実行して、実行時のログ情報である実行ログ情報を取得する。取得した実行ログ情報に基づいて、状態及び該状態間の遷移に関するオートマトン情報を抽出し、抽出されたオートマトン情報を、シーケンス図を構成するシーケンス図構成要素情報へ変換し、変換されたシーケンス図構成要素情報に基づいてシーケンス図を生成する。ソースコードに基づいて解析することから、モデル化を意識する必要が無く、実行ログ情報に基づいてシーケンス図として表示する必要がある部分に関する実行ログを取得することで、必要最小限の構造を有するシーケンス図を容易に作成することができる。したがって、ソースコードが大規模で複雑な構造を有する場合であっても、構造が簡素なシーケンス図を作成することができ、シーケンス図に基づくシステム解析により、ボトルネックの発生箇所の特定等、システムの問題点を明確にすることが可能となる。
また、ソースコードに基づいて、コール関数及び被コール関数の対応関係に関する対応関係情報を取得し、コール関数及び被コール関数をモジュール単位で分類する分類情報を取得する。取得した対応関係情報から、コール関数と被コール関数とが異なり、コール関数及び被コール関数が異なるモジュールに分類されている対応関係情報のみを抽出し、抽出された対応関係情報に含まれるコール関数にて被コール関数が呼び出された場合に実行ログを出力するログ取得用コードを生成する。モジュール単位でコール関数及び被コール関数の対応関係を特定することができ、モジュール間のプロセス遷移ログを確実に取得することができる。したがって、モデル化を意識することなく、シーケンス図として表示する必要がある部分に関する実行ログを取得することができ、必要最小限の構造を有するシーケンス図を容易に作成することが可能となる。
2発明、第5発明及び第7発明では、ソースコードに基づいて、コール関数及び被コール関数の対応関係に関する対応関係情報を取得し、コール関数及び被コール関数をモジュール単位で分類する分類情報を取得する。取得した対応関係情報から、コール関数と被コール関数とが異なり、コール関数及び被コール関数が異なるモジュールに分類されている対応関係情報のみを抽出し、抽出された対応関係情報に含まれるコール関数にて被コール関数が呼び出された場合及びコール関数にリターンした場合に実行ログを出力するログ取得用コードを生成する。モジュール単位でコール関数及び被コール関数の対応関係を特定するとともに、コール関数のリターン実行タイミングについても特定することができ、モジュール間のプロセス遷移ログ及び所定の関数が実行されているタイミングを確実に取得することができる。したがって、モデル化を意識することなく、シーケンス図として表示する必要がある部分に関する実行ログをより精緻に取得することができ、モジュールの実行オカレンスを含むシーケンス図を容易に作成することが可能となる。
発明では、ソースコードを解析して、該ソースコードに含まれるモジュール間の処理を特定するシーケンス図を作成する。ソースコードを取得し、取得したソースコードを解析して、コール関数及び被コール関数の対応関係に関する対応関係情報を取得する。コール関数及び被コール関数をモジュール単位で分類する分類情報を取得し、取得した対応関係情報から、コール関数と被コール関数とが異なり、コール関数及び被コール関数が異なるモジュールに分類されている対応関係情報のみを抽出する。抽出された対応関係情報に含まれるコール関数にて被コール関数が呼び出された場合に実行ログを出力するログ取得用コードを生成し、生成したログ取得用コードを含むプログラムを実行して、実行時のログ情報である実行ログ情報を取得する。取得した実行ログ情報に基づいて、状態及び該状態間の遷移に関するオートマトン情報を抽出し、抽出されたオートマトン情報を、シーケンス図を構成するシーケンス図構成要素情報へ変換して、変換されたシーケンス図構成要素情報に基づいてシーケンス図を生成する。ソースコードに基づいて解析することから、モデル化を意識する必要が無く、実行ログ情報に基づいてシーケンス図として表示する必要がある部分に関する実行ログを取得することで、必要最小限の構造を有するシーケンス図を容易に作成することができる。したがって、ソースコードが大規模で複雑な構造を有する場合であっても、構造が簡素なシーケンス図を作成することができ、シーケンス図に基づくシステム解析により、ボトルネックの発生箇所の特定等、システムの問題点を明確にすることが可能となる。
なお、後述する実施の形態では、コード取得手段は、CPU11のステップS401及びS1201の処理が、解析手段は、CPU11のステップS404乃至ステップS409、及びステップS1204乃至ステップS1209の処理が、ログ取得用コード生成手段は、CPU11のステップS410及びステップS1210の処理が、実行ログ情報取得手段は、CPU11のステップS411及びステップS1211の処理が、オートマトン情報抽出手段は、CPU11のステップS412及びステップS1212の処理が、変換手段は、CPU11のステップS413及びステップS1213の処理が、生成手段は、CPU11のステップS414及びステップS1214の処理が、それぞれ該当する。また、分類情報取得手段は、CPU11のステップS403及びステップS1203の処理が、抽出手段は、CPU11のステップS407及びステップS1207の処理が、それぞれ該当する。
本発明によれば、ソースコードに基づいて解析することから、モデル化を意識する必要が無く、実行ログ情報に基づいてシーケンス図として表示する必要がある部分に関する実行ログを取得することで、必要最小限の構造を有するシーケンス図を容易に作成することができる。したがって、ソースコードが大規模で複雑な構造を有する場合であっても、構造が簡素なシーケンス図を作成することができ、シーケンス図に基づくシステム解析により、ボトルネックの発生箇所の特定等、システムの問題点を明確にすることが可能となる。
以下、本発明の実施の形態に係るシーケンス図作成装置について、図面に基づいて具体的に説明する。以下の実施の形態は、特許請求の範囲に記載された発明を限定するものではなく、実施の形態の中で説明されている特徴的事項の組み合わせの全てが解決手段の必須事項であるとは限らないことは言うまでもない。
また、本発明は多くの異なる態様にて実施することが可能であり、実施の形態の記載内容に限定して解釈されるべきものではない。実施の形態を通じて同じ要素には同一の符号を付している。
以下の実施の形態では、コンピュータシステムにコンピュータプログラムを導入したシーケンス図作成装置又は方法について説明するが、当業者であれば明らかな通り、本発明はその一部をコンピュータで実行することが可能なコンピュータプログラムとして実施することができる。したがって、本発明は、シーケンス図作成装置というハードウェアとしての実施の形態、ソフトウェアとしての実施の形態、又はソフトウェアとハードウェアとの組み合わせの実施の形態をとることができる。コンピュータプログラムは、ハードディスク、DVD、CD、光記憶装置、磁気記憶装置等の任意のコンピュータで読み取ることが可能な記録媒体に記録することができる。
(実施の形態1)
図1は、本発明の実施の形態1に係るシーケンス図作成装置の構成例を示すブロック図である。本発明の実施の形態1に係るシーケンス図作成装置1は、少なくともCPU(中央演算装置)11、メモリ12、記憶装置13、I/Oインタフェース14、通信インタフェース15、ビデオインタフェース16、可搬型ディスクドライブ17及び上述したハードウェアを接続する内部バス18で構成されている。
CPU11は、内部バス18を介してシーケンス図作成装置1の上述したようなハードウェア各部と接続されており、上述したハードウェア各部の動作を制御するとともに、記憶装置13に記憶されているコンピュータプログラム100に従って、種々のソフトウェア的機能を実行する。メモリ12は、SRAM、SDRAM等の揮発性メモリで構成され、コンピュータプログラム100の実行時にロードモジュールが展開され、コンピュータプログラム100の実行時に発生する一時的なデータ等を記憶する。
記憶装置13は、内蔵される固定型記憶装置(ハードディスク)、ROM等で構成されている。記憶装置13に記憶されているコンピュータプログラム100は、プログラム及びデータ等の情報を記録したDVD、CD−ROM等の可搬型記録媒体90から、可搬型ディスクドライブ17によりダウンロードされ、実行時には記憶装置13からメモリ12へ展開して実行される。もちろん、通信インタフェース15を介してネットワーク2に接続されている外部のコンピュータからダウンロードされたコンピュータプログラムであっても良い。
また記憶装置13は、実行対象となるプログラムのソースコード情報を例えばテキストデータとして記憶している。さらに、ソースコードに含まれる関数(コール関数及び被コール関数)を所定のモジュール単位に分類した分類情報を記憶する分類情報記憶部131を備えている。
図2は、本発明の実施の形態1に係るシーケンス図作成装置1の分類情報記憶部131のデータ構成の例示図である。図2に示すように、分類情報記憶部131には、実行単位となりうるモジュール名と、モジュール名に対応付けた関数群が記憶してある。また、「モジュール外」とは、シーケンス図を作成する対象から除外するべき関数を示す項目である。
通信インタフェース15は内部バス18に接続されており、インターネット、LAN、WAN等の外部のネットワーク2に接続されることにより、外部のコンピュータ等とデータ送受信を行うことが可能となっている。
I/Oインタフェース14は、キーボード21、マウス22等のデータ入力媒体と接続され、データの入力を受け付ける。また、ビデオインタフェース16は、CRTモニタ、LCD等の表示装置23と接続され、所定の画像を表示する。
図3は、本発明の実施の形態1に係るシーケンス図作成装置1の機能ブロック図である。コード取得手段301は、記憶装置13に記憶されている、シーケンス図作成対象となる部分を含むコンピュータプログラムのソースコードを取得する。具体的には、記憶装置13から読み出してメモリ12へ展開する。解析手段302は、取得したソースコードを静的に解析する。具体的には、ソースコードに基づいて、包含されているコール関数(呼び出し側の関数)及び被コール関数(呼び出される側の関数)の対応関係に関する対応関係情報を取得する。
ログ取得用コード生成手段303は、解析手段302での解析結果に基づいて、実行ログを取得するためのログ取得用コードを生成する。具体的には、分類情報記憶部131に記憶してある分類情報を読み出し、対応関係情報のうち、コール関数と被コール関数とが異なり、コール関数及び被コール関数が異なるモジュールに分類されている対応関係情報のみを抽出し、抽出された対応関係情報に含まれるコール関数にて被コール関数が呼び出された場合に実行ログを出力するようコーディングされたログ取得用コードを生成する。
実行ログ情報取得手段304は、生成したログ取得用コードを含むプログラムをコンパイル等することにより実行モジュール化し、実行モジュールを実行した場合に取得することができるログ情報である実行ログ情報を取得する。
オートマトン情報抽出手段305は、取得した実行ログ情報に基づいて、状態及び該状態間の遷移に関するオートマトン情報を抽出し、変換手段306は、抽出されたオートマトン情報を、シーケンス図を構成するシーケンス図構成要素情報へ変換する。生成手段307は、変換されたシーケンス図構成要素情報に基づいてシーケンス図を生成する。
上述した構成のシーケンス図作成装置1の処理の流れについて説明する。図4は、本発明の実施の形態1に係るシーケンス図作成装置1のCPU11の処理手順を示すフローチャートである。
シーケンス図作成装置1のCPU11は、記憶装置13に記憶されている、シーケンス図作成対象となる部分を含むコンピュータプログラムのソースコードを取得する(ステップS401)。具体的には、記憶装置13からソースコードを示すテキストデータを読み出してメモリ12へ展開する。CPU11は、取得したソースコードを解析して、包含されているコール関数及び被コール関数の対応関係に関する対応関係情報を取得する(ステップS402)。
図5は、本発明の実施の形態1に係るシーケンス図作成装置1のソースコードに基づく対応関係情報取得の例示図である。図5(a)には変数、式、ブロック、繰り返し等の制御構造等を略したソースコードが示されている。例えば‘file0’では、コール関数f0に対して被コール関数f0、f7が記載されていることを示している。
図5(b)は、対応関係情報のデータ構成の例示図である。図5(b)の例では、関数の対応関係の組み合わせごとに識別情報であるコールサイトIDが付与され、コールサイトIDごとにコール関数、被コール関数及びコール関数のソースコード上での位置を示すコール場所が記憶される。なお、コール場所は、ソースコードにおけるファイル名と、該ファイルにおける何番目の文字かを示す文字番号とで、コール関数の位置を明示している。例えば(file0、205)は、‘file0’の205番目の文字からコール関数f0が記載されていることを示している。
CPU11は、記憶装置13の分類情報記憶部131に記憶してある分類情報を読み出し(ステップS403)、取得した対応関係情報の中から一の対応関係情報を選択する(ステップS404)。CPU11は、選択された対応関係情報につき、コール関数が被コール関数と等しいか否かを判断する(ステップS405)。
CPU11が、コール関数が被コール関数と異なると判断した場合(ステップS405:NO)、CPU11は、コール関数の属するモジュールが、被コール関数の属するモジュールと等しいか否かを判断する(ステップS406)。CPU11が、コール関数の属するモジュールが、被コール関数の属するモジュールと異なると判断した場合(ステップS406:NO)、CPU11は、選択された対応関係情報を抽出する(ステップS407)。
CPU11が、コール関数が被コール関数と等しいと判断した場合(ステップS405:YES)、CPU11は、ステップS406及びS407を、CPU11が、コール関数の属するモジュールが、被コール関数の属するモジュールと等しいと判断した場合(ステップS406:YES)、CPU11は、ステップS407を、それぞれスキップし、全ての対応関係情報が選択されたか否かを判断する(ステップS408)。CPU11が、未選択である対応関係情報が存在すると判断した場合(ステップS408:NO)、CPU11は、次の対応関係情報を選択して(ステップS409)、処理をステップS405へ戻して上述の処理を繰り返す。
図6は、本発明の実施の形態1に係るシーケンス図作成装置1の対応関係情報の抽出処理の例示図である。図6(a)は、図2に示す分類情報である。図6(b)は、図5(b)に示す対応関係情報である。具体的な処理として、まず対応関係情報において、コール関数と被コール関数とが一致しているコールサイトIDを削除する。図6の例では、コールサイトID‘c0’、‘c5’を削除する。
次に分類情報に基づいて、コール関数が属するモジュールと被コール関数が属するモジュールとが一致しているコールサイトIDを削除する。図6の例では、コールサイトID‘c3’、‘c6’、‘c9’、‘c10’を削除する。また、被コール関数がモジュール外である‘f7’であるコールサイトID、すなわちコールサイトID‘c1’もシーケンス図作成には不要であるので削除する。
結局、図6(c)に示すように、コールサイトID‘c2’、‘c4’、‘c7’、‘c8’の対応関係情報のみが抽出される。これらの関数の関係をモジュール単位で表示することで、必要最小限のシーケンス図を作成することができる。
図4に戻って、シーケンス図作成装置1のCPU11が、全ての対応関係情報が選択されたと判断した場合(ステップS408:YES)、CPU11は、抽出された対応関係情報に含まれるコール関数にて被コール関数が呼び出された場合に実行ログを出力するようコーディングされたログ取得用コードを生成する(ステップS410)。
図7は、本発明の実施の形態1に係るシーケンス図作成装置1のログ取得用コードの具体的な生成方法を示す例示図である。図7(a)は、図5(a)に示す取得したソースコードを示しており、図7(b)は、図6(c)で抽出された対応関係情報を示している。抽出された対応関係情報を含むソースコードが実行された場合に実行ログを出力するように、文字列出力関数tlog()を、ソースコードの対応関係情報に対応する位置に挿入する。なお、文字列出力関数tlog()の引数はコールサイトIDであり、実行ログとしてコールサイトIDが出力される。
図7(c)は、文字列出力関数tlog()を、ソースコードに埋め込んだ状態を示す例示図である。図7(c)に示すように、抽出された対応関係情報に相当する部分に文字列出力関数tlog()が埋め込まれており、該ソースコード部分が実行された場合、引数であるコールサイトIDが実行ログとして出力される。具体的にはコールサイトcxのコール関数fy()を、(tlog(cx)、fy())に変換される。なお、x、yは0以上の整数である。
図4に戻って、シーケンス図作成装置1のCPU11は、生成したログ取得用コードを含むプログラムをコンパイル等することにより実行モジュール化し、実行モジュールを実行した場合に取得することができるログ情報である実行ログ情報を取得する(ステップS411)。本実施の形態1では、実行されたコールサイトIDを実行ログ情報を示す文字列として出力する。
CPU11は、取得した実行ログ情報に基づいて、状態及び該状態間の遷移に関するオートマトン情報を抽出する(ステップS412)。図8は、本発明の実施の形態1に係るシーケンス図作成装置1の実行ログ情報に基づくオートマトン情報抽出の手順を示す概念図である。
図8(a)は、実行ログ情報の例示図である。図8(a)に示すように、実行ログ情報は、コールサイトIDの順列として取得することができる。取得した実行ログ情報から、まずは図8(b)に示すように重複しない要素を抽出する。本実施の形態1では、4つのコールサイトIDが抽出されている。
そして、抽出された各要素qiに対して開始エッジqis及び終了エッジqieを生成して、一組のラベルqiを対応付ける。図8(c)は、4つのコールサイトIDに対して、それぞれエッジを生成してラベル付けをした結果を示している。
次に、取得した実行ログ情報から、隣接する要素の組み合わせが重複しない実行ログ情報を抽出する。本実施の形態1では、図8(d)に示すように5種類の組み合わせに集約される。
そして、各組み合わせ(qi、qj)に対して、終了エッジqie及び開始エッジqisを生成して、一組のラベルεを対応付ける。図8(e)は、5つの組み合わせに対して、それぞれエッジを生成してラベル付けをした結果を示している。
最後に、図8(c)に示すエッジの集合と、図8(e)に示すエッジの集合との和集合を求めることで、図8(f)に示すオートマトンを構成することができる。このように実行ログ情報に基づいて構成されたオートマトン情報を抽出することで、シーケンス図作成時に不要な要素が入り込むことを事前に排除することができる。
図4に戻って、シーケンス図作成装置1のCPU11は、抽出されたオートマトン情報を、シーケンス図を構成するシーケンス図構成要素情報へ変換する(ステップS413)。図9は、本発明の実施の形態1に係るシーケンス図作成装置1のオートマトン情報からシーケンス図構成要素情報へ変換する正規化処理の例示図である。
図9(a)に示すようにオートマトンが構成されているので、開始状態c7sが残るように他の状態を除去する。まず状態c2s、c2e、c8s、c8e、c4sを除去することで、図9(b)に示す図まで簡素化することができる。さらに中間状態c7eを除去することにより、図9(c)に示すように、2つの状態間の遷移を示す図にまで簡素化することができる。
そして、状態を1つで表現するべく状態c4eを除去することで、図9(d)に示すように正規表現することができる状態まで簡素化して表現することができ、図9(e)に示すように正規表現することで、シーケンス図の構成要素を特定することができる。
オートマトンを正規化する方法は特に限定されるものではなく、上述のような状態除去法を用いる場合、簡素な正規表現を得ることができない場合も生じうる。そこで、例えば式(1)のような関係式を用いて、簡素な表現に変換する。
r(s|t)=rs|rt
(s|t)r=sr|tr
(r*|s*)*=(r*s*)*=(r|s)*
・・・(1)
例えば図9(e)に示す正規表現(c7c2|c7c8c4)*は、式(1)の第一式を用いることで(c7(c2|c8c4))*と変換することができる。変換された簡素な正規表現を、式(2)に示す変換規則を用いることで、シーケンス図構成要素情報に変換することができる。なお、式(2)において‘Module’とは、対応関係情報を用いて関数をモジュール名に対応付ける手続きを意味している。
Trans(c)=<Module(コール関数(c))、被コール関数(c)、Module(被コール関数(c))>
Trans(r*)=loop(Trans(r))
Trans(r?)=opt(Trans(r))
Trans(rs)=strict(Trans(r),Trans(s))
Trans(r|s)=alt(Trans(r),Trans(s))
・・・(2)
図10は、本発明の実施の形態1に係るシーケンス図作成装置1において、求めた正規表現(c7(c2|c8c4))*を、式(2)に従って変換したシーケンス図構成要素情報の例示図である。図10において、‘strict’はモジュールを実行する順序の定義を、‘loop’は繰り返し処理を、‘alt’は2種類の状態遷移のいずれか一方を実行することを、それぞれ意味している。なお、図示されてはいないが、‘opt’は実行する場合としない場合とが存在するオプション処理を、意味している。
図4に戻って、シーケンス図作成装置1のCPU11は、変換されたシーケンス図構成要素情報に基づいてシーケンス図を生成する(ステップS414)。図11は、本発明の実施の形態1に係るシーケンス図作成装置1において変換された、図10に示すシーケンス図構成要素情報に基づいて生成したシーケンス図の例示図である。
図11に示すように、図10でのシーケンス図構成要素情報における‘strict’、‘loop’、‘alt’で定義された関係に従って、それぞれモジュールm0、m1、m2間のコール関係を示す図としてシーケンス図が生成される。具体的には、‘loop’が先頭にあることから、以下の処理はすべて繰り返し処理を前提としていることがわかり、関数f1の次に、関数f6又は関数f2、f0のいずれかが実行されるようシーケンス図が生成される。
以上のように本実施の形態1によれば、ソースコードに基づいてシーケンス図構成要素情報を特定することができるので、モデル化を意識した情報を取得する必要が無い。また、シーケンス図として表示する必要がある部分のみ実行ログを取得することができるので、必要最小限の構造を有するシーケンス図を容易に作成することができる。したがって、ソースコードが複雑な構造を有する場合であっても、構造が簡素であり明確なシーケンス図を作成することができ、シーケンス図に基づくシステム解析により、ボトルネックの発生箇所の特定等、システムの問題点を明確にすることが可能となる。
(実施の形態2)
本発明の実施の形態2に係るシーケンス図作成装置1の構成及び機能ブロック図は、実施の形態1と同様であることから、同一の符号を付することにより詳細な説明は省略する。実施の形態2では、コール関数のリターンを追加することにより、各モジュールの実行オカレンスを付加したシーケンス図を作成することができる点で実施の形態1とは相違する。
ログ取得用コード生成手段303は、解析手段302での解析結果に基づいて、実行ログを取得するためのログ取得用コードを生成する。具体的には、分類情報記憶部131に記憶してある分類情報を読み出し、対応関係情報のうち、コール関数と被コール関数とが異なり、コール関数及び被コール関数が異なるモジュールに分類されている対応関係情報のみを抽出し、抽出された対応関係情報に含まれるコール関数にて被コール関数が呼び出された場合及びコール関数がリターンされた場合に実行ログを出力するようコーディングされたログ取得用コードを生成する。したがって、実行ログ情報取得手段304で取得する実行ログ情報には、関数リターンも記録されており、オートマトンの構造も実施の形態1よりは複雑になる。
図12は、本発明の実施の形態2に係るシーケンス図作成装置1のCPU11の処理手順を示すフローチャートである。シーケンス図作成装置1のCPU11は、記憶装置13に記憶されている、シーケンス図作成対象となる部分を含むコンピュータプログラムのソースコードを取得する(ステップS1201)。具体的には、記憶装置13からソースコードを示すテキストデータを読み出してメモリ12へ展開する。CPU11は、取得したソースコードを解析して、包含されているコール関数及び被コール関数の対応関係に関する対応関係情報を取得する(ステップS1202)。
CPU11は、記憶装置13の分類情報記憶部131に記憶してある分類情報を読み出し(ステップS1203)、取得した対応関係情報の中から一の対応関係情報を選択する(ステップS1204)。CPU11は、選択された対応関係情報につき、コール関数が被コール関数と等しいか否かを判断する(ステップS1205)。
CPU11が、コール関数が被コール関数と異なると判断した場合(ステップS1205:NO)、CPU11は、コール関数の属するモジュールが、被コール関数の属するモジュールと等しいか否かを判断する(ステップS1206)。CPU11が、コール関数の属するモジュールが、被コール関数の属するモジュールと異なると判断した場合(ステップS1206:NO)、CPU11は、選択された対応関係情報を抽出する(ステップS1207)。
CPU11が、コール関数が被コール関数と等しいと判断した場合(ステップS1205:YES)、CPU11は、ステップS1206及びS1207を、CPU11が、コール関数の属するモジュールが、被コール関数の属するモジュールと等しいと判断した場合(ステップS1206:YES)、CPU11は、ステップS1207を、それぞれスキップし、全ての対応関係情報が選択されたか否かを判断する(ステップS1208)。CPU11が、未選択である対応関係情報が存在すると判断した場合(ステップS1208:NO)、CPU11は、次の対応関係情報を選択して(ステップS1209)、処理をステップS1205へ戻して上述の処理を繰り返す。
CPU11が、全ての対応関係情報が選択されたと判断した場合(ステップS1208:YES)、CPU11は、抽出された対応関係情報に含まれるコール関数にて被コール関数が呼び出された場合、及びコール関数がリターンした場合に実行ログを出力するようコーディングされたログ取得用コードを生成する(ステップS1210)。
図13は、本発明の実施の形態2に係るシーケンス図作成装置1のログ取得用コードの具体的な生成方法を示す例示図である。図13(a)は、取得したソースコードを示しており、図13(b)は、抽出された対応関係情報を示している。ソースコード及び対応関係情報は実施の形態1と同様であるが、ソースコードに挿入する文字列出力関数が追加されている。
すなわち、図13(c)に示すように、抽出された対応関係情報を含むソースコードが実行された場合に実行ログを出力するように、文字列出力関数tlog()を、ソースコードの対応関係情報に対応する位置に挿入するとともに、コール関数のリターンが実行された場合に実行ログを出力するように、文字列出力関数rlog()も、ソースコードの対応関係情報に対応する位置に挿入する。具体的にはコールサイトcxのコール関数fy()を、(tlog(cx)、ty=fy()、rlog(cx)、ty)に変換される。なお、x、yは0以上の整数であり、tyはコール関数fyと同じ型を有する変数である。
図12に戻って、シーケンス図作成装置1のCPU11は、生成したログ取得用コードを含むプログラムをコンパイル等することにより実行モジュール化し、実行モジュールを実行した場合に取得することができるログ情報である実行ログ情報を取得する(ステップS1211)。本実施の形態2では、実行ログ情報として、実行されたコールサイトID及びコール関数のリターンを示すリターンIDを文字列として出力する。すなわち、tlog(cx)はcxを出力し、rlog(cx)はrxを出力する。
CPU11は、取得した実行ログ情報に基づいて、状態及び該状態間の遷移に関するオートマトン情報を抽出する(ステップS1212)。図14及び図15は、本発明の実施の形態2に係るシーケンス図作成装置1の実行ログ情報に基づくオートマトン情報抽出の手順を示す概念図である。
図14(a)は、実行ログ情報の例示図である。図14(a)に示すように、実行ログ情報は、コールサイトID及びリターンIDの順列として取得することができる。取得した実行ログ情報から、まずは図14(b)に示すように重複しない要素を抽出する。本実施の形態2では、4つのコールサイトID及び4つのリターンIDが抽出されている。
そして、抽出された各要素qiに対して開始エッジqis及び終了エッジqieを生成して、一組のラベルqiを対応付ける。図14(c)は、4つのコールサイトID及び4つのリターンIDに対して、それぞれエッジを生成してラベル付けをした結果を示している。
次に、取得した実行ログ情報から、隣接する要素の組み合わせが重複しない実行ログ情報を抽出する。本実施の形態2では、図14(d)に示すように9種類の組み合わせに集約される。
そして、各組み合わせ(qi、qj)に対して、終了エッジqie及び開始エッジqisを生成して、一組のラベルεを対応付ける。図14(e)は、9つの組み合わせに対して、それぞれエッジを生成してラベル付けをした結果を示している。
最後に、図14(c)に示すエッジの集合と、図14(e)に示すエッジの集合との和集合を図15(a)に示すように求める。求めた和集合に基づいて、図15(b)に示すオートマトンを構成することができる。このように実行ログ情報に基づいて構成されたオートマトン情報を抽出することで、シーケンス図作成時に不要な要素が入り込むことを事前に排除することができる。
図12に戻って、シーケンス図作成装置1のCPU11は、抽出されたオートマトン情報を、シーケンス図を構成するシーケンス図構成要素情報へ変換する(ステップS1213)。図16は、本発明の実施の形態2に係るシーケンス図作成装置1のオートマトン情報からシーケンス図構成要素情報へ変換する正規化処理の例示図である。
図16(a)に示すようにオートマトンが構成されているので、開始状態c7sが残るように他の状態を除去する。まず状態r7e、c2s、c2e、r2s、r2e、c8s、c8e、c4s、c4e、r4s、r4e、r8s、r8eを除去することで、図16(b)に示す図まで簡素化することができる。さらに中間状態c7eを除去することにより、図16(c)に示すように、2つの状態間の遷移を示す図にまで簡素化することができる。
そして、状態を1つで表現するべく状態r7sを除去することで、図16(d)に示すように正規表現することができる状態まで簡素化して表現することができ、図16(e)に示すように正規表現することで、シーケンス図の構成要素を特定することができる。
オートマトンを正規化する方法は特に限定されるものではなく、上述のような状態除去法を用いる場合、簡素な正規表現を得ることができない場合も生じうる。そこで、例えば実施の形態1と同様、式(1)に示す関係式を用いて、簡素な表現に変換する。
例えば図16(e)に示す正規表現(c7c2r2r7|c7c8c4r4r8r7)*は、式(1)の第一式を用いることで(c7(c2r2r7|c8c4r4r8r7))*へ変換することができ、第二式を用いることで、(c7(c2r2|c8c4r4r8)r7)*へ変換することができる。変換された簡素な正規表現を、実施の形態1と同様、式(3)に示す変換規則を用いることで、シーケンス図構成要素情報に変換する。なお、式(3)において‘Module’とは、対応関係情報を用いて関数をモジュール名に対応付ける手続きを意味している。
Trans(c)=<Module(コール関数(c))、被コール関数(c)、Module(被コール関数(c))>
Trans(r)=<Module(コール関数(c))、被コール関数(c):return、Module(被コール関数(c))>
Trans(r*)=loop(Trans(r))
Trans(r?)=opt(Trans(r))
Trans(rs)=strict(Trans(r),Trans(s))
Trans(r|s)=alt(Trans(r),Trans(s))
・・・(3)
図17は、本発明の実施の形態2に係るシーケンス図作成装置において、求めた正規表現(c7(c2r2|c8c4r4r8)r7)*を、式(3)に従って変換したシーケンス図構成要素情報の例示図である。図17において、‘strict’はモジュール間を遷移するコール関数の定義を、‘loop’は繰り返し処理を、‘alt’は2種類の状態遷移のいずれか一方を実行することを、それぞれ意味している。
図12に戻って、シーケンス図作成装置1のCPU11は、変換されたシーケンス図構成要素情報に基づいてシーケンス図を生成する(ステップS1214)。図18は、本発明の実施の形態2に係るシーケンス図作成装置1において変換された、図17に示すシーケンス図構成要素情報に基づいて作成したシーケンス図の例示図である。
図18に示すように、図17でのシーケンス図構成要素情報における‘strict’、‘loop’、‘alt’で定義された関係に従って、それぞれモジュールm0、m1、m2間のコール関係を示す図としてシーケンス図が生成される。具体的には、‘loop’が先頭にあることから、以下の処理はすべて繰り返し処理を前提としていることがわかり、関数f1の次に、関数f6又は関数f2、f0のいずれかが実行されるようシーケンス図が生成される。
また、実施の形態1とは異なり、関数ごとにリターンのタイミングを特定することができるので、シーケンス図にモジュールの実行オカレンス(図18の長方形部分)をモジュールごとに記載することができる。これにより、どの関数がどのようなタイミングでコール/リターンしているかを容易に視認することができる。
以上のように本実施の形態2によれば、モジュール単位でコール関数及び被コール関数の対応関係を特定するとともに、コール関数のリターン実行タイミングについても特定することができ、モジュール間のプロセス遷移ログ及び所定の関数が実行されているタイミングを確実に取得することができる。したがって、モデル化を意識することなく、シーケンス図として表示する必要がある部分のみの実行ログをより精緻に取得することができ、モジュールの動作タイミングを含むシーケンス図を容易に作成することが可能となる。
なお、上述した実施の形態1及び2では、処理によっては複数のモジュールを1つのモジュールとして表し、モジュール内部の処理を回帰呼び出しとしてシーケンス図を作成する方が好ましい場合も生じうる。例えば実施の形態1にて、モジュールm0とm1とを1つのモジュールm3で表示する場合、分類情報記憶部131に記憶されるデータ構成も変化する。
図19は、複数のモジュールを一体化した場合の分類情報記憶部131のデータ構成の例示図である。図19に示すように、モジュールm0とm1との上位階層に、両者をまとめたモジュールm3を設定している。m3に基づいて実施の形態1と同様の処理を実行してシーケンス図を作成した場合、コール関数f1についてはシーケンス図の作成対象から除外される。
しかし、実施の形態1の処理により図11に示すシーケンス図を作成した後では、コール関数f1を回帰呼び出し関数として残すことができる。図20は、複数のモジュールを一体化した場合のシーケンス図の例示図である。
図20(a)は、モジュールm0とm1を一体化したモジュールm3を用いた場合、コール関数f1が回帰呼び出し関数となることは自明であり、シーケンス図にも回帰呼び出し関数として残すことができる。図20(b)に示すようにモジュールm0とm1が一体化されることにより、‘alt’内の区別も不要となり、選択範囲を明示する破線も消去されている。したがって、シーケンス図として一層簡素化した状態で作成することができ、特にソースコードが大規模である場合には、シーケンス図に表されるモジュール数を減少することができ、シーケンス図の構造を簡素化することにより視認性の向上を図ることができる。
なお、本発明は上記実施例に限定されるものではなく、本発明の趣旨の範囲内であれば多種々の変更、改良等が可能である。例えばシーケンス図作成装置1を1つのコンピュータで構成しても良いし、複数のコンピュータをネットワークを介してデータ通信可能に接続されたネットワークコンピューティング環境で構成されても良い。これらの変更、改良等は当業者にとって自明であり、該変更、改良等を加えた形態も当然に本発明の技術的範囲に含まれる。
本発明の実施の形態1に係るシーケンス図作成装置の構成例を示すブロック図である。 本発明の実施の形態1に係るシーケンス図作成装置の分類情報記憶部のデータ構成の例示図である。 本発明の実施の形態1に係るシーケンス図作成装置の機能ブロック図である。 本発明の実施の形態1に係るシーケンス図作成装置のCPUの処理手順を示すフローチャートである。 本発明の実施の形態1に係るシーケンス図作成装置のソースコードに基づく対応関係情報取得の例示図である。 本発明の実施の形態1に係るシーケンス図作成装置の対応関係情報の抽出処理の例示図である。 本発明の実施の形態1に係るシーケンス図作成装置のログ取得用コードの具体的な生成方法を示す例示図である。 本発明の実施の形態1に係るシーケンス図作成装置の実行ログ情報に基づくオートマトン情報抽出の手順を示す概念図である。 本発明の実施の形態1に係るシーケンス図作成装置のオートマトン情報からシーケンス図構成要素情報へ変換する正規化処理の例示図である。 本発明の実施の形態1に係るシーケンス図作成装置において、求めた正規表現を変換したシーケンス図構成要素情報の例示図である。 本発明の実施の形態1に係るシーケンス図作成装置において変換されたシーケンス図構成要素情報に基づいて作成したシーケンス図の例示図である。 本発明の実施の形態2に係るシーケンス図作成装置のCPUの処理手順を示すフローチャートである。 本発明の実施の形態2に係るシーケンス図作成装置のログ取得用コードの具体的な生成方法を示す例示図である。 本発明の実施の形態2に係るシーケンス図作成装置の実行ログ情報に基づくオートマトン情報抽出の手順を示す概念図である。 本発明の実施の形態2に係るシーケンス図作成装置の実行ログ情報に基づくオートマトン情報抽出の手順を示す概念図である。 本発明の実施の形態2に係るシーケンス図作成装置のオートマトン情報からシーケンス図構成要素情報へ変換する正規化処理の例示図である。 本発明の実施の形態2に係るシーケンス図作成装置において、求めた正規表現を変換したシーケンス図構成要素情報の例示図である。 本発明の実施の形態2に係るシーケンス図作成装置において変換されたシーケンス図構成要素情報に基づいて作成したシーケンス図の例示図である。 複数のモジュールを一体化した場合の分類情報記憶部のデータ構成の例示図である。 複数のモジュールを一体化した場合のシーケンス図の例示図である。
符号の説明
1 シーケンス図作成装置
11 CPU
12 メモリ
13 記憶装置
14 I/Oインタフェース
15 通信インタフェース
16 ビデオインタフェース
17 可搬型ディスクドライブ
18 内部バス
23 表示装置
90 可搬型記録媒体
100 コンピュータプログラム
131 分類情報記憶部

Claims (7)

  1. ソースコードを解析して、該ソースコードに含まれるモジュール間の処理を特定するシーケンス図を作成するシーケンス図作成装置において、
    ソースコードを取得するコード取得手段と、
    取得したソースコードを解析する解析手段と、
    解析結果に基づいて、実行ログを取得するためのログ取得用コードを生成するログ取得用コード生成手段と、
    生成したログ取得用コードを含むプログラムを実行して、実行時のログ情報である実行ログ情報を取得する実行ログ情報取得手段と、
    取得した実行ログ情報に基づいて、状態及び該状態間の遷移に関するオートマトン情報を抽出するオートマトン情報抽出手段と、
    抽出されたオートマトン情報を、シーケンス図を構成するシーケンス図構成要素情報へ変換する変換手段と、
    変換されたシーケンス図構成要素情報に基づいてシーケンス図を生成する生成手段と
    を備え
    前記解析手段は、
    前記ソースコードに基づいて、コール関数及び被コール関数の対応関係に関する対応関係情報を取得するようにしてあり、
    前記ログ取得用コード生成手段は、
    コール関数及び被コール関数をモジュール単位で分類する分類情報を取得する分類情報取得手段と、
    取得した前記対応関係情報から、コール関数と被コール関数とが異なり、コール関数及び被コール関数が異なるモジュールに分類されている対応関係情報のみを抽出する抽出手段と
    を備え、
    抽出された対応関係情報に含まれるコール関数にて被コール関数が呼び出された場合に実行ログを出力する前記ログ取得用コードを生成するようにしてあることを特徴とするシーケンス図作成装置。
  2. ソースコードを解析して、該ソースコードに含まれるモジュール間の処理を特定するシーケンス図を作成するシーケンス図作成装置において、
    ソースコードを取得するコード取得手段と、
    取得したソースコードを解析する解析手段と、
    解析結果に基づいて、実行ログを取得するためのログ取得用コードを生成するログ取得用コード生成手段と、
    生成したログ取得用コードを含むプログラムを実行して、実行時のログ情報である実行ログ情報を取得する実行ログ情報取得手段と、
    取得した実行ログ情報に基づいて、状態及び該状態間の遷移に関するオートマトン情報を抽出するオートマトン情報抽出手段と、
    抽出されたオートマトン情報を、シーケンス図を構成するシーケンス図構成要素情報へ変換する変換手段と、
    変換されたシーケンス図構成要素情報に基づいてシーケンス図を生成する生成手段と
    を備え、
    前記解析手段は、
    前記ソースコードに基づいて、コール関数及び被コール関数の対応関係に関する対応関係情報を取得するようにしてあり、
    前記ログ取得用コード生成手段は、
    コール関数及び被コール関数をモジュール単位で分類する分類情報を取得する分類情報取得手段と、
    取得した前記対応関係情報から、コール関数と被コール関数とが異なり、コール関数及び被コール関数が異なるモジュールに分類されている対応関係情報のみを抽出する抽出手段と
    を備え、
    抽出された対応関係情報に含まれるコール関数にて被コール関数が呼び出された場合及びコール関数にリターンした場合に実行ログを出力する前記ログ取得用コードを生成するようにしてあることを特徴とするシーケンス図作成装置。
  3. ソースコードを解析して、該ソースコードに含まれるモジュール間の処理を特定するシーケンス図を作成するシーケンス図作成装置において、
    ソースコードを取得するコード取得手段と、
    取得したソースコードを解析して、コール関数及び被コール関数の対応関係に関する対応関係情報を取得する解析手段と、
    コール関数及び被コール関数をモジュール単位で分類する分類情報を取得する分類情報取得手段と、
    取得した前記対応関係情報から、コール関数と被コール関数とが異なり、コール関数及び被コール関数が異なるモジュールに分類されている対応関係情報のみを抽出する抽出手段と
    抽出された対応関係情報に含まれるコール関数にて被コール関数が呼び出された場合に実行ログを出力するログ取得用コードを生成するログ取得用コード生成手段と、
    生成したログ取得用コードを含むプログラムを実行して、実行時のログ情報である実行ログ情報を取得する実行ログ情報取得手段と、
    取得した実行ログ情報に基づいて、状態及び該状態間の遷移に関するオートマトン情報を抽出するオートマトン情報抽出手段と、
    抽出されたオートマトン情報を、シーケンス図を構成するシーケンス図構成要素情報へ変換する変換手段と、
    変換されたシーケンス図構成要素情報に基づいてシーケンス図を生成する生成手段と
    を備えることを特徴とするシーケンス図作成装置。
  4. ソースコードを解析して、該ソースコードに含まれるモジュール間の処理を特定するシーケンス図を作成するシーケンス図作成装置で実行することが可能なシーケンス図作成方法において、
    ソースコードを取得し、
    取得したソースコードに基づいて、コール関数及び被コール関数の対応関係に関する対応関係情報を取得し、
    コール関数及び被コール関数をモジュール単位で分類する分類情報を取得し、
    取得した前記対応関係情報から、コール関数と被コール関数とが異なり、コール関数及び被コール関数が異なるモジュールに分類されている対応関係情報のみを抽出し、
    抽出された対応関係情報に含まれるコール関数にて被コール関数が呼び出された場合に実行ログを出力するログ取得用コードを生成し、
    生成したログ取得用コードを含むプログラムを実行して、実行時のログ情報である実行ログ情報を取得し、
    取得した実行ログ情報に基づいて、状態及び該状態間の遷移に関するオートマトン情報を抽出し、
    抽出されたオートマトン情報を、シーケンス図を構成するシーケンス図構成要素情報へ変換し、
    変換されたシーケンス図構成要素情報に基づいてシーケンス図を生成することを特徴とするシーケンス図作成方法
  5. ソースコードを解析して、該ソースコードに含まれるモジュール間の処理を特定するシーケンス図を作成するシーケンス図作成装置で実行することが可能なシーケンス図作成方法において、
    ソースコードを取得し、
    取得したソースコードに基づいて、コール関数及び被コール関数の対応関係に関する対応関係情報を取得し、
    コール関数及び被コール関数をモジュール単位で分類する分類情報を取得し
    取得した前記対応関係情報から、コール関数と被コール関数とが異なり、コール関数及び被コール関数が異なるモジュールに分類されている対応関係情報のみを抽出し、
    抽出された対応関係情報に含まれるコール関数にて被コール関数が呼び出された場合及びコール関数にリターンした場合に実行ログを出力するログ取得用コードを生成し、
    生成したログ取得用コードを含むプログラムを実行して、実行時のログ情報である実行ログ情報を取得し、
    取得した実行ログ情報に基づいて、状態及び該状態間の遷移に関するオートマトン情報を抽出し、
    抽出されたオートマトン情報を、シーケンス図を構成するシーケンス図構成要素情報へ変換し、
    変換されたシーケンス図構成要素情報に基づいてシーケンス図を生成することを特徴とするシーケンス図作成方法。
  6. ソースコードを解析して、該ソースコードに含まれるモジュール間の処理を特定するシーケンス図を作成するシーケンス図作成装置で実行することが可能なコンピュータプログラムにおいて、
    前記シーケンス図作成装置を、
    ソースコードを取得するコード取得手段、
    取得したソースコードを解析する解析手段、
    解析結果に基づいて、実行ログを取得するためのログ取得用コードを生成するログ取得用コード生成手段、
    生成したログ取得用コードを含むプログラムを実行して、実行時のログ情報である実行ログ情報を取得する実行ログ情報取得手段、
    取得した実行ログ情報に基づいて、状態及び該状態間の遷移に関するオートマトン情報を抽出するオートマトン情報抽出手段、
    抽出されたオートマトン情報を、シーケンス図を構成するシーケンス図構成要素情報へ変換する変換手段、及び
    変換されたシーケンス図構成要素情報に基づいてシーケンス図を生成する生成手段
    として機能させ、
    前記解析手段を、
    前記ソースコードに基づいて、コール関数及び被コール関数の対応関係に関する対応関係情報を取得する手段として機能させ、
    前記ログ取得用コード生成手段を、
    コール関数及び被コール関数をモジュール単位で分類する分類情報を取得する分類情報取得手段、
    取得した前記対応関係情報から、コール関数と被コール関数とが異なり、コール関数及び被コール関数が異なるモジュールに分類されている対応関係情報のみを抽出する抽出手段、及び
    抽出された対応関係情報に含まれるコール関数にて被コール関数が呼び出された場合に実行ログを出力する前記ログ取得用コードを生成する手段
    として機能させることを特徴とするコンピュータプログラム
  7. ソースコードを解析して、該ソースコードに含まれるモジュール間の処理を特定するシーケンス図を作成するシーケンス図作成装置で実行することが可能なコンピュータプログラムにおいて、
    前記シーケンス図作成装置を、
    ソースコードを取得するコード取得手段、
    取得したソースコードを解析する解析手段、
    解析結果に基づいて、実行ログを取得するためのログ取得用コードを生成するログ取得用コード生成手段、
    生成したログ取得用コードを含むプログラムを実行して、実行時のログ情報である実行ログ情報を取得する実行ログ情報取得手段、
    取得した実行ログ情報に基づいて、状態及び該状態間の遷移に関するオートマトン情報を抽出するオートマトン情報抽出手段、
    抽出されたオートマトン情報を、シーケンス図を構成するシーケンス図構成要素情報へ変換する変換手段、及び
    変換されたシーケンス図構成要素情報に基づいてシーケンス図を生成する生成手段
    として機能させ、
    前記解析手段を、
    前記ソースコードに基づいて、コール関数及び被コール関数の対応関係に関する対応関係情報を取得する手段として機能させ、
    前記ログ取得用コード生成手段を、
    コール関数及び被コール関数をモジュール単位で分類する分類情報を取得する分類情報取得手段、
    取得した前記対応関係情報から、コール関数と被コール関数とが異なり、コール関数及び被コール関数が異なるモジュールに分類されている対応関係情報のみを抽出する抽出手段、及び
    抽出された対応関係情報に含まれるコール関数にて被コール関数が呼び出された場合及びコール関数にリターンした場合に実行ログを出力する前記ログ取得用コードを生成する手段
    として機能させることを特徴とするコンピュータプログラム
JP2008149498A 2008-06-06 2008-06-06 シーケンス図作成装置、シーケンス図作成方法及びコンピュータプログラム Expired - Fee Related JP5203806B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008149498A JP5203806B2 (ja) 2008-06-06 2008-06-06 シーケンス図作成装置、シーケンス図作成方法及びコンピュータプログラム
US12/478,815 US8423985B2 (en) 2008-06-06 2009-06-05 System, method and computer program for generating sequence diagram

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008149498A JP5203806B2 (ja) 2008-06-06 2008-06-06 シーケンス図作成装置、シーケンス図作成方法及びコンピュータプログラム

Publications (2)

Publication Number Publication Date
JP2009295021A JP2009295021A (ja) 2009-12-17
JP5203806B2 true JP5203806B2 (ja) 2013-06-05

Family

ID=41401467

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008149498A Expired - Fee Related JP5203806B2 (ja) 2008-06-06 2008-06-06 シーケンス図作成装置、シーケンス図作成方法及びコンピュータプログラム

Country Status (2)

Country Link
US (1) US8423985B2 (ja)
JP (1) JP5203806B2 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101294708B1 (ko) 2010-03-30 2013-08-08 한국전자통신연구원 행위 오류 분석 장치 및 그 방법
JP5431256B2 (ja) * 2010-06-29 2014-03-05 インターナショナル・ビジネス・マシーンズ・コーポレーション 業務プロセス解析方法、システム及びプログラム
KR101180784B1 (ko) 2010-12-28 2012-09-07 전자부품연구원 컴포넌트 기반 프로그램의 동작 시퀀스 다이어그램 자동 생성 장치
US10162604B2 (en) * 2011-06-16 2018-12-25 Microsoft Technology Licensing, Llc Navigation history visualization in integrated development environment
KR101488188B1 (ko) 2013-04-19 2015-02-06 서강대학교산학협력단 시퀀스 다이어그램의 생성 방법 및 시스템
US9117177B1 (en) * 2013-05-30 2015-08-25 Amazon Technologies, Inc. Generating module stubs
CN103713933B (zh) * 2013-12-31 2017-03-08 华为技术有限公司 计算机程序中热点函数、变量的汇聚方法、装置及系统
US9310433B2 (en) * 2014-04-18 2016-04-12 Breker Verification Systems Testing SOC with portable scenario models and at different levels
KR101770292B1 (ko) * 2014-11-27 2017-08-22 주식회사 엘지씨엔에스 컴퓨터 수행 가능한 모델 역공학 방법 및 장치
JP6533484B2 (ja) * 2016-04-22 2019-06-19 日本電信電話株式会社 テストデータ生成プログラム及びテストデータ生成方法
JP6606010B2 (ja) * 2016-05-09 2019-11-13 日本電信電話株式会社 単機能部化システム、単機能部化方法および単機能部化プログラム
JP6748307B2 (ja) 2017-02-01 2020-08-26 ジーメンス インダストリー ソフトウェア エヌ・フェーSiemens Industry Software NV ソフトウェアプログラムを検証するための方法およびシステム
WO2020174578A1 (ja) * 2019-02-26 2020-09-03 三菱電機株式会社 シーケンス図生成装置
CN112269610B (zh) * 2020-10-26 2024-10-22 南京燚麒智能科技有限公司 一种批量模型算法的执行方法和装置
CN114238024A (zh) * 2021-12-20 2022-03-25 平安壹钱包电子商务有限公司 时序图生成方法与系统
US20240303044A1 (en) * 2023-03-06 2024-09-12 Jpmorgan Chase Bank, N.A. Framework for generation of architecture models based on domain specific language and tracking architecture drift

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0830444A (ja) * 1994-07-12 1996-02-02 Nippon Telegr & Teleph Corp <Ntt> 正規表現を用いたメッセージシーケンスチャート抽出方法
JPH11232085A (ja) * 1998-02-18 1999-08-27 Fujitsu Ltd 処理シーケンス自動生成方法および装置並びに処理シーケンス生成プログラムを記録した記憶媒体
JP2002108649A (ja) * 2000-09-29 2002-04-12 Toshiba Corp トレース解析を支援するためのプログラムを記録した記録媒体及びプログラム製品
JP2003241998A (ja) * 2002-02-14 2003-08-29 Toshiba Corp 制御構造抽出方法、ログ整形方法とそのためのプログラム
JP2004094496A (ja) 2002-08-30 2004-03-25 Ntt Comware Corp シーケンス図作成装置、およびその方法、シーケンス図作成プログラム、その記録媒体
JP2005092609A (ja) 2003-09-18 2005-04-07 Nec Corp シーケンス図表示装置およびシーケンス図表示プログラム
JP2006018477A (ja) * 2004-06-30 2006-01-19 Canon Software Inc シーケンス情報生成装置およびシーケンス情報生成方法およびプログラムおよび記録媒体
JP2007025965A (ja) * 2005-07-14 2007-02-01 Canon Inc オブジェクト指向分析設計支援装置
JP2007041638A (ja) * 2005-07-29 2007-02-15 Sharp Corp シーケンス図作成装置、シーケンス図作成プログラムおよびシーケンス図作成プログラムを記録したコンピュータ読取り可能な記録媒体

Also Published As

Publication number Publication date
US20090307654A1 (en) 2009-12-10
JP2009295021A (ja) 2009-12-17
US8423985B2 (en) 2013-04-16

Similar Documents

Publication Publication Date Title
JP5203806B2 (ja) シーケンス図作成装置、シーケンス図作成方法及びコンピュータプログラム
CN107832229B (zh) 一种基于nlp的系统测试用例自动生成方法
EP2979176B1 (en) Method for transforming first code instructions in a first programming language into second code instructions in a second programming language
Bruneliere et al. Modisco: A model driven reverse engineering framework
Iovino et al. On the Impact Significance of Metamodel Evolution in MDE.
US9946514B1 (en) Systems and methods for generating functional application designs
JP5494999B1 (ja) テキストマイニングシステム、テキストマイニング方法及びプログラム
Ardimento et al. Evaluating coding behavior in software development processes: A process mining approach
US20060059027A1 (en) System and method for specifying functional and non-functional requirements for a project
El Boussaidi et al. Reconstructing architectural views from legacy systems
WO2012029931A1 (ja) 思考モデルの作成方法、思考モデルの作成装置及び思考モデルの作成プログラム
CN104461572B (zh) 一种需求变更波及效应分析方法
Liu Discovery and quality evaluation of software component behavioral models
Pinzger et al. Architecture recovery for product families
US11656855B2 (en) Identify, suggest, and auto-implement best practices for requirement specific software development
Chen et al. Data-juicer sandbox: A comprehensive suite for multimodal data-model co-development
CN106104470B (zh) 动作设计装置
CN103443766B (zh) 程序的影响范围设定装置,和利用该装置的影响范围的特定方法及受影响程序的提取方法
Alsarraj et al. Designing and implementing a tool to transform source code to UML diagrams
Nikiforova et al. Automated generation of Web application front-end components from user interface Mockups
Fernández-Ropero et al. Repairing business process models as retrieved from source code
JP5600826B1 (ja) 非構造化データ処理システム、非構造化データ処理方法およびプログラム
Fadhel et al. Striffs: Architectural component diagrams for code reviews
Abdelmalek et al. A Bimodal Approach for the Discovery of a View of the Implementation Platform of Legacy Object-Oriented Systems under Modernization Process.
Duffy et al. Design and implementation of a language-complete C++ semantic graph

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110214

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120911

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120913

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130129

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20130129

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130214

R150 Certificate of patent or registration of utility model

Ref document number: 5203806

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160222

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees