需求工程(“要做什么?”)
输入:用户模糊的想法与业务痛点。
核心产物:软件需求规格说明书(SRS)、数据流图(DFD)、用例图。
本质:只关心需求问题和数据怎么流动,不关心具体代码怎么写。
系统架构设计(“骨架怎么搭?”)
输入:需求阶段的 SRS、质量属性要求(性能、安全等)。
核心产物:架构风格(微服务、分层、事件驱动)、4+1 视图。
本质:宏观战略,确定系统的边界、技术选型以及子系统间如何通信。
系统设计(“内部怎么分工实现?”)
概要设计:定义模块结构(SC 图)或类图,划分谁调用谁。
详细设计:细化到每个模块内部的算法逻辑(IPO 图、流程图、伪代码)。
开发实现与测试
编码将设计落地,并通过单元测试、集成测试、系统测试逐步验证。
需求工程与规格化(把现实问题转为技术规约)
原始业务痛点
⬇ 1. 需求获取 (JRP、访谈、采样)
零散用户需求
⬇ 2. 需求分析 (结构化SA 或 面向对象OOA)
分析模型:DFD/用例图/领域模型
⬇ 3. 需求定义 (编写规格说明)
软件需求规格说明书 SRS (建立需求基线)
⬇ 4. 需求验证 (评审、走查、测试)
确认无误的正式需求基线
1. 需求获取 (Requirements Elicitation)
输入:用户的业务痛点、现有旧系统、行业规范、业务表单。
关键活动与工具:
用户访谈:一对一或小组深入沟通。
联合需求计划 (JRP):集中用户、分析师、开发代表开结构化研讨会,快速打破部门壁垒。
问卷调查 / 抽样 (Sampling):收集大规模群体反馈或提取代表性业务数据。
故事板 (情节串联板):用草图/低保真原型向用户讲故事,确认交互预期。
输出:用户需求记录清单、业务调研报告。
2. 需求分析与建模 (Requirements Analysis)
输入:零散、可能有冲突的用户需求清单。
关键活动与工具(这里分两条路线,取决于采用的方法):
结构化分析路线 (SA):
围绕数据流动建模,核心是数据流图 (DFD)和数据字典 (DD)。
用ER 图描述数据模型,用状态转换图描述行为模型。
面向对象分析路线 (OOA):
围绕领域对象建模,核心是用例模型 (用例图)和领域概念模型 (初步类图)。
输出:系统概念/逻辑分析模型(DFD、用例模型、业务实体关系)。
3. 需求定义 (Requirements Definition)
输入:分析建模的结果。
关键活动:
将所有功能需求、非功能需求(性能、安全、可靠性)、运行约束用规范的工程化语言组织起来。
输出:软件需求规格说明书 (SRS),它标志着需求基线 (Baseline)的形成。
4. 需求验证 (Requirements Validation)
输入:编写完成的 SRS 草稿。
关键活动:
需求评审 / 检查:与专家共同审查,剔除二义性、矛盾和遗漏等。
需求测试:从概念上设计验收测试用例,验证 SRS 中的条款是否可度量、可验证。
输出:经多方签字确认的正式 SRS、需求跟踪矩阵初版。
系统架构设计与系统设计
经过验证的正式 SRS
⬇ 1. 系统架构设计 (高层抽象、风格选型、宏观骨架)
架构模型:4+1视图 / 架构风格选型 / 质量属性方案
⬇ 2. 概要设计 (系统模块结构 / 类结构划分)
概要设计说明书:SC图 / 顶层类图 / 接口定义
⬇ 3. 详细设计 (内部算法、局部数据与处理逻辑)
详细设计说明书:IPO图 / 流程图 / 伪代码 / 状态机
1. 系统架构设计 (Architecture Design)
输入:SRS、系统的非功能性质量属性要求(如性能、可用性、安全性)。
关键活动:
架构风格选型:决定采用分层架构、管道-过滤器、微服务还是事件驱动等。
多视图建模:用“4+1”视图全面表达系统骨架(逻辑视图、进程视图、开发/实现视图、物理/部署视图)。
架构评估:使用 ATAM 或 SAAM 识别架构的敏感点、权衡点和风险点。
输出:软件架构设计说明书(体系结构规格说明书)。
2. 概要设计 (High-Level Design / 接口设计)
输入:架构设计说明书、数据流图 (DFD) 或用例模型。
关键活动:
结构化路线:通过变换分析或事务分析,把 DFD 转化为模块结构图 (SC);划分功能模块、确定模块层次与调用关系。
面向对象路线:确定核心业务类、包图以及子系统接口,进行数据存储的概念/逻辑设计(设计数据库表结构)。
输出:概要设计说明书(系统模块划分、数据结构定义、系统全局接口)。
3. 详细设计 (Detailed Design / 过程设计)
输入:概要设计说明书、接口定义。
关键活动:
对每个具体模块或类内部进行过程设计(算法与控制逻辑)。
使用IPO 图、N-S 盒图、PAD 图、伪代码 (PDL)表达具体实现逻辑。
运用 23 种设计模式对局部结构进行优化。
输出:详细设计说明书(程序员可以直接照着敲代码的蓝图)。
开发实现与测试
编码实现:程序员对照详细设计说明书写代码。
单元测试:针对类和函数,用详细设计里的算法和边界条件来测逻辑。
集成测试:将各个模块拼装在一起,对照概要设计测接口是否通畅。
系统测试:在真实环境下,对照SRS检查整个系统的功能和性能。
验收测试:用户对照最初的业务合同与需求,确认签字上线。
| 测试级别 | 测试对象 | 核心依据 | 典型测试场景 |
| 单元测试 | 单个类、模块或函数 | 详细设计说明书 | 测函数的边界值、逻辑覆盖路径 |
| 集成测试 | 模块间的接口与交互 | 概要设计说明书 | 测 A 模块传参给 B 模块是否正常通信 |
| 系统测试 | 完整集成的软硬件系统 | 需求规格说明书 (SRS) | 在真实/模拟真实环境下测并发、压力、安全性、整体业务流 |
| 验收测试 | 交付用户的成品系统 | 用户原始需求 / 商业合同 | 用户在真实业务场景下进行 α、β 测试,签署验收报告 |