(57)【特許請求の範囲】
【請求項１】
プロセッサーと、
前記プロセッサーが実行可能な命令を保存するメモリーと、を備え、
前記命令は、
ユーザーが特定の安全レベルに関する１つ以上の産業コンプライアンス規格を選択可能とするよう構成された選択モジュールと、
前記安全レベルに関連付けられた１つ以上の基準パラメーターに関するソフトウェアアプリケーションのコンプライアンス検証プロセスを開始するよう構成された実行モジュールと、
前記選択されたコンプライアンス規格と、１つ以上の解析ツールの機能とをマッピングするよう構成されたマッピングモジュールと、
前記ソフトウェアアプリケーションのコンプライアンスレベルを算出するために、前記１つ以上の解析ツールの前記マッピングされた機能を解析するよう構成された解析エンジンと、
所望のコンプライアンスレベルを達成するための１つ以上の提案的な方策を提供する多層構造によって、前記ソフトウェアアプリケーションの前記コンプライアンスレベルを視覚的に提供するよう構成された出力生成モジュールと、を実行するための命令を含むことを特徴とするソフトウェアコンプライアンス解析システム。
【請求項２】
前記マッピングモジュールは、必須ルールが事前に選択されており、設定不可能な状態で、前記マッピングを実行するよう構成されている請求項１に記載のソフトウェアコンプライアンス解析システム。
【請求項３】
前記マッピングモジュールは、さらなるマッピングのため、前記ユーザーによるオプショナルルールまたは推奨ルールの選択を提供するようさらに構成されている請求項１に記載のソフトウェアコンプライアンス解析システム。
【請求項４】
前記マッピングモジュールは、前記ツールの全ての前記ユーザー間での一貫性のために、前記マッピングを保存するよう構成されている請求項１に記載のソフトウェアコンプライアンス解析システム。
【請求項５】
前記解析エンジンは、前記コンプライアンスレベルを算出するため、ルールの合計数に対するルール違反の数を特定するようさらに構成されている請求項１に記載のソフトウェアコンプライアンス解析システム。
【請求項６】
前記命令は、規格コンプライアンスグループ分けに従った１つ以上のグループについての報告を生成するよう構成された報告モジュールをさらに含む請求項１に記載のソフトウェアコンプライアンス解析システム。
【請求項７】
前記出力生成モジュールは、コンプライアンスグループ分け、個々のルール違反およびソースコードに関する視覚化を提供するよう構成されている請求項１に記載のソフトウェアコンプライアンス解析システム。
【請求項８】
前記出力生成モジュールは、コンプライアンス指標バーを用いて、前記ソフトウェアアプリケーションの前記コンプライアンスレベルを視覚的に提供するよう構成されている請求項１に記載のソフトウェアコンプライアンス解析システム。
【請求項９】
ユーザーが特定の安全レベルに関する１つ以上の産業コンプライアンス規格を選択可能とする工程と、
前記安全レベルに関連付けられた１つ以上の基準パラメーターに関するソフトウェアアプリケーションのコンプライアンス検証プロセスを開始する工程と、
前記選択されたコンプライアンス規格と、１つ以上の解析ツールの機能とをマッピングする工程と、
前記ソフトウェアアプリケーションのコンプライアンスレベルを算出するために、前記１つ以上の解析ツールの前記マッピングされた機能を解析する工程と、
所望のコンプライアンスレベルを達成するための１つ以上の提案的な方策を提供する多層構造によって、前記ソフトウェアアプリケーションの前記コンプライアンスレベルを視覚的に提供する工程と、を備えることを特徴とするソフトウェアコンプライアンス解析方法。
【請求項１０】
前記マッピングする工程は、必須ルールが事前に選択されており、設定不可能な状態で、実行される請求項９に記載のソフトウェアコンプライアンス解析方法。
【請求項１１】
前記マッピングする工程は、さらなるマッピングのため、前記ユーザーによるオプショナルルールまたは推奨ルールの選択をさらに提供する請求項９に記載のソフトウェアコンプライアンス解析方法。
【請求項１２】
前記ツールの全ての前記ユーザー間での一貫性のために、前記マッピングを保存する工程をさらに含む請求項９に記載のソフトウェアコンプライアンス解析方法。
【請求項１３】
前記マッピングされた機能を解析する工程は、前記コンプライアンスレベルを算出するため、ルールの合計数に対するルール違反の数を特定する工程をさらに含む請求項９に記載のソフトウェアコンプライアンス解析方法。
【請求項１４】
規格コンプライアンスグループ分けに従った１つ以上のグループについての報告が生成される請求項９に記載のソフトウェアコンプライアンス解析方法。
【請求項１５】
前記コンプライアンスレベルを視覚的に提供する工程は、コンプライアンスグループ分け、個々のルール違反およびソースコードに関する視覚化を提供する請求項９に記載のソフトウェアコンプライアンス解析方法。
【請求項１６】
前記ソフトウェアアプリケーションの前記コンプライアンスレベルは、コンプライアンス指標バーを用いて、視覚的に提供される請求項９に記載のソフトウェアコンプライアンス解析方法。
【請求項１７】
コンピューターが実行可能な命令を保存する非一時的コンピューター読み取り可能媒体であって、
前記命令は、
特定の安全レベルに関する１つ以上の産業コンプライアンス規格に対するユーザーからの選択を受信するよう構成されたユーザーインターフェースと、
前記選択されたコンプライアンス規格と、１つ以上の解析ツールの機能とのマッピングを実行するよう構成されたコンプライアンスレベル判別モジュールと、
各層が前記マッピングに対応するような多層構造によって、ソフトウェアアプリケーションのコンプライアンスレベルを視覚的に提供し、さらに、前記ユーザーに対し、所望のコンプライアンスレベルを達成するためのルール違反に関する提案的な方策を表示するよう構成された表示モジュールと、を実行するための命令を含むことを特徴とする非一時的コンピューター読み取り可能媒体。
【請求項１８】
前記表示モジュールは、仕様コンプライアンスグループ分けに従った１つ以上のグループについての報告を生成するよう構成された請求項１７に記載の非一時的コンピューター読み取り可能媒体。
【請求項１９】
前記表示モジュールは、コンプライアンス指標バーを用いて、前記ソフトウェアアプリケーションの前記コンプライアンスレベルを視覚的に提供するよう構成された請求項１７に記載の非一時的コンピューター読み取り可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアコンプライアンス解析（software compliance analysis）の分野一般に関する。より具体的に、本発明は、ソフトウェアアプリケーションのコンプライアンス検査および詳細な解析を提供するためのシステムおよび方法に関する。
【背景技術】
【０００２】
今日の世界において、全ての企業もしくは産業は、生産、製作その他ビジネスプロセスを自動化するためのソフトウェアアプリケーションまたはツールを利用している。ソフトウェアアプリケーションまたはツール等の品質保証における原則は、「目的に合致すること」（Fit for Purpose）および「最初から適切であること」（First time Right）が達成されているか否かである。これを確実に確認するためには、ソフトウェアの品質監査が必要不可欠である。
【０００３】
ソフトウェアアプリケーションの品質レベルを算出するために、異なる臨界レベル（criticality levels）のＩＳＯ規格(ISO standards)のような様々な規格が規定されている。ソフトウェア規格仕様書（software standard specifications）は、ソフトウェアアプリケーションが遵守すべき様々なルールを規定している。市場には、ソフトウェアアプリケーションのコンプライアンス（遵守性）をモニター（監視）し、それらのコンプライアンスレベルを算出するよう構成された様々なシステムが存在している。
【０００４】
市場には、コンプライアンスモニタリングおよび解析用の様々なツールが存在しており、そのようなツールは、テストによってソフトウェアアプリケーション全体としてのコンプライアンスレベルを算出するために、コンプライアンス規格仕様書を参照している。ソフトウェア規格仕様書は本質的に複雑であり、そのため、ソフトウェア規格仕様書を理解することは、ソフトウェア開発者にとっての負担となる。また、ソフトウェアの様々な機能と、ソフトウェア規格仕様書とを手動でマッピングする作業（manually mapping）は、非常に冗長で退屈な作業であり、多大な時間を必要とする。ソフトウェアアプリケーション全体のコンプライアンスレベルを算出するために、前述のツールを活用する開発者のそれぞれは、同じ規格仕様書を順守しなければならない。そのため、ソフトウェアアプリケーションの機能をマッピングする（対応付ける）作業は、チーム間での一貫性（consistency：整合性）を確保するために、ソフトウェアツールを通して、一律化（uniform）されなければならない。現存のソフトウェアコンプライアンスモニタリングおよび解析ツールは、そのツールのレベルに応じて、コンプライアンスレベルを算出し、視覚化している。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の目的は、ソフトウェアアプリケーションのコンプライアンス検査および解析を提供するための統合システムを提供し、その結果、詳細な（徹底した）トレーサビリティ（traceability:追跡管理）を実行可能とする視覚化された解析を提供する事にある。本発明の実施形態の１つでは、ソフトウェアコンプライアンス解析システムが開示される。該ソフトウェアコンプライアンス解析システムは、
プロセッサーと、
前記プロセッサーが実行可能な命令を保存するメモリーと、を備え、
前記命令は、
ユーザーが特定の安全レベルに関する１つ以上の産業コンプライアンス規格を選択可能とするよう構成された選択モジュールと、
前記安全レベルに関連付けられた１つ以上の基準パラメーターに関するソフトウェアアプリケーションのコンプライアンス検証プロセスを開始するよう構成された実行モジュールと、
前記選択されたコンプライアンス規格と、１つ以上の解析ツールの機能とをマッピングするよう構成されたマッピングモジュールと、
前記ソフトウェアアプリケーションのコンプライアンスレベルを算出するために、前記１つ以上の解析ツールの前記対応付けられた機能を解析するよう構成された解析エンジンと、
所望のコンプライアンスレベルを達成するための１つ以上の提案的な方策を提供する多層構造によって、前記ソフトウェアアプリケーションの前記コンプライアンスレベルを視覚的に提供するよう構成された出力生成モジュールと、を実行するための命令を含むことを特徴とする。
【０００６】
本発明の更なる目的は、ソフトウェアアプリケーションのコンプライアンス検査および解析を提供するための方法を提供し、その結果、詳細な（徹底した）トレーサビリティを実行可能な視覚化された解析を提供する事にある。本発明の実施形態の１つでは、ソフトウェアコンプライアンス解析方法が開示される。該ソフトウェアコンプライアンス解析方法は、
ユーザーが特定の安全レベルに関する１つ以上の産業コンプライアンス規格を選択可能とする工程と、
前記安全レベルに関連付けられた１つ以上の基準パラメーターに関するソフトウェアアプリケーションのコンプライアンス検証プロセスを開始する工程と、
前記選択されたコンプライアンス規格と、１つ以上の解析ツールの機能とをマッピングする工程と、
前記ソフトウェアアプリケーションのコンプライアンスレベルを算出するために、前記１つ以上の解析ツールの前記マッピングされた機能を解析する工程と、
所望のコンプライアンスレベルを達成するための１つ以上の提案的な方策を提供する多層構造によって、前記ソフトウェアアプリケーションの前記コンプライアンスレベルを視覚的に提供する工程と、を備えることを特徴とする。
【０００７】
本発明の更なる目的は、ソフトウェア品質保証に関するコンプライアンスレベルを判別するための命令セットが実装されたコンピュータープログラム製品を提供することにある。本発明の実施形態の１つでは、非一時的コンピューター読み取り可能媒体（non-transitory computer-readable medium）が開示される。該コンピューター読み取り可能媒体は、コンピューターが実行可能な命令を保存しており、前記命令は、
特定の安全レベルに関する１つ以上の産業コンプライアンス規格に対するユーザーからの選択を受信するよう構成されたユーザーインターフェースと、
前記選択されたコンプライアンス規格と、１つ以上の解析ツールの機能とのマッピングを実行するよう構成されたコンプライアンスレベル判別モジュールと、
各層が前記マッピングに対応するような多層構造によって、前記ソフトウェアアプリケーションの前記コンプライアンスレベルを視覚的に提供し、前記ユーザーに対し、所望のコンプライアンスレベルを達成するためのルール違反に関する提案的な方策を表示するよう構成された表示モジュールと、を実行するための命令を含むことを特徴とする。
【図面の簡単な説明】
【０００８】
【図１】図１は、本発明の実施形態の１つに係るソフトウェアアプリケーションのコンプライアンス検査および解析を提供する統合システムの基本設計概念（architecture）を示す図である。
【０００９】
【図２】図２は、本発明の実施形態の１つに係る詳細なコンプライアンス検証を詳細に視覚化して提供する出力生成モジュールの基本設計概念を示す図である。
【００１０】
【図３】図３は、本発明の実施形態に係る多層構造によって視覚化された詳細なコンプライアンスレベルの１例を示す図である。
【００１１】
【図４】図４は、本開示と整合する(consistent with)実施形態を実行するコンピューターシステムのブロック図の１例である。
【発明を実施するための形態】
【００１２】
以下、特徴を図示している本発明の複数の実施形態が説明される。明細書中、「構成する」、「有する」、「含む」、「備える」およびそれらの他の形式は、同等な意味であり、ある事項またはこれらの文言のいずれか１つに続く事項はそのような事項の包括的なリストであるような意味ではなく、また、列挙された事項のみに限定されるという意味ではない。
【００１３】
また、明細書および添付の請求項において使用されるように、単数形“a”、“an”、“the”は、文脈が明確に示していなければ、複数形も含むことに注意しなければならない。ここで説明されるシステム、方法、装置およびデバイスと同等、または類似のシステム、方法、装置およびデバイスは、本発明の実施形態の実施またはテストに使用されることができるが、好ましいシステムおよび方法は以下に説明される。発明の説明および理解のための以下の記載は、多数の実施形態を示すが、これらは、本発明の範囲を特に限定するものでは無い。
【００１４】
本発明の１つ以上の構成要素は、明細書の理解を助けるためのモジュールとして記載される。例えば、モジュールは、論理ゲート（logical gate）、半導体デバイス、集積回路、その他の個々の要素を含むハードウェア回路内の自己充足な（self-contained）構成要素を含んでいてもよい。また、モジュールは、プロセッサー等の任意のハードウェア資源によって実行される任意のソフトウェアプログラムの一部であってもよい。ソフトウェアプログラムとしてのモジュールの実行は、プロセッサーまたはその他のハードウェア資源によって実行可能な論理命令（logical instructions）のセットを含んでいてもよい。さらに、モジュールは、命令のセットもしくはインターフェースを用いたプログラムと組み合わせられていてもよい。
【００１５】
本発明の実施形態は、単に、本発明の１例にすぎず、様々な形態で実装することができる。本発明は、ソフトウェアアプリケーションのコンプライアンス検査および解析用の統合システムおよび方法に関する。コンプライアンス検証（verifications）に関連付けられた結果は、特定のソフトウェアアプリケーションによって達成されたコンプライアンスレベルの詳細な（徹底した）トレーサビリティ（traceability:追跡管理）を実行可能とするように視覚化されていてもよい。システムは、１つ以上の解析ツールの機能を介して、ユーザーによって選択されたコンプライアンス規格についてのソフトウェアのコンプライアンス検証を実行する。ある特定の例では、解析ツールは、これに限られないが、静的解析ツール（static analysis tool）、静的検証ツール（static verification tool）、テストデータ生成、カバレージ解析ツール（coverage analysis tool）、コーディング規格コンプライアンスチェッカーツール（coding standards compliance checker tool）、およびこれらの組み合わせを含む。解析ツールの機能は、規格仕様書に、事前にマッピング（pre-mapping）されていてもよく、事前にマッピングされた機能は、さらに解析されてもよい。このような解析の結果は、多層構造によって（in a multi-stage manner）コンプライアンスレベルを提示するために、視覚化されて提供される。
【００１６】
図１に示す本発明の実施例の１つでは、システム１００は、ユーザーが１つ以上の産業に関する１つ以上のコンプライアンス規格を選択可能とするよう構成された選択モジュール１０２を含む。さらに、システム１００は、事前に定義されたマッピング（pre-defined mapping）に基づくテストによるソフトウェアアプリケーションのコンプライアンス検証プロセスを開始する実行モジュール１０４を含む。さらに、実行モジュール１０４は、マッピングモジュール１０６と、解析エンジン１０８とを含む。さらに、システム１００は、多層構造によって、ソフトウェアアプリケーションのコンプライアンスを提示するために、解析エンジン１０８の解析結果を視覚化して提供する出力生成モジュール１１０を含む。
【００１７】
図１に示す本発明の実施形態の１つでは、選択モジュール１０２は、ユーザーが特定の安全レベルに関する１つ以上の産業に関した１つ以上のコンプライアンス規格を選択可能とするよう構成されている。任意の産業またはアプリケーションに適用可能なコンプライアンス規格は、それぞれ異なっていてもよい。したがって、目的に応じたソフトウェアアプリケーションのコンプライアンス検証を実行するためには、適切なコンプライアンス規格を選択する必要がある。よって、目的に応じたコンプライアンス検証は、ユーザーが達成を希望するコンプライアンスレベルについてのユーザーからの選択を参照する。ソフトウェア品質コンプライアンスのチェックに使用可能なコンプライアンス規格は、特に限定されないが、ＩＳＯ２６２６２を含む。選択されたコンプライアンス規格は、例えば、ＩＳＯ２６２６２用のＡＳＩＬ（Ａ／Ｂ／Ｃ／Ｄ）のような安全臨界レベル（safety criticality level）を有している。したがって、コンプライアンス検証を実行するために、既存のＡＳＩＬ安全臨界レベルから所望の安全臨界レベルを選択するという選択肢がユーザーに与えられることとなる。
【００１８】
選択された安全臨界レベルは、異なる規格仕様書に従って、さらにグループ分けされる（以下、「ルールグループ」という）。このルールグループがソフトウェアアプリケーションに適用されることとなる。ある特定の例では、ＩＳＯ２６２６２−ＡＳＩＬレベルＤは、強制ＬＣ（Enforce Low Complexity）、意味的コード解析（Semantic Code Analysis）、使用言語サブセット（Use Language Subsets）、強制ストロングタイピング（Enforce Strong Typing）、非暗黙型転換（No Implicit Type Conversions）、単一エントリー（Single Entry）および出口点（Exit point）、設計原理使用（Use Design Principles）、変数初期化（Variables Initialisation）、非多重可変名（No Multiple Variable Name）、防御的実行使用（Use Defensive implementation）、非再帰（No Recursions）、ＭＣ／ＤＣ、境界値解析（Analysis of Boundary Values）、並びに静的コード解析（Static Code Analysis）を含む。さらに、ルールグループレベル仕様書は、様々なルールを含む。ユーザーによって選択された安全臨界レベルに従って、適用されるルールは、必須ルール（mandatory rules）、オプショナルルール(optional rules)、および推奨ルール(recommended rules)にカテゴライズ（区分分け）される。必須ルールには “３”の重みが割り当てられ、推奨（推薦）ルールには“２”の重みが割り当てられ、オプショナルルールには“１”の重みが割り当てられる。
【００１９】
図１に示す実行モジュール１０４は、安全レベルに関連付けられた１つ以上の基準パラメーター（normative parameters）に関する１つソフトウェアアプリケーションのコンプライアンス検証プロセスを開始するよう構成されている。基準パラメーターは、ソフトウェアアプリケーションに適用される（遵守すべき）規格仕様書およびルールである。さらに、実行モジュール１０４は、ソフトウェアアプリケーションのコンプライアンス検証を実行するため、選択されたコンプライアンス規格と、１つ以上の解析ツールの対応する機能とを事前に定められたようにマッピング（pre-defined mapping）するよう構成されたマッピングモジュール１０６を含む。これら機能は、その後、コンプライアンス規格を算出するためのテストにおいて、ソフトウェアアプリケーション解析のために用いられる。マッピングモジュール１０６は、必須ルールが事前に選択され（pre-selected）、設定不可能（non-configurable）な状態（方法）で、事前に定義されたマッピングを実行してもよい。さらに、マッピングモジュール１０６は、さらなるマッピング用のユーザーによるオプショナルルールもしくは推奨ルールの選択を提供するよう構成されている。さらに、マッピングモジュール１０６は、ツールの全てのユーザー間で一貫性（整合性）を確保するために、事前に定義されたマッピングを保存するよう構成された保存媒体を含む。マッピングモジュール１０６を用いて保存される選択された設定（configuration）は、全てのユーザー間で、コンプライアンスチェックにおける均一性を確保する。このような事前に定義されたマッピングによって、マッピングにおける混乱と労力を回避することができる。また、事前に定義されたマッピングは、規格仕様書における固有の複雑性を緩和することができ、そのため、ユーザーが規格仕様書を理解する助けとなる。また、複雑な規格仕様書を理解するのに費やされる時間が省かれるので、システムの効率性が向上し、より迅速な実装に繋がる。このマッピングは、ドメイン特定（domain specific）であってもよく、そのため、ユーザーは、特別に適合されたフレームワークを得ることができ、この自動化ユーザーは、自動コンプライアンスチェックのみを実行すればよい。
【００２０】
実行モジュール１０４は、ソフトウェアアプリケーションのコンプライアンスレベルを算出するために、解析ツールの事前にマッピングされた機能のみを解析するよう構成された解析エンジン１０８をさらに含んでいてもよい。内部的に、選択されたルールは、様々な解析ツールの機能にマッピングされ、それら機能が１つ以上のツールから実行される。さらに、解析エンジン１０８は、ソフトウェアアプリケーションのコンプライアンスレベルを算出するため、全ルールに対するルール違反の数を識別する。
【００２１】
コンプライアンスレベルの算出を説明するため、ある特定の例を用いて説明を行う。
【００２２】
一般的に、品質規定は、様々なコンプライアンス推奨（compliance suggestions）を、例えば、ＩＳＯ２６２６２からを提供する。
“＋＋”  ：現在のＡＳＩＬ用に強く推奨される方法（必須）。
“＋”    ：現在のＡＳＩＬ用に推奨される方法（推奨）。
“ｏ”    ：現在のＡＳＩＬ用には推奨されない、または、現在のＡＳＩＬの仕様（利用）に反している方法（オプショナル）。
【００２３】
したがって、３つのレベルが存在し、最も強く推奨される方法には、重み“３”が割り当てられ、オプショナルな方法には、重み“１”が割り当てられる。
Ｍｔ＝必須ルールの合計数
Ｍｖ＝必須ルール違反の数
Ｒｔ＝推奨ルールの合計数
Ｒｖ＝推奨ルール違反の数
Ｏｔ＝選択されたオプショナルルールの合計数
Ｏｖ＝選択されたオプショナルルール違反の数
Ｍｗ＝３（必須ルールに対する重み）
Ｒｗ＝２（推奨ルールに対する重み）
Ｏｗ＝１（オプショナルルールに対する重み）
％非コンプライアンスレベル
（Ｍｖ×Ｍｗ）＋（Ｒｖ×Ｒｗ）＋（Ｏｖ×Ｏｗ）
＝―――――――――――――――――――――――×１００
（Ｍｔ×Ｍｗ）＋（Ｒｔ×Ｔｗ）＋（Ｏｔ×Ｏｗ）
％コンプライアンスレベル＝１００−％非コンプライアンスレベル
【００２４】
コンプライアンスレベルは、コンプリートレベル（complete level）と同様に、モジュールにおいて算出されてもよい。
【００２５】
図１に示すシステム１００は、ソフトウェアアプリケーションのコンプライアンスレベルを多層構造によって提示するために、前記分析エンジンの結果を視覚化して提供するよう構成された出力生成モジュール１１０をさらに含む。検索手法（mining approach）は、コンプラアンス仕様書／非コンプライアンスに対するルール／ソースコード中における違反を段階的な方法でマッピングする。これにより、ルール／仕様書グループレベル、ルール／仕様書レベル、推奨レベルおよびファイルレベルのような様々な視点から、非コンプライアンスを調べることができる。多層構造は、所望のコンプライアンスレベルを達成するための（to meet a desired compliance level）１つ以上の提案的（suggestive）な方策を提供するため、結果検索手法（a result mining approach）を用いて決定（判別）される。この多層構造は、特に限定されないが、グループ分けされたコンプライアンスから個々のルール違反への視覚化(visualization)、個々のルール違反から詳細なリスト(detail listing)への視覚化、および詳細なリストからソースコードへの視覚化等を含む詳細な（徹底した）トレーサビリティ（traceability:追跡管理）を提供する。
【００２６】
図２に示す出力生成モジュール１１０は、規格コンプライアンスグループ分け（standard compliance grouping）に従った１つ以上のグループについての報告を生成するよう構成された報告モジュール２０２をさらに含む。さらに、出力生成モジュール１１０は、コンプライアンス指標バー（compliance indication bar）を用いて、その結果を視覚化して提供する表示モジュール２０４を含む。コンプライアンス指標バーによって、各グループレベルにおけるコンプライアンスパーセントを特定することができる。任意の必須要件（ルール）が満たされていないときには、コンプライアンスパーセントが高かったとしても、コンプライアンス指標バーは赤色で表示される。全ての必須要件（ルール）が満たされており、コンプライアンスパーセント（レベル）が８５％以上のときには、コンプライアンス指標バーは、緑色で表示される。全ての必須要件（ルール）が満たされており、コンプライアンスパーセント（レベル）が８５％未満のときには、コンプライアンス指標バーは、オレンジ色で表示される。
【００２７】
さらに、本開示は、ソフトウェア品質保証に関するコンプライアンスレベルを判別するための命令セットが実装されたコンピュータープログラム製品に関する。コンピュータープログラム製品は、プロセッサーに接続されたユーザーインターフェースを含む。ユーザーインターフェースは、特定の安全レベルに関する１つ以上の産業についての、ソフトウェアアプリケーションの品質保証用の１つ以上のコンプライアンス規格に対するユーザーからの選択を受信するよう構成されている。
【００２８】
さらに、コンピュータープログラム製品は、ユーザーインターフェースに通信可能に接続されたコンプライアンスレベル判別モジュールを含む。コンプライアンスレベル判別モジュールは、ユーザーにソフトウェアアプリケーションのコンプライアンスレベルを提供するため、ユーザーによって選択されたコンプライアンス規格と、１つ以上の分析ツールの対応する機能とを事前に定義されたようにマッピング(pre-defined mapping)するよう構成されている。
【００２９】
加えて、コンピュータープログラム製品は、各層が事前に定義されたマッピングに対応するような多層構造によって、ソフトウェアアプリケーションのコンプライアンスレベルを視覚的に提供するよう構成された表示モジュール２０４を含む。表示モジュール２０４は、所望のコンプライアンスレベルを達成するために、各ルール違反用に、提案的な方策（suggestive measures）をユーザーに表示するよう構成されている。さらに、報告モジュール２０２は、規格コンプライアンスグループ分けに従った１つ以上のグループについての報告を生成し、その結果を、コンプライアンス指標バーを用いて視覚的に提供するよう構成されている。
【００３０】
ソフトウェアアプリケーションのコンプライアンス検査および分析を提供するためのシステムおよび方法を、以下に段落に詳述する実施例（working example）を用いて説明する。なお、この手法は、以下の実施例にのみ限定されるものではない。
【００３１】
特に図３およびその他の図は、システムの基本設計概念（architecture）を示している。ソフトウェアアプリケーションコンプライアンス検証用のソフトウェアアプリケーション／プロジェクトは、ＩＳＯ２６２６２−ＡＳＩＬ用に使用されるものとする。選択される安全臨界レベルは、ＡＳＩＬレベルＤである。ユーザーは、選択モジュール１０２を用いて、ＩＳＯ２６２６２−ＡＳＩＬレベルＤを選択する。規格仕様書の選択において、マッピングモジュール１０６は、プロジェクトの機能と、ＡＳＩＬレベルＤのルールグループの個々のルールとをマッピングする（ブロック３０２を参照）。ＩＳＯ２６２６２−ＡＳＩＬレベルＤは、強制ＬＣ（Enforce Low Complexity）、意味的コード解析（Semantic Code Analysis）、使用言語サブセット（Use Language Subsets）、強制ストロングタイピング（Enforce Strong Typing）、非暗黙型転換（No Implicit Type Conversions）、単一エントリー（Single Entry）および出口点（Exit point）、設計原理使用（Use Design Principles）、変数初期化（Variables Initialisation）、非多重可変名（No Multiple Variable Name）、防御的実行使用（Use Defensive implementation）、非再帰（No Recursions）、ＭＣ／ＤＣ、境界値解析（Analysis of Boundary Values）、並びに静的コード解析（Static Code Analysis）のようなルールグループにより構成されている。
【００３２】
ルールグループとして強制ＬＣが選択された場合、グループにおけるルールは、既にマッピングされている。ＡＳＩＬレベルＤ用のＩＳＯ推奨（ISO recommendation）は、安全性が高く設定してあるので、対応付けられた全てのルールは、最も重い重みづけを割り当てられた必須ルールとなる。これら必須ルールは、事前に選択されていてもよく、ユーザーによって設定不可能になっていてもよい。対応付けモジュール１０６は、選択された製品に関わる（製品開発に従事する）全てのユーザー間で一貫性（整合性）を確保するために、選択されたマッピングをユーザーが保存できるようにする。
【００３３】
次のステップにおいて、ユーザーは、実行プロセスを開始するため、解析ボタンをクリックする（ブロック３０４参照）。マッピングされた機能とルールのみが実行され、実行が成功した後、出力生成モジュール１１０は、多層構造によってコンプライアンスレベルを提示するための報告（report）を生成する（ブロック３０６参照）。全ての報告は、ユーザーのより深い理解のために、規格コンプライアンスグループ毎にグループ分けされる。コンプライアンス指標バーは、各レベルのコンプライアンスパーセントを提示する。論理グループレベルにおける表示（the representation at the logical group）から、ユーザーは、特定のルールが何回違反されたかを示す個々のルール違反を掘り下げることができる。さらに、ユーザーは、欠陥概要（defects summary）の報告を提供する詳細なリスト（detailed list）を掘り下げることができる。最後のステップにおいて、ソースコードレベルにおける非コンプライアンスレベルが示される。欠陥が存在するソースコードの行は、ハイライトして表示される。この詳細な視覚化（visualization）は、ユーザーに、ルールグループの非コンプライアンスから、コード内の非コンプライアンスへのトレーサビリティ（追跡管理）を提供する。
【００３４】
＜コンピューターシステム＞
図４は、本開示と整合する(consistent with)実施形態を実行するコンピューターシステムのブロック図の１例である。コンピューターシステム４０１の変形を、上述のデバイスおよび／またはモジュールの実行に用いることができる。コンピューターシステム４０１は、中央演算処理部（ＣＰＵまたはプロセッサー）４０２を含んでいる。プロセッサー４０２は、ユーザーまたはシステムで生成された要求を実行する少なくとも１つのデータプロセッサーを含む。ユーザーは、個人、本開示に含まれるようなデバイスを用いる個人、もしくはデバイス自身である。プロセッサー４０２は、統合システム（バス）コントローラー、メモリー管理コントロールユニット、浮動小数点ユニット（floating point units）、画像処理ユニット、デジタル信号処理ユニット等の専門化した処理ユニットを含んでいてもよい。プロセッサー４０２は、ＡＭＤアスロン（AMD Athlon）、ＤｕｒｏｎまたはＯｐｔｅｒｏｎのようなマイクロプロセッサー、ＡＲＭ´ｓアプリケーション（ARM's application）、組み込みまたはセキュアープロセッサー（embedded or secure processor）、ＩＢＭパワーＰＣ（IBM PowerPC）、インテルコア（Intel’s core）、Ｉｔａｎｉｕｍ、Ｘｅｏｎ、Ｃｅｌｅｒｏｎ、またはその他のプロセッサー等を含んでいてもよい。プロセッサー４０２は、メインフレーム、分散プロセッサー（distributed processor）、マルチコア、平行、グリッド、その他の基本概念（architecture）を用いて、実行される。いくつかの実施形態では、ＡＳＩＣｓ（Application-Specific Integrated Circuits）、デジタル信号プロセッサー（DSPs）、ＦＰＧＡｓ（Field Programmable Gate Arrays）等の実装技術が用いられる。
【００３５】
プロセッサー４０２は、Ｉ／Ｏインターフェース４０３を介して、１つ以上の入力／出力（Ｉ／Ｏ）デバイスと通信可能に配置される。Ｉ／Ｏインターフェース４０３は、特に限定されないが、音声、アナログ、デジタル、モノラル、ＲＣＡ、ステレオ、ＩＥＥＥ−１３９４、シリアルバス、ユニバーサルシリアルバス（ＵＳＢ）、赤外線、ＰＳ／２、ＢＮＣ、同軸、コンポーネント、コンポジット、ＤＶＩ（Digital Visual Interface）、ＨＤＭＩ（High-Definition Multimedia Interface）（登録商標）、ＲＦアンテナ、Ｓ−ビデオ、ＶＧＡ、ＩＥＥＥ８０２．１１、ａ／ｂ／ｇ／ｎ／ｘ、ブルートゥース、Ｃｅｌｌｕｌａｒ（例えば、ＣＤＭＡ（Code-Division Multiple Access）、ＨＳＰＡ＋（High-Speed Packet Access）、ＧＳＭ（Global System for Mobile communications）（登録商標）、ＬＴＥ（Long-Term Evolution）、ＷｉＭａｘ等）等の通信プロトコル／方法を採用してもよい。
【００３６】
Ｉ／Ｏインターフェース４０３を用いて、コンピューターシステム４０１は、１つ以上のＩ／Ｏデバイスと通信を取る。例えば、入力デバイス４０４は、アンテナ、キーボード、マウス、ジョイスティック、（赤外線）遠隔コントロール、カメラ、カード読み取り機、ファックス機、ドングル（dongle）、生体読み取り機、マイク、タッチスクリーン、タッチパッド、トラックボール、センサー（例えば、加速度センサー、光センサー、ＧＰＳ、ジャイロスコープ、近接センサー等）、針、スキャナー、保存デバイス、トランシーバー、ビデオデバイス／ソース、バイザー（visors）等である。出力デバイス４０５は、プリンター、ファックス機、ビデオディスプレイ（例えば、ＣＲＴ（Cathode Ray Tube）、液晶ディスプレイ（ＬＣＤ）、ＬＥＤ（Light-Emitting Diode）、プラズマ等）、音声スピーカー等である。いくつかの実施形態では、トランシーバー４０６は、プロセッサー４０２と通信可能に配置されている。トランシーバー４０６は、様々な種類のワイヤレス送信または受信を容易にする。例えば、トランシーバー４０６は、トランシーバーチップ（例えば、テキサスインストゥルメンツＷｉＬｉｎｋ  ＷＬ１２８３、ブロードコム  ＢＣＭ４７５０ＩＵＢ８、インフィネオンテクノロジーズ  Ｘ−Ｇｏｌｄ  ６１８−ＰＭＢ９８００等）に操作可能に接続され、ＩＥＥＥ  ８０２．１１ａ／ｂ／ｇ／ｎ、ブルートゥース、ＦＭ、ＧＰＳ（Global Positioning System）、２Ｇ／３Ｇ  ＨＳＤＰＡ／ＨＳＵＰＡ通信等を提供するアンテナを含む。
【００３７】
いくつかの実施形態では、プロセッサー４０２は、ネットワークインターフェース４０７を介して、通信ネットワーク４０８に通信可能に配置される。ネットワークインターフェース４０７は、通信ネットワーク４０８と通信を取る。ネットワークインターフェース４０７は、特に限定されないが、ダイレクト接続（direct connect）、イーサネット（登録商標）（例えば、twisted pair 10/100/1000 Base T）、ＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）、トークンリング、ＩＥＥＥ  ８０２．１１ａ／ｂ／ｇ／ｎ／ｘ等の通信プロトコルを採用している。通信ネットワーク４０８は、特に限定されないが、ダイレクトインターコネクション（direct interconnection）、ＬＡＮ（Local Area Network）、ＷＡＮ（Wide Area Network）、ワイヤレスネットワーク（例えば、ワイヤレスアプリケーションプロトコルを用いたもの）、インターネット等である。ネットワークインターフェース４０７および通信ネットワーク４０８を用いて、コンピューターシステム４０１は、デバイス４１０、４１１および４１２と通信を取る。これらのデバイスは、特に限定されないが、パーソナルコンピューター、サーバー、ファックス機、プリンター、スキャナー、携帯電話等のモバイル機器、スマートフォン（例えば、アップルアイフォーン、ブラックベリー、アンドロイド系電話等）、タブレットコンピューター、電子書籍リーダー（アマゾン、キンドル、Ｎｏｏｋ等）、ラップトップコンピューター、ノート型コンピューター、ゲームコンソール（マイクロソフトＸｂｏｘ、任天堂ＤＳ、ソニープレイステーション等）等である。いくつかの実施形態では、コンピューターシステム４０１は、それ自身が、１つ以上のデバイスを統合している。
【００３８】
いくつかの実施形態では、プロセッサー４０２は、保存インターフェース４１２を介して、１つ以上のメモリーデバイス（例えば、ＲＡＭ４１３、ＲＯＭ４１４等）と通信可能に配置されている。保存インターフェース４１２は、特に限定されないが、ＳＡＴＡ（Serial Advanced Technology Attachment）、ＩＤＥ（Integrated Drive Electronics）、ＩＥＥＥ−１３９４、ＵＳＢ（Universal Serial Bus）、ファイバーチャンネル、ＳＣＳＩ（Small Computer Systems Interface）等の接続プロトコルを採用するメモリーデバイス、リムーバブルディスクドライブ等のメモリーデバイスに接続されている。メモリーデバイスは、ドラム、磁気ディスクドライブ、磁気光学ドライブ、光学ドライブ、ＲＡＩＤ（Redundant Array of Independent Discs）、固体メモリーデバイス、固体ドリブ等を含む。
【００３９】
メモリーデバイスは、特に限定されないが、オペレーティングシステム４１６、ユーザーインターフェース（アプリケーション）４１７、ウェブブラウザー４１８、メールサーバー４１９、メールクライアント４２０、ユーザー／アプリケーションデータ４２１（例えば、本開示で議論された任意のデータ変数またはデータ記録）等のプログラムまたはデータベースコンポーネントの一群を保存している。オペレーティングシステム４１６は、コンピューターシステムの操作およびリソース管理を容易にする。オペレーティングシステム４１６の例としては、特に限定されないが、アップルマッキントッシュＯＳ  Ｘ、Ｕｎｉｘ（登録商標）、Ｕｎｉｘ（登録商標）のようなシステム分散（例えば、ＢＳＤ（Berkeley Software Distribution）、ＦｒｅｅＢＳＤ、ＮｅｔＢＳＤ、ＯｐｅｎＢＳＤ等）、Ｌｉｎｕｘ分散（例えば、Ｒｅｄ  Ｈａｔ、Ｕｂｕｎｔｕ、Ｋｕｂｕｎｔｕ等）、ＩＢＭ  ＯＳ／２、マイクロソフトウィンドウズ（登録商標）（ＸＰ、Ｖｉｓｔａ／７／８等）、アップルｉＯＳ、グーグルアンドロイド、ブラックベリーＯＳ等である。ユーザーインターフェース４１７は、テキストまたは画像ファシリティーを介して、プログラムコンポーネントの実行、操作、インタラクション、実施、表示を容易にする。例えば、ユーザーインターフェース４１７は、カーソル、アイコン、チェックボックス、メニュー、スクローラー、ウィンドウ、ウィジェット（widget）等のコンピューターシステム４０１に操作可能に接続された表示システム上のコンピューター相互インターフェース要素である。ＧＵＩｓ（Graphical User Interfaces）は、特に限定されないが、アップルマッキントッシュオペレーティングシステムＡｑｕａ、ＩＢＭ  ＯＳ／２、マイクロソフトウィンドウズ（登録商標）（例えば、Aero, Metro等）、Ｕｎｉｘ  Ｘ−Ｗｉｎｄｏｗｓ、ウェブインターフェースライブラリ（例えば、ＡｃｔｉｖｅＸ、Ｊａｖａ（登録商標）、Ｊａｖａｓｃｒｉｐｔ（登録商標）、ＡＪＡＸ、ＨＴＭＬ、Ａｄｏｂｅフラッシュ等）等に採用されている。
【００４０】
いくつかの実施形態では、コンピューターシステム４０１は、プログラムコンポーネントに保存されているウェブブラウザー４１８を実行する。ウェブブラウザー４１８は、マイクロソフトＩｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒ、グーグルＣｈｒｏｍｅ、Ｍｏｚｉｌｌａ  Ｆｉｒｅｆｏｘ、アップルＳａｆａｒｉ等のハイパーテキスト表示アプリケーションである。安全なウェブブラウザーは、ＨＴＴＰＳ（Secure Hypertext Transport Protocol）、ＳＳＬ（Secure Sockets Layer）、ＴＬＳ（Transport Layer Security）等を用いて提供される。ウェブブラウザー４１８は、ＡＪＡＸ、ＤＨＴＭＬ、アドビＦｌａｓｈ、ＪａｖａＳｃｒｉｐｔ（登録商標）、Ｊａｖａ（登録商標）、ＡＰＩｓ（Application programming Interfaces）等のファシリティーを利用する。いくつかの実施形態では、コンピューターシステム４０１は、プログラムコンポーネントに保存されているメールサーバー４１９を実行する。メールサーバー４１９は、マイクロソフトＥｘｈａｎｇｅ等のインターネットメールサーバーである。メールサーバー４１９は、ＡＳＰ、ＡｃｔｉｖｅＸ、ＡＮＳＩ  Ｃ＋＋／Ｃ＃、マイクロソフト．Ｎｅｔ、ＣＧＩスクリプト、Ｊａｖａ（登録商標）、ＪａｖａＳｃｒｉｐｔ（登録商標）、ＰＥＲＬ、ＰＨＰ、Ｐｙｔｈｏｎ、ＷｅｂＯｂｊｅｃｔｓ等のファシリティーを利用する。メールサーバー４１９は、ＩＭＡＰ（Internet Message Access Protocol）、ＭＡＰＩ（Messaging Application Programming Interface）、マイクロソフトＥｘｃｈａｎｇｅ、ＰＯＰ（Post Office Protocol）、ＳＭＴＰ（Simple Mail Transfer Protocol）等の通信プロトコルを利用する。いくつかの実施形態では、コンピューターシステム４０１は、プログラムコンポーネント内に保存されているメールクライアント４２０を実行する。メールクライアント４２０は、アップルメール、マイクロソフトＥｎｔｏｕｒａｇｅ、マイクロソフトＯｕｔｌｏｏｋ、Ｍｏｚｉｌｌａ  Ｔｈｕｎｄｅｒｂｉｒｄ等のメール閲覧アプリケーションである。
【００４１】
いくつかの実施形態では、コンピューターシステム４０１は、本開示で説明したようなデータ、変数、記録、モジュール等のユーザー／アプリケーションデータ４２１を保存する。このようなデータベースは、フォールトトレラント（fault-tolerant）で、相関的で（relational）、拡張可能で（scalable）、安全な、ＯｒａｃｌｅやＳｙｂａｓｅ等のデータベース等である。また、このようなデータベースは、アレイ、ハッシュ、リンクリスト、構造体、構造化テキストファイル（例えば、ＸＭＬ）、テーブル等の規格化されたデータ構造やオブジェクト指向ベータベース（例えば、ＯｂｊｅｃｔＳｔｏｒｅ、Ｐｏｅｔ、Ｚｏｐｅ等）を用いて実行される。このようなデータベースは、集約され（consolidated）、または上述の様々なコンピューターシステム間で配布される。任意のコンピューターまたはデータベースコンポーネントの動作および構造は、組み合わせ可能であり、集約可能であり、どのような実際の組み合わせ例に対しても配布可能であることは理解されるところであろう。
【００４２】
本明細書は、ソフトウェアアプリケーションのコンプライアンス検査および詳細な解析を提供するためのシステムおよび方法について述べた。図示されたステップは、図示の好ましい実施形態を説明するために用意されたものであり、進行している技術の発展は、特定の機能が実行される方法を変化させうることは予期されるであろう。これらの例は、図示する目的で存在しており、限定ではない。さらに、機能的に組み立てられたブロックの境界は、特定の機能およびそれらの関係が適切に実行される限り、任意に定義する事ができる。代替的な境界は、特定の機能およびそれらの関係が適切に実行される限り、定義することができる。関連のある分野における当業者にとって、ここで開示された技術に基づいて、代替手段（ここで述べられたものの同等物、拡張物、バリエーション、偏差等）は、明らかであろう。このような代替手段は、開示された実施例の範囲および考え方の範囲内である。また、特徴を図示している本発明の複数の実施形態が説明される。明細書中、「構成する」、「有する」、「含む」、「備える」およびそれらの他の形式は、同等な意味であり、ある事項またはこれらの文言のいずれか１つに続く事項はそのような事項の包括的なリストであるような意味ではなく、また、列挙された事項のみに限定されるという意味ではない。また、明細書および添付の請求項において使用されるように、単数形“a”、“an”、“the”は、文脈が明確に示していなければ、複数形も含むことに注意しなければならない。
【００４３】
さらに加えて、１つ以上のコンピューター読み取り可能保存メディア（non-transitory computer-readable storage media）を、本発明と矛盾のない実施形態の実装において、利用することができる。コンピューター読み取り可能保存メディアは、情報やデータがプロセッサーによって読み出せるように保存されている任意のタイプの物理メモリーである。したがって、コンピューター読み取り可能保存メディアは、１つ以上のプロセッサーによる実行されるインストラクションを保存しており、ここで述べた実施形態と矛盾のないステップやステージをプロセッサーに実行させるようなインストラクションを含む。用語“コンピューター読み取り可能媒体（computer-readable medium）”は、具体的な物品を含み、搬送波および過渡信号を含まないこと、すなわち、非一時的（non-transitory）であることは理解されるであろう。例として、ランダムアクセスメモリー（ＲＡＭ）、リードオンリーメモリー（ＲＯＭ）、揮発性メモリー、不揮発性メモリー、ハードドライブ、ＣＤＲＯＭ、ＤＶＤ、フラッシュドライブ、ディスク、およびその他既知の物路保存メディアが挙げられる。
【００４４】
本開示および実施例は例示として説明されたものであって、本実施形態の真の範囲および考え方は、以下の特許請求の範囲によって表される。
【図１】
0005684878.tif 000002
【図２】
0005684878.tif 000003
【図３】
0005684878.tif 000004
【図４】
0005684878.tif 000005