软件测试03:软件工程和软件生命周期
软件危机
- 软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。
软件工程
- 基本软件危机对于计算机发展的阻碍,1968年,在联邦德国召开的国际会议,北大西洋公约组织的计算机科学家讨论软件危机问题。提出了软件工程这个名词,从此软件生产进入工程化时代。
- 软件工程包括两方面的内容:
- 软件开发技术:软件开发方法学、软件工具和软件工程环境
- 软件项目管理:软件质量、项目估算、进度控制、人员组织、配置管理、项目计划
- 引起软件危机的主要问题是软件质量问题
- 软件工程主要结界的就是软件质量问题
- 软件测试是软件质量管理体系中一个非常重要的手段
软件生命周期
软件生命周期模型
-
软件生命周期模型是一个
框架
,描述从软件需求定义
直至软件经使用后废弃
为止,跨越整个生存期的软件开发、运行和维护所实施的全部过程、活动和任务,同时描述生命周期不同阶段产生的软件工件,明确活动的执行角色等。 -
软件过程模型:从一个
特定角度
提出的对软件过程
的概括描述
,是对软件开发实际过程
的抽象
,包括构成软件过程的各种活动
、软件工件
以及参与角色
等。 -
瀑布模型
- 基本概念:最早提出的软件开发的过程模型,瀑布模型是将软件生存周期的各项活动规定为按固定顺序而连接的若干阶段工作,形如瀑布流水,最终得到软件产品。
- 核心思想:采用结构化的分析与设计方法将功能的实现与设计分开,便于分工合作。即将软件生命周期划分为可行性分析、需求分析、概要设计、详细设计、编码实现、测试与维护,六个基本阶段,并规定了他们自上而下,相互衔接的固定次序,如同瀑布流水,逐级下落。
- 实施过程:从上一项活动接收该项活动的工作对象作为输入,利用这一输入实施该项活动应完成的内容给出该项活动的工作成果,并作为输出传给下一项活动。同时评审该项活动的实施,若确认,则继续下一项活动;否则返回前面,甚至更前面的活动。
- 缺点:
- 强调时间顺序的严格执行,前阶段不完成,后阶段不开始,可能会浪费太多不必要的时间。
- 将测试放在了编码之后。没有体现出测试贯穿软件生命周期的原则。可以避免需求类的问题一直延续到代码完成才暴露或者被发现。
- 各种阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。
- 线性开发,用户等到整个过程的末期才能见到开发成果,从而增加了开发风险。
- 瀑布模型不适应用户需求的变化
- 优点:
- 为项目提供了按阶段划分的检查点,能够逐步稳定的使项目向前发展
- 当前一阶段完成后,只需要去关注后续阶段
- 注意:要求会画出瀑布模型,易出现在面试题。
-
迭代模型(喷泉模型)
- 迭代包括产生产品发布(稳点、可执行的产品版本)的全部开发活动和要使用该发布必需的所有其他元素,强调开发的深入。
- 在某种程度上,开发迭代是一次完整地经过所有工作流程的过程:需求分析、设计、实施和测试工作流程。
- 迭代过程具有以下优点:
- 降低了在一个增量上的开支风险。
- 降低了产品无法按照既定进度进入市场的风险。
- 加快了整个开发工作的进度。
- 迭代过程这种模式使适应需求的变化会更容易些。
- 提高开发效率、缩短开发周期
- 缺点:
- 难于管理
-
螺旋模型
- 螺旋模型是一种演化软件开发过程模型,它兼顾了快速原型的迭代的特征以及瀑布模型的系统化与严格监控。
- 引入了其他模型不具备的风险分析,使软件在无法排出重大风险时有机会停止,以减小损失。
- 螺旋模型主要针对
大型软件项目
的开发周期长
、风险高
的特点。 - 螺旋模型的每一次迭代都包含了以下六个步骤
1.决定目标,替代方案和约束
2.识别和解决项目的风险
3.评估技术方案和替代解决方案
4.开发本次迭代的交付物和验证迭代产出的正确性.
5.计划下一次迭代
6.提交下一次迭代的步骤和方案 - 四个象限:
制定计划
、风险分析
、实施工程
、客户评价
。
- 螺旋模型是一种演化软件开发过程模型,它兼顾了快速原型的迭代的特征以及瀑布模型的系统化与严格监控。
-
快速原型
- 基本概念:快速原型模型需要迅速建造一个可以运行的软件原型 ,以便理解和澄清问题,使开发人员与用户达成共识,最终在确定的客户需求基础上开发客户满意的软件产品。
- 核心思想:在开发真实系统之前,构造一个原型,在该原型的基础上,逐渐完成整个系统的开发工作。
- 实施过程:第一步是建造一个快速原型,实现客户或未来的用户与系统的交互,用户或客户对原型进行评价,进一步细化待开发软件的需求。通过逐步调整原型使其满足客户的要求,开发人员可以确定客户的真正需求是什么;第二步则在第一步的基础上开发客户满意的软件产品。
- 优点:能够有效减少由于软件需求不明确带来的开发风险。
- 缺点:快速建立起来的系统结构可能会在后续的持续更改中导致然简质量低下。
-
增量模型
- 增量模型首先对系统
最核心或最清晰的需求
进行分析、设计、实现、测试并集成到系统中,再按优先级
逐步对后续的需求进行上述工作,逐步建设成一个完整系统的开发方法。结合了瀑布模型和演化模型的优点。 - 缺点:
- (1).增量粒度难以选择;
- (2).确定所有的基本业务服务比较困难。
- 优点:
- (1).客户可以在第一次增量后就使用到系统的核心功能,增强了客户使用系统的信心;
- (2).项目总体失败的风险较低,因为核心功能先开发出来,即使某一次增量失败,核心功能的产品客户仍然可以使用。
- (3).由于增量是按照从高到低的优先级确定的,最高优先级的功能得到最多次的测试,保障了系统重要功能部分的可靠性。
- (4).所有增量都是在同一个体系结构指导下进行集成的,提高了系统的稳定性和可维护性。
- 增量模型首先对系统
-
敏感开发模型
- 敏捷宣言,也叫做敏捷软件开发宣言,正式宣布了对四种核心价值和十二条原则,可以指导迭代的以人为中心的软件开发方法。
- 敏捷开发-Scrum