【事件の表示】
　特願２００６−　９００８８「ソフトウェア保守支援プログラム，処理方法および装置」拒絶査定不服審判事件〔平成１９年１０月１１日出願公開、特開２００７−２６５０８９〕について、次のとおり審決する。
【結　論】
　本件審判の請求は、成り立たない。
【理　由】
１．手続の経緯
　本願は、平成１８年３月２９日の出願であって、平成２３年８月１１日付の拒絶理由通知に対して、同年１０月２４日に意見書とともに手続補正書が提出されたが、平成２４年４月５日付で拒絶査定がされ、これに対し、平成２４年７月１０日に拒絶査定不服審判が請求されるとともに同日付けで手続補正がなされ、平成２５年３月１８日付けの審尋に対して、平成２５年５月２７日付けで回答書が提出されたものである。 
　
２．平成２４年７月１０日付の手続補正についての補正却下の決定
　［補正却下の決定の結論］
　　平成２４年７月１０日付の手続補正を却下する。
　［理由］
２−１．補正後の本願発明
　平成２４年７月１０日付の手続補正（以下、「本件補正」という。）により、補正前の平成２３年１０月２４日付け手続補正による特許請求の範囲を、
「【請求項１】
　ソフトウェアを構成する要素を示す所定のアノテーションが付加されたソフトウェアのソースコードを取得する処理と、
　取得した前記ソースコードのアノテーションをもとに、前記ソフトウェアを構成する構成要素および該構成要素間の関連を示す関連要素とを抽出する処理と、
　抽出した前記構成要素および前記関連要素をもとに、前記ソフトウェアの構造を、所定のモデリング表現にもとづいて表すソースコード構造モデルを生成する処理と、
　前記ソフトウェアに対応する仕様設計情報において、前記構成要素および前記関連要素によって前記ソフトウェアの構造を定義するアーキテクチャ情報を取得する処理と、
　前記アーキテクチャ情報に定義された前記構成要素および前記関連要素をもとに、前記ソフトウェアの構造を、前記所定のモデリング表現にもとづいて表すアーキテクチャモデルを生成する処理と、
　前記ソースコード構造モデルの構成要素または関連要素と前記アーキテクチャモデルの構成要素または関連要素とを比較し、前記ソースコード構造モデルおよび前記アーキテクチャモデルにおいて構成要素または関連要素が対応していない場合に、該対応していない構成要素または関連要素をギャップ情報として検出する処理とを、
　コンピュータに実行させるためのソフトウェア保守支援プログラム。
　　【請求項２】
　ソフトウェアの構造を表す構成要素と該構成要素間の関連を示す関連要素とを用いて、ソフトウェアを構成する要素として不適切なものを表す不良パターン情報を取得する処理と、
　前記ソースコード構造モデルの構成要素または関連要素が、前記不良パターン情報に該当するか否かを判定し、該不良パターン情報に該当する構成要素または関連要素を検出する処理とを、
　前記コンピュータに実行させるための請求項１に記載のソフトウェア保守支援プログラム。
　　【請求項３】
　コンピュータが実行する処理方法であって、
　ソフトウェアを構成する要素を示す所定のアノテーションが付加されたソフトウェアのソースコードを取得し、
　取得した前記ソースコードのアノテーションをもとに、前記ソフトウェアを構成する構成要素および該構成要素間の関連を示す関連要素とを抽出し、
　抽出した前記構成要素および前記関連要素をもとに、前記ソフトウェアの構造を、所定のモデリング表現にもとづいて表すソースコード構造モデルを生成し、
　前記ソフトウェアに対応する仕様設計情報において、前記構成要素および前記関連要素によって前記ソフトウェアの構造を定義するアーキテクチャ情報を取得し、
　前記アーキテクチャ情報に定義された前記構成要素および前記関連要素をもとに、前記ソフトウェアの構造を、前記所定のモデリング表現にもとづいて表すアーキテクチャモデルを生成し、
　前記ソースコード構造モデルの構成要素または関連要素と前記アーキテクチャモデルの構成要素または関連要素とを比較し、前記ソースコード構造モデルおよび前記アーキテクチャモデルにおいて構成要素または関連要素が対応していない場合に、該対応していない構成要素または関連要素をギャップ情報として検出する
　ソフトウェア保守支援処理方法。
　　【請求項４】
　前記コンピュータが、
　ソフトウェアの構造を表す構成要素と該構成要素間の関連を示す関連要素とを用いて、ソフトウェアを構成する要素として不適切なものを表す不良パターン情報を取得し、
　前記ソースコード構造モデルの構成要素または関連要素が、前記不良パターン情報に該当するか否かを判定し、該不良パターン情報に該当する構成要素または関連要素を検出する
　請求項３に記載のソフトウェア保守支援処理方法。
　　【請求項５】
　ソフトウェアを構成する要素を示す所定のアノテーションが付加されたソフトウェアのソースコードを取得する処理手段と、
　取得した前記ソースコードのアノテーションをもとに、前記ソフトウェアを構成する構成要素および該構成要素間の関連を示す関連要素とを抽出する処理手段と、
　抽出した前記構成要素および前記関連要素をもとに、前記ソフトウェアの構造を、所定のモデリング表現にもとづいて表すソースコード構造モデルを生成する処理手段と、
　前記ソフトウェアに対応する仕様設計情報において、前記構成要素および前記関連要素によって前記ソフトウェアの構造を定義するアーキテクチャ情報を取得する処理手段と、
　前記アーキテクチャ情報に定義された前記構成要素および前記関連要素をもとに、前記ソフトウェアの構造を、前記所定のモデリング表現にもとづいて表すアーキテクチャモデルを生成する処理手段と、
　前記ソースコード構造モデルの構成要素または関連要素と前記アーキテクチャモデルの構成要素または関連要素とを比較し、前記ソースコード構造モデルおよび前記アーキテクチャモデルにおいて構成要素または関連要素が対応していない場合に、該対応していない構成要素または関連要素をギャップ情報として検出する処理手段とを備える
　ソフトウェア保守支援装置。
　　【請求項６】
　ソフトウェアの構造を表す構成要素と該構成要素間の関連を示す関連要素とを用いて、ソフトウェアを構成する要素として不適切なものを表す不良パターン情報を格納する記憶手段と、
　前記ソースコード構造モデルの構成要素または関連要素が、前記不良パターン情報に該当するか否かを判定し、該不良パターン情報に該当する構成要素または関連要素を検出する処理手段とを備える
　請求項５に記載のソフトウェア保守支援装置。」
から、
「【請求項１】
　ソフトウェアを構成する要素を示す所定のアノテーションが付加されたソフトウェアのソースコードを取得する処理と、
　取得した前記ソースコードのアノテーションをもとに、前記ソフトウェアを構成する構成要素および該構成要素間の関連を示す関連要素とを抽出する処理と、
　抽出した前記構成要素および前記関連要素をもとに、前記ソフトウェアの構造を、所定のモデリング表現にもとづいて表すソースコード構造モデルを生成する処理と、
　前記ソフトウェアに対応する仕様設計情報において、前記構成要素および前記関連要素によって前記ソフトウェアの構造を定義するアーキテクチャ情報を取得する処理と、
　前記アーキテクチャ情報に定義された前記構成要素および前記関連要素をもとに、前記ソフトウェアの構造を、前記
ソースコード構造モデルの生成に用いた
　前記ソースコード構造モデルの構成要素または関連要素と前記アーキテクチャモデルの構成要素または関連要素とを比較し、前記ソースコード構造モデルおよび前記アーキテクチャモデルにおいて構成要素または関連要素が対応していない場合に、該対応していない構成要素または関連要素をギャップ情報として検出する処理とを、
　コンピュータに実行させるためのソフトウェア保守支援プログラム。
　　【請求項２】
　ソフトウェアの構造を表す構成要素と該構成要素間の関連を示す関連要素とを用いて、ソフトウェアを構成する要素として不適切なものを表す不良パターン情報を取得する処理と、
　前記ソースコード構造モデルの構成要素または関連要素が、前記不良パターン情報に該当するか否かを判定し、該不良パターン情報に該当する構成要素または関連要素を検出する処理とを、
　前記コンピュータに実行させるための請求項１に記載のソフトウェア保守支援プログラム。
　　【請求項３】
　コンピュータが実行する処理方法であって、
　ソフトウェアを構成する要素を示す所定のアノテーションが付加されたソフトウェアのソースコードを取得し、
　取得した前記ソースコードのアノテーションをもとに、前記ソフトウェアを構成する構成要素および該構成要素間の関連を示す関連要素とを抽出し、
　抽出した前記構成要素および前記関連要素をもとに、前記ソフトウェアの構造を、所定のモデリング表現にもとづいて表すソースコード構造モデルを生成し、
　前記ソフトウェアに対応する仕様設計情報において、前記構成要素および前記関連要素によって前記ソフトウェアの構造を定義するアーキテクチャ情報を取得し、
　前記アーキテクチャ情報に定義された前記構成要素および前記関連要素をもとに、前記ソフトウェアの構造を、前記
ソースコード構造モデルの生成に用いた
　前記ソースコード構造モデルの構成要素または関連要素と前記アーキテクチャモデルの構成要素または関連要素とを比較し、前記ソースコード構造モデルおよび前記アーキテクチャモデルにおいて構成要素または関連要素が対応していない場合に、該対応していない構成要素または関連要素をギャップ情報として検出する
　ソフトウェア保守支援処理方法。
　　【請求項４】
　前記コンピュータが、
　ソフトウェアの構造を表す構成要素と該構成要素間の関連を示す関連要素とを用いて、ソフトウェアを構成する要素として不適切なものを表す不良パターン情報を取得し、
　前記ソースコード構造モデルの構成要素または関連要素が、前記不良パターン情報に該当するか否かを判定し、該不良パターン情報に該当する構成要素または関連要素を検出する
　請求項３に記載のソフトウェア保守支援処理方法。
　　【請求項５】
　ソフトウェアを構成する要素を示す所定のアノテーションが付加されたソフトウェアのソースコードを取得する処理手段と、
　取得した前記ソースコードのアノテーションをもとに、前記ソフトウェアを構成する構成要素および該構成要素間の関連を示す関連要素とを抽出する処理手段と、
　抽出した前記構成要素および前記関連要素をもとに、前記ソフトウェアの構造を、所定のモデリング表現にもとづいて表すソースコード構造モデルを生成する処理手段と、
　前記ソフトウェアに対応する仕様設計情報において、前記構成要素および前記関連要素によって前記ソフトウェアの構造を定義するアーキテクチャ情報を取得する処理手段と、
　前記アーキテクチャ情報に定義された前記構成要素および前記関連要素をもとに、前記ソフトウェアの構造を、前記
ソースコード構造モデルの生成に用いた
　前記ソースコード構造モデルの構成要素または関連要素と前記アーキテクチャモデルの構成要素または関連要素とを比較し、前記ソースコード構造モデルおよび前記アーキテクチャモデルにおいて構成要素または関連要素が対応していない場合に、該対応していない構成要素または関連要素をギャップ情報として検出する処理手段とを備える
　ソフトウェア保守支援装置。
　　【請求項６】
　ソフトウェアの構造を表す構成要素と該構成要素間の関連を示す関連要素とを用いて、ソフトウェアを構成する要素として不適切なものを表す不良パターン情報を格納する記憶手段と、
　前記ソースコード構造モデルの構成要素または関連要素が、前記不良パターン情報に該当するか否かを判定し、該不良パターン情報に該当する構成要素または関連要素を検出する処理手段とを備える
　請求項５に記載のソフトウェア保守支援装置。」（なお、下線は変更箇所を示すものとして出願人が付与したものである。）
へと補正された。
　　
２−２．補正の目的について
　上記補正は、補正前の特許請求の範囲の請求項１、３及び５における「所定のモデリング表現」を、「ソースコード構造モデルの生成に用いたモデリング表現」に限定するものである。
　よって、当該補正は平成１８年法律第５５号改正附則第３条第１項によりなお従前の例によるとされる同法による改正前の特許法第１７条の２第４項第２号の特許請求の範囲の減縮を目的とするものに該当する。
　　
２−３．独立特許要件について
　そこで、本件補正後の前記請求項１に係る発明（以下、「本件補正発明」という。）が特許出願の際独立して特許を受けることができるものであるか（平成１８年法律第５５号改正附則第３条第１項によりなお従前の例によるとされる同法による改正前の特許法第１７条の２第５項において準用する同法１２６条第５項の規定に適合するか）について以下に検討する。
　
（１）引用例
（１−１）原査定の拒絶の理由に引用され、本願の出願日前の平成８年２月２日に出願公開された特開平８−３０４４８号公報（以下、「引用例１」という。）には、図面とともに、次の事項が記載されている。
（ａ）「【特許請求の範囲】
【請求項１】　プログラムの仕様が記述されているプログラム仕様書と、このプログラム仕様書に基づいて作成されたソースコードとの整合性を検査するプログラム仕様整合検査装置において、
プログラムを作成するための各種設計情報に関する詳細な情報を示す項目にしたがって入力された情報に基づいて、各種設計情報の詳細を示す仕様書解析情報を生成する仕様書解析情報生成手段と、
ソースコードを解析することによりソースコード内に記述されている各種設計情報の詳細を示すソースコード解析情報を生成するソースコード解析情報生成手段と、
前記仕様書解析情報およびソースコード解析情報に基づいてプログラム仕様書およびソースコードに記述されている各種設計情報を照合し、その照合結果を出力する照合手段とを備えることを特徴とするプログラム仕様整合検査装置。」
（ｂ）「【００１３】仕様解析処理実行手段３４は、仕様書記憶装置２０内のプログラム仕様書を作成したときに基準とした標準形式を示す標準形式識別子に基づいて、仕様書解析処理検索手段３３により仕様書解析処理記憶手段３２から所定の仕様書解析処理を検索する。続いて、仕様書解析処理実行手段３４は、検索された仕様書解析処理に基づいて仕様書記憶装置２０内のプログラム仕様書を解析し、その解析結果を仕様書解析情報記憶装置５０に出力する。図６は、仕様書解析装置３０から出力される解析結果を示す説明図であり、編集装置２１で作成されたプログラム仕様書に記述されている各設計情報に関する情報が詳細に記載されている。
【００１４】図６において、１１１はプログラム仕様書の名前、１１２は先頭からの文字数や行・桁数などプログラム仕様書内における各設計情報の位置を示す情報、１１３は「モジュール名」や「概要」など各設計情報の種類を示す情報、１１４はこのプログラム仕様書で規定されるモジュールが所属する親モジュールに関する情報、１１５はこのモジュールに関する情報、１１６は「文字」、「整数」あるいは「実数」や情報長など各設計情報の属性を示す情報である。この仕様書解析情報によれば、プログラム仕様書のどの位置に、どのような設計情報が記載されているかを認識することができる。」
（ｃ）「【００１５】一方、ソースコード記憶装置６０内に記憶されているソースコードは、ソースコード解析装置７０の字句解析手段７１により字句が解析されるとともに、構文解析手段７２によりその構文が解析され、ソースコード解析情報出力手段７３により解析情報が生成されて、ソースコード解析情報記憶装置８０に出力され記憶される。図７は、ソースコード解析装置７０から出力される解析結果を示す説明図であり、ソースコード記憶装置６０に格納されたソースコードに記述されている各設計情報に関する情報が詳細に記載されている。
【００１６】図７において、１２１はソースコードの名前、１２２は先頭からの文字数や行・桁数などソースコード内における各設計情報の位置を示す情報、１２３は「モジュール名」や「概要」など各設計情報の種類を示す情報、１２４はこのソースコードすなわちモジュールが所属する親モジュールに関する情報、１２５はこのソースコードに関する情報、１２６は「文字」、「整数」あるいは「実数」や情報長など設計情報の属性を示す情報である。この仕様書解析情報によれば、ソースコードのどの位置に、どのような設計情報が記載されているかを認識することができる。」
（ｄ）「【００１７】照合装置９０は、仕様書解析情報記憶装置５０内に記憶されている仕様書解析情報（図６）と、ソースコード解析情報記憶装置８０内に記憶されているソースコード解析情報（図７）とから、プログラム仕様書およびソースプログラムに記述されている各種設計情報を照合し、例えば、モジュール定義名やモジュール属性、そのモジュール内で変数として使用されるパラメータの数、各定義名および属性、そのモジュール内でデータ領域として使用されるデータ定義名やデータ属性、さらにこのデータ領域の個々の領域を示す各データメンバ定義名やデータメンバ属性などの整合性を検査し、その結果を照合情報記憶装置９１に出力する。
【００１８】図８は、照合装置９０から出力される照合結果を示す説明図であり、プログラム仕様書とソースコードとで整合しない設計情報について出力される。例えば、プログラム仕様書のみに定義されており対応する設計情報がソースコードから検出されないもの、逆にソースコードのみに定義されており対応する設計情報がプログラム仕様書から検出されないもの、あるいはプログラム仕様書とソースコードとの両方に記述されてはいるが、その設計情報の属性や数などの詳細が一致しないものなどが、プログラム仕様書およびソースコード内における位置とともに出力される。
【００１９】このように、プログラムを作成するための各種設計情報に関する詳細な情報を示す項目にしたがって入力された情報に基づいて、各種設計情報の詳細を示す仕様書解析情報を生成するとともに、ソースコードを解析することによりソースコード内に記述されている設計情報の詳細を示すソースコード解析情報を生成し、これら仕様書解析情報およびソースコード解析情報に基づいてプログラム仕様書およびソースコードに記述されている各種設計情報を照合することにより、プログラム仕様書とソースコードとの整合検査を行うようにしたので、両者の整合性を詳細にかつ機械的に検査することが可能となり、プログラムの設計効率や評価効率を改善することができる。」
（ｅ）第６図には、仕様書解析情報が、「仕様書名」、「位置」、「設計情報の種類」、「親のモジュール名／データ名／データメンバ名」、「モジュール名／パラメータ名／データ名／データメンバ名」、「属性」から構成されていることが記載されている。（なお、上記「パラメータ名」は、図中では「パタメータ名」と記載されているが、第【００１７】段落の記載や技術常識からみて誤記と思われる。）
（ｆ）第７図には、ソースコード解析情報が、「ソースコード名」、「位置」、「設計情報の種類」、「親のモジュール名／データ名／データメンバ名」、「モジュール名／パラメータ名／データ名／データメンバ名」、「属性」から構成されていることが記載されている。（なお、上記「パラメータ名」は、図中では「パタメータ名」と記載されているが、第【００１７】段落の記載や技術常識からみて誤記と思われる。）
（ｇ）第８図には、照合結果出力例として、仕様書のみ定義されている＜モジュール名＞、ソースコードのみ定義されている＜モジュール名＞、仕様書とソースコードが一致しないものとして＜モジュール名＞の属性が一致しないものなどが記載されている。
   　
　ここで、上記記載について検討する。
（ア）上記（ａ）によると、引用例１は「プログラムの仕様が記述されているプログラム仕様書と、このプログラム仕様書に基づいて作成されたソースコードとの整合性を検査するプログラム仕様整合検査装置」について記載されている。
（イ）上記（ａ）及び（ｂ）によると、仕様書記憶装置内のプログラム仕様書を解析し、各種設計情報の詳細を示す仕様書解析情報を生成する仕様書解析情報生成手段が記載され、また、上記（ｅ）によれば、仕様書解析情報が、「仕様書名」、「位置」、「設計情報の種類」、「親のモジュール名／データ名／データメンバ名」、「モジュール名／パラメータ名／データ名／データメンバ名」、「属性」から構成されていることが記載されている。
　そうすると、ここには、「仕様書記憶装置内のプログラム仕様書を解析し、各種設計情報の詳細を示す、「仕様書名」、「位置」、「設計情報の種類」、「親のモジュール名／データ名／データメンバ名」、「モジュール名／パラメータ名／データ名／データメンバ名」、「属性」から構成される仕様書解析情報を生成する仕様書解析情報生成手段」が記載されているといえる。
（ウ）上記（ａ）及び（ｃ）によると、ソースコード記憶装置内に記憶されているソースコードを、字句解析及び構文解析することによりソースコード内に記述されている各種設計情報の詳細を示すソースコード解析情報を生成するソースコード解析情報生成手段が記載され、また、上記（ｆ）によれば、ソースコード解析情報が、「ソースコード名」、「位置」、「設計情報の種類」、「親のモジュール名／データ名／データメンバ名」、「モジュール名／パラメータ名／データ名／データメンバ名」、「属性」から構成されていることが記載されている。
　そうすると、ここには、「ソースコード記憶装置内に記憶されているソースコードを、字句解析及び構文解析することにより、各種設計情報の詳細を示す、「ソースコード名」、「位置」、「設計情報の種類」、「親のモジュール名／データ名／データメンバ名」、「モジュール名／パラメータ名／データ名／データメンバ名」、「属性」から構成されるソースコード解析情報を生成するソースコード解析情報生成手段」が記載されているといえる。
（エ）上記（ａ）及び（ｄ）によると、仕様書解析情報およびソースコード解析情報に基づいてプログラム仕様書およびソースコードに記述されている各種設計情報を照合し、その照合結果を出力する照合手段が記載されており、ここでの照合は、モジュール定義名やモジュール属性、そのモジュール内で変数として使用されるパラメータの数、各定義名および属性、そのモジュール内でデータ領域として使用されるデータ定義名やデータ属性、さらにこのデータ領域の個々の領域を示す各データメンバ定義名やデータメンバ属性などの整合性を検査するものであり、また、上記（ｇ）によるとこの照合結果として、プログラム仕様書のみに定義されている「モジュール名」やソースコードのみに定義されている「モジュール名」、あるいはプログラム仕様書とソースコードとの両方に記述されてはいるが、「モジュール名」の属性が一致しないものなどが出力されることが記載されている。
　そうすると、ここには、「仕様書解析情報およびソースコード解析情報に基づいてプログラム仕様書およびソースコードに記述されている各種設計情報を照合し、その照合結果を出力する照合手段であって、ここでの照合は、モジュール定義名やモジュール属性、そのモジュール内で変数として使用されるパラメータの数、各定義名および属性、そのモジュール内でデータ領域として使用されるデータ定義名やデータ属性、さらにこのデータ領域の個々の領域を示す各データメンバ定義名やデータメンバ属性などの整合性を検査するものであり、また、照合結果として、プログラム仕様書のみに定義されている「モジュール名」やソースコードのみに定義されている「モジュール名」、あるいはプログラム仕様書とソースコードとの両方に記述されてはいるが、「モジュール名」の属性が一致しないものなどが出力される」ことが記載されているといえる。
（オ）以上のことから、引用例１には以下の発明（以下、「引用発明」という）が記載されていると認められる。
「プログラムの仕様が記述されているプログラム仕様書と、このプログラム仕様書に基づいて作成されたソースコードとの整合性を検査するプログラム仕様整合検査装置において、
　仕様書記憶装置内のプログラム仕様書を解析し、各種設計情報の詳細を示す、「仕様書名」、「位置」、「設計情報の種類」、「親のモジュール名／データ名／データメンバ名」、「モジュール名／パラメータ名／データ名／データメンバ名」、「属性」から構成される仕様書解析情報を生成する仕様書解析情報生成手段と、
　ソースコード記憶装置内に記憶されているソースコードを、字句解析及び構文解析することにより、各種設計情報の詳細を示す、「ソースコード名」、「位置」、「設計情報の種類」、「親のモジュール名／データ名／データメンバ名」、「モジュール名／パラメータ名／データ名／データメンバ名」、「属性」から構成されるソースコード解析情報を生成するソースコード解析情報生成手段と、
　仕様書解析情報およびソースコード解析情報に基づいてプログラム仕様書およびソースコードに記述されている各種設計情報を照合し、その照合結果を出力する照合手段であって、ここでの照合は、モジュール定義名やモジュール属性、そのモジュール内で変数として使用されるパラメータの数、各定義名および属性、そのモジュール内でデータ領域として使用されるデータ定義名やデータ属性、さらにこのデータ領域の個々の領域を示す各データメンバ定義名やデータメンバ属性などの整合性を検査するものであり、また、照合結果として、プログラム仕様書のみに定義されている「モジュール名」やソースコードのみに定義されている「モジュール名」、あるいはプログラム仕様書とソースコードとの両方に記述されてはいるが、「モジュール名」の属性が一致しないものなどが出力される、
プログラム仕様整合検査装置」
　　
（１−２）また、原査定の拒絶の理由に引用され、本願の出願日前の平成１３年１２月７日に出願公開された特開２００１−３３７８２４号公報（以下、「引用例２」という。）には、図面とともに、次の事項が記載されている。
（ｈ）「【００６４】第４の実施形態について、図６を参照して説明する。第１の実施形態の原子力計装設計支援システムにおいて、ディスプレイを追加し、ソフトウェアのフロー図からプログラムを自動生成する機能及びプログラムからソフトウェアのフロー図を逆生成する機能、オリジナルのソフトウェアフロー図とプログラムのソースコードの整合性確認支援機能及び逆生成したソフトウェアフロー図とオリジナルのソフトウェアフロー図との自動比較照合機能を具備し、図書とプログラム間の仕様整合性確認作業を自動で行うことが可能な原子力計装設計支援システムである。
【００６５】ソフトウェアのフロー図からプログラムを自動生成する機能及びプログラムからソフトウェアのフロー図を逆生成する機能を有し、以下の処理手順でその機能を実現する。
【００６６】（１３）作業者がＤＩＳＰ２１から該当するソフトウェアのフロー図の図書番号を設定する。
【００６７】（１４）ＥＷＳ２０はＣＡＤデータベース２７を検索シムし、該当するソフトウェアのフロー図を表示する。
【００６８】（１５）作業者がプログラム生成ボタンを選択すると、プログラムが自動生成され、ソースコードがソフトウェアのフロー図と併記してＤＩＳＰ２１に表示される。
【００６９】（１６）作業者はＤＩＳＰ２１の面面を見ながらソフトウェアのフロー図とソースコードの比較照合作業を行う。又、生成されたプログラムを起動し動作確認を行うと共に、後述する第６及び第７の実施形態に示すところの健全性確認機能を呼び出し、ソフトウェアの健全性確認も行うことができる。
【００７０】（１７）逆生成ボタンを選沢すると、上記で作製したプログラムからソフトウェアフロー図を逆生成する。
【００７１】（１８）第３の実施形態で逆生成したソフトウェアフロー図とオリジナルのソフトウェアフロー図との比較照合を行い、整合性確認を自動で行う。もし、両者の相違点が発見された場合には、ＤＩＳＰ２１に表示し、作業者が確認し、ソフトウェアフロー図の変更作業等を行う。」
　　
　そうすると、ここには次の技術（以下、「引用例２記載事項」という。）が記載されていると認められる。
「ソフトウェアフロー図とオリジナルのソフトウェアフロー図との比較照合を行い、整合性確認を自動で行い、両者の相違点が発見された場合には表示すること」
　
（１−３）また、原査定の拒絶の理由に周知例として引用され、本願の出願日前の平成８年７月１２日に出願公開された特開平８−１７９９３８号公報（以下、「周知例１」という。）には、図面とともに、次の事項が記載されている。
（ｉ）「【請求項３】仕様書を自動的に生成する仕様書自動生成装置において、
仕様書生成規則文を挿入したソースプログラムをメモリに読込むデータ読込み手段と、
仕様書生成規則文を解析する解析処理手段と、
仕様書生成規則文の解析に基づいて仕様書データを作成するデータ作成処理手段と、
該仕様書データからソースプログラムのフローチャート図又はＰＡＤチャート図を出力する仕様書出力手段とを備え、
仕様書生成規則文を挿入したソースプログラムから仕様書生成規則文を解析して、該フローチャート図又は該ＰＡＤチャート図を出力することを特徴とする、
仕様書自動生成装置。」
（ｊ）「【０００８】＜ハ＞仕様書生成規則文挿入例（図３、図４）
アセンブラ言語で記載されたソースプログラムのサブルーチンから仕様書を作成するものであり、仕様書としてフローチャート図を印刷する例を取り上げる。仕様書生成規則文としてプログラムの初めと終りに開始と終了の文を挿入する。次にＭＯＶ命令は表示データ転送処理を表しているとすれば、処理ブロックを示す「；＋＋」のみの記号を付し、必要ならば処理の内容を示す文字をその後に記載する。さらに、判定と分岐選択の文を挿入してより詳細な仕様書を作成することができる。これら仕様書生成規則文を挿入されたソースプログラムを入力データ読取り装置２でメモリに入力し、仕様書生成規則解析装置３及び仕様書データ作成装置４で順次仕様書生成規則文を解析し仕様書データ５を作成する。作成された仕様書データを仕様書印刷装置６で出力する場合、出力形式を選択し、図３ではフローチャート図で出力し、図４ではＰＡＤチャート図で出力している。これら仕様書データは出力形式によらない。このように同一の内容の仕様書を異なった形式で出力することができる。」
　　
（１−４）また、原査定の拒絶の理由に周知例として引用され、本願の出願日前の平成５年１２月７日に出願公開された特開平５−３２４２８９号公報（以下、「周知例２」という。）には、図面とともに、次の事項が記載されている。
（ｋ）「【請求項１】　プログラム設計書中に設定される説明文をなし固有のコメント記述形式で記述されたコメント記述部分を有するソースプログラムが格納されるソースプログラムファイルと、
このソースプログラムファイルに格納されているソースプログラムを入力して、プログラムの流れ、プログラム制御構造および前記固有のコメント記述形式のコメント記述部分を解析し、その解析結果をもとに同プログラムから前記説明文を含む設計情報を抽出してプログラム設計書を生成するプログラム設計書生成手段と、
　を具備することを特徴とするプログラム設計書自動作成装置。」
（ｌ）「【００２２】次に、図１に示すプログラム設計書自動作成装置の処理の概要を説明する。まず本装置を使用してプログラム設計書を自動作成しようとする利用者は、ソースプログラムを作成する際に、プログラム設計書上に記述したい説明文（以下、シンボル記述情報と称する）を、図１において符号２１〜２３で示されるように、本装置特有のコメント記述方法に従って記述しておく。
【００２３】次に利用者は、本装置特有のコメント記述がなされたソースプログラムがソースプログラムファイル１に格納されている状態で、入力装置１０を操作し、作成したいプログラム設計書の種別、用紙の大きさを入力し、動作開始の指示を入力する。この利用者の入力操作に従い、入力装置１０から制御部１１に対してプログラム設計書の種別、用紙サイズが指定され、更に動作開始が指示される。
【００２４】制御部１１は入力装置１０から動作開始指示を受けると、まずソースプログラム解析・プログラム設計書自動生成部３を起動する。これにより、以下に述べるプログラム設計書の自動作成が開始される。
【００２５】ソースプログラム解析・プログラム設計書自動生成部３は、ソースプログラムファイル１に格納されているソースプログラムを入力し、プログラムの流れ、プログラムの制御構造、本装置特有のコメント記述を解析し、プログラム設計書の基本データであるメタ・データを生成し、メタ・データファイル４に格納する。ソースプログラム解析・プログラム設計書自動生成部３はメタ・データの生成を完了すると、その旨を制御部１１に通知する。これにより制御部１１は、プログラム設計書自動分割部５を起動する。
【００２６】プログラム設計書自動分割部５はまず、メタ・データファイル４に格納されているメタ・データの示すプログラム設計書を論理的な仮想無限空間に配置する。次にプログラム設計書自動分割部５は、仮想無限空間上のプログラム設計書が指定の用紙サイズに収まるか否かを調べ、収まらなければ、そのプログラム設計書を、指定のプログラム設計書種別、用紙サイズに基づいて自動分割する。ここでは、例えモジュール仕様書であれば、行あふれなどによる（行を単位の）分割が行われ、アルゴリズムチャートであれば、制御構造（の論理的な入れ子のレベル深さ）を認識して、論理的な入れ子レベル単位で考えられる分割のケースの中で、指定された用紙サイズに収まる最も効率的な（分割が少ない）分割を探して行われる。
【００２７】このようにして自動分割が終了したプログラム設計書は、本装置で自動生成されたプログラム設計書として、プログラム設計書ファイル６に格納される。このプログラム設計書は、制御部１１の制御のもとで、プログラム設計書表示・編集・印刷部７により、表示装置８から表示出力され、また印刷装置９から印刷出力される。」
（ｍ）第６図及び第７図には、メタ・データの示すプログラム設計書としてフローチャートやＰＡＤなどによる抽象化表現が行われることが記載されている。
   　
　したがって、以上の（ｉ）乃至（ｍ）によれば、「アノテーションが付加されたソースプログラムから、該アノテーションにもとづいて該ソースプログラムの制御構造を解析して設計書データを生成し、フローチャートやＰＡＤなどの抽象化表現を行うこと」は周知の技術であると認められる。
　　
（２）対比
　そこで、本件補正発明と引用発明とを比較する。
（ア）引用発明の「プログラム仕様整合検査装置」は、コンピュータで構成されるものであることは明らかであるから、ここで特定される各手段は、プログラムにより実行される情報処理を特定するものである。
　また、該「プログラム仕様整合検査装置」の各手段による情報処理に注目すれば、引用発明は実質的に「コンピュータに実行させるためのプログラム」であるともいえる。
（イ）引用発明の「ソースコード記憶装置内に記憶されているソースコードを、字句解析及び構文解析することにより、各種設計情報の詳細を示す、「ソースコード名」、「位置」、「設計情報の種類」、「親のモジュール名／データ名／データメンバ名」、「モジュール名／パラメータ名／データ名／データメンバ名」、「属性」から構成されるソースコード解析情報を生成するソースコード解析情報生成手段」について、この「ソースコード」は、本件補正発明における「ソフトウェアのソースコード」に相当するものであり、また、引用発明では「ソースコード記憶装置内に記憶されているソースコード」を解析するために、「ソースコード」を記憶装置から読み出すものであることは自明である。
　そうすると、本件補正発明と引用発明は、後記する点で相違するものの、
「ソフトウェアのソースコードを取得する処理」
を備える点で共通している。
（ウ）また、引用発明が「ソースコード」を解析した結果として出力する「ソースコード解析情報」には、ソフトウェアを構成する基本的な要素である「モジュール名」と、この基本的な要素である「モジュール名」に対して関連する「親のモジュール名」が含まれており、引用発明の「モジュール名」と「親のモジュール名」は、本件補正発明における「ソフトウェアを構成する構成要素」と「該構成要素間の関連を示す関連要素」に相当するものといえ、また、引用発明ではこれらモジュールを「ソースコード」から抽出した上で「ソースコード解析情報」を生成するものであることも明らかである。
　そうすると、本件補正発明と引用発明は、後記する点で相違するものの、
「取得した前記ソースコードをもとに、前記ソフトウェアを構成する構成要素および該構成要素間の関連を示す関連要素とを抽出する処理」
を備える点で共通している。
（エ）そして、引用発明の「各種設計情報の詳細を示す、「仕様書名」、「位置」、「設計情報の種類」、「親のモジュール名／データ名／データメンバ名」、「モジュール名／パラメータ名／データ名／データメンバ名」、「属性」から構成される仕様書解析情報」も、ソフトウェアを構成する基本的な要素である「モジュール名」、この基本的な要素である「モジュール名」に対して関連する「親のモジュール名」や各種「データ名」や「属性」からなる「ソフトウェアの構造」を表すソースコードからの情報であることは明らかである。
　そうすると、本件補正発明と引用発明は、後記する点で相違するものの、
「抽出した前記構成要素および前記関連要素をもとに、前記ソフトウェアの構造を表すソースコードからの情報を生成する処理」
を備える点で共通している。
（オ）引用発明の「仕様書記憶装置内のプログラム仕様書を解析し、各種設計情報の詳細を示す、「仕様書名」、「位置」、「設計情報の種類」、「親のモジュール名／データ名／データメンバ名」、「モジュール名／パラメータ名／データ名／データメンバ名」、「属性」から構成される仕様書解析情報を生成する仕様書解析情報生成手段」について、この「プログラム仕様書」は上記（イ）で示した「ソースコード記憶装置内に記憶されているソースコード」すなわちソフトウェアに対応した仕様書であり、本件補正発明における「仕様設計情報」に相当し、また、上記（ウ）と同様に該「プログラム仕様書」を解析した結果としてソフトウェアを構成する基本的な要素である「モジュール名」、この基本的な要素である「モジュール名」に対して関連する「親のモジュール名」等の「ソフトウェアの構造」を取得する処理が行われるものといえる。
　また、一般に仕様書はソフトウェアの構造を定義したものであり、また、本件補正発明の「ソフトウェアの構造を定義するアーキテクチャ情報」でいう「アーキテクチャ情報」は、「前記アーキテクチャ情報に定義された前記構成要素および前記関連要素」との記載から、ソフトウェアの構造を定義する具体的な情報を意味するものとして使用されるものと解されることから、引用発明の上記ソフトウェアを構成する基本的な要素である「モジュール名」、この基本的な要素である「モジュール名」に対して関連する「親のモジュール名」等の「ソフトウェアの構造」を取得する処理も、本件補正発明でいう「前記構成要素および前記関連要素によって前記ソフトウェアの構造を定義するアーキテクチャ情報を取得する処理」に相当するものといえる。
　また、上記（エ）と同様に、引用発明の「各種設計情報の詳細を示す、「仕様書名」、「位置」、「設計情報の種類」、「親のモジュール名／データ名／データメンバ名」、「モジュール名／パラメータ名／データ名／データメンバ名」、「属性」から構成される仕様書解析情報」も、「プログラム仕様書」で定義されている「ソフトウェアの構造」を表す具体的な情報であり、また、該「仕様書解析情報」と上記「ソースコード解析情報」は「ソフトウェアの構造」を表す同一の項目で構成される情報である。
　そうすると、本件補正発明と引用発明は、後記する点で相違するものの、
「前記ソフトウェアに対応する仕様設計情報において、前記構成要素および前記関連要素によって前記ソフトウェアの構造を定義するアーキテクチャ情報を取得する処理と、
　前記アーキテクチャ情報に定義された前記構成要素および前記関連要素をもとに、前記ソフトウェアの構造を表す、前記ソースコードからの情報と同一の項目で構成される仕様設計情報からの情報を生成する処理」
を備える点で共通している。
（カ）引用発明の「仕様書解析情報およびソースコード解析情報に基づいてプログラム仕様書およびソースコードに記述されている各種設計情報を照合し、その照合結果を出力する照合手段であって、ここでの照合は、モジュール定義名やモジュール属性、そのモジュール内で変数として使用されるパラメータの数、各定義名および属性、そのモジュール内でデータ領域として使用されるデータ定義名やデータ属性、さらにこのデータ領域の個々の領域を示す各データメンバ定義名やデータメンバ属性などの整合性を検査するものであり、また、照合結果として、プログラム仕様書のみに定義されている「モジュール名」やソースコードのみに定義されている「モジュール名」、あるいはプログラム仕様書とソースコードとの両方に記述されてはいるが、「モジュール名」の属性が一致しないものなどが出力される」について、ここでは「仕様書解析情報」と「ソースコード解析情報」の「モジュール定義名」の照合が行われており、具体的には基本的な要素である「モジュール名」及び基本的な要素である「モジュール名」に対して関連する「親のモジュール名」等についての照合が行われるものであって、一致しない「モジュール名」等を検出するものである。
　そうすると、本件補正発明と引用発明は、後記する点で相違するものの、
「前記ソースコードからの情報の構成要素または関連要素と前記仕様設計情報からの情報の構成要素または関連要素とを比較し、前記ソースコードからの情報および前記仕様設計情報からの情報において構成要素または関連要素が対応していない場合に、該対応していない構成要素または関連要素をギャップ情報として検出する処理」
を備える点で共通している。
（キ）引用発明の「プログラム仕様整合検査装置」で行われる情報処理は、例えば上記（ｄ）の第【００１９】段落に「これら仕様書解析情報およびソースコード解析情報に基づいてプログラム仕様書およびソースコードに記述されている各種設計情報を照合することにより、プログラム仕様書とソースコードとの整合検査を行うようにしたので、両者の整合性を詳細にかつ機械的に検査することが可能となり、プログラムの設計効率や評価効率を改善することができる。」と記載されているように、これもソフトウェアの保守支援のためのものであるといえる。
　そうすると、本件補正発明と引用発明は、後記する点で相違するものの、
「コンピュータに実行させるためのソフトウェア保守支援プログラム」
である点で共通している。
（ク）以上のことから、本件補正発明と引用発明は、
「ソフトウェアのソースコードを取得する処理と、
　取得した前記ソースコードをもとに、前記ソフトウェアを構成する構成要素および該構成要素間の関連を示す関連要素とを抽出する処理と、
　抽出した前記構成要素および前記関連要素をもとに、前記ソフトウェアの構造を表すソースコードからの情報を生成する処理と、
  前記ソフトウェアに対応する仕様設計情報において、前記構成要素および前記関連要素によって前記ソフトウェアの構造を定義するアーキテクチャ情報を取得する処理と、
　前記アーキテクチャ情報に定義された前記構成要素および前記関連要素をもとに、前記ソフトウェアの構造を表す、前記ソースコードからの情報と同一の項目で構成される仕様設計情報からの情報を生成する処理と、
　前記ソースコードからの情報の構成要素または関連要素と前記仕様設計情報からの情報の構成要素または関連要素とを比較し、前記ソースコードからの情報および前記仕様設計情報からの情報において構成要素または関連要素が対応していない場合に、該対応していない構成要素または関連要素をギャップ情報として検出する処理とを、
　コンピュータに実行させるためのソフトウェア保守支援プログラム」
　である点で一致し、以下の点で相違している。
　
［相違点１］
　処理対象であるソフトウェアのソースコードが、本件補正発明では「ソフトウェアを構成する要素を示す所定のアノテーションが付加されたソフトウェアのソースコード」であって、「前記ソースコードのアノテーションをもとに、前記ソフトウェアを構成する構成要素および該構成要素間の関連を示す関連要素とを抽出する」のに対し、引用発明ではそのようになっていない点。
　　
［相違点２］
　ソースコードに基づいて生成する情報が、本件補正発明では「ソフトウェアの構造を、所定のモデリング表現にもとづいて表すソースコード構造モデル」であるのに対し、引用発明では「各種設計情報の詳細を示す、「ソースコード名」、「位置」、「設計情報の種類」、「親のモジュール名／データ名／データメンバ名」、「モジュール名／パラメータ名／データ名／データメンバ名」、「属性」から構成されるソースコード解析情報」である点。
　　
［相違点３］
　仕様設計情報に基づいて生成する情報が、本件補正発明では「ソフトウェアの構造を、前記ソースコード構造モデルの生成に用いたモデリング表現にもとづいて表すアーキテクチャモデル」であるのに対し、引用発明では「各種設計情報の詳細を示す、「仕様書名」、「位置」、「設計情報の種類」、「親のモジュール名／データ名／データメンバ名」、「モジュール名／パラメータ名／データ名／データメンバ名」、「属性」から構成される仕様書解析情報」である点。
　　
［相違点４］
　本件補正発明では「ソースコード構造モデル」と「アーキテクチャモデル」を比較するものであるのに対し、引用発明では「ソースコード解析情報」と「仕様書解析情報」の比較を行うものである点。
　　
（３）当審の判断
（３−１）［相違点１］及び［相違点２］について
　前記周知例１及び２によれば、「アノテーションが付加されたソースプログラムから、該アノテーションにもとづいて該ソースプログラムの制御構造を解析して設計書データを生成し、フローチャートやＰＡＤなどの抽象化表現を行うこと」は周知の技術であって、これはソフトウェアを構成する構成要素や構成要素間の関連要素を抽出してフローチャートやＰＡＤなどの抽象化表現、すなわちソフトウェアの構造を表すモデルを生成するものであるから、引用発明において解析対象及び解析結果として生成する情報として、当該周知技術を採用することにより前記相違点１及び相違点２に係る構成とすることは、当業者が容易に想到しえたことである。
　
（３−２）［相違点３］について
　ソフトウェアの仕様書を解析してソフトウェアの構造を表すモデルを生成することは、例えば、特開平１１−２３７９７９号公報（平成１１年８月３１日出願公開）及び特開２００２−２８７９６１号公報（平成１４年１０月４日出願公開）などに記載されているように周知の技術である。
　また、ソースコードから生成されるモデルとの比較を行うのであるから、両者は同じモデルを採用すべきことは自明であるし、また、どのようなモデルを選択するか自体は当業者の単なる設計的事項にすぎない。
　したがって、引用発明においてプログラム仕様書を解析した結果として生成する情報として、当該周知技術を採用することにより前記相違点３に係る構成とすることは、当業者が容易に想到しえたことである。
    　
（３−３）［相違点４］について
　引用例２記載事項の「ソフトウェアフロー図とオリジナルのソフトウェアフロー図との比較照合を行い、整合性確認を自動で行い、両者の相違点が発見された場合には表示すること」によれば、ソフトウェアの構造を表す「ソフトウェアフロー図」、すなわちソフトウェアの構造を表すモデル同士の比較照合により、整合性の確認を自動で行い、両者の相違点を検出する技術は公知である。
　してみれば、引用発明において、ソースコード及びプログラム仕様書を解析した結果としてソフトウェアの構造を表すモデルを生成することに伴い、「照合手段」としてモデル同士の比較照合を行う当該公知の技術を適用することにより、前記相違点４に係る構成とすることは、当業者が容易に想到しえたことである。
    　
（３−４）上記（３−１）乃至（３−３）で示したように、上記相違点に係る構成はいずれも格別の困難性があるものではなく、当業者であれば容易に想到しえたことである。
　よって、本件補正発明は、引用発明、引用例２記載事項及び周知技術に基づいて、当業者が容易に発明をすることができたものであるから、特許法２９条２項の規定により特許出願の際独立して特許を受けることができないものである。
　そして、本件補正発明の作用効果も、引用発明、引用例２記載事項及び周知技術から当業者が予測できる範囲のものである。
　
（４）むすび
　以上のとおり、本件補正は、平成１８年法律第５５号改正附則第３条第１項によりなお従前の例によるとされる同法による改正前の特許法１７条の２第５項で準用する同法１２６条５項の規定に違反するものであり、同法１５９条１項で準用する同法５３条１項の規定により却下されるべきものである。　
　
３．本願発明について
３−１．本願の請求項に係る発明について
　平成２４年７月１０日付の手続補正は上記のとおり却下されたので、本願の請求項１に係る発明（以下、「本願発明」という。）は、平成２３年１０月２４日付手続補正書により補正された特許請求の範囲の請求項１に記載された事項により特定される、以下のとおりのものである。
「ソフトウェアを構成する要素を示す所定のアノテーションが付加されたソフトウェアのソースコードを取得する処理と、
　取得した前記ソースコードのアノテーションをもとに、前記ソフトウェアを構成する構成要素および該構成要素間の関連を示す関連要素とを抽出する処理と、
　抽出した前記構成要素および前記関連要素をもとに、前記ソフトウェアの構造を、所定のモデリング表現にもとづいて表すソースコード構造モデルを生成する処理と、
　前記ソフトウェアに対応する仕様設計情報において、前記構成要素および前記関連要素によって前記ソフトウェアの構造を定義するアーキテクチャ情報を取得する処理と、
　前記アーキテクチャ情報に定義された前記構成要素および前記関連要素をもとに、前記ソフトウェアの構造を、前記所定のモデリング表現にもとづいて表すアーキテクチャモデルを生成する処理と、
　前記ソースコード構造モデルの構成要素または関連要素と前記アーキテクチャモデルの構成要素または関連要素とを比較し、前記ソースコード構造モデルおよび前記アーキテクチャモデルにおいて構成要素または関連要素が対応していない場合に、該対応していない構成要素または関連要素をギャップ情報として検出する処理とを、
　コンピュータに実行させるためのソフトウェア保守支援プログラム。」
　　
３−２．引用例
　原査定の拒絶の理由に引用された引用例及びその記載事項は、前記「２−３（１）」に記載したとおりである。　
　
３−３．対比・判断
　本願発明は、前記２−３．で検討した本件補正発明から２−２．の前記限定事項を省いたものであるから、本願発明の構成要件をすべて含み、さらに他の構成要件を付加したものに相当する本件補正発明が、前記２．３（３）に記載したとおり、引用発明、引用例２記載事項及び周知技術に基づいて、当業者が容易に発明をすることができたものであるから、本願発明も同様の理由により、引用発明、引用例２記載事項及び周知技術に基づいて、当業者が容易に発明をすることができたものである。　
　そして、本願発明の作用効果も、引用発明、引用例２記載事項及び周知技術から当業者が予測できる範囲のものである。
　
４．むすび
　以上のとおり、本願発明は、引用発明、引用例２記載事項及び周知技術に基づいて、当業者が容易に発明をすることができたものであり、特許法第２９条第２項の規定により特許を受けることができないものであるから、その余の請求項について検討するまでもなく、本願は拒絶すべきものである。
　　　
　よって、結論のとおり審決する。