(57)【特許請求の範囲】
【請求項１】
プログラムの実装に関する情報を受け取り、実装標準情報を生成し、実装標準を構成する処理パターンから処理パターン情報を生成し、ソースプログラムを受け取り、字句、構文を解析しプログラム構造情報を生成し、前記プログラム構造情報から前記処理パターン情報に適合するプログラム構文列を検索し、処理パターン検索結果情報を生成する処理部と、
前記実装標準情報、前記処理パターン情報、前記プログラム構造情報、および、前記処理パターン検索結果情報を格納する情報格納部と、
を含むことを特徴とする診断システム。
【請求項２】
前記処理部は、前記処理パターン検索結果情報から前記ソースプログラムが前記実装標準情報に従っている程度を判断し診断結果を生成し出力することを特徴する請求項１の診断システム。
【請求項３】
前記処理部は、前記実装標準情報、および、前記処理パターン情報を生成する実装標準情報化部と、前記プログラム構造情報を生成するプログラム構造解析部と、前記処理パターン検索結果情報を生成する処理パターン検索部と、前記診断結果を生成する実装標準診断部と、
を含むことを特徴とする請求項２の診断システム。
【請求項４】
前記処理パターン情報は、一意に識別するための識別情報である処理パターンＩＤを含み、
前記実装標準情報は、一意に識別するための識別情報である実装標準ＩＤ、および、前記処理パターン情報内の対応する前記処理パターンＩＤを含むことを特徴とする請求項３の診断システム。
【請求項５】
前記処理パターン情報は、構造単位リストを含み、
前記構造単位リストは、内包構造単位リストを含むことを特徴とする請求項４の診断システム。
【請求項６】
前記実装標準診断部は、前記ソースプログラムのファイル名、前記実装標準ＩＤ、実装標準の実装率、処理パターンの名称、または、前記ソースプログラムの内容を出力することを特徴とする請求項４、または、５の診断システム。
【請求項７】
プログラムの実装に関する情報を受け取り、実装標準情報を生成し、実装標準を構成する処理パターンから処理パターン情報を生成し、ソースプログラムを受け取り、字句、構文を解析しプログラム構造情報を生成し、前記プログラム構造情報から前記処理パターン情報に適合するプログラム構文列を検索し、処理パターン検索結果情報を生成することを特徴とする診断方法。
【請求項８】
前記処理パターン検索結果情報から前記ソースプログラムが前記実装標準情報に従っている程度を判断し診断結果を生成し出力することを特徴する請求項７の診断方法。
【請求項９】
実装に関する情報を受け取り、実装標準情報を生成し、実装標準を構成する処理パターンから処理パターン情報を生成し、ソースプログラムを受け取り、字句、構文を解析しプログラム構造情報を生成し、前記プログラム構造情報から前記処理パターン情報に適合するプログラム構文列を検索し、処理パターン検索結果情報を生成する処理をコンピュータに実行させることを特徴とするプログラム。
【請求項１０】
前記処理パターン検索結果情報から前記ソースプログラムが前記実装標準情報に従っている程度を判断し診断結果を生成し出力する処理をコンピュータに実行させることを特徴する請求項９のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、診断システム、診断方法、および、プログラムに関する。
【背景技術】
【０００２】
現在、多くの企業や組織において、大規模なコンピュータシステムが、さまざまな目的で稼働している。システム上では、大人数により開発された何百万行からなるソースプログラムから構成されるソフトウェアが動作しており、多くの技術者がこれらシステムのソースプログラムをメンテナンスしている。
【０００３】
ソースプログラムのメンテナンスの際に、ソースプログラムの可読性を向上させるため、作業の効率化用に、さまざまなツールが用いられている。たとえば、ソースコード上の記述において、難解な表現、理解が困難な構造の存在する箇所を特定し、付近に「バグ」と呼ばれる論理的な問題が含まれていないかどうかを技術者に喚起させるリファクタリングツールと呼ばれるシステムがある。
【０００４】
リファクタリングシステムの一例が、特許文献１、特許文献２、非特許文献１、および、非特許文献２に記載されている。これらのリファクタリングシステムは、おおむね、プログラムの字句解析手段、または、構文解析手段、そしてパターン検索部を持ち、また、あらかじめ用意されたプログラム記述情報を持つ。
【０００５】
プログラム記述情報には、実装方法として注意しなければならないプログラム実装方式のパターンが含まれている。このような構成を有するリファクタリングシステムは、次のように動作する。
【０００６】
まず、リファクタリングシステムは、プログラムを字句解析手段、または、構文解析手段で解析し、その記述構造を情報化する。次に、リファクタリングシステムは、その中にプログラム記述情報内で定義されているパターンが存在するかどうかをパターン検索部で検索する。
【０００７】
プログラム記述情報には、具体的に次のような事が定義されている。たとえば、変数名の命名規則や最大文字列長、条件判断や繰り返し文のネスト（入れ子）段数などがパターンとして情報化されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００５−１８１１４号公報
【特許文献２】特開２００８−１８１３１１号公報
【非特許文献】
【０００９】
【非特許文献１】Prashant Deva ( Founder, Chronon Systems )、“Eclipse JDT のリファクタリング機能を探る”、［online］、２００９年１１月２４日、IBM developerWorks、［ ２０１３年８月５日検索］、インターネット＜ URL ：http://www.ibm.com/developerworks/jp/opensource/library/os-eclipse-refactoring/ ＞
【非特許文献２】Fuminobu Takeyama、“パターンマッチングを用いた静的解析”、［online］、明治大学計算理論研究室、［ ２０１３年８月５日検索］、インターネット＜ URL ：http://www.th.cs.meiji.ac.jp/researches/2007/takeyama/chap2.html ＞
【発明の概要】
【発明が解決しようとする課題】
【００１０】
前述のリファクタリングシステムには、共通して以下の問題があった。その問題点は、これらシステムは、ソースコードの処理を「意味的に」提示してくれるものではないので、プログラムの保守目的ではプログラムの理解度を飛躍的に向上させるものではない、ということである。
【００１１】
したがって、プログラムの実装に関する知識が少ない技術者では、既存システムを調査する際に、実装標準等ある一定の基準に従って実装されているか、あるいは、無秩序に実装されているのかを容易には、判断できないことである。
【００１２】
その理由は、リファクタリングシステムが検索するパターンが処理内容や意味との結び付けがなく、機械的な字句、構文の出現パターンを検索するに過ぎないため、その処理の内容がどのようなものかを提示することができないからである。
【００１３】
本発明の目的は、上記問題点を解決する診断システム、診断方法、および、プログラムを提供することである。
【課題を解決するための手段】
【００１４】
本発明の診断システムは、プログラムの実装に関する情報を受け取り、実装標準情報を生成し、実装標準を構成する処理パターンから処理パターン情報を生成し、ソースプログラムを受け取り、字句、構文を解析しプログラム構造情報を生成し、前記プログラム構造情報から前記処理パターン情報に適合するプログラム構文列を検索し、処理パターン検索結果情報を生成する処理部と、前記実装標準情報、前記処理パターン情報、前記プログラム構造情報、および、前記処理パターン検索結果情報を格納する情報格納部と、を含む。
【００１５】
本発明の診断方法は、プログラムの実装に関する情報を受け取り、実装標準情報を生成し、実装標準を構成する処理パターンから処理パターン情報を生成し、ソースプログラムを受け取り、字句、構文を解析しプログラム構造情報を生成し、前記プログラム構造情報から前記処理パターン情報に適合するプログラム構文列を検索し、処理パターン検索結果情報を生成する。
【００１６】
本発明のプログラムは、実装に関する情報を受け取り、実装標準情報を生成し、実装標準を構成する処理パターンから処理パターン情報を生成し、ソースプログラムを受け取り、字句、構文を解析しプログラム構造情報を生成し、前記プログラム構造情報から前記処理パターン情報に適合するプログラム構文列を検索し、処理パターン検索結果情報を生成する処理をコンピュータに実行させる。
【発明の効果】
【００１７】
本発明は、プログラム内にどの様な処理が実装されているか容易に把握できるという効果を持つ。
【図面の簡単な説明】
【００１８】
【図１】本発明の第１の実施の形態の構成を示すブロック図である。
【図２】本発明の第１の実施の形態の動作を示す動作説明図である。
【図３】本発明の第２の実施の形態の構成を示すブロック図である。
【図４】図３の実装標準ＤＢの構成を示す説明図である。
【図５】図３の処理パターンＤＢの構成を示す説明図である。
【図６】図５の構造単位リストの詳細構成を示す説明図である。
【図７】図３のプログラム構造情報ＤＢの構成を示す説明図である。
【図８】図３の処理パターン検索結果ＤＢの構成を示す説明図である。
【図９】本発明の第２の実施の形態の動作を示す動作説明図である。
【図１０】本発明の第３の実施の形態の構成を示すブロック図である。
【図１１】本発明の第３の実施の形態のソースプログラムの内容を示す図である。
【図１２】実装標準用ユーザインタフェースの構成を示す説明図である。
【図１３】本発明の第３の実施の形態の実装標準ＤＢの構成を示す説明図である。
【図１４】処理パターン入力用ユーザインタフェースの構成を示す説明図である。
【図１５】本発明の第３の実施の形態の処理パターンＤＢの構成を示す説明図である。
【図１６】本発明の第３の実施の形態の実装標準ＤＢの構成を示す説明図である。
【図１７】本発明の第３の実施の形態の構造単位の構成を示す説明図である。
【図１８】本発明の第３の実施の形態の構造単位リストの詳細構成を示す説明図である。
【図１９】プログラム構造解析部により生成された構文木を示す説明図である。
【図２０】本発明の第３の実施の形態のプログラム構造情報ＤＢの構成を示す説明図である。
【図２１】本発明の第３の実施の形態の処理パターン検索結果ＤＢの構成を示す説明図である。
【図２２】診断結果表示用ユーザインタフェースの構成を示す説明図である。
【発明を実施するための形態】
【００１９】
次に、本発明の第１の実施の形態について図面を参照して詳細に説明する。
【００２０】
図１は、第１の実施の形態の構成を示すブロック図である。図１を参照すると、第１の実施の形態の診断システム８００は、処理部１００、および、情報格納部２００を含む。処理部１００は、たとえば、プログラムがコンピュータを動作させて機能を実現するものである。また、情報格納部２００は、たとえば、主記憶装置、ハードディスク等の記憶装置である。診断システム８００は、単体のコンピュータ装置によって構成されてもよいし、処理部１００と情報格納部２００がネットワークを介して接続されたコンピュータシステムであってもよい。
【００２１】
次に、第１の実施の形態の動作について図面を参照して説明する。
【００２２】
図２は、第１の実施の形態の動作を示す動作説明図である。図２を参照すると、処理部１００は、プログラムの実装方式に関する情報（たとえば、実装標準）を受け取り、情報化して実装標準識別情報として情報格納部２００に格納する（ステップＳ１）。実装標準識別情報とは、たとえば、実装標準ＩＤ、または、実装標準名を含む。
【００２３】
さらに、処理部１００は、受け取ったプログラムの実装方式に関する情報（知識）のうち処理パターン（たとえば、プログラム処理の構文パターン）を情報化し、処理パターン情報として情報格納部２００に格納する（ステップＳ２）。たとえば、処理パターン情報は、処理パターン名、構造単位数、または、構造単位リストを含む。
【００２４】
また、処理部１００は、実装標準識別情報と処理パターン情報とを関連付けた関連付け情報を実装標準識別情報に付加し、全体で、実装標準情報として情報格納部２００に格納する（ステップＳ２）。上記関連付け情報は、たとえば、処理パターン数、または、処理パターンリストである。実装標準情報は、実装標準識別情報、および、関連付け情報を含む。
【００２５】
すなわち、処理部１００は、実装標準を、プログラム構文構造の集合として表現される処理パターンの集まりとして形式知化し、プログラム処理内容や意味という情報とプログラム構文の集合を関連付けて、実装標準情報とする。
【００２６】
また、処理部１００は、ソースプログラムを受け取り、ソースプログラムの字句、構文を解析し、プログラム構造情報として（生成し）情報格納部２００に格納する（ステップＳ３）。
【００２７】
そして、処理部１００は、情報格納部２００内のプログラム構造情報から情報格納部２００内の処理パターン情報に適合するプログラム構文列を検索し、処理パターン検索結果情報として（生成し）情報格納部２００に格納する（ステップＳ４）。
【００２８】
さらに、処理部１００は、情報格納部２００内の処理パターン検索結果情報からソースプログラムの実装方式が情報格納部２００内の実装標準情報に従っている程度を判断し診断結果として（生成し）出力する（ステップＳ５）。実装標準情報に従っている程度とは、実装標準情報にどのくらい適合しているかのことである。
【００２９】
実装標準とは、たとえば、システム内の装置やデータベース、ミドルウェアを利用する上である処理を実現させるためにプログラムを実装する場合、その実装に対してプロジェクト等で統一的に定められた規約、方針、または、方法論のことである。
【００３０】
次に、第１の実施の形態の効果について説明する。
【００３１】
第１の実施の形態は、処理内容とその処理を構成する構文のパターンとを関連付けた処理パターン情報を生成し、ソースプログラムを解析して生成したプログラム構造情報から処理パターン情報に適合するプログラム構文列を検索し、処理パターン検索結果情報を作成する。
【００３２】
したがって、第１の実施の形態は、処理パターン検索結果情報により、ソースプログラム内にどの様な処理が実装されているか容易に把握できるという効果を持つ。
【００３３】
また、第１の実施の形態は、実装標準を、プログラム構文構造の集合として表現される処理パターンの集まりとして形式知化し、プログラム処理内容や意味という情報とプログラム構文の集合を関連付けて、実装標準情報とする構成である。そして、第１の実施の形態は、処理パターン検索結果情報と実装標準情報とに基づいて、ソースプログラムが実装標準にどのくらい適合しているかを診断する構成である。
【００３４】
したがって、第１の実施の形態は、プログラム内の各処理がどれくらい実装標準に従って実装されているかを容易に把握できるという効果を持つ。
【００３５】
次に、本発明の第２の実施の形態について図面を参照して詳細に説明する。
【００３６】
図３は、第２の実施の形態の構成を示すブロック図である。図３を参照すると、第２の実施の形態のコンピュータ９００は、補助記憶装置７００、結果出力部６００、および、第１の実施の形態の診断システム８００を含む。
【００３７】
診断システム８００の処理部１００は、実装標準情報化部１１０、プログラム構造解析部１２０、処理パターン検索部１３０、および、実装標準診断部１４０を含む。診断システム８００の情報格納部２００は、補助記憶装置７００に含まれてもよいし、図示しない他の記憶装置（たとえば、主記憶装置）に含まれてもよい。
【００３８】
情報格納部２００は、実装標準ＤＢ２１０、処理パターンＤＢ２２０、プログラム構造情報ＤＢ２３０、および、処理パターン検索結果ＤＢ２４０を含む。ＤＢは、データベース（Data Base）である。
【００３９】
実装標準ＤＢ２１０、処理パターンＤＢ２２０、プログラム構造情報ＤＢ２３０、および、処理パターン検索結果ＤＢ２４０は、それぞれ、第１の実施の形態の実装標準情報、処理パターン情報、プログラム構造情報、および、処理パターン検索結果情報を格納する。
【００４０】
補助記憶装置７００には、たとえば、技術者により、ソースプログラム７１０が配置される。コンピュータ９００は、たとえば、ソースプログラム７１０を分析する技術者により操作される。ソースプログラム７１０の形態はファイル形式でもよいし、データベースに格納されている情報でもよい。
【００４１】
また、ソースプログラム７１０は、補助記憶装置７００内に配置されず、他の情報処理システム等からネットワーク等の他の媒体を経由して診断システム８００に入力されてもよい。また、ソースプログラム７１０は、複数のプログラムで構成されてもよい。
【００４２】
ソースプログラム７１０の所有者としては、たとえば、ソースプログラム７１０が実行されるシステムを利用、運用し、ソースプログラム７１０を診断したい意向を持つ顧客等が想定されるが、必ずしもその限りではない。
【００４３】
実装標準情報化部１１０は、技術者により暗黙的または明示的に持たれているプログラム実装に関する実装標準の知識を受け取り、実装標準とそれを構成する単一または複数のプログラム処理を関連付けた実装標準情報を生成し、実装標準ＤＢ２１０に格納する。
【００４４】
また、実装標準情報化部１１０は、技術者からプログラム処理に関する知識も受け取り、プログラム処理とそれを構成する単一または複数のプログラム構文単位を関連付けた処理パターン情報を生成し、処理パターンＤＢ２２０に格納する。
【００４５】
ここで、実装標準、プログラム処理、プログラム構文単位、構造単位のそれぞれの関係を説明する。実装標準は、１以上のプログラム処理（処理パターン）から構成される。プログラム処理（処理パターン）は、１以上のプログラム構文単位から構成される。プログラム構文単位は、１以上の構造単位から構成される。
【００４６】
また、構造単位とは、プログラムの文法構造を構成する要素のことを指し、最大はプログラム全体、最小はプログラムを実装する実装命令である。実装標準情報化部１１０は、処理パターンを構成する単一または複数のプログラム構文単位を受け取り、その字句、構文を解析し構文木を構成する構造単位に変換する。
【００４７】
また、処理パターンＤＢ２２０に格納される構造単位には複数個の任意の構造単位を表すワイルドカードや特定の構造単位の集合を表すパターン演算子等を含めることができる。技術者としては、さまざまなプログラム開発経験を持ちプログラムの実装方式に関する知識が豊富であることが想定可能である。また、技術者は、一人とは限らず複数の技術者が情報を入力することが可能である。
【００４８】
技術者は、実装標準情報化部１１０を用いて実装標準に関する情報を入力する。その際、実装標準情報化部１１０は、ソースプログラム７１０を表示し、その中で必要な部分を指定する様なＵＩ（ユーザインタフェース）を持つような構成でもよいし、技術者が直接情報を文字列で入力する様な構成でもよい。
【００４９】
次に、実装標準ＤＢ２１０の構成について説明する。
【００５０】
図４は、実装標準ＤＢ２１０の構成を示す説明図である。図４において、実装標準ＩＤＴ２１１、および、実装標準名Ｔ２１２は、第１の実施の形態の実装標準識別情報の一例である。また、処理パターン数Ｔ２１３、および、処理パターンリストＴ２１４は、第１の実施の形態の関連付け情報の一例である。
【００５１】
図４を参照すると、実装標準ＤＢ２１０は、実装標準情報化部１１０により技術者により入力された実装標準を情報化し、実装標準情報として格納するためのデータベースであり、以下の構成を持つ。
【００５２】
実装標準ＩＤ（Identifier）Ｔ２１１：個々の実装標準の情報を一意に識別するための識別情報である。
実装標準名Ｔ２１２：実装標準の処理内容を示す名称である。
処理パターン数Ｔ２１３：実装標準の情報を構成する処理パターンの数である。
処理パターンリストＴ２１４：実装標準の情報を構成する処理パターンに関し、処理パターン数Ｔ２１３内の数の分だけ、処理パターンＤＢ２２０から実装標準を構成する処理パターンＩＤＴ２２１の内容が格納される。
【００５３】
次に、処理パターンＤＢ２２０の構成について説明する。
【００５４】
図５は、処理パターンＤＢ２２０の構成を示す説明図である。処理パターンＤＢ２２０は、実装標準情報化部１１０により技術者が入力した処理パターンを情報化して格納するためのデータベースであり、以下の構成を持つ。
【００５５】
処理パターンＩＤＴ２２１：個々の処理パターンの情報を一意に識別するための識別情報である。
処理パターン名Ｔ２２２：処理パターンの処理内容を示す名称である。
構造単位数Ｔ２２３：処理パターンの情報を構成する構造単位の数である。
構造単位リストＴ２２４：処理パターンの情報を構成する構造単位のリストである。構造単位数Ｔ２２３に格納されている数の分だけ処理パターンを構成する構造単位が格納される。
【００５６】
次に、この構造単位リストＴ２２４の構成について詳細に説明する。
【００５７】
図６は、構造単位リストＴ２２４の構成を示す説明図である。図６を参照すると、構造単位リストＴ２２４は、処理パターンを構成する実装命令群を構造単位の集合として格納するフィールドであり、以下の構成を持つ。
【００５８】
構造ＩＤＵ２２４１：個々の構造単位を一意に識別するための識別情報である。
構造タイプＵ２２４２：構造情報の種別を示す値である。
内包構造数Ｕ２２４３：この構造が内包する構造単位の数である。
内包構造リストＵ２２４４：この構造が内包する構造単位のリストである。
【００５９】
構造単位リストＴ２２４は、実装標準情報化部１１０が生成する構造単位情報を格納する。その情報は木構造で構成されることが多い。そのため、処理パターンＤＢ２２０は、階層型データベースや、ＸＭＬＤＢ（XML Data Base）等の階層型データベースで構築されてもよいし、リレーショナルデータベース等で構造の親子関係を保持する形態でもよい。
【００６０】
プログラム構造解析部１２０は、ソースプログラム７１０を受け取り、テキストで構成されているソースプログラム７１０の字句、構文を解析し、構文木を構成する構文単位に変換し、その情報をプログラム構造情報ＤＢ２３０に格納する。プログラム構造解析部１２０は、公知の技術、たとえば、Ｙａｃｃ（Yet another compiler compiler）／Ｌｅｘ（Lexical analyzer），ＪａｖａＣＣ（Java（登録商標） Compiler Compiler）に代表されるようなコンパイラコンパイラにより自動生成される字句、構文解析器により実現されてもよい。
【００６１】
次に、プログラム構造情報ＤＢ２３０の構成について説明する。
【００６２】
図７は、プログラム構造情報ＤＢ２３０の構成を示す説明図である。図７を参照すると、プログラム構造情報ＤＢ２３０は、プログラム構造解析部１２０によってソースプログラム７１０の文法構造を解析され生成された構文情報を蓄積するためのデータベースであって、以下の構成を持つ。
【００６３】
構造ＩＤＴ２３１：個々の構造単位を一意に識別するための識別情報である。
構造タイプＴ２３２：構造情報の種別を示す値である。
ファイル名Ｔ２３３：この構造が含まれるソースプログラム７１０のファイルの名称である。
開始行番号Ｔ２３４：この構造が含まれるソースプログラム７１０内での、この構造の先頭行番号である。
終了行番号Ｔ２３５：この構造が含まれるソースプログラム７１０内での、この構造の終了行番号である。
内包構造数Ｔ２３６：この構造が内包する構造単位の数である。
内包構造リストＴ２３７：この構造が内包する構造単位のリストである。
【００６４】
プログラム構造情報ＤＢ２３０は、プログラム構造解析部１２０により生成された構文情報を格納するので、その構文情報は、木構造で構成されることが多い。そのため、プログラム構造情報ＤＢ２３０は、階層型ＤＢや、ＸＭＬＤＢ等の階層型ＤＢで構築されてもよいし、リレーショナルＤＢ等で構造の親子関係を保持する形態でもよい。
【００６５】
処理パターン検索部１３０は、プログラム構造情報ＤＢ２３０の中から処理パターンＤＢ２２０に格納されている処理パターンを定義している単一または複数の構造単位列を検索する。
【００６６】
検索の際には、処理パターン検索部１３０は、処理パターンＤＢ２２０に格納されている複数個の任意の構造単位を表すワイルドカードや、特定の構造単位の集合を表すパターン演算子を解釈して条件に該当するプログラムの部分構造を検索する。そして、処理パターン検索部１３０は、その検索結果を処理パターン検索結果ＤＢ２４０に格納する。
【００６７】
次に、処理パターン検索結果ＤＢ２４０について説明する。
【００６８】
図８は、処理パターン検索結果ＤＢ２４０の構成を示す説明図である。図８を参照すると、処理パターン検索結果ＤＢ２４０は、処理パターン検索部１３０により検索された結果を格納するためのデータベースであって、以下の構成を持つ。
【００６９】
検索結果ＩＤＴ２４１：個々の検索結果を一意に識別するための識別情報である。
検出処理パターンＩＤＴ２４２：処理パターンＤＢ２２０の中で一致した処理パターンのＩＤである。
ファイル名Ｔ２４３：一致した処理パターンが含まれるソースプログラム７１０のファイルの名称である。
開始行番号Ｔ２４４：一致した処理パターンが含まれるソースプログラム７１０内での、このパターンの先頭行番号である。
終了行番号Ｔ２４５：一致した処理パターンが含まれるソースプログラム７１０内での、このパターンの終了行番号である。
【００７０】
実装標準診断部１４０は、処理パターン検索結果ＤＢ２４０に格納された処理パターンから実装標準ＤＢ２１０に格納されている実装標準がどれだけ成立しているかを検索する。その際に、実装標準診断部１４０は、その実装標準が存在するソースプログラム７１０のファイルの名称や、実装標準の実装の開始する行番号、および、終了する行番号を結果出力部６００に表示する。
【００７１】
また、実装標準診断部１４０は、これらの他に実装標準がどのくらい準拠されているかを示す一致率等を算出して表示することが可能である。実装標準診断部１４０は、これらの結果をＧＵＩ（グラフィックユーザインタフェース）で表示してもよいし、ＣＵＩ（キャラクターユーザインタフェース）で表示してもよいし、ファイルやデータベースに記録してもよい。結果出力部６００は、たとえば、ディスプレイである。
【００７２】
また、図示しないが、処理パターン検索結果ＤＢ２４０の内容を、結果出力部６００に表示する構成も可能である。
【００７３】
次に、第２の実施の形態の動作について図面を参照して詳細に説明する。
【００７４】
図９は、第２の実施の形態の動作を示す動作説明図である。図９を参照すると、実装標準情報化部１１０は、技術者により入力されたプログラム実装に関する実装標準の知識を情報化して実装標準ＤＢ２１０に格納する（ステップＳ１１）。
【００７５】
すなわち、実装標準情報化部１１０は、技術者により入力されたプログラム実装に関する実装標準の名称を実装標準ＤＢ２１０に格納する。実装標準情報化部１１０は、インタフェース（グラフィカルユーザインタフェース、コマンドラインインターフェース、ファイルインターフェース等）により、プログラム実装に関する実装標準の名称を受け取り、それを実装標準ＤＢ２１０に格納する。
【００７６】
具体的には、実装標準情報化部１１０は、この実装標準の情報を一意に識別するためのＩＤ番号を採番し、実装標準ＤＢ２１０の実装標準ＩＤＴ２１１に格納し、実装標準の名称を実装標準名Ｔ２１２に格納する。
【００７７】
また、実装標準情報化部１１０は、技術者により入力された実装標準を構成する処理パターンを情報化して処理パターンＤＢ２２０に格納する（ステップＳ１２）。
【００７８】
すなわち、実装標準情報化部１１０は、インタフェース（グラフィカルユーザインタフェース、コマンドラインインターフェース、ファイルインターフェース等）により、実装標準を構成する処理パターンの情報を受け取り、それらを処理パターンＤＢ２２０に格納する。
【００７９】
具体的には、実装標準情報化部１１０は、処理パターン情報を一意に識別するためのＩＤ番号を採番し、処理パターンＤＢ２２０の処理パターンＩＤＴ２２１に格納し、処理パターンの名称を処理パターン名Ｔ２２２に格納する。
【００８０】
さらに、実装標準情報化部１１０は、この処理パターンを構成する構造単位の数を構造単位数Ｔ２２３に格納し、処理パターンを構成する構造単位の情報を構造単位リストＴ２２４に格納する。実装標準情報化部１１０は、この処理パターンに関する処理を実装標準を構成する処理パターンの数だけ実施する。
【００８１】
また、実装標準情報化部１１０は、実装標準と処理パターンとを関連付ける（ステップＳ１２）。すなわち、実装標準情報化部１１０は、処理パターンＤＢ２２０に格納した処理パターンの数、処理パターンＤＢ２２０に格納した処理パターンのＩＤを、それぞれ、実装標準ＤＢ２１０の処理パターン数Ｔ２１３、処理パターンリストＴ２１４に格納する。
【００８２】
また、プログラム構造解析部１２０は、技術者により指定されたソースプログラム７１０を受け取り、その構文を解析して構文情報を生成し、プログラム構造情報ＤＢ２３０に格納する（ステップＳ１３）。
【００８３】
すなわち、プログラム構造解析部１２０は、ソースプログラム７１０を受け取り、ソースプログラム７１０の字句、構文を解析する。そして、プログラム構造解析部１２０は、テキストで構成されているソースプログラム７１０を、構文木で構成される構文単位に変換し、その情報をプログラムを構成する構造単位毎にプログラム構造情報ＤＢ２３０に格納する。
【００８４】
具体的には、プログラム構造解析部１２０は、ソースプログラム７１０を構成する構造単位を識別するためのＩＤ番号を採番し、プログラム構造情報ＤＢ２３０の構造ＩＤＴ２３１に格納する。そして、プログラム構造解析部１２０は、構造単位の種別を表す情報を構造タイプＴ２３２に格納し、その構造単位が含まれているソースプログラム７１０のファイルの名称をファイル名Ｔ２３３に格納する。
【００８５】
そして、プログラム構造解析部１２０は、その構造単位がソースプログラム７１０に出現する先頭の行番号を開始行番号Ｔ２３４に格納し、その構造単位がソースプログラム７１０に出現する最終の行番号を終了行番号Ｔ２３５に格納する。
【００８６】
そして、プログラム構造解析部１２０は、その構造単位が他の構造単位を自らの構造に子要素として含む数を内包構造数Ｔ２３６に格納し、その内包構造を構成する構造単位の構造の名称（ＩＤ）を内包構造リストＴ２３７に格納する。
【００８７】
次に、処理パターン検索部１３０は、プログラム構造情報ＤＢ２３０に格納された構文情報の中に、処理パターンＤＢ２２０に格納されている処理パターンを構成する構造単位の並びが含まれているかどうかを検索する（ステップＳ１４）。そして、処理パターン検索部１３０は、その検索結果を処理パターン検索結果ＤＢ２４０に格納する（ステップＳ１４）。
【００８８】
すなわち、処理パターン検索部１３０は、プログラム構造情報ＤＢ２３０に格納された全てのソースプログラム７１０の構造情報を対象とする。そして、処理パターン検索部１３０は、処理パターンＤＢ２２０に格納された全ての処理パターン情報のうち、特に構造単位リストＴ２２４に格納された構造単位の並びがソースプログラム７１０の対象となった構造情報に含まれているかどうかを検索する。
【００８９】
処理パターン検索部１３０は、構造単位リストＴ２２４に格納された構造単位の中に、任意の構造単位にマッチするワイルドカードや特定の条件を示すパターン演算子等が指定されている場合は、その条件を満たす構造単位の配列が存在するかどうかを検索する。そして、処理パターン検索部１３０は、その結果検出されたパターンを処理パターン検索結果ＤＢ２４０に格納する。
【００９０】
具体的には、処理パターン検索部１３０は、検出された結果を一意に識別するための検索結果のＩＤを採番し、検索結果ＩＤＴ２４１に格納する。そして、処理パターン検索部１３０は、対応する処理パターンのＩＤ（すなわち、処理パターンＤＢ２２０の処理パターンＩＤＴ２２１内の処理パターンＩＤＴ２２１）を検出処理パターンＩＤＴ２４２に格納する。
【００９１】
そして、処理パターン検索部１３０は、検出した結果が含まれていたソースプログラム７１０のファイルの名称をファイル名Ｔ２４３に格納する。そして、処理パターン検索部１３０は、検出結果がソースプログラム７１０に出現する先頭の行番号を開始行番号Ｔ２４４に格納し、検出結果がソースプログラム７１０に出現する最終の行番号を終了行番号Ｔ２４５に格納する。
【００９２】
ここで、行に関しては、たとえば、ソースプログラム７１０において、行頭から改行符号までが１行である。
【００９３】
次に、実装標準診断部１４０は、処理パターン検索結果ＤＢ２４０内の検索結果から実装標準ＤＢ２１０内の実装標準の適用状態を診断し、診断結果を結果出力部６００に出力する（ステップＳ１５）。
【００９４】
すなわち、実装標準診断部１４０は、実装標準ＤＢ２１０内の実装標準の情報について、実装標準を構成する処理パターンがどれだけ存在するかを、処理パターン検索結果ＤＢ２４０に格納されている検索結果から判定し、診断結果を結果出力部６００に出力する。
【００９５】
技術者等は、たとえば、結果出力部６００に表示された診断結果を認識することができる。
【００９６】
次に、第２の実施の形態の効果について説明する。
【００９７】
第２の実施の形態は、第１の実施の形態の診断システム８００を含む構成である。したがって、第２の実施の形態は、第１の実施の形態と同一の効果を持つ。
【００９８】
次に、本発明の第３の実施の形態について図面を参照して詳細に説明する。
【００９９】
図１０は、第３の実施の形態の構成を示すブロック図である。図１０を参照すると、第３の実施の形態は、第２の実施の形態の一例である。ソースプログラム７１０は、たとえば、Ｃ言語で記述されたプログラムである。ソースプログラム７１０の形態は、１つのファイル形式であり、ファイルの名称は、「ｓｒｃ．ｃ」である。
【０１００】
図１１は、ソースプログラム７１０（ｓｒｃ．ｃ）のプログラム記述内容の例を示す説明図である。図１１において、プログラム記述左側の「０１：」等の３文字分は本文中に各行を参照するための行番号であり、実際のプログラム記述には含まれていないものとする。
【０１０１】
次に、第３の実施の形態の動作について図面（図９、図１１〜図２２）を参照して詳細に説明する。
【０１０２】
実装標準情報化部１１０は、プログラム実装に関する実装標準の名称を受け取り、実装標準ＤＢ２１０に格納する（ステップＳ１１）。図１２は、実装標準用ユーザインタフェース０１０の構成を示す説明図である。図１３は、第３の実施の形態の実装標準ＤＢ２１０の構成を示す説明図である。
【０１０３】
すなわち、技術者により、診断システム８００が起動されると、実装標準情報化部１１０は、図１２に示す実装標準用ユーザインタフェース０１０を表示し、技術者に情報の入力を促す。たとえば、実装標準名入力用テキストフィールド０１１には、技術者により、「ファイルからデータを読む」と入力され、実装標準作成用ボタン０１２が押下される。
【０１０４】
すると、実証標準情報化手段１１は、図１３に示すように、この実装標準の情報を一意に識別するためのＩＤ番号「１」を採番し、実装標準ＤＢ２１０の実装標準ＩＤＴ２１１に格納し、実装標準の名称「ファイルからデータを読む」を実装標準名Ｔ２１２に格納する。
【０１０５】
また、実装標準情報化部１１０は、実装標準を構成する処理パターンを受け取り、それを情報化して処理パターンＤＢ２２０に格納する（ステップＳ１２）。図１４は、処理パターン入力用ユーザインタフェース０２０の構成を示す説明図である。
【０１０６】
すなわち、実装標準情報化部１１０は、図１４に示す処理パターン入力用ユーザインタフェース０２０を表示し、技術者に情報の入力を促す。
【０１０７】
たとえば、技術者により、パターン名入力テキストフィールド０２１に、実装標準を構成する第１の処理パターンの名称である「ファイルオープン」が入力される。さらに、続く処理構文入力テキストフィールド０２２に、その処理パターンを構成する実装命令である「$fp=fopen($fname,“r”);」が入力される。
【０１０８】
この時、実装命令の入力で使用された$fp、$fname等は、パターン中の変数部分で使用される「ラベル」であり、実装標準の定義中に同じ名称で示されたラベルの部分は、同一の名称で一致しなければならないという制約を持つ。ただし、実際のプログラム内ではラベルと異なる文字列でも構わない。
【０１０９】
以下、継続して、パターン名入力テキストフィールド０２３に、第２の処理パターンの名称である「他の処理」が入力され、続く処理構文入力テキストフィールド０２４にその処理パターンを構成する実装命令である「*」が入力される。この時に用いられる「*」は、一般的に正規表現等で用いられるワイルドカードと同義であり、０個以上の任意の構造単位が存在することを表す。
【０１１０】
次に、パターン名入力テキストフィールド０２５に、第３の処理パターンの名称である「データ読み込み」が入力され、続く処理構文入力テキストフィールド０２６に、その処理パターンを構成する実装命令である「fscanf|fread」が入力される。演算子「|」は論理和（or）演算子であり、この場合は「fscanf」命令か「fread」命令が存在すればよいという定義になる。
【０１１１】
次に、パターン名入力テキストフィールド０２７に、第４の処理パターンの名称である「他の処理」が入力され、続く処理構文入力テキストフィールド０２８に、その処理パターンを構成する実装命令である「*」が入力される。
【０１１２】
次に、パターン名入力テキストフィールド０２９に、第５の処理パターンの名称である「ファイルクローズ」が入力され、続く処理構文入力テキストフィールド０２Ａに、その処理パターンを構成する実装命令である「fclose($fp);」が入力される。ここで前述したラベルが使われているので、fclose関数の引数として使われる変数は、第１の処理パターン内のfopen関数が戻り値を格納する変数と同じ名称でなければならないことを示している。
【０１１３】
図１５は、第３の実施の形態の処理パターンＤＢ２２０の構成を示す説明図である。図１６は、第３の実施の形態の実装標準ＤＢ２１０の構成を示す説明図である。
【０１１４】
上記入力が全て完了し、パターン処理入力決定用ボタン０２Ｂが押下されると、実証標準情報化手段１１は、入力されたデータを図１５に示すように処理パターンＤＢ２２０に格納し、さらに、実装標準と処理パターンとを関連付ける（ステップＳ１２）。
【０１１５】
すなわち、実証標準情報化手段１１は、図１６に示すように実装標準ＤＢ２１０の処理パターン数Ｔ２１３には、処理パターンの数である「５」を格納する。さらに、実証標準情報化手段１１は、処理パターンリストＴ２１４には、処理パターンＤＢ２２０に格納された処理パターンの処理パターンＩＤＴ２２１である「１」、「２」、「３」、「４」、「５」をリスト化して格納する。
【０１１６】
図１７は、図１５の処理パターンＩＤＴ２２１が「１」である構造単位の構成（構文木）を示す説明図である。図１７を参照すると、構文木には、構造単位である代入（=）、変数（$fp）、関数（fopen）、変数（$fname）、文字列（“r”）が含まれる。
【０１１７】
図１８は、図１７の構文木の情報を格納する図１５の処理パターンＤＢ２２０内の構造単位リストＴ２２４の構成を示す説明図である。図１８を参照すると、構造単位リストＴ２２４の構造ＩＤＵ２２４１は、「１」、「２」、「３」、「４」、「５」を含む。
【０１１８】
構造タイプＵ２２４２は、代入（=）、変数（$fp）、関数（fopen）、変数（$fname）、文字列（“r”）を含む。内包構造数Ｕ２２４３は、「２」、「０」、「２」、「０」、「０」を含む。内包構造リストＵ２２４４は、「２，３」、「４，５」を含む。
【０１１９】
プログラム構造解析部１２０は、技術者により入力されたソースプログラム７１０の構文を解析して構文情報を生成し、プログラム構造情報ＤＢ２３０に格納する（ステップＳ１３）。
【０１２０】
図１９は、プログラム構造解析部１２０により、図１１のソースプログラム７１０(ｓｒｃ．ｃ）が解析され、生成された構文木を示す説明図である。図２０は、第３の実施の形態のプログラム構造情報ＤＢ２３０の構成を示す説明図である。プログラム構造解析部１２０により生成された構文木の情報が、図２０に示す構成でプログラム構造情報ＤＢ２３０に格納される。
【０１２１】
次に、処理パターン検索部１３０は、プログラム構造情報ＤＢ２３０に格納された構文情報の中に、処理パターンＤＢ２２０に格納されている処理パターンを構成する構造単位の並びが含まれているかどうかを検索する（ステップＳ１４）。そして、処理パターン検索部１３０は、その検索結果を処理パターン検索結果ＤＢ２４０に格納する（ステップＳ１４）。
【０１２２】
すなわち、処理パターン検索部１３０は、図２０に示すプログラム構造情報ＤＢ２３０に格納されたソースプログラム７１０の全ての構造情報を対象として検索を行う。処理パターン検索部１３０は、処理パターンＤＢ２２０（図１５）内の処理パターンＩＤＴ２２１が「１」〜「５」までの全処理パターン情報について、特に、構造単位リストＴ２２４に格納された構造単位の並びが含まれているかどうかを検索する。
【０１２３】
たとえば、処理パターンＩＤＴ２２１が、「１」のものについては、図１８に示すように、その構造が構造単位リストＴ２２４に格納される。その構造である「代入、変数、関数（fopen）、変数、文字列（“r”）」のパターンが、プログラム構造情報ＤＢ２３０（図２０）内の構造ＩＤＴ２３１の「１０」〜「１４」のパターンに一致する。
【０１２４】
図２１は、第３の実施の形態の検索結果を含む処理パターン検索結果ＤＢ２４０の構成を示す説明図である。図２１を参照すると、処理パターン検索結果ＤＢ２４０は、検索結果として、検索結果ＩＤＴ２４１、検索処理パターンＩＤＴ２４２、ファイル名Ｔ２４３、開始行番号Ｔ２４４、および、終了行願号Ｔ２４５を含む。
【０１２５】
この場合、処理パターン検索部１３０は、処理パターンＤＢ２２０の処理パターンＩＤＴ２２１の値「１」のパターンが、プログラム構造情報ＤＢ２３０内に含まれていると判定し、その検索結果を処理パターン検索結果ＤＢ２４０に格納する。
【０１２６】
詳細には、処理パターン検索部１３０は、検出された結果を一意に識別するための検索結果のＩＤとして「１」を採番し、検索結果ＩＤＴ２４１に格納する。そして、処理パターン検索部１３０は、処理パターンＤＢ２２０に格納されている処理パターンを識別する処理パターンＩＤＴ２２１の「１」（検出した処理パターンのＩＤ）を検出処理パターンＩＤＴ２４２に格納する。
【０１２７】
さらに、処理パターン検索部１３０は、検索結果が含まれているソースプログラム７１０のファイルの名称「ｓｒｃ．ｃ」をファイル名Ｔ２４３に格納する。さらに、処理パターン検索部１３０は、検出結果が、ソースプログラム７１０に出現する先頭の行番号「８」を開始行番号Ｔ２４４に格納し、検出結果がソースプログラム７１０に出現する最終の行番号「８」を終了行番号Ｔ２４５に格納する。
【０１２８】
このようにして、処理パターン検索部１３０は、処理パターンＤＢ２２０に格納された処理パターンについて全て検索し、図２１に示すように処理パターン検索結果ＤＢ２４０に検索結果を格納する。
【０１２９】
次に、実装標準診断部１４０は、処理パターン検索結果ＤＢ２４０に格納されている検索結果から実装標準ＤＢ２１０に格納されている実装標準の適用状態を診断し、結果出力部６００に出力する（ステップＳ１５）。
【０１３０】
実装標準診断部１４０は、図１６に示す実装標準ＤＢ２１０内の実装標準ＩＤＴ２１１の値「１」のものについて、処理パターンリストＴ２１４に格納されている処理パターン（ここでは、「１」〜「５」）すべてが、処理パターン検索結果ＤＢ２４０に、検出されているかどうかを検索して判定する。
【０１３１】
この場合、処理パターン検索結果ＤＢ２４０の検出処理パターンＩＤＴ２４２は、「１」〜「５」が順番に含まれている。したがって、実装標準ＤＢ２１０の処理パターンリストＴ２１４内のすべての処理パターンＩＤが、その順番で、検出されていることがわかる。
【０１３２】
以上から、実装標準診断部１４０は、実装標準ＤＢ２１０内に格納されている実装標準ＩＤＴ２１１の値「１」に定義されている実装標準が、ソースプログラム７１０内に１００［％］正しく実装されていると判定する。この１００［％］は、実装標準の実装率である。
【０１３３】
図２２は、診断結果表示用ユーザインタフェース０３０の構成を示す説明図である。実装標準診断部１４０は、図２２に示す診断結果表示用ユーザインタフェース０３０により診断結果を表示する。
【０１３４】
実装標準診断部１４０は、ソース表示用領域０３１上にソースプログラム７１０のソースコードを表示すると共に、検出した実装標準の範囲、実装標準の名称（ＩＤ）、実装標準の実装率を表示する。また、実装標準診断部１４０は、検出した処理パターンの範囲をソースコード上にオーバーラップして表示する。
【０１３５】
実装標準診断部１４０は、ソースコードを補助記憶装置７００のソースプログラム７１０から取り出し、処理パターン名Ｔ２２２を処理パターンＤＢ２２０から取り出す。
【０１３６】
次に、第３の実施の形態の効果について説明する。
【０１３７】
第３の実施の形態は、第２の実施の形態の一例である。したがって、第３の実施は、第２の実施の形態と同一の効果を持つ。
【０１３８】
たとえば、具体的には、第３の実施の形態は、プログラムのソースコードをメンテナンスする場合において、プログラムの実装に関する知識が少ない技術者でも、顧客の既存システムを調査する際に、効果を持つ。
【０１３９】
すなわち、技術者が、プログラムが実装標準等ある一定の基準に従って実装されているか、それとも無秩序に実装されておりメンテナンスの際に予定外の改修やリファクタを要するかを容易に判断することが可能となるからである。
【０１４０】
以上説明したように、本発明は、既存のシステムを改造したり機能追加したりする場合に、既存システムのソースコードをプログラムの実装に関する知識が少ない技術者が理解して新しいシステムプログラムに移植したりするといった用途に適用できる。
【０１４１】
また、本発明は、プログラムの実装に関する知識が少ない技術者が特定のプログラム実装に関する技術を既存のソースコードから習得するといった用途にも適用可能である。
【０１４２】
上記の実施の形態の一部、または、全部は、以下の付記のようにも記載されうるが、以下には限られない。
【０１４３】
［付記１］
プログラムの実装に関する情報を受け取り、実装標準情報を生成し、実装標準を構成する処理パターンから処理パターン情報を生成し、ソースプログラムを受け取り、字句、構文を解析しプログラム構造情報を生成し、前記プログラム構造情報から前記処理パターン情報に適合するプログラム構文列を検索し、処理パターン検索結果情報を生成する処理部と、
前記実装標準情報、前記処理パターン情報、前記プログラム構造情報、および、前記処理パターン検索結果情報を格納する情報格納部と、
を含むことを特徴とする診断システム。
【０１４４】
［付記２］
前記処理部は、前記処理パターン検索結果情報から前記ソースプログラムが前記実装標準情報に従っている程度を判断し診断結果を生成し出力することを特徴する付記１の診断システム。
【０１４５】
［付記３］
前記処理部は、前記実装標準情報、および、前記処理パターン情報を生成する実装標準情報化部と、前記プログラム構造情報を生成するプログラム構造解析部と、前記処理パターン検索結果情報を生成する処理パターン検索部と、前記診断結果を生成する実装標準診断部と、
を含むことを特徴とする付記２の診断システム。
【０１４６】
［付記４］
前記処理パターン情報は、一意に識別するための識別情報である処理パターンＩＤを含み、
前記実装標準情報は、一意に識別するための識別情報である実装標準ＩＤ、および、前記処理パターン情報内の対応する前記処理パターンＩＤを含むことを特徴とする付記３の診断システム。
【０１４７】
［付記５］
前記処理パターン情報は、構造単位リストを含み、
前記構造単位リストは、内包構造単位リストを含むことを特徴とする付記４の診断システム。
【０１４８】
［付記６］
前記実装標準診断部は、前記ソースプログラムのファイル名、前記実装標準ＩＤ、実装標準の実装率、処理パターンの名称、または、前記ソースプログラムの内容を出力することを特徴とする付記３、４、または、５の診断システム。
【０１４９】
［付記７］
プログラムの実装に関する情報を受け取り、実装標準情報を生成し、実装標準を構成する処理パターンから処理パターン情報を生成し、ソースプログラムを受け取り、字句、構文を解析しプログラム構造情報を生成し、前記プログラム構造情報から前記処理パターン情報に適合するプログラム構文列を検索し、処理パターン検索結果情報を生成することを特徴とする診断方法。
【０１５０】
［付記８］
前記処理パターン検索結果情報から前記ソースプログラムが前記実装標準情報に従っている程度を判断し診断結果を生成し出力することを特徴する付記７の診断方法。
【０１５１】
［付記９］
前記実装標準情報、および、前記処理パターン情報を生成する実装標準情報化処理と、前記プログラム構造情報を生成するプログラム構造解析処理と、前記処理パターン検索結果情報を生成する処理パターン検索処理と、前記診断結果を生成する実装標準診断処理と、
を含むことを特徴とする付記８の診断方法。
【０１５２】
［付記１０］
前記処理パターン情報は、一意に識別するための識別情報である処理パターンＩＤを含み、
前記実装標準情報は、一意に識別するための識別情報である実装標準ＩＤ、および、前記処理パターン情報内の対応する前記処理パターンＩＤを含むことを特徴とする付記９の診断方法。
【０１５３】
［付記１１］
前記処理パターン情報は、構造単位リストを含み、
前記構造単位リストは、内包構造単位リストを含むことを特徴とする付記１０の診断方法。
【０１５４】
［付記１２］
前記実装標準診断処理は、前記ソースプログラムのファイル名、前記実装標準ＩＤ、実装標準の実装率、処理パターンの名称、または、前記ソースプログラムの内容を出力することを特徴とする付記９、１０、または、１１の診断方法。
【０１５５】
［付記１３］
実装に関する情報を受け取り、実装標準情報を生成し、実装標準を構成する処理パターンから処理パターン情報を生成し、ソースプログラムを受け取り、字句、構文を解析しプログラム構造情報を生成し、前記プログラム構造情報から前記処理パターン情報に適合するプログラム構文列を検索し、処理パターン検索結果情報を生成する処理をコンピュータに実行させることを特徴とするプログラム。
【０１５６】
［付記１４］
前記処理パターン検索結果情報から前記ソースプログラムが前記実装標準情報に従っている程度を判断し診断結果を生成し出力する処理をコンピュータに実行させることを特徴する付記１３のプログラム。
【０１５７】
［付記１５］
前記実装標準情報、および、前記処理パターン情報を生成する実装標準情報化処理と、前記プログラム構造情報を生成するプログラム構造解析処理と、前記処理パターン検索結果情報を生成する処理パターン検索処理と、前記診断結果を生成する実装標準診断処理と、
を含むことを特徴とする付記１４のプログラム。
【０１５８】
［付記１６］
前記処理パターン情報は、一意に識別するための識別情報である処理パターンＩＤを含み、
前記実装標準情報は、一意に識別するための識別情報である実装標準ＩＤ、および、前記処理パターン情報内の対応する前記処理パターンＩＤを含むことを特徴とする付記１５のプログラム。
【０１５９】
［付記１７］
前記処理パターン情報は、構造単位リストを含み、
前記構造単位リストは、内包構造単位リストを含むことを特徴とする付記１６のプログラム。
【０１６０】
［付記１８］
前記実装標準診断処理は、前記ソースプログラムのファイル名、前記実装標準ＩＤ、実装標準の実装率、処理パターンの名称、または、前記ソースプログラムの内容を出力する処理をコンピュータに実行させることを特徴とする付記１５、１６、または、１７のプログラム。
【符号の説明】
【０１６１】
１００    処理部
１１０    実装標準情報化部
１２０    プログラム構造解析部
１３０    処理パターン検索部
１４０    実装標準診断部
２００    情報格納部
２１０    実装標準ＤＢ
２２０    処理パターンＤＢ
２３０    プログラム構造情報ＤＢ
２４０    処理パターン検索結果ＤＢ
６００    結果出力部
７００    補助記憶装置
７１０    ソースプログラム
８００    診断システム
９００    コンピュータ
Ｔ２１１    実装標準ＩＤ
Ｔ２１２    実装標準名
Ｔ２１３    処理パターン数
Ｔ２１４    処理パターンリスト
Ｔ２２１    処理パターンＩＤ
Ｔ２２２    処理パターン名
Ｔ２２３    構造単位数
Ｔ２２４    構造単位リスト
Ｕ２２４１    構造ＩＤ
Ｕ２２４２    構造タイプ
Ｕ２２４３    内包構造数
Ｕ２２４４    内包構造リスト
Ｔ２３１    構造ＩＤ
Ｔ２３２    構造タイプ
Ｔ２３３    ファイル名
Ｔ２３４    開始行番号
Ｔ２３５    終了行番号
Ｔ２３６    内包構造数
Ｔ２３７    内包構造リスト
Ｔ２４１    検索結果ＩＤ
Ｔ２４２    検出処理パターンＩＤ
Ｔ２４３    ファイル名
Ｔ２４４    開始行番号
Ｔ２４５    終了行番号
０１０    実装標準用ユーザインタフェース
０１１    実装標準名入力用テキストフィールド
０１２    実装標準作成用ボタン
０２０    処理パターン入力用ユーザインタフェース
０２１    パターン名入力テキストフィールド
０２２    処理構文入力テキストフィールド
０２３    パターン名入力テキストフィールド
０２４    処理構文入力テキストフィールド
０２５    パターン名入力テキストフィールド
０２６    処理構文入力テキストフィールド
０２７    パターン名入力テキストフィールド
０２８    処理構文入力テキストフィールド
０２９    パターン名入力テキストフィールド
０２Ａ    処理構文入力テキストフィールド
０２Ｂ    パターン処理入力決定用ボタン
０３０    診断結果表示用ユーザインタフェース
０３１    ソース表示用領域
【図１】
0006023100.tif 000002
【図２】
0006023100.tif 000003
【図３】
0006023100.tif 000004
【図４】
0006023100.tif 000005
【図５】
0006023100.tif 000006
【図６】
0006023100.tif 000007
【図７】
0006023100.tif 000008
【図８】
0006023100.tif 000009
【図９】
0006023100.tif 000010
【図１０】
0006023100.tif 000011
【図１１】
0006023100.tif 000012
【図１２】
0006023100.tif 000013
【図１３】
0006023100.tif 000014
【図１４】
0006023100.tif 000015
【図１５】
0006023100.tif 000016
【図１６】
0006023100.tif 000017
【図１７】
0006023100.tif 000018
【図１８】
0006023100.tif 000019
【図１９】
0006023100.tif 000020
【図２０】
0006023100.tif 000021
【図２１】
0006023100.tif 000022
【図２２】
0006023100.tif 000023