目录
1. 需求
需求分为用户需求和软件需求。用户需求即甲方提出的需求,而软件需求是开发和测试人员执行工作的依据。比如,
用户需求:饿了,想吃东西
软件需求:评估该需求的合理性,能否实现(去吃国宴无法实现,但吃小吃能实现)。若合理,就计划具体步骤。一,打开手机导航规划路线;二,选择交通方式;三,进店选座;四,吃饭。
注:用户需求不能直接作为开发和测试依据。针对用户的需求,产品经理需要进行需求分析(技术可行性,市场可行性,成本投入和收益占比)后才能转成软件需求。
2. 生产模型(笔试题重点)
这里的“模型”指的是工作流程(生命周期),不是通常的汽车模型。
2.1 软件的生命周期
以人为例,人的生命周期是从受精卵开始,中间会经历婴儿,儿童,青少年…等阶段,直至死亡。
软件(产品)的生命周期也是如此,需求的开始是产品生命的起点,中间会经历需求的计划,设计,程序开发,测试等阶段,直至软件不再进行维护(死亡)。
生命周期:需求分析⸺>计划⸺>设计⸺>编码⸺>测试⸺>运行维护
案例:建房子的生命周期(流程)是什么样的?
- 需求分析:明确合理的建房目标。为什么建房子?商品房还是普通住宅?
- 计划:规划时间。建房开始时间,结束时间及交房时间。
- 设计:设计具体的建房流程。先打地基,做基础框架,砌墙,粉刷
- 编码:施工中。按上面的计划的设计做。
- 测试:施工完成。开发商验收成果,买家验房(是否漏水,偷工减料等等)
- 运行维护:买家入住。若房子再有漏水,下水道堵塞等问题,一边使用一边找物业修理。
软件的生命周期是什么样的?
- 需求分析:分析用户需求是否合理(从市场需求,技术等方面分析),输出需求文档。
- 计划:计划多长时间完成该需求,每段时间具体完成哪些功能,输出计划文档。
- 设计:将需求细化成一个个任务,团队成员领取对应任务并进行技术设计。比如开发人员要设计开发文档(用什么技术、框架),而测试人员需要明确需求,设计测试用例,测试计划(明确本次测试用到的测试工具,设计的测试类型等),输出技术文档。
- 编码:开发人员参考需求、设计文档、交互图等文件进行代码编写,输出代码文档。
- 测试:测试人员参考测试用例对软件进行测试。输出测试用例、测试设计、测试报告等文档。
- 运行维护:项目上线,并进行线上维护。线上的维护主要分为三个方面:修复性维护(修复未发现的问题)、完善性维护(完善功能)及预防性维护(避免产品在线上出现不可预知的问题,进行一些防护的手段。比如双十一淘宝等app会崩溃)。
2.2 常见的开发模型
重点掌握模型的优点及应用场景。
1. 瀑布模型
瀑布模型是其他模型的基础框架,以线性顺序进行软件开发。
特点:线性结构,每个阶段只执行一次。
缺点:存在严重的项目风险。
- 周期太长,可以运行的产品上线很迟,导致产品过时。
- 测试后置。前面各阶段一流的风险推迟到测试阶段才发现,导致项目大面积返工。浪费时间会导致测试不充分,导致产品质量差。
适用场景:需求固定的小项目。
但企业中存在许多大规模、复杂度高、风险大的项目,这时该怎么办?下面看螺旋模型。
2. 螺旋模型
螺旋模型是一种渐进式的开发模式。与瀑布模型不同,它没有独立的测试阶段,而是在随着开发的迭代而迭代。
一个颜色代表一个阶段,分析图可知,
特点:各阶段都引入了风险分析和原型,在上一个阶段的原型基础上得到原型进阶版(原型几)。引入风险分析的目的是为了减少前期遗留问题,避免后续才发现问题。
缺点:
- 风险分析阶段与风险分析人员的能力直接挂钩。
- 公司需要再招聘风险分析人才,会增加成本,导致项目成本太高。
适用场景:需求复杂,规模大,风险大的项目。
3. 增量模型与迭代模型
增量模型:将大需求拆成一个个小需求,每个需求独立开发。
迭代模型:先做出基础版本,在基础版本上不断优化。
适用场景:大型项目,需求不明确。
4. 敏捷模型(Scrum)
项目开发中,要处理客户的变更请求,合并这些变更也需要时间和高成本。而敏捷模型正好克服了这些缺点。其是增量模型和迭代模型的结合,旨在帮助项目快速适应变更需求,以便快速完成项目。
敏捷模型:需求被分成许多可以增量开发的小部分,每个增量部分都是迭代开发的。
《敏捷宣言》:
- 个体与交互重于过程和工具(工作中的问题能当面谈就不要发微信邮箱)
- 可用的软件重于完备的文档(重产出,文档不应作为工作验收的标准。交付给客户的是软件,不是各个文档)
- 客户协作重于合同谈判(及时主动了解客户的需求,如客户有考虑不足的地方自行补全)
- 响应变化重于遵循计划(主动迎接变化)
敏捷模型(敏捷宣言)的特点:轻文档,轻流程,重目标,重产出。
Scrum是敏捷模型的一种,又称为迭代式增量软件开发模型。其有三类角色和五个重要会议。
- 三类角色:
- 产品经理:负责整理用户需求,产出软件需求文档。
- 项目经理:负责召开各种会议,协调项目和人数等。
- 研发团队:包括前后端,测试,交互,设计等等。
- 五个会议:
- 发布计划会议:产品经理负责讲解用户需求,评估合理性并对合理需求进行先后排序,确定本次迭代做哪些需求,产出需求列表。
- 迭代计划会议:进行任务拆解,明确负责人和完成任务需要的时间,团队成员按照各自任务在规定时间内执行工作。
- 每日例会(站会):每天项目经理会开会,团队成员讲述昨天、今天做了什么,明天要做什么,期间遇到的问题。
- 演示会议:迭代完毕,召开演示会议,相关人员都受邀参加,团队负责向大家展示本次迭代的成果。期间会有各种反馈,由产品经理整理并形成新的需求。
- 回顾会议:所有人对本次迭代进行总结,不断优化。
Scrum将产品开发分解为若干个小迭代,周期为1周到4周,参与的团队成员一般是5到9人。
3. 测试模型(笔试题重点)
测试模型中有两个重要的模型:V模型和W模型。
测试模型和开发模型区别不大,都是同一个流程,只是测试模型比开发模型更注重测试。
3.1 V模型
特点:
- 明确说明了测试过程中各种类型的测试。并清楚的描述了各个类型的测试和开发过程对应的关系,有效提升了测试的质量和效率。
缺点:
同瀑布模型缺点相同,不支持敏捷开发模式,都是把测试作为编码后的阶段,未在需求阶段就介入测试。
3.2 W模型(双V模型)
双V模型在开发各阶段都加入了测试,测试和开发呈并行关系。
特点:
- 有利于尽早全面的发现问题。比如需求分析完成后,测试人员就应参与到对需求的验证和确认中,尽早找出缺陷。对需求测试有利于及时了解项目难度和测试风险,及早制定对策,显著减少测试时间。
缺点:
- 测试和开发虽然看似是并行,但实则和V模型一样呈线性关系,上一阶段完成才能开始下一阶段。
- 双V模型仍然不支持敏捷开发模型(轻文档,轻流程)。