IIWAB

SysML 7种需求关系

IIWAB 2月前 ⋅ 190 阅读

SysML v1 标准7种需求关系(图例+定义+方向+适用场景)

SysML 需求图规定7种标准需求关联关系Containment(包含)、Trace(跟踪)、DeriveReqt(衍生需求)、Refine(细化/精炼)、Satisfy(满足)、Verify(验证)、Copy(复制)。 除「包含」是组合聚合,其余6种均为带构造型<>的虚线依赖(开口空心箭头)

一、Containment 包含关系(层级容器)

图例

  1. 图形:实线,父需求端画十字小方块(⊕),子需求无箭头;
  2. 简写标识:父需求内部嵌套子需求(嵌套表示法);
  3. 含义:父需求作为命名空间,只能包含子需求,构成需求分解层级(系统→子系统→部件需求)。

方向

父需求 ←实线包含→ 子需求(子属于父)

示例

顶层系统需求「整车安全」包含子需求「制动安全」「电池防护」。

特点

强层级,删除父则子需求一同移除;不属于依赖,是模型内置聚合。

二、<> 跟踪(通用弱追溯)

图例

虚线 + 空心开口箭头,线上标注构造型 <<trace>>

定义

最通用、最弱的追溯关系:仅表示两者存在关联,无明确业务语义,仅用于跨文档/跨模型兜底关联。

方向

源元素(尾端) ----<>----> 目标元素(箭头) A trace B:A 追溯关联 B,B 修改可能影响 A

适用场景

  • 外部客户文档 ↔ 内部需求
  • 功能需求 ↔ 非功能需求(无明确衍生/细化关系时)

特点

尽量优先用 derive/refine/satisfy/verify,仅无专用关系时使用 trace。

三、<> 衍生需求(派生)

图例

虚线空心箭头,标注 <<deriveReqt>>

定义

仅允许需求 ↔ 需求:从上层/源需求通过分析、分解、推导产生下级派生需求;派生需求是原需求的逻辑推论、分解项。

方向

派生需求 ----<>----> 源需求 A deriveReqt B:A 由 B 推导而来

示例

源需求「车辆最高时速≥120km/h」→ 衍生出「电机峰值功率≥150kW」需求。

与 Refine 区分

derive 仅限需求之间,侧重逻辑推导分解;refine 可跨需求/设计/用例,侧重细节补充说明

四、<> 细化/精炼

图例

虚线空心箭头,标注 <<refine>>

定义

任意模型元素对需求做补充、细化、解释;可用用例、活动图、约束、子需求把抽象需求具体化。

方向

细化元素 ----<>----> 原始需求 A refine B:A 细化、解释 B

示例

用例「紧急刹车流程」refine 高层需求「车辆具备紧急制动能力」。

特点

适用范围最广:需求↔需求、需求↔用例、需求↔约束、需求↔活动。

五、<> 满足(设计实现需求)

图例

虚线空心箭头,标注 <<satisfy>>

定义

设计/实现模型元素(Block、部件、功能)实现、满足某条需求;回答:哪个系统组件落地这条需求

方向

设计部件 ----<>----> 需求 Block X satisfy Req1:部件X满足需求Req1

示例

制动控制器 Block <> 需求「制动响应时间≤200ms」。

链路位置

追溯链路:需求 → satisfy → 架构设计块。

六、<> 验证(测试检验需求)

图例

虚线空心箭头,标注 <<verify>>

定义

测试用例、仿真、检查项用于验证一条需求是否达标;回答:用什么手段检验该需求

方向

测试用例/验证活动 ----<>----> 需求 TestCase T verify ReqA:用例T验证需求A

完整追溯链路

客户需求 → derive → 系统需求 → satisfy → 硬件/软件模块 ← verify ← 测试用例

七、<> 复制需求

图例

虚线空心箭头,标注 <<copy>>

定义

仅需求之间:副本需求完全复用主需求文本与约束,主需求变更副本同步更新;多用于多子系统复用同一规范。

方向

副本需求 ----<>----> 原版主需求 ReqSub copy ReqMaster:ReqSub 复制自主需求ReqMaster

示例

多个车型的「低压供电保护」需求统一复制自平台标准供电需求。

特点

工程使用频率最低;区分于 derive:copy 无推导逻辑,只是原文复用。

7种关系对比速查表

关系名称构造型标识图形样式允许连接对象核心语义
包含 Containment无(内置聚合)实线+父端十字方块需求→子需求层级分解、容器归属
跟踪 Trace<<trace>>虚线空心箭头任意模型元素弱通用关联,兜底追溯
衍生 DeriveReqt<<deriveReqt>>虚线空心箭头需求 ↔ 需求由源需求逻辑推导派生
细化 Refine<<refine>>虚线空心箭头任意模型↔需求补充细节、解释抽象需求
满足 Satisfy<<satisfy>>虚线空心箭头设计块→需求组件实现、落地需求
验证 Verify<<verify>>虚线空心箭头测试用例→需求测试手段校验需求
复制 Copy<<copy>>虚线空心箭头需求 ↔ 需求副本复用原版需求规范

完整标准追溯链路(工程常用)

客户原始需求 <<deriveReqt>> → 系统级需求 <<refine>> → 子系统需求 <<satisfy>> → 软硬件Block组件 <<verify>> ← 测试用例/仿真工况

分两段:

  1. 纯需求层级:包含、deriveReqt、copy
  2. 跨模型追溯:trace、refine、satisfy、verify

二、7种关系图例&语义对照(图内一一对应)

连线代码关系图形特征流向含义
大括号嵌套Containment 包含实线层级容器,无箭头连线父需求包含子需求,层级分解
-..-> : <<deriveReqt>>衍生虚线空心箭头尾部需求 派生自 箭头端源需求
-..-> : <<copy>>复制虚线空心箭头副本需求 复制于 原版标准需求
-..-> : <<trace>>跟踪虚线空心箭头外部文档弱关联需求
-..-> : <<refine>>细化虚线空心箭头用例/活动图 细化解释 抽象需求
-..-> : <<satisfy>>满足虚线空心箭头硬件/软件Block 实现 需求
-..-> : <<verify>>验证虚线空心箭头测试用例 验证 需求指标

三、标准完整追溯链路可视化(文字链路)

外部文档 Doc_Spec <<trace>> → 客户顶层需求 Req_Customer 包含 → 系统需求 Req_Sys <<deriveReqt>> ← 细分指标需求 Req_Sub <<refine>> ← 业务用例 UC_Brake <<satisfy>> ← 硬件组件 BCU <<verify>> ← 测试用例 TC_Brake

四、使用说明

  1. 打开 Mermaid Live Editor / Draw.io 粘贴代码即可渲染完整需求图;
  2. Draw.io 若不原生支持 requirementDiagram,可改用 graph LR 版本(下方备用简化版)

graph LR subgraph Containment包含 R_C[客户需求:整车制动安全] --> R_S[系统需求:制动响应≤200ms] end R_Sub[子需求:控制器延迟≤50ms] -.deriveReqt.-> R_S R_EV[车型低压保护] -.copy.-> R_Sta[平台标准保护需求] Doc[外部规格文档] -.trace.-> R_C UC[紧急制动用例] -.refine.-> R_C BCU[制动控制器Block] -.satisfy.-> R_S TC[制动测试用例] -.verify.-> R_S

全部评论: 0

    我有话说: