Travel Beach

码农必看的软件敏捷开发技巧


在 2021-09-22 17:36 发布

敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发,也是如今很流行的软件开发方法,但是你真的知道什么是敏捷开发吗?


在软件工程领域,有过很多软件开发模型,如瀑布模型、快速原型模型、增量模型、螺旋模型、演化模型、喷泉模型、RAD模型、敏捷软件开发模型、XP极端模型。这么多的模型各有各的应用场景、各有各的适用范围,但我认为最实用开发模型还是敏捷软件开发。

中国式软件开发思路是什么样的呢?从我接触过的大多软件项目来看,基本都有一个共同特点——就是必须快,客户都是急脾气,恨不得今天立项,明天就要你拿出产品来。

面对公司和客户如此快节奏的要求,我们有办法吗?人们从生产、生活中总结出来一套即高效又优质的开发模式——敏捷软件开发。

一、什么是敏捷开发

1. 敏捷开发的定义

敏捷开发就是将项目拆分为多个子项目,独立开发、分别实现,尽快的产出交付给用户,收集用户反馈后立即调整优化,一直迭代到用户满意,最后集成为一个完整的极具用户价值的产品,且在此过程中产品一直处于可用状态。

2.敏捷式开发宣言

a.个体和互动高于流程和工具:人是最重要的因素,敏捷提倡打破部门的概念,人与人之间面对面沟通,交流。敏捷的办公室常常是很热闹的。

b.客户合作高于合同谈判:客户对产品的需求会随着他自己的认知和心情变化,能从一开始就确定细节的项目实在太少,经常与客户沟通,给予反馈才能促成项目的成功。

c.响应变化高于遵循计划:敏捷开发本身就是为了快速地响应市场变化,随时关注变化,以实际交付质量、真实的反馈去做衡量、决策,而不是遵循计划。我们需要做的就是调研要有足够的深度,方案要考虑后期的拓展性,尽量避免变化成为瓶颈甚至危机。如果你想晋升,更要关注学习整个过程中领导如何协调资源、解决困难、指导部署。


二、为什么要用敏捷开发

传统模式危机

◆对外:跟不上业务发展,错失市场机遇

20世纪50年代,计算机刚投入实际使用时,软件开发大多是为了特定的应用在指定的计算机编制设计,供小范围使用,简单、规模小且没有文档资料,更不用谈系统化开发。

随着技术发展,计算机应用范围的扩展,出现了数据量大、复杂程度高、软件稳定可靠的需求,催生了一些系统化的开发方法。

系统化解决了过去的部分问题,但面对互联网时代更大型、更复杂、陌生领域的项目,会产生更大且难以预测的问题;随着移动互联网时代兴起,这些问题愈发凸显,面对日益激烈的市场竞争,企业的反应能力成为关键商业因素。

显然,传统模式适合中小规模、简单的产品,无法高度兼容需求升级;面对不断变化的市场需求,开发周期长,研发时常跟不上业务发展节奏,导致客户/用户满意度低,甚至有可能错失市场机遇。
对内:团队耗能高、成本大、紧密度低
传统模式往往是线性流程,强调结构化、标准化,若有发生需求变更或问题出现,则涉及多个模块的调整,需要投入大量的时间、精力与金钱;团队成员只和上下游互动,缺乏信息共享意识,容易导致不透明、不信任,最直观的表现就是明明有沟通协配,但也很难形成团队共识;在规模较大的企业,人员众多、部门复杂、分工细化,跨部门协作经常出现信息不一致、沟通成本高、反馈不及时、紧密程度低等问题。

三、敏捷开发是如何实现的

1.将大的系统拆分成一个个子项目

把子系统拆分成子模块,尽量减少模块间的耦合性、增加其内聚性,这样我们可以把团队分成多个小组,各组可以同时作业。另外,当一个模块需求发生变化时,对其它模块的影响也不会太大,以实现降低开发难度的目的。

2.面对面的沟通


最快的交流方式就是面对面的沟通,在敏捷开发中,最提倡的方式是减少哪此冗余的、效率低下的沟通方式,用最快速的方法来直接沟通。让技术人员、设计人员、客户等所有团队成员都在一起办公,减少信息交流的断路,让沟通变得顺畅。
3.保持恒定的开发速度

项目开发是一次长跑,短期内迅速的加速,并不是长跑的方式,我们应该持续的、匀速的跑步方式,这样才能保证团队成员能一直坚持到最后。敏捷开发提供可持续的开发速度,这样不仅团队成员不至于疲惫,也有利于制定项目开发进度,控制开发周期。

4. 定期团队优化

我们会每隔一段时间进行一次团队建设,进行批评与自我批评,找出工作中的问题及影响个人与团队发展的瓶颈。我们通过交流、沟通方式找出团队及成员间的问题,然后进行自我调整,通过不断的优化、升级自有团队,打造出一个能战斗的队伍。

四、总结

★敏捷是一种理念,原则,价值观,不同的团队在实行这个模式都是不同的。

★敏捷团队的建立需要时间和经验积累,当任务出现问题时主动承担责任优于互相推诿,成员间切忌心存芥蒂,这样才能保持团队的凝聚力。