(57)【要約】  プログラム処理パターン自動解析処理装置１０は、入力されたソースプログラムＰＲ１に含まれる入り組んだ分岐節をそれぞれ独立した分岐節として捉え、当該独立した分岐節の処理手順を設定することによって分岐条件を解析し、分岐条件が真の処理及び偽の処理についてのそれぞれの処理手順を解析した解析結果を示す管理テーブルＴＢ１を作成する分岐条件解析処理部２３を備え、ソースプログラムコードに記述された処理手順を自動的に解析する。これにより、プログラム処理パターン自動解析処理装置１０は、プログラム開発及びシステム開発において、人為的ミスの低減や作業の効率化を図るとともに、定量的な品質の計測手段を提供することにより、プログラムやシステムの品質の向上化を支援することができる。
2007072652.tif 000002
【特許請求の範囲】
【請求項１】
ソースプログラムコードに記述された処理手順を自動的に解析するプログラム処理パターン自動解析処理装置であって、
入力されたソースプログラムに含まれる入り組んだ分岐節をそれぞれ独立した分岐節として捉え、当該独立した分岐節の処理手順を設定することによって分岐条件を解析し、分岐条件が真の処理及び偽の処理についてのそれぞれの処理手順を解析した解析結果を示す管理テーブルを作成する分岐条件解析処理手段と、
上記分岐条件解析処理手段によって作成された上記管理テーブルを記憶する管理テーブル記憶手段とを備えること
を特徴とするプログラム処理パターン自動解析処理装置。
【請求項２】
上記管理テーブルの先頭行から分岐条件が真の処理についての処理手順を抽出してこれを１番目の処理パターンとし、上記１番目の処理パターンの最後の行から遡り、最初に現れる分岐条件が偽の処理以降について真の処理にしたがって処理手順を抽出してこれを２番目の処理パターンとするような処理を繰り返し、全ての処理パターンを抽出する処理パターン別処理手順解析処置手段と、
上記処理パターン別処理手順解析処理手段による解析によって作成された処理パターン別処理手順テーブルを記憶する処理パターン別処理手順テーブル記憶手段とを備えること
を特徴とする請求の範囲第１項記載のプログラム処理パターン自動解析処理装置。
【請求項３】
上記処理パターン別処理手順テーブルを編集し、処理パターン別に処理手順を並べたドキュメントを作成する、及び／又は、コンピュータ環境にて実行されたプログラムのトレース情報をプログラム開発支援ツールから受け取り、上記処理パターン別処理手順テーブルとの照合を行い、プログラムステップベースの処理パターン別のカバレッジ情報を算出する処理パターン別処理手順テーブル編集処理手段を備えること
を特徴とする請求の範囲第２項記載のプログラム処理パターン自動解析処理装置。
【請求項４】
ソースプログラム単位で作成された複数の上記処理パターン別処理手順テーブルに基づいて、処理パターン別の連結処理手順を解析し、複数の上記処理パターン別処理手順テーブルのパターンを連結した連結処理パターンを示す処理パターン別連結処理手順テーブルを作成する処理パターン別連結処理手順解析処理手段を備えること
を特徴とする請求の範囲第２項記載のプログラム処理パターン自動解析処理装置。
【請求項５】
上記処理パターン別連結処理手順テーブルを編集し、連結処理パターン別に処理手順を並べたドキュメントを作成する、及び／又は、コンピュータ環境にて実行されたプログラムのトレース情報をプログラム開発支援ツールから受け取り、上記処理パターン別連結処理手順テーブルとの照合を行い、プログラムステップベースの連結処理パターン別のカバレッジ情報を算出する処理パターン別連結処理手順テーブル編集処理手段を備えること
を特徴とする請求の範囲第４項記載のプログラム処理パターン自動解析処理装置。
【請求項６】
ソースプログラムコードに記述された処理手順を自動的に解析するプログラム処理パターン自動解析処理方法であって、
コンピュータが、入力されたソースプログラムに含まれる入り組んだ分岐節をそれぞれ独立した分岐節として捉え、当該独立した分岐節の処理手順を設定することによって分岐条件を解析し、分岐条件が真の処理及び偽の処理についてのそれぞれの処理手順を解析した解析結果を示す管理テーブルを作成する分岐条件解析処理工程と、
上記コンピュータが、上記分岐条件解析処理工程にて作成された上記管理テーブルを所定の記憶手段に記憶させる管理テーブル記憶工程とを備えること
を特徴とするプログラム処理パターン自動解析処理方法。
【請求項７】
ソースプログラムコードに記述された処理手順を自動的に解析するコンピュータ実行可能なプログラム処理パターン自動解析処理プログラムであって、
上記コンピュータを、
入力されたソースプログラムに含まれる入り組んだ分岐節をそれぞれ独立した分岐節として捉え、当該独立した分岐節の処理手順を設定することによって分岐条件を解析し、分岐条件が真の処理及び偽の処理についてのそれぞれの処理手順を解析した解析結果を示す管理テーブルを作成する分岐条件解析手段、及び、
上記分岐条件解析手段にて作成された上記管理テーブルを所定の記憶手段に記憶させる管理テーブル記憶手段として機能させること
を特徴とするプログラム処理パターン自動解析処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソースプログラムコードに記述された処理手順を自動的に解析するプログラム処理パターン自動解析処理装置及びプログラム処理パターン自動解析処理方法、並びにプログラム処理パターン自動解析処理プログラムに関し、特に、分岐処理を含むソースプログラムコードに記述された分岐条件別の処理手順（以下、処理パターンという。）を自動的に解析するプログラム処理パターン自動解析処理装置及びプログラム処理パターン自動解析処理方法、並びにプログラム処理パターン自動解析処理プログラムに関する。
【背景技術】
【０００２】
従来から、プログラム開発は、ａ）プログラム設計書に基づくソースプログラムの作成、ｂ）単体テスト、ｃ）複数の連結して稼働するプログラムを組み合わせて行う組み合わせテストや総合テスト等のテストの順に行われている。【０００３】
ａ）ソースプログラムの作成においては、プログラマがプログラム設計書に基づいて、機能ベースの処理パターンを記述したドキュメントを手書きで作成し、機能ベースの処理パターン通りにソースプログラムの処理手順が作成されていることを確認する作業を行った後、当該ソースプログラムをコンピュータによって実行可能な形式への変換を行っている。【０００４】
また、ｂ）単体テストにおいては、処理パターン毎に入力データと出力結果とを対比することができるテスト結果の検証用ドキュメントをプログラマが手書きで作成し、プログラムが稼働する単体テスト用のコンピュータ環境を構築した上で、検証用ドキュメントにしたがったテストデータの作成を行う。そして、単体テストにおいては、コンピュータによってプログラムを実行させ、実行結果と検証用ドキュメントの内容とを照合することにより、プログラムの品質を確認している。【０００５】
なお、単体テストにおいては、本来全てのプログラムステップベースの処理パターンに対して検証し、カバレッジ（網羅率）情報として品質の尺度としなければならないが、その作業は膨大であるため、簡易的に、ソースプログラムで使用されている命令の総数を分母とし実行された命令の総数を分子とするカバレッジ情報や、ソースプログラムで使用されている分岐命令の総数を分母とし実行された分岐命令の総数を分子とするカバレッジ情報が使用されている。しかしながら、これらのカバレッジ情報は、いずれもプログラムステップベースの処理パターンとは関連性が薄いため、目安として代用されているにすぎないのが現状である。【０００６】
さらに、ｃ）組み合わせテストや総合テスト等のテストにおいては、基本設計書やシステム設計書に基づいて、機能ベースの処理パターンのドキュメントをシステムエンジニア（以下、ＳＥという。）が手書きで作成するとともに、複数の連結して稼働するプログラム全体の機能ベースの処理パターンに基づいた入力データと出力結果とを対比することができるテスト結果の検証用ドキュメントを作成し、プログラムが稼働するテスト用のコンピュータ環境を構築した上で、検証用ドキュメントにしたがったテストデータの作成を行う。そして、テストにおいては、コンピュータによってプログラムを実行させ、実行結果と検証用ドキュメントの内容とを照合することにより、システムの品質を確認している。【０００７】
また、テストにおいては、本来全ての連結されたプログラムステップベースの処理パターンに対して検証し、カバレッジ情報として品質の尺度としなければならないが、その作業は膨大であるため、簡易的に、機能ベースの処理パターンがカバレッジ情報として多く使用されている。しかしながら、これは、連結されたプログラムステップベースの処理パターンとは関連性が薄いため、テスト実行時にバグの収束状況に合わせた調整、例えばバグが収束していなければ機能を詳細に落として機能ベースの処理パターン数を増加させることによってテスト数を増やして品質を上げるといった調整をする等、目安として代用されているのが現状である。【０００８】
なお、このようなプログラム開発を支援するための技術としては、例えば特許文献１等が提案されている。【０００９】
【特許文献１】特開平５−２００３８号公報
【００１０】
具体的には、この特許文献１には、複数の仕様書エディタ等の開発支援ツールを有するプログラム開発支援システムが開示されている。特に、このプログラム開発支援システムは、予め登録したコンピュータプログラム開発手順にしたがって、開発手順に対応する開発支援ツールを連続的に起動してプログラム開発を誘導するものである。これにより、このプログラム開発システムにおいては、プログラム開発の手順の標準化を図り、成果物の均一化及び均質化を図ることができ、プログラムの品質や生産性を向上させることができるとしている。【００１１】
ところで、上述したａ）ソースプログラムの作成においては、プログラマは、プログラム設計書に基づいて機能ベースの処理パターンのドキュメント（例えばフローチャート）を作成し、ソースプログラムの処理手順を目視で確認しているが、複雑なプログラムコードを処理パターン別に目視で確認することは困難であり、ミスが発生しやすいという問題があった。【００１２】
また、上述したｂ）単体テストにおいては、プログラマが機能ベースの処理パターン毎に入力データと期待される実行結果とを対比した検証用ドキュメントを手書きで作成しているが、ドキュメント作成に多大な労力がかかり、また、プログラムが複雑になるとミスが発生しやすいという問題があった。さらに、単体テストにおいては、本来全てのプログラムステップベースの処理パターンに対して検証し、カバレッジ情報として品質の尺度としなければならないが、その作業は膨大であるため、上述した簡易的な方法がとられている。したがって、単体テストにおいては、プログラムの品質を定量的に計測することができないという問題があった。【００１３】
さらに、上述したｃ）テストにおいては、本来全ての連結されたプログラムステップベースの処理パターンに対して検証し、カバレッジ情報として品質の尺度としなければならないが、その作業は膨大であるため、上述した簡易的な方法がとられているため、システムの品質を定量的に計測することができないという問題があった。【００１４】
このように、システム開発は、プログラマやＳＥの手作業に起因する人為的なミスを誘発することがあった。また、プログラムやシステムの品質を正確に表す定量的な計測手段を有しないため、システムが常に不安定であり、突然予期しない大きな障害が発生したり、社会的重大事故を招来したりするケースもあった。
【発明の開示】
【００１５】
本発明は、このような実情に鑑みてなされたものであり、ソースプログラムのプログラムステップベースの処理パターンを自動的に解析し、本来のカバレッジ情報の分母となる処理パターンの総数を提供し、さらに、プログラム開発支援ツールと連携して当該カバレッジ情報の分子となる実行された処理パターンの総数を提供することにより、プログラムの品質を正確に表す定量的な計測手段を提供し、あわせて人為的なミスを最小限に抑え、ドキュメント作成にかかる労力を大幅に低減することができるプログラム処理パターン自動解析処理装置及びプログラム処理パターン自動解析処理方法、並びにプログラム処理パターン自動解析処理プログラムを提供することを目的とする。また、本発明は、テストにおける連結したプログラム群のプログラムステップベースの処理パターンを自動的に解析し、本来のカバレッジ情報の分母となる連結処理パターンの総数を提供し、さらに、プログラム開発支援ツールと連携して当該カバレッジ情報の分子となる実行された連結処理パターンの総数を提供することにより、システムの品質を正確に表す定量的な計測手段を提供し、あわせて人為的なミスを最小限に抑え、ドキュメント作成にかかる労力を大幅に低減することができるプログラム処理パターン自動解析処理装置及びプログラム処理パターン自動解析処理方法、並びにプログラム処理パターン自動解析処理プログラムを提供することを目的とする。
【００１６】
上述した目的を達成する本発明にかかるプログラム処理パターン自動解析処理装置は、ソースプログラムコードに記述された処理手順を自動的に解析するプログラム処理パターン自動解析処理装置であって、入力されたソースプログラムに含まれる入り組んだ分岐節をそれぞれ独立した分岐節として捉え、当該独立した分岐節の処理手順を設定することによって分岐条件を解析し、分岐条件が真の処理及び偽の処理についてのそれぞれの処理手順を解析した解析結果を示す管理テーブルを作成する分岐条件解析処理手段と、上記分岐条件解析処理手段によって作成された上記管理テーブルを記憶する管理テーブル記憶手段とを備えることを特徴としている。
【００１７】
このような本発明にかかるプログラム処理パターン自動解析処理装置においては、ソースプログラムに含まれる入り組んだ分岐節をそれぞれ独立した分岐節として捉え、当該独立した分岐節の処理手順を設定することによって分岐条件を解析し、分岐条件が真の処理及び偽の処理についてのそれぞれの処理手順を解析した解析結果を管理テーブルとして作成することから、複雑な分岐節が含まれているソースプログラムであっても容易に且つ確実に解析を行うことができる。
【００１８】
また、本発明にかかるプログラム処理パターン自動解析処理装置は、上記管理テーブルの先頭行から分岐条件が真の処理についての処理手順を抽出してこれを１番目の処理パターンとし、上記１番目の処理パターンの最後の行から遡り、最初に現れる分岐条件が偽の処理以降について真の処理にしたがって処理手順を抽出してこれを２番目の処理パターンとするような処理を繰り返し、全ての処理パターンを抽出する処理パターン別処理手順解析処置手段と、上記処理パターン別処理手順解析処理手段による解析によって作成された処理パターン別処理手順テーブルを記憶する処理パターン別処理手順テーブル記憶手段とを備える。上記処理パターン別処理手順解析処理手段は、全ての分岐条件が真の処理及び偽の処理に対してこのような処理を繰り返し行うことにより、全ての処理パターンを抽出し、上記処理パターン別処理手順テーブルを作成することができる。
【００１９】
さらに、本発明にかかるプログラム処理パターン自動解析処理装置は、上記処理パターン別処理手順テーブルを編集し、処理パターン別に処理手順を並べたドキュメントを作成する、及び／又は、コンピュータ環境にて実行されたプログラムのトレース情報をプログラム開発支援ツールから受け取り、上記処理パターン別処理手順テーブルとの照合を行い、プログラムステップベースの処理パターン別のカバレッジ情報を算出する処理パターン別処理手順テーブル編集処理手段を備える。
【００２０】
これにより、本発明にかかるプログラム処理パターン自動解析処理装置においては、ソースプログラムの作成及び単体テストの際の人為的なミスを最小限に抑え、ドキュメント作成にかかる労力を大幅に低減することができるとともに、プログラムの品質を大幅に向上させることができる。
【００２１】
さらにまた、本発明にかかるプログラム処理パターン自動解析処理装置は、ソースプログラム単位で作成された複数の上記処理パターン別処理手順テーブルに基づいて、処理パターン別の連結処理手順を解析し、複数の上記処理パターン別処理手順テーブルのパターンを連結した連結処理パターンを示す処理パターン別連結処理手順テーブルを作成する処理パターン別連結処理手順解析処理手段を備える。そして、本発明にかかるプログラム処理パターン自動解析処理装置は、上記処理パターン別連結処理手順テーブルを編集し、連結処理パターン別に処理手順を並べたドキュメントを作成する、及び／又は、コンピュータ環境にて実行されたプログラムのトレース情報をプログラム開発支援ツールから受け取り、上記処理パターン別連結処理手順テーブルとの照合を行い、プログラムステップベースの連結処理パターン別のカバレッジ情報を算出する処理パターン別連結処理手順テーブル編集処理手段を備える。
【００２２】
これにより、本発明にかかるプログラム処理パターン自動解析処理装置においては、テストの際にＳＥが手書きで作成する各種ドキュメントに正確且つ有用な情報を提供することができ、人為的なミスを低減するとともに、システムの品質を大幅に向上させることができる。
【００２３】
また、上述した目的を達成する本発明にかかるプログラム処理パターン自動解析処理方法は、ソースプログラムコードに記述された処理手順を自動的に解析するプログラム処理パターン自動解析処理方法であって、コンピュータが、入力されたソースプログラムに含まれる入り組んだ分岐節をそれぞれ独立した分岐節として捉え、当該独立した分岐節の処理手順を設定することによって分岐条件を解析し、分岐条件が真の処理及び偽の処理についてのそれぞれの処理手順を解析した解析結果を示す管理テーブルを作成する分岐条件解析処理工程と、上記コンピュータが、上記分岐条件解析処理工程にて作成された上記管理テーブルを所定の記憶手段に記憶させる管理テーブル記憶工程とを備えることを特徴としている。
【００２４】
さらに、上述した目的を達成する本発明にかかるプログラム処理パターン自動解析処理プログラムは、ソースプログラムコードに記述された処理手順を自動的に解析するコンピュータ実行可能なプログラム処理パターン自動解析処理プログラムであって、上記コンピュータを、入力されたソースプログラムに含まれる入り組んだ分岐節をそれぞれ独立した分岐節として捉え、当該独立した分岐節の処理手順を設定することによって分岐条件を解析し、分岐条件が真の処理及び偽の処理についてのそれぞれの処理手順を解析した解析結果を示す管理テーブルを作成する分岐条件解析手段、及び、上記分岐条件解析手段にて作成された上記管理テーブルを所定の記憶手段に記憶させる管理テーブル記憶手段として機能させることを特徴としている。
【００２５】
このような本発明にかかるプログラム処理パターン自動解析処理方法及びプログラム処理パターン自動解析処理プログラムにおいては、ソースプログラムに含まれる入り組んだ分岐節をそれぞれ独立した分岐節として捉え、当該独立した分岐節の処理手順を設定することによって分岐条件を解析し、分岐条件が真の処理及び偽の処理についてのそれぞれの処理手順を解析した解析結果を管理テーブルとして作成することから、複雑な分岐節が含まれているソースプログラムであっても容易に且つ確実に解析を行うことができる。
【００２６】
以上のような本発明においては、プログラム及びシステムの品質を定量的に計測することが可能となるため、プログラム及びシステムの品質を大幅に向上させ、安定稼働を実現することが可能となる。また、本発明においては、プログラマやＳＥの手作業が軽減されることから、作業効率の大幅な向上を図ることが可能となる。
【図面の簡単な説明】
【００２７】
【図１】本発明の実施の形態として示すプログラム処理パターン自動解析処理装置の構成を説明するブロック図である。
【図２】同プログラム処理パターン自動解析処理装置の機能的な構成を説明するブロック図である。
【図３】同プログラム処理パターン自動解析処理装置において、ソースプログラムの処理手順を自動的に解析する際の一連の処理を説明するフローチャートである。
【図４】同プログラム処理パターン自動解析処理装置において、プログラムコード正規化処理を行う際の一連の処理を説明するフローチャートである。
【図５】分岐節の正規化形式の具体例について説明するための図である。
【図６】プログラムコード正規化処理において、読み込んだ命令文がＩＦ文である場合における変換前のソースプログラムと変換後の正規化後ソースプログラムとの具体例について説明するための図である。
【図７】プログラムコード正規化処理において、読み込んだ命令文がＩＦ文以外の他の条件分岐命令である場合における変換前のソースプログラムと変換後の正規化後ソースプログラムとの具体例について説明するための図である。
【図８】原文行番号対応テーブルの具体例について説明するための図である。
【図９】複雑に入り組んだ分岐節の具体例について説明するための図である。
【図１０】同プログラム処理パターン自動解析処理装置において、分岐条件解析処理を行う際の一連の処理を説明するフローチャートである。
【図１１】管理テーブルの具体例について説明するための図である。
【図１２】管理テーブル及び処理パターン別処理手順テーブルの具体例について説明するための図である。
【図１３】同プログラム処理パターン自動解析処理装置において、処理パターン別処理手順テーブル編集処理を行う際の一連の処理を説明するフローチャートである。
【図１４】処理パターン別に処理手順を並べたドキュメントの具体例について説明するための図である。
【図１５】単体テストの検証用ドキュメントの具体例について説明するための図である。
【図１６】コンピュータ環境にて実行されたプログラムのトレース情報の具体例について説明するための図である。
【図１７】カバレッジ情報の具体例について説明するための図である。
【図１８】処理パターン別連結処理手順解析処理について説明するための図であり、複数の処理パターン別処理手順テーブルの各パターンを割り付ける様子を説明するための図である。
【図１９】処理パターン別連結処理手順テーブルの具体例について説明するための図である。
【図２０】連結処理パターン別に処理手順を並べたドキュメントの具体例について説明するための図である。
【発明を実施するための最良の形態】
【００２８】
以下、本発明を適用した具体的な実施の形態について図面を参照しながら詳細に説明する。【００２９】
この実施の形態は、ソースプログラムコードに記述された処理手順を自動的に解析するプログラム処理パターン自動解析処理装置である。特に、このプログラム処理パターン自動解析処理装置は、分岐処理を含むソースプログラムコードに記述された分岐条件別の処理手順（以下、処理パターンという。）を自動的に解析することができるものである。【００３０】
なお、以下では、説明の便宜上、解析対象としてのソースプログラムがＣ言語で記述されているものとして説明する。【００３１】
図１に示すように、プログラム処理パターン自動解析処理装置１０は、プログラマやシステムエンジニア（以下、ＳＥという。）等の解析処理を行うユーザによって操作されるパーソナルコンピュータやワークステーション等のコンピュータとして構成され、各部を統括的に制御するＣＰＵ（Central Processing Unit）１１と、各種プログラムを含む各種情報を格納する読み取り専用のＲＯＭ（Read Only Memory）１２と、ワークエリアとして機能するＲＡＭ（Random Access Memory）１３と、各種情報を読み出し及び／又は書き込み可能に記憶する記憶部１４と、外部のネットワーク網に接続して通信を行う通信部１５と、ユーザインターフェースとしての図示しない所定の操作デバイスを介した入力操作の処理及び制御を行う入力操作制御部１６と、各種情報を表示する表示部１７とを備える。【００３２】
ＣＰＵ１１は、記憶部１４等に格納されているプログラム処理パターン自動解析処理プログラムを含む各種プログラムを実行し、各部を統括的に制御する。【００３３】
ＲＯＭ１２は、各種プログラムをはじめとする各種情報を格納している。このＲＯＭ１２に格納されている情報は、ＣＰＵ１１の制御のもとに読み出される。【００３４】
ＲＡＭ１３は、ＣＰＵ１１が各種プログラムを実行する際のワークエリアとして機能し、ＣＰＵ１１の制御のもとに、処理過程で生成された各種情報を一時記憶するとともに、記憶している各種情報を読み出す。【００３５】
記憶部１４は、プログラム処理パターン自動解析処理プログラム及び解析対象のソースプログラムを含む各種プログラムや、各種画像データや音声データをはじめとする各種情報を記憶している。この記憶部１４に記憶されている情報は、ＣＰＵ１１の制御のもとに読み出される。なお、この記憶部１４としては、例えば、ハードディスクや不揮発性メモリ等を用いることができる。また、記憶部１４には、本体に対して着脱可能とされるフレキシブルディスクやメモリカード等の記憶媒体に対して、各種情報の読み出し及び／又は書き込みを行うドライブ装置も含まれる。【００３６】
通信部１５は、例えば、アナログ回線、いわゆるイーサネット（登録商標）等から構成されるＬＡＮ（Local Area Network）、ＩＳＤＮ（Integrated Services Digital Network）、ＡＤＳＬ（Asymmetric Digital Subscriber Line）、若しくはＦＴＴＨ（Fiber To The Home）等の各種ネットワーク回線、ＩＥＥＥ（Institute of Electrical and Electronic Engineers）８０２．１１に準拠した無線ＬＡＮ若しくはいわゆるブルートゥース（Bluetooth（登録商標））等の各種無線通信方式、又はいわゆるＦＯＭＡ（登録商標）等のＷ−ＣＤＭＡ（Wideband-Code Division Multiple Access）方式若しくはＨＤＲ（High Data Rate）等のＣＤＭＡ−２０００方式といった、各種方式に基づくネットワークに接続するためのインターフェースであり、ＣＰＵ１１の制御のもとに、外部との通信を行う。【００３７】
入力操作制御部１６は、例えば、キーボード、マウス、キーパッド、赤外線リモートコントローラ、スティックキー、又はプッシュボタンといった、ユーザインターフェースとしての図示しない所定の操作デバイスを介した入力操作を受け付け、操作内容を示す制御信号をＣＰＵ１１に対して供給する。【００３８】
表示部１７は、例えば、液晶ディスプレイ（Liquid Crystal Display；ＬＣＤ）、プラズマ・ディスプレイ・パネル（Plasma Display Panel；ＰＤＰ）、有機エレクトロルミネッセンス（Organic ElectroLuminescent）ディスプレイ、又はＣＲＴ（Cathode Ray Tube）といった、各種表示デバイスであり、ＣＰＵ１１の制御のもとに、各種画像データや、その他の各種情報を表示する。例えば、表示部１７は、ＣＰＵ１１によってプログラム処理パターン自動解析処理プログラムが起動されると、その画面を表示する。【００３９】
このような各部を備えるプログラム処理パターン自動解析処理装置１０は、ＣＰＵ１１の制御のもとにプログラム処理パターン自動解析処理プログラムを実行することにより、機能的には図２に示すような構成とされる。すなわち、プログラム処理パターン自動解析処理装置１０は、ソースプログラムＰＲ１を入力するソースプログラム入力部２１と、このソースプログラム入力部２１を介して入力されたソースプログラムＰＲ１を正規化するプログラムコード正規化処理部２２と、このプログラムコード正規化処理部２２によって正規化された正規化後ソースプログラムＰＲ２に基づいて分岐条件を解析する分岐条件解析処理部２３と、この分岐条件解析処理部２３による解析によって作成された管理テーブルＴＢ１に基づいて処理パターン別の処理手順を解析する処理パターン別処理手順解析処理部２４と、この処理パターン別処理手順解析処理部２４による解析によって作成された処理パターン別処理手順テーブルＴＢ２を編集する処理パターン別処理手順テーブル編集処理部２５と、処理パターン別処理手順テーブルＴＢ２に基づいて処理パターン別の連結処理手順を解析する処理パターン別連結処理手順解析処理部２６と、この処理パターン別連結処理手順解析処理部２６による解析によって作成された処理パターン別連結処理手順テーブルＴＢ３を編集する処理パターン別連結処理手順テーブル編集処理部２７と、処理パターン別処理手順テーブル編集処理部２５による編集結果及び処理パターン別連結処理手順テーブル編集処理部２７による編集結果を出力する出力部２８とを備える。【００４０】
ソースプログラム入力部２１は、記憶部１４等に記憶されているソースプログラムＰＲ１や外部から入力されたソースプログラムＰＲ１を入力し、１行ずつプログラムコード正規化処理部２２に供給する。【００４１】
プログラムコード正規化処理部２２は、ソースプログラム入力部２１を介して入力されたソースプログラムＰＲ１を後述する手順にしたがって正規化し、正規化後ソースプログラムＰＲ２を作成する。この作成された正規化後ソースプログラムＰＲ２は、ＲＡＭ１３や記憶部１４等に読み出し可能に記憶される。【００４２】
分岐条件解析処理部２３は、プログラムコード正規化処理部２２によって正規化された正規化後ソースプログラムＰＲ２に含まれる分岐条件を解析し、その解析結果を示す管理テーブルＴＢ１を作成する。この作成された管理テーブルＴＢ１は、ＲＡＭ１３や記憶部１４等に読み出し可能に記憶される。【００４３】
処理パターン別処理手順解析処理部２４は、分岐条件解析処理部２３によって作成された管理テーブルＴＢ１に基づいて処理パターン別の処理手順を解析し、その解析結果を示す処理パターン別処理手順テーブルＴＢ２を作成する。この作成された処理パターン別処理手順テーブルＴＢ２は、ＲＡＭ１３や記憶部１４等に読み出し可能に記憶される。【００４４】
処理パターン別処理手順テーブル編集処理部２５は、処理パターン別処理手順解析処理部２４によって作成された処理パターン別処理手順テーブルＴＢ２を編集し、ソースプログラムの作成及び単体テストを支援するドキュメントやカバレッジ情報を作成する。これら作成されたドキュメントやカバレッジ情報は、出力部２８に供給される。【００４５】
処理パターン別連結処理手順解析処理部２６は、処理パターン別処理手順テーブルＴＢ２に基づいて処理パターン別の連結処理手順を解析し、処理パターン別連結処理手順テーブルＴＢ３を作成する。この作成された処理パターン別連結処理手順テーブルＴＢ３は、ＲＡＭ１３や記憶部１４等に読み出し可能に記憶される。【００４６】
処理パターン別連結処理手順テーブル編集処理部２７は、処理パターン別連結処理手順解析処理部２６によって作成された処理パターン別連結処理手順テーブルＴＢ３を編集し、組み合わせテストや総合テスト等のテストを支援するドキュメントやカバレッジ情報を作成する。これら作成されたドキュメントやカバレッジ情報は、出力部２８に供給される。【００４７】
出力部２８は、処理パターン別処理手順テーブル編集処理部２５による編集結果としてのドキュメントやカバレッジ情報、及び処理パターン別連結処理手順テーブル編集処理部２７による編集結果としてのドキュメントやカバレッジ情報を、表示部１７に出力して表示させたり、通信部１５を介して印刷装置等によって出力させたりする。【００４８】
このようなプログラム処理パターン自動解析処理装置１０は、ＣＰＵ１１の制御のもとにプログラム処理パターン自動解析処理プログラムを実行することにより、図３に示すような一連の手順にしたがって、ソースプログラムＰＲ１の処理手順を自動的に解析する。【００４９】
まず、プログラム処理パターン自動解析処理装置１０は、同図に示すように、ステップＳ１において、ソースプログラム入力部２１を介してソースプログラムＰＲ１から１行だけ読み込み、ステップＳ３において、読み込んだ１行の命令文に対して、プログラムコード正規化処理部２２によるプログラムコード正規化処理を施す。ここで、プログラムコード正規化処理とは、後に詳述するが、ＩＦ文、ＳＷＩＴＣＨ文、ＦＯＲ文、ＷＨＩＬＥ文といったソースプログラムＰＲ１に含まれる様々な条件分岐命令を、例えばＩＦ文形式に統一する処理である。【００５０】
プログラム処理パターン自動解析処理装置１０は、ソースプログラムＰＲ１を１行ずつ読み込む度に、このようなプログラムコード正規化処理を行う。そして、プログラム処理パターン自動解析処理装置１０は、ステップＳ２において、ソースプログラムＰＲ１の全ての行の読み込みが終了したと判定した場合には、ステップＳ４において、正規化後ソースプログラムＰＲ２に基づいて、分岐条件解析処理部２３による分岐条件解析処理を行い、分岐条件が"真"の処理及び"偽"の処理についてのそれぞれの処理手順を解析した解析結果を示す管理テーブルＴＢ１を作成する。ここで、分岐条件解析処理とは、後に詳述するが、複雑に入り組んだ分岐節をそれぞれ独立した分岐節として捉え、当該独立した分岐節の処理手順を設定する処理である。【００５１】
続いて、プログラム処理パターン自動解析処理装置１０は、ステップＳ５において、管理テーブルＴＢ１に基づいて、処理パターン別処理手順解析処理部２４による処理パターン別処理手順解析処理を行い、処理パターン別処理手順テーブルＴＢ２を作成する。この処理パターン別処理手順解析処理についても、後に詳述するものとする。【００５２】
続いて、プログラム処理パターン自動解析処理装置１０は、ステップＳ６において、処理パターン別処理手順テーブル編集処理部２５による処理パターン別処理手順テーブルＴＢ２の編集を行い、ソースプログラムの作成及び単体テストを支援するドキュメントやカバレッジ情報を作成する。この処理パターン別処理手順テーブル編集処理についても、後に詳述するものとする。【００５３】
プログラム処理パターン自動解析処理装置１０は、このようにして単体テストを行うと、ステップＳ７において、他のソースプログラムがあるか否かを判定する。ここで、プログラム処理パターン自動解析処理装置１０は、他のソースプログラムがある場合には、ステップＳ１からの処理を繰り返す一方で、他のソースプログラムがない場合には、ステップＳ８において、処理パターン別処理手順テーブルＴＢ２に基づいて、処理パターン別連結処理手順解析処理部２６による処理パターン別連結処理手順解析処理を行い、処理パターン別連結処理手順テーブルＴＢ３を作成する。この処理パターン別連結処理手順解析処理についても、後に詳述するものとする。【００５４】
そして、プログラム処理パターン自動解析処理装置１０は、ステップＳ９において、処理パターン別連結処理手順テーブル編集処理部２７による処理パターン別連結処理手順テーブルＴＢ３の編集を行い、テストを支援するドキュメントやカバレッジ情報を作成し、テストを含む一連の処理を終了する。処理パターン別連結処理手順テーブル編集処理についても、後に詳述するものとする。【００５５】
プログラム処理パターン自動解析処理装置１０は、このような一連の手順にしたがって、ソースプログラムＰＲ１の処理手順を自動的に解析することができる。【００５６】
以下、上述した各処理について具体的に説明する。【００５７】
まず、プログラムコード正規化処理について説明する。【００５８】
プログラムコード正規化処理部２２は、図４に示すような一連の手順にしたがって、プログラムコード正規化処理を行う。なお、以下では、説明の便宜上、ＩＦ文形式に統一する正規化処理を行うものとする。【００５９】
すなわち、プログラムコード正規化処理部２２は、図３中ステップＳ１及びステップＳ２の処理を行い、ソースプログラムＰＲ１から１行だけ読み込むと、図４に示すように、ステップＳ１１において、読み込んだ１行の命令文が条件分岐命令であり且つＩＦ文であるか否かを判定する。【００６０】
ここで、プログラムコード正規化処理部２２は、読み込んだ命令文がＩＦ文であると判定した場合には、ステップＳ１２において、ＩＦ文の省略形については分岐節の正規化形式への変換を行う。このとき、プログラムコード正規化処理部２２は、原文と変換後の命令文との対応を図るため、変換後の各行に変換行番号を設定する。なお、プログラムコード正規化処理部２２は、原文の行が複数に分割される場合には、枝番等を付したりすることによって対応をとる。具体的には、分岐節の正規化形式とは、例えば図５に示すように、先頭の分岐条件の命令文を分岐点とし、真の処理の開始コード及び終了コードと偽の処理の開始コード及び終了コードとで明確に閉じられた形式である。したがって、プログラムコード正規化処理部２２は、例えば図６左側に示すように、真及び偽の処理の開始コードや終了コードが省略された場合には、同図右側に示すように、真及び偽の処理の開始コードや終了コードを付した形式に変換し、変換後の各行に、原文の行番号との対応関係がわかるような変換行番号を設定する。【００６１】
一方、プログラムコード正規化処理部２２は、読み込んだ命令文がＩＦ文以外の他の条件分岐命令であると判定した場合には、ステップＳ１３において、ＩＦ文の正規化された分岐節形式への変換を行い、変換後の各行に変換行番号を設定することによって原文と変換後の命令文との対応をとる。具体的には、プログラムコード正規化処理部２２は、例えば図７に示すようなＦＯＲ文の場合には、"引数１、ラベル、ｉｆ（引数２）、｛、引数３、ｇｏｔｏラベル、｝"といったように、ＩＦ文形式に変換するためのテンプレートを予め作成しておき、そのテンプレートに対する当てはめを行うことによって変換を行う。なお、プログラムコード正規化処理部２２は、他の条件分岐命令についても同様にテンプレートを用いることにより、容易に変換を行うことができる。【００６２】
プログラムコード正規化処理部２２は、このようなステップＳ１２又はステップＳ１３の処理を行い、全ての変換を終了すると、ステップＳ１４において、変換後の命令文に行番号００１〜からなる変換後行番号を改めて付し、正規化後ソースプログラムＰＲ２を作成する。また、プログラムコード正規化処理部２２は、原文の行番号、変換行番号、及び変換後行番号の対応関係を後の処理にて利用するために、例えば図８に示すように、これら各行番号の対応関係を示す原文行番号対応テーブルＴＢ４を作成してＲＡＭ１３や記憶部１４等に読み出し可能に記憶する。【００６３】
プログラムコード正規化処理部２２は、ソースプログラムＰＲ１を１行ずつ読み込む度に、このような処理を行い、ステップＳ２において、ソースプログラムＰＲ１の全ての行の読み込みが終了したと判定した場合には、一連のプログラムコード正規化処理を終了する。【００６４】
プログラムコード正規化処理部２２は、このような一連の手順にしたがって、プログラムコード正規化処理を行うことができる。【００６５】
つぎに、分岐条件解析処理について説明する。【００６６】
分岐条件解析処理とは、例えば図９に示すように、分岐節の中に分岐節が存在する場合等、複雑に入り組んだ分岐節をそれぞれ独立した分岐節として捉え、当該独立した分岐節の処理手順を設定することによって分岐条件を解析する処理である。分岐条件解析処理部２３は、図１０に示すような一連の手順にしたがって、このような分岐条件解析処理を行う。【００６７】
すなわち、分岐条件解析処理部２３は、同図に示すように、ステップＳ２１において、正規化後ソースプログラムＰＲ２から１行だけ読み込むと、ステップＳ２４において、読み込んだ１行の命令文が条件分岐命令であるか否かを判定する。このとき、分岐条件解析処理部２３は、後述する処理パターン別連結処理手順作成処理のため、読み込んだ正規化後ソースプログラムＰＲ２が前の処理対象と異なる場合には、正規化後ソースプログラム毎に、管理テーブルＴＢ１及び処理パターン別処理手順テーブルＴＢ２が固有なものとなるように、ステップＳ２３において、これら管理テーブルＴＢ１及び処理パターン別処理手順テーブルＴＢ２に固有のプログラムＩＤ（ＰＧＭ ＩＤ）を設定した上で、ステップＳ２４へと処理を移行する。【００６８】
ここで、分岐条件解析処理部２３は、読み込んだ命令文が条件分岐命令であると判定した場合には、ステップＳ２５において、その条件分岐命令の処理を行い、ステップＳ２１からの処理を繰り返す。一方、分岐条件解析処理部２３は、読み込んだ命令文が条件分岐命令でないと判定した場合には、ステップＳ２６へと処理を移行し、読み込んだ命令文が開始コードであり直前の命令が条件分岐命令であるか否かを判定する。分岐条件解析処理部２３は、条件分岐命令の直後は必ず分岐条件が"真"の処理となることから、読み込んだ命令文が開始コードであり直前の命令が条件分岐命令であると判定した場合には、ステップＳ２７において、分岐条件"真"の処理を開始し、ステップＳ２１からの処理を繰り返す。また、分岐条件解析処理部２３は、読み込んだ命令文が開始コードでなく直前の命令が条件分岐命令でないと判定した場合には、ステップＳ２８において、当該命令文が偽の処理の開始コードであるか否かを判定する。そして、分岐条件解析処理部２３は、読み込んだ命令文が偽の処理の開始コードであると判定した場合には、ステップＳ２９において、分岐条件"偽"の処理を開始し、ステップＳ２１からの処理を繰り返す。さらに、分岐条件解析処理部２３は、読み込んだ命令文が偽の処理の開始コードでないと判定した場合には、ステップＳ３０において、当該命令文が終了コードであるか否かを判定する。分岐条件解析処理部２３は、読み込んだ命令文が終了コードであると判定した場合には、ステップＳ３１において、終了コード処理を行い、ステップＳ２１からの処理を繰り返す一方で、当該命令文が終了コードでないと判定した場合には、ステップＳ３２において、その他のコード処理を行い、ステップＳ２１からの処理を繰り返す。【００６９】
分岐条件解析処理部２３は、正規化後ソースプログラムＰＲ２を１行ずつ読み込む度に、このようなステップＳ２１乃至ステップＳ３２の処理を行う。そして、分岐条件解析処理部２３は、ステップＳ２２において、正規化後ソースプログラムＰＲ２の全ての行の読み込みが終了した場合には、ステップＳ３３において、処理手順の設定処理を行うことによって管理テーブルＴＢ１を作成し、一連の分岐条件解析処理を終了する。【００７０】
ここで、ステップＳ２５、ステップＳ２７、ステップＳ２９、ステップＳ３１、ステップＳ３２、及びステップＳ３３の各処理の詳細について、図１１に示す管理テーブルＴＢ１の具体例を用いて説明する。【００７１】
まず、ステップＳ２５における条件分岐命令処理について説明する。【００７２】
分岐条件解析処理部２３は、当該行が条件分岐命令である場合には、分岐節毎に識別可能な識別子を設定する。なお、識別子は、分岐節がネスト構造の場合には、同一の深みが複数あることを考慮した識別子とする。【００７３】
つぎに、ステップＳ２７における分岐条件"真"の開始処理について説明する。【００７４】
分岐条件解析処理部２３は、当該行が真の処理の開始コードである場合には、当該行の直前の条件分岐命令の識別子を当該真の処理の開始コードの識別子として設定する。【００７５】
つぎに、ステップＳ２９における分岐条件"偽"の開始処理について説明する。【００７６】
分岐条件解析処理部２３は、当該行が偽の処理の開始コードである場合には、当該行の直前の真の処理の終了コードの識別子を当該偽の処理の開始コードの識別子として設定する。【００７７】
つぎに、ステップＳ３１における終了コード処理について説明する。【００７８】
分岐条件解析処理部２３は、当該行が終了コードである場合に、当該行の直前の行がその他のコード若しくは開始コードであるならば、その識別子を当該終了コードの識別子として設定する。また、分岐条件解析処理部２３は、当該行の直前の行が終了コードであるならば、その識別子と異なる識別子が現れるまで遡り、その異なる識別子を当該終了コードの識別子として設定する。このとき、分岐条件解析処理部２３は、その異なる識別子が終了コードである場合には、さらに異なる識別子が現れるまで繰り返し設定する。ここで、分岐条件解析処理部２３は、当該終了コードが真の処理の終了コードであるか偽の処理の終了コードであるかを判定する。そして、分岐条件解析処理部２３は、当該行から同一識別子の行を遡り、最初に現れる開始コードが真の処理の開始コードである場合には、当該終了コードは真の処理の終了コードであると判定する。また、分岐条件解析処理部２３は、当該行から同一識別子の行を遡り、最初に現れる開始コードが偽の処理の開始コードである場合には、当該終了コードは偽の処理の終了コードであると判定する。【００７９】
つぎに、ステップＳ３２におけるその他のコード処理について説明する。【００８０】
分岐条件解析処理部２３は、当該行がその他のコードである場合に、当該行の直前の行がその他のコード、真の処理の開始コード若しくは偽の処理の開始コードであるならば、その識別子を当該その他のコードの識別子として設定する。また、分岐条件解析処理部２３は、当該行の直前の行が偽の終了コードであるならば、その識別子と異なる識別子が現れるまで遡り、その異なる識別子を当該その他のコードの識別子として設定する。ただし、分岐条件解析処理部２３は、その異なる識別子がやはり偽の処理の終了コードである場合には、同一の処理を繰り返し設定する。【００８１】
つぎに、ステップＳ３３における処理手順設定処理について説明する。【００８２】
分岐条件解析処理部２３は、当該行が条件分岐命令である場合には、まず当該条件分岐命令と同一の識別子を有する真の処理の開始コードの行番号を、条件分岐命令の真の処理の次処理行番号に設定し、続いて、当該条件分岐命令と同一の識別子を有する偽の処理の開始コードの行番号を、条件分岐命令の偽の処理の次処理行番号に設定する。また、分岐条件解析処理部２３は、当該行が真の処理の開始コードである場合には、当該行以降に最初に現れる同一識別子の行の行番号を次処理行番号に設定する。さらに、分岐条件解析処理部２３は、当該行が偽の処理の開始コードである場合には、当該行以降に最初に現れる同一識別子の行の行番号を次処理行番号に設定する。さらにまた、分岐条件解析処理部２３は、当該行がその他のコードである場合には、当該行以降に最初に現れる同一識別子の行の行番号を次処理行番号に設定する。また、分岐条件解析処理部２３は、当該行が真の処理の終了コードである場合には、識別子が同一である偽の処理の終了コードの行番号を次処理行番号に設定する。そして、分岐条件解析処理部２３は、当該行が偽の処理の終了コードである場合には、直後の行の行番号を次処理行番号に設定する。【００８３】
分岐条件解析処理部２３は、以上のような一連の手順にしたがって、分岐条件解析処理を行うことができる。【００８４】
つぎに、処理パターン別処理手順解析処理について説明する。【００８５】
処理パターン別処理手順解析処理部２４は、分岐条件解析処理部２３によって設定された処理手順を、分岐を含まない一連の連続した処理として再設定するものである。なお、ここでは、図１２に示す管理テーブルＴＢ１及び処理パターン別処理手順テーブルＴＢ２の具体例を用いて説明する。まず、処理パターン別処理手順解析処理部２４は、管理テーブルの先頭行から次処理行番号にしたがって抽出された行を、処理パターン別処理手順テーブルに設定する。このとき、処理パターン別処理手順解析処理部２４は、当該行が条件分岐命令である場合には、真の処理の次処理行番号にしたがって処理パターン別処理手順テーブルの最後まで進み、これを１番目の処理パターンとして登録する。続いて、処理パターン別処理手順解析処理部２４は、１番目の処理パターンの最後の行から遡り、最初に現れる条件分岐命令を検索し、当該条件分岐命令が偽の処理の次処理行番号にしたがって進む。このとき、処理パターン別処理手順解析処理部２４は、１番目の処理パターンと同様に、当該行が条件分岐命令である場合には、真の処理の次処理行番号にしたがって処理パターン別処理手順テーブルの最後まで進み、これを２番目の処理パターンとして登録する。処理パターン別処理手順解析処理部２４は、以降同様の方法を繰り返し、全ての条件分岐命令の真の処理の次処理行番号及び偽の処理の次処理行番号を処理することにより、全ての処理パターンを抽出することができる。【００８６】
処理パターン別処理手順解析処理部２４は、このような一連の手順にしたがって、処理パターン別処理手順解析処理を行うことができる。【００８７】
つぎに、処理パターン別処理手順テーブル編集処理について説明する。【００８８】
処理パターン別処理手順テーブル編集処理部２５は、従来のソースプログラムの作成及び単体テストにおける問題を解決するために、処理パターン別処理手順テーブル編集処理として、図１３に示すように、ステップＳ５１における処理パターン別処理手順ドキュメントの編集と、ステップＳ５２における処理パターン別カバレッジ情報の編集とを行う。【００８９】
具体的には、処理パターン別処理手順テーブル編集処理部２５は、ステップＳ５１における処理パターン別処理手順ドキュメントの編集として、処理パターン別処理手順テーブルＴＢ２に基づいて、例えば図１４に示すように、処理パターン別に処理手順を並べたドキュメントを自動的に作成する。【００９０】
この処理パターン別処理手順ドキュメントは、処理パターン別に処理手順が並んでおり、プログラマが作成する処理パターンのドキュメント（例えば図１５に示すフローチャート）と容易に照合することができる。これは、先に図９に示した従来のソースプログラムコードとの照合と比較すれば一目瞭然である。また、プログラム処理パターン自動解析処理装置１０においては、条件分岐行が明確であるため、その条件と前後の処理により、テストデータを容易に考案し、作成することができる。さらに、プログラム処理パターン自動解析処理装置１０においては、処理手順から条件分岐行のみ抽出した一覧表形式のドキュメントにより、テスト状況の確認を行うことができる。さらにまた、プログラム処理パターン自動解析処理装置１０においては、処理パターン別に処理手順を並べテスト結果を手書きによって記入できるフォーマットにすることにより、検証用及び納品用のドキュメントを作成することができる。これにより、プログラム処理パターン自動解析処理装置１０においては、ソースプログラム作成時における人為的ミスを最小限に抑え、ドキュメント作成にかかるプログラマの労力を大幅に低減することができる。【００９１】
また、処理パターン別処理手順テーブル編集処理部２５は、図１３中ステップＳ５２における処理パターン別カバレッジ情報の編集として、例えば図１６に示すように、コンピュータ環境にて実行されたプログラムのトレース情報をプログラム開発支援ツールから受け取り、トレース情報に含まれるソースプログラムの行番号と処理パターン別処理手順テーブルＴＢ２の行番号との照合を行い、どの処理パターンが実行されたかを把握する。これにより、処理パターン別処理手順テーブル編集処理部２５は、例えば図１７に示すように、本来のプログラム品質を示すプログラムステップベースの処理パターンの総数を分母とし、テスト実行されたプログラムステップベースの処理パターンの総数を分子とする定量的な品質情報を得ることができる。【００９２】
処理パターン別処理手順テーブル編集処理部２５は、このような一連の手順にしたがって、処理パターン別処理手順テーブル編集処理を行うことができる。【００９３】
つぎに、処理パターン別連結処理手順解析処理について説明する。【００９４】
処理パターン別連結処理手順解析処理部２６は、図１８に示すように、ソースプログラム単位で作成された複数の処理パターン別処理手順テーブルＴＢ２のうちＰＧＭ・ＩＤ  xxxxxxxxに対応する先のテーブルの各パターンに対して、ＰＧＭ・ＩＤ  yyyyyyyに対応する後のテーブルの各パターンを割り付けることにより、図１９に示すように、これら先のテーブルと後のテーブルとのパターンを連結した連結処理パターンを示す処理パターン別連結処理手順テーブルＴＢ３を作成する。連結のためのアルゴリズムは、以下のとおりである。まず、処理パターン別連結処理手順解析処理部２６は、先頭のプログラムから最後のプログラムまでのそれぞれの最初の処理パターンを抽出し、これを１番目の連結処理パターンとして処理パターン別連結処理手順テーブルＴＢ３に登録する。続いて、処理パターン別連結処理手順解析処理部２６は、１番目の連結処理パターンの最後のプログラムの処理パターンを２番目の処理パターンに置き換え、これを２番目の連結処理パターンとして登録する。処理パターン別連結処理手順解析処理部２６は、最後のプログラムの処理パターンを全て処理するまでこのような処理を繰り返し、それぞれ連結処理パターンとして登録する。そして、処理パターン別連結処理手順解析処理部２６は、１番目の連結処理パターンの最後のプログラムを１つ遡るプログラムの処理パターンを、２番目の処理パターンと置き換え、最後のプログラムに対して上記と同様の処理を繰り返し、それぞれ連結処理パターンとして登録する。処理パターン別連結処理手順解析処理部２６は、最後から２番目のプログラムの処理パターンを全て処理すると、最後から３番目のプログラムの処理パターンに対する処理といったように、順次同様の処理を繰り返しながら遡っていき、先頭のプログラムの処理パターンまで全てを処理することにより、連結処理パターンを作成することができる。【００９５】
処理パターン別連結処理手順解析処理部２６は、このようにして、処理パターン別連結処理手順解析処理を行うことができる。【００９６】
つぎに、処理パターン別連結処理手順テーブル編集処理について説明する。【００９７】
処理パターン別連結処理手順テーブル編集処理部２７は、従来のテストにおける問題を解決するために、処理パターン別連結処理手順テーブルＴＢ３に基づいて、例えば図２０に示すように、連結処理パターン別に処理手順を並べたドキュメントやカバレッジ情報を作成する。【００９８】
この連結処理パターン別処理手順ドキュメントは、図２０に示すように、連結処理パターン別に処理手順が並んでいるため、ＳＥが作成する様々なドキュメントに対して正確且つ有用な情報を提供することができ、人為的なミスを低減することができる。また、処理パターン別連結処理手順テーブル編集処理部２７は、コンピュータ環境にて実行されたプログラムのトレース情報をプログラム開発支援ツールから受け取り、トレース情報に含まれるソースプログラムの行番号と処理パターン別連結処理手順テーブルＴＢ３の行番号との照合を行い、どの連結処理パターンが実行されたかを把握する。これにより、処理パターン別連結処理手順テーブル編集処理部２７は、本来のシステム品質を示すプログラムステップベースの連結処理パターンの総数を分母とし、テスト実行されたプログラムステップベースの連結処理パターンの総数を分子とする定量的な品質情報を得ることができる。【００９９】
処理パターン別連結処理手順テーブル編集処理部２７は、このようにして、処理パターン別連結処理手順テーブル編集処理を行うことができる。【０１００】
以上説明したように、本発明の実施の形態として示すプログラム処理パターン自動解析処理装置１０は、入力されたソースプログラムに含まれる入り組んだ分岐節をそれぞれ独立した分岐節として捉え、当該独立した分岐節の処理手順を設定し、分岐を含まない一連の処理手順を解析することにより、処理パターンを抽出することができる。これにより、プログラム処理パターン自動解析処理装置１０は、プログラム開発における人為的なミスを大幅に低減し、本来のプログラム品質を示す定量的な品質情報を提供することができる。また、プログラム処理パターン自動解析処理装置１０は、システムとして複数の連結したプログラム群に対しても同様に連結処理パターンを抽出することができるため、システム開発における人為的なミスを低減し、本来のシステム品質を示す定量的な品質情報を提供することができる。【０１０１】
なお、本発明は、上述した実施の形態に限定されるものではない。例えば、上述した実施の形態では、解析対象としてのソースプログラムがＣ言語で記述されているものとして説明したが、本発明は、フォートランやＣＯＢＯＬ等、機械語以外のプログラミング言語であれば、条件分岐に関する文法体系が同様であることから、容易に適用することができる。【０１０２】
また、上述した実施の形態では、各条件分岐命令をＩＦ文形式に統一する正規化処理を行うものとして説明したが、本発明は、他の条件分岐命令の形式に統一する正規化処理を行うようにしてもよい。【０１０３】
このように、本発明は、その趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
【図１】
2007072652.tif 000003
【図２】
2007072652.tif 000004
【図３】
2007072652.tif 000005
【図４】
2007072652.tif 000006
【図５】
2007072652.tif 000007
【図６】
2007072652.tif 000008
【図７】
2007072652.tif 000009
【図８】
2007072652.tif 000010
【図９】
2007072652.tif 000011
【図１０】
2007072652.tif 000012
【図１１】
2007072652.tif 000013
【図１２】
2007072652.tif 000014
【図１３】
2007072652.tif 000015
【図１４】
2007072652.tif 000016
【図１５】
2007072652.tif 000017
【図１６】
2007072652.tif 000018
【図１７】
2007072652.tif 000019
【図１８】
2007072652.tif 000020
【図１９】
2007072652.tif 000021
【図２０】
2007072652.tif 000022
【国際調査報告】
2007072652.tif 000023
2007072652.tif 000024
2007072652.tif 000025
2007072652.tif 000026