Skip to main content
QUICK REVIEW

[論文レビュー] A comprehensive operational semantics of the SCOOP programming model

Benjamin Morandi, Sebastian Nanz|arXiv (Cornell University)|Jan 5, 2011
Logic, programming, and type systems参考文献 29被引用数 5
ひとこと要約

本論文は、SCOOP並行的オブジェクト指向プログラミングモデルの包括的な操作的意味論を提示し、抽象データ型と推論規則を用いてその実行時動作を形式的に定式化している。この意味論は、以前の非形式的仕様における曖昧さを解消し、SCOOPコンパイラおよびランタイムの正しく正確な実装を可能にするとともに、データレースの不在や型安全性といった正しさの性質の形式的検証のための厳密な基盤を提供する。

ABSTRACT

Operational semantics has established itself as a flexible but rigorous means to describe the meaning of programming languages. Oftentimes, it is felt necessary to keep a semantics small, for example to facilitate its use for model checking by avoiding state space explosion. However, omitting many details in a semantics typically makes results valid for a limited core language only, leaving a wide gap towards any real implementation. In this paper we present a full-fledged semantics of the concurrent object-oriented programming language SCOOP (Simple Concurrent Object-Oriented Programming). The semantics has been found detailed enough to guide an implementation of the SCOOP compiler and runtime system, and to detect and correct a variety of errors and ambiguities in the original informal specification and prototype implementation. In our formal specification, we use abstract data types with preconditions and axioms to describe the state, and introduce a number of special run-time operations to model the runtime system with our inference rules. This approach allows us to make our large formal specification manageable, providing a first step towards reference documents for specifying object-oriented languages based on operational semantics.

研究の動機と目的

  • SCOOP並行プログラミングモデルの形式的かつ厳密な操作的意味論を提供すること。
  • 元の非形式的仕様における曖昧さや欠落を明確にし、修正すること。
  • SCOOPコンパイラおよびランタイムシステムを実装するための基準として機能すること。
  • データレースの不在や型安全性といった重要な正しさの性質の形式的検証を可能にすること。
  • 将来のアタイアティック意味論およびSCOOP用インタプリタ実装に関する研究を支援すること。

提案手法

  • 状態と操作を表すために事前条件と公理を備えた抽象データ型を用いて、ランタイムシステムをモデル化すること。
  • すべての言語構文(メソッド呼び出し、ループ、代入、条件同期など)に対して、構造的動作的意味論と推論規則を定義すること。
  • ユーザー層の構文である「命令」とランタイム層の意味論である「操作」という2つの異なる文法的カテゴリを導入し、言語構文と実装の詳細を分離すること。
  • 新規チャネルと通知メカニズムを用いて非同期動作をモデル化し、正しい同期を保証すること。
  • リクエストキューのロック、コールスタックのロック、および別個呼び出しやコールバック中のロックの渡し方を形式的に定式化すること。
  • オブジェクトのプロセッサ間移行時に不変条件を保持するための、ディープインポートおよびワンスルーチンの処理を定義すること。

実験結果

リサーチクエスチョン

  • RQ1SCOOPモデルの複雑な実行時動作に対して包括的な操作的意味論をどのように定式化できるか?
  • RQ2SCOOPの並行モデルの元の非形式的仕様における曖昧さを解消するための形式的メカニズムとして何が必要か?
  • RQ3別個メソッド呼び出しおよびコールバック中にデータレースを防ぐために、SCOOPにおけるロック管理をどのように形式的に規定できるか?
  • RQ4後置条件がロックの渡しを伴わず、同期ステップで取得したロックのみを必要とする場合に、非同期に評価可能であるための条件は何か?
  • RQ5形式的意味論は、正しく正確なSCOOPランタイムシステムの実装の基準として機能できるか?

主な発見

  • 形式的意味論は、元の非形式的仕様における複数の欠落や曖昧さ(特にロックの粒度とロックの渡し方に関するもの)を特定し、修正した。
  • モデルは、別個呼び出しおよびコールバック中に、プロセッサが保持するすべてのロックを渡す必要があることを明確にした。これにより、正しい同期が保証される。
  • 意味論は、不変条件を損なわずにオブジェクト構造をプロセッサ間で移動させるためにディープインポートが必要であり、かつディープインポートの前にワンスルーチンを「新規でない」ものにマークする必要があることを確立した。
  • 後置条件を非同期に評価できるのは、ロックの渡しを伴わず、同期ステップで取得したロックのみを必要とする場合に限る。
  • 形式的仕様は、SCOOPコンパイラおよびランタイムの正しく正確な実装を導くのに十分に詳細であり、Eiffel上で公開可能な改良版の実装に繋がった。
  • 意味論は、将来的な形式的検証の基盤を提供し、型安全性の証明やSCOOP用のアタイアティック意味論の開発を支援する。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。