文章目录
开发模型
软件生命周期
⽣命周期指的是从⽣命的开始到⽣命结束的⼀段时间。以⼈为例,⼈类的⽣命周期是从⽣命孕育的开始,中间会经历幼年,童年,少年,⻘年,⽼年,最终直⾄死亡。而软件的生命周期也是如此,需求是软件生命的起点,中间会经历需求的计划、设计,程序开发,程序测试等阶段,直到软件不再进行维护便到了生命的终点。
以键房子为例,我们可以将建房子的流程看成以下几个阶段:
- 明确为什么要建房子?
- 计划好建房子的时间、资金
- 设计具体的建房流程
- 根据计划正式建房
- 检查房子质量是否合格
- 正式入住
根据上述流程,我们可以举一反三总结出一个软件开发的流程(生命周期):
需求分析、计划、设计、编码、测试、运⾏维护
测试人员主要工作的部分就是测试部分,由于是正式运行前的最后一道步骤,所以测试人员需要保证测试的质量,减少不必要的损失。 具体的,对于各个阶段做出下面的具体分析:
常见开发模型
瀑布模型
瀑布模型在软件⼯程中占有重要地位,是所有其他模型的基础框架。瀑布模型的每一个阶段都只执行一次,因此是线性顺序进行的软件开发者模式。
优点:
- 强调开发阶段性
- 线性结构,每个阶段只执行一次
- 是其它模型的基础架构
缺点:
- 测试后置,前⾯各阶段遗留的⻛险推迟到测试阶段才被发现,导致项⽬⼤⾯积返⼯,失去了及早修复的机会。留给测试的时间可能不充足,导致问题暴露给用户
- 周期太⻓,产品很迟才能被看到和使⽤,可能会导致需求/功能过时
适用场景:需求固定的⼩项⽬
螺旋模型
⼀般在软件开发初期阶段需求不是很明确时,采⽤渐进式的开发模式。螺旋模型是渐进式开发(迭代开发)模型的代表之⼀。
优点
- 强调严格的全过程⻛险管理。
- 强调各开发阶段的质量
- 各个阶段增加⻛险分析和原型
缺点
- 项目的风险性跟风险管理人员的技能水平有直接关系,如果风险管理人员技能水平不行或者是一时疏忽都可能导致给用户问题
- 需求⼈员、资⾦、时间的增加和投⼊,可能会导致项⽬的成本太⾼
适⽤场景:规模庞⼤、复杂度⾼、⻛险⼤的项⽬。
增量模型、迭代模型
增量开发模型,⿎励⽤⼾反馈,在每个迭代过程中,促使开发⼩组以⼀种循环的、可预测的⽅式驱动产品的开发。因此,在这种开发模式下,每⼀次的迭代都意味着可能有需求的更改、构建出新的可执⾏软件版本,意味着测试需要频繁进⾏,测试⼈员需要与开发⼈员更加紧密地协作。
与此类似的有⼀个迭代开发,增量开发和迭代开发往往容易被⼈,但是其实两者是有区别的。增量是逐块建造的概念,迭代是反复求精的概念。
增量模型是将总需求切分成不同的模块,这些不同的模块组合起来才能达要求,而迭代模型是在一个完整的版本进行不断地更新。
适用场景:⼤型项⽬,需求不明确
**为什么说需求不明确的时候使用增量开发模型或迭代开发模型呢?**这是因为无论是增量开发模型和迭代开发模型,它们更新版本的代价会比较小。将来需求变化,对于增量模型,可能只需要在某一个功能模块上做更新,其它无关模块不用更新。对于迭代模型,如果需求发生变化,比如用户又觉得之前的版本比较好,那该模型直接回退到对应的版本就行。
敏捷模型
敏捷模型(Agile Model)是一种软件开发方法论,旨在通过迭代和增量的方式快速响应变化 ,交付高质量的软件。敏捷模型注重人与人之间的互动、快速交付工作软件、客户合作以及对变化的响应。
敏捷模型的四个核心价值观:
- 个体互动高于流程和工具:重视开发团队和用户之间的有效沟通和协作
- 工作软件高于详细文档:强调可运行软件比文档要重要
- 客户合作高于合同谈判:鼓励与用户的紧密合作,而不是只关注合同条款
- 相应变化高于遵循计划:灵活应对变化,而不是死板的按照计划行事
将以上四个核心价值观总结成四个特点:轻文档,轻流程,重目标,重产出
其中,Scrum是敏捷模型中的⼀种,⼜称为迭代式增量软件开发模型。
Scrum模型
scrum模型是一种迭代增量的软件开发框架,强调团队角色(如Scrum Master即项目经理、产品负责人和开发团队),以及时间框架(如冲刺、每日站会、冲刺评审和回顾)。
其中scrum模型主要有三个角色 和五个重要会议
- 三个角色:scrum由productowner(产品经理)、scrummaster(项⽬经理)和team(研发团队)组成。
- 五个会议:
- 发布计划会议:产品负责人负责创建和维护产品待办事项列表
- 迭代计划会议:团队选择要在接下来的冲刺中完成的任务,每个任务都有明确的负责⼈,并完成⼯时的初估计。
- 每⽇例会:每天scrummaster召集站⽴会议,团队成员回答昨天做了什么今天计划做什么,有什么问题。
- 演⽰会议:展示和评审已完成的工作。
- 回顾会议:项⽬团队对本期迭代进⾏总结,发现不⾜,制定改进计划,下⼀次迭代继续改进。
测试模型
测试模型中有两个⾮常重要且具有标志性的测试模型:V模型和W模型
V模型
V模型(V-Model)是一种软件开发过程模型,它是瀑布模型的扩展版本。V模型强调验证和验证活动,确保每个开发阶段都有对应的测试活动。
说白了就是在编码之后对之前的各个流程分别进行相应的测试。
V模型指出:
- 单元和集成测试应检测程序的执⾏是否满⾜软件设计的要求;
- 系统测试应检测系统功能、性能的质量特性是否达到系统要求的指标;
- 验收测试确定软件的实现是否满⾜⽤⼾需要或合同的要求
V模型的缺点:仅仅把测试作为在编码之后的⼀个阶段,未在需求阶段就介⼊测试。缺点同瀑布模型,即不能尽早地发现问题,而是等编码完成之后,且可能时间不足以完成所有模块地测试。
W模型
W模型(W-Model)是对V模型的扩展,它强调在每个开发阶段都进行并行的测试活动,以早期发现缺陷并减少修复成本。
对比V模型:
- V模型在开发阶段完成后才开始对应的测试阶段,而W模型在每个开发阶段进行时就同时进行测试
- W模型更早期地发现缺陷,减少了修复缺陷的成本和时间。
- W模型强调开发和测试的并行进行,提高了测试效率。
缺点:
- 测试和开发活动也保持着⼀种线性的前后关系,上⼀阶段完全结束,才可正式开始下⼀个阶段⼯作,重流程,无法支持敏捷开发模型。