软件研发流程

软件产品

软件是一种逻辑产品,不是客观的实体,具有无形性,它是脑力劳动的结晶,它以程序和文档的形式保存在作为计算机存储器的磁盘和光盘介质上,通过操作计算机才能体现出它的功能和作用。


软件产品中的过程文件


软件研发流程_第1张图片



“软件开发过程”是什么?


软件产品从最初构思到公开发行的过程,称为软件开发过程。

开发过程有各种不同的模式,没有所谓最好的模式。

最常见的5种:    最常用的:瀑布/v/快速/敏捷

瀑布模式

V W

快速原型

敏捷开发



开发过程常见模型--瀑布

在20世纪70年代,瀑布模型一直是惟一被广泛采用的软件过程模型,现在它仍然是软件工程中应用得非常广泛的过程模型。

瀑布模式的变型:V,W

1.步骤允许交叉。

2.步骤允许回溯。

3.测试贯穿全过程,减少缺陷修复成本,降低项目进度风险。

瀑布模型是一种线形的、顺序的软件开发模型

软件研发流程_第2张图片

瀑布模型优缺点

优点:

      每个阶段要都有明确的输入件和输出件,为项目提供了按阶段划分的检查点。

缺点:

1)基于文档的驱动,各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。

2)由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发风险。

3)瀑布模型的突出缺点是不适应用户需求的变化。


V模型— 瀑布模型的变型


软件研发流程_第3张图片

优点:

强调了在整个软件项目开发中需要经历的若干个测试级别,并与每一个开发级别对应;

指出测试的对象除了包括程序,还应该包括需求和设计。

局限性:

      V模型仅仅把测试过程作为在需求分析、系统设计及编码之后的一个阶段,忽视了测试对需求分析,系统设计的验证,需求的满足情况一直到后期的验收测试才被验证



W模型(又叫V&V模型)– V模型的升级版

V&V= Validation(验证) and Verification (确认)


软件研发流程_第4张图片

优点:

测试的活动与软件开发同步进行

测试的对象不仅仅是程序,还包括需求和设计

尽早发现软件缺陷可降低软件开发的成本

局限性:

在W模型中,需求、设计、编码等活动被视为串行的,同时,测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束,才可正式开始下一个阶段工作。这样就无法支持迭代的开发模型。

对于当前软件开发复杂多变的情况,W模型并不能解除测试管理面临的困惑。


快速原型

传统的瀑布模型很难适应需求可变、模糊不定的软件系统的开发,而且在开发过程中,用户很难参与进去,只有到开发结束才能看到整个软件系统。这种理想的、线性的开发过程,缺乏灵活性,不适合新系统的开发过程。

而快速原型模型的提出,可以较好的解决瀑布模型的局限性,通过建立原型,可以更好的和客户进行沟通,解决对一些模糊需求的澄清,并且对需求的变化有较强的适应能力。


软件研发流程_第5张图片

问题:开发初期很难确定用户需求规格

解决:用户与开发者之间的鸿沟

    以原型(软件产品的样品)为共同语言,实现用户与开发者双向沟通。


软件研发流程_第6张图片

原型生命周期


软件研发流程_第7张图片



敏捷开发


敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。


软件研发流程_第8张图片
软件研发流程_第9张图片

瀑布模型和敏捷的比较:

传统的瀑布模型无法适应在短时间内不断变化的用户需求,因为在瀑布模型中,是先收集到用户的所有需求,然后对所有需求进行设计、开发和测试,如后期有需求变更,对项目影响很大,甚至导致项目失败。而敏捷开发,是把一个大项目,划分为多个小版本进行开发,及时在开发过程中有需求变更,其影响的范围不广,造成的工作量也不大,因此,在需求不断变化的项目中,采用敏捷开发模式,就显得尤为必要了。

优点:

1)可以在项目的各个阶段进行需求变更。

2)客户能参与每个阶段的验收,保证了项目不偏离正确方向以及项目的可控性。

3)对于新近开发,需求变更快的项目,适合用敏捷开发模式,便于风险控制和需求变更管理


软件研发流程_第10张图片

软件开发过程模型的目的

保证最终产品满足用户需求

提高产品质量,降低产品开发成本

保证项目可管理,进度可控制

作为测试人员的职责,是在所处项目的开发模式中,尽量运用自身的知识和技能,创造出尽量完善的软件。


软件研发流程


软件研发流程_第11张图片

软件测试流程/生命周期


测试需求分析

测试需求评审

编写测试计划

设计测试用例

测试用例评审

搭建测试环境

测试执行

回归测试

测试报告

软件项目成员


项目经理

驱动整个项目的运转,负责制定计划,安排人力,管理进度,协调团队,进行重大决策。

产品经理(需求开发人员)(BA)

负责与客户沟通需求,编写软件测试需求说明书,绘制项目原型图。

架构师 / 系统工程师(SE)

技术专家,经验丰富,负责整个系统的体系架构的设计以及关键模块的设计。

程序员 / 开发人员

设计、编写软件,并修复软件中的缺陷。

测试工程师

负责找出软件产品存在的问题并报告。

UI设计工程师

负责项目图片的设计,或者项目页面的排版布局。

配置管理员

负责管理程序员写的代码和资料工程师写的文档资料,并组合成一个软件包

QA(很多小公司不设置该职位)

质量监管人员

你可能感兴趣的:(软件研发流程)