Skip to main content
QUICK REVIEW

[論文レビュー] Inferring Concise Specifications of APIs

John L. Singleton, Gary T. Leavens|arXiv (Cornell University)|Jan 1, 2019
Software Testing and Debugging Techniques参考文献 48被引用数 2
ひとこと要約

本論文は、強力後置条件(SP)述語変換子によって生成される指数的サイズの大きな論理式を変換することで、Java APIメソッドの簡潔で人間が読みやすい後置条件を推論する新規手法を提示する。SP出力における構造的パターンを活用することで、証明長さを最大76.7%短縮し、証明時間も26.7%短縮した。7つのライブラリで2,300件以上のメソッドを対象に75.7%の成功率を達成し、仕様の84.6%が20行未満(1/4ページ未満)に収まっている。

ABSTRACT

Modern software relies on libraries and uses them via application programming interfaces (APIs). Correct API usage as well as many software engineering tasks are enabled when APIs have formal specifications. In this work, we analyze the implementation of each method in an API to infer a formal postcondition. Conventional wisdom is that, if one has preconditions, then one can use the strongest postcondition predicate transformer (SP) to infer postconditions. However, SP yields postconditions that are exponentially large, which makes them difficult to use, either by humans or by tools. Our key idea is an algorithm that converts such exponentially large specifications into a form that is more concise and thus more usable. This is done by leveraging the structure of the specifications that result from the use of SP. We applied our technique to infer postconditions for over 2,300 methods in seven popular Java libraries. Our technique was able to infer specifications for 75.7% of these methods, each of which was verified using an Extended Static Checker. We also found that 84.6% of resulting specifications were less than 1/4 page (20 lines) in length. Our technique was able to reduce the length of SMT proofs needed for verifying implementations by 76.7% and reduced prover execution time by 26.7%.

研究の動機と目的

  • 形式的検証やソフトウェア工学タスクに不可欠な、APIメソッドの簡潔で利用可能な形式的後置条件を生成する課題に対処すること。
  • 人間の理解やツール利用に不適切となるほど指数的に膨張する強力後置条件(SP)論理式の問題を克服すること。
  • 精度を損なわずに、SPによって生成された論理式を、コンactで読みやすく、意味的に同等の仕様に変換する手法を開発すること。
  • 形式的検証を用いて、実世界のJavaライブラリにおける推論された後置条件の実用性と有効性を評価すること。
  • 利用性を阻害する冗長な、同義反復の、または充足不能な節を特定・削除すること。

提案手法

  • メソッド本体から初期論理式を生成するために、前向きの記号実行と強力後置条件(SP)述語変換子を組み合わせる。
  • SPによって生成された論理式に、排反な条件分岐や共通部分式といった構造的パターンを活用して、冗長性を低減する一連の最適化ルールを適用する。
  • 意味的に同一の式を特定・統合するために、入れ替え可能な同値関係(∼)を採用し、ブランチ単位を超えたグローバルな簡略化を可能にする。
  • フレーム公理と純粋性/代入可能制約を統合することで、メモリ安全の意味論を保持しながら冗長性を最小限に抑える。
  • Z3をSMTソルバとして用い、推論された仕様の検証を実行する。この技術はOpenJMLの拡張として実装されている。
  • ツール「Strongarm」は、これらの最適化を体系的に適用し、コンactで読みやすいJML形式の仕様を生成する。

実験結果

リサーチクエスチョン

  • RQ1SPによって生成された後置条件を、意味的正確性を損なわず、体系的に簡略化して簡潔で利用可能な仕様にできるか?
  • RQ2SP論理式に内在する構造的パターンをどの程度活用して、仕様のサイズを縮小し、可読性を向上させられるか?
  • RQ3提案手法の最適化技術は、実世界のAPIメソッドにおいて証明サイズと証明実行時間の両方をどの程度削減できるか?
  • RQ4実世界のAPIメソッドの何パーセントが、このアプローチによって成功裏に仕様化可能であり、その結果得られる仕様はどの程度簡潔か?
  • RQ5開発者は、同義反復や冗長性、充足不能な事前条件といった一般的な反パターンと比較して、推論された仕様の使いやすさをどのように評価するか?

主な発見

  • 7つの人気のあるJavaライブラリの2,300件以上のメソッドのうち75.7%が、本手法によって後置条件が推論され、OpenJMLの拡張静的チェックャーを用いてすべて正しく検証された。
  • 推論された後置条件の84.6%が、1/4ページ(20行)未満の長さに収まっており、高い簡潔性が裏付けられた。
  • SMT証明に必要な長さが76.7%短縮され、スケーラビリティの向上が顕著に示された。
  • 平均して証明実行時間が26.7%短縮され、下流のツールにおける性能向上が実証された。
  • すべての推論された仕様に、純粋性または代入可能制約が含まれており、メモリ安全のモデル化に対する強い支援が得られた。
  • 開発者によるアンケート調査で、同義反復や冗長性のない、簡潔で使いやすい仕様が、一般的な反パターンよりも強く好まれることが確認された。

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

論文設計から論文執筆まで、研究時間を劇的に削減しましょう。

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

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