JP2016511484A5 - - Google Patents

Download PDF

Info

Publication number
JP2016511484A5
JP2016511484A5 JP2016501182A JP2016501182A JP2016511484A5 JP 2016511484 A5 JP2016511484 A5 JP 2016511484A5 JP 2016501182 A JP2016501182 A JP 2016501182A JP 2016501182 A JP2016501182 A JP 2016501182A JP 2016511484 A5 JP2016511484 A5 JP 2016511484A5
Authority
JP
Japan
Prior art keywords
contract
component
components
predicate
runtime
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.)
Granted
Application number
JP2016501182A
Other languages
English (en)
Other versions
JP2016511484A (ja
JP6401235B2 (ja
Filing date
Publication date
Priority claimed from US13/829,561 external-priority patent/US9286039B2/en
Application filed filed Critical
Publication of JP2016511484A publication Critical patent/JP2016511484A/ja
Publication of JP2016511484A5 publication Critical patent/JP2016511484A5/ja
Application granted granted Critical
Publication of JP6401235B2 publication Critical patent/JP6401235B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Claims (20)

  1. 1または複数のハードウェアプロセッサと、前記1または複数のハードウェアプロセッサによって実行され得るコンピュータ実行可能命令を有する1または複数のハードウェア記憶装置とを備えたシステムであって、前記コンピュータ実行可能命令は中間言語プログラムコードの静的解析の一環として少なくとも以下の、
    前記中間言語プログラムコードにおいて複数のコンポーネントを識別することであって、各コンポーネントは異なる実行スコープを備え、対応するコントラクトを含み、各コントラクトは、前記対応する実行スコープのランタイムにおいて当該コントラクトに遭遇した場合、前記コントラクトの述部が真であるかを、前記対応する実行スコープの以降の実行の条件とする、ことと、
    前記複数のコンポーネントの特定のコンポーネントに対応する特定のコントラクトの特定の述部が、前記特定のコンポーネントのランタイムにおいて常に真とは限らないと判定することと、
    前記複数のコンポーネントのための実行可能コードを1または複数の実行可能バイナリ内に生成することであって、前記特定のコンポーネントのための前記実行可能コードを生成するときに、前記複数のコンポーネントの1または複数の他のコンポーネントの第1のセットによって前記特定のコンポーネントが呼び出される場合に、ランタイムにおいて前記特定のコントラクトのチェックを迂回させることができる第1のエントリポイントを有し、前記複数のコンポーネントの1または複数の他のコンポーネントの第2のセットによって前記特定のコンポーネントが呼び出される場合に、ランタイムにおいて前記特定のコントラクトをチェックさせる第2のエントリポイントを有する実行可能コードの部分を生成することを含む、ことと、
    を実行するようシステムを構成する、システム。
  2. 前記特定のコンポーネント前記システムに挙動を実行するよう命令し、前記特定のコントラクトは、前記挙動を変更することなく前記特定のコントラクトのチェックを削除できるように、意味的に構造化されている、請求項1に記載のシステム。
  3. コントラクトが、前記対応するコンポーネントのインターフェースを使用して、前記対応するコンポーネントの呼び出し元に意味的にアクセス可能である、請求項に記載のシステム。
  4. コントラクトが対応するコンポーネントの事前条件である、請求項に記載のシステム。
  5. コントラクトが対応するコンポーネントの事後条件である、請求項に記載のシステム。
  6. ランタイムにおいて遭遇した前記特定の述部が真ではない場合、前記システムは、前記特定のコンポーネントの前記実行スコープの外で外部回復コード実行するよう構成される、請求項1に記載のシステム。
  7. ランタイムにおいて遭遇した前記特定の述部が真ではない場合、前記システムは、前記特定の述部が真ではないことに応答して回復コード実行されないように、前記特定のコンポーネントに対してファイストフェイルを実施するよう構成される、請求項1に記載のシステム。
  8. 前記システムまた、述部が外部から見える副作用を含むような少なくともいくつかの条件を検出するように構成される、請求項1に記載のシステム。
  9. 前記システムはまた、前記1または複数の実行可能バイナリを記憶装置上に格納するように構成される、請求項1に記載のシステム。
  10. 前記システムはまた、
    前記複数のコンポーネントの別のコンポーネントに対応する別のコントラクトの別の述部が、前記別のコンポーネントのランタイムにおいて常に真であると判定し、
    前記複数のコンポーネントのための前記実行可能コードを1または複数の実行可能バイナリ内に生成するときに、前記別の述部が前記別のコンポーネントのランタイムにおいて常に真であると判定されたことに基づいて、前記別のコンポーネントのための実行可能コードの第3の部分であって、前記別のコントラクトおよび前記別の述部に対応する実行可能コードがない、実行可能コードの第3の部分を生成するように構成される、請求項1に記載のシステム。
  11. 1または複数のハードウェアプロセッサを含むコンピュータシステムで実装される、中間言語プログラムコードの静的解析を実行するための方法であって、
    前記1または複数のハードウェアプロセッサが、前記中間言語プログラムコードにおいて複数のコンポーネントを識別することであって、各コンポーネントは異なる実行スコープを備え、対応するコントラクトを含み、各コントラクトは、前記対応する実行スコープのランタイムにおいて当該コントラクトに遭遇した場合、前記コントラクトの述部が真であるかを、前記対応する実行スコープの以降の実行の条件とする、ことと、
    前記1または複数のハードウェアプロセッサが、前記複数のコンポーネントの特定のコンポーネントに対応する特定のコントラクトの特定の述部が、前記特定のコンポーネントのランタイムにおいて常に真とは限らないと判定することと、
    前記1または複数のハードウェアプロセッサが、前記複数のコンポーネントのための実行可能コードを1または複数の実行可能バイナリ内に生成することであって、前記特定のコンポーネントのための前記実行可能コードを生成するときに、前記複数のコンポーネントの1または複数の他のコンポーネントの第1のセットによって前記特定のコンポーネントが呼び出される場合に、ランタイムにおいて前記特定のコントラクトのチェックを迂回させることができる第1のエントリポイントを有し、前記複数のコンポーネントの1または複数の他のコンポーネントの第2のセットによって前記特定のコンポーネントが呼び出される場合に、ランタイムにおいて前記特定のコントラクトをチェックさせる第2のエントリポイントを有する実行可能コードの部分を生成することを含む、ことと、
    を含む方法。
  12. 前記静的解析は、リファクタリングツール、検証ツール、自動化ドキュメンテーションジェネレータの少なくとも1つによって実行される、請求項11に記載の方法。
  13. コントラクトが対応するコンポーネントの事前条件である、請求項11に記載の方法。
  14. コントラクトが対応するコンポーネントの事後条件である、請求項11に記載の方法。
  15. ランタイムにおいて遭遇した前記特定の述部が真ではない場合、前記特定のコンポーネントの前記実行スコープの外で外部回復コードが実行される、請求項11に記載の方法。
  16. ランタイムにおいて遭遇した前記特定の述部が真ではない場合、前記特定の述部が真ではないことに応答して回復コードが実行されないように、前記特定のコンポーネントに対してファイストフェイルが実施される、請求項11に記載の方法。
  17. 前記1または複数のハードウェアプロセッサが、前記1または複数の実行可能バイナリを1または複数のハードウェア記憶装置上に格納することをさらに含む、請求項11に記載の方法。
  18. 前記複数のコンポーネントの別のコンポーネントに対応する別のコントラクトの別の述部が、前記別のコンポーネントのランタイムにおいて常に真であると判定することと、
    前記複数のコンポーネントのための前記実行可能コードを1または複数の実行可能バイナリ内に生成するときに、前記別の述部が前記別のコンポーネントのランタイムにおいて常に真であると判定されたことに基づいて、前記別のコンポーネントのための実行可能コードの第3の部分であって、前記別のコントラクトおよび前記別の述部に対応する実行可能コードがない、実行可能コードの第3の部分を生成することと、をさらに含む、請求項11に記載の方法。
  19. コンピュータシステムの1または複数のハードウェアプロセッサによって実行され得るコンピュータ実行可能命令を有する1または複数のハードウェア記憶装置を備えたコンピュータプログラム製品であって、前記コンピュータ実行可能命令は、中間言語プログラムコードの静的解析の一環として少なくとも以下の、
    前記中間言語プログラムコードにおいて複数のコンポーネントを識別することであって、各コンポーネントは異なる実行スコープを備え、対応するコントラクトを含み、各コントラクトは、前記対応する実行スコープのランタイムにおいて当該コントラクトに遭遇した場合、前記コントラクトの述部が真であるかを、前記対応する実行スコープの以降の実行の条件とする、ことと、
    前記複数のコンポーネントの第1のコンポーネントに対応する第1のコントラクトの第1の述部が、前記複数のコンポーネントの前記第1のコンポーネントのランタイムにおいて常に真であると判定することと、
    前記複数のコンポーネントの第2のコンポーネントに対応する第2のコントラクトの第2の述部が、前記複数のコンポーネントの前記第2のコンポーネントのランタイムにおいて常に真とは限らないと判定することと、
    前記複数のコンポーネントのための実行可能コードを1または複数の実行可能バイナリ内に生成することであって、
    前記複数のコンポーネントの前記第1のコンポーネントのための前記実行可能コードを生成するときに、前記第1の述部が前記複数のコンポーネントの第1のコンポーネントのランタイムにおいて常に真であると判定されたことに基づいて、前記第1のコントラクトおよび前記第1の述部に対応する実行可能コードがない、実行可能コードの第1の部分を生成すること、および
    前記複数のコンポーネントの前記第2のコンポーネントのための前記実行可能コードを生成するときに、前記複数のコンポーネントの1または複数の他のコンポーネントの第1のセットによって前記第2のコンポーネントが呼び出される場合に、ランタイムにおいて前記第2のコントラクトのチェックを迂回させることができる第1のエントリポイントを有し、前記複数のコンポーネントの1または複数の他のコンポーネントの第2のセットによって前記第2のコンポーネントが呼び出される場合に、ランタイムにおいて前記第2のコントラクトをチェックさせる第2のエントリポイントを有する実行可能コードの第2部分を生成することを含む、ことと、
    を実行するよう前記コンピュータシステムを構成する、コンピュータプログラム製品。
  20. ランタイムにおいて遭遇した前記第2の述部が真ではない場合、前記コンピュータシステムは、前記第2の述部が真ではないことに応答して回復コードが実行されないように、前記複数のコンポーネントの第2のコンポーネントに対してファイストフェイルを実施するよう構成される、請求項19に記載のコンピュータプログラム製品。
JP2016501182A 2013-03-14 2014-03-11 コントラクトのためのオペレーティングシステムサポート Active JP6401235B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/829,561 2013-03-14
US13/829,561 US9286039B2 (en) 2013-03-14 2013-03-14 Operating system support for contracts
PCT/US2014/023258 WO2014159373A2 (en) 2013-03-14 2014-03-11 Operating system support for contracts

Publications (3)

Publication Number Publication Date
JP2016511484A JP2016511484A (ja) 2016-04-14
JP2016511484A5 true JP2016511484A5 (ja) 2017-03-09
JP6401235B2 JP6401235B2 (ja) 2018-10-10

Family

ID=50884465

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016501182A Active JP6401235B2 (ja) 2013-03-14 2014-03-11 コントラクトのためのオペレーティングシステムサポート

Country Status (6)

Country Link
US (1) US9286039B2 (ja)
EP (1) EP2972828B1 (ja)
JP (1) JP6401235B2 (ja)
KR (1) KR102118236B1 (ja)
CN (1) CN105164642B (ja)
WO (1) WO2014159373A2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9841955B2 (en) * 2016-01-26 2017-12-12 Enterpriseweb Llc Unified operating system for distributed computing
US11755382B2 (en) * 2017-11-03 2023-09-12 Coherent Logix, Incorporated Programming flow for multi-processor system
CN107908405A (zh) * 2017-11-17 2018-04-13 苏州蜗牛数字科技股份有限公司 代码静态审核装置及方法
CN110287089B (zh) * 2019-05-07 2023-02-17 华东师范大学 一种基于中间格式及smt技术的微内核ipc验证方法
CN111770206B (zh) * 2020-08-31 2020-12-29 支付宝(杭州)信息技术有限公司 一种部署智能合约的方法、区块链节点和存储介质
CN111768187A (zh) * 2020-08-31 2020-10-13 支付宝(杭州)信息技术有限公司 一种部署智能合约的方法、区块链节点和存储介质

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6601192B1 (en) 1999-08-31 2003-07-29 Accenture Llp Assertion component in environment services patterns
US20030023959A1 (en) * 2001-02-07 2003-01-30 Park Joseph C.H. General and efficient method for transforming predicated execution to static speculation
US7143373B2 (en) 2004-10-14 2006-11-28 Synopsys, Inc. Method and apparatus for evaluating and debugging assertions
JP2006139413A (ja) * 2004-11-10 2006-06-01 Hitachi Ltd プログラム、プログラムコードの合理化方法、プログラムコードの生成方法、プログラムコード、及び情報処理装置
US7987456B2 (en) * 2006-01-24 2011-07-26 Microsoft Corporation Qualitatively annotated code
US7934207B2 (en) 2006-12-19 2011-04-26 Microsoft Corporation Data schemata in programming language contracts
US8250524B2 (en) * 2007-12-21 2012-08-21 Microsoft Corporation Contract programming for code error reduction
US8782607B2 (en) * 2009-02-20 2014-07-15 Microsoft Corporation Contract failure behavior with escalation policy
US8930913B2 (en) * 2010-09-28 2015-01-06 Microsoft Corporation Intermediate representation construction for static analysis

Similar Documents

Publication Publication Date Title
JP2016511484A5 (ja)
Ma et al. Grt: Program-analysis-guided random testing (t)
WO2016036817A4 (en) Executing graph-based program specifications
JP2017516210A5 (ja)
RU2017110787A (ru) Автоматизированная проверка системы программного обеспечения
WO2015200510A8 (en) Automated code lockdown to reduce attack surface for software
JP2016509308A5 (ja)
WO2015195676A3 (en) Computer-implemented tools and methods for extracting information about the structure of a large computer software system, exploring its structure, discovering problems in its design, and enabling refactoring
JP2017527013A5 (ja)
JP2014501412A5 (ja)
RU2014144679A (ru) Способ и устройство для исполнения объекта на дисплее
US20150143179A1 (en) System and Method for Progressive Fault Injection Testing
RU2015142983A (ru) Принудительное создание события элемента управления
JP2012168948A5 (ja)
JP2015537298A5 (ja)
US10318395B2 (en) Checking a computer processor design for soft error handling
JP2013206016A5 (ja)
US9043775B2 (en) Method for identifying problematic loops in an application and devices thereof
EP2975527A3 (en) A method for tracing computer software
WO2015130675A3 (en) Apparatus and method for testing computer program implementation against a design model
RU2018142897A (ru) Оптимизатор запроса для использования cpu и рефакторинга кода
KR102118236B1 (ko) 컨트랙트에 대한 운영 체제 지원 기법
WO2017053022A8 (en) Speculative scalarization in vector processing
JP2016531335A5 (ja)
JP2017507411A5 (ja)