一、 UML中 《include》 与 《extend》 的核心区别在 UML 用例图中include包含和extend扩展是两个非常容易混淆的关系。它们的核心区别在于include是“必须执行”的而extend是“条件触发”的。我们可以通过以下几个维度来清晰地拆解它们的区别1. 核心定义与执行条件include包含表示强制性。基用例Base Use Case在执行时必须无条件地包含并执行被包含的用例。如果不执行被包含用例基用例就无法完整实现其功能。extend扩展表示可选性。扩展用例Extending Use Case只有在满足特定条件扩展点 Extension Point时才会插入到基用例中执行。基用例本身是完整的扩展只是“锦上添花”或“异常处理”。2. 箭头的方向极易画错include箭头从基用例指向被包含用例Base - Included。可以理解为基用例“调用”了子用例。extend箭头从扩展用例指向基用例Extending - Base。可以理解为扩展用例“挂载”到了基用例上。3. 生活中的通俗比喻include包含就像“去银行取钱”和“验证密码”。你每次去取钱都必须经过“验证密码”这个步骤。取钱基用例包含了验证密码被包含用例。extend扩展就像“去餐厅吃饭”和“要求打包”。你正常吃完饭就结束了基用例完整。只有在“吃不完”这个特定条件下才会触发“要求打包”扩展用例。4. 常见应用场景什么时候用include提取公共步骤当多个用例都有相同的步骤时如登录验证、日志记录、数据库连接将其提取为一个独立用例其他用例通过include调用它避免重复画图。什么时候用extend处理异常流程如“支付失败时的退款处理”。可选功能/附加功能如“网购下单”时可选的“使用优惠券”或“购买运费险”。5. 核心对比总结表表格对比维度include(包含)extend(扩展)执行性质必须执行无条件可选执行满足特定条件才触发箭头方向基用例 ➡️ 被包含用例扩展用例 ➡️ 基用例对基用例的影响基用例是不完整的依赖它基用例是完整的扩展只是附加主要目的提取公共行为减少重复增加可选行为处理异常或分支二、 UML术语与日常汉语语境的碰撞与区别在日常汉语中“包含”和“扩展”往往带有集合、整体与部分的意味。但在UML建模中我们必须剥离这些日常语义回归软件工程的流程逻辑。“在日常汉语语境中概念 B 可能被视为概念 A 的组成部分但在 UML 用例建模中若概念 B 所代表的用例仅在特定条件满足时才会作为附加或异常流程被触发执行且基用例 A 本身具备独立完整的业务闭环则两者之间构成 UML 术语中的extend扩展关系。”1. 汉语的“包含” vs UML的 《include》日常汉语的“包含”侧重于整体与部分的关系集合概念。比如“微信APP”包含了“微信运动”功能从语义上讲使用微信确实涵盖了使用微信运动。UML的 《include》侧重于流程与步骤的强绑定。它指的是“执行A这个动作时必须顺带执行B这个动作”。语境碰撞虽然“微信”在汉语上包含了“微信运动”但在业务流程上你打开微信聊天并不“必须”触发微信运动的计步逻辑。因此它们绝不是UML中的《include》关系。2. 日常汉语的“扩展” vs UML的 《extend》日常汉语的“扩展”侧重于范围变大、内容增多。比如“微信增加了微信运动功能”我们说微信的功能被扩展了。UML的 《extend》侧重于主干与分支的条件触发。它指的是“在执行A的过程中如果满足某个条件才会横向插入B”。语境碰撞在UML中扩展用例并不是基用例的“子集”它更像是一个独立的“插件”。三、 总结如何建立正确的UML思维要准确区分UML中的 《include》 和 《extend》我们需要建立以下思维模型剥离日常语义不要把UML的“包含”等同于汉语的“包含”也不要把UML的“扩展”等同于汉语的“扩展”。关注业务流程UML描述的是动态的执行逻辑而不是静态的功能归属。灵魂拷问问自己“B是不是A必须经过的步骤” ️ 如果是画 《include》箭头从A指向B。问自己“B是不是A在某种特定条件下才会触发的附加/异常步骤” ️ 如果是画 《extend》箭头从B指向A。语言的魅力在于其多义性同一个词在文学里是修辞在工程里则是严谨的规则。理清UML术语与日常汉语的边界是迈向专业软件需求建模的第一步。
# Autofac 完整详解 + 全部注册方式实战案例 Autofac 完整详解 全部注册方式实战案例 一、Autofac 核心概述 1. 什么是 Autofac Autofac 是 .NET 生态最灵活、功能最全的依赖注入DI容器,支持 .NET Framework / .NET Core / .NET 5~8,完美适配控制台、WPF、ASP.NET Core、WinForms。 核心优势&#…
Onekey:3分钟解锁Steam游戏DLC的终极指南 Onekey:3分钟解锁Steam游戏DLC的终极指南 【免费下载链接】Onekey Onekey Steam Depot Manifest Downloader 项目地址: https://gitcode.com/gh_mirrors/one/Onekey 你是否曾经因为Steam游戏DLC价格过高而犹豫不决?或者因为区域限制无法购买心仪的…
2025终极指南:三步免费重置JetBrains IDE试用期,告别30天限制烦恼 2025终极指南:三步免费重置JetBrains IDE试用期,告别30天限制烦恼 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 你是否曾在深夜编码时,IntelliJ IDEA突然弹出试用期到期警告&…
终极指南:如何在《命运2》中实现完美单人游戏体验 终极指南:如何在《命运2》中实现完美单人游戏体验 【免费下载链接】Destiny-2-Solo-Enabler Repo containing the C# and XAML code for the D2SE program. Included is also the dependency for the program, and image asset. 项目地址: https://gitcode.com/gh…
3步掌握wxauto:Windows微信自动化消息处理终极指南 3步掌握wxauto:Windows微信自动化消息处理终极指南 【免费下载链接】wxauto Windows版本微信客户端(非网页版)自动化,可实现简单的发送、接收微信消息,简单微信机器人 项目地址: https://gitcode.com/gh_mirrors/wx/…
网盘直链下载助手完整指南:告别限速困扰,轻松获取真实下载地址 网盘直链下载助手完整指南:告别限速困扰,轻松获取真实下载地址 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / …
微信聊天记录永久保存难题的终极解决方案:WeChatMsg完整指南 微信聊天记录永久保存难题的终极解决方案:WeChatMsg完整指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we…
Windows系统隐藏工具:10年老用户都不知道的优化神器 1. Windows系统隐藏工具揭秘:10年老用户都不知道的"系统手术刀" 作为一名长期与Windows系统打交道的IT从业者,我最近偶然发现了一个被大多数用户忽略的系统内置神器。这个工具就像外科医生的手术刀一样精准,能够深度清理系统冗余、…
如何完整备份微信聊天记录:WeChatMsg终极数据保存指南 如何完整备份微信聊天记录:WeChatMsg终极数据保存指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeCha…
从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则 更多请点击: https://kaifayun.com 第一章:从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则 在Claude驱动的产品需求文档(PRD)生成实践中,原始业务意图往往以自然语言片…
Cursor配置生成失效?3大隐藏陷阱+4行修复代码,资深工程师连夜整理的紧急补救清单 更多请点击: https://codechina.net 第一章:Cursor配置生成失效?3大隐藏陷阱4行修复代码,资深工程师连夜整理的紧急补救清单 Cursor 配置生成突然失效,是近期高频报障场景。表面看是 cursor.config.json 未更新或 LSP…
某智驾大牛创业 作者:钟声编辑:Mark出品:红色星际头图:智能驾驶图片据悉,国内某头部智驾公司端到端模型技术大牛Z投身创业,并且已经拿到融资。Z不仅是该头部公司内部最年轻的对标阿里P10级别技术负责⼈,更是业内…
PlantUML 实战:5分钟将 UML 2.5 序列图转换为可执行代码草图 PlantUML 实战:5分钟将 UML 2.5 序列图转换为可执行代码草图 在软件开发过程中,清晰的系统设计往往比编码本身更为关键。传统拖拽式UML工具虽然直观,却常常成为效率杀手——频繁的鼠标操作打断设计思路,版本控制困难,…
【RT-DETR涨点改进】29 动态Batch推理:让RT-DETR在低延迟下吃满GPU算力 29 动态Batch推理:让RT-DETR在低延迟下吃满GPU算力 开篇故事 上个月帮一家安防厂商做项目优化,他们用RT-DETR做实时人流统计,部署在NVIDIA A10上。客户反馈说:“GPU利用率才30%,但延迟已经飙到40ms了,加人流量就丢帧。” 我远程一看,好家伙——生产环境里每个请求单独…
Postman 环境变量实战:3种动态设置方法与CI/CD集成避坑指南 Postman 环境变量高阶实战:动态管理与 CI/CD 深度集成在接口自动化测试领域,环境变量的灵活运用往往成为区分初级与高级测试工程师的关键能力。本文将深入探讨 Postman 环境变量的三种动态设置模式,并分享 Newman 在 CI/CD 流水线中的实战避坑…
[C++]内存管理:串顺序存储的内存回收 在串(字符串)的顺序存储中,内存回收的方式取决于字符串的存储方式以及所使用的编程语言和相关库。以下以 C 为例进行说明,因为 C 对内存管理有较为直接的控制。 1. 基于 char 数组的串顺序存储 如果使用普通的 char 数组来存储字…
移动端游戏功耗测试实战:电流、功率、亮度和场景对比 移动端游戏功耗测试:先控制变量,再比较优化是否真的省电 摘要:功耗测试最容易犯的错误,是拿两次不同温度、不同亮度、不同场景的平均功率直接比较。本文给出一套可复现的游戏功耗测试方法,覆盖引擎特性验证、版本回归和黑盒体验测试,并说明如何把功耗与帧率、温控、CPU/G…
足球口袋教练 HarmonyOS 离线应用实战(03/20):ArkUI 首页仪表盘搭建 本文是“足球口袋教练 HarmonyOS 离线应用实战”系列第 3 篇。示例项目是一个 HarmonyOS / ArkTS / ArkUI 编写的离线足球训练助手,围绕真实页面、真实截图和可复现操作展开。 本篇要解决的问题 训练 App 的首页不能只展示欢迎语,它要解决“我现在该点哪…