🔍 系统分析与设计

从需求分析到系统设计的完整方法论

分析设计方法概览

系统分析设计核心步骤

🎯

定义问题

问题识别与建模

📋

需求分析

需求工程全过程

🏗️

系统设计

概要与详细设计

🎨

界面设计

用户体验设计

分析设计方法对比

需求工程

需求开发

努力更清晰、更明确地掌握客户对系统的需求

需求捕获

通过各种方式收集用户需求

需求分析

对收集的需求进行分析整理

编写规格说明书

形成正式的需求文档

需求验证

确认需求的正确性和完整性

需求管理

对需求的变化进行管理的过程

定义需求基线

确定需求的基准版本

处理需求变更

管理需求变更流程

需求跟踪

跟踪需求实现状态

需求分类体系

按性质分类

功能需求

系统必须提供的功能和服务

非功能需求

性能、安全、可用性等质量属性

设计约束

技术、环境、标准等限制条件

按层次分类

业务需求

高层次的业务目标和期望

用户需求

用户期望系统提供的服务

系统需求

详细的功能和非功能需求

需求获取方式

📚

收集资料

现有文档、报告、规范等

👥

联合需求计划

召集多部门开会讨论

💬

用户访谈

结构化/非结构化访谈

📝

问卷调查

书面调查收集需求

👀

现场观摩

实地观察业务流程

🎯

业务实践

参与实际业务操作

结构化分析与设计

研究物理环境

硬件环境

服务器、网络、存储

软件环境

操作系统、数据库、中间件

组织环境

人员结构、管理制度

建立逻辑模型

数据流图

业务流程建模

数据字典

数据元素定义

处理规格

业务规则描述

划清人机界限

自动化范围

确定系统边界

人工操作

保留人工环节

接口设计

人机交互界面

结构化分析工具

🔄

数据流图

DFD

📖

数据字典

DD

📝

结构化语言

PDL

📊

判定表

Decision Table

🌳

判定树

Decision Tree

面向对象分析与设计

面向对象方法核心概念

🧱

封装

数据和方法的结合

🧬

继承

类之间的层次关系

🎭

多态

同一接口不同实现

🎯

抽象

忽略细节关注本质

面向对象分析(OOA)

对问题域进行分析,建立基于对象的模型

识别对象和类

从问题域中抽象出对象

定义属性

确定对象的数据特征

定义服务

确定对象的行为特征

识别关系

确定对象间的关联

面向对象设计(OOD)

将分析模型转换为设计模型

细化对象定义

完善类的接口和实现

设计类层次

建立继承和组合关系

设计消息传递

定义对象间的交互

确定可见性

设置访问控制级别

对象识别方法

名词分析法

从需求描述中提取名词作为候选对象

  • • 具体名词 → 对象
  • • 抽象名词 → 类
  • • 动词 → 方法
  • • 形容词 → 属性

用例驱动法

从用例场景中识别参与的对象

  • • 参与者 → 边界对象
  • • 业务实体 → 实体对象
  • • 处理逻辑 → 控制对象
  • • 交互界面 → 界面对象

CRC卡片法

类-职责-协作者卡片分析

  • • Class:类名
  • • Responsibility:职责
  • • Collaborator:协作者
  • • 团队讨论识别

UML统一建模语言

UML 2.0 图形分类

结构图 (Structure Diagrams)

类图 - 类的结构和关系
对象图 - 对象实例关系
组件图 - 组件间依赖
部署图 - 物理部署结构
包图 - 包的组织结构
复合结构图 - 内部结构

行为图 (Behavior Diagrams)

用例图 - 系统功能需求
活动图 - 业务流程建模
状态机图 - 对象状态变化
序列图 - 时间序列交互
通信图 - 对象间消息传递
交互概览图 - 交互流程概览
时序图 - 时间约束交互

用例图 (Use Case Diagram)

描述系统功能需求和用户交互

参与者 (Actor)

与系统交互的外部实体

用例 (Use Case)

系统提供的功能服务

关系

关联、包含、扩展、泛化

类图 (Class Diagram)

描述类的结构和类之间的关系

类 (Class)

属性、方法、可见性

关系

继承、实现、关联、依赖

多重性

1, 0..1, 1..*, 0..*, n..m

序列图 (Sequence Diagram)

描述对象间按时间顺序的交互

生命线

对象的生存期

消息

同步、异步、返回消息

激活

对象执行操作的时间

活动图 (Activity Diagram)

描述业务流程或算法的执行流程

活动

业务处理步骤

控制流

顺序、分支、并行、循环

泳道

责任分工和组织结构

面向对象分析与设计

面向对象方法核心概念

🧱

封装

数据和方法的结合

🧬

继承

类之间的层次关系

🎭

多态

同一接口不同实现

🎯

抽象

忽略细节关注本质

UML 2.0 图形分类

结构图 (Structure Diagrams)

类图 - 类的结构和关系
对象图 - 对象实例关系
组件图 - 组件间依赖
部署图 - 物理部署结构
包图 - 包的组织结构
复合结构图 - 内部结构

行为图 (Behavior Diagrams)

用例图 - 系统功能需求
活动图 - 业务流程建模
状态机图 - 对象状态变化
序列图 - 时间序列交互
通信图 - 对象间消息传递
交互概览图 - 交互流程概览
时序图 - 时间约束交互

用例图 (Use Case Diagram)

描述系统功能需求和用户交互

参与者 (Actor)

与系统交互的外部实体

用例 (Use Case)

系统提供的功能服务

关系

关联、包含、扩展、泛化

类图 (Class Diagram)

描述类的结构和类之间的关系

类 (Class)

属性、方法、可见性

关系

继承、实现、关联、依赖

多重性

1, 0..1, 1..*, 0..*, n..m

序列图 (Sequence Diagram)

描述对象间按时间顺序的交互

生命线

对象的生存期

消息

同步、异步、返回消息

激活

对象执行操作的时间

活动图 (Activity Diagram)

描述业务流程或算法的执行流程

活动

业务处理步骤

控制流

顺序、分支、并行、循环

泳道

责任分工和组织结构

UML图实例演示

用例图实例:图书管理系统

用例图

图书管理系统 读者 管理员 查询图书 借阅图书 归还图书 添加图书 删除图书

用例描述

用例:借阅图书
参与者: 读者
前置条件: 读者已登录系统
主要流程:
  1. 读者搜索图书
  2. 系统显示图书信息
  3. 读者选择借阅
  4. 系统检查借阅权限
  5. 系统更新图书状态
  6. 系统生成借阅记录
后置条件: 图书状态更新为已借出

类图实例:图书管理系统核心类

Book - id: String - title: String - author: String - status: BookStatus + borrow(): boolean Reader - id: String - name: String - email: String + borrowBook(Book): void BorrowRecord - id: String - borrowDate: Date - returnDate: Date + isOverdue(): boolean 1 * 1 borrows

序列图实例:借书流程

读者 系统界面 图书服务 数据库 1. 搜索图书 2. 查询图书信息 3. 查询数据 4. 图书信息 5. 图书列表 6. 选择借阅 7. 借阅请求 8. 更新图书状态 9. 借阅成功