开发/测试模型
瀑布模型
设计:技术文档(设计那些接口,库表,mq,定时任务),UI视觉稿
特点:线性的结构。
优点:每个阶段做什么,产出什么非常清晰
缺点:测试人员介入太晚了,风险往往迟至后期的测试阶段才显露,因而失去及早纠正的机会。发现问题后需要不停的向前回溯才能定位问题。
适用于项目:小型的项目适用于这种模型,比如项目周期1天或者0.5天。
螺旋模型
优点:循环进行风险分析。每个阶段开始之前都有一个风险分析,可以避免一定的风险
缺点:风险分析需要一定的投入,如果分析错了,会带来一定的损失。同时不断的迭代,有可能导致项目延期。
适应项目:适用于规模大,复杂度高,风险比多的项目。
增量、迭代模型
增量模型,一个模块开发完毕,在开发下一个模块。
迭代模型,所有模块一起开发,先开发大的框架,在开发细节。
敏捷模型
敏捷开发的概念:就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
- 敏捷模型不强调流程,而是更多地思考如何去激发开发人员的工作热情。
- 敏捷模型的考核标准是:可交付的软件。
个体与交互重于过程和工具(注重面对面沟通)
可用的软件重于完备的文档
客户协作重于合同谈判
响应变化重于遵循计划(拥抱变化)
在每对比对中,后者并非全无价值,但我们更看重前者
简而言之敏捷模型的特点就是:轻流程、轻文档、重目标、重产出。
敏捷开发有很多种方式,其中scrum是比较流行的一种,scrum中主要包含三大角色,五大会议。
迭代开发:与瀑布不同,scrum将产品的开发分解为若干个小sprint(迭代),其周期从1周到4周不等,但不会超过4周。参与的团队成员一般是5到9人。每期迭代要完成的user story是固定的。每次迭代会产生一定的交付。
角色:
PO(产品经理): 收集整理用户需求。
SM (项目经理): **需要进行需求优先级确定,项目计划确定。**对需求进行优先级划分,计划项目什么时候开始,什么时候结束,由谁去做。
Team(前端开发,后端开发,测试,设计)
scrum的基本流程:
-
产品经理负责整理user story,形成左侧的product backlog。
-
发布计划会议:产品经理负责讲解user story。SM项目经理对其进行估算和排序,发布计划会议的产出, 就是制定出这一期迭代要完成的story列表。
-
迭代计划会议:项目团队对每一个story进行任务分解,分解的标准是完成该story的所有任务,每 个任务都有明确的负责人,并完成工时的初估计。
-
每日站会:汇报昨天工作有没有完成,如果没有完成,遇到了什么问题。今天计划做什么。
-
演示会议: 演示给项目其他人员。期间大家的反馈记录下来,由po整理,形成新的story。
-
回顾会议: 遇到的问题记录,如何解决这些问题。制定改进计划,下一次迭代继续改进,已达到持续改进的效果
V模型
用户需求阶段:PM将用户需求收集,成为软件需求。
用户分析与系统设计阶段:验证需求是否正确。确定使用的编程语言,确定使用的框架。
概要设计阶段:项目结构如何设计
详细设计阶段:每个接口涉及到那些库表,涉及哪些任务
编码阶段:软件开发人软进行写代码
单元测试:对java中的每一个类,每一个方法进行测试。
集成测试:将许多方法集成到一起进行测试
系统测试:对整个系统进行测试,测试模块和模块间有没有影响。
验收测试:不是测试人员进行测试,是由验收的人进行测试,比如产品,运营。
特点:左边开发,右边测试,类似于瀑布模型。
优点:测试被划分为许多类型。
缺点:测试介入太晚,发现问题时机就会越晚,测试和开发是串行的
W模型(双V模型)
V&V意思是: 软件测试的工作归结起来就是两个V,Verification(验证)和Validation(确认)。
实施:部署/运行。
交付:软件交付给用户
用户需求V&V 验收测试准备:根据用户需求写一个文档,在运营验收的时候,把文档给运营,让运营对照文档进行验收。
特点:开发一个V,测试一个V.
优点:测试在刚开始就介入了整个项目,测试是对整个项目的每个阶段进行了测试
缺点:测试人员和开发人员在一定程度上还是串行的,不能拥抱变化。不适用于敏捷开发。