图形用户界面胶水代码的反应式合成
1. 示例引入
为了更好地理解相关定义,我们来看一个费用分摊应用程序规范的片段。图形用户界面(GUI)胶水代码需要满足的规范通常包含对环境的假设以及控制器必须履行的保证。
1.1 保证规范
保证部分包含如下规范:
[
\psi_g = G(\text{newTeamButton.click} \to (\neg\text{done} U \text{regTeam.start}) \land (\neg\text{regTeam.terminate} U (\text{regTeam.terminate} \land (\neg\text{done} U \text{updateTeamList}))))
]
此保证表明,每当点击启动新团队的 GUI 按钮时,在控制器将控制权交还给操作系统之前,应启动一个用于注册新团队的线程。注册新团队需要与服务器进行通信,在收到服务器的响应之前,GUI 不应被阻塞,这意味着需要将通信任务卸载到单独的线程中。此外,当该线程最终终止后,在将控制权交还给操作系统之前,应执行一个即时操作 updateTeamList 。这两个操作(启动线程和执行 updateTeamList )都会触发用户编写的后端代码执行。 updateTeamList 操作足够快,在 GUI 上下文中执行不会导致其阻塞,像用于 Android 应用程序的 GUI 框架甚至要求此类更新必须从 GUI(主)线程执行。
1.2 假设规范
仅上述规范是无法实现的,因为
超级会员免费看
订阅专栏 解锁全文
10

被折叠的 条评论
为什么被折叠?



