敏捷开发:想要快速交付就必须舍弃产品质量?

敏捷开发
• 阅读 269

在创新驱动的市场环境中,敏捷开发已成为许多组织的首选软件开发方法。其关键优势在于能够快速适应市场变化,并频繁地交付靠谱的产品。然而,快速交付的同时,团队要如何确保产品质量,确保交付的产品都是高质量的、可靠的且附加价值的,一直以来都是大家挑战以及争论的焦点。

敏捷开发原则植根于"持续交付有用的软件",不过这并不意味着快速交付就要牺牲质量。这是一种误解。实际上,敏捷开发最本质的部分是找到平衡点。本文将和大家一起聊聊如何在敏捷开发中平衡快速交付和产品质量这二者。

方法一:持续集成与持续交付

敏捷开发强调“持续”:持续集成(CI),持续部署/交付(CD)。这些都强调了同一个点,即软件必须始终保持在可交付状态。之所以这样,是因为团队可以快速,频繁地获取反馈,并据此改进产品。而我们实现这一点的关键工具包括自动构建和测试,版本控制,以及构建流水线等。

CI/CD 行动指南

Jenkins和GitLab作为最知名的流水线自动化工具之一,在DevOps实践中发挥着重要作用。它们帮助团队构建出高度定制化的流水线,满足项目的需求,并实现持续集成、持续交付的目标。

开发者在每次提交代码到Git时,Jenkins可以自动执行构建和测试。这一流程不仅提升了开发效率,而且确保每次提交的代码都能通过测试,显著提高了代码质量。 敏捷开发:想要快速交付就必须舍弃产品质量? 利用版本控制工具,支持管理多种类型的源代码管理工具,包括本地私有化部署的Git和Subversion,以及流行的GitLab、Gitea、Gogs等源代码托管平台,保证所有的源代码和文档都能被追踪,随时可以获取历史版本。除了利用工具,也可以建立规则,确保只有测试通过的代码才能被合并进主开发分支。此外,可以采用更为成熟的持续发布流程,自动化生产环境的部署和发布。

敏捷开发:想要快速交付就必须舍弃产品质量?

方法二:测试驱动开发

测试驱动开发是一种以测试先行的开发模式,即先写测试,再写代码。这在理论上可以帮助我们避免因过早地投入到过多的开发工作中,而无法保证其质量。这还有助于确保我们的代码正常运行和可读,并且反映出实际需求。

行动指南

在编写任何新功能的代码前,先写具有挑战性的测试。确保测试的是基于客户的需求,而不仅仅是基于技术的考量。这样一来,代码的正确性和完备性就有了保障,同时还能提供随时可用的使用文档。

方法三:团队协作

我们都知道在敏捷开发中,团队共享责任。开发、测试、产品以及其他干系人都对质量负责。换句话说,质量不仅仅是测试团队的责任,也是开发团队的责任。我们可以在建立明确的协作和沟通方式、定期的团队会议或者其他形式的协作中,在开发过程中的每一步都强调质量。

行动指南

所有团队成员,无论是开发者还是业务方,都必须认可在项目中分担责任这一共识。这是通过提供持续而高效的沟通来实现的。例如,利用每日站立会议、迭代规划,以及回顾会议等形式进行。

方法四:及时迭代和快速反馈

及时迭代和快速反馈,并不意味着团队要一次性地尝试完成所有的工作,而是将其分解成小块,以便快速并有效地完成所有工作。每一轮迭代都包括规划、分析、设计、编码、测试以及回顾。每个阶段都是为了提高质量和适应变化,以便我们可以快速交付有价值的产品。

行动指南

将项目分成多个小的迭代周期进行,每个周期重复规划、分析、设计、编码和测试步骤。在每个周期结束后,进行回顾会议,寻找改进的地方,为下一个周期提供反馈。

在迭代和反馈的过程中,我们可以利用看板和燃尽图等工具来进行项目的追踪和管理。看板将项目进度可视化,方便团队成员随时查看当前的工作进展。燃尽图则为我们提供了一种从宏观角度了解项目的有效工具,通过查看燃尽图,我们可以了解到当前的工作量和项目进度,从而做出相应的调整。

敏捷开发:想要快速交付就必须舍弃产品质量?

方法五:质量内建

质量内建,即质量保障体系,在敏捷开发中将质量视为内建的,而不是在完成所有开发工作后再去实现的。我们通过设立质量目标,进行代码审查,编写单元测试,执行集成测试,以及其他质量保证的措施来实现这一点。此外还强调整洁编程,以及重构等实践,以确保我们的代码始终保持良好,可维护的状态。

行动指南

将质量保证视为一个持续、整个开发周期都在进行的过程,而不局限于某个阶段。通过自动化测试、重构、简单设计等手段,可以使在编码阶段引入的缺陷变少。除此以外,还可应用静态代码分析工具,在构建过程中自动执行。并定期进行代码审查,以增加分享知识和提升代码质量的机会。对于重构,也应视其为常规的开发活动,根据需要迭代修改代码,确保开发和维护的便利性。

其他有效实践

结对编程:它并非很多人简单地认为是一人写码、一人观看(因为这样其实是浪费了一个人力)。它更像汽车拉力赛,导航员看地图并告诉驾驶员前路如何、该如何行驶,所以他的视野会更加宏观,看得更远,引导驾驶员思维。同样,在编程中也是一个人输入代码,另一个人引导思路,通过这种互相协作的模式提升代码质量。

代码评审:就是大家坐在一起,分享代码的收获、踩过的坑以及解决问题的方法、技巧,并非形式化的质量审查,而是开发的交流分享会。

暴徒式编程:是结对编程的延伸,只有一个人操作键盘,并定时,其他人根据屏幕显示进行指导。每隔一段时间换人 。

通过合理地引导和实施上述行动,团队能更容易在快速交付和保持高质量之间找到平衡,记住,敏捷并不是在速度和质量之间做出取舍,而是找到二者之间的平衡,依靠团队的协作,使得速度和质量可以共同提高。不过知易行难,但是采用敏捷精神,并且接受持续改进的思想,是值得的,一旦真的步入敏捷的道路,在施行的过程中,不断通过各种实践,修直前行的道路,团队一定会有质的改变与提升,持续地提供高质量的产品。

点赞
收藏
评论区
推荐文章
【敏捷研发系列】前端DevOps流水线实践
软件开发从传统的瀑布流方式到敏捷开发,将软件交付过程中开发和测试形成快速的迭代交付,但在软件交付客户之前或者使用过程中,还包括集成、部署、运维等环节需要进一步优化交付效率。因此Devops的产生将敏捷的相关理念扩展到运维侧,从而将产品、设计、开发、测试、运维团队更紧密的结合在一起。而从交付给客户产品视角看,前端研发通常又是在整个产品设计开发链条的最终节点,意味着前端团队受到上游变更的影响是最大的,并且从经营理念效率出发,提升前端交付效率是至关重要的。
Stella981 Stella981
3年前
Jenkins自动化部署
感谢之前带领过我的leader,让我能够知道什么是好的开发方法。在很早之前就接触过敏捷开发。什么是敏捷开发,简单来说就是让软件可靠地,快速地发布出来的一种开发方法和技巧。而敏捷开发中有许多的实践,可能并不是每一种实践都适合于你的团队,但是总有一种能帮助你们的团队快速地将软件可靠地,高可用地发布出来。如果在读这篇文章之前,还没有接触过敏捷开发,那么
Stella981 Stella981
3年前
Scrum 实操流程
Scrum是用于开发、交付和持续支持复杂产品的一个框架,是一个增量的、迭代的开发过程。敏捷的原则和方法必须在每天的实践中落地,对人和管理要求高。所以有scrummaster为了适应变化,敏捷的迭代周期短特征1.迭代开发:这意味着你应该重复开发过程。2.增量交付:意味着你应该一步一步地创建产品的“可用”子集
Stella981 Stella981
3年前
Scrum vs. Kanban
相似性都是既精益又敏捷都是拉动式计划都限制了WIP都以透明的方式驱动过程改进都关注于尽早交付、频繁交付可发布的软件根基都是自组织型团队都需要把工作拆分发布计划都是根据经验数据差异SrcumKanban规定了古代时长的迭代固定时长的迭代是可选的
Stella981 Stella981
3年前
DevOps世界中的软件开发
!(https://oscimg.oschina.net/oscnet/f40e68cbfe8148deb00f040b4e917a0a.jpg)在整个软件开发过程中,开发人员通常需要花费大量时间来修复错误和漏洞,以便一切按计划进行交付。但是,通过DevOps实践,可以更轻松地管理和保护这些问题。这是由于以下事实:使用DevOps实践的软
Stella981 Stella981
3年前
Devops与敏捷二者能否结合?
当前软件行业的趋势倾向于使应用程序开发和部署成为业务运营的重要组成部分。这些公司开始专注于实现像DevOps解决方案这样的方法,这有助于缩短产品开发时间。使用DevOps进行开发减少了交付软件所需的阶段。软件交付时间短允许用户尽早部署软件,并通过更多的反馈为业务增加价值。DevOps与敏捷的结合DevOps的实施主要集中在软
细说敏捷测试-敏捷实战中的探索 | 京东云技术团队
敏捷开发是一种思想或方法论,就是通过不断迭代开发和增量发布,最终交付符合用户价值的产品。
邢德全 邢德全
11个月前
MES系统怎么实现车间管理中的生产计划和排产计划
MES中的生产计划和排产计划都是制造企业中非常重要的概念,它们的目的是为了确保企业能够按时交付高质量的产品,同时还要保持生产效率和成本效益。
敏捷开发 敏捷开发
4个月前
实践了上万次,原来这些才是敏捷测试需要遵循的原则
与传统的阶段性测试不同的是,敏捷测试能够将测试集成到整个软件开发过程中,尽早、及时地发现缺陷,帮助交付有价值的高质量产品。传统测试与敏捷测试的比较大的区别在于:在瀑布方法中,测试只能在开发结束后进行;在敏捷方法中,测试是贯穿在整个开发过程中的,同时可以在需
敏捷开发
敏捷开发
Lv1
女 · 产品经理
公众号:敏捷开发 网址:www.minjiekaifa.com
文章
44
粉丝
2
获赞
0