软件开发流程&每阶段注意事项

您所在的位置:网站首页 在统-软件开发过程模型中,核心工作流程包含哪些 软件开发流程&每阶段注意事项

软件开发流程&每阶段注意事项

2024-07-14 00:47| 来源: 网络整理| 查看: 265

文章目录 背景&目标五大阶段技术可行性分析需投入时间分析 二、文档方案阶段《产品方案文档》《技术方案文档》清晰确定的实现方案明确时间规划明确测试范围输出风险问题 《测试用例文档》 三、开发联调阶段四、测试验收阶段五、发布上线阶段六、需求变更流程 项目管理关键字: 在这里插入图片描述

背景&目标

在目前的软件研发流程中,存在一些问题,导致研发&测试的同学在工作过程中遇到很多困难,包括:

在需求开发过程中总是被动,时间总是倒推,间接导致研发质量不高,研发没有时间做能力沉淀。工作时间紧张总是被打乱,比如:正在做A需求,突然说有个B需求很紧急需要明天上,回头A需求方问为何delay,受到质疑,降低了研发团队公信力。同时做几件事情,时间互相牵扯,没法准确评估每件事情的完成时间。开发总有遗漏,上线后发现功能点漏评估漏改。测试漏测,开发测试范围没有包含,测试也没有评估到这个影响点,大家都不知道这个影响点,导致上线引起线上问题。同一个错误反复出现,无法得到根治,缺乏复盘和解决方案的良好落地。 五大阶段

我将研发流程分为了五个大阶段,大部分内容与我们目前的工作流程基本一致,略有区别的和需要特别注意的点我用五角星标(☆)标记出来。

一、需求立项阶段 在需求立项阶段,一般是业务和产品基于目前业务发展等各方面情况,提出产品的改进想法,如果是技术改造类项目,则是由研发基于目前的系统,提出的系统优化改进想法。这个阶段会确定达到什么业务目标、要做哪些事情、什么时候做、对业务产生什么价值,然后判断需要投入多少资源,产生多少价值,也就是投入产出比(ROI)。 这个阶段中,一线研发和测试同学需要参与的地方不多,主要会有以下两点:技术可行性分析、需投入时间分析。

技术可行性分析

这个阶段产品、业务可能会咨询研发某些功能是否可以实现,研发同学可基于目标,提出多套方案,并分析多套方案的时间投入、研发难度、对产品未来的影响等给到产品业务同学作为参考,并给出研发建议。

需投入时间分析

这个阶段,业务产品也会咨询研发相应的投入时间,这个地方回答不好,可能就会给研发同学埋下一个坑。比如说“功能不复杂,三天就能做好”,这个地方的坑在于业务会理解成我的需求提出来后,三天就能上线,业务可能就会给出一个期望上线时间“三天后”。实际研发过程中,涉及产品文档、技术文档、研发、测试、发布等阶段,“三天完成”一般只代表研发时间,其他的时间并没有包含在内,实际需求提出后,可能要十天才会上线。而且实际需求提出后,是否立刻有资源投入去做、测试是否有资源、实际需求是否和现在有出入都是未知数,所以正确回答可以参考这样去回答“从目前给到的信息来看,粗略估计一下,功能不复杂,写代码大概三天左右,我只能评估到这里,具体上线的话还有看测试资源和到时候的项目排期情况”。主要就是明确目前只能评估技术开发时间,并不是给保证上线时间。

二、文档方案阶段

这个阶段,主要是确定“怎么做”、“花多长时间”的阶段,主要产出有《产品方案文档》、《技术方案文档》、《测试用例文档》。

《产品方案文档》

研发、测试需要关注产品文档中需要修改的产品功能UI、功能链路图、页面交互跳转步骤、交互文案、异常链路处理方案等是否描述完整清晰,如有不清晰的地方,需要记录并推进产品进行修改补充。 如产品文档中核心链路基本不清晰、有比较大的不确定的点,导致无法进行技术方案编写,则可沟通修改后重新评审《产品方案文档》。

《技术方案文档》

技术文档中,需要描述清楚具体改造点、系统间交互、库表设计、接口设计、安全性设计、性能设计等,详细见《详细设计文档模版》。这里重点说一下需要特别注意的点:清晰确定的实现方案,明确时间规划、明确测试范围、输出风险问题。

清晰确定的实现方案

技术文档中的技术实现方案90%是确定的,包括新技术调研、细节的接口应该创建新接口还是使用老接口、是否增加字段、调用链路如何实现、如何做开关切流等,有不确定的点可提前线下与相关同学进行沟通确定,不能到技术方案评审时再来讨论该怎么做,这样不仅会浪费开会成员的时间,同时大量的讨论会分散大家的注意力,导致没法发现技术实现方案上的问题。

明确时间规划

这个地方需要注意以下几点:

基于需要改动的点,分配功能点到个人,各自评估开发时间、自测时间、联调时间,功能细化、时间细化到0.5人日这个粒度,最后给出一个投入开发日期、开始联调日期、提测日期、发布上线日期。因为测试人日此时不一定能评估出来,并且测试人员资源可能不确定,所以发布上线日期可延后给出,但需要明确给出发布上线日期和测试人日的时间点,开发负责人或PM需要进行跟进。遇到项目紧急,正常评估的计划时间产品业务不能接受怎么办 分析并行开发极限+增加开发资源:根据具体功能划分,分析一个项目最大的并行程度,判断哪些功能点可以划分出来单独开发,判断是否可以通过加人来提高开发速度,判断能提前的人日是否值得通过加人去提速,因为可能会占用其他项目需求的开发人员。分批提测:除了加人之外,可以通过分批提测来提前最终的上线时间,分析哪些功能点可以提前进行测试,让测试资源提前进入,不必等到开发全部完成再测试,这样就能节省部分时间。 明确测试范围

明确罗列测试范围,一能方便测试评估工作量,二可以作为测试用例编写的依据,方便测试能更多的覆盖需求边界,做到不遗漏。

输出风险问题

在文档评审过程总会有新的问题产生,记录问题并给出责任人和输出结论的时间点。 没有完美的方案,某些方案会存在一定的风险,记录风险,并给出相应解决或规避方案,同步到项目组相关成员并达成一致。

《测试用例文档》

测试用例文档需要包含正常流程测试、异常流程测试、受影响功能域回归、性能压测、边界测试等场景,在编写完测试用例文档后,需要进行“测试用例评审”。 测试用例评审的主要目的包括:

提高测试覆盖率:通过不同评审专家的角度,扩充测试用例的全面性,确保基本功能和核心功能的测试覆盖。确保需求的可追溯性和复审需求:确认每个需求是否都有对应的测试用例,验证需求设计是否合理、是否存在遗漏等情况。开发工程师带入新的测试角度:从业务处理流程的角度提供新的测试用例,改善测试用例覆盖情况。预防缺陷和改善开发质量:通过评审发现潜在的缺陷,进一步改善软件质量。补充测试点:由于不同测试人员对业务的理解不同,可以相互补充。消除歧义:通过评审消除测试用例之间的歧义。促进各方理解一致:明确不确定因素,确保各方的理解一致。 三、开发联调阶段

此阶段主要包含开发、联调、自测工作,需要特别注意一些点:

涉及多团队协作联调的接口变更,尽量提前提供接口定义,不阻塞彼此的开发。自测需要做到在主流程功能测试通过,指定边界测试通过,保证冒烟测试通过,降低测试过程bug数。开发过程中遇到的变更,如果与之前技术方案评审内容不一致,需要同步到产品、测试并对新的变更达成一致。

测试同学可以在此阶段准备测试用例及进行测试用例评审。

四、测试验收阶段

此阶段主要是测试同学的工作,需要注意以下几点:

冒烟测试不通过,可让研发配合尽快修复,如果连续修复后依然无法冒烟通过,为了保证测试资源的合理高效使用,可以打回开发阶段重新提测。开发同学此阶段需要配合测试进行环境配置、问题排查、bug修复等工作,一般分配20%~ 50%的时间在测试配合上,可并行开发其他项目需求,但需按50%~80%的人日进行工作排期,需与新项目相关人员说明。例如新项目需要3人日,实际按60%精力投入,完成时间实际是3/0.6=5天,也就是5天完成。CodeReview尽量在测试冒烟通过后、或bug数稳定后进行,如遇代码不合理、设计不合理等问题需要修改代码,可留有足够的时间给测试进行新变更的验证。 五、发布上线阶段

此阶段主要工作内容是配置项配置、数据库脚本执行、线上部署、运营配置等,此阶段需要注意以下几点:

配置项、脚本提前准备好可直接复制的文本,一般写在在运维文档中,部署前将前置的配置工作提前一小时进行并进行check,避免发布部署应用时出现遗漏。部署过程中,遇到紧急线上问题,如无法快速判断与本次发布的代码无关,优先进行回滚止血。即使能判断与本次代码无关,也进行多方对焦确认后,再决定是否继续发布。如遇到多个项目需求同一天发布,统一登记到《发布汇总登记》中,并明确每一个应用和配置变更的责任人和复核人,确定每一个步骤的顺序并保证通知到位。线上验收的测试用例提前准备,避免验收有遗漏。如系统上线和实际运营开始使用间隔时间比较长,需要在运营开启前再次回归相关功能,确认功能使用无误。发布上线后,大的项目需要进行相应的复盘,复盘包括项目完成情况、时间是否delay、做的好的地方、做的不好的地方等,帮助同学在复盘中学习成长和 六、需求变更流程

在进入开发、测试阶段后,不可避免会出现需求变更,变更原因有可能是产品设计有遗漏、研发开发测试过程中发现有未评估到的点,遇到这样的情况需要注意以下几点:

如开发测试过程中,产品提出需求变更,研发和测试需要评估变更产生的影响,包括新变更是否需要增加开发测试时间,是否影响目前的系统设计,如果改动比较小,对提测上线时间影响不大,可如期完成项目进度,则可酌情接受新变更,并要求产品将新变更同步到产品文档中,并在项目群内通知到项目相关成员。如开发测试过程中,产品提出需求变更,变更影响比较大,可能会导致项目时间delay,则可基于实际情况,与产品、业务沟通是否延长项目上线时间或重新起新需求单独去开发。如果研发、测试过程中,发现有之前未考虑到的点,并影响比较大,可能会导致项目时间delay,则可基于实际情况,对延长项目时间达成一致或判断是否可以作为新需求单独去开发。 项目管理关键字: 关键字理解沟通→达成一致沟通能力需要提高,尤其对外表达,尽量不要有:做不了、没时间做、没做完也没办法因为有别的事耽搁了等等这些没有原因、没有结论的表达方式。尽量用:跟XX任务冲突了需要重排优先级、时间不足以完成需要增加X几个人才有可能完成等以完成为目标、并提供解决方案建议等方式。沟通要有结论,工作中需要XX支持XX事情XX时间完成,XX事情产生XX变化,需要明确告知并确保对方理解并达成一致,不能随便说一句就算。不要觉得业务对整个开发流程很清楚,他们其实并不关心开发过程,他们更关心结果和自己的业务指标,所以涉及过程中的变更会影响到项目完成时间或完成目标,及时与相关同学沟通并达成一致。不要觉得业务清楚知道你的时间都投入到哪里了,因为紧急事务导致开发delay等情况,需要及时通知到项目相关所有人并达成一致。时间管理遇到特殊情况多个工作冲突,工作分优先级,时间优先保障优先级高的项目需求的目标达成,优先级的判断与业务产品达成一致并将影响沟通到相关人。给出去的时间点,是明确且达成一致的,手中的工作一切以按期达成目标服务,出现紧急异常状况要及时判断对手中工作的影响。人日评估和完成时间是两个概念,前者是工作所需耗费人日投入,后者是基于实际情况(包括熟悉程度、并行任务、多部门协同)计算出具体完成时间,前者是工作分析,后者是达成承诺。“四象限”管理:重要且紧急、重要不紧急、紧急但不重要、不紧急也不重要,按这四个顺序进行个人的时间管理


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3