4. 用例与系统边界
在SysML需求建模中,用例图(Use Case Diagram)承担着一个非常明确的职责:从系统外部视角界定系统边界,并捕获系统对外提供的功能需求。它不关心系统内部如何实现,只回答三个问题:谁在使用系统、系统为这些使用者提供哪些功能、这些功能之间是否存在包含、扩展或泛化关系。对于复杂系统,用例图往往是需求分析的起点,也是后续用例描述、需求追溯和系统上下文建模的输入。
4.1 系统边界:用例图的第一性要素
用例图的核心不是椭圆形的用例,而是系统边界(System Boundary)。边界用矩形框表示,框内是用例,框外是参与者。边界一旦确定,就意味着:框内的一切由系统负责实现,框外的一切由外部环境负责。边界画错,后续所有功能需求都会错位。
例如,在一个“智能温室环境控制系统”中,如果边界包含“温度传感器”,那么传感器采集就是系统内部行为;如果边界不包含传感器,那么传感器就是外部参与者,系统只接收其提供的温度信号。两种画法对应完全不同的需求分配。因此,在画用例图之前,必须先明确系统的职责范围,再决定哪些实体放入框内、哪些作为参与者放在框外。
4.2 参与者:角色而非具体人
参与者(Actor)是系统外部与系统交互的实体,可以是人、外部系统、硬件设备或定时器。参与者是角色,不是具体某个人。例如“温室管理员”是一个参与者角色,张三和李四都可以扮演这个角色。
参与者分为两类:
- 主要参与者:主动发起用例,从中获得业务价值。如“温室管理员”发起“设定温度阈值”。
- 次要参与者:被系统调用以完成用例,如“气象服务接口”为系统提供外部天气数据。
参与者之间可以存在泛化关系。例如“高级管理员”继承“普通管理员”,高级管理员可以执行普通管理员的全部用例,并额外拥有“修改系统参数”用例。泛化用空心三角箭头表示,箭头指向父参与者。
4.3 用例与关系:包含、扩展、泛化
用例(Use Case)表示系统对外提供的一个完整功能,命名通常采用“动词+名词”形式,如“采集环境数据”“触发报警”“生成日报”。用例之间有三种关键关系:
- 包含(Include):一个用例必然使用另一个用例的行为。用虚线箭头加«include»表示,箭头指向被包含用例。例如“触发报警”必然包含“发送通知”。
- 扩展(Extend):一个用例在特定条件下才插入另一个用例的行为。用虚线箭头加«extend»表示,箭头指向被扩展用例。例如“记录异常事件”可以扩展“采集环境数据”,仅在数据超限时执行。
- 泛化(Generalization):子用例继承父用例的行为并可覆盖或增加。用实线空心三角箭头表示,箭头指向父用例。例如“温度报警”和“湿度报警”都泛化自“环境报警”。
参与者与用例之间用关联关系连接,表示该参与者参与该用例。一个参与者可以关联多个用例,一个用例也可以关联多个参与者。
4.4 用例描述:从图到文的落地
用例图只给出功能清单和关系骨架,真正可执行的需求细节必须由用例描述(Use Case Description)承载。一个完整的用例描述通常包含:用例名称、参与者、前置条件、后置条件、基本流、备选流、异常流、业务规则和优先级。
以“触发报警”为例,其基本流可以写为:
- 系统周期读取温度传感器数值。
- 系统将读数与管理员设定的阈值比较。
- 若读数超过阈值上限,系统进入报警状态。
- 系统调用“发送通知”用例,向管理员推送报警信息。
- 系统记录本次报警事件及时间戳。
备选流可以覆盖“传感器读数无效”“通知发送失败”“管理员手动解除报警”等分支。异常流则处理“传感器断线”“网络中断”等故障。用例描述越完整,后续需求追溯和测试用例设计就越有依据。
4.5 需求追溯:用例与需求的映射
在SysML中,用例本身不是需求,但每个用例都应追溯到一条或多条需求。常用做法是建立追溯矩阵,将用例与需求ID、需求描述、验证方法关联起来。例如:
| 用例 | 关联需求ID | 需求描述 | 验证方法 |
|---|---|---|---|
| 采集环境数据 | REQ-001 | 系统应每30秒采集一次温度数据 | 测试 |
| 触发报警 | REQ-002 | 温度超过阈值时应在5秒内报警 | 测试 |
| 发送通知 | REQ-003 | 报警信息应推送至管理员终端 | 演示 |
| 设定阈值 | REQ-004 | 管理员应能设置温度上下限 | 演示 |
| 生成日报 | REQ-005 | 系统应每日生成环境数据日报 | 分析 |
追溯矩阵的价值在于:当需求变更时,可以快速定位受影响的用例;当用例实现后,可以确认每条需求都有对应的功能覆盖。在SysML工具中,这种追溯通常通过«trace»或«satisfy»关系在模型层面表达。
4.6 从用例到系统上下文
用例图的最终产出是系统上下文(System Context)。上下文图把系统视为一个黑盒,明确系统与外部参与者之间的接口和交互流。用例图中的每个参与者与系统的关联,都对应上下文中的一条外部接口。
例如,温室控制系统的上下文包括:管理员通过人机界面下发阈值和接收报警;温度传感器通过信号线向系统提供温度读数;气象服务接口通过HTTP向系统提供外部天气数据。这些接口在后续的块定义图(BDD)和内部块图(IBD)中会被进一步细化成端口、流属性和接口块。
用例图不是孤立的图,而是需求建模链条中的第一环。它向上承接利益相关者需求,向下驱动用例描述、需求追溯和系统上下文建模。掌握用例图的边界、参与者、关系和描述方法,是SysML需求工程中不可跳过的基本功。