图的分类
软件方法学中经常会用到的图表种类繁多,不同的方法学(如瀑布模型、敏捷开发、统一过程等)和不同的开发阶段可能会侧重使用不同的图表。然而,有一些核心图表是各种方法学中都比较常见和重要的:
1. 用于需求分析和建模:
- 用例图 (Use Case Diagram): (UML)
- 用途: 描述系统的功能需求,展示用户(参与者)如何与系统交互以完成特定的目标。
- 包含元素: 参与者 (Actor)、用例 (Use Case)、关联关系 (Association)、包含关系 (Include)、扩展关系 (Extend)。
- 用户故事地图 (User Story Map): (敏捷开发)
- 用途: 可视化用户故事,组织和优先排序产品Backlog,帮助团队理解用户旅程和系统功能范围。
- 包含元素: 用户目标 (User Goals/Activities)、用户故事 (User Stories)、发布计划 (Releases)。
- 活动图 (Activity Diagram): (UML)
- 用途: 描述业务流程、工作流程或系统内部的控制流。
- 包含元素: 活动 (Activity)、动作 (Action)、初始节点 (Initial Node)、终止节点 (Final Node)、决策节点 (Decision Node)、合并节点 (Merge Node)、分支 (Fork)、汇合 (Join)、泳道 (Swimlane)。
- 状态图 (State Machine Diagram): (UML)
- 用途: 描述单个对象在其生命周期内可能经历的状态以及状态之间的转换。
- 包含元素: 状态 (State)、初始状态 (Initial State)、终止状态 (Final State)、转换 (Transition)、触发事件 (Trigger)、监护条件 (Guard Condition)。
- 类图 (Class Diagram): (UML)
- 用途: 描述系统的静态结构,展示类、接口、它们之间的关系(关联、继承、依赖、聚合、组合)以及类的属性和操作。
- 包含元素: 类 (Class)、接口 (Interface)、属性 (Attribute)、操作 (Operation)、关系 (Relationship)。
- 对象图 (Object Diagram): (UML)
- 用途: 展示在特定时间点系统中的一组对象及其之间的关系,是类图的一个实例。
- 数据流图 (Data Flow Diagram - DFD): (结构化分析与设计)
- 用途: 描述系统中数据的流动、处理过程、数据存储和外部实体。
- 包含元素: 外部实体 (External Entity)、过程 (Process)、数据流 (Data Flow)、数据存储 (Data Store)。
- 实体关系图 (Entity-Relationship Diagram - ERD): (数据库设计)
- 用途: 描述系统中的实体、实体之间的关系以及实体的属性,主要用于数据库建模。
- 包含元素: 实体 (Entity)、属性 (Attribute)、关系 (Relationship)。
2. 用于设计和架构:
- 组件图 (Component Diagram): (UML)
- 用途: 描述系统的模块化结构,展示组件、接口以及它们之间的依赖关系。
- 包含元素: 组件 (Component)、接口 (Interface)、端口 (Port)、连接器 (Connector)。
- 部署图 (Deployment Diagram): (UML)
- 用途: 描述软件系统在物理硬件上的部署结构,展示节点(服务器、设备等)以及运行在这些节点上的组件。
- 包含元素: 节点 (Node)、组件实例 (Component Instance)、连接 (Connection)。
- 架构图 (Architecture Diagram): (非 UML,但常用)
- 用途: 以高层次概览系统的主要组成部分、它们之间的关系以及关键的设计决策。没有固定的符号,可以根据需要自定义。
- 时序图 (Sequence Diagram): (UML)
- 用途: 描述对象之间随时间发生的交互顺序,强调消息传递的时间顺序。
- 包含元素: 对象 (Object)、生命线 (Lifeline)、消息 (Message)、激活期 (Activation)。
- 通信图 (Communication Diagram) / 协作图 (Collaboration Diagram): (UML)
- 用途: 类似于时序图,但更侧重于对象之间的结构关系以及消息传递。
- 包含元素: 对象 (Object)、链接 (Link)、消息 (Message)。
3. 用于项目管理和跟踪:
- 甘特图 (Gantt Chart):
- 用途: 以时间为轴,展示项目任务的开始时间、结束时间、持续时间和依赖关系,用于项目计划和进度跟踪。
- 包含元素: 任务 (Task)、持续时间 (Duration)、开始时间 (Start Date)、结束时间 (End Date)、依赖关系 (Dependencies)。
- 燃尽图 (Burn-down Chart): (敏捷开发)
- 用途: 可视化剩余工作量随时间的变化趋势,用于跟踪Sprint或发布进度。
- 包含元素: 剩余工作量 (Remaining Work)、时间 (Time)、理想进度线 (Ideal Line)。
- 看板 (Kanban Board): (敏捷开发)
- 用途: 可视化工作流,展示任务在不同状态之间的流转,帮助团队管理工作和识别瓶颈。
- 包含元素: 列 (Columns - 代表工作流状态)、卡片 (Cards - 代表任务)。
选择使用哪些图表取决于:
- 所采用的软件方法学: 不同的方法学有其偏好的建模工具和图表。
- 项目的规模和复杂性: 大型复杂项目可能需要更多种类的图表来清晰地表达各个方面。
- 团队的熟悉程度: 团队成员对特定图表的理解和使用能力也会影响选择。
- 沟通的需求: 图表是重要的沟通工具,需要选择能够清晰有效地传达信息的图表。
总而言之,软件方法学中常用的图表是帮助团队理解、分析、设计、构建和管理软件系统的强大工具。
UML(统一建模语言)提供了多种图表,用于从不同视角描述软件系统的结构和行为。这些图可以帮助开发人员、设计师和项目经理更好地理解、沟通和记录系统的各个方面。
根据UML 2.x规范,主要的UML图可以分为两大类:结构图 (Structure Diagrams) 和 行为图 (Behavior Diagrams)。
结构图 (Structure Diagrams)
结构图强调系统的静态组成和它们之间的关系。它们展示了系统的不同组成部分是如何组织和连接的。主要的结构图包括:
-
类图 (Class Diagram): 这是最常用也是最重要的UML图之一。它描述了系统中的类、接口、它们之间的关系(如关联、继承、依赖等)以及类的属性和操作。
-
对象图 (Object Diagram): 对象图是类图的一个实例,展示了在某个特定时间点系统中的一组对象以及它们之间的关系。它用于验证类图的正确性。
-
组件图 (Component Diagram): 组件图描述了系统的模块化结构,展示了软件组件、它们的接口以及它们之间的依赖关系。它有助于理解系统的组织和可重用性。
-
部署图 (Deployment Diagram): 部署图展示了软件系统在物理硬件上的部署结构,包括节点(如服务器、设备)以及运行在这些节点上的组件和工件。
-
包图 (Package Diagram): 包图用于组织模型元素(如类、组件、用例等)到逻辑组(包)中,并展示包之间的依赖关系。它有助于管理大型复杂系统。
-
复合结构图 (Composite Structure Diagram): 复合结构图更详细地描述了类的内部结构,包括其部件 (parts) 和端口 (ports),以及它们之间的连接。
-
轮廓图 (Profile Diagram): 轮廓图提供了一种扩展UML语言机制的方式,允许用户自定义UML元素,以便为特定的领域或平台建模。
行为图 (Behavior Diagrams)
行为图强调系统的动态方面,描述系统如何响应内部和外部事件而改变其状态和行为。主要的行为图包括:
-
用例图 (Use Case Diagram): 用例图从用户的角度描述系统的功能需求。它展示了参与者(用户或外部系统)如何与系统交互以完成特定的目标(用例)。
-
活动图 (Activity Diagram): 活动图描述业务流程、工作流程或系统内部的控制流。它类似于流程图,但更强大,可以表示并行活动、决策点和分支等。
-
状态图 (State Machine Diagram): 状态图描述单个对象在其生命周期内可能经历的状态以及状态之间的转换,通常由事件触发。
-
交互图 (Interaction Diagrams): 交互图是行为图的一个子类,专注于对象之间的交互和消息传递。UML 2.x 定义了以下几种交互图:
- 时序图 (Sequence Diagram): 时序图以时间为轴,描述对象之间消息传递的顺序。它清晰地展示了对象间的交互以及消息的发送和接收时间。
- 通信图 (Communication Diagram) (以前称为协作图 Collaboration Diagram): 通信图侧重于对象之间的结构关系以及它们之间发送的消息。消息的顺序通过编号表示。
- 交互概览图 (Interaction Overview Diagram): 交互概览图是活动图和时序图(或其他交互图)的混合,用于高层次地概览复杂的交互场景。
- 时序图 (Timing Diagram): 时序图更精确地描述了对象状态随时间变化以及时间约束。
浙公网安备 33010602011771号