Page 10 - 《软件学报》2025年第4期
P. 10
1416 软件学报 2025 年第 36 卷第 4 期
初始化灯光单元和空调设备; 自动存储需求要求软件从亮度传感器获取环境亮度信息, 根据预先设置的灯光控制
规则, 将开灯或关灯指令保存至灯光命令数据存储中; 命令存储需求用来接收脉冲生成器发出的开关灯命令, 并将
开灯或关灯指令保存至灯光命令数据存储中; 灯光单元控制输出需求负责将灯光命令数据存储中的开关灯指令转
换为信号并发给灯光单元, 用来实现对灯光单元的开关控制; 温度控制需求要求软件从温度传感器获取环境温度
信息, 根据预先设置的空调控制规则, 将制冷或制热指令保存至空调命令数据存储中; 空调控制输出需求负责将空
调命令数据存储中的空调操作指令转换为信号并发给空调设备, 用来实现对空调的制冷/制热控制.
2.2 问题图和情景图
问题图 [32] 是问题框架方法中需求描述的结果, 用领域 (domain)、需求 (requirement) 和交互 (interaction) 来对
问题进行表达. 其中, 领域可分为机器领域 (machine domain) 和问题领域 (problem domain), 机器领域就是待构建
的软件系统, 用双竖线矩形框表示, 问题领域指与软件系统存在交互的外部实体. 根据外部实体的特性, 又可将问
题领域分为因果领域、词法领域和自主领域. 因果领域指领域现象之间存在可预测的因果关系, 如受控设备. 词法
领域指数据的物理存储, 如数据库. 自主领域的行为现象无法准确预测, 例如人类. 在问题图中, 因果领域和自主领
为控制节点与交互节点, 其中控制节点包括开始节点
域用矩形框表示, 词法领域用单竖线矩形框表示. 机器领域与问题领域之间的交互称为行为交互, 用五元组<Id,
Ini, Rec, Phe, Typ> 表示, 其中, Id 代表交互编号, Ini 代表交互的发起方, Rec 代表交互的接收方 (可为空集), Phe 代
表交互现象, Typ 代表现象类型, 包括事件 (event)、状态 (state) 和值 (value). 此外, 问题图用虚线椭圆表达需求、
需求对问题领域现象的引用或约束. 需求引用 (reference) 表示需求仅仅“提到”现象, 而需求约束 (constraint) 则表
示要要求该现象发生. 需求引用用无箭头虚线表示, 需求约束用带箭头虚线表示. 需求引用或约束上的交互称为期
望交互, 表示与行为交互相同.
图 1(a) 是一个问题图例子, 该例子来自智能家居领域. 灯光单元控制输出需求要求软件从词法领域灯光命令
获取存储的灯光开关指令, 然后将指令转换为脉冲发给灯光单元. 其中, 控制输出 (control output) 是待开发的软件,
灯光单元属于因果领域, 灯光命令属于词法领域. 图中有 4 个行为交互 int 24 –int 27 、4 个期望交互 int 20 –int 23 . 需求
控制输出引用灯光命令领域, 约束灯光单元领域.
int 26 , int 27 Light unit
int 22 , int 23
LU control (LU)
output C LU control
(LUCO) output
Light
command (LC) int 20 , int 21
int 24 , int 25 int 25 int 24 int 20 int 21
int 20 :<LC, LUCO, OpenInstruction>[instruction]
int 21 :<LC, LUCO, CloseInstruction>[instruction] int 27 int 26 int 22 int 23
int 22 :<LU, ——, LUOn>[state]
int 23 :<LU, ——, LUOff >[state]
int 24 :<LUCO, LC, OpenInstructionLoadIns>[event]
int 25 :<LUCO, LC, CloseInstructionLoadIns>[event]
int 26 :<LUCO, LU, LUOnPulse>[event] int 27 :<LUCO, LU, LUOffPulse>[event]
(a) 灯光单元控制输出问题图 (b) 灯光单元控制输出情景图
图 1 问题图与情景图例子
情景图 [25] 是交互流, 描述了每个需求下各交互之间的关系, 其基本表示采用活动图的形式. 情景图节点可分
(实心圆)、结束节点 (圆环)、决策节点 (菱形)、分支节点
(短线)、合并节点 (菱形)、延时节点 (沙漏型)、指定时间节点 (沙漏型). 交互节点包括行为交互节点 (实线边框圆
角矩形) 与期望交互节点 (虚线边框圆角矩形). 例如图 1(b) 中的 int 24 –int 2 为行为交互节点, int 20 –int 2 为期望交互
3
7
节点. 情景图边可分为行为序关系、期望序关系、行为使能关系、需求期望关系、同步关系. 其中, 行为序关系表
示行为交互节点之间或行为交互节点与控制节点之间的先序关系, 用行为交互节点/控制节点指向行为交互节点/
控制节点的实线箭头表示, 如图 1(b) 中 int 2 与 5 int 2 之间的关系. 期望序关系表示期望交互节点之间或期望交互
7
节点与控制节点之间的先序关系, 用期望交互节点/控制节点指向期望交互节点/控制节点的虚线箭头表示, 如图 1(b)