什么是软件的生命周期,以及常见的开发测试模型
目录
一、软件的生命周期
1、什么是生命周期?
2、每个阶段都要做些什么?
二、常见的开发模型
1、瀑布模型
2、螺旋模型
3、增量模型、迭代模型
4、敏捷模型
scrum模型
三个角色
五个会议
一、软件的生命周期
1、什么是生命周期?
生命周期是指从生命的开始到结束的这一段时间,以人为例,就是生命从孕育开始,中间经历童年、少年、青年、中年、老年,最终到死亡;而软件、产品也是如此,软件的生命周期是从需求的产生,再经过需求的计划、设计,程序开发,程序测试等阶段,最终到软件不再维护时,软件的生命周期也就结束了。
那什么是需求呢?
首先需求分为用户需求与软件需求
用户需求:可以理解为是甲方提出的要求,如果没有甲方,那么就是终端用户使用产品时必须要完成的任务。其需求一般比较简略,往往是一句简单的话。
比如:实现⼀个软件的登录功能,或者你朋友说,帮我写一个作业。那么你朋友就是甲方(当然,作为你的甲方肯定要他给你工资哈)。
软件需求:或者叫功能需求,该需求会详细描述开发人员必须实现的软件功能。软件需求也是测试人员进行测试工作的基本依据。
那么软件需求与用户需求有什么区别?
用户需求:
帮我写一个作业。
软件需求:
需要你和他反复的沟通了解更加详细具体的需求,来制定解决方案
比如:
“什么作业” “计算机作业”
“什么时候交” “下周”
.........
最终理解清楚用户需求之后,知道朋友想要你帮他做python作业,那么再去研究其要求,怎么做等等的具体步骤,这就是软件需求
具体的软件测试会做成一份文档,提供给开发人员及测试人员。
了解了需求,我们现在来看一个案例
假如我想要建造⼀套房子,房子的⽣命周期(流程)是什么样的?
因此,我们就得到了软件(开发)的生命周期:
需求分析⸺⸺计划⸺⸺设计⸺⸺编码⸺⸺测试⸺⸺运行维护
2、每个阶段都要做些什么?
需求分析:分析用户需求是否合理,分别从市场需求、技术等方面进行分析,最后会输出需求等文档。
计划:对成立的需求执行需求执行计划,比如,多长时间内完成该需求,每个时间段具体完成哪些功能,最后会输出计划等文档。
设计:将需求细化成一个个任务,团队成员各司其职领取任务并进行技术计划,最后输出技术等文档。
编码:开发人员参考需求文档、设计文档、交互图等文件进行代码的编写,最后输出代码等文档。
测试:测试人员需要介入到软件的测试中,参考测试用例对软件进行测试,最后输出测试用例、测试设计与计划、测试报告等文档。
运行维护:测试项目结束后,项目需要进行上线,并对产品进行线上的维护,线上维护主要分为三个方面:修护性维护、完善性维护和预防性维护。
二、常见的开发模型
1、瀑布模型
瀑布模型在软件工程中占有重要地位,是所有其他模型的基础框架。瀑布模型的每⼀个阶段都只执行一次,因此是线性顺序进行的软件开发模式。
而瀑布模型其缺陷也很明显,由于周期太长,产品很迟才能被看到和使用,可能会导致需求/功能过时。并且测试的后置,会使得前面各阶段遗留的风险推迟到测试阶段才被发现,导致项目大面积返工,失去及早修复的机会。而且必须留有足够的时间给测试人员,否则导致测试不充分,将缺陷直接暴露给用户。
因此,瀑布模型适用于需求固定的小项目。
2、螺旋模型
螺旋模型在瀑布模型的基础上,每个阶段都引入了风险分析+原型
风险分析很好理解,就是对当前阶段可能存在的问题以及风险进行评估,并进行解决,重新输出文档。那么什么是原型?
原型就是一个需求在完成开发之后的一个模型,我们需要对这个模型来进行考核评估,如果该模型是合理的,那就进行下一阶段,如果不合理,那就回炉重造。
螺旋模型强调严格的全过程分险管控,强调各开发阶段的质量,解决了瀑布模型对许多些规模庞大、复杂度高、分险大的项目的无力问题。但是,项目中可能存在的分险性与分险管理人员的技能水平有直接关系,同时也加大了需求人员、资金、时间的增加和投入,可能导致项目的成本过高。
因此,螺旋模型适用于规模庞大,复杂度高、分险大的项目。
3、增量模型、迭代模型
增量开发模型,鼓励用户反馈,在每个迭代过程中,促使开发小组以一种循环的、可预测的方式驱动产品的开发。因此,在这种开发模式下,每一次的迭代都意味着可能有需求的更改、构建出新的可执行软件版本,意味着测试需要频繁进行,测试人员需要与开发人员更加紧密地协作。
迭代模型与增量模型是有区别的,就如下图所示:
增量是逐块建造的概念。先完成一部分功能,发布后,再根据需求增加新的功能再发布,就比如抖音,最开始只有刷视频的功能,再后面就上线了商城购物功能。
迭代是反复求精的概念。把所有功能都进行简化,保留最基础的功能进行上线发布,然后再对已有的功能进行优化完善,是一个不断优化的过程。
这两个模型通常被混合使用,适用于大型的、需求不明确的项目。
4、敏捷模型
敏捷模型主要旨在帮助项目快速适应变更请求。因此,敏捷模型的主要目的是促进项目的快速完成。
敏捷模型中有⼀个重要的《敏捷宣言》,宣言内容:
个体与交互重于过程和工具
可用的软件重于完备的文档
客户协作重于合同谈判
响应变化重于遵循计划
简单来说,这几句话的意思就是要注重实在的交流,随机应变,不用循规蹈矩。
敏捷开发有很多种方式,其中scrum是比较流行的一种。
scrum模型
scrum模型是敏捷模型中的一种,又称为迭代式软件增量开发模型。
在scrum模型中主要有三个角色和五个重要会议
三个角色
scrum由product owner(产品经理)、scrum master(项⽬经理)和team(研发团队)组成
product owner负责整理user story(用户故事,也就是需求),定义其商业价值,对其进行排序,制定发布计划,对产品负责。
scrummaster负责召开各种会议,协调项目,为研发团队服务。
研发团队则由不同技能的成员组成,通过紧密协同,完成每⼀次迭代的目标,交付产品。
五个会议
发布计划会议:product owner负责讲解user story,对其进行估算和排序,发布计划会议的产出就是制定出这⼀期迭代要完成的story列表,sprint backlog。
迭代计划会议:项⽬团队对每⼀个story进行任务分解,分解的标准是完成该story的所有任务,每个任务都有明确的负责人,并完成工时的初估计。
每日例会:每天scrum master召集站立会议,团队成员回答昨天做了什么今天计划做什么,有什么问题。
演示会议:迭代结束之后,召开演示会议,相关人员都受邀参加,团队负责向大家展示本次迭代取得的成果。期间⼤家的反馈记录下来,由product owner整理,形成新的story。
回顾会议:项目团队对本期迭代进行总结,发现不足,制定改进计划,下⼀次迭代继续改进,以达到持续改进的效果。