【SE】 第二章 过程模型与生命周期
软件工程概论 第二章 过程模型与生命周期
2.0 目录
- 什么是过程
- 软件过程模型
- 瀑布模型 Waterfall model
- V-模型 V model
- 原型模型 Prototyping model
- 阶段性开发:增量与迭代 Phased development: increments and iteration
- 螺旋模型 Spiral model
- 混合开发
- 敏捷开发 Agile methods(未完成)
2.1 过程 Meaning of Process
软件开发不等于写课后题
- 实际软件大而复杂
- 多人协作,需要及时沟通及对工程的共同理解
什么是过程?
A process defines who is doing what, when and how, in order to reach a certain goal.
一组任务的集合。具体是包括:
- 分工及workflow:谁去干什么?先干什么?后干什么?
- 产品:不止是最终交付的软件,还包括在过程中的某一环节生产出的各种文档、手册、代码etc
- 里程碑 Mailstones:如何标志一个环节结束?
- 。。。
使用过程的重要性
- 确保生产过程的一致性,以及对项目的整体结构的把握
- 指导如何理解项目、控制环节、检查成果。并改善上述活动
- 对同一类型(模型) 的生产过程积攒经验,并在下次处理同类问题时应用
综上,搭建过程模型的理由:
- 确保所有人对该项目有一个统一普遍的理解;
- To find inconsistencies, redundancies, omissions (???)
- 确定合适的活动来实现其中每个阶段目标,并在时候对其进行评估;
- 对特定的、同类型的工程总结普遍的开发规律,并在日后开发时加以运用。
2.2 过程模型举例
2.2.1瀑布模型
严格地串行化过程。
-
需求分析完全结束后,生成需求文档作为里程碑。
-
在需求文档基础上开始系统设计,生成功能分析表。
-
在功能分析表基础上开始程序设计,生成…
-
…编程
-
…单元测试、集成测试
-
…系统测试
-
…验收测试 & 交付
-
…维护与保养
瀑布模型的特点
模型易于理解;后续环节完全基于上游环节;每一步严格地具有输入输出的产品/文档;对不同阶段的开发者定义为不同的角色。
瀑布模型的问题
要求每一步都需要完全正确。该模型难以回溯至上层环节。
Where the waterfall model works fine?
- 既定的程序和技术
- 不需要太多的需求变化
- •组织良好、角色明确的项目
- “可重复”项目
- 时间与资金预算充足的大型项目
2.2.2 原型模型 Prototyping
迅速建造一个可以运行的软件原型 ,以便理解和澄清问题,使开发人员与用户达成共识,最终在确定的客户需求基础上开发客户满意的软件产品。在需求分析阶段对软件的需求进行初步而非完全的分析和定义,由用户提出修改和细节,最终再进行实现。
2.2.3 V-模型 V-mode
为了解决开发出的软件质量不高问题
核心:通过设置多次测试来保证软件的质量
单元测试、集成测试、系统测试、验收测试
每一步测试不通过时可以向上回溯。
2.2.4 阶段性开发 Phased development:
将整体的任务分解成多个小阶段,从而将开发周期缩短、工作量化简、并减少错误。
递增开发,increments
由某一子系统开始开发,在每次版本更新时逐渐新增功能。
迭代开发, iterations
由整个系统的测试版开始开发,每次更新完善其中的部分模块
阶段性开发的优点
- 产品可以提前发布,即使功能缺失或不完善
- 可以为以前从未提供过的功能提前创建市场
- 频繁的发布可以让开发人员快速、全面地解决未预料到的问题
- 开发团队可以通过不同的发布专注于不同的专业领域
2.2.5 螺旋开发 Spiral model
- 引入风险控制
- 开发呈现出围绕以下四个维度的螺旋式开发
- 计划
- 定义目标、备选方案及限制
- 评估备选方案以及风险
- 开发与测试
特点:将与代码相关的内容压缩,大部分内容在开发研究
2.2.6 混合开发 Hybrid process models
过程模型有其优劣点与适用场景,不能一概而论。
下图为不同年代使用的不同开发模型
Agile methods
2001年敏捷宣言