PRISM 文档编写规范
引言
在PRISM概率模型检查器的使用过程中,良好的文档编写规范是保证模型可维护性和团队协作效率的关键。本文将介绍如何为PRISM模型(.prism
文件)编写结构化、易读的文档,包括注释规范、模块化设计和版本控制等实践。
基础注释规范
1. 文件头注释
每个PRISM文件开头应包含元信息注释块:
// =============================================
// Model: 无线传感器网络能耗分析
// Author: 张三
// Date: 2023-10-15
// Version: 1.0
// Description: 分析不同休眠策略下的能耗分布
// =============================================
2. 模块注释
为每个模块添加功能说明:
/**
* 传感器节点模块
* 状态:
* - sleep: 低功耗休眠状态
* - active: 数据采集/传输状态
* 转换条件:
* - 定时唤醒 (sleep → active)
* - 能量耗尽 (active → dead)
*/
module SensorNode
// 状态定义
state : [0..2] init 0; // 0=sleep, 1=active, 2=dead
...
endmodule
3. 行内注释
对复杂逻辑添加右侧注释:
[] state=0 -> 0.7:(state'=1) + 0.3:(state'=0); // 70%概率唤醒,30%保持休眠
注释原则
- 使用
//
进行单行注释 - 使用
/** */
进行多行文档注释 - 避免无意义的重复注释
结构化编码规范
1. 模块组织
推荐按以下顺序组织PRISM文件:
- 常量定义
- 全局变量
- 公式定义
- 模块定义
- 奖励结构
- 属性规范
// 1. 常量
const int MAX_ENERGY = 100;
// 2. 全局变量
global energy : [0..MAX_ENERGY];
// 3. 公式
formula is_critical = (energy < 10);
// 4. 模块
module Node
// ...
endmodule
// 5. 奖励
rewards "energy_consumption"
[action] true : 0.5;
endrewards
// 6. 属性
P>=0.95 [ F<=100 energy=0 ]
2. 命名约定
元素类型 | 命名风格 | 示例 |
---|---|---|
模块 | PascalCase | SensorNetwork |
变量 | snake_case | battery_level |
常量 | UPPER_SNAKE | MAX_RETRY |
公式 | camelCase | isCriticalMode |