JP6994071B2 - Protobufベースのプロジェクトのための包括的な検証手法 - Google Patents

Protobufベースのプロジェクトのための包括的な検証手法 Download PDF

Info

Publication number
JP6994071B2
JP6994071B2 JP2020070764A JP2020070764A JP6994071B2 JP 6994071 B2 JP6994071 B2 JP 6994071B2 JP 2020070764 A JP2020070764 A JP 2020070764A JP 2020070764 A JP2020070764 A JP 2020070764A JP 6994071 B2 JP6994071 B2 JP 6994071B2
Authority
JP
Japan
Prior art keywords
validation
protocol
header file
protocol buffer
verification
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2020070764A
Other languages
English (en)
Other versions
JP2020187737A (ja
Inventor
キアン フェン,
ユーロン チャン,
ペイ ワン,
ユー ディン,
タオ ウェイ,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Baidu USA LLC
Original Assignee
Baidu USA LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Baidu USA LLC filed Critical Baidu USA LLC
Publication of JP2020187737A publication Critical patent/JP2020187737A/ja
Application granted granted Critical
Publication of JP6994071B2 publication Critical patent/JP6994071B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3696Methods or tools to render software testable
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1847File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/565Static detection by checking file integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/73Program documentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Library & Information Science (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Description

本開示の実施形態は一般にソフトウェア開発に関する。より具体的には、本開示の実施形態は、Protobufを使用するアプリケーションの検証において検証の代用ヘッダファイルを使用することに関する。
Google(登録商標)によって開発されたプロトコル・バッファ(Protobuf)は、構造化データを直列化する、言語的にもプラットフォーム的にも中立の方法である。Protobufは、互いに有線で通信するため、またはデータを記憶するためのプログラムの開発において有用である。
Protobufを利用する人工知能(AI)アプリケーション(たとえば自律性乗物を運転するためのAIプログラム)が、ますます増えている。自動化された検証および評価のツールを使用する(たとえばメモリ安全性のための)そのようなAIアプリケーションの検証および評価は、Googleによって提供されるProtobufコード・ジェネレータなどの標準的なProtobufコード・ジェネレータによって生成されたProtobufヘッダファイルの複雑さのために、遅く、多くの時間が必要となる。
本開示の実施形態が、限定ではなく例として示され、添付図面では類似の参照は類似の要素を指示する。
Protobufヘッダファイルを生成するための処理を示すブロック図である。 Protobuf定義ファイルの一例を示す図である。 一実施形態に係る検証の代用ヘッダファイルを生成する処理を示すブロック図である。 一実施形態に係るexample.proto Protobuf定義ファイルに対応する例示のASTを示す図である。 一実施形態に係る図3Aに対応する特定のフィールドを定義するデータ構造の図表である。 一実施形態に係る図3Aに対応する特定のフィールドを定義するデータ構造の図表である。 一実施形態に係る図3Aの例示のASTに対応する等価のコードを示す図である。 一実施形態に係るデータ通信のためにProtobufを使用するアプリケーションの検証において検証の代用ヘッダファイルを使用するための方法を示す流れ図である。 一実施形態に係るデータ処理システムを示すブロック図である。
本開示の様々な実施形態および態様が、以下で論じられる詳細を参照しながら説明され、添付図面は様々な実施形態を示す。以下の説明および図面は本開示の実例であり、本開示を限定するものと解釈されるべきではない。本開示の様々な実施形態の完全な理解を提供するために、多くの具体的な詳細が説明される。しかしながら、特定の事例では、本開示の実施形態の簡潔な議論を提供するために、周知の詳細または旧来の詳細は説明されない。
本明細書における「一実施形態」または「実施形態」に対する参照は、実施形態に関連して説明された特定の特徴、構造、または特性が、本開示の少なくとも1つの実施形態に含まれ得ることを意味する。様々な位置において「一実施形態では」という慣用句が出現することは、必ずしもすべてが本明細書における同一の実施形態を指すわけではない。
いくつかの実施形態によれば、データ通信のためにプロトコル・バッファ(Protobuf)を使用するアプリケーションの検証において、検証の代用ヘッダファイルが使用される。Protobuf定義ファイルから1または複数のProtobufメッセージタイプが得られる。Protobuf定義ファイルは、対応するソースコードの実行中に呼び出される1または複数の関数を定義するProtobuf仕様に適合する。検証の代用ヘッダファイルは、Protobufメッセージタイプに基づいて生成され、検証の代用ヘッダファイルは、Protobufの専用ライブラリの代わりに標準C/C++ライブラリを使用して呼び出される1または複数の関数を定義する。Protobufの専用ライブラリは検証するのが困難である。検証の代用ヘッダファイルに1または複数の検証スタブが付加される。検証の代用ヘッダファイルはアプリケーションのソースコードに含まれる。その後、検証の代用ヘッダファイルを含むアプリケーションの検証は、検証の代用ヘッダファイルに基づいて、呼び出された標準C/C++ライブラリの関数のソースコードの検証を含めて遂行される。
一実施形態では、Protobuf定義ファイルから1または複数のProtobufメッセージタイプを得るステップは、Protobuf定義ファイルに基づいて抽象構文ツリー(AST)を生成するステップと、ASTを解析するステップとを含む。一実施形態では、各Protobufメッセージタイプについて、検証の代用ヘッダファイルの中にC++クラスが生成され、C++クラスの中に、対応するProtobufメッセージタイプの各フィールドについて、1つのメンバ・フィールドおよび対応するメンバ関数が生成される。
一実施形態では、C++クラスの1または複数のオブジェクトの生成、アクセスまたは削除のための、検証の代用ヘッダファイルを含むアプリケーションの検証は、標準C/C++ライブラリに依存する。一実施形態では、検証スタブは、メンバ関数に関連した1または複数の事前条件、メンバ関数に関連した1または複数の事後条件、またはこれらの組合せを含む。一実施形態では、1または複数の事前条件ならびに/あるいは1または複数の事後条件はカスタマイズ可能である。一実施形態では、ProtobufメッセージタイプはProtobuf定義ファイルの中で定義される。
図1Aを参照して、Protobufヘッダファイルを生成するための処理を示すブロック図100が示されている。開発者は、Protobufインターフェース記述言語を用いるProtobuf定義ファイル110(通常は.protoのファイル名拡張子を有する)において構造化データ(またはメッセージ)を定義する。以下で、Protobuf定義ファイル110は、簡単にprotoファイルとも称され得る。Protobuf定義ファイル110は、グーグルによって定義されたProtobufライブラリのセットに関連づけられたProtobuf仕様に適合する。Protobufコード・ジェネレータ120は、Protobuf定義ファイル110に基づいて、1または複数のProtobufヘッダファイル130を生成する。標準的なProtobufコード・ジェネレータ120はグーグルから入手可能である。たとえば、Protobufコード・ジェネレータ120は、C/C++言語を用いて、Protobuf定義ファイル110からヘッダファイル(拡張子.pb.hを有する)およびインプリメンテーション・ファイル(拡張子.pb.ccを有する)を生成する。その後、開発者はアプリケーションの中にヘッダファイル130を含めることができ、それによって、アプリケーションは、Protobuf定義ファイル110に含まれるメッセージタイプ定義に従ってProtobufメッセージを読んだり書いたりすることができる。
解説のために、図1Bには、example.protoという名称の簡単な例示のProtobuf定義ファイル110が与えられている。この例では、example.protoファイルは2つのメッセージタイプMsgType1およびMsgType2を定義しており、MsgType1は必要な32ビットの整数値を含み、MsgType2は必要なブール値を含む。
この文献の最後の表1及び表2に列記されたexample.pb.hヘッダファイルは、図1Bに示されたようなグーグルのexample.proto定義ファイルに基づく標準的なProtobufコード・ジェネレータによって生成された例示のヘッダファイルである。ヘッダファイルexample.pb.hが、GoogleのProtobufのインプリメンテーションからの専用ライブラリ(たとえばヘッダファイルがライン1~7に列記されたライブラリ)に大きく依存することが理解され得、このため、検証処理は、GoogleのProtobufライブラリを詳細に調べて、対応する関数を検証する必要があるので、検証処理に付随する作業負荷が大幅に増加してしまう。
Protobufを利用する人工知能(AI)アプリケーション(たとえば自律性乗物を運転するためのAIプログラム)が、ますます増えている。自動化された検証および評価のツールを使用する(たとえばメモリ安全性のための)そのようなAIアプリケーションの検証および評価は、標準的なProtobufコード・ジェネレータによって生成されたProtobufヘッダファイルの複雑さのために、遅く、多くの時間を必要とする。具体的には、標準的なProtobufコード・ジェネレータによって生成されたProtobufヘッダファイルは、標準的なProtobufライブラリからのデータ構造を用いて生成されているため、複雑である。したがって、検証されかつ検査されるアプリケーションの中に標準的なProtobufコード・ジェネレータによって生成されたProtobufヘッダファイルを含めると、検証および確認の処理を不必要に低速化する恐れがある。
図2を参照して、一実施形態に係る検証の代用ヘッダファイルを生成する処理を示すブロック図200が示されている。抽象構文ツリー(AST)ジェネレータ210は、Protobuf定義ファイル110を分析して、Protobuf定義ファイル110の中で定義されたメッセージタイプを記述するASTを生成する。次いで、ASTパーサ220は、ASTを解析して、各Protobufメッセージタイプにおけるすべてのフィールドを含むすべてのProtobufメッセージタイプを得る。そのようにして得られたProtobufメッセージタイプは、AST生成の基になったProtobuf定義ファイル110の中で定義されたものと一致するはずであることを理解されたい。
Protobufメッセージタイプが一旦得られると、検証コード・ジェネレータ230はProtobufメッセージタイプに基づいて1または複数のC++クラスを生成する。詳細には、各Protobufメッセージタイプについて少なくとも1つのC++クラスが生成される。検証コード・ジェネレータ230は、Protobufメッセージタイプにおける各フィールドについて、メンバ・フィールドならびにProtobufメッセージタイプに対応するC++クラスにおけるメンバ・フィールドにアクセスするためのメンバ関数を生成する。データ・メンバおよび関数メンバを含むC++クラスは、検証の代用ヘッダファイル250に保存される。
その上、検証の代用ヘッダファイル250が証明可能なように、検証スタブ・ジェネレータ240は、検証の代用ヘッダファイル250に検証スタブを付加する。検証スタブは、少なくとも1つのメンバ関数のメモリ安全性などを保証するための事前条件および/または事後条件を含む。たとえば、事前条件は、1)関数の入力パラメータがポインタである場合にはNULLポインタであってはならない、2)関数の入力パラメータは、それぞれの基本タイプの範囲を超えてはならない(たとえば整数、実数、倍精度実数などの基本タイプは定義された範囲を有する)、といった条件を含み得る。別の実施形態では、事前条件の一例は「入力値が特定の範囲内にあること」でよい。事後条件の一例は「出力値が特定の範囲内にあること」でよい。本明細書で説明された例示の事前条件および事後条件は例であり、本開示を限定するものではない。異なる実施形態では、事前条件および事後条件は異なるやり方でカスタマイズされ得る。加えて、事前条件および事後条件は任意の適切なフォーマットで定義され得る。一実施形態では、事前条件および事後条件を定義するためにANSI/ISO C仕様言語(ACSL)が使用される。
したがって、標準C++クラスが使用されるため、検証および評価のとき、検証の代用ヘッダファイル250がアプリケーションに含まれている場合には、オブジェクトの生成、アクセス、または削除のために依存されるのは標準C/C++ライブラリのみ(たとえばstdlibc++)となり、より複雑な、Protobufに特有のコード、関数、およびライブラリは使用されない。
上記のexample.proto定義ファイルに対応するverification_example.hという名称の例示の検証の代用ヘッダファイル250が、解説のために、この文献の最後の表3から表5に与えられている。表1及び表2のexample.pb.hヘッダファイルと比較して、各メッセージタイプに関して必要なすべての方法が大幅に簡素化されたことが認められる。事前条件および事後条件に関する検証検査は、パラメータを有する関数に付加される。詳細には、引数としてポインタを有する関数にはポインタ検査が付加される。たとえば、verification_example.hのライン46~47(表3及び表4参照)に示されるように、検証サブ“/*@ requires \valid(x)*/”が挿入されている。同様に、ライン81は変数“from”の検証を必要とし、ライン86は変数“other”の検証を必要とする。そのような検証スタブは、変数“x”が有効なポインタであることを確認するための検証処理を命令する。検証が失敗すると(たとえばポインタxが無効なポインタであると)、ユーザに通知するために警報が生成されてよい。条件はACSLフォーマットに従う。それゆえに、検証処理は、条件が満たされるかどうかを自動的に検査して確認することになる。Protobuf定義ファイルに基づいてASTを生成することは、当業者の技量の範囲内にある。
図3Aを参照して、example.proto定義ファイルに対応するAST 300の一例が示されている。AST 300は、Protobuf定義ファイル名(“1:example.proto”)、パッケージ名(“2:test”)、および2つの定義されたメッセージタイプ(すなわちMsgType1およびMsgType2)に関する情報を含む(ノード“3:1”:両方のメッセージタイプが1つのフィールドを有する、ノード“4:2”:両方のメッセージタイプが「必要な」ラベルを有する、ノード“5:5”および“5:8”:フィールド・タイプはそれぞれint32およびboolである)。一実施形態によれば、キー値ペアと同様に、キー(たとえば図3Bに示されるようなフィールドID)およびキーに関連する値(たとえば図3Cに示されるようなフィールド・タイプ)を列挙するために数が利用される。ASTパーサは、各Protobufメッセージタイプにおけるすべてのフィールドを含むすべてのProtobufメッセージタイプを得るために、ASTを解析してよい。解説のために、ASTの等価なコード表現が図3Dに与えられている。
図4を参照して、データ通信のためにProtobufを使用するアプリケーションの検証において検証の代用ヘッダファイルを使用するための方法400の流れ図が示されている。方法400はハードウェア、ソフトウェア、またはこれらの組合せで実施され得る。ブロック410において、Protobuf定義ファイル(たとえばProtobufと互換性がある定義ファイル)に基づいて、1または複数のProtobufメッセージタイプが得られる。ブロック420において、標準C/C++ヘッダファイルと互換性があるProtobufメッセージタイプに基づいて、検証の代用ヘッダファイルが生成される。ブロック430において、検証の代用ヘッダファイルに1または複数の検証スタブが付加される。ブロック440において、検証の代用ヘッダファイルがアプリケーションのソースコードに含まれる。ブロック450において、Protobufの専用ライブラリの検証を必要とすることなく、標準C/C++ライブラリのみを検証することにより、検証の代用ヘッダファイルを含むアプリケーションが検証される。
上記で示されて説明されたコンポーネントのうちいくつかまたはすべてが、ソフトウェア、ハードウェア、またはこれらの組合せで実施され得ることに留意されたい。たとえば、そのようなコンポーネントは持続的記憶デバイスにインストールして記憶されたソフトウェアとして実施され得、本出願の全体にわたって説明された処理または演算を実行するために、プロセッサ(図示せず)によってメモリにロードされ、かつ実行され得る。あるいは、そのようなコンポーネントは、集積回路(たとえば特定用途向けICすなわちASIC)、デジタル信号プロセッサ(DSP)、またはフィールド・プログラマブル・ゲートアレイ(FPGA)などの専用ハードウェアの中にプログラムされた、または組み込まれた、アプリケーションから、対応するドライバおよび/またはオペレーティングシステムを介してアクセス可能な実行可能コードとして実施され得る。その上、そのようなコンポーネントは、ソフトウェア・コンポーネントによって1または複数の特定の命令を介してアクセス可能な命令セットの一部分として、プロセッサまたはプロセッサコアにおける特定のハードウェア・ロジックとして実施され得る。
C++プログラム言語を参照しながらいくつかの実施形態が説明されてきたが、本開示はプログラム言語によって制限されず、本開示の実施形態は、本開示の範囲から逸脱することなく他のプログラム言語に適合し得ることを理解されたい。
図5は、本開示の一実施形態とともに使用され得るデータ処理システムの一例を示すブロック図である。たとえば、システム1500は、上記で説明された処理または方法のうち任意のものを遂行する、上記で説明されたデータ処理システムのうち任意のものを表し得、たとえば、図2のASTジェネレータ210、ASTパーサ220、検証コード・ジェネレータ230、および検証スタブ・ジェネレータ240などでよい。システム1500は多くの様々な構成要素を含むことができる。これらの構成要素は、集積回路(IC)、ICの一部分、個別の電子デバイス、またはコンピュータシステムのマザーボードもしくはアドイン・カードなどの回路基板に適合された他のモジュール、またはコンピュータシステムのシャーシの内部に別様に組み込まれた構成要素として実施され得る。
システム1500は、コンピュータシステムの多くの構成要素の高レベルの概観を示すように意図されていることにも留意されたい。しかしながら、特定の実装形態には追加の構成要素が存在し得、その上、他の実装形態では、示された構成要素の種々の配置が生じ得ることを理解されたい。システム1500は、デスクトップ・コンピュータ、ノートパソコン、タブレット型コンピュータ、サーバ、携帯電話、メディアプレーヤ、携帯情報端末(PDA)、スマートウォッチ、パーソナル・コミュニケータ、ゲーム機、ネットワークのルータまたはハブ、無線アクセスポイント(AP)またはリピータ、セットトップ・ボックス、またはこれらの組合せを表し得る。さらに、単一のマシンまたはシステムしか示されていないが、「マシン」または「システム」という用語は、本明細書で論じられた技法のうち任意の1または複数を遂行する1組(または複数の組)の命令を個々にまたは連帯的に実行するマシンまたはシステムの任意の収集を含むと解釈されるものとする。
一実施形態では、システム1500は、バスまたは相互接続1510を介して接続される、プロセッサ1501、メモリ1503、およびデバイス1505~1508を備える。プロセッサ1501は、単一のプロセッサコアまたは複数のプロセッサコアを含む、単一のプロセッサまたは複数のプロセッサを表し得る。プロセッサ1501は、マイクロプロセッサ、中央処理装置(CPU)等の1または複数の汎用プロセッサを表し得る。より具体的には、プロセッサ1501は、複数命令セット・コンピューティング(CISC)マイクロプロセッサ、縮小命令セット・コンピューティング(RISC)マイクロプロセッサ、超長命令語(VLIM)マイクロプロセッサ、他の命令セットを実施するプロセッサ、または命令セットの組合せを実施するプロセッサでよい。プロセッサ1501は、特定用途向け集積回路(ASIC)、セルラー式プロセッサまたはベースバンド・プロセッサ、フィールド・プログラマブル・ゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)、ネットワーク・プロセッサ、グラフィックス・プロセッサ、通信用プロセッサ、暗号プロセッサ、コプロセッサ、組み込み型プロセッサ、または命令を処理することができる何らかの他のタイプの論理などの1または複数の専用プロセッサでもよい。
超低電圧プロセッサなど低電力のマルチコア・プロセッサ・ソケットであり得るプロセッサ1501は、システムの様々な構成要素と通信するための主処理ユニットおよび中央ハブとして働き得る。そのようなプロセッサはシステム・オン・チップ(SoC)として実施され得る。プロセッサ1501は、本明細書で論じた動作およびステップを遂行するための命令を実行するように構成されている。システム1500がさらに含み得るグラフィックス・インターフェースは、表示コントローラ、グラフィックス・プロセッサ、および/または表示デバイスを含み得る任意選択のグラフィックス・サブシステム1504と通信する。
プロセッサ1501はメモリ1503と通信してよく、メモリ1503は、一実施形態では、所与の量のシステムメモリを与えるために複数のメモリ・デバイスによって実施され得る。メモリ1503は、ランダムアクセスメモリ(RAM)、動的RAM(DRAM)、シンクロナスDRAM(SDRAM)、静的RAM(SRAM)または他のタイプの記憶デバイスなど、1または複数の揮発性記憶(すなわちメモリ)デバイスを含み得る。メモリ1503は、プロセッサ1501または何らかの他のデバイスによって実行される命令のシーケンスを含む情報を記憶し得る。たとえば、種々のオペレーティングシステム、デバイス・ドライバ、ファームウェア(たとえば入出力基本システムすなわちBIOS)の実行可能コードおよび/またはデータ、および/またはアプリケーションがメモリ1503にロードされ、プロセッサ1501によって実行され得る。オペレーティングシステムは、たとえば、ロボットオペレーティングシステム(ROS)、マイクロソフト(登録商標)のウィンドウズ(登録商標)オペレーティングシステム、アップルのマックOS(登録商標)/iOS(登録商標)、グーグル(登録商標)のアンドロイド(登録商標)、LINUX、UNIX(登録商標)など任意の種類のオペレーティングシステム、または他のリアルタイム・オペレーティングシステムもしくは組み込み型オペレーティングシステムであり得る。
システム1500がさらに含み得るデバイス1505~1508などのIOデバイスは、ネットワーク・インターフェース・デバイス1505、任意選択の入力デバイス1506、および他の任意選択のIOデバイス1507を含む。ネットワーク・インターフェース・デバイス1505は、無線トランシーバおよび/またはネットワーク・インターフェース・カード(NIC)を含み得る。無線トランシーバは、Wi-Fiトランシーバ、赤外線トランシーバ、ブルートゥース(登録商標)・トランシーバ、WiMaxトランシーバ、無線セルラー電話トランシーバ、衛星トランシーバ(たとえば全地球測位システム(GPS)トランシーバ)、もしくは他の無線周波数(RF)トランシーバ、またはこれらの組合せでよい。NICはイーサネット(登録商標)カードでよい。
入力デバイス1506は、マウス、タッチパッド、タッチセンシティブ・スクリーン(表示デバイス1504に組み込まれ得る)、スタイラスなどのポインタデバイス、および/またはキーボード(たとえば物理的キーボードまたはタッチセンシティブ・スクリーンの一部分として表示されたバーチャル・キーボード)を含み得る。たとえば、入力デバイス1506はタッチスクリーンに結合されたタッチスクリーン・コントローラを含み得る。タッチスクリーンおよびタッチスクリーン・コントローラは、たとえば、それだけではないが、容量技術、抵抗技術、赤外線技術、表面弾性波技術、ならびに他の近接センサ配列またはタッチスクリーンに対する1または複数の接触点を判定するための他の要素を含む複数のタッチ感知技術のうち任意のものを使用して、接触と、動きまたは動きの中断とを検知する。
IOデバイス1507はオーディオ・デバイスを含み得る。オーディオ・デバイスは、音声認識、音声応答、デジタル記録、および/または電話の機能など、音声対応の機能を促進するためのスピーカおよび/またはマイクロフォンを含み得る。他のIOデバイス1507は、ユニバーサル・シリアル・バス(USB)ポート、パラレルポート、シリアルポート、プリンタ、ネットワーク・インターフェース、バスブリッジ(たとえばPCI-PCIブリッジ)、センサ(たとえば加速度計、ジャイロスコープ、磁力計、光センサ、コンパス、近接センサなどの運動センサ)またはこれらの組合せをさらに含み得る。デバイス1507がさらに含み得る画像処理サブシステム(たとえばカメラ)は、写真およびビデオクリップの記録などのカメラ機能を促進するために利用される電荷結合デバイス(CCD)または相補型金属酸化膜半導体(CMOS)光センサなどの光センサを含み得る。特定のセンサがセンサ・ハブ(図示せず)を介して相互接続1510に結合されてよく、一方、キーボードまたは熱センサなど他のデバイスは、システム1500の特定の構成または設計に依拠して、組み込みコントローラ(図示せず)によって制御され得る。
データ、アプリケーション、1または複数のオペレーティングシステムなどの情報の持続的記憶を提供するために、プロセッサ1501には大容量記憶装置(図示せず)も結合され得る。様々な実施形態において、より薄くより軽いシステム設計を可能にするばかりでなくシステム応答性も改善するために、この大容量記憶装置はソリッドステート・デバイス(SSD)によって実施されてよい。しかしながら、他の実施形態では、大容量記憶装置は、停電中にコンテキスト状態および他のそのような情報の不揮発性記憶装置を有効にするために、主として、SSDキャッシュとして働く少量のSSD記憶装置を伴うハードディスク・ドライブ(HDD)を使用して実施されてよく、その結果、システム・アクティビティの再起動において高速のパワーアップが可能になる。また、フラッシュメモリが、たとえばシリアル周辺インターフェース(SPI)を介してプロセッサ1501に結合されてよい。このフラッシュメモリは、BIOSならびにシステムの他のファームウェアを含むシステム・ソフトウェアの不揮発性記憶装置をもたらし得る。
記憶デバイス1508が含み得るコンピュータ・アクセス可能な記憶媒体1509(マシン可読記憶媒体またはコンピュータ可読媒体としても知られている)には、本明細書で説明された技法または機能のうち任意の1または複数を具現する1または複数の命令のセットまたはソフトウェア(たとえばモジュール、ユニット、および/またはロジック1528)が記憶されている。処理モジュール/ユニット/ロジック1528は、たとえばASTジェネレータ210、ASTパーサ220、検証コード・ジェネレータ230、および検証スタブ・ジェネレータ240など、上記で説明されたコンポーネントのうち任意のものを表し得る。処理モジュール/ユニット/ロジック1528は、データ処理システム1500による実行中には、メモリ1503の内部および/またはプロセッサ1501の内部に、余すところなく、または少なくとも部分的に存在してもよく、メモリ1503およびプロセッサ1501はマシンアクセス可能な記憶媒体も構成する。処理モジュール/ユニット/ロジック1528は、ネットワーク・インターフェース・デバイス1505によってネットワークを通じてさらに送信/受信されてよい。
コンピュータ可読記憶媒体1509は、上記で説明されたいくつかのソフトウェア機能を持続的に記憶するためにも使用され得る。例示的実施形態では、コンピュータ可読記憶媒体1509は単一の媒体であるように示されているが、「コンピュータ可読記憶媒体」という用語は、命令の1または複数のセットを記憶する単一の媒体または複数の媒体(たとえば集中型もしくは分散型のデータベース、および/または関連するキャッシュおよびサーバ)を含むように解釈されるべきである。「コンピュータ可読記憶媒体」という用語は、マシンによる実行のための命令のセットを記憶することまたは符号化することが可能であって本開示の技法のうち任意の1または複数をマシンに遂行させる任意の媒体を含むようにも解釈されるべきである。したがって、「コンピュータ可読記憶媒体」という用語は、それだけではないが、ソリッドステート・メモリならびに光媒体および磁気媒体、または何らかの他の非一時的マシン可読媒体を含むように解釈されるべきである。
処理モジュール/ユニット/ロジック1528、構成要素および本明細書で説明された他の機能は、個別のハードウェア構成要素として実施され得、またはASIC、FPGA、DSPまたは類似のデバイスなどハードウェア構成要素の機能の中に組み込まれ得る。加えて、処理モジュール/ユニット/ロジック1528は、ハードウェアデバイスの内部のファームウェアまたは機能回路として実施され得る。さらに、処理モジュール/ユニット/ロジック1528は、ハードウェアデバイスとソフトウェア・コンポーネントの任意の組合せで実施され得る。
システム1500は、データ処理システムの様々な構成要素を用いて示されているが、何らかの特定のアーキテクチャまたは構成要素を相互に連結するやり方を表すことは意図されておらず、そのため、詳細は、本開示の実施形態に密接な関係はないことに留意されたい。ネットワークコンピュータ、ハンドヘルドコンピュータ、携帯電話、サーバ、および/または構成要素がより少ないかもしくは恐らくより多い他のデータ処理システムも、本開示の実施形態とともに使用され得ることも理解されたい。
先の詳細な説明のいくつかの部分は、コンピュータ記憶装置の内部のデータ・ビットにおける動作のアルゴリズムおよび記号表現の観点から提示されている。これらのアルゴリズム的な説明および表現は、データ処理技術の当業者が、著作物の要旨を他の当業者に最も効果的に伝えるために使用するやり方である。ここで、アルゴリズムは、一般に、所望の結果に達する動作の自己矛盾がないシーケンスと考えられる。動作は、物理量の物理的操作を必要とするものである。
しかしながら、これらおよび類似の用語のすべてが、適切な物理量に関連づけられるべきであり、これらの量に与えられた好都合なラベルでしかないことを念頭に置かれたい。特に別記しない限り、上記の議論から明らかなように、説明の全体にわたって、以下の特許請求の範囲において説明されるものなどの用語を利用する議論は、コンピュータシステムのレジスタおよびメモリの内部の物理的(電子的)量として表されたデータを操作して、コンピュータシステムのメモリもしくはレジスタ、または他のそのような情報の記憶デバイス、伝送デバイスもしくは表示デバイスの内部の物理量として同様に表される他のデータへと変換するコンピュータシステム(または類似の電子計算デバイス)の作用および処理を指すことが理解される。
本開示の実施形態は、本明細書における動作を遂行するための装置にも関する。そのようなコンピュータプログラムは非一時的コンピュータ可読媒体に記憶されている。マシン可読媒体は、マシン(たとえばコンピュータ)に可読の形態で情報を記憶するための任意の機構を含む。たとえば、マシン可読(たとえばコンピュータ可読)媒体は、マシン(たとえばコンピュータ)可読記憶媒体(たとえば読み取り専用メモリ(「ROM」)、ランダムアクセスメモリ(「RAM」)、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリ素子)を含む。
先の図に表された処理または方法は、ハードウェア(たとえば回路、専用ロジックなど)、(たとえば非一時的コンピュータ可読媒体上に具現された)ソフトウェア、またはこれらの組合せを含む処理ロジックによって遂行され得る。上記では、処理または方法がいくつかの順次動作の観点から説明されているが、説明された動作のうちいくつかは異なる順序で遂行され得ることを理解されたい。その上に、いくつかの動作は、順次ではなく並行して遂行され得る。
本開示の実施形態は、何らかの特定のプログラム言語を基準として説明されているわけではない。本明細書で説明されたような本開示の実施形態の教示を実施するために、種々のプログラム言語が使用され得ることが理解されよう。
前述の明細書では、本開示の実施形態が特定の例示的実施形態を参照しながら説明されている。以下の特許請求の範囲で説明されるような本開示のより広範な精神および範囲から逸脱することなく、様々な修正形態が作製され得ることが明白であろう。したがって、本明細書および図面は、限定的意味ではなく例示的意味に見なされるべきである。
Figure 0006994071000001
Figure 0006994071000002
Figure 0006994071000003
Figure 0006994071000004
Figure 0006994071000005

Claims (20)

  1. データ通信のためにプロトコル・バッファ(Protobuf)を使用するアプリケーションの検証において、検証の代用ヘッダファイルを使用するためのコンピュータで実装される方法であって、
    Protobuf仕様による1または複数の関数の第1のセットを定義するProtobuf定義ファイルから1または複数のProtobufメッセージタイプを得るステップであって、前記第1のセットの前記関数がProtobufライブラリのセットを呼び出すステップと、
    前記Protobufメッセージタイプに基づいて前記検証の代用ヘッダファイルを生成するステップであって、該検証の代用ヘッダファイルが、標準C/C++プログラム言語による1または複数の関数の第2のセットを定義し、前記第2のセットの前記関数が標準C/C++ライブラリのセットを呼び出すステップと、
    前記検証の代用ヘッダファイルに1または複数の検証スタブを挿入するステップと、
    前記標準C/C++ライブラリのセットに基づいて、前記Protobufライブラリのセットの検証を必要とすることなく、前記検証の代用ヘッダファイルを含むアプリケーションの検証を遂行するステップと、
    を含む方法。
  2. 前記Protobuf定義ファイルから前記1または複数のProtobufメッセージタイプを得るステップが、前記Protobuf定義ファイルに基づいて抽象構文ツリー(AST)を生成するステップと、前記ASTを解析するステップと、を含む請求項1に記載の方法。
  3. 各Protobufメッセージタイプについて、前記検証の代用ヘッダファイルの中にC++クラスが生成され、対応するProtobufメッセージタイプの各フィールドについて、前記C++クラスの中に1つのメンバ・フィールドおよび対応するメンバ関数が生成される請求項1に記載の方法。
  4. C/C++クラスの1または複数のオブジェクトの生成、アクセス、または削除のための、前記検証の代用ヘッダファイルを含む前記アプリケーションの前記検証が、前記標準C/C++ライブラリに依存する請求項3に記載の方法。
  5. 前記検証スタブが、前記メンバ関数に関連した1または複数の事前条件、前記メンバ関数に関連した1または複数の事後条件、またはこれらの組合せを含む請求項3に記載の方法。
  6. 前記1または複数の事前条件ならびに/あるいは前記1または複数の事後条件がカスタマイズ可能である請求項5に記載の方法。
  7. 前記Protobufメッセージタイプが前記Protobuf定義ファイルの中で定義される請求項1に記載の方法。
  8. 命令を記憶した非一時的マシン可読媒体であって、前記命令がプロセッサによって実行されたとき、該プロセッサが、データ通信のためにプロトコル・バッファ(Protobuf)を使用するアプリケーションの検証において、検証の代用ヘッダファイルを使用する動作を遂行し、該動作が、
    Protobuf仕様による1または複数の関数の第1のセットを定義するProtobuf定義ファイルから1または複数のProtobufメッセージタイプを得るステップであって、前記第1のセットの前記関数がProtobufライブラリのセットを呼び出す、1または複数のProtobufメッセージタイプを得るステップと、
    前記Protobufメッセージタイプに基づいて前記検証の代用ヘッダファイルを生成するステップであって、該検証の代用ヘッダファイルが、標準C/C++プログラム言語による1または複数の関数の第2のセットを定義し、前記第2のセットの前記関数が標準C/C++ライブラリのセットを呼び出す、前記検証の代用ヘッダファイルを生成するステップと、
    前記検証の代用ヘッダファイルに1または複数の検証スタブを挿入するステップと、
    前記標準C/C++ライブラリのセットに基づいて、前記Protobufライブラリのセットの検証を必要とすることなく、前記検証の代用ヘッダファイルを含むアプリケーションの検証を遂行するステップとを含む非一時的マシン可読媒体。
  9. 前記Protobuf定義ファイルから前記1または複数のProtobufメッセージタイプを得るステップが、前記Protobuf定義ファイルに基づいて抽象構文ツリー(AST)を生成するステップと、前記ASTを解析するステップと、を含む請求項8に記載の非一時的マシン可読媒体。
  10. 各Protobufメッセージタイプについて、前記検証の代用ヘッダファイルの中にC++クラスが生成され、対応するProtobufメッセージタイプの各フィールドについて、前記C++クラスの中に1つのメンバ・フィールドおよび対応するメンバ関数が生成される、請求項8に記載の非一時的マシン可読媒体。
  11. C/C++クラスの1または複数のオブジェクトの生成、アクセス、または削除のための、前記検証の代用ヘッダファイルを含む前記アプリケーションの前記検証が、前記標準C/C++ライブラリに依存する請求項10に記載の非一時的マシン可読媒体。
  12. 前記検証スタブが、前記メンバ関数に関連した1または複数の事前条件、前記メンバ関数に関連した1または複数の事後条件、またはこれらの組合せを含む請求項10に記載の非一時的マシン可読媒体。
  13. 前記1または複数の事前条件ならびに/あるいは前記1または複数の事後条件がカスタマイズ可能である請求項12に記載の非一時的マシン可読媒体。
  14. 前記Protobufメッセージタイプが前記Protobuf定義ファイルの中で定義される請求項8に記載の非一時的マシン可読媒体。
  15. プロセッサと、命令を記憶するように該プロセッサに結合されたメモリとを備えるデータ処理システムであって、前記命令が前記プロセッサによって実行されたとき、前記プロセッサが、データ通信のためにプロトコル・バッファ(Protobuf)を使用するアプリケーションの検証において検証の代用ヘッダファイルを使用するための動作を遂行し、該動作が、
    Protobuf仕様による1または複数の関数の第1のセットを定義するProtobuf定義ファイルから1または複数のProtobufメッセージタイプを得るステップであって、前記第1のセットの前記関数がProtobufライブラリのセットを呼び出す、1または複数のProtobufメッセージタイプを得るステップと、
    前記Protobufメッセージタイプに基づいて前記検証の代用ヘッダファイルを生成するステップであって、該検証の代用ヘッダファイルが、標準C/C++プログラム言語による1または複数の関数の第2のセットを定義し、前記第2のセットの前記関数が、標準C/C++ライブラリのセットを呼び出すステップと、
    前記検証の代用ヘッダファイルに1または複数の検証スタブを挿入するステップと、
    前記標準C/C++ライブラリのセットに基づいて、前記Protobufライブラリのセットの検証を必要とすることなく、前記検証の代用ヘッダファイルを含むアプリケーションの検証を遂行するステップと、
    を含むデータ処理システム。
  16. 前記Protobuf定義ファイルから前記1または複数のProtobufメッセージタイプを得るステップが、前記Protobuf定義ファイルに基づいて抽象構文ツリー(AST)を生成するステップと、前記ASTを解析するステップと、を含む請求項15に記載のシステム。
  17. 各Protobufメッセージタイプについて、前記検証の代用ヘッダファイルの中にC++クラスが生成され、対応するProtobufメッセージタイプの各フィールドについて、前記C++クラスの中に1つのメンバ・フィールドおよび対応するメンバ関数が生成される請求項15に記載のシステム。
  18. C/C++クラスの1または複数のオブジェクトの生成、アクセス、または削除のための、前記検証の代用ヘッダファイルを含む前記アプリケーションの前記検証が、前記標準C/C++ライブラリに依存する、請求項17に記載のシステム。
  19. 前記検証スタブが、前記メンバ関数に関連した1または複数の事前条件、前記メンバ関数に関連した1または複数の事後条件、またはこれらの組合せを含む請求項17に記載のシステム。
  20. 前記1または複数の事前条件ならびに/あるいは前記1または複数の事後条件がカスタマイズ可能である請求項19に記載のシステム。
JP2020070764A 2019-05-14 2020-04-10 Protobufベースのプロジェクトのための包括的な検証手法 Active JP6994071B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/411,755 US10732944B1 (en) 2019-05-14 2019-05-14 Generic verification approach for Protobuf based projects
US16/411,755 2019-05-14

Publications (2)

Publication Number Publication Date
JP2020187737A JP2020187737A (ja) 2020-11-19
JP6994071B2 true JP6994071B2 (ja) 2022-01-14

Family

ID=69845207

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020070764A Active JP6994071B2 (ja) 2019-05-14 2020-04-10 Protobufベースのプロジェクトのための包括的な検証手法

Country Status (5)

Country Link
US (1) US10732944B1 (ja)
EP (1) EP3739445B1 (ja)
JP (1) JP6994071B2 (ja)
KR (1) KR102300451B1 (ja)
CN (1) CN111949249B (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11640282B2 (en) * 2019-10-24 2023-05-02 Here Global B.V. Method, apparatus, and system for providing a broker for data modeling and code generation
CN111949254A (zh) * 2020-08-07 2020-11-17 北京字节跳动网络技术有限公司 生成统一ast的方法、装置、计算机设备和存储介质
CN112379886A (zh) * 2020-11-30 2021-02-19 北京一流科技有限公司 数据格式转换系统及其方法
CN112765023B (zh) * 2021-01-19 2023-10-03 上海幻电信息科技有限公司 测试用例生成方法、装置
CN112925768B (zh) * 2021-03-03 2024-02-27 北京中安星云软件技术有限公司 一种基于Protobuf协议的HBASE数据库解析方法及系统
CN113391817B (zh) * 2021-06-16 2022-08-26 中国海洋大学 基于antlr4的头文件替换方法及装置
CN113687817B (zh) * 2021-08-16 2023-10-31 山东新一代信息产业技术研究院有限公司 一种消息格式解析器及解析方法
CN113746851B (zh) * 2021-09-08 2023-08-18 上海幻电信息科技有限公司 一种支持实时解析grpc请求的代理系统和方法
CN114401321A (zh) * 2021-12-31 2022-04-26 中国电力科学研究院有限公司 宽频测量数据轻量化传输方法、系统、设备及存储介质
CN114527966B (zh) * 2022-02-24 2024-06-04 中国人民解放军火箭军工程大学 一种文件输入输出流高效通用化算法库实现方法
CN117251144B (zh) * 2023-11-20 2024-03-29 北京友友天宇系统技术有限公司 一种基于主题的数据对象访问与发布方法及相关设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070277158A1 (en) 2006-02-24 2007-11-29 International Business Machines Corporation Method and apparatus for testing of business processes for Web services
JP2008305003A (ja) 2007-06-05 2008-12-18 Nec Software Kyushu Ltd マルチタスク通信を行うプログラムの動作検証方法及び動作検証システム
JP2012073778A (ja) 2010-09-28 2012-04-12 Yahoo Japan Corp WebAPI作成支援装置及びWebAPI作成支援方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6978231B2 (en) * 2000-12-05 2005-12-20 Derek Edward Williams Embedded hardware description language instrumentation
US7689975B2 (en) * 2003-04-16 2010-03-30 Nxp B.V. Processing of a compileable computer program
US7441185B2 (en) * 2005-01-25 2008-10-21 Microsoft Corporation Method and system for binary serialization of documents
US9208308B2 (en) * 2007-11-27 2015-12-08 The Boeing Company Alternate parts signature list file
JP5548433B2 (ja) * 2009-11-30 2014-07-16 株式会社野村総合研究所 Webサービス基盤システム
US20120246653A1 (en) * 2011-03-23 2012-09-27 Infinidat Ltd. Generic command parser
US9378237B2 (en) * 2014-04-15 2016-06-28 Google Inc. Methods for in-place access of serialized data
CN108696381B (zh) * 2017-04-12 2020-07-03 腾讯科技(深圳)有限公司 一种协议配置方法及装置
CN109086147B (zh) * 2018-07-31 2022-02-22 深圳市元征科技股份有限公司 应用程序的服务接口调用方法、装置及存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070277158A1 (en) 2006-02-24 2007-11-29 International Business Machines Corporation Method and apparatus for testing of business processes for Web services
JP2008305003A (ja) 2007-06-05 2008-12-18 Nec Software Kyushu Ltd マルチタスク通信を行うプログラムの動作検証方法及び動作検証システム
JP2012073778A (ja) 2010-09-28 2012-04-12 Yahoo Japan Corp WebAPI作成支援装置及びWebAPI作成支援方法

Also Published As

Publication number Publication date
JP2020187737A (ja) 2020-11-19
KR102300451B1 (ko) 2021-09-08
EP3739445A1 (en) 2020-11-18
EP3739445B1 (en) 2023-05-03
CN111949249A (zh) 2020-11-17
KR20200131746A (ko) 2020-11-24
CN111949249B (zh) 2023-12-01
US10732944B1 (en) 2020-08-04

Similar Documents

Publication Publication Date Title
JP6994071B2 (ja) Protobufベースのプロジェクトのための包括的な検証手法
US8458676B2 (en) Executing platform-independent code on multi-core heterogeneous processors
JP5906325B2 (ja) トランザクションをサポートするコンピューターアーキテクチャにおけるコード特殊化のための例外を用いるプログラム及びコンピューティングデバイス
US10922090B1 (en) Methods and systems for executing a software application using a container
US11789913B2 (en) Integration of model execution engine containers with a model development environment
WO2013088818A1 (ja) 仮想計算機システム、仮想化機構、及びデータ管理方法
US11809953B1 (en) Dynamic code loading for multiple executions on a sequential processor
US11055220B2 (en) Hybrid memory systems with cache management
US11467946B1 (en) Breakpoints in neural network accelerator
KR101826828B1 (ko) 로그 데이터 관리 시스템 및 방법
US8990741B2 (en) Circuit design support device, circuit design support method and program
US9760380B2 (en) Using grammar to serialize and de-serialize objects
CN107077365B (zh) 有选择地加载预编译的头部和/或其部分
US20170116008A1 (en) Web browser for spoofing supported features
US8997044B2 (en) Overriding system attributes and function returns in a software subsystem
CN114385524B (zh) 嵌入式固件仿真系统及其方法、装置和电子设备
US10838823B2 (en) Systems and method to make application consistent virtual machine backup work in private network
KR20220061828A (ko) 가속기를 포함하는 컴퓨팅 시스템 및 그 동작 방법
US20240036940A1 (en) Method and system for acceleration or offloading utilizing a unified data pointer
JP7274069B2 (ja) トレース制御装置、エミュレータ、トレース制御方法、および、トレース制御プログラム
US20240232148A9 (en) Integration of model execution engine containers with a model development environment
US11243978B2 (en) Non-centralized data synchronization for IoT and other distributed applications
CN104166633B (zh) 用于存储器访问保护的方法和系统
CN115297169B (zh) 数据处理方法、装置、电子设备及介质
US8826306B2 (en) Hidden representations for marshaling through hosted scripting environments

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200410

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210428

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210525

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210820

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20211207

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211210

R150 Certificate of patent or registration of utility model

Ref document number: 6994071

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150