)
一.软件的生命周期1.定义生命周期指的式从生命的开始到生命结束的一段时间。以人为例人类的生命周期是从生命孕育的开始中间会经历幼年童年少年青年老年最终直至死亡。而软件/产品的生命周期也是如此需求的开始是软件生命的起点中间会经历需求的计划设计程序开发程序测试等阶段直至软件不再进行维护便到了生命的重点。2.软件开发的生命周期3.软件的生命周期中每个阶段都是做什么的阶段具体内容产出需求分析分析用户需求是否合理分别从市场需求技术等方面进行分析该阶段会输出需求等文档计划对成立的需求执行需求执行计划多长时间内完成该需求每段时间具体完成哪些功能该阶段会输出计划等文档设计将需求细化成一个个任务团队成员各司其职领取任务并进行技术设计如何进行架构设计设计哪些接口采用什么技术该阶段会输出技术等文档编码开发人员参考需求文档设计文档交互图等等文件进行代码的编写代码文件等文档测试测试人员需求介入到软件测试中来参考测试用例对软件进行测试。测试用例测试设计与计划测试报告等文档运行维护项目结束之后项目需要进行上线并对产品进行线上维护。线上的维护主要分为三个方面。分别为修复性维护完善性维护和预防性维护。修复性维护对项目中未发现的问题进行修复完善性维护对功能进行完善。预防性维护居安思危为了避免产品在线上出现一些其他不可预料的问题进行一些防护手段二.常见开发模型1.瀑布模型优点/特点1.强调开发的阶段性2.线性结构每个阶段只执行一次3.是其他模型的基础框架缺点1.测试后置前面各阶段遗留的风险推迟到测试阶段才发现导致项目大面积返工失去了及早修复的机会。必须留有足够的时间给测试活动否则导致测试不充分将缺陷直接暴露给用户产品质量差周期太长产品很迟才能被看到和使用可能会导致需求/功能过时。适用场景需求固定的小项目2.螺旋模型优点1.强调严格的全过程风险管理2.强调各开发阶段的质量。3.增加风险分析和原型缺点1.项目中可能存在的风险性与风险管理人员的技能水平有直接关系。2.需求人员资金时间的增加和投入可能会导致项目的成本太高。适用场景规模庞大复杂度高风险大的项目3.增量模型迭代模型增量开发能显著降低项目风险结合软件持续构建机制构成了当今流行的软件工程最佳实践之一。增量开发模型鼓励用户反馈在每个迭代过程中促使开发小组以一种循环的可预测的方式驱动产品的开发。因此在这种开发模式下每一次的迭代都意味着可能有需求的更改构建出新的可执行软件的版本意味着测试需要频繁进行测试人员需要与开发人员更加紧密地协作。与此类似地有一个迭代开发增量开发和迭代开发往往容易被人但是其实两者是有区别地增量式逐块建造的概念迭代是反复求精的概念开发迭代是一次完整地经过所有工作流程的过程(至少包括)需要工作流程分析设计工作流程实施工作流程和测试工作流程。实质上迭代模型是类似小型的瀑布式项目。每一个迭代都会产生一个可以发布的产品这个产品是最终产品的一个子集。描述4.一次迭代过程包括了所有软件开发流程5.每一次迭代均产生一个可发布的产品6.该产品为最终产品的一个子集适用项目于适合于事先不能完整定义产品的所有需求计划多期开发的项目。4.敏捷模型(1)定义敏捷模型主要旨在帮助项目快速适应变更请求。因此敏捷模型的主要目的是促进项目的快速完成。要完成这项任务需要敏捷。敏捷性是通过使过程适应项目删除对特定项目可能不是必须的活动来实现。此外避免任何浪费时间和精力事情。在敏捷模型中需求被分解成许多可以增量开发的小部分。敏捷模型采用迭代开发。每个增量部分都是在迭代中开发的。每次迭代都旨在小而已于管理并且只能在几周内完成。一次性为客户计划开发和部署一个迭代。没有制定长期计划。2)敏捷模型中的scrum模型三个角色和五个重要会议scrum由product owner(产品经理)scrum master(项目经理) 和team(研发团队)组成。其中product owner负责整理user story(用户故事)定义其商业价值对其进行排序制定发布计划对产品负责。scrum master负责召开各种会议协调项目为研发团队服务。研发团队则由不同技能成员组成通过紧密协同完成每一次迭代的目标交付产品。迭代开发与瀑布不同scrum将产品的开发分解为若干各小sprint迭代其周期从1周到4周不等但不会超过4周。参与的团队成员一般是5到9人。每期迭代要完成的user story是固定的。每次迭代会产生一定的交付。scrum的基本流程如上图所示产品负责人负责整理user story,形成左侧的product backlog。发布计划会议product owner负责讲解user story,对其进行估算和排序发布计划会议的产出就是制定出这一期迭代要完成的story列表sprint backlog。迭代计划会议项目团队对每一个story进行任务分解分解的标准是完成该story的所有任务每各任务都有明确的负责人并完成工时的初估计。每日例会每天scrum master召集站立会议团队成员回答昨天做了什么今天计划做什么有什么问题。演示会议迭代结束之后召开演示会议相关人员都受邀参加团队负责向大家展示本次迭代取得的成果。期待大家的反馈记录下来由po整理形成新的story。回顾会议项目团队对本期迭代进行总结发现不足制定改进计划下一次迭代继续改进以达到持续改进的效果。敏捷中的测试轻文档和快速迭代敏捷模型中强调轻文档所以测试人员不应适用传统的excel编写测试用例的方法更多的是使用思维导图探索性测试强调自由度设计和执行同时进行根据测试结果不断调整测试计划自动化测试等敏捷讲求合作在敏捷项目组中测试人员应多主动跟开发人员了解需求讨论设计一起研究bug出现的问题5.测试模型中的V模型V模型是瀑布模型的变种。优点1.明确的标注了测试过程中存在不同类型的测试并且清楚的描述了这些测试阶段和开发过程期间各阶段的对应关系有效提升测试的质量和效率。V模型指出单元和集成测试应检测程序的执行是否满足软件设计的要求系统测试应检测系统功能性能的质量特性是否达到系统要求的指标验收测试确定软件的实现是否满足用户需要或合同的要求缺点仅仅把测试作为在编码之后的一个阶段未在需求阶段就介入测试。缺点同瀑布模型6.W模型双V模型W模型增加了软件各开发阶段中应同步进行的验证和确认活动。W模型由两个V字型模型组成分别代表测试与开发过程图中明确表示出了测试与开发的并行关系。特点测试的对象不仅是程序需求设计等同样要测试测试与开发是同步进行的优点有利于尽早地全面发现问题。例如需求分析完成后测试人员就应该参与到对需求地验证和确认活动中以尽早地找出缺陷所在。同时对需求的测试也有利于及时了解项目难度和测试风险及早制定应对措施显著减少总体测试时间加快项目进度。缺点需求设计编码等活动被视为串行的测试和开发活动也保持着一种线性的前后关系上一阶段完全结束才可正式开始下一个阶段工作。重流程无法支持敏捷开发模式。对于当前软件开发复杂多变的情况W模型并不能解除测试管理面临着困惑。也可以看一下下面的这篇文章本文章迭代模型部分出自下面这篇文章。软件开发模型总结归纳(瀑布模型、螺旋模型、迭代模型、增量模型、敏捷模型)_瀑布型 迭代型 增量型 敏捷型的区别-CSDN博客