• ポートフォリオ機能


ポートフォリオを新規に作成して保存
既存のポートフォリオに追加保存

  • この表をプリントする
PDF PDFをダウンロード
審決分類 審判 査定不服 2項進歩性 特許、登録しない(前置又は当審拒絶理由) G06F
管理番号 1274165
審判番号 不服2011-21976  
総通号数 163 
発行国 日本国特許庁(JP) 
公報種別 特許審決公報 
発行日 2013-07-26 
種別 拒絶査定不服の審決 
審判請求日 2011-10-12 
確定日 2013-05-16 
事件の表示 特願2005-175862「組込みシステムのプログラムデバッグ方法」拒絶査定不服審判事件〔平成18年12月28日出願公開、特開2006-350676〕について、次のとおり審決する。 
結論 本件審判の請求は、成り立たない。 
理由 1.手続の経緯
本願は、平成17年6月16日を出願日とする出願であって、出願後の手続きの経緯は次のとおりである。

拒絶理由の通知 (起案日)平成23年1月7日
意見、手続補正 (提出日)平成23年3月16日
拒絶査定 (起案日)平成23年7月5日
同 謄本送達 (送達日)平成23年7月12日
審判請求 (提出日)平成23年10月12日
手続補正 (提出日)平成23年10月12日
前置報告 (作成日)平成23年11月17日
審尋 (起案日)平成23年12月28日
回答 (提出日)平成24年3月2日
拒絶理由の通知 (起案日)平成24年12月3日
意見、手続補正 (提出日)平成25年1月31日

2.本願発明
本願の請求項1に係る発明は、平成25年1月31日付けの手続補正書により補正された特許請求の範囲の請求項1に記載されたとおりの次の事項により特定されるものである。(以下「本願発明」という。)

「デバッグ対象の実行プログラムと、当該実行プログラムのソースコードファイルとを参照する演算処理部の制御方法であって、
ブレーク要求コードをコンパイラないしインタプリタが、当該演算処理部が実行可能な形態に変換するとともに、前記演算処理部が実行できるように前記コンパイラないしインタプリタが前記実行プログラムに挿入し、
前記演算処理部は、ブレーク要求が挿入された前記実行プログラムが実行されている状態で、当該実行プログラム内に前記ブレーク要求が記述されているか否かを検出し、
前記実行プログラム内に前記ブレーク要求が記述されていたならば、前記実行プログラムが実行されている状態で、前記演算処理部が前記ブレーク要求を標準入力待ちコードと読み替えて実行し、
前記演算処理部が、読み替えた前記標準入力待ちコードの実行により、前記実行プログラムの実行状態を一時停止させ、前記実行プログラムの実行状態が一時停止した状態で、標準入力からの入力を識別し、識別した当該標準入力に応じて、所定の変数値をディスプレイ装置に表示し、又は、更新することを特徴とする演算処理部の制御方法。」

3.引用文献
3.1 当審の拒絶の理由で引用された本願出願前に頒布された刊行物である特開平6-314221号公報( 以下、「引用文献1」という。)には、図面とともに次の記載がある。(下線は当審付与。)

A.「【0006】また、ソースプログラムの中に実行ログ採取関数を指定する際、ユーザ自身によって必要な位置に必要な実行ログ採取関数の呼び出し文をソースプログラム中に追加あるいは変更を行わなくてはならず、その時間及び手間がかかるという問題があった。
【0007】更に、実行ログ情報採取終了後には再度ソースプログラムを修正してこの挿入された実行ログ採取関数を削除する作業が必要となり、この作業により新たなコーディングミスが発生してしまうなどの問題があった。
【0008】この発明は上記のような課題を解消するためになされたもので、ソースプログラムを修正することなく、ソースプログラム中の任意の箇所に指定実行ログ採取関数を呼び出すコードを自動的に挿入した目的コードファイルを生成するコンパイル方式を提供することを目的とする。」

B.「【0009】
【課題を解決するための手段】以上の目的を達成するために、本発明に係るコンパイル方式は、ソースプログラムの実行におけるログ情報を採取するための目的コードを生成するコンパイル方式において、コンパイラ起動時に指定されたオプションを解析し、実行ログ採取オプションが指定されているかどうかを判定するオプション判定手段と、前記実行ログ採取オプションに指定された実行ログ制御情報ファイルから実行ログ制御情報を読み込み解析する実行ログ制御ファイル解析手段と、前記実行ログ制御ファイル解析手段により解析された前記実行ログ制御情報に基づき、前記ソースプログラムの実行ログ採取関数を挿入する箇所を判定する実行ログ採取関数呼び出し判定手段と、前記実行ログ採取関数呼び出し判定手段により指定された箇所に挿入する前記実行ログ採取関数を呼び出すコードを生成する実行ログ採取関数呼び出し命令生成手段と、を有することを特徴とする。」

C.「【0018】・・・コード生成部57は、プログラムソースファイル10のコード化を行う。実行ログ採取関数呼び出し判定部58は、コード生成部57により生成されたプログラム目的コードが実行ログ採取関数を挿入すべき箇所(位置)であるかを判定する。実行ログ採取関数呼び出し命令生成部59は、実行ログ採取関数呼び出し判定部58により指定されたプログラム目的コードの箇所に挿入する実行ログ採取関数を呼び出すコードを生成する。
【0019】本実施例の特徴的なことは、プログラムの実行の際にログを出力させ、そのログを採取するための制御情報である実行ログ制御情報をプログラムソースファイル10とは別に実行ログ制御情報ファイル4に記述し、その実行ログ制御情報ファイル4をコンパイル時に読み込むようにしたことであり、この結果、プログラムソースファイル10を修正することなく実行ログを採取することができる。
…(中略)…
【0022】・・・つまり、コンパイラ52の起動時には予め実行ログ制御情報ファイル4を作成しておく必要がある。本実施例における実行ログ制御情報には、実行ログ採取関数名、実行ログ採取関数の引数、ソースプログラムの実行ログ採取関数の挿入する箇所等の実行ログ採取に関するデータが記述されている。このように、実行ログ制御情報を実行ログ制御情報ファイル4に記述しておけば、実行ログ制御情報ファイル4を繰り返し使用でき、また、他にも流用でき、更に複数の実行ログ採取関数を指定することが容易にできる。
…(中略)…
【0024】コンパイラ52は実行ログ採取に関するデータが設定されると、プログラムソースファイル10を読み込み、通常の字句解析処理(ステップ104)及び構文解析処理(ステップ105)を行う。
【0025】ステップ106以降の処理で目的コードファイル30を生成するわけであるが、まず、ステップ106において、実行ログ採取オプションが指定されているかを判定する。次に、実行ログ採取オプションが指定されている場合、現在処理対象となっているソースプログラム行が処理され、出力されようとしているプログラム目的コードが実行ログ採取指定された位置のプログラム目的コードかどうか判定する(ステップ107)。もし実行ログの採取が指定された位置ならば、実行ログ採取関数呼び出しコードを生成する(ステップ108)。その後、通常のソースプログラムのプログラム目的コードを生成し、実行ログ採取関数呼び出しコードと併せて目的コードファイル3を生成する(ステップ109)。
…(中略)…
【0027】・・・実行ログ情報を出力・・・実行ログ情報を採取・・・
【0028】また、実行ログ採取関数は、その関数の外部の関数内で定義されている局所変数の値や広域変数の値を実行ログ情報として採取するだけでなく、実行ログ採取関数が呼ばされた時点でのスタック等システム関連の変数値も採取できるように用意しておけば、システム内部状態の変遷を把握することができる。
【0029】また、上記実施例で生成された実行ログ採取関数呼び出しコードでは、その実行ログ採取関数の引数として呼び出した箇所のアドレスがセットされる。したがって通常のデバッグオプションと併用することにより実行ログ採取関数内部で、実行ログ関数を呼び出した関数名、ファイル名、行番号等のシンボル情報を参照することが可能になる。また、実行ログ採取関数自身の処理内容に関してコンパイラ52は認識しなくても良い・・・」

D.図1、図2には、コンパイラの内部処理とその手順が示されている。

上記A.?D.の記載から、次のことがいえる。

(A)C.の「デバッグオプションと併用」において、ソースプログラムからコンパイルされた目的コードファイルがコンピュータで実行されることを前提としていること、及び、目的コードファイルの目的コードはコンピュータで実行させながらデバッグすることは通常の技術である。

(B)A.の「ユーザ自身によって必要な位置に必要な実行ログ採取関数の呼び出し文をソースプログラム中に追加あるいは変更を行わなくてはならず」という問題点を解決すべく、C.の「プログラムソースファイル10を修正することなく実行ログを採取することができる」ようにしたものが引用文献1の実施例である点、及び、C.に「通常のデバッグオプションと併用」との記載がある点をふまえると、引用文献1には、ソースプログラム中に追加あるいは変更を行うといったソースプログラムのプログラミング記述による修正によることなく、自動的にプログラムソースファイル(ソースプログラム)を修正できることが示されているといえる。
これに加えて、C.の「通常のデバッグオプションと併用することにより実行ログ採取関数内部で、実行ログ関数を呼び出した関数名、ファイル名、行番号等のシンボル情報を参照することが可能」、「実行ログ採取関数自身の処理内容に関してコンパイラ52は認識しなくても良い」との記載から、「デバッグ」においてもB.に記載された如き手法は併用されることができ、当該手法として、B.の「実行ログ制御情報を読み込み解析」、指定された箇所に挿入する「実行ログ採取関数を呼び出すコード(実行ログ採取関数呼び出しコード)」、呼び出される「実行ログ採取関数」を用いることができることが示されているといえる。
ここで、前記「デバッグ」が目的コードを実行させながら行うことは慣用のものである。

(C)C.の段落【0024】?【0025】の記載から、「実行ログ採取関数呼び出しコードをコンパイラが、コンピュータが(ソースプログラムを)実行可能な形態の目的コードに変換するとともに、前記コンパイラが前記目的コードファイルに挿入」しているといえる。前記「実行ログ採取関数呼び出しコード」は、A.の「ソースプログラム中の任意の箇所に指定実行ログ採取関数を呼び出すコードを自動的に挿入した目的コードファイルを生成」との記載から、関数呼び出しコードが挿入されている態様をよみとることができる。
また、デバッグと併用されて、前記「関数呼び出しコードが挿入」された「目的コードファイル」が(適宜のリンクなどの後)実行される時、目的コードが順次解読されてゆき前記関数呼び出しコードが解読(検出)されると前記「関数」が呼び出されることになり、前記検出(解読)は通常の目的コード(プログラム)の実行に付随する技術であり、これを換言すると「前記コンピュータは、実行ログ採取関数呼び出しコードが挿入された前記目的コードファイルが実行されている状態で、当該目的コードファイル内に前記実行ログ採取関数呼び出しコードが記述されているか否かを検出」するものであるといえる。

(D)さらに、「実行ログ採取関数」は、C.の「予め実行ログ制御情報ファイル4を作成しておく」、「実行ログ制御情報には、実行ログ採取関数名、実行ログ採取関数の引数、ソーズプログラムの実行ログ採取関数の挿入する箇所等の実行ログ採取に関するデータが記述」との記載から、(B)の呼び出すコードにより呼び出される側の「実行ログ採取関数」は適宜プログラミング記述をして関数を「作成しておけば」これが(参照されて)呼び出されるものであり、「実行ログ採取関数」に限らず、予め記述して用意した「関数」を参照可能であることをよみとることができる。
そして、C.の段落【0029】には、「実行ログ採取関数呼び出しコードでは、その実行ログ採取関数の引数として呼び出した箇所のアドレスがセットされる。したがって通常のデバッグオプションと併用することにより実行ログ採取関数内部で、実行ログ関数を呼び出した関数名、ファイル名、行番号等のシンボル情報を参照することが可能になる。」と記載されている。
以上の事項を参酌すると、「当該目的コードファイル内に前記実行ログ採取関数呼び出しコードが記述されていたならば、前記目的コードファイルが実行されている状態で、前記コンピュータにより前記実行ログ採取関数呼び出しコードが当該コードの引数として呼び出された関数名、ファイル名、行番号等に係る実行ログ採取関数が参照され」ること、及び「前記コンピュータが、前記呼び出した前記関数名、ファイル名、行番号等に係る実行ログ採取関数の参照により、実行ログを採取する」ことをよみとることができる。

B.に記載の目的コードを生成するコンパイル方式において、(A)?(D)の点をふまえると、引用文献1から次の発明(「引用文献1発明」という。)をよみとることができる。

「デバッグオプションと併用され、コンパイラによりソースプログラムから生成された目的コードファイルを処理するコンピュータの制御方法であって、
実行ログ採取関数呼び出しコードをコンパイラが、当該コンピュータが(ソースプログラムを)実行可能な形態の目的コードに変換するとともに、前記コンパイラが前記目的コードファイルに挿入し、
前記コンピュータは、実行ログ採取関数呼び出しコードが挿入された前記目的コードファイルが実行されている状態で、当該目的コードファイル内に前記実行ログ採取関数呼び出しコードが記述されているか否かを検出し、
当該目的コードファイル内に前記実行ログ採取関数呼び出しコードが記述されていたならば、前記目的コードファイルが実行されている状態で、前記コンピュータにより前記実行ログ採取関数呼び出しコードが当該コードの引数として呼び出された関数名、ファイル名、行番号等に係る実行ログ採取関数が参照され、
前記コンピュータが、前記呼び出した前記関数名、ファイル名、行番号等に係る実行ログ採取関数の参照により、実行ログを採取する
ことを特徴とするコンピュータの制御方法。」

3.2 同じく、当審の拒絶理由で引用された本願出願前に頒布された刊行物である、特開平3-294934号公報( 以下、「引用文献2」という。)には、図面とともに次の記載がある。(下線は当審付与。)

E.「(作用)
・・・並列処理を有する被デバッグプログラムが試験者が設定した実行停止点(ブレークポイント)まで達した時、デバッガが、現在走行しているプロセスの識別番号を見て実行を継続するかどうかの判断が行われ、実行停止したプロセス番号と指定されたプロセス番号が同じならば、実行停止点の周辺ソースプログラムを前記表示部に表示した後にコマンド待ち状態とし、プロセス番号が異なれば、実行停止点の周辺ソースプログラムを表示せずにそのまま実行を継続させ、実行停止点でこの処理が繰り返される。…(中略)…実行停止検出部7は並列プログラムの実行の停止を検出する機能を有し、・・・」(第2頁右下欄7行?第3頁右上欄1行)

F.「・・・並列プログラムの実行の停止を検出すると、・・・実行停止点の周辺ソースプログラムを前記表示部に表示した後にコマンド待ち状態とする。・・・実行停止点での変数の内容等をチェックできる。…(中略)…
なお、ロードモジュール13の中の実行停止点を、ソースプログラム12の各行に対応する箇所に設定し、本発明を適用すれば、特定プロセスに着目した1行毎のステップ実行が可能となる。」(第3頁左下欄11行?右下欄10行)

G.第1図にはデバッガ4内に実行制御部8、実行停止検出部7、プロセス比較部11、現在走行中のプロセス番号の記憶部9が記載され、第2図には特定プロセストレースが記載されている。

上記E.?G.によれば、特に「現在走行しているプロセス」、「実行停止点の周辺ソースプログラムを前記表示部に表示した後にコマンド待ち状態とし」との記載から、走行しているプロセスは実行停止点で停止し、実行停止点の周辺のソースプログラムを参照してソースプログラムの当該周辺を表示していることをよみとることができ、引用文献2には、「デバッグ対象の実行プログラム(被デバッグプログラム)と、当該実行プログラムのソースコードファイル(実行停止点の周辺ソースプログラム)とを参照する演算処理部(プロセス比較部、実行制御部など)」の技術が示されているといえる。

3.3 同じく、当審の拒絶理由で引用された本願出願前に頒布された刊行物である、特開2004-139313号公報( 以下、「引用文献3」という。)には、図面とともに次の記載がある。(下線は当審付与。)

H.「【0008】
【課題を解決するための手段】
上記目的を達成するために、本発明は、ソースコード表示対象の実行プログラムの実行状態で、当該実行プログラム内に表示制御コマンドが記述されているか否かを判定し、記述されていたならば、当該実行プログラムの実行を一時停止し、停止状態において、記述された表示制御コマンドを識別し、識別した表示制御コマンドに応じて、対応する当該実行プログラムのソースコードまたは関連情報をソースコードファイルまたは関連情報ファイルから取得する情報取得手段と、取得したソースコードまたは関連情報の一部または全部を表示する表示手段とを備えることを特徴とする。」

I.図1には、演算処理部、ソースコードファイル、実行プログラム、コマンドライブラリが記載されている。

3.4 同じく、当審の拒絶理由で引用された本願出願前に頒布された刊行物である、RichardM.Stallman,RolandH.Pesch,GDBデバッギング入門,日本,株式会社アスキー,1999年2月11日,第1版,18?21頁、37頁、59頁( 以下、「引用文献4」という。)には、図面とともに次の記載がある。(下線は当審付与。)

J.「GDBのbreakコマンドを使って、そこにブレークポイントを設定する。
…(中略)…
・・・制御がm4_changequoteサブルーチンに達しないかぎり、プログラムは正常に動作する。
…(中略)…
ブレークポイントをトリガーするため、changequoteを呼び出す。これでGDBは、m4の実行を中断し、停止したコンテキストに関する情報を表示する。」(18頁15行?27行)

K.「現在行の前後10行を表示できるので、これでコンテキストをチェックできる。
…(中略)…
・・・コマンドを使って、もっとよい値にこれらの変数を設定できる。」(20頁9行?末行)

L.「標準入力と標準出力
ユーザプログラムは通常、GDBが標準入力および標準出力として使用しているものと同じデバイスを標準入力および標準出力として使用する。・・・標準入力と標準出力をリダイレクトすることも可能である。」(37頁8行?11行)

M.「5.1.7 ブレークポイントのコマンドリスト
ブレークポイント(またはウォッチポイント)に対し、そのブレークポイントが原因でプログラムが停止したときに実行できる一連のコマンドを指定できる。」(59頁11行?13行)

4.対比
本願発明と引用文献1発明とを対比すると、次のことがいえる。

(ア)引用文献1発明の「デバッグオプションと併用され、コンパイラによりソースプログラムから生成された目的コードファイルを処理するコンピュータの制御方法」は、当該実行プログラムに相当する「目的コードファイル」、ソースコードファイルに相当する「ソースプログラム」がデバッグ(処理)の対象として「コンピュータ」に「制御」される「方法」であり、一方、本願発明の「デバッグ対象の実行プログラムと、当該実行プログラムのソースコードファイルとを参照する演算処理部の制御方法」も、上位概念では、「デバッグ対象の実行プログラムと、当該実行プログラムのソースコードファイルとに係るコンピュータの制御方法」とみることができる。よって、両発明は、「デバッグ対象の実行プログラムと、当該実行プログラムのソースコードファイルとに係るコンピュータの制御方法」である点において共通する。

(イ)引用文献1発明の「実行ログ採取関数呼び出しコード」は、「ブレーク要求コード」とまではいえないまでも、上位概念では、実行ログ採取を要求する「要求コード」とみることができ、一方、本願発明の「ブレーク要求コード」も、上位概念では「要求コード」とみることができる。
また、本願発明の「演算処理部」は、上位概念では「コンピュータ」とみることができる。
さらに、本願発明の「コンパイラないしインタプリタ」との記載は、択一的記載であって、「コンパイラ」を含むものである。
よって、引用文献1発明の「実行ログ採取関数呼び出しコードをコンパイラが、当該コンピュータが(ソースプログラムを)実行可能な形態の目的コードに変換するとともに、前記コンパイラが前記目的コードファイルに挿入」することと、本願発明の「ブレーク要求コードをコンパイラないしインタプリタが、当該演算処理部が実行可能な形態に変換するとともに、前記演算処理部が前記実行プログラムに挿入」することとは、「要求コードをコンパイラが、当該コンピュータが実行可能な形態に変換するとともに、前記コンピュータが前記実行プログラムに挿入」することである点で共通する。

(ウ)引用文献1発明の「実行ログ採取関数呼び出しコード」は、上位概念では実行ログ採取の「要求」とみることができる。
よって、引用文献1発明の「前記コンピュータは、実行ログ採取関数呼び出しコードが挿入された前記目的コードファイルが実行されている状態で、当該目的コードファイル内に前記実行ログ採取関数呼び出しコードが記述されているか否かを検出」することと、本願発明の「前記演算処理部は、ブレーク要求が挿入された前記実行プログラムが実行されている状態で、当該実行プログラム内に前記ブレーク要求が記述されているか否かを検出」することとは、上位概念において、「前記コンピュータは、要求が挿入された前記実行プログラムが実行されている状態で、当該実行プログラム内に前記要求が記述されているか否かを検出」することである点で共通する。

(エ)引用文献1発明の「実行ログ採取関数呼び出しコード」が「呼び出された関数(名)」の当該「関数」を呼び出すことは、「実行ログ採取関数呼び出しコード」を当該呼び出される「関数」に読み替えていることと技術的に等価と解される。そして、引用文献1発明の呼び出された「関数」、「コードの引数として呼び出された関数名、ファイル名、行番号等に係る実行ログ採取する関数」は、「標準入力待ちコード」とまではいえないまでも、「関数(コード)」を呼出しており、一方、本願発明の「標準入力待ちコード」も、上位概念では「コード」であり、読み替えて呼出しているとみることができる。
よって、引用文献1発明の「当該目的コードファイル内に前記実行ログ採取関数呼び出しコードが記述されていたならば、前記目的コードファイルが実行されている状態で、前記コンピュータにより前記実行ログ採取関数呼び出しコードが当該コードの引数として呼び出された関数名、ファイル名、行番号等に係る実行ログ採取関数が参照され」ることと、本願発明の「前記実行プログラム内に前記ブレーク要求が記述されていたならば、前記実行プログラムが実行されている状態で、前記演算処理部が前記ブレーク要求を標準入力待ちコードと読み替えて実行」することとは、上位概念において、「前記実行プログラム内に前記要求が記述されていたならば、前記実行プログラムが実行されている状態で、前記コンピュータが前記要求をコードと読み替えて実行」することである点で共通する。

(オ)引用文献1発明の「実行ログを採取する」動作は「実行状態を一時停止させる」動作とまではいえないまでも、「実行状態を操作する」動作とみることができ、一方、本願発明の「実行状態を一時停止させる」動作も、上位概念では「実行状態を操作する」動作とみることができる。
よって、引用文献1発明の「前記コンピュータが、前記呼び出した前記関数名、ファイル名、行番号等に係る実行ログ採取関数の参照により、実行ログを採取する」と本願発明の「前記演算処理部が、読み替えた前記標準入力待ちコードの実行により、前記実行プログラムの実行状態を一時停止させる」とは、上位概念において、「前記コンピュータが、読み替えた前記コードの実行により、前記実行プログラムの実行状態を操作する」事である点で共通する。

上記(ア)?(オ)の対比によれば、本願発明と引用文献1発明とは、次の点で一致し、そして、相違する。

〈一致点〉
デバッグ対象の実行プログラムと、当該実行プログラムのソースコードファイルとに係るコンピュータの制御方法であって、
要求コードをコンパイラが、当該コンピュータが実行可能な形態に変換するとともに、前記コンピュータが前記実行プログラムに挿入し、
前記コンピュータは、要求が挿入された前記実行プログラムが実行されている状態で、当該実行プログラム内に前記要求が記述されているか否かを検出し、
前記実行プログラム内に前記要求が記述されていたならば、前記実行プログラムが実行されている状態で、前記コンピュータが前記要求をコードと読み替えて実行し、
前記コンピュータが、読み替えた前記コードの実行により、前記実行プログラムの実行状態を操作する
ことを特徴とするコンピュータの制御方法。

〈相違点1〉
デバッグ対象の実行プログラムと、当該実行プログラムのソースコードファイルとに係るコンピュータの制御方法が、本願発明は「デバッグ対象の実行プログラムと、当該実行プログラムのソースコードファイルとを参照する演算処理部」の制御方法であるのに対し、引用文献1発明は演算処理部が参照することについては特定されていない点。

〈相違点2〉
コンピュータが実行プログラムに挿入するのが、本願発明は「ブレーク要求コード」を「演算処理部」が実行プログラムに挿入するのに対し、引用文献1発明は「実行ログ採取関数呼び出しコード」を「コンパイラ」が目的コードファイルに挿入する点。

〈相違点3〉
検出することに係る「コンピュータ」、「要求」が、本願発明は、「演算処理部」、「ブレーク要求」であるのに対し、引用文献1発明はそのようではない点。

〈相違点4〉
コードと読み替えて実行することに係る「コンピュータ」、「要求」、「コード」が、本願発明は、それぞれ、「演算処理部」、「ブレーク要求」、「標準入力待ちコード」であるのに対し、引用文献1発明はそのようではない点。

〈相違点5〉
実行プログラムの実行状態を操作することに係る「コンピュータ」、「コード」、「操作」が、本願発明は、それぞれ、「演算処理部」、「標準入力待ちコード」、「一時停止させ、前記実行プログラムの実行状態が一時停止した状態で、標準入力からの入力を識別し、識別した当該標準入力に応じて、所定の変数値をディスプレイ装置に表示し、又は、更新する」ことであるのに対し、引用文献1発明はそのようではない点。

5.当審の判断
5-1.〈相違点1〉について
引用文献1発明において、デバッグオプションと併用され、実行ログを採取するということは、目的コードファイルのデバッグが可能であることに他ならない。そして、引用文献2には、デバッグ対象の実行プログラム(被デバッグプログラム)と、当該実行プログラムのソースコードファイル(実行停止点の周辺ソースプログラム)とを参照する演算処理部(プロセス比較部、実行制御部など)の技術が示されている。また、引用文献3にも同様の、ソースコードファイル(ソースプログラム)の取得、表示(参照に相当)と、実行プログラムの処理を行う演算処理部が示されている。
してみれば、引用文献1発明において、デバッグオプションと併用され、コンパイラにより目的コードファイルのソースプログラムを処理するコンピュータの制御方法を、「デバッグ対象の実行プログラムと、当該実行プログラムのソースコードファイルとを参照する演算処理部」の制御方法とすることは、前記技術を参酌することにより、当業者が容易になし得ることである。

5-2.〈相違点2〉について
引用文献2のE.の「被デバッグプログラムが試験者が設定した実行停止点(ブレークポイント)まで達した時」、「実行停止検出部7」との記載から、試験者が設定した実行停止点を計算機を用いて被デバッグプログラム中に実行停止点(ブレークポイント)が挿入されていることをよみとることができるとともに、ブレークポイントとは端的には強制停止コード(ブレーク要求コード)によるものであり、引用文献2の第1図の計算機3に演算処理部を備えることは技術的常識である点を加味すれば、引用文献2には「ブレーク要求コード(ブレークポイント)」を「演算処理部」が被デバッグプログラム(実行プログラム)に挿入することに相当する技術が示されている。
してみれば、引用文献1発明において、コンパイラが、要求コード(実行ログ採取関数を呼び出すコード)を目的コードファイルに挿入するのを、「演算処理部が」「ブレーク要求コード」を挿入するようなものとすることは、前記技術を参酌することにより、当業者が適宜になし得ることである。

5-3.〈相違点3〉について
引用文献2には、「5-2.〈相違点2〉について」において言及したように、「演算処理部」(第1図計算機3、実行停止検出部7、第2図参照。)が実行停止点(ブレークポイント、ブレーク要求コード)を検出する技術が示されている。
してみれば、引用文献1発明において、検出することに係る「コンピュータ」、「要求」を、「演算処理部」、「ブレーク要求」とすることは、前記技術を参酌することにより、当業者が容易になし得ることである。

5-4.〈相違点4〉について
引用文献2のE.には「実行停止点(ブレイクポイント)の周辺ソースプログラムを前記表示部に表示した後にコマンド待ち状態」にする技術が記載されている。また、引用文献3には「表示制御コマンドが記述」されていたら「実行プログラムの実行を一時停止し、停止状態において」、「コマンドライブラリ」、「ソースコードファイル」を利用する技術が記載され、引用文献4には、「標準入力および標準出力」、「リダイレクト」の技術が記載されている。
してみれば、引用文献1発明において、コードと読み替えて実行することに係る「コンピュータ」、「要求」、「コード」を、それぞれ、「演算処理部」、「ブレーク要求」、「標準入力待ちコード」とすることは、前記技術を参酌することにより、当業者が容易になし得ることである。

5-5.〈相違点5〉について
デバッグ技術において、実行プログラムの実行状態が一時停止した状態とすること及び一時停止状態とする入力コマンドとして標準入力があり、標準入力からの入力を識別し、識別した当該標準入力に応じて、所定の変数値をディスプレイ装置に表示し、又は、更新する技術は本願出願前周知の技術にすぎない。例えば、佐藤貴寛著「新人SE必読!J2EEサーバサイド開発レクチャー超入門 スーパーSEになるための基礎を築く〈第5章 Eclipseのデバッグ支援機能の基本 楽に効率よくデバッグしよう〉」JAVA PRESS Vol.42,頁54?63(株)技術評論社(2005年6月18日発行)には、「デバッグの基本機能」、「デバッグ・パースペクティブの基本操作」、「プログラムを中断させ確認するいろいろな方法」、「変数に代入される値や文字列の確認と値の変更」(第54頁左欄下から4行?右欄4行)が記載され、この記載によれば、実行プログラムの実行状態が一時停止した状態とすることができ(プログラムを中断させ)、入力からの入力を識別し、識別した当該入力に応じて、所定の変数値をディスプレイ装置に表示し、又は、更新する(変数に代入される値や文字列の確認と値の変更。デバッグ・パースペクティブ。図14?16参照。代入された値や文字列などが識別されることは自明。)技術をよみとることができる。また、入力が標準入力であることは引用文献4に記載されているように周知慣用の技術である。
また、引用文献2には、「並列プログラムの実行の停止を検出すると・・・実行停止点の周辺ソースプログラムを前記表示部に表示した後にコマンド待ち状態とする」、「実行停止点での変数の内容等をチェック」、及び、「実行停止点」(コマンド待ちより、「一時停止」することは自明)を「各行に設定」、「ステップ実行」が記載されており、これらから、コマンド「入力(標準入力とまではいえない。)待ち」、「一時停止させ、実行プログラムの実行状態が一時停止した状態で、前記入力からの入力を識別し、識別した当該入力に応じて、所定の変数値をディスプレイ装置に表示し」に相当する技術が示されているといえる。
してみれば、引用文献1発明において、実行プログラムの実行状態を操作させることに係る「コンピュータ」、「コード」、「操作」を、それぞれ、「演算処理部」、「標準入力待ちコード」、「一時停止させ、前記実行プログラムの実行状態が一時停止した状態で、標準入力からの入力を識別し、識別した当該標準入力に応じて、所定の変数値をディスプレイ装置に表示し、又は、更新する」ようなものとすることは、前記技術を参酌することにより、当業者が適宜になし得ることである。

そして、本願発明により奏する効果も、引用文献1に記載された発明及び引用文献2?4に記載された技術及び前記周知技術から当然予想される範囲内のものにすぎず、格別顕著なものとは認められない。

6.むすび
以上のとおり、本願発明は、引用文献1に記載された発明及び引用文献2?4に記載された技術及び周知技術に基いて、当業者が容易に発明をすることができたものであるから、特許法第29条第2項の規定により特許を受けることができない。
したがって、本願は、他の請求項について検討するまでもなく、拒絶されるべきものである。
よって、結論のとおり審決する。
 
審理終結日 2013-03-15 
結審通知日 2013-03-19 
審決日 2013-04-01 
出願番号 特願2005-175862(P2005-175862)
審決分類 P 1 8・ 121- WZ (G06F)
最終処分 不成立  
前審関与審査官 坂庭 剛史  
特許庁審判長 長島 孝志
特許庁審判官 酒井 伸芳
田中 秀人
発明の名称 組込みシステムのプログラムデバッグ方法  
代理人 ポレール特許業務法人  

プライバシーポリシー   セキュリティーポリシー   運営会社概要   サービスに関しての問い合わせ