一、软件统一过程(UP)
核心特点是采用“袖珍项目”模式,在每个迭代中覆盖软件开发的全部流程,强调阶段性与迭代性。整个开发过程划分为4个技术阶段,每个迭代周期内均包含5个核心工作流:需求获取、分析、设计、实现和测试。
4个技术阶段及其主要产出如下:
- 起始阶段:明确项目范围与目标,聚焦于系统构想和业务案例建立,主要产出包括系统构想文档(Vision Document)、初始用例模型、初步项目计划以及关键风险评估。
- 精化阶段:重点在于需求的细化和系统架构的设计,确保技术可行性。产出包括完善的用例模型、软件体系结构描述、更新的风险列表、原型系统及精化的项目计划。
- 构建阶段:以系统构件的开发为主,完成所有功能的编码与单元测试,产出可运行的软件版本、详细设计模型、集成的软件构件和完整的测试报告。
- 移交阶段:将系统交付给用户,进行β测试、用户培训、部署支持等,最终产出可发布的软件产品、用户手册、β测试反馈报告等。
每个阶段结束时设置一个关键里程碑,用于评估项目进展与决策是否进入下一阶段:
- 起始阶段 → 生命周期目标里程碑(Lifecycle Objectives Milestone)
- 精化阶段 → 生命周期架构里程碑(Lifecycle Architecture Milestone)
- 构建阶段 → 初始运作功能里程碑(Initial Operational Capability Milestone)
- 移交阶段 → 产品发布里程碑(Product Release Milestone)
RUP(Rational Unified Process)是UP的具体实现和商业版本,由Rational公司提出,后被IBM收购。它在UP基础上增加了更详细的指南、模板、工具支持和管理流程,适用于中大型项目的规范化开发,是UP的一种增强型实践框架。
二、敏捷方法
敏捷方法的核心理念源自《敏捷宣言》,强调个体与交互、可工作的软件、客户合作和响应变化高于流程与工具、详尽文档、合同谈判和遵循计划。其总体目标是通过尽早且持续地交付有价值的软件来提升客户满意度。常见的敏捷方法包括Scrum、极限编程(XP)、看板(Kanban)等。敏捷开发通常采用短周期迭代(如Sprint),注重团队协作、快速反馈和适应性调整,适合需求频繁变更或不确定性较高的项目环境。
在统一过程(UP)中,五个核心工作流——需求获取、分析、设计、实现、测试——贯穿整个软件开发生命周期的各个阶段。虽然每个迭代都会涉及这五个工作流,但在不同阶段中它们的重点、深度和目标各不相同。
以下是各阶段对五个核心工作流的侧重点分析:
起始阶段(Inception Phase)
- 需求获取:高度聚焦,主要识别关键利益相关者、系统范围、核心业务需求和主要用例,建立初步的用例模型。
- 分析:较轻量,仅进行概念性分析,明确系统边界和主要功能轮廓。
- 设计:极少进行,可能仅构建简单原型以验证构想。
- 实现:少量代码开发,主要用于技术可行性验证(如原型)。
- 测试:基本不开展系统测试,可能有原型的功能演示。
✅ 重点:需求获取为主,其他工作流辅助验证项目可行性。
精化阶段(Elaboration Phase)
- 需求获取:进一步细化用例,完善用例模型,处理复杂或高风险需求。
- 分析:深入进行,识别关键类、对象及其关系,建立领域模型。
- 设计:核心任务之一,重点构建稳健的软件体系结构,定义子系统、接口和关键技术决策。
- 实现:实现架构骨架代码,开发“架构主导序列”中的关键构件,用于验证架构稳定性。
- 测试:开展架构验证测试、性能测试和关键用例的端到端测试。
✅ 重点:分析与设计为核心,目标是建立可演进的系统架构并降低技术风险。
构建阶段(Construction Phase)
- 需求获取:趋于稳定,主要补充细节需求,处理剩余用例。
- 分析:较少进行高层次分析,更多聚焦于具体功能的逻辑解析。
- 设计:侧重详细设计,为每个构件提供清晰的设计说明。
- 实现:重中之重,大规模编码,集成各类软件构件,形成完整系统。
- 测试:全面展开单元测试、集成测试和系统测试,确保质量。
✅ 重点:实现与测试为主,目标是高效交付可运行的软件产品。
移交阶段(Transition Phase)
- 需求获取:根据用户反馈微调需求,处理上线前变更请求。
- 分析与设计:仅针对缺陷或小功能调整进行局部分析与设计。
- 实现:修复缺陷、优化性能、完成文档等收尾工作。
- 测试:以β测试、验收测试、用户场景测试为主,确保满足实际使用需求。
✅ 重点:测试与用户反馈响应为核心,确保软件顺利部署并被接受。
总结:
| 阶段 | 主要工作流侧重点 |
|---|---|
| 起始阶段 | 需求获取 |
| 精化阶段 | 分析、设计(架构) |
| 构建阶段 | 实现、测试 |
| 移交阶段 | 测试(用户测试)、需求微调 |
这种渐进式的工作流权重分配体现了UP“风险驱动”的特性,确保在早期解决最关键的不确定性问题。