(57)【要約】【課題】プログラムを、そのプログラムが対象としている装置やコンピュータにインストールする前に、その動作を検証する装置を提供する。【解決手段】プログラムの検査装置は、第１のプログラムを解析し、第１のプログラムを実行しているコンピュータで動作する第２のプログラムの、状態変化を伴う動作である遷移動作を抽出する手段と、第１のプログラムが実行されているコンピュータの動作において、守らなければならない規則である１つ以上のポリシ条件を読み込む手段と、前記遷移動作及び前記ポリシ条件に基づき第１のプログラムの動作を分析する手段とを備えている。【選択図】図１
2011044065.tif 000002
【特許請求の範囲】
【請求項１】
プログラムの検査装置であって、
第１のプログラムを解析し、第１のプログラムを実行しているコンピュータで動作する第２のプログラムの、状態変化を伴う動作である遷移動作を抽出する手段と、
第１のプログラムを実行しているコンピュータにおいて、守らなければならない規則である１つ以上のポリシ条件を読み込む手段と、
前記遷移動作及び前記ポリシ条件に基づき第１のプログラムの動作を分析する手段と、
を備えている検査装置。
【請求項２】
前記第１のプログラムの動作を分析する手段は、初期状態に各遷移動作を適用した後の状態が、総てのポリシ条件を満足する場合には、第１のプログラムは正常に動作すると判定し、それ以外の場合には、正常に動作しないと判定する、
請求項１に記載の検査装置。
【請求項３】
プログラムの検査装置であって、
第１のプログラムを解析し、第１のプログラムの動作ロジックと、該動作ロジックを実行するのに必要なパーミッションを特定する手段と、
第１のプログラムを実行しているコンピュータにおいて、守らなければならない規則である１つ以上のポリシ条件を読み込む手段と、
第１のプログラムを実行しているコンピュータで動作する第２のプログラムを解析し、第２のプログラムが呼び出す一連の動作ロジックを判定する手段と、
第２のプログラムに必要なパーミッションを記載したアプリケーション記述ファイルを読み込む手段と、
コンピュータの利用者が付与できるパーミッションを記載した付与可能パーミッション記述ファイルを読み込む手段と、
前記第２のプログラムが呼び出す一連の動作ロジック、前記パーミッションを特定する手段が特定した各動作ロジックの実行に必要なパーミッション、アプリケーション記述ファイルに記載されたパーミッション及び付与可能パーミッション記述ファイルに記載されたパーミッションに基づき、第２のプログラムの動作を分析する手段と、
を備えている検査装置。
【請求項４】
前記第２のプログラムの動作を分析する手段は、前記第２のプログラムが呼び出す一連の動作ロジックの実行を順にシミュレートし、
シミュレートしようとしている動作ロジックが、パーミッションの付与を要求するものである場合において、要求されたパーミッションがアプリケーション記述ファイル及び付与可能パーミッション記述ファイルの少なくとも一方に記載されていない場合には、第２のプログラムは正常に動作しないと判定する、
請求項３に記載の検査装置
【請求項５】
前記第２のプログラムの動作を分析する手段は、
シミュレートしようとしている動作ロジックが、パーミッションの付与を要求するものである場合において、要求されたパーミッションが、アプリケーション記述ファイル及び付与可能パーミッション記述ファイルの両方に記載されている場合には、要求されたパーミッションを第２のプログラムに付与し、
シミュレートしようとしている動作ロジックが、第２のプログラムに付与した特定のパーミッションの削除を要求するものである場合には、前記特定のパーミッションの第２のプログラムへの付与を取消し、
シミュレートしようとしている動作ロジックが、前記パーミッションを特定する手段により、その実行のためにはパーミッションが必要と判定されている場合には、必要とされているパーミッションが第２のプログラムに付与されているか否かを判定し、付与されていない場合には、第２のプログラムは正常に動作しないと判定する、
請求項４に記載の検査装置。
【請求項６】
請求項１から５のいずれか１項に記載の検査装置としてコンピュータを機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ上で動作するプログラムを検査する装置に関する。
【背景技術】
【０００２】
例えば、非特許文献１に記載の様に、携帯端末用のフレームワーク・プログラムが無償で配布され、さらに、このフレームワーク・プログラムが動作している端末上で動作するアプリケーション・プログラムの開発を誰でも自由に行い配布できる状態が存在する。
【０００３】
なお、以下の説明において、“アプリケーション・プログラム”とは、例えば、メモ帳、ゲーム、電卓等の様に、利用者がある目的で直接利用する機能を実現するためのプログラムであり、“フレームワーク・プログラム”とは、アプリケーション・プログラムに対して、関数及び／又はＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）を提供し、アプリケーション・プログラムの実行環境を提供するプログラムを意味するものとする。また、“プラットフォーム”とは、フレームワーク・プログラムを実行しているコンピュータを意味するものとする。つまり、アプリケーション・プログラムは、プラットフォーム上で動作することになる。また、コンポーネントとは、アプリケーション・プログラムの構成要素であり、例えば、アプリケーション・プログラムは、コンポーネント単位で実行される。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】“Ａｎｄｒｏｉｄ−Ｏｐｅｎ  Ｈａｎｄｓｅｔ  Ａｌｌｉａｎｃｅプロジェクト”、［ｏｎｌｉｎｅ］、グーグル株式会社、［平成２１年４月１日検索］、インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｃｏｄｅ．ｇｏｏｇｌｅ．ｃｏｍ／ｉｎｔｌ／ｊａ／ａｎｄｒｏｉｄ／＞
【発明の概要】
【発明が解決しようとする課題】
【０００５】
例えば、様々なフレームワーク・プログラムや、様々なアプリケーション・プログラムが、ネットワーク等により自由に配布される様な状況において、配布されているフレームワーク・プログラム及び／又はアプリケーション・プログラムを実行することにより、コンピュータが、その利用者の望まない動作を行うことを防ぐことが重要になる。このため、非特許文献１に記載の技術においては、“パーミッション”を利用した方法が使用されている。ここで、“パーミッション”とは、各種コンピュータ資源へのアクセスの許可・不許可を制御するパラメータであり、例えば、あるコンピュータ資源にアクセスするアプリケーション・プログラムは、そのコンピュータ資源へのアクセスに関するパーミッションを付与されている必要がある。
【０００６】
上記従来技術において、プラットフォームの管理者は、あらかじめポリシ条件を定めておき、アプリケーション・プログラムの実行により、あるパーミッションが必要となった場合、プラットフォームは、ポリシ条件に従い、そのパーミッションをアプリケーション・プログラムに許可可能であるか否かを判定し、許可可能である場合にのみ、そのアプリケーション・プログラムにパーミッションの付与を行う。ただし、ポリシ条件が矛盾無く定められており、プラットフォームが、パーミッションの付与や、削除を正しく行うことが前提となっている。しかしながら、自由に配布されているフレームワーク・プログラム及びアプリケーション・プログラムが、前提通りに作成されていることの保証はなく、あらかじめ、フレームワーク・プログラム及び／又はアプリケーション・プログラムの検証を行うことができれば便利である。
【０００７】
したがって、本発明は、プログラムを、そのプログラムが対象としている装置やコンピュータにインストールする前に、その動作を検証する装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明のプログラムの検査装置は、
第１のプログラムを解析し、第１のプログラムを実行しているコンピュータで動作する第２のプログラムの、状態変化を伴う動作である遷移動作を抽出する手段と、第１のプログラムを実行しているコンピュータにおいて、守らなければならない規則である１つ以上のポリシ条件を読み込む手段と、前記遷移動作及び前記ポリシ条件に基づき第１のプログラムの動作を分析する手段とを備えている。
【０００９】
本発明による検査装置の他の実施形態によると、
前記第１のプログラムの動作を分析する手段は、初期状態に各遷移動作を適用した後の状態が、総てのポリシ条件を満足する場合には、第１のプログラムは正常に動作すると判定し、それ以外の場合には、正常に動作しないと判定することも好ましい。
【００１０】
また、本発明のプログラムの検査装置は、
第１のプログラムを解析し、第１のプログラムの動作ロジックと、該動作ロジックを実行するのに必要なパーミッションを特定する手段と、第１のプログラムを実行しているコンピュータにおいて、守らなければならない規則である１つ以上のポリシ条件を読み込む手段と、第１のプログラムを実行しているコンピュータで動作する第２のプログラムを解析し、第２のプログラムが呼び出す一連の動作ロジックを判定する手段と、第２のプログラムに必要なパーミッションを記載したアプリケーション記述ファイルを読み込む手段と、コンピュータの利用者が付与できるパーミッションを記載した付与可能パーミッション記述ファイルを読み込む手段と、前記第２のプログラムが呼び出す一連の動作ロジック、前記パーミッションを特定する手段が特定した各動作ロジックの実行に必要なパーミッション、アプリケーション記述ファイルに記載されたパーミッション及び付与可能パーミッション記述ファイルに記載されたパーミッションに基づき、第２のプログラムの動作を分析する手段とを備えていることを特徴とする。
【００１１】
さらに、本発明による検査装置の他の実施形態によると、
前記第２のプログラムの動作を分析する手段は、前記第２のプログラムが呼び出す一連の動作ロジックの実行を順にシミュレートし、シミュレートしようとしている動作ロジックが、パーミッションの付与を要求するものである場合において、要求されたパーミッションがアプリケーション記述ファイル及び付与可能パーミッション記述ファイルの少なくとも一方に記載されていない場合には、第２のプログラムは正常に動作しないと判定することも好ましい。
【００１２】
さらに、本発明による検査装置の他の実施形態によると、
前記第２のプログラムの動作を分析する手段は、シミュレートしようとしている動作ロジックが、パーミッションの付与を要求するものである場合において、要求されたパーミッションが、アプリケーション記述ファイル及び付与可能パーミッション記述ファイルの両方に記載されている場合には、要求されたパーミッションを第２のプログラムに付与し、シミュレートしようとしている動作ロジックが、第２のプログラムに付与した特定のパーミッションの削除を要求するものである場合には、前記特定のパーミッションの第２のプログラムへの付与を取消し、シミュレートしようとしている動作ロジックが、前記パーミッションを特定する手段により、その実行のためにはパーミッションが必要と判定されている場合には、必要とされているパーミッションが第２のプログラムに付与されているか否かを判定し、付与されていない場合には、第２のプログラムは正常に動作しないと判定することも好ましい。
【００１３】
また、本発明のプログラムによると、上記プログラムの検査装置としてコンピュータを機能させることを特徴とする。
【発明の効果】
【００１４】
実際にインストールを行うことなく、プログラムの動作を検証することが可能になる。
【図面の簡単な説明】
【００１５】
【図１】本発明による検査装置の構成図である。
【図２】第１解析部の構成図である。
【図３】第２解析部の構成図である。
【図４】状態記述子を示す図である。
【図５】遷移記述子を示す図である。
【図６】状態記述子の各要素を示す図である。
【図７】インストール動作要素を示す図である。
【図８】アプリケーション記述子を示す図である。
【図９】第１分析部の処理を説明する図である。
【図１０】第２分析部の処理を説明する図である。
【図１１】状態テーブル及びスタック・テーブルを示す図である。
【図１２】状態テーブル及びスタック・テーブルの状態遷移を示す図である。
【図１３】状態テーブル及びスタック・テーブルの状態遷移を示す図である。
【図１４】状態テーブル及びスタック・テーブルの状態遷移を示す図である。
【図１５】状態テーブル及びスタック・テーブルの状態遷移を示す図である。
【発明を実施するための形態】
【００１６】
本発明を実施するための形態について、以下では図面を用いて詳細に説明する。図１は、本発明による検査装置の構成図である。図１に示す様に、検査装置は、入力部１と、第１解析部２と、第２解析部３と、保存部４と、第１分析部５と、第２分析部６と、出力部７とを備えている。入力部１は、利用者が当該検査装置に入力するフレームワーク・プログラム及びポリシ記述ファイルを第１解析部２に出力する。
【００１７】
“ポリシ記述ファイル”は、プラットフォームの管理者が定めたプラットフォームが守らなければなら規則（ポリシ条件）を記述したものである。例えば、「コンポーネントは、１つの親アプリケーション・プログラムを持ち、コンポーネントから、親アプリケーション・プログラムを特定でき、親アプリケーション・プログラムから、子のコンポーネントを特定できること」や、「親アプリケーション・プログラムに対して許可されたパーミッションは、子のコンポーネントの総てに許可することができる」等は、ポリシ条件であり、１つ以上のポリシ条件がポリシ記述ファイルにおいて定義される。
【００１８】
図２は、第１解析部２の構成図である。図２に示す様に、第１解析部２は、構造解析部２１と、動作解析部２２と、ポリシ解析部２３とを備えている。構造解析部２１は、フレームワーク・プログラムの内容を解析し、状態記述子を生成して、保存部４に保存する。図４に示す様に、本実施形態において、状態記述子は、アプリケーション要素、コンポーネント要素、パーミッション要素を含んでいる。
【００１９】
アプリケーション要素は、プラットフォームがアプリケーション・プログラムを管理するための雛形であり、例えば、図６（ａ）においては、アプリケーション・プログラムを特定するためのアプリケーション識別子、所有者を特定するための情報、含んでいるコンポーネント等を特定する情報を、管理対象とすることが示されている。なお、実際のフィールド値は、アプリケーション・プログラムが特定されなければ定まらないため、これらの値はヌル値となっている。
【００２０】
同様に、コンポーネント要素は、プラットフォームがコンポーネントを管理するための雛形であり、例えば、図６（ｂ）においては、コンポーネントを特定するためのコンポーネント識別子、所有者を特定するための情報、親となるアプリケーション・プログラムを特定する情報を、管理対象とすることが示されている。アプリケーション要素と同様、構造解析部２１の出力において、フィールド値はヌル値である。
【００２１】
パーミッション要素とは、フレームワーク・プログラムが定義している総てのパーミッションについて、その識別子と、関連する動作ロジックを記載したものであり、その例を図６（ｃ）に示す。ここで、関連する動作ロジックとは、パーミッションの対象となる動作であり、図６（ｃ）においてはＡＰＩの列にて規定している。パーミッション要素により、ＡＰＩと、そのＡＰＩを実行するために必要なパーミッションとの関係が規定される。具体的には、図６（ｃ）において、ＡＰＩのＩｎｔｅｒｎｅｔ．ｓｅｎｄＰａｃｋｅｔｓ（  ）を呼び出すためには、パーミッション識別子として値Ｐｅｒｍ０１が付与された“インターネットアクセス”パーミッションが付与されていることが必要となる。
【００２２】
図２に戻り、動作解析部２２は、フレームワーク・プログラムの内容を解析して、遷移記述子を生成して、保存部４に保存する。なお、このとき状態記述子も参照する。遷移記述子とは、プラットフォーム上へのアプリケーション・プログラムのインストール／アンインストール、実行開始／終了、付与しているパーミッション変更等、アプリケーション状態の変更を伴う動作を抽出したものである。図５に示す様に、本実施形態においては、遷移記述子として、インストール動作要素、開始動作要素、終了動作要素、アンインストール動作要素、パーミッション付与動作要素、パーミッション取消動作要素が抽出されている。
【００２３】
インストール動作要素は、インストール動作を実行するＡＰＩと、その具体的な動作を規定するものである。なお、状態記述子を参照するのは、状態記述子で定義している管理対象を利用して、動作を記述するからである。なお、開始動作要素は、インストールされているアプリケーション・プログラムの実行を開始する動作を規定し、終了動作要素は、実行されているアプリケーション・プログラムを停止する動作を規定し、アンインストール動作要素は、アプリケーション・プログラムのアンインストール動作を規定し、パーミッション付与動作要素は、アプリケーション・プログラムにパーミッションを付与する動作を規定し、パーミッション取消動作要素は、アプリケーション・プログラムに付与されているパーミッションを取消す動作を規定するが、その規定方法は、インストール動作要素と同じである。
【００２４】
図２に戻り、ポリシ解析部２３は、ポリシ記述ファイルの内容を解析して、ポリシ条件を記述したポリシ記述子を生成し保存部４に保存する。より簡単には、人間が理解できる形式にて記載されたポリシ記述ファイルのポリシ条件を、プラットフォームが理解できる形式のポリシ条件に形式変換する。なお、状態記述子を参照するのは、状態記述子で定義している管理対象をポリシ条件の記述に利用するからである。
【００２５】
また、図１の入力部１は、利用者が当該検査装置に入力するアプリケーション・プログラム、アプリケーション記述ファイル及び付与可能パーミッション記述ファイルを第２解析部３に出力する。図３に示す様に、第２解析部３は、アプリケーション解析部３１を備えており、アプリケーション解析部３１は、アプリケーション・プログラム、アプリケーション記述ファイル及び付与可能パーミッション記述ファイルを解析してアプリケーション記述子を生成し、保存部４に保存する。ここで、“アプリケーション記述ファイル”とは、アプケーション・プログラムに関連し、関連するアプケーション・プログラムが必要とするパーミッション、他のアプリケーション及び他のアプリケーション・プログラムが当該アプリケーション・プログラムにアクセスするために必要とするパーミッションを記載したものであり、通常、アプケーション・プログラムの作成者がアプリケーション・プログラムと共に配布する。また、“付与可能パーミッション記述ファイル”とは、利用者が付与可能なパーミッションを記述したものであり、利用者が、つまり、プラットフォームを使用するものが作成する。
【００２６】
アプリケーション記述子は、図８に示す様に、状態記述子のアプリケーション要素及びコンポーネント要素から、必要なフィールドを集めて、そのフィールドに値を設定したものである。さらに、アプリケーション記述子は、必要パーミッション・フィールドと、付与可能パーミッション・フィールドと、要求パーミッション・フィールドと、動作ロジック・フィールドとを有している。本実施形態において、必要パーミッション・フィールドには、アプリケーション記述ファイルにて、このアプリケーション・プログラムの実行のために必要と定義されているパーミッションがそのまま記載され、付与可能パーミッション・フィールドには、付与可能パーミッション記述ファイルにて、利用者が付与可能としたパーミッションがそのまま記載され、要求パーミッション・フィールドには、アプリケーション記述ファイルにて、このアプリケーション・プログラムへのアクセスのために必要と定義されているパーミッションがそのまま記載される。さらに、動作ロジック・フィールドには、アプリケーション解析部３１がアプリケーション・プログラムの動作を解析して得た一連の動作ロジックを記載する。具体的には、個々の動作は、アプケーション・プログラムが呼び出すＡＰＩであり、実行するＡＰＩを実行順に並べることにより動作ロジックを特定する。
【００２７】
続いて、第１分析部５による、フレームワーク・プログラムの分析について説明する。図９に示す様に、第１分析部５は、保存部４に保存された状態記述子、遷移記述子、ポリシ記述子を読み込んで、フレームワーク・プログラムが正常に動作するか否かの判定を行う。
【００２８】
以下に、判定手順について述べる。
（手順１）まず、状態記述子を読み込んで初期状態Ｓを決定する。この初期状態については、ポリシ記述子にて規定された総てのポリシ条件を満たすものとする。
（手順２）ポリシ記述子に規定されたポリシ条件ＳＣ１〜ＳＣｎの１つであるＳＣｉ（１≦ｉ≦ｎ）を選択し、遷移記述子に規定された遷移動作Ｏ１〜Ｏｍから、１つの遷移動作Ｏｊ（１≦ｊ≦ｍ）を選択する。
（手順３）状態Ｓから選択した遷移動作Ｏｊを行った後の状態Ｓ´が、選択したキュリティ条件ＳＣｉを満足するか否かを判定し、満足しない場合には、選択した遷移動作Ｏｊ及び選択したポリシ条件ＳＣｉを記録する。
（手順４）ｉ及びｊの総ての組合せについて、手順２及び３を実行し、実行終了した時点において、遷移動作及びセキュリティ条件の組が記録されていなければ、フレームワーク・プログラムは正常に動作する又は安全であるとの判定結果を出力し、１つ以上の組が記録されている場合には、フレームワーク・プログラムは正常に動作しない又は安全ではないとの判定結果と、記録された組を出力する。
【００２９】
上記検証手順は帰納的な方法である。つまり、ある状態から任意の遷移動作を１回実行した後の状態においても、総てのポリシ条件が満たされる場合、ある状態から任意の遷移動作を任意の回数実行したとしてもポリシ条件が満たされることになる。したがって、ある状態では総てのポリシ条件が満たされるという暗黙な仮定を加えることで、任意の時点において総てのポリシ条件が満たされることになる。なお、初期状態は総てのポリシ条件を満たすと仮定するのは、初期状態とは遷移動作が一回も行われていない状態であり、本発明が目的とするフレームワーク・プログラムの遷移動作の検証の範囲外であることと、初期状態の安全性については、コンピュータのハードウェア、基本ソフトウェア等によって決定される事項だからである。
【００３０】
上記検証手順の具体例について説明する。ここで、ポリシ条件の１つに、「あるアプリケーションにパーミッションが付与されている場合、そのアプリケーションは、プラットフォームにインストールされているものでなければならない」との条件があり、遷移記述子のアンインストール動作要素の動作ロジックは、単にアプリケーションのアンインストールを行うのみであり、アンインストール対象のアプリケーショに付与されているパーミッションを検査して付与されているパーミッションを取消したりはしないものとする。この場合、当然、インストールされていないアプリケーショに対してパーミッションが付与されているという状態が存在し得ることになり、上記ポリシ条件を満たさないことになる。したがって、この場合、上記手順３において、上記ポリシ条件とアンインストール動作の組が記録されることになる。
【００３１】
続いて、第２分析部６による、アプリケーション・プログラムの分析について説明する。図１０に示す様に、第２分析部６は、保存部４に保存された状態記述子、遷移記述子、ポリシ記述子及びアプリケーション記述子を読み込んで、アプリケーション・プログラムが、与えられたプラットフォーム上で正常に動作可能であるか否かを判定する。以下に、アプリケーション識別子Ａｐｐ０１が付与されたアプリケーション・プログラムの分析を行う場合を例にして、第２分析部６の機能を説明する。なお、アプリケーション・プログラムＡｐｐ０１の動作ロジック列は、ＯＬ１１、ＯＬ１２、ＯＬ１３、・・・であるものとする。
【００３２】
第２分析部６は、アプリケーション・プログラムの分析のために、図１１に示す状態テーブル及びスタック・テーブルと、図示しない付与済みパーミッション状態テーブルを管理する。
【００３３】
まず、第２分析部６は、アプリケーション・プログラムＡｐｐ０１のアプリケーション記述子を参照して、状態テーブルのアプリケーション欄に、アプリケーション識別子Ａｐｐ０１を、現在実行中動作欄に、最初の動作ロジックであるＯＬ１１を設定する。図１２にその状態を示す。
【００３４】
その後、第２分析部６は、現在実行中動作に設定されている動作ロジックＯＬ１１の実行をシミュレートする。ここで、現在実行中動作に設定されている動作ロジックが、パーミッションの付与を要求するものである場合、第２分析部６は、アプリケーション記述子を参照し、要求されたパーミッションが、必要パーミッション・フィールドに含まれており、かつ、付与可能パーミッション・フィールドに含まれているのであれば、アプリケーション・プログラムＡｐｐ０１に、当該要求されたパーミッションを付与、つまり、付与済みパーミッション状態テーブルに、Ａｐｐ０１と付与したパーミッションの組を記録する。なお、必要パーミッション・フィールドと付与可能パーミッション・フィールドの少なくとも一方に含まれていない場合、第２分析部６は、アプリケーション・プログラムＡｐｐ０１を正常に実行できないものと判定し、アプリケーション・プログラムＡｐｐ０１が、実際に必要としているが、付与できないパーミッションと、付与できない理由と、現在の動作ロジックを出力して分析を終了する。なお、付与できない理由とは、付与できないパーミッションが、必要パーミッション・フィールドに記載されていないのか、付与可能パーミッション・フィールドに記載されていないのか、両方に記載されていないのかを示す値である。また、現在実行中動作に設定されている動作ロジックが、付与されているパーミッションの取消しを要求するものである場合、第２分析部６は、承認パーミッション状態テーブルの該当するパーミッションとアプリケーション・プログラムの組の記載を削除する。
【００３５】
さらに、現在実行中動作に設定されている動作ロジックが、パーミッションを必要とするＡＰＩを呼び出すものである場合、第２分析部６は、このＡＰＩの実行に必要な総てのパーミッションが、アプリケーション・プログラムＡｐｐ０１に付与されているか否かを、承認パーミッション状態テーブルを参照して判定する。必要な総てのパーミッションがアプリケーション・プログラムＡｐｐ０１に付与されていない場合、第２分析部６は、アプリケーション・プログラムＡｐｐ０１を正常に実行できないものと判定し、必要であるが付与されていないパーミッションと、現在の動作ロジックを出力して分析を終了する。
【００３６】
また、現在実行中動作に設定されている動作ロジックが、データを読み書きする対象として他のアプリケーション・プログラムを引数に指定する場合、第２分析部６は、当該他のアプリケーション・プログラムについてのアプリケーション記述子の要求パーミッション・フィールドに記載されたパーミッションが、現在実行中のアプリケーション・プログラムＡｐｐ０１に付与されているか否かを検査し、付与されていない場合、第２分析部６は、アプリケーション・プログラムＡｐｐ０１を正常に実行できないものと判定し、必要であるが付与されていないパーミッションと、現在の動作ロジックを出力して分析を終了する。
【００３７】
動作ロジックＯＬ１１のシミュレート後、第２分析部６は、次の動作ロジックであるＯＬ１２を状態テーブルの現在実行中動作欄に設定して、動作ロジックＯＬ１２の実行をシミュレートし、正常に実行できる場合には、図１３に示す様に、次の動作ロジックであるＯＬ１３を状態テーブルの現在実行中動作欄に設定し、動作ロジックＯＬ１３の実行をシミュレートする。なお、ＯＬ１３は、アプリケーション識別子Ａｐｐ０３が付与されたアプリケーションの実行を開始するものとする。
【００３８】
この場合、第２分析部６は、図１４に示す様に、現在実行中のアプリケーション・プログラムの識別子であるＡｐｐ０１と、現在実行中の動作ロジックであるＯＬ１３をスタック・テーブルの一番下の行に追加し、ＯＬ１３によって開始されたアプリケーション・プログラムの識別子Ａｐｐ０３と、その最初の動作ロジックであるＯＬ３１を状態テーブルに設定する。その後、既に説明した様に、アプリケーション・プログラムＡｐｐ０３の各動作ロジックをその順番通りにシミュレートして、実行可能であるか否かを判定する。
【００３９】
図１５は、アプリケーション・プログラムＡｐｐ０３の動作ロジックＯＬ３２が、アプリケーション識別子Ａｐｐ０５が付与されたアプリケーションの実行を開始するものであったことにより、Ａｐｐ０３と、動作ロジックＯＬ３２がスタック・テーブルの一番下の行に追加され、新たに開始されたアプリケーション・プログラムの識別子Ａｐｐ０５と、その最初の動作ロジックであるＯＬ５１が状態テーブルに設定されている状態を示している。
【００４０】
その後、アプリケーション・プログラムＡｐｐ０５の総ての動作ロジックが正常に終了した場合、第２分析部６は、スタック・テーブルの一番下の行にあるアプリケーション・プログラムＡｐｐ０３及び動作ロジックＯＬ３２の次の動作ロジックを状態テーブルに設定し、スタック・テーブルの一番下の行を削除する。その後、状態テーブルに記載された動作ロジックのシミュレートを行う。同様に、アプリケーション・プログラムＡｐｐ０３の総ての動作ロジックが正常に終了した場合、第２分析部６は、スタック・テーブルの一番下の行にあるアプリケーション・プログラムＡｐｐ０１及び動作ロジックＯＬ１３の次の動作ロジックを状態テーブルに設定し、スタック・テーブルの一番下の行を削除し、状態テーブルに記載された動作ロジックのシミュレートを行う。最後の、アプリケーション・プログラムＡｐｐ０１の総ての動作ロジックが正常に終了した場合、第２分析部６は、与えられたプラットフォーム上でアプリケーション・プログラムＡｐｐ０１が正常に動作すると判定して、結果を出力する。
【００４１】
なお、本発明によるプログラムの検査装置は、コンピュータを図１から３の各部として機能させるプログラムにより実現することができる。これらコンピュータプログラムは、コンピュータが読み取り可能な記憶媒体に記憶されて、又は、ネットワーク経由で配布が可能なものである。更に、本発明は、ハードウェア及びソフトウェアの組合せによっても実現可能である。
【符号の説明】
【００４２】
１  入力部
２  第１解析部
３  第２解析部
４  保存部
５  第１分析部
６  第２分析部
７  出力部
２１  構造解析部
２２  動作解析部
２３  ポリシ解析部
【図１】
2011044065.tif 000003
【図２】
2011044065.tif 000004
【図３】
2011044065.tif 000005
【図４】
2011044065.tif 000006
【図５】
2011044065.tif 000007
【図６】
2011044065.tif 000008
【図７】
2011044065.tif 000009
【図８】
2011044065.tif 000010
【図９】
2011044065.tif 000011
【図１０】
2011044065.tif 000012
【図１１】
2011044065.tif 000013
【図１２】
2011044065.tif 000014
【図１３】
2011044065.tif 000015
【図１４】
2011044065.tif 000016
【図１５】
2011044065.tif 000017