【SE】 第二章 过程模型与生命周期

软件工程概论 第二章 过程模型与生命周期

2.0 目录

  1. 什么是过程
  2. 软件过程模型
    1. 瀑布模型 Waterfall model
    2. V-模型 V model
    3. 原型模型 Prototyping model
    4. 阶段性开发:增量与迭代 Phased development: increments and iteration
    5. 螺旋模型 Spiral model
    6. 混合开发
    7. 敏捷开发 Agile methods(未完成)

2.1 过程 Meaning of Process

软件开发不等于写课后题

  1. 实际软件大而复杂
  2. 多人协作,需要及时沟通及对工程的共同理解

什么是过程?

A process defines who is doing what, when and how, in order to reach a certain goal.

一组任务的集合。具体是包括:

  • 分工及workflow:谁去干什么?先干什么?后干什么?
  • 产品:不止是最终交付的软件,还包括在过程中的某一环节生产出的各种文档、手册、代码etc
  • 里程碑 Mailstones:如何标志一个环节结束?
  • 。。。

使用过程的重要性

  1. 确保生产过程的一致性,以及对项目的整体结构的把握
  2. 指导如何理解项目、控制环节、检查成果。并改善上述活动
  3. 对同一类型(模型) 的生产过程积攒经验,并在下次处理同类问题时应用

综上,搭建过程模型的理由:

  1. 确保所有人对该项目有一个统一普遍的理解;
  2. To find inconsistencies, redundancies, omissions (???)
  3. 确定合适的活动来实现其中每个阶段目标,并在时候对其进行评估;
  4. 对特定的、同类型的工程总结普遍的开发规律,并在日后开发时加以运用。

2.2 过程模型举例

2.2.1瀑布模型

严格地串行化过程。

  1. 需求分析完全结束后,生成需求文档作为里程碑。

  2. 在需求文档基础上开始系统设计,生成功能分析表。

  3. 在功能分析表基础上开始程序设计,生成…

  4. …编程

  5. …单元测试、集成测试

  6. …系统测试

  7. …验收测试 & 交付

  8. …维护与保养

【SE】 第二章 过程模型与生命周期

瀑布模型的特点

模型易于理解;后续环节完全基于上游环节;每一步严格地具有输入输出的产品/文档;对不同阶段的开发者定义为不同的角色。

【SE】 第二章 过程模型与生命周期

瀑布模型的问题

要求每一步都需要完全正确。该模型难以回溯至上层环节。

Where the waterfall model works fine?

  • 既定的程序和技术
  • 不需要太多的需求变化
  • •组织良好、角色明确的项目
  • “可重复”项目
  • 时间与资金预算充足的大型项目

2.2.2 原型模型 Prototyping

迅速建造一个可以运行的软件原型 ,以便理解和澄清问题,使开发人员与用户达成共识,最终在确定的客户需求基础上开发客户满意的软件产品。在需求分析阶段对软件的需求进行初步而非完全的分析和定义,由用户提出修改和细节,最终再进行实现。【SE】 第二章 过程模型与生命周期

2.2.3 V-模型 V-mode

为了解决开发出的软件质量不高问题

核心:通过设置多次测试来保证软件的质量

单元测试、集成测试、系统测试、验收测试

每一步测试不通过时可以向上回溯。

【SE】 第二章 过程模型与生命周期

2.2.4 阶段性开发 Phased development:

将整体的任务分解成多个小阶段,从而将开发周期缩短、工作量化简、并减少错误。
【SE】 第二章 过程模型与生命周期

递增开发,increments

由某一子系统开始开发,在每次版本更新时逐渐新增功能。
【SE】 第二章 过程模型与生命周期

迭代开发, iterations

由整个系统的测试版开始开发,每次更新完善其中的部分模块

【SE】 第二章 过程模型与生命周期

阶段性开发的优点

  • 产品可以提前发布,即使功能缺失或不完善
  • 可以为以前从未提供过的功能提前创建市场
  • 频繁的发布可以让开发人员快速、全面地解决未预料到的问题
  • 开发团队可以通过不同的发布专注于不同的专业领域

2.2.5 螺旋开发 Spiral model

  • 引入风险控制
  • 开发呈现出围绕以下四个维度的螺旋式开发
    1. 计划
    2. 定义目标、备选方案及限制
    3. 评估备选方案以及风险
    4. 开发与测试

特点:将与代码相关的内容压缩,大部分内容在开发研究

【SE】 第二章 过程模型与生命周期

2.2.6 混合开发 Hybrid process models

过程模型有其优劣点与适用场景,不能一概而论。

下图为不同年代使用的不同开发模型

【SE】 第二章 过程模型与生命周期

Agile methods

2001年敏捷宣言