1、软件过程模型
软件过程模型(SDLC Models) 是“软件工程”这一大类中的基础且高频考点。
在架构师考试中,这部分内容不仅出现在综合知识(选择题)*中,在*案例分析中也常要求根据特定场景(如:需求不明确、风险高、进度紧)选择合适的开发模型并陈述理由。
以下是核心知识点提炼。
一、 经典过程模型
1. 瀑布模型 (Waterfall Model)
这是最古老、最经典的模型,也是其他模型的基础。
Shutterstock
- 特点: 线性、顺序进行。前一阶段完成后,才能进入下一阶段。
- 核心驱动: 文档驱动(Document-driven)。
- 优点: 流程规范,文档齐全,易于管理。
- 缺点: * 难以适应需求变化(最大痛点)。
- 直到项目后期才能看到软件原型,风险控制能力弱。
- 适用场景: 需求非常明确、技术成熟、工程量较小的项目。
2. V 模型 (V-Model)
瀑布模型的变种,强调测试的重要性。
Shutterstock
- 核心逻辑: 开发活动的每一个阶段都对应一个测试级别。
- 需求分析 $\leftrightarrow$ 验收测试
- 概要设计 $\leftrightarrow$ 系统测试
- 详细设计 $\leftrightarrow$ 集成测试
- 编码 $\leftrightarrow$ 单元测试
- 适用场景: 对系统可靠性、安全性要求极高的领域(如医疗、航空、汽车系统)。
3. 原型模型 (Prototyping Model)
针对“需求不明确”而生。
- 核心逻辑: 快速构建一个可运行的原型,展示给用户,获取反馈,再修改。
- 分类:
- 抛弃型原型: 仅用于明确需求,验证后丢弃,重新开发。
- 演化型原型: 在原型基础上不断迭代完善,最终成为产品。
- 适用场景: 用户需求模糊、需求经常变化的项目。
二、 迭代与风险导向模型
4. 螺旋模型 (Spiral Model)
关键词:风险分析。
Shutterstock
- 构成: 结合了瀑布模型和演化型原型的优点,并增加了风险分析。
- 四个象限(步骤):
- 制定计划(确定目标)
- 风险分析(评估方案,消除风险)
- 实施工程(开发验证)
- 客户评估(评审)
- 适用场景: 庞大、复杂、高风险的系统(如大型航天系统、政府大型项目)。
5. 增量模型 vs. 迭代模型
这两个概念常混淆,考试中需注意区分:
- 增量模型 (Incremental): “逐块建造”。先开发核心模块,再根据需求开发后续模块。每一次发布都是一个可用的子系统。
- 例子:先做“用户注册”,上线;再做“购物车”,上线。
- 迭代模型 (Iterative): “逐步求精”。先开发整个系统的粗糙版本,然后不断打磨、细化。
- 例子:先做一个简陋的电商全站(能跑通但不好用),第二版优化UI,第三版优化性能。
三、 现代与面向对象模型
6. 喷泉模型 (Fountain Model)
关键词:面向对象。
- 特点: 各阶段(分析、设计、编码)之间没有明显的界限,相互重叠,具有迭代性和无间隙性。
- 适用场景: 专门为面向对象软件开发设计的模型。
7. 统一过程 (UP / RUP)
架构师考试中的重点。
- 三大特点: 1. 用例驱动 (Use-case driven)
2. 以架构为中心 (Architecture-centric)
3. 迭代和增量 (Iterative and Incremental) - 四个阶段(生命周期):
- 初始阶段 (Inception): 建立业务案例,确定项目边界,生命周期目标里程碑。
- 细化阶段 (Elaboration): 分析问题领域,建立架构基线,生命周期架构里程碑。(这是最关键的阶段,风险在此阶段被通过架构解决)。
- 构建阶段 (Construction): 开发剩余构件,初始运作能力里程碑。
- 移交阶段 (Transition): 部署、用户培训,产品发布里程碑。
四、 敏捷开发 (Agile Development)
近年来考试热度上升,强调“以人为本,适应变化”。
- 核心价值观(敏捷宣言):
- 个体和互动 高于 流程和工具
- 工作的软件 高于 详尽的文档
- 客户合作 高于 合同谈判
- 响应变化 高于 遵循计划
- 常见方法:
- XP (极限编程): 强调编码实践(结对编程、测试驱动开发 TDD、持续集成)。
- Scrum: 强调管理框架(Sprint冲刺、站会、Product Backlog)。
- 水晶方法 (Crystal): 强调根据项目规模选择不同策略。
- 适用场景: 需求变化快、中小规模团队、互联网项目。
五、 软考速记“作弊表” (Cheat Sheet)
在做选择题或案例分析时,看到以下关键词,直接联想对应的模型:
| 场景/关键词 | 推荐模型 |
|---|---|
| 需求明确、技术成熟、二次开发 | 瀑布模型 |
| 需求不明确、用户说不清想要什么 | 原型模型 |
| 风险高、大型系统、资金雄厚 | 螺旋模型 |
| 可靠性要求高、强调测试、嵌入式/军用 | V 模型 |
| 面向对象、复用性 | 喷泉模型 |
| 架构为中心、用例驱动、大型复杂企业应用 | RUP (统一过程) |
| 快速响应变化、小团队、短周期 | 敏捷开发 (Scrum/XP) |
| 尽早交付部分功能、分批次交付 | 增量模型 |
建议复习策略
- 理解重于死记: 尤其是 RUP 的四个阶段和螺旋模型的四个象限,要理解每个阶段解决了什么问题。
- 案例题套路: 如果案例题中描述项目“初期用户只能提供模糊需求”且“后期变更频繁”,你需要先批评原有的瀑布模型,然后建议改为“原型模型+演化”或“敏捷开发”。
- 对比记忆: 重点区分增量 vs 迭代,以及 V模型 vs 瀑布模型。
本文来自博客园,作者:ceiloruz,转载请注明原文链接:https://www.cnblogs.com/ceiloruz/p/19473596
浙公网安备 33010602011771号