`
t19850
  • 浏览: 3173 次
  • 性别: Icon_minigender_1
  • 来自: 大连
最近访客 更多访客>>
社区版块
存档分类
最新评论

Use Case 中 include 与 extend 的区别

阅读更多
 
最近上论坛,看到在争论 Use Case 中 includeextend 的区别。其实这两者是很容易区分的。

include 是指用例中的包含关系,通常发生在多个用例中,有可以提取出来的公共部分(就象提取公因式一样),例如 UseCaseA 中包括了 a 和 b 两个流程,而 UseCaseC 中包含了 c 和 b 两个流程。为了提高复用性,可以把 b 提取出来,形成另一个用例 UseCaseB,此时,UseCaseA include UseCaseB(表现为一条指向 UseCaseB 的虚线,箭头在 UseCaseB 侧),UseCaseC 也 include UseCaseB。因而,当有 include 关系时,被 include 的用例通常会被两个以上的其他用例 include(否则就不需要重用,也就不需要提取出来了),用例图如下:



在 include 关系中,“UseCaseA 和 UseCaseC 知道 UseCaseB 的存在,而 UseCaseB 根本不知道有 UseCaseA 和 UseCaseC);

extend 则恰好相反。假设 UseCaseA 的功能描述为“发送一条通知”,可是,发送通知的方式可能有许多种,例如通过邮件发送、通过短信发送等。在需求分析阶段,可能无法明确到底有多少种方式,在用例分析阶段,UseCaseA 需要留出扩展接口,然后把已知的发送方式作为扩展用例给出,例如 UseCaseB 是“通过短信发送”,而 UseCaseC 是“通过邮件发送”,此时,UseCaseB 和 UseCaseC extend 了 UseCaseA,表现为两根虚线,箭头指向 UseCaseA,用例图如下:



在 extend 关系中,UseCaseA 不知道 UseCaseB 和 UseCaseC 的存在,但 UseCaseB 和 UseCaseC 却是知道 UseCaseA 并且知道如何在 UseCaseA 中作扩展的。

另:在用例图中,有时会看到两个用例之间有依赖关系(表现为一条单向或双向的实线),这是错误的,说明用例没有提纯。



也许有人会问“如果两个用例之间,一个要调用另一个时,怎么办?”(有可能是混淆了用例和模块的关系),那么,首先要区分概念,用例就是用例,用例不是模块,也不是组件(虽然一个用例能发展成为“一个或多个”模块或组件);其次,从用例分析的角度来看,如果用例 A 确实要调用到用例 B,那么,可以进一步分析:A 是调用了 B 的所有流程呢,还是其中一部分流程?
(1)如果是调用了一部分,此时可以把 B 中的那部分流程提取出来,形成用例 C,然后 A 和 B 都 include C;
(2)如果是调用了所有流程,那么,A 直接 include B 即可;
(3)如果 A 没有调用 B 中的任何流程……faint,那还画那条代表依赖的实线干嘛?
分享到:
评论

相关推荐

    UML用例图之泛化(generalization)、扩展(extend)和包含(include)关系

    在画用例图的时候,理清用例之间的...用例图的4个基本组件:参与者(Actor)、用例(UseCase)、关系(Relationship)和系统。泛化(generalization):泛化关系是一种继承关系,子用例将继承基用例的所有行为,关系和通信关系

    【UML】用例图+活动图+include与extend的区别

    在这个主题中,我们将深入探讨三个核心概念:用例图、活动图以及在UML中的`include`和`extend`关系。** **1. 用例图(Use Case Diagram)** 用例图是UML中最基础的图之一,用于描绘系统与用户或外部实体之间的交互...

    UseCase Diagram.rar

    通过分析"UseCase Diagram.rar"中的类图,我们可以清晰地理解系统中各组件的结构和相互作用。 在课程设计中,用例图和类图是不可或缺的工具。用例图帮助我们从宏观角度把握系统的功能需求,明确用户需求和系统边界...

    USE CASE入门与实例.pdf

    文件标题表明文档是关于“USE CASE入门与实例”,USE CASE(用例)是一种分析技术,它被广泛用于软件开发领域,特别是在面向对象分析和设计(OOAD)以及统一建模语言(UML)中。用例用来描述系统如何响应外部或内部...

    uml use case 订餐系统

    此外,UML用例图还可以包含扩展用例(extend)和包含用例(include),用来描述更复杂的逻辑。例如,“创建订单”可能包含“选择优惠券”这个子用例,而“查看菜单”可能在某些情况下被“搜索菜品”扩展。 在实际...

    Writing.Effective.Use.Case.pdf

    解决方案:通过分解大用例为多个小用例,或者使用扩展关系(extend)和包含关系(include)来简化结构。 - **挑战3:难以维持一致性** 解决方案:建立一套统一的用例模板,并定期对用例文档进行审核,确保遵循...

    Aspect.Oriented.Software.Development.with.Use.Cases [chm]

    The authors show how to identify, design, implement, test, and refactor use-case modules, as well as extend them. They also demonstrate how to design use-case modules with the Unified Modeling ...

    Uml Case Class 流程图

    **用例图(Use Case Diagram)**是UML中的一个关键元素,它主要用来展示系统外部参与者(Actors)与系统提供的功能(Use Cases)之间的关系。通过用例图,我们可以理解系统的核心业务流程和用户的主要交互。在设计用...

    Patterns_for_Effective_Use_Cases

    用例(Use Case)是敏捷开发和面向对象设计中的一个重要概念,它用于描述系统与用户或其他系统之间的交互行为,以及系统如何响应这些交互来达成特定的目标。这本书详细阐述了如何编写和使用有效的用例,以提高软件...

    Rational Rose 入门到精通

    通过“Association”或“Include/Extend”关系,你可以表达Use Case之间的复杂性。 3. **定义Use Case细节**:右键单击Use Case,在弹出菜单中选择“Open Editor”,以输入Use Case的描述、预条件、后条件和主要...

    Designing Software Product Lines with UML: From Use Cases to Pattern-Based Software Architectures(2)

    specific model. <br>Key topics include: <br>Software product line engineering process, which extends the Unified Development Software Process to address software product lines <br>Use case ...

    JUDE 中文帮助文档PPT形式(非常详细)

    - **用户案例图(Use Case Diagram)**:介绍如何创建演员(Actors)、使用案例(Use Cases)和它们之间的连接线,包括`Extend`和`Include`关系的使用。 - **类图教学(Class Diagram)**:学习如何定义类、接口及其关系...

    JUDE UML 建模工具中文文档

    - **用例图(Use Case Diagram)**:描绘了系统与外部参与者(Actor)之间的交互,以及用例(Use Case)的结构。 - **活动图(Activity Diagram)**:模拟系统的动态过程,表示任务的流程和决策。 - **序列图(Sequence ...

    Jude中文使用教程

    在Use Case Diagram中,你需要了解以下几个核心概念: - **演员 (Actor)**: 表示与系统交互的角色,不一定是指具体的人。 - **用例 (Use Case)**: 描述系统如何处理的特定场景。 - **连接线**: 连接演员和用例,...

    ATM.use.case.diagram.design.documents.rar_atm

    本文档将深入探讨ATM系统的用例图设计,这是软件开发过程中的重要部分,用于描绘系统参与者与系统功能之间的交互。 首先,我们要理解什么是用例图。用例图是统一建模语言(UML)的一种图表,用于描述系统中用户或...

    系统分析师UML用例实战,系统分析师uml用例实战在线阅读

    用例图中包括参与者(Actor)、用例(Use Case)和关系(Association、Inheritance、Include、Extend)。参与者代表了与系统交互的外部实体,可以是人、硬件设备或其他系统。用例则表示了参与者可能执行的交互活动。...

    EA建模入门.docx

    新建元素,用例模型元素包括业务执行者(Actor)、业务用例(Use Case),在本例中新建了业务执行者包括采油工、调度指挥等;业务用例包括巡井踏查、故障申报等。 画用例图,点击图标,打开用例模型图板(Use Case ...

    《软件工程》实验指导书.pdf

    边界构件代表与外部实体交互的接口,控制构件负责控制流程,而实体构件表示了系统中的关键数据。 9. Rose Logical View, New Class diagram 逻辑视图(Logical View)和类图(Class diagram)是Rational Rose ...

    软件工程实验教案名师优质课赛课一等奖市公开课获奖课件.pptx

    【软件工程实验教案】主要涉及的是软件开发过程中的一个重要阶段——需求分析,特别是如何通过建立用例图(Use Case Diagram)来清晰地表述系统的需求。用例图是UML(统一建模语言)中的一种图形表示,用于描述系统...

    UML学习&复习手册文档

    用例图是UML中用于描绘系统功能的主要工具,它描述了系统外部角色(actors)与系统提供的服务(use cases)之间的关系。在空间入侵者小游戏的例子中,我们可以看到以下几个用例和参与者: - **参与者(Actor)**: ...

Global site tag (gtag.js) - Google Analytics