计算机科学>编程语言
职务: 生存状态:事件驱动协议和回调控制流(扩展版)
摘要: 众所周知,针对事件驱动的软件框架(如Android)开发交互式应用程序(app)非常困难。 要创建行为符合预期的应用程序,开发人员必须遵循复杂且通常是隐式的异步编程协议。 此类协议将从框架接收控制的回调的正确注册与相应的应用程序编程接口(API)调用交织在一起,反过来又会影响未来可能的回调集。 例如,应用程序在框架状态下调用特定API方法时违反了协议,而这种调用是无效的。 使自动推理在这个领域变得困难的主要原因是,使针对此类框架的编程应用程序变得困难:协议的规范不明确,控制流是复杂的、异步的和高阶的。 在本文中,我们解决了指定和建模事件驱动的应用程序编程协议的问题。 特别是,我们形式化了一个核心元模型,它捕获了事件驱动框架和应用程序回调之间的对话。 基于此元模型,我们定义了一种称为lifestate的语言,该语言允许对应用程序编程协议和事件驱动框架施加的回调控制流进行精确而正式的描述。 Lifestate将应用程序回调对框架的期望建模与指定应用程序在调用框架时必须遵守的规则相统一。通过这种方式,我们有效地结合了生命周期约束和类型状态规则。 为了评估生命状态建模的有效性,我们提供了一种动态验证算法,该算法将应用程序的执行跟踪和生命状态协议规范作为输入,以生成见证协议违反的跟踪或证明没有此类跟踪是可实现的。