从BDD到TDD,各种敏捷技术的优缺点

尽管这份清单并非详尽无遗,但要理解的重要一点是,敏捷并不是一个严格的规章制度。

从外部看,敏捷可能看起来像是一套实践。但是一旦你进入它,你会发现敏捷实践者会用许多不同的技术。你如何找出哪些适合你和你的团队?

以下是各种敏捷框架和技术的优点和缺点。

行为驱动开发(BDD)

定义

BDD是一个练习,团队成员讨论系统的预期行为,以建立对预期功能的共同理解。它综合并优化了源自测试驱动开发(TDD)和验收测试驱动开发(ATDD)的实践。

为什么选择

BDD将重点放在提供特定功能而不是最小可能的单元上。这很重要,因为它可以确保提供业务所需的价值。

它如何令人失望

你正在测量功能,但不一定是基础工作的质量。除非你也在进行测试驱动的开发,否则你会冒着错误的方式构建正确的事情的风险 - 使用以后难以维护或扩展的代码。此外,可用于支持BDD的软件工具也较少。

分布式敏捷

定义

我的看法:分布式敏捷是指在不同地点,组织甚至时区使用敏捷团队成员。分布式敏捷团队使用即时消息,电子邮件,视频会议和其他工具来协调他们的日常工作,而不是面对面的会议。

为什么选择

分布式敏捷可以避免任何空间限制,技能和经验在您的直接位置。像Slack,Skype,团队和环聊等现代协作工具使这成为可能。实际上,你可以在不同的地方一起讲故事,在不影响同事流动的情况下提出问题。

信任,融洽和沟通仍然至关重要。这就是为什么当你在任何特定位置至少有两名队友时,分布式敏捷效果最好,他们定期面对面见面,并且很好地理解彼此的语言和文化。让整个团队在短时间内和类似的时区内工作很有帮助,因此您可以轻松地在物理上以及在需要时进行协作。当你试图破解一个棘手的问题,获得业务或用户的反馈,或只是加入新的团队成员时,团队的团结就会产生重大影响。

它如何令人失望

当通过站立和其他正式和非正式协作进行快速,频繁的沟通时,敏捷运作效果最佳。这就是为什么传统的敏捷专家相信只有当团队百分之一百地位时才能运作。

我的经验是,你绝对可以在一个或两个时区内实现这种强有力的合作,但当时区,语言和文化方面存在重大差距时,它开始崩溃。站立的重点是团队沟通和前进。你可以举行一次体面的全球地位会议,但试图挑选一个人人可以在全球站立起作用的时间是非常困难的,即使不是不可能的。

看板kanban

定义

“看板方法是设计,管理和改进知识工作流程系统的一种手段。它还允许组织从他们现有的工作流程入手并推动进化变革。他们可以通过观察他们的工作流程,限制正在进行的工作(WIP),停止开始并开始整理来做到这一点。看板方法的名称来源于使用看板:视觉信号机制来控制无形工作产品的进展。“

为什么选择

Kanban适用于管理支持的场景,在这些场景中,你并不总是知道工作何时进入。当可能有其他衡量价值/生产力的方法(如关闭缺陷)时,它尤其有用。看板还可以让你花更少的时间在像日常站立,演示和回顾的“开销”活动中。

它如何令人失望

看板对于新的敏捷团队来说可能很困难,因为这个过程并没有像其他方法那样明确定义。没有演示,所以团队没有从业务部门获得关于他们是否提供正确的东西的反馈。而且由于没有短跑回顾,改善你的过程可能很困难。无限期地容易陷入一个糟糕的过程中。

结对编程

定义

配对编程由两个共享单个工作站的程序员组成(一对屏幕,键盘和鼠标)。键盘上的程序员通常称为驱动程序;另一方面,积极参与编程任务,更注重整体方向是导航员;预计程序员每隔几分钟左右交换一次角色。

为什么选择

结对编程专为处理复杂任务而设计。当你入职新开发人员时,这对于知识转移也很有帮助。使用结对编程,你可以提高整体质量。

它如何令人失望

结对编程对于例行任务来说可能是过度的,例如当模式已经建立时,或者当创建值对象时。让两个开发人员共同完成这些任务可能不是花费企业资金的最佳方式。此外,一些开发人员自己也更快乐,更高效地工作。我建议你让他们。我是一个结对编程的倡导者,只要你给予你的团队什么时候有意义和什么时候没有意义的自主权。

Scrum

定义

Scrum是一个用于管理产品开发和其他知识工作的过程框架。 Scrum是经验性的,因为它为团队提供了一种方法来建立他们如何思考某些事情的工作假设,尝试一下,反思经验并做出适当的调整。

为什么选择

Scrum提供了明确的流程定义。这意味着团队成员确切地知道他们的期望。有很多检查点,以确保您继续提供价值,而不是脱离轨道。总的来说,scrum是产品开发的一个很好的方法。

它如何令人失望

当团队只知道流程 - “我们所做的事情” - 而没有完全理解我们为什么要这样做时,Scrum是一种斗争。例如,每日站立应该是提供透明度和发现路障来推动项目前进的一个快速挤塞。但是糟糕的立场可以变成40分钟的状态报告。这可能会使业务感觉良好,但不会推动工作。同样,没有坦诚反思的回顾可以变成“拍背”会议,而不是改善未来冲刺的机会。

测试驱动开发(TDD)

定义

测试驱动开发是一种编程风格,其中三种活动紧密交织在一起:编码,测试(以编写单元测试的形式)和设计(以重构的形式)。

为什么选择

TDD执行更高质量的编程。通过TDD,可以编写足够的代码来满足测试。这会产生更模块化,更精简的代码,不仅经过测试,而且更具可扩展性和可维护性。 TDD还可以降低总体拥有成本(TCO)。你有更少的缺陷。当修复成本较低时,您还可以在周期的早期捕获缺陷。

它如何令人失望

TDD可能需要四到六个月才能熟练掌握。在这段加速期间,TDD会减慢你的速度。 TDD还需要额外的前期投资。但这最终被较低的长期成本所抵消。

虽然这些是最常见的敏捷实践,但这个清单并非详尽无遗。要记住的重要一点是,敏捷并不是一个严格的规章制度。这是一种灵活的迭代式软件开发方法,尤其适用于追求产品理念的企业,重点在于敏捷性,上市速度和客户体验。不同的组织将以不同的方式到达那里,但所有这些组织都可以从找到适合他们的敏捷风格中受益。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180419G1K7AR00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券