Skip to main content
QUICK REVIEW

[论文解读] Extending Object-Oriented Languages by Declarative Specifications of Complex Objects using Answer-Set Programming

Johannes Oetsch, Jörg Pührer|arXiv (Cornell University)|Dec 5, 2011
Logic, Reasoning, and Knowledge参考文献 19被引用 3
一句话总结

本文提出将答案集编程(ASP)集成到Java中,以声明式方式指定复杂、约束丰富的对象,通过ASP求解器自动生成有效的对象结构。通过将ASP逻辑嵌入Java方法,该方法支持对网络图等对象进行简洁的约束驱动实例化,具备优化、采样和验证功能——在23行代码内解决了复杂的网络拓扑问题。

ABSTRACT

Many applications require complexly structured data objects. Developing new or adapting existing algorithmic solutions for creating such objects can be a non-trivial and costly task if the considered objects are subject to different application-specific constraints. Often, however, it is comparatively easy to declaratively describe the required objects. In this paper, we propose to use answer-set programming (ASP)---a well-established declarative programming paradigm from the area of artificial intelligence---for instantiating objects in standard object-oriented programming languages. In particular, we extend Java with declarative specifications from which the required objects can be automatically generated using available ASP solver technology.

研究动机与目标

  • 解决在命令式编程中开发复杂、嵌入约束的数据结构所面临的挑战,此类算法解决方案实现成本高且复杂。
  • 使程序员能够使用ASP声明式地指定所需的复杂对象,避免低层次的算法实现。
  • 将ASP求解无缝集成到Java工作流中,最大限度减少样板代码和外部调用。
  • 支持运行时动态、参数化的对象生成,具备优化和解采样功能。
  • 提供一个实用且可扩展的框架,用于软件开发中复杂数据结构的快速原型设计与测试。

提出的方法

  • 扩展Java以支持类似ASP的语法来表达对象规范,其中构造函数和方法调用被视为逻辑谓词。
  • 在运行时将Java参数(如组件数组)转换为ASP求解器的输入事实。
  • 使用ASP求解器(如CLASP)计算答案集,表示满足所有约束的有效对象配置。
  • 通过自动解析求解器输出,将结果答案集映射回具体的Java对象。
  • 通过ASP的#minimize语句支持优化,以选择优选解(如最小边数)。
  • 通过Java方法调用实现实时交互,该调用接受参数、解的数量,并返回结构化的对象实例。

实验结果

研究问题

  • RQ1是否能够有效将声明式ASP规范嵌入主流面向对象语言(如Java)中,以生成复杂且受约束的数据结构?
  • RQ2如何使ASP求解器与Java的集成更加高效且无缝,最大限度减少外部调用和样板代码?
  • RQ3ASP的功能(如约束满足、优化和解采样)在多大程度上能提升复杂数据结构的开发效率?
  • RQ4与现有命令式或基于约束的测试框架相比,该方法在表达能力和可维护性方面有何优势?
  • RQ5当方法调用依赖于对象状态时,当前集成存在哪些局限性,以及如何缓解这些问题?

主要发现

  • 该方法仅用23行Java与ASP代码的组合,成功生成了满足多种约束(如禁止同类型连接、连通性、边数限制)的复杂网络图。
  • 通过#minimize语句,ASP求解器能够找到最优解(如最小边数),证明了对偏好选择的支持。
  • 该框架支持运行时参数化,允许在不重新编译的情况下使用不同的组件数组和边数限制。
  • 原型实现成功将ASP答案集转换为实际的Java对象,使用对象标识符进行内部表示。
  • 该方法通过声明式地指定其必需不变量,实现了对复杂数据结构(如红-黑树)的快速原型设计与测试。
  • 与KORAT和ALLOY等传统测试框架相比,该方法在表达能力上更具优势,因其支持动态参数和优化,而不仅限于有界穷举生成。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。