目录
软件的生命周期
常见开发模型
瀑布模型
螺旋模型
增量模型、迭代模型
敏捷模型
Scrum模型
常见测试模型
V模型
W模型(双V模型)
软件的生命周期
软件的生命周期包括需求分析,计划,设计,编码,测试,运行维护等阶段。
需求分析:分析用户需求是否合理,分别从市场需求,技术等方面进行分析。该阶段会输出需求文档。
计划:对成立的需求进行具体分析,包括多长时间完成,每一阶段需要完成哪些功能等。给阶段会输出计划文档。
设计:将需求细化成一个个任务,团队成员各司其职领取任务并进行技术设计,包括进行架构设计,接口设计,采用的技术等。该阶段会输出技术文档。
编码:即开发人员参考文档,设计文档,交互图等文件进行代码编写。
测试:测试人员参考测试用例对软件进行测试。会输出测试用例,测试报告等文档。
运行维护:项目测试结束后,进行上线,并对产品进行线上的维护。包括修复性维护,完善性维护,预防性维护等。
修复性维护:对项目中未发现的问题进行修复。
完善性维护:对功能进行完善。
预防性维护:为了避免产品在线上出现一些不可预料的问题,进行一些防护的手段。
常见开发模型
瀑布模型
瀑布模型的每一个阶段都只执行一次,因此是线性顺序进行的软件开发模式。
瀑布模型的风险在于在需求引入的一个缺陷要到测试阶段甚至更后的阶段才发现,通常会导致前面的工作大面积返工。前期阶段未发现的错误会扩散到后面的阶段,而在后面阶段发现这些错误时,可能已经很难回头修正,从而导致项目的失败。但目前很多企业还是沿用了瀑布模型的思想,并在这个基础上做出自己的修改。
优点:强调开发的阶段性。线性结构,每个阶段只执行一次。是其他框架的基础。
缺点:
测试后置:1、前面的风险推迟到测试阶段才被发现,导致大面积返工,失去了及早修复的机会。 2、必须留有足够的时间给测试活动,否则测试不充分会将缺陷直接暴漏给用户。
周期太长,产品很迟才能被看到和使用,可能会导致需求/功能过时。
适用场景:需求固定的小项目。
螺旋模型
一般在软件开发初期阶段需求不是很明确时,采用渐进式的开发模式。螺旋模型是渐进式开发模型的代表之一。螺旋模型中各个阶段都引入了风险分析 + 原型。引入的目的是减少各阶段遗留的风险问题,避免把问题留到后面的阶段。
这种模式不允许有一段独立的测试时间和阶段,测试必须跟随开发的迭代而迭代。
优点:强调严格的全过程风险管理。强调各开发阶段的质量。增加风险分析和原型。
缺点:项目中可能存在的风险性与管理人员的技能水平有直接关系。
需求人员,资金,时间的增加和投入,可能会导致项目的成本太高。
适用场景:规模庞大,复杂度高,风险大的项目。
增量模型、迭代模型
增量模型强调将一个大的需求转变成一个个小需求。对于每个不同的小需求叫做增量。对于每个增量分别进行编码,测试,发布等流程,独立开发上线。在这个过程中不断完善功能。
迭代模型强调先上线一个基础版本,后期再继续迭代优化上线。如先发布基础版本,在此基础上发布优化版本1,再发布优化版本2....
迭代模型和增量模型现在已经不会单独去使用,而是配合着去使用。
适⽤场景:⼤型项⽬,需求不明确
敏捷模型
若在项目开发阶段用户变更了需求我们该怎们办呢?
敏捷模型可以帮我们解决这个问题。敏捷模型中需求可以被分为许多可以增量开发的小部分。每个增量部分都是在迭代中开发的。所以敏捷模型又称为增量迭代开发模型。
敏捷模型有一个《敏捷宣言》:
1、个体与交互重于过程与工具:不要让流程过于复杂。强调高效的沟通。
2、可用的软件重于完备的文档:强调轻文档,文档不应该作为工作验收的标准。
3、客户协作重于合同谈判:主动及时了解当下需求。
4、响应变化重于遵循计划:能够主动迎接变化
总结出敏捷模型的四个特点:轻文档,轻流程,重目标,重产出。
Scrum模型
Scrum模型是敏捷模型中的一种,在scrum模型中,主要有三个角色和五个重要会议。
三个角色:product owner (产品经理): 负责整理收集用户的需求,定义商业价值,指定计划,对产品负责。产出软件需求文档。
scrum master(项目经理):负责召开各种会议,协调项目,为研发团队服务。
team(研发团队):由不同技能的成员组成,包括前后端开发,测试,交互等人员。完成每一次迭代的目标,交付产品。
五个重要会议:
产品负责人负责整理用户需求(user story),形成需求列表(product backlog)。
发布计划会议:产品负责人讲解用户需求,对其进行估算和排序,发布计划会议的产出就是指定出这一期迭代要完成的story列表。
迭代计划会议:项目团队对每一个story进行任务分解,分解的标准是完成该story的所有任务,每个任务都有明确的负责人,并完成工时的初估计。
每日例会:每天scrum master 召集站立会议,团队成员回答昨天做了什么今天计划做什么,有什么问题。
演示会议:迭代结束后,召开演示会议,相关人员都参加,团队负责向大家展示本次迭代取得的成果。期间大家的反馈记录下来,形成新的story。
回顾会议:项目团队对本期迭代进行总结,制定改进计划,下一次迭代继续改进,以达到持续改进的效果。
常见测试模型
V模型
V模型中强调测试过程中存在不同类型的测试。
优点:明确的标注了测试过程中存在不同类型的测试,并且清楚地描述了这些测试阶段和开发过程中期间各阶段的对应关系,有效提升测试的质量和效率。
V模型指出:
1、单元和集成测试应检测程序的执行是否满足软件设计的要求。
2、系统测试应检测系统功能、性能的质量是否达到系统要求的指标。
3、验收测试确定软件的实现是否满足用户需要。
缺点:仅仅把测试作为在编码后的一个阶段,未在需求阶段就接入测试。缺点如瀑布模型。
W模型(双V模型)
W模型增加了软件各开发阶段中应同步进⾏的验证和确认活动。W模型由两个V字型模型组成,分别代表测试与开发过程,图中明确表⽰出了测试与开发的并⾏关系。
特点:测试的对象不仅是程序,需求、设计等同样要测试,测试与开发是同步进⾏的。
优点:
• 有利于尽早地全⾯的发现问题。例如,需求分析完成后,测试⼈员就应该参与到对需求的验证和确认活动中,以尽早地找出缺陷所在。同时,对需求的测试也有利于及时了解项⽬难度和测试⻛险,及早制定应对措施,显著减少总体测试时间,加快项⽬进度。
缺点:
• 需求、设计、编码等活动被视为串⾏的;
• 测试和开发活动也保持着⼀种线性的前后关系,上⼀阶段完全结束,才可正式开始下⼀个阶段⼯
作。
• 重流程,⽆法⽀持敏捷开发模式。对于当前软件开发复杂多变的情况,W模型并不能解除。
以上,关于软件开发的各类模型,希望对你有所帮助。