JP2006018693A - 類似ソースコード抽出プログラム、類似ソースコード抽出装置および類似ソースコード抽出方法 - Google Patents

類似ソースコード抽出プログラム、類似ソースコード抽出装置および類似ソースコード抽出方法 Download PDF

Info

Publication number
JP2006018693A
JP2006018693A JP2004197317A JP2004197317A JP2006018693A JP 2006018693 A JP2006018693 A JP 2006018693A JP 2004197317 A JP2004197317 A JP 2004197317A JP 2004197317 A JP2004197317 A JP 2004197317A JP 2006018693 A JP2006018693 A JP 2006018693A
Authority
JP
Japan
Prior art keywords
source code
comparison
similarity
similar
piece
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.)
Pending
Application number
JP2004197317A
Other languages
English (en)
Inventor
Tadahiro Uehara
忠弘 上原
Toshiaki Yoshino
利明 吉野
Masahito Fujita
雅人 藤田
Ryuji Nakamura
龍二 中村
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2004197317A priority Critical patent/JP2006018693A/ja
Priority to US11/090,275 priority patent/US20060004528A1/en
Publication of JP2006018693A publication Critical patent/JP2006018693A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】類似するソースコード片を高速に抽出することができる類似ソースコード抽出プログラム、類似ソースコード抽出装置および類似ソースコード抽出方法を提供すること。
【解決手段】比較元ソースコード片指定部210が比較との基準となるソースコード片の指定を受け付け、このソースコード片と類似するソースコード片を比較先ソースコード指定部220によって指定を受け付けられたソースコード群から抽出して結果出力部290から出力する。ソースコード群から比較元のソースコード片と類似比較されるソースコードを抽出する処理は、比較元のソースコード片から作成した構文木と、ソースコード群から作成した構文木とを参照して比較先ソースコード片抽出部270がおこなう。
【選択図】 図3

Description

この発明は、所定のプログラム言語で記述されたソースコードから類似のソースコード片を抽出する類似ソースコード抽出プログラム、類似ソースコード抽出装置および類似ソースコード抽出方法に関し、特に類似のソースコード片の抽出を高速でおこなうことができる類似ソースコード抽出プログラム、類似ソースコード抽出装置および類似ソースコード抽出方法に関するものである。
ソフトウェアの開発プロジェクトにおいて、開発対象のプログラムに共通して必要となる機能をライブラリ等として共有化し、開発効率と保守性の向上を図ることが一般的におこなわれている。しかし、設計段階において共通機能を洗い出して精査するための時間を十分に確保できない等の理由から、本来共有化すべき処理が個別のプログラムに作りこまれてしまうことがしばしば発生する。
従来から、このように共通機能を含んで肥大化したソースコードをスリム化して保守性を高めることを目的として、ソースコード群から類似のソースコード片を抽出する技術が知られている。これらの技術は、具体的には非特許文献1〜3が示すような製品となって利用されている。
"CCFinder/Gemini Webサイト"、[online]、平成15年5月12日、大阪大学大学院情報科学研究科井上研究室、[平成16年6月22日検索]、インターネット<URL:http://sel.ics.es.osaka-u.ac.jp/cdtools/> "Semantic Designs, Inc: Clone Doctor"、[online]、Semantic Designs, Inc.、[平成16年6月22日検索]、インターネット<URL:http://www.semdesigns.com/Products/Clone/> "BEB | Download"、[online]、Blue Edge Bulgaria、[平成16年6月22日検索]、インターネット<URL:http://www.blue-edge.bg/download.html>
しかしながら、これらの製品に利用されている技術は、ソースコード群に含まれるソースコードを総当りで比較して類似のソースコード片を抽出するものであるので、ソースコード群に含まれるソースコードの数が大量に存在する場合には処理時間が膨大になるという問題がある。
この発明は、上述した従来技術による問題点を解消するためになされたものであり、ソースコード群から類似のソースコード片を高速に抽出することのできる類似ソースコード抽出プログラム、類似ソースコード抽出装置および類似ソースコード抽出方法を提供することを目的とする。
上述した課題を解決し、目的を達成するため、この発明に係る類似ソースコード抽出プログラムは、所定のプログラム言語で記述されたソースコードから類似のソースコード片を抽出する類似ソースコード抽出プログラムであって、類似比較の基本となる比較元ソースコード片の指定を受け付ける比較元ソースコード片指定手順と、前記比較元ソースコード片と類似するソースコード片が抽出される比較先ソースコード群の指定を受け付ける比較先ソースコード群指定手順と、前記比較元ソースコード片と類似比較される比較先ソースコード片を前記比較先ソースコード群から抽出する比較先ソースコード片抽出手順と、前記比較元ソースコード片と前記比較先ソースコード片との類似比較をおこない、類似の度合いを算出する類似度計算手順と、前記類似度計算手順により算出された類似の度合いを一覧出力する結果出力手段とをコンピュータに実行させることを特徴とする。
また、この発明に係る類似ソースコード抽出装置は、所定のプログラム言語で記述されたソースコードから類似のソースコード片を抽出する類似ソースコード抽出装置であって、類似比較の基本となる比較元ソースコード片の指定を受け付ける比較元ソースコード片指定手段と、前記比較元ソースコード片と類似するソースコード片が抽出される比較先ソースコード群の指定を受け付ける比較先ソースコード群指定手段と、前記比較元ソースコード片と類似比較される比較先ソースコード片を前記比較先ソースコード群から抽出する比較先ソースコード片抽出手段と、前記比較元ソースコード片と前記比較先ソースコード片との類似比較をおこない、類似の度合いを算出する類似度計算手段と、前記類似度計算手段により算出された類似の度合いを一覧出力する結果出力手段とを備えたことを特徴とする。
また、この発明に係る類似ソースコード抽出方法は、所定のプログラム言語で記述されたソースコードから類似のソースコード片を抽出する類似ソースコード抽出方法であって、類似比較の基本となる比較元ソースコード片の指定を受け付ける比較元ソースコード片指定工程と、前記比較元ソースコード片と類似するソースコード片が抽出される比較先ソースコード群の指定を受け付ける比較先ソースコード群指定工程と、前記比較元ソースコード片と類似比較される比較先ソースコード片を前記比較先ソースコード群から抽出する比較先ソースコード片抽出工程と、前記比較元ソースコード片と前記比較先ソースコード片との類似比較をおこない、類似の度合いを算出する類似度計算工程と、前記類似度計算工程により算出された類似の度合いを一覧出力する結果出力手段とを含んだことを特徴とする。
この発明によれば、指定されたソースコード片を基準として類似するソースコード片を抽出するように構成したので、全てのソースコードを総当りで類似比較して類似するソースコード片を抽出する場合と比較して処理結果を短時間で得ることができる。
また、この発明に係る類似ソースコード抽出プログラムは、所定のプログラム言語で記述されたソースコードから類似のソースコード片を抽出する類似ソースコード抽出プログラムであって、類似比較の基本となる比較元ソースコードの指定を受け付ける比較元ソースコード指定手順と、前記比較元ソースコードと類似するソースコード片が抽出される比較先ソースコード群の指定を受け付ける比較先ソースコード群指定手順と、前記比較元ソースコードから比較元ソースコード片を抽出し、前記比較先ソースコード群から前記比較元ソースコード片と類似比較する比較先ソースコード片を抽出するソースコード片抽出手順と、前記ソースコード片抽出手順により抽出された前記比較元ソースコード片と前記比較先ソースコード片との類似比較をおこない、類似の度合いを算出する類似度計算手順と、前記類似度計算手順により算出された類似の度合いを一覧出力する結果出力手段とをコンピュータに実行させることを特徴とする。
この発明によれば、指定された一つのソースコードに含まれるソースコード片を基準として類似するソースコード片を抽出するように構成したので、全てのソースコードを総当りで類似比較して類似するソースコード片を抽出する場合と比較して処理結果を短時間で得ることができる。
また、この発明に係る類似ソースコード抽出プログラムは、所定のプログラム言語で記述されたソースコードから類似のソースコード片を抽出する類似ソースコード抽出プログラムであって、類似比較の基本となる比較元ソースコード群の指定を受け付ける比較元ソースコード群指定手順と、前記比較元ソースコード群と類似するソースコード片が抽出される比較先ソースコード群の指定を受け付ける比較先ソースコード群指定手順と、前記比較元ソースコード群から比較元ソースコード片を抽出し、前記比較先ソースコード群から前記比較元ソースコード片と類似比較する比較先ソースコード片を抽出するソースコード片抽出手順と、前記ソースコード片抽出手順により抽出された前記比較元ソースコード片と前記比較先ソースコード片との類似比較をおこない、類似の度合いを算出する類似度計算手順と、前記類似度計算手順により算出された類似の度合いを一覧出力する結果出力手段とをコンピュータに実行させることを特徴とする。
この発明によれば、指定されたのソースコード群に含まれるソースコード片を基準として類似するソースコード片を抽出するように構成したので、全てのソースコードを総当りで類似比較して類似するソースコード片を抽出する場合と比較して処理結果を短時間で得ることができる。
また、この発明に係る類似ソースコード抽出プログラムは、上記の発明において、前記類似度計算手順における類似度合いの算出において用いられるパラメータ情報の指定を受け付けるパラメータ指定手順をさらにコンピュータに実行させ、前記類似度計算手順は、前記パラメータ指定手順にて受け付けた前記パラメータを加味して類義度合いの算出をおこなうことを特徴とする。
この発明によれば、プログラムの外部から類似度合いの計算ロジックを調整するパラメータを指定できるように構成したので、ソースコードの特徴に合わせてより適切な類似ソースコードの抽出をおこなうことができる。
また、この発明に係る類似ソースコード抽出プログラムは、上記の発明において、前記パラメータ指定手順にて受け付けた前記パラメータ情報を任意の名前と組み合わせて記憶手段に記憶するパラメータ記録手順をさらにコンピュータに実行させることを特徴とする。
この発明によれば、計算ロジックを調整するパラメータを記憶手段に保存できるように構成したので、指定したパラメータを容易に再利用することができる。
また、この発明に係る類似ソースコード抽出プログラムは、上記の発明において、前記パラメータ記録手順により記憶手段に記憶された前記パラメータ情報を読み出し、これを前記パラメータ指定手順に引き渡すパラメータ読出し手順をさらにコンピュータに実行させることを特徴とする。
この発明によれば、記憶手段に保存したパラメータを読み出して利用できるように構成したので、指定したパラメータを容易に再利用することができる。
また、この発明に係る類似ソースコード抽出プログラムは、上記の発明において、前記類似度計算手順は、前記比較元ソースコード片と前記比較先ソースコード片とを構文解析して構成要素に分解し、構成要素の種類毎の類似・相違状況に構成要素の種類毎に定められた重みを加味して類似度合いの計算をおこなうことを特徴とする。
この発明によれば、ソースコード片を構成要素に分解し、構成要素の種類毎に重みをつけて類似度合いの計算をおこなうように構成したので、ソースコードの特徴に合わせてより適切な類似ソースコードの抽出をおこなうことができる。
また、この発明に係る類似ソースコード抽出プログラムは、上記の発明において、前記パラメータ指定手順は、前記構成要素の種類毎に定められた重みの指定を受け付けることを特徴とする。
この発明によれば、プログラムの外部から類似度合いの計算ロジックを調整するパラメータを指定できるように構成したので、ソースコードの特徴に合わせてより適切な類似ソースコードの抽出をおこなうことができる。
本発明によれば、指定されたソースコード片を基準として類似するソースコード片を抽出するように構成したので、全てのソースコードを総当りで類似比較して類似するソースコード片を抽出する場合と比較して処理結果を短時間で得ることができるという効果を奏する。
また、本発明によれば、指定された一つのソースコードに含まれるソースコード片を基準として類似するソースコード片を抽出するように構成したので、全てのソースコードを総当りで類似比較して類似するソースコード片を抽出する場合と比較して処理結果を短時間で得ることができるという効果を奏する。
また、本発明によれば、指定されたのソースコード群に含まれるソースコード片を基準として類似するソースコード片を抽出するように構成したので、全てのソースコードを総当りで類似比較して類似するソースコード片を抽出する場合と比較して処理結果を短時間で得ることができるという効果を奏する。
また、本発明によれば、プログラムの外部から類似度合いの計算ロジックを調整するパラメータを指定できるように構成したので、ソースコードの特徴に合わせてより適切な類似ソースコードの抽出をおこなうことができるという効果を奏する。
また、本発明によれば、計算ロジックを調整するパラメータを記憶手段に保存し、記憶手段に保存したパラメータを読み出して利用できるように構成したので、指定したパラメータを容易に再利用することができるという効果を奏する。
また、本発明によれば、ソースコード片を構成要素に分解し、構成要素の種類毎に重みをつけて類似度合いの計算をおこなうように構成したので、ソースコードの特徴に合わせてより適切な類似ソースコードの抽出をおこなうことができるという効果を奏する。
以下に添付図面を参照して、この発明に係る類似ソースコード抽出プログラム、類似ソースコード抽出装置および類似ソースコード抽出方法の好適な実施の形態を詳細に説明する。なお、ここでは、C言語で記述されたプログラムから類似のソースコード片を抽出する場合を例にして説明するが、この発明は、特定の言語に依存するものではなく、様々なプログラム言語に用いることができる。
まず、本実施例の背景について説明する。図1は、本実施例に係る類似ソースコード抽出方式の背景を説明するための説明図である。同図に示すように、あるソフトウェア開発プロジェクトにおいて、プログラムを3階層で構築することが原則となっているとする。
最下層のレベル3に該当するのは、各プログラムに共通の処理を抽出した「共通部品」である。その上のレベル2に該当するのは、個別のプログラムに必要な業務ロジックからなる「個別処理」である。そして、最上位のレベル1に該当するのは、「共通部品」や「個別処理」の機能を呼び出してプログラムとしての動作を実現する「制御コントローラ」である。
しかし、この3階層化の原則は必ずしも厳格に守られているわけではない。例えば、新規機能として機能Bを追加開発する際に、既存の「共通部品」の一部の仕様修正が必要となったが、この仕様修正が他のプログラムに与える影響を調査する時間が足りない等の理由から、「共通部品」のうち仕様修正が必要となる処理を機能Bの「制御コントローラ」に取り込んでそこで修正を加えている。
このようなことが積み重なると、結果として「共通部品」と同様な処理が「制御コントローラ」や「個別処理」の各所にも含まれることになり、その重複状況が把握できなくなる。そして、「共通部品」に何らかの不具合が発見された場合には「制御コントローラ」や「個別処理」に類似の処理が存在する可能性があるため、それらを調査し、類似のコードが存在する場合にはそこも修正することが必要となる。
一般のプロジェクトにおいても、類似のコードがプロジェクト内のソースコードに散在することは珍しくない。たとえば、近年、インターネット上で様々な新サービスが提供されているが、これらのサービスは、迅速に顧客に提供することを求められ、開発に割当てられる期間が非常に短いものが多い。このため、十分な設計ができないまま実装がおこなわれ、共通処理の共有化が十分におこなわれない場合がある。
プロジェクトのソースコードがこのような状態になった場合、2つの対応方法が考えられる。第1の対応方法は、プロジェクトの全てのソースコードから共通処理を再抽出して、適切に共通部品化し、この共通部品を呼び出すように従来のソースコードを書き直すというものである。第2の方法は、このようなソースコードの再構成をおこなわずにコードの重複をそのままにしておくというものである。
本来であれば、第1の対応方法をとることが好ましい。従来の類似ソースコード抽出方式は、この作業を支援することを目的としている。しかし、これをおこなうにはソースコードの改修に加えてプロジェクトの全プログラムの再テストが必要となるため、工数等の問題から実現できない場合が多い。
このため、実際には第2の対応方法がとられることが多い。しかし、この対応方法をとった場合、処理の一部に不具合が発覚した都度、他にも同様な処理が存在するか否かを調査し、存在した場合はそれも修正することが必要となる。プロジェクトが大規模な場合、全てのプログラムを目視で確認し、類似の処理の有無を判断することは困難な作業となる。本実施例に係る類似ソースコード抽出方式は、この作業を効率化することを目的としている。
図2−1は、従来の類似ソースコード抽出方式の概要を説明するための説明図である。同図に示すように、従来の類似ソースコード抽出方式ではソースコードを総当りで比較し、類似のソースコード片の抽出をおこなう。この方式では、不特定多数の類似ソースコード片を抽出することができるが、ソースコードの数が増えると抽出処理に要する時間が指数的に増大する。
この方式は、プロジェクトの全ソースコードを対象にして類似コード抽出することができるので第1の対応方法をとる場合に有効であるが、第2の対応方法とった場合には問題がある。第2の対応方法とった場合には、処理の一部に不具合が発覚するたびに類似のソースコード片の抽出をおこなう必要があるが、この処理方式では抽出に要する時間が大きすぎて作業を効率的に進めることができない可能性がある。
不具合が発覚した箇所と類似する箇所を見つけることを目的とすると、類似ソースコード片の抽出処理を高速化することができる。不具合が発覚した箇所と類似する箇所を見つける場合は、その箇所と類似するソースコード片だけを抽出すればよく、不特定多数の類似ソースコード片を抽出することは必要ないからである。
図2−2は、本実施例に係る類似ソースコード抽出方式の概要を説明するための説明図である。同図に示すように、本実施例に係るソースコード抽出方式では特定のソースコードを基準にして、この基準となるソースコードと他のソースコードとを比較し、類似のソースコード片の抽出をおこなう。この方式では、抽出される類似ソースコード片は基準となるソースコードに類似するものに限定されるが、ソースコードが増えても抽出に要する処理時間はそのソースコードの数に比例して増えるだけであり、高速に処理結果を得ることができる。
また、処理速度が高速であれば、ソースコードの特徴に合わせて類似判定の判断ロジックを試行錯誤で調整して、より適切な類似ソースコード片の抽出をおこなうことも容易となる。ソースコードは、制御構造が複雑なものや多数のデータ項目からなるものなど個々に特徴があり、その特徴に合うように類似判定の設定パラメータを変えてやることでより目的に適った処理結果を得ることができる。
なお、本発明に係る類似ソースコード抽出方式は、修正を加えた箇所と類似したソースコード片を抽出することを一つの目的にしているが、利用目的はこれだけに限定されるものではなく、様々な目的のために適用することができる。
次に、本実施例に係る類似ソースコード抽出装置の構成について説明する。図3は、本実施例に係る類似ソースコード抽出装置の構成を示す機能ブロック図である。同図に示すように、類似ソースコード抽出装置100は、制御部200と、ユーザインターフェース部300と、記憶部400とを有する。
制御部200は、類似ソースコード抽出装置100を全体制御する制御部であり、比較元ソースコード片指定部210と、比較先ソースコード指定部220と、パラメータ指定部230と、パラメータ入出力部240と、ソースコード取得部250と、構文解析部260と、比較先ソースコード片抽出部270と、類似度計算部280と、結果出力部290とを有する。
比較元ソースコード片指定部210は、比較元ソースコード片選択画面を表示部310に表示し、比較の基準となるソースコード片について利用者からの指定を受け付ける処理部である。
図4は、比較元ソースコード片選択画面の一例を示すサンプル図である。利用者は、任意のソースコードを画面に表示させ、比較の基準となる部分を操作部320のマウス等により選択し、「選択」ボタンを押下する。これにより、この画面上で選択された部分が比較元ソースコード片指定部210により比較の基準となるソースコード片として受け付けられる。
比較先ソースコード指定部220は、比較先ソースコード選択画面を表示部310に表示し、比較対象となるソースコードの取得条件について利用者からの指定を受け付ける処理部である。
図5は、比較先ソースコード選択画面の一例を示すサンプル図である。利用者は、比較対象のソースコードを含むフォルダのパスを指定する。パスの指定に際しては、「参照」ボタンを押下してフォルダの階層構造をブラウズする画面を表示させ、この画面から希望するフォルダを選択することができる。デフォルトでは指定したフォルダのサブフォルダに含まれるソースコードも比較対象となるが、これらを比較対象外としたい場合には、「サブフォルダも対象にする」のチェックを外す。
また、この実施例におけるソフトウェアの開発プロジェクトにおいては、図1に示したようにソースコードを「制御コントローラ」、「固有処理」、「共通部品」という3階層化して管理しており、それぞれ階層に属するソースコードを階層ごとに定められた名前のサブフォルダに格納することになっている。デフォルトでは、これら3階層のソースコードはいずれも比較対象となるが、特定の階層のソースコードを対象外としたい場合には当該の階層のチェックを外す。
利用者が、比較対象となるソースコードの取得条件について必要な情報を設定し、「実行」ボタンを押下すると、比較先ソースコード指定部220によりこの情報が受け付けられる。
パラメータ指定部230は、パラメータ設定画面を表示部310に表示し、ソースコード片の類似判定処理をおこなうためのパラメータ情報について利用者からの指定を受け付ける処理部である。
図6は、パラメータ設定画面の一例を示すサンプル図である。利用者は、「データ項目」、「定数」、「関数呼び出し」、「文」、「式」ごとに「重み」と「丸め」の指定をおこなう。ここで、「データ項目」とは変数を指す。「定数」とは数値や文字定数などの定数を指す。「関数呼び出し」とは関数やメソッドの呼び出しを指す。「文」とは条件分岐やブロックなどの制御文もしくは制御構造を指す。また、「式」は演算子を指す。
「重み」は、比較元と比較先の相違を重み付けするためのパラメータで、0〜5の数値で指定する。5がデフォルトの値であり、数値が小さくなるほど類似判定において相違が小さく評価される。たとえば、変数名の違いを無視して比較元と比較先の類似判定をおこないたい場合には、「データ項目」の重みを0に設定することで目的が達成される。
「丸め」は、「データ項目」等の区分を変更するための所定のルールを指定する。たとえば、「データ項目」に「定数と同一視」というルールを設定した場合は、比較元では変数である項目が比較先では定数になっている場合であっても、これらは同一であるとみなされる。
また、利用者は、比較元と比較先の「重み」の指定をおこなう。この「重み」も0〜5の数値で指定する。5がデフォルトの値であり、数値が小さくなるほど類似判定において相違が小さく評価される。たとえば、比較先のみに存在する項目を無視して比較元と比較先の類似判定をおこないたい場合には、「比較先」の重みを0に設定すること目的が達成される。
利用者が、必要なパラメータ情報を設定し、「設定」ボタンを押下すると、パラメータ指定部230によりこの情報が受け付けられる。
なお、本実施例ではソースコードの構成要素を「データ項目」、「定数」、「関数呼び出し」、「文」、「式」のいずれかに分類して類似判定をおこなうことになっているが、本発明に係る類似ソースコード抽出方式は、必ずしもソースコードの構成要素をこの通りに分類する必要はなく他の体系で分類しても良い。
パラメータ入出力部240は、パラメータ設定画面にて入力されたパラメータ情報を再利用することを目的としてパラメータ記憶部420に記憶させ、また必要に応じてここから読み出しをおこなう処理部である。
図7は、パラメータ設定保存画面の一例を示すサンプル図である。この画面は、パラメータ設定画面において「設定保存」ボタンが押下された場合にパラメータ入出力部240が表示する画面である。利用者がこの画面で任意の名前を入力して「保存」ボタンを押下すると、パラメータ入出力部240は、パラメータ設定画面にて入力されたパラメータ情報にこの名前を付けてパラメータ記憶部420に記憶させる。
図8は、パラメータ設定選択画面の一例を示すサンプル図である。この画面は、パラメータ設定画面において「設定選択」ボタンが押下された場合にパラメータ入出力部240が表示する画面である。利用者がこの画面で保存済みのいずれかのパラメータ情報の名前を選択して「選択」ボタンを押下すると、パラメータ入出力部240は、パラメータ記憶部420から該当するパラメータ情報を読み出して、これをパラメータ設定画面に表示する。
ソースコード取得部250は、比較先ソースコード指定部220にて指定された取得条件に基づいて比較対象となるソースコードをソースコード記憶部410から取得する処理部である。具体的には、指定されたパスに存在するファイルのうち対象外とされたもの以外を1件ずつ取得し、これを構文解析部260に引き渡す処理をおこなう。
構文解析部260は、比較元ソースコード片指定部210で指定されたソースコード片と、ソースコード取得部250が取得したファイルに含まれる比較先のソースコードを構文解析し、構文木を作成する処理部である。
比較先ソースコード片抽出部270は、構文解析部260が作成した比較先のソースコードの構文木から比較元ソースコード片との類似比較の対象となる構文木を抽出する処理部である。本実施例における類似ソースコード抽出方式は、比較元となるソースコード片と類似するソースコード片を比較先のソースコードから抽出するものであるが、比較先のソースコードからどのようにしてソースコード片を抽出するかによって、類似のソースコード抽出の処理速度が大きく変動する。
図9は、本実施例にかかる比較先ソースコード片の抽出処理を説明するための説明図である。同図に示すように、比較元ソースコード片10と比較先ソースコード20をソースコード取得部250が構文解析することにより、比較元ソースコード片の構文木30と比較先ソースコードの構文木40が作成される。
比較元ソースコード片10は、if文からなるブロックであるため、ifを頂点とする構文木が作成される。比較先ソースコード20のある関数は、大きく分けて4つのブロックもしくは文からなり、4つの構文木が作成される。
比較先ソースコード片抽出部270は、比較先ソースコードから作成された構文木のうち、比較元ソースコード片の構文木のと同じ頂点をもつものを類似比較対象として抽出する。図9の場合、比較元ソースコード片の構文木30の頂点はifであるため、比較先ソースコードの構文木40のうち頂点がifである構文木が類似比較対象となる。
このように構文木の頂点を比較して類似判定の対象とするか否かを決定することにより、迅速に類似判定の対象となる構文木を抽出することができ、類似のソースコード抽出を高速におこなうことができる。なお、本発明に係る類似ソースコード抽出方式は、必ずしもここに示した比較先ソースコード片の抽出方式をもちいる必要はなく、他の抽出方式をもちいることもできる。
類似度計算部280は、比較元ソースコードから作成された構文木と比較先ソースコード片抽出部270が類似比較対象として抽出した構文木の一つを比較して類似度の計算をおこなう処理部である。図10は、本実施例に係るソースコードの類似度の算出処理を説明するための説明図である。
同図に示すように、類似度計算部280は、比較元ソースコード片の構文木30の構成要素を出現順に並べた配列50と、比較先ソースコード片の構文木42の構成要素を出現順に並べた配列60を作成する。そして、この2つの配列の要素を先頭から比較して同一か否かを判定し、要素の種類別に同一であった項目数と相違していた項目数とを集計する。
たとえば、配列50の先頭の要素と配列60の要素はいずれも制御文の”if”であるが、これは同一の「文」が1件あるものとしてカウントする。また、配列50の4番目の要素は変数の”x”であり、配列60の4番目の要素は定数の”1”であるが、これは比較元に相違する「データ項目」が1件あり、比較先に相違する「定数」が1件あるものとしてカウントする。
なお、パラメータ指定部230で何らかの丸めのルールが選択されていた場合は、そのルールを加味して同一か否かの判定をおこなう。
また、2つの構文木の各要素の同一性を判定するアルゴリズムとして以下のようなものが知られており、このようなアルゴリズムを用いて同一性の判定をおこなうようにしてもよい。(1)Sudarshan S. Chawathe, Anand Rajaraman, Hector Garcia-Molina, and Jenifer Widom. Change detection in hierarchically structured information. In Proceedings of the ACM SIGMOD International Conference on Management of Data, pp. 493-504,1966. (2)S. Chawathe, A. Rajaraman, H. Garcia-Molina, and J. Widom. Change detection in hierarchically structured information. Available in http://dbpubs.stanford.edu:8090/aux/index-en.html, 1955.
そして、このようにして集計した項目数を数式1に当てはめて類似度Rの計算をおこなう。
Figure 2006018693
ここで、iは、配列の要素の種類、すなわち、「データ項目」、「定数」、「関数呼び出し」、「文」、「式」を示す。Siは、同一と判定されたiの項目数を示す。Wiは、パラメータ指定部230で指定されたiの重みを示す。Doiは、相違すると判定された比較元のiの項目数を示す。Woiは、パラメータ指定部230で指定された比較元の重みを0〜1に圧縮した値を示す。すなわち、パラメータ指定部230で4として指定された重みは、0.8として適用する。Ddiは、相違すると判定された比較先のiの項目数を示す。Wdiは、パラメータ指定部230で指定された比較先の重みを0〜1に圧縮した値を示す。
結果出力部290は、類似度計算部280の計算結果を類似度が高い順に並び替えて出力する処理部である。図11は、出力結果の一例を示すサンプル図である。同図に示すように、出力結果は、ファイル名と関数名と行と類似度という4つの項目からなる。
ファイル名は、比較先のソースコード片を含むソースコードのファイル名を示す。関数名は、比較先のソースコード片を含む関数もしくはメソッドの名前を示す。行は、ソースコードにおける比較先のソースコード片の位置を行番号の範囲で表したものである。類似度は、類似度計算部280の計算結果を示す。
ユーザインターフェース部300は、利用者に対して情報を表示し、また、利用者からの指示を受け付ける装置であり、液晶装置等の表示装置からなる表示部310と、キーボードやマウス等から構成される操作部320とを有する。
記憶部400は、ソースコード記憶部410とパラメータ記憶部420とを有する。ソースコード記憶部410は、類似ソースコード片を抽出するソースコードを記憶する記憶部である。パラメータ記憶部420は、パラメータ指定部230で指定された各種パラメータを再利用可能なように保存しておく記憶部である。
次に、図3に示した類似ソースコード抽出装置100の処理手順について説明する。図12は、図3に示した類似ソースコード抽出装置100の処理手順を示すフローチャートである。
同図に示すように、まず、比較元ソースコード片指定部210を通して比較元となるソースコード片を取得し(ステップS101)、比較先ソースコード指定部220を通して比較先となるソースコードの取得条件を取得する(ステップS102)。また、パラメータ指定部230を通して類似判定のためのパラメータ情報も取得する(ステップS103)。
こうして処理に必要となる情報を全て取得したならば、構文解析部260が、比較元のソースコード片を構文解析し、比較元の構文木を作成する(ステップS104)。
そして、ソースコード取得部250が、ステップS102で取得した条件に合致するソースコードを一つ取得し(ステップS105)、構文解析部260が、これを構文解析して比較先ソースコードの構文木を作成する(ステップS106)。
そして、比較先ソースコード片抽出部270が、比較先ソースコードの構文木から頂点が比較元の構文木と同じものを一つ抜き出し(ステップS107)、類似度計算部280が、この抜き出された構文木と比較元の構文木を類似比較して別途説明する手順で類似度の計算をおこなう(ステップS108)。
比較先ソースコードの構文木に頂点が比較元と同じで未処理の構文木が残っている場合は(ステップS109否定)、ステップS107から処理を再開する。残っていない場合は(ステップS109肯定)、ステップS102で取得した条件に合致する未処理のソースコードが残っているか否かを確認する。ソースコードが残っている場合は(ステップS110否定)、ステップS105から処理を再開する。
ソースコードが残っていない場合は(ステップS110肯定)、結果出力部290が、類似度計算部280の計算結果を類似度が高い順に並び替え(ステップS111)、これを出力して処理が完了する(ステップS112)。
次に、図12に示した類似度計算処理の処理手順について説明する。図13は、図12に示した類似度計算処理の処理手順を示すフローチャートである。
類似度計算部280は、比較元の構文木の要素を出現順にならべた配列を作成する(ステップS201)。比較先の構文木についても同様に、要素を出現順にならべた配列を作成する(S202)。そして、この2つの配列を比較し(ステップS203)、同一の項目数と相違している項目数を項目の種類別に集計する(ステップS204)。そして、この集計結果を数式1に当てはめて類似度を算出する(ステップS205)。
上述してきたように、本実施例では、ソースコードの任意の部分を比較の基準とし、これと類似するソースコード片をソースコード群から抽出するように構成したので、総当りで類似するソースコード片を抽出する場合に比べて高速に処理結果をえることができる。
実施例1においては、ソースコードの任意の部分を比較の基準として類似のソースコード片を抽出する例について説明したが、この例に示した方式では基準となるソースコード片が複数ある場合には処理を何度も実行することが必要になり、効率的に作業をおこなうことができない。たとえば、複数のソースコードの不具合を修正し、これらの修正箇所のいずれかに類似するソースコード片を抽出したい場合などがこれに該当する。
このような場合、任意のフォルダに含まれるソースコードを比較元としてこれと類似するソースコード片を他のソースコード群から抽出することができれば便利である。この方式は、実施例1で説明した方式よりも類似ソースコード片の抽出に時間を要することになるが、全てのソースコードを総当りで調査する従来の方式よりも高速である。
まず、本実施例に係る類似ソースコード抽出装置の構成について説明する。図14は、本実施例に係る類似ソースコード抽出装置の構成を示す機能ブロック図である。ここでは、説明が重複するため、実施例1と異なる部分についてのみ説明することとする。
同図に示すように、類似ソースコード抽出装置101は、制御部201と、ユーザインターフェース部300と、記憶部400とを有する。
制御部201は、類似ソースコード抽出装置101を全体制御する制御部であり、ソースコード指定部221と、パラメータ指定部230と、パラメータ入出力部240と、ソースコード取得部251と、構文解析部260と、処理ブロック抽出部271と、類似度計算部280と、結果出力部290とを有する。
ソースコード指定部221は、ソースコード選択画面を表示部310に表示し、比較元と比較先のソースコードの取得条件について利用者からの指定を受け付ける処理部である。
図15は、ソースコード選択画面の一例を示すサンプル図である。この画面は、実施例1において図5の比較先ソースコード選択画面として示した画面に項目を追加し、比較先のソースコードの取得条件と同様に比較元のソースコードの取得条件も指定できるようにしたものである。
すなわち、利用者は、比較先となるソースコードを含むフォルダのパスを指定することができ、そのフォルダのサブフォルダに含まれるソースコードを比較対象外とするよう指定することができる。また、3階層化して管理されているソースコードのうち特定の階層に含まれるソースコードを比較対象外とするよう指定することもできる。そして、比較元となるソースコードについても同様の取得条件を指定することができる。
なお、比較元については、ソースコードを含むフォルダのパスではなく、ソースコードそのもののパスを指定できるようにしてもよい。
ソースコード取得部251は、ソースコード指定部221にて指定された取得条件に基づいて比較元および比較先となるソースコードをソースコード記憶部410から取得する処理部である。
構文解析部260は、ソースコードを構文解析して構文木を作成するという機能の上では実施例1と同様であるが、比較元のソースコードの解析においてソースコード片ではなくソースコード全体を解析する点が異なる。
処理ブロック抽出部271は、構文解析部260が作成した比較元のソースコードの構文木と比較先ソースコードの構文木から類似比較をおこなう部分を抽出する処理部である。具体的には、処理ブロック抽出部271は、比較元のソースコードの構文木と比較先ソースコードの構文木から関数を単位にして構成要素を抽出する。
本実施例における類似ソースコード抽出方式においては、比較元のソースコード片と比較先のソースコード片の大きさを揃えるために関数単位で類似判定をおこなう。文単位やブロック単位のような小さな単位で比較をおこなうと類似比較の処理回数が増えて処理速度が低下し、また類似するソースコード片が多数出力されてしまい利用者が対応しきれなくなる可能性があるためである。
結果出力部290は、類似度計算部280の計算結果を類似度が高い順に並び替えて出力する処理部である。図16は、出力結果の一例を示すサンプル図である。同図に示すように、出力結果は、比較元のファイル名と関数名と行、比較先のファイル名と関数名と行、および類似度という7つの項目からなる。
ファイル名は、ソースコード片を含むソースコードのファイル名を示す。関数名は、ソースコード片を含む関数もしくはメソッドの名前を示す。行は、ソースコードにおけるソースコード片の位置を行番号の範囲で表したものである。類似度は、類似度計算部280の計算結果を示す。
次に、図14に示した類似ソースコード抽出装置101の処理手順について説明する。図17は、図14に示した類似ソースコード抽出装置101の処理手順を示すフローチャートである。
同図に示すように、まず、比較先ソースコード指定部221を通して比較元となるソースコードと比較先となるソースコードの取得条件を取得する(ステップS301)。また、パラメータ指定部230を通して類似判定のためのパラメータ情報も取得する(ステップS302)。
そして、ソースコード取得部251が、ステップS301で取得した条件に合致する比較元のソースコードを一つ取得し(ステップS303)、構文解析部260が、これを構文解析して比較元ソースコードの構文木を作成する(ステップS304)。
こうして作成された比較元ソースコードの構文木から、処理ブロック抽出部271が一つの関数の構成部分を抽出する(ステップS305)。
そして、ソースコード取得部251が、ステップS301で取得した条件に合致する比較先のソースコードを一つ取得し(ステップS306)、構文解析部260が、これを構文解析して比較先ソースコードの構文木を作成する(ステップS307)。
こうして作成された比較先ソースコードの構文木から、処理ブロック抽出部271が一つの関数の構成部分を抽出する(ステップS308)。
そして、類似度計算部280が、ステップS305で抽出された比較元の構文木の関数部分とステップS308で抽出された比較先の構文木の関数部分とを類似比較して図13で説明した手順で類似度の計算をおこなう(ステップS309)。
比較先ソースコードの構文木に未処理の関数部分が残っている場合は(ステップS310否定)、ステップS308から処理を再開する。残っていない場合は(ステップS310肯定)、ステップS301で取得した条件に合致する比較先のソースコードに現在の比較元のソースファイルと類似比較をおこなっていないものが残っているか否かを確認する。類似比較をおこなっていない比較先のソースコードが残っている場合は(ステップS311否定)、ステップS306から処理を再開する。
類似比較をおこなっていない比較先のソースコードが残っていない場合は(ステップS311肯定)、比較元ソースコードの構文木に未処理の関数部分が残っているか否かを確認する。未処理の関数部分が残っている場合は(ステップS312否定)、ステップS305から処理を再開する。未処理の関数部分が残っていない場合は(ステップS312肯定)、ステップS301で取得した条件に合致する未処理の比較元のソースコードが残っているか否かを確認する。未処理の比較元のソースコードが残っている場合は(ステップS313否定)、ステップS303から処理を再開する。
未処理の比較元のソースコードが残っていない場合は(ステップS313肯定)、結果出力部290が、類似度計算部280の計算結果を類似度が高い順に並び替え(ステップS314)、これを出力して処理が完了する(ステップS315)。
上述してきたように、本実施例では、任意のフォルダに含まれるソースコードを比較の基準とし、これと類似するソースコード片をソースコード群から抽出するように構成したので、複数のソースコード片を基準として類似するソースコード片の抽出をおこなうことができ、また、総当りで類似するソースコード片を抽出する場合に比べて高速に処理結果をえることができる。
(付記1)所定のプログラム言語で記述されたソースコードから類似のソースコード片を抽出する類似ソースコード抽出プログラムであって、
類似比較の基本となる比較元ソースコード片の指定を受け付ける比較元ソースコード片指定手順と、
前記比較元ソースコード片と類似するソースコード片が抽出される比較先ソースコード群の指定を受け付ける比較先ソースコード群指定手順と、
前記比較元ソースコード片と類似比較される比較先ソースコード片を前記比較先ソースコード群から抽出する比較先ソースコード片抽出手順と、
前記比較元ソースコード片と前記比較先ソースコード片との類似比較をおこない、類似の度合いを算出する類似度計算手順と、
前記類似度計算手順により算出された類似の度合いを一覧出力する結果出力手段と
をコンピュータに実行させることを特徴とする類似ソースコード抽出プログラム。
(付記2)所定のプログラム言語で記述されたソースコードから類似のソースコード片を抽出する類似ソースコード抽出プログラムであって、
類似比較の基本となる比較元ソースコードの指定を受け付ける比較元ソースコード指定手順と、
前記比較元ソースコードと類似するソースコード片が抽出される比較先ソースコード群の指定を受け付ける比較先ソースコード群指定手順と、
前記比較元ソースコードから比較元ソースコード片を抽出し、前記比較先ソースコード群から前記比較元ソースコード片と類似比較する比較先ソースコード片を抽出するソースコード片抽出手順と、
前記ソースコード片抽出手順により抽出された前記比較元ソースコード片と前記比較先ソースコード片との類似比較をおこない、類似の度合いを算出する類似度計算手順と、
前記類似度計算手順により算出された類似の度合いを一覧出力する結果出力手段と
をコンピュータに実行させることを特徴とする類似ソースコード抽出プログラム。
(付記3)所定のプログラム言語で記述されたソースコードから類似のソースコード片を抽出する類似ソースコード抽出プログラムであって、
類似比較の基本となる比較元ソースコード群の指定を受け付ける比較元ソースコード群指定手順と、
前記比較元ソースコード群と類似するソースコード片が抽出される比較先ソースコード群の指定を受け付ける比較先ソースコード群指定手順と、
前記比較元ソースコード群から比較元ソースコード片を抽出し、前記比較先ソースコード群から前記比較元ソースコード片と類似比較する比較先ソースコード片を抽出するソースコード片抽出手順と、
前記ソースコード片抽出手順により抽出された前記比較元ソースコード片と前記比較先ソースコード片との類似比較をおこない、類似の度合いを算出する類似度計算手順と、
前記類似度計算手順により算出された類似の度合いを一覧出力する結果出力手段と
をコンピュータに実行させることを特徴とする類似ソースコード抽出プログラム。
(付記4)前記類似度計算手順における類似度合いの算出において用いられるパラメータ情報の指定を受け付けるパラメータ指定手順をさらにコンピュータに実行させ、
前記類似度計算手順は、前記パラメータ指定手順にて受け付けた前記パラメータを加味して類義度合いの算出をおこなうことを特徴とする付記1、2または3に記載の類似ソースコード抽出プログラム。
(付記5)前記パラメータ指定手順にて受け付けた前記パラメータ情報を任意の名前と組み合わせて記憶手段に記憶するパラメータ記録手順をさらにコンピュータに実行させることを特徴とする付記4に記載の類似ソースコード抽出プログラム。
(付記6)前記パラメータ記録手順により記憶手段に記憶された前記パラメータ情報を読み出し、これを前記パラメータ指定手順に引き渡すパラメータ読出し手順をさらにコンピュータに実行させることを特徴とする付記5に記載の類似ソースコード抽出プログラム。
(付記7)前記類似度計算手順は、前記比較元ソースコード片と前記比較先ソースコード片とを構文解析して構成要素に分解し、構成要素の種類毎の類似・相違状況に構成要素の種類毎に定められた重みを加味して類似度合いの計算をおこなうことを特徴とする付記1〜6のいずれか一つに記載の類似ソースコード抽出プログラム。
(付記8)前記パラメータ指定手順は、前記構成要素の種類毎に定められた重みの指定を受け付けることを特徴とする付記7に記載の類似ソースコード抽出プログラム。
(付記9)前記類似度計算手順は、前記比較元ソースコード片と前記比較先ソースコード片とを構文解析して構成要素に分解し、構成要素の同一性を判定する所定のルールに基づいて構成要素の種類毎の類似・相違状況を取得し、類似度合いの計算をおこなうことを特徴とする付記1〜8のいずれか一つに記載の類似ソースコード抽出プログラム。
(付記10)前記パラメータ指定手順は、前記構成要素の同一性を判定する所定のルールの指定を受け付けることを特徴とする付記9に記載の類似ソースコード抽出プログラム。
(付記11)前記類似度計算手順は、前記比較元ソースコード片と前記比較先ソースコード片とを構文解析して構成要素に分解し、前記比較元ソースコード片側と前記比較先ソースコード片側それぞれの類似・相違状況に前記比較元ソースコード片側と前記比較先ソースコード片側それぞれに定められた重みを加味して類似度合いの計算をおこなうことを特徴とする付記1〜10のいずれか一つに記載の類似ソースコード抽出プログラム。
(付記12)前記パラメータ指定手順は、前記比較元ソースコード片側と前記比較先ソースコード片側それぞれに定められた重みの指定を受け付けることを特徴とする付記11に記載の類似ソースコード抽出プログラム。
(付記13)前記結果出力手順は、前記類似度計算手順が算出した類似の度合いを類似度が高い順に出力することを特徴とする付記1〜12のいずれか一つに記載の類似ソースコード抽出プログラム。
(付記14)前記結果出力手順は、前記類似度計算手順が算出した類似の度合いとともに当該の類似の度合いの算出対象となったソースコード片を含むソースコードのファイル名とこのソースコードにおける当該のソースコードの位置情報とを出力することを特徴とする付記1〜13のいずれか一つに記載の類似ソースコード抽出プログラム。
(付記15)所定のプログラム言語で記述されたソースコードから類似のソースコード片を抽出する類似ソースコード抽出装置であって、
類似比較の基本となる比較元ソースコード片の指定を受け付ける比較元ソースコード片指定手段と、
前記比較元ソースコード片と類似するソースコード片が抽出される比較先ソースコード群の指定を受け付ける比較先ソースコード群指定手段と、
前記比較元ソースコード片と類似比較される比較先ソースコード片を前記比較先ソースコード群から抽出する比較先ソースコード片抽出手段と、
前記比較元ソースコード片と前記比較先ソースコード片との類似比較をおこない、類似の度合いを算出する類似度計算手段と、
前記類似度計算手段により算出された類似の度合いを一覧出力する結果出力手段と
を備えたことを特徴とする類似ソースコード抽出装置。
(付記16)所定のプログラム言語で記述されたソースコードから類似のソースコード片を抽出する類似ソースコード抽出装置であって、
類似比較の基本となる比較元ソースコードの指定を受け付ける比較元ソースコード指定手段と、
前記比較元ソースコードと類似するソースコード片が抽出される比較先ソースコード群の指定を受け付ける比較先ソースコード群指定手段と、
前記比較元ソースコードから比較元ソースコード片を抽出し、前記比較先ソースコード群から前記比較元ソースコード片と類似比較する比較先ソースコード片を抽出するソースコード片抽出手段と、
前記ソースコード片抽出手段により抽出された前記比較元ソースコード片と前記比較先ソースコード片との類似比較をおこない、類似の度合いを算出する類似度計算手段と、
前記類似度計算手段により算出された類似の度合いを一覧出力する結果出力手段と
を備えたことを特徴とする類似ソースコード抽出装置。
(付記17)所定のプログラム言語で記述されたソースコードから類似のソースコード片を抽出する類似ソースコード抽出装置であって、
類似比較の基本となる比較元ソースコード群の指定を受け付ける比較元ソースコード群指定手段と、
前記比較元ソースコード群と類似するソースコード片が抽出される比較先ソースコード群の指定を受け付ける比較先ソースコード群指定手段と、
前記比較元ソースコード群から比較元ソースコード片を抽出し、前記比較先ソースコード群から前記比較元ソースコード片と類似比較する比較先ソースコード片を抽出するソースコード片抽出手段と、
前記ソースコード片抽出手段により抽出された前記比較元ソースコード片と前記比較先ソースコード片との類似比較をおこない、類似の度合いを算出する類似度計算手段と、
前記類似度計算手段により算出された類似の度合いを一覧出力する結果出力手段と
を備えたことを特徴とする類似ソースコード抽出装置。
(付記18)所定のプログラム言語で記述されたソースコードから類似のソースコード片を抽出する類似ソースコード抽出方法であって、
類似比較の基本となる比較元ソースコード片の指定を受け付ける比較元ソースコード片指定工程と、
前記比較元ソースコード片と類似するソースコード片が抽出される比較先ソースコード群の指定を受け付ける比較先ソースコード群指定工程と、
前記比較元ソースコード片と類似比較される比較先ソースコード片を前記比較先ソースコード群から抽出する比較先ソースコード片抽出工程と、
前記比較元ソースコード片と前記比較先ソースコード片との類似比較をおこない、類似の度合いを算出する類似度計算工程と、
前記類似度計算工程により算出された類似の度合いを一覧出力する結果出力手段と
を含んだことを特徴とする類似ソースコード抽出方法。
(付記19)所定のプログラム言語で記述されたソースコードから類似のソースコード片を抽出する類似ソースコード抽出方法であって、
類似比較の基本となる比較元ソースコードの指定を受け付ける比較元ソースコード指定工程と、
前記比較元ソースコードと類似するソースコード片が抽出される比較先ソースコード群の指定を受け付ける比較先ソースコード群指定工程と、
前記比較元ソースコードから比較元ソースコード片を抽出し、前記比較先ソースコード群から前記比較元ソースコード片と類似比較する比較先ソースコード片を抽出するソースコード片抽出工程と、
前記ソースコード片抽出工程により抽出された前記比較元ソースコード片と前記比較先ソースコード片との類似比較をおこない、類似の度合いを算出する類似度計算工程と、
前記類似度計算工程により算出された類似の度合いを一覧出力する結果出力手段と
を含んだことを特徴とする類似ソースコード抽出方法。
(付記20)所定のプログラム言語で記述されたソースコードから類似のソースコード片を抽出する類似ソースコード抽出方法であって、
類似比較の基本となる比較元ソースコード群の指定を受け付ける比較元ソースコード群指定工程と、
前記比較元ソースコード群と類似するソースコード片が抽出される比較先ソースコード群の指定を受け付ける比較先ソースコード群指定工程と、
前記比較元ソースコード群から比較元ソースコード片を抽出し、前記比較先ソースコード群から前記比較元ソースコード片と類似比較する比較先ソースコード片を抽出するソースコード片抽出工程と、
前記ソースコード片抽出工程により抽出された前記比較元ソースコード片と前記比較先ソースコード片との類似比較をおこない、類似の度合いを算出する類似度計算工程と、
前記類似度計算工程により算出された類似の度合いを一覧出力する結果出力手段と
を含んだことを特徴とする類似ソースコード抽出方法。
以上のように、本発明にかかる類似ソースコード抽出プログラム、類似ソースコード抽出装置および類似ソースコード抽出方法は、所定のプログラム言語で記述されたソースファイルに含まれる類似のソースコード片の抽出に有用であり、特に、類似のソースコード片の抽出を高速におこなうことが必要な場合に適している。
本実施例に係る類似ソースコード抽出方式の背景を説明するための説明図である。 従来の類似ソースコード抽出方式の概要を説明するための説明図である。 本実施例に係る類似ソースコード抽出方式の概要を説明するための説明図である。 本実施例に係る類似ソースコード抽出装置の構成を示す機能ブロック図である。 比較元ソースコード片選択画面の一例を示すサンプル図である。 比較先ソースコード選択画面の一例を示すサンプル図である。 パラメータ設定画面の一例を示すサンプル図である。 パラメータ設定保存画面の一例を示すサンプル図である。 パラメータ設定選択画面の一例を示すサンプル図である。 本実施例にかかる比較先ソースコード片の抽出処理を説明するための説明図である。 本実施例に係るソースコードの類似度の算出処理を説明するための説明図である。 出力結果の一例を示すサンプル図である。 図3に示した類似ソースコード抽出装置の処理手順を示すフローチャートである。 図12に示した類似度計算処理の処理手順を示すフローチャートである。 本実施例に係る類似ソースコード抽出装置の構成を示す機能ブロック図である。 ソースコード選択画面の一例を示すサンプル図である。 出力結果の一例を示すサンプル図である。 図14に示した類似ソースコード抽出装置の処理手順を示すフローチャートである。
符号の説明
10 比較元ソースコード片
20 比較先ソースコード
30 比較元ソースコード片の構文木
40 比較先ソースコードの構文木
41 比較先ソースコード片の構文木
42 比較先ソースコード片の構文木
43 比較先ソースコード片の構文木
44 比較先ソースコード片の構文木
50 配列
60 配列
70 同一項目と相違項目の集計結果
100 類似ソースコード抽出装置
101 類似ソースコード抽出装置
200 制御部
201 制御部
210 比較元ソースコード片指定部
220 比較先ソースコード指定部
221 ソースコード指定部
230 パラメータ指定部
240 パラメータ入出力部
250 ソースコード取得部
251 ソースコード取得部
260 構文解析部
270 比較先ソースコード片抽出部
271 処理ブロック抽出部
280 類似度計算部
290 結果出力部
300 ユーザインターフェース部
310 表示部
320 操作部
400 記憶部
410 ソースコード記憶部
420 パラメータ記憶部

Claims (10)

  1. 所定のプログラム言語で記述されたソースコードから類似のソースコード片を抽出する類似ソースコード抽出プログラムであって、
    類似比較の基本となる比較元ソースコード片の指定を受け付ける比較元ソースコード片指定手順と、
    前記比較元ソースコード片と類似するソースコード片が抽出される比較先ソースコード群の指定を受け付ける比較先ソースコード群指定手順と、
    前記比較元ソースコード片と類似比較される比較先ソースコード片を前記比較先ソースコード群から抽出する比較先ソースコード片抽出手順と、
    前記比較元ソースコード片と前記比較先ソースコード片との類似比較をおこない、類似の度合いを算出する類似度計算手順と、
    前記類似度計算手順により算出された類似の度合いを一覧出力する結果出力手段と
    をコンピュータに実行させることを特徴とする類似ソースコード抽出プログラム。
  2. 所定のプログラム言語で記述されたソースコードから類似のソースコード片を抽出する類似ソースコード抽出プログラムであって、
    類似比較の基本となる比較元ソースコードの指定を受け付ける比較元ソースコード指定手順と、
    前記比較元ソースコードと類似するソースコード片が抽出される比較先ソースコード群の指定を受け付ける比較先ソースコード群指定手順と、
    前記比較元ソースコードから比較元ソースコード片を抽出し、前記比較先ソースコード群から前記比較元ソースコード片と類似比較する比較先ソースコード片を抽出するソースコード片抽出手順と、
    前記ソースコード片抽出手順により抽出された前記比較元ソースコード片と前記比較先ソースコード片との類似比較をおこない、類似の度合いを算出する類似度計算手順と、
    前記類似度計算手順により算出された類似の度合いを一覧出力する結果出力手段と
    をコンピュータに実行させることを特徴とする類似ソースコード抽出プログラム。
  3. 所定のプログラム言語で記述されたソースコードから類似のソースコード片を抽出する類似ソースコード抽出プログラムであって、
    類似比較の基本となる比較元ソースコード群の指定を受け付ける比較元ソースコード群指定手順と、
    前記比較元ソースコード群と類似するソースコード片が抽出される比較先ソースコード群の指定を受け付ける比較先ソースコード群指定手順と、
    前記比較元ソースコード群から比較元ソースコード片を抽出し、前記比較先ソースコード群から前記比較元ソースコード片と類似比較する比較先ソースコード片を抽出するソースコード片抽出手順と、
    前記ソースコード片抽出手順により抽出された前記比較元ソースコード片と前記比較先ソースコード片との類似比較をおこない、類似の度合いを算出する類似度計算手順と、
    前記類似度計算手順により算出された類似の度合いを一覧出力する結果出力手段と
    をコンピュータに実行させることを特徴とする類似ソースコード抽出プログラム。
  4. 前記類似度計算手順における類似度合いの算出において用いられるパラメータ情報の指定を受け付けるパラメータ指定手順をさらにコンピュータに実行させ、
    前記類似度計算手順は、前記パラメータ指定手順にて受け付けた前記パラメータを加味して類義度合いの算出をおこなうことを特徴とする請求項1、2または3に記載の類似ソースコード抽出プログラム。
  5. 前記パラメータ指定手順にて受け付けた前記パラメータ情報を任意の名前と組み合わせて記憶手段に記憶するパラメータ記録手順をさらにコンピュータに実行させることを特徴とする請求項4に記載の類似ソースコード抽出プログラム。
  6. 前記パラメータ記録手順により記憶手段に記憶された前記パラメータ情報を読み出し、これを前記パラメータ指定手順に引き渡すパラメータ読出し手順をさらにコンピュータに実行させることを特徴とする付請求項5に記載の類似ソースコード抽出プログラム。
  7. 前記類似度計算手順は、前記比較元ソースコード片と前記比較先ソースコード片とを構文解析して構成要素に分解し、構成要素の種類毎の類似・相違状況に構成要素の種類毎に定められた重みを加味して類似度合いの計算をおこなうことを特徴とする請求項1〜6のいずれか一つに記載の類似ソースコード抽出プログラム。
  8. 前記パラメータ指定手順は、前記構成要素の種類毎に定められた重みの指定を受け付けることを特徴とする請求項7に記載の類似ソースコード抽出プログラム。
  9. 所定のプログラム言語で記述されたソースコードから類似のソースコード片を抽出する類似ソースコード抽出装置であって、
    類似比較の基本となる比較元ソースコード片の指定を受け付ける比較元ソースコード片指定手段と、
    前記比較元ソースコード片と類似するソースコード片が抽出される比較先ソースコード群の指定を受け付ける比較先ソースコード群指定手段と、
    前記比較元ソースコード片と類似比較される比較先ソースコード片を前記比較先ソースコード群から抽出する比較先ソースコード片抽出手段と、
    前記比較元ソースコード片と前記比較先ソースコード片との類似比較をおこない、類似の度合いを算出する類似度計算手段と、
    前記類似度計算手段により算出された類似の度合いを一覧出力する結果出力手段と
    を備えたことを特徴とする類似ソースコード抽出装置。
  10. 所定のプログラム言語で記述されたソースコードから類似のソースコード片を抽出する類似ソースコード抽出方法であって、
    類似比較の基本となる比較元ソースコード片の指定を受け付ける比較元ソースコード片指定工程と、
    前記比較元ソースコード片と類似するソースコード片が抽出される比較先ソースコード群の指定を受け付ける比較先ソースコード群指定工程と、
    前記比較元ソースコード片と類似比較される比較先ソースコード片を前記比較先ソースコード群から抽出する比較先ソースコード片抽出工程と、
    前記比較元ソースコード片と前記比較先ソースコード片との類似比較をおこない、類似の度合いを算出する類似度計算工程と、
    前記類似度計算工程により算出された類似の度合いを一覧出力する結果出力手段と
    を含んだことを特徴とする類似ソースコード抽出方法。
JP2004197317A 2004-07-02 2004-07-02 類似ソースコード抽出プログラム、類似ソースコード抽出装置および類似ソースコード抽出方法 Pending JP2006018693A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2004197317A JP2006018693A (ja) 2004-07-02 2004-07-02 類似ソースコード抽出プログラム、類似ソースコード抽出装置および類似ソースコード抽出方法
US11/090,275 US20060004528A1 (en) 2004-07-02 2005-03-28 Apparatus and method for extracting similar source code

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004197317A JP2006018693A (ja) 2004-07-02 2004-07-02 類似ソースコード抽出プログラム、類似ソースコード抽出装置および類似ソースコード抽出方法

Publications (1)

Publication Number Publication Date
JP2006018693A true JP2006018693A (ja) 2006-01-19

Family

ID=35515087

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004197317A Pending JP2006018693A (ja) 2004-07-02 2004-07-02 類似ソースコード抽出プログラム、類似ソースコード抽出装置および類似ソースコード抽出方法

Country Status (2)

Country Link
US (1) US20060004528A1 (ja)
JP (1) JP2006018693A (ja)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008046695A (ja) * 2006-08-11 2008-02-28 Kobe Univ 類似度評価プログラム、類似度評価装置及び類似度評価方法
JP2012164211A (ja) * 2011-02-08 2012-08-30 Hitachi Ltd ソフトウェアの類似性評価方法
JP2012194945A (ja) * 2011-03-18 2012-10-11 Fujitsu Ltd 管理プログラム,管理方法および管理装置
JP2013218509A (ja) * 2012-04-09 2013-10-24 Yachiyo Industry Co Ltd プログラム適合判定装置
JP2013546090A (ja) * 2010-12-15 2013-12-26 マイクロソフト コーポレーション コードクローン検出を用いたインテリジェントコード差分処理
JP2014153777A (ja) * 2013-02-05 2014-08-25 Tokyo Kogei Univ ソースコード検査装置
WO2014157056A1 (ja) * 2013-03-29 2014-10-02 Necソリューションイノベータ株式会社 ソースプログラム解析システム、ソースプログラム解析方法およびプログラムを記録した記録媒体
WO2015015622A1 (ja) * 2013-08-01 2015-02-05 松崎 務 装置及びプログラム
JP5846658B1 (ja) * 2014-07-25 2016-01-20 石田 伸一 テキスト比較装置、テキスト比較プログラム及びテキスト比較方法
WO2017187651A1 (ja) * 2016-04-26 2017-11-02 三菱電機株式会社 静観候補特定装置、静観候補特定方法及び静観候補特定プログラム
KR101876688B1 (ko) * 2016-12-27 2018-07-10 엘에스웨어(주) 오픈 소스 프로젝트의 메타 데이터를 제공하기 위한 시스템 및 그 방법
WO2020049622A1 (ja) * 2018-09-03 2020-03-12 日本電気株式会社 情報処理装置、分析システム、分析方法及び分析プログラムが格納された非一時的なコンピュータ可読媒体
WO2020170401A1 (ja) * 2019-02-21 2020-08-27 三菱電機株式会社 情報処理装置、情報処理方法及び情報処理プログラム
WO2022034919A1 (ja) * 2020-08-13 2022-02-17 株式会社Sider 情報処理装置、情報処理方法、プログラム及び情報処理システム

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005301859A (ja) * 2004-04-15 2005-10-27 Fujitsu Ltd コード検索プログラム及びコード検索装置
US8290962B1 (en) * 2005-09-28 2012-10-16 Google Inc. Determining the relationship between source code bases
JP4740060B2 (ja) * 2006-07-31 2011-08-03 富士通株式会社 重複データ検出プログラム、重複データ検出方法および重複データ検出装置
US9298427B2 (en) * 2010-01-06 2016-03-29 Microsoft Technology Licensing, Llc. Creating inferred symbols from code usage
US9110769B2 (en) * 2010-04-01 2015-08-18 Microsoft Technology Licensing, Llc Code-clone detection and analysis
US8819042B2 (en) * 2010-04-23 2014-08-26 Bank Of America Corporation Enhanced data comparison tool
US9053296B2 (en) * 2010-08-28 2015-06-09 Software Analysis And Forensic Engineering Corporation Detecting plagiarism in computer markup language files
US20120159434A1 (en) * 2010-12-20 2012-06-21 Microsoft Corporation Code clone notification and architectural change visualization
US8990183B2 (en) * 2012-06-06 2015-03-24 Microsoft Technology Licensing, Llc Deep application crawling
US9323923B2 (en) * 2012-06-19 2016-04-26 Deja Vu Security, Llc Code repository intrusion detection
US10459704B2 (en) * 2015-02-10 2019-10-29 The Trustees Of Columbia University In The City Of New York Code relatives detection
US10095734B2 (en) 2015-06-10 2018-10-09 International Business Machines Corporation Source code search engine
JP2017010476A (ja) * 2015-06-26 2017-01-12 三菱電機株式会社 類似判定装置、類似判定方法及び類似判定プログラム
US10430437B2 (en) 2017-02-08 2019-10-01 Bank Of America Corporation Automated archival partitioning and synchronization on heterogeneous data systems
US10977005B2 (en) * 2017-06-14 2021-04-13 International Business Machines Corporation Congnitive development of DevOps pipeline
US10664248B2 (en) * 2018-07-16 2020-05-26 Servicenow, Inc. Systems and methods for comparing computer scripts
US11416245B2 (en) 2019-12-04 2022-08-16 At&T Intellectual Property I, L.P. System and method for syntax comparison and analysis of software code
CN117461023A (zh) * 2020-12-28 2024-01-26 坦珀***股份有限公司 从通用规范为许多编程语言产生惯用软件文档

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000076053A (ja) * 1998-09-01 2000-03-14 Hitachi Software Eng Co Ltd 文字列検索表示装置
JP2001125783A (ja) * 1999-10-26 2001-05-11 Fujitsu Ltd 同種命令群抽出方法および同種命令群抽出装置
JP2002132544A (ja) * 2000-10-25 2002-05-10 Hitachi Ltd プログラム変数情報出力方式
JP2003228499A (ja) * 2002-02-04 2003-08-15 Toshiba Corp 構成要素分類方法、実装多重度評価方法、実装多重コード抽出方法、同時変更対象箇所抽出方法、クラス階層再構成方法、およびプログラム
JP2003280903A (ja) * 2002-03-26 2003-10-03 Hitachi Software Eng Co Ltd ソースプログラム比較情報生成システム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5953006A (en) * 1992-03-18 1999-09-14 Lucent Technologies Inc. Methods and apparatus for detecting and displaying similarities in large data sets
US7503035B2 (en) * 2003-11-25 2009-03-10 Software Analysis And Forensic Engineering Corp. Software tool for detecting plagiarism in computer source code
JP2005301859A (ja) * 2004-04-15 2005-10-27 Fujitsu Ltd コード検索プログラム及びコード検索装置
US7392471B1 (en) * 2004-07-28 2008-06-24 Jp Morgan Chase Bank System and method for comparing extensible markup language (XML) documents

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000076053A (ja) * 1998-09-01 2000-03-14 Hitachi Software Eng Co Ltd 文字列検索表示装置
JP2001125783A (ja) * 1999-10-26 2001-05-11 Fujitsu Ltd 同種命令群抽出方法および同種命令群抽出装置
JP2002132544A (ja) * 2000-10-25 2002-05-10 Hitachi Ltd プログラム変数情報出力方式
JP2003228499A (ja) * 2002-02-04 2003-08-15 Toshiba Corp 構成要素分類方法、実装多重度評価方法、実装多重コード抽出方法、同時変更対象箇所抽出方法、クラス階層再構成方法、およびプログラム
JP2003280903A (ja) * 2002-03-26 2003-10-03 Hitachi Software Eng Co Ltd ソースプログラム比較情報生成システム

Cited By (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4560608B2 (ja) * 2006-08-11 2010-10-13 国立大学法人神戸大学 類似度評価プログラム、類似度評価装置及び類似度評価方法
JP2008046695A (ja) * 2006-08-11 2008-02-28 Kobe Univ 類似度評価プログラム、類似度評価装置及び類似度評価方法
KR101732764B1 (ko) * 2010-12-15 2017-05-04 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 코드 클론 검출을 이용하는 지능형 코드 디퍼런싱을 수행하는 방법 및 시스템
JP2013546090A (ja) * 2010-12-15 2013-12-26 マイクロソフト コーポレーション コードクローン検出を用いたインテリジェントコード差分処理
JP2012164211A (ja) * 2011-02-08 2012-08-30 Hitachi Ltd ソフトウェアの類似性評価方法
JP2012194945A (ja) * 2011-03-18 2012-10-11 Fujitsu Ltd 管理プログラム,管理方法および管理装置
JP2013218509A (ja) * 2012-04-09 2013-10-24 Yachiyo Industry Co Ltd プログラム適合判定装置
JP2014153777A (ja) * 2013-02-05 2014-08-25 Tokyo Kogei Univ ソースコード検査装置
US9880834B2 (en) 2013-03-29 2018-01-30 Nec Solution Innovators, Ltd. Source program analysis system, source program analysis method, and recording medium on which program is recorded
JP2014199569A (ja) * 2013-03-29 2014-10-23 Necソリューションイノベータ株式会社 ソースプログラム解析システム、ソースプログラム解析方法およびプログラム
WO2014157056A1 (ja) * 2013-03-29 2014-10-02 Necソリューションイノベータ株式会社 ソースプログラム解析システム、ソースプログラム解析方法およびプログラムを記録した記録媒体
WO2015015622A1 (ja) * 2013-08-01 2015-02-05 松崎 務 装置及びプログラム
JP6008456B2 (ja) * 2013-08-01 2016-10-19 石田 伸一 装置及びプログラム
US9792197B2 (en) 2013-08-01 2017-10-17 Shinichi Ishida Apparatus and program
JP5846658B1 (ja) * 2014-07-25 2016-01-20 石田 伸一 テキスト比較装置、テキスト比較プログラム及びテキスト比較方法
JP2017199118A (ja) * 2016-04-26 2017-11-02 三菱電機株式会社 静観候補特定装置、静観候補特定方法及び静観候補特定プログラム
WO2017187651A1 (ja) * 2016-04-26 2017-11-02 三菱電機株式会社 静観候補特定装置、静観候補特定方法及び静観候補特定プログラム
KR101876688B1 (ko) * 2016-12-27 2018-07-10 엘에스웨어(주) 오픈 소스 프로젝트의 메타 데이터를 제공하기 위한 시스템 및 그 방법
US11416246B2 (en) 2018-09-03 2022-08-16 Nec Corporation Information processing apparatus, analysis system, analysis method, and non-transitory computer readable medium storing analysis program
WO2020049622A1 (ja) * 2018-09-03 2020-03-12 日本電気株式会社 情報処理装置、分析システム、分析方法及び分析プログラムが格納された非一時的なコンピュータ可読媒体
JPWO2020049622A1 (ja) * 2018-09-03 2021-08-12 日本電気株式会社 情報処理装置、分析システム、分析方法及び分析プログラム
JP7014301B2 (ja) 2018-09-03 2022-02-01 日本電気株式会社 情報処理装置、分析システム、分析方法及び分析プログラム
WO2020170401A1 (ja) * 2019-02-21 2020-08-27 三菱電機株式会社 情報処理装置、情報処理方法及び情報処理プログラム
JPWO2020170401A1 (ja) * 2019-02-21 2021-04-08 三菱電機株式会社 情報処理装置、情報処理方法及び情報処理プログラム
TWI740174B (zh) * 2019-02-21 2021-09-21 日商三菱電機股份有限公司 資訊處理裝置、資訊處理方法及資訊處理程式產品
WO2022034919A1 (ja) * 2020-08-13 2022-02-17 株式会社Sider 情報処理装置、情報処理方法、プログラム及び情報処理システム

Also Published As

Publication number Publication date
US20060004528A1 (en) 2006-01-05

Similar Documents

Publication Publication Date Title
JP2006018693A (ja) 類似ソースコード抽出プログラム、類似ソースコード抽出装置および類似ソースコード抽出方法
JP4876511B2 (ja) ロジック抽出支援装置
US8190613B2 (en) System, method and program for creating index for database
Kalmegh Comparative analysis of weka data mining algorithm randomforest, randomtree and ladtree for classification of indigenous news data
CN109409533B (zh) 一种机器学习模型的生成方法、装置、设备及存储介质
CN109344230B (zh) 代码库文件生成、代码搜索、联结、优化以及移植方法
US20080195999A1 (en) Methods for supplying code analysis results by using user language
US9557989B2 (en) Comparison and merging of IC design data
JP2017041171A (ja) テストシナリオ生成支援装置およびテストシナリオ生成支援方法
JP5994490B2 (ja) データ検索プログラム、データベース装置および情報処理システム
WO2008062822A1 (fr) Dispositif d'exploration de texte, procédé d'exploration de texte et programme d'exploration de texte
JP2021500639A (ja) 多段階パターン発見およびビジュアル分析推奨のための予測エンジン
JP2010020617A (ja) 設計事例検索装置,設計事例検索プログラム
JP5162215B2 (ja) データ処理装置、データ処理方法、および、プログラム
JP6639749B1 (ja) 検索装置、検索方法および機械学習装置
JP4426893B2 (ja) 文書検索方法、文書検索プログラムおよびこれを実行する文書検索装置
KR101684442B1 (ko) 정보분석 장치 및 방법
Arcega et al. On the influence of models at run-time traces in dynamic feature location
US20130144885A1 (en) File search apparatus and method using attribute information
US9880873B2 (en) Electronic official document processing method
JP2001101226A (ja) 文書群分類装置および文書群分類方法
WO2021240824A1 (ja) マスキング装置、マスキング方法およびマスキングプログラム
JP7234010B2 (ja) 情報処理装置、および、情報処理方法
JP2006039811A (ja) ドキュメント管理プログラム、ドキュメント管理方法、及びドキュメント管理装置
JP5156491B2 (ja) 情報処理装置、情報処理方法、およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070629

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100219

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100323

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100713