4. 用例与系统边界

在SysML需求建模中,用例图(Use Case Diagram)承担着一个非常明确的职责:从系统外部视角界定系统边界,并捕获系统对外提供的功能需求。它不关心系统内部如何实现,只回答三个问题:谁在使用系统、系统为这些使用者提供哪些功能、这些功能之间是否存在包含、扩展或泛化关系。对于复杂系统,用例图往往是需求分析的起点,也是后续用例描述、需求追溯和系统上下文建模的输入。

4.1 系统边界:用例图的第一性要素

用例图的核心不是椭圆形的用例,而是系统边界(System Boundary)。边界用矩形框表示,框内是用例,框外是参与者。边界一旦确定,就意味着:框内的一切由系统负责实现,框外的一切由外部环境负责。边界画错,后续所有功能需求都会错位。

例如,在一个“智能温室环境控制系统”中,如果边界包含“温度传感器”,那么传感器采集就是系统内部行为;如果边界不包含传感器,那么传感器就是外部参与者,系统只接收其提供的温度信号。两种画法对应完全不同的需求分配。因此,在画用例图之前,必须先明确系统的职责范围,再决定哪些实体放入框内、哪些作为参与者放在框外。

4.2 参与者:角色而非具体人

参与者(Actor)是系统外部与系统交互的实体,可以是人、外部系统、硬件设备或定时器。参与者是角色,不是具体某个人。例如“温室管理员”是一个参与者角色,张三和李四都可以扮演这个角色。

参与者分为两类:

  • 主要参与者:主动发起用例,从中获得业务价值。如“温室管理员”发起“设定温度阈值”。
  • 次要参与者:被系统调用以完成用例,如“气象服务接口”为系统提供外部天气数据。

参与者之间可以存在泛化关系。例如“高级管理员”继承“普通管理员”,高级管理员可以执行普通管理员的全部用例,并额外拥有“修改系统参数”用例。泛化用空心三角箭头表示,箭头指向父参与者。

4.3 用例与关系:包含、扩展、泛化

用例(Use Case)表示系统对外提供的一个完整功能,命名通常采用“动词+名词”形式,如“采集环境数据”“触发报警”“生成日报”。用例之间有三种关键关系:

  • 包含(Include):一个用例必然使用另一个用例的行为。用虚线箭头加«include»表示,箭头指向被包含用例。例如“触发报警”必然包含“发送通知”。
  • 扩展(Extend):一个用例在特定条件下才插入另一个用例的行为。用虚线箭头加«extend»表示,箭头指向被扩展用例。例如“记录异常事件”可以扩展“采集环境数据”,仅在数据超限时执行。
  • 泛化(Generalization):子用例继承父用例的行为并可覆盖或增加。用实线空心三角箭头表示,箭头指向父用例。例如“温度报警”和“湿度报警”都泛化自“环境报警”。

参与者与用例之间用关联关系连接,表示该参与者参与该用例。一个参与者可以关联多个用例,一个用例也可以关联多个参与者。

智能温室环境控制系统 温室管理员 温度传感器 气象服务接口 采集环境数据 触发报警 发送通知 设定阈值 记录异常事件 生成日报 «include» «extend» 泛化 关联 «include»/«extend» 泛化 系统边界

4.4 用例描述:从图到文的落地

用例图只给出功能清单和关系骨架,真正可执行的需求细节必须由用例描述(Use Case Description)承载。一个完整的用例描述通常包含:用例名称、参与者、前置条件、后置条件、基本流、备选流、异常流、业务规则和优先级。

以“触发报警”为例,其基本流可以写为:

  1. 系统周期读取温度传感器数值。
  2. 系统将读数与管理员设定的阈值比较。
  3. 若读数超过阈值上限,系统进入报警状态。
  4. 系统调用“发送通知”用例,向管理员推送报警信息。
  5. 系统记录本次报警事件及时间戳。

备选流可以覆盖“传感器读数无效”“通知发送失败”“管理员手动解除报警”等分支。异常流则处理“传感器断线”“网络中断”等故障。用例描述越完整,后续需求追溯和测试用例设计就越有依据。

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需求工程中不可跳过的基本功。