近些年来,开发人员开始青睐更迭代性的流程,因而更容易兼顾项目范围和需求出现的变化。敏捷软件开发以及似乎无穷无尽的变种方法已越来越常见。现在它们成了主流的编程方法。
我们在本文中介绍了十种最流行的软件开发方法的功能特性,包括敏捷、Scrum、精益、极限编程,甚至还有瀑布方法。
1、敏捷软件开发
2001年,17位软件开发人员签署了敏捷宣言(Agile Manifesto),因此载入史册。自那以后,敏捷软件开发迅速流行起来;实际上,在2015年弗雷斯特调研公司的一份报告中,54%的受访企业表示,其内部一半以上的开发团队在使用敏捷方法。敏捷理念基于12个核心原则,这些原则注重简短迭代、持续交付、简洁性、回顾以及最终用户和开发人员之间的协作。
2、Scrum
敏捷软件开发有多种版本,Scrum是最受欢迎的版本之一,接受《2015年敏捷现状》报告调查的受访者中70%表示,他们采用Scrum或Scrum混合方法。这是一种协作框架,最先由杰夫·萨瑟兰(Jeff Sutherland)在1993年发明。它把复杂项目分成了多个简短的迭代开发周期(sprint),每个迭代开发周期为期两到四周,它注重勇气、专注、承诺、尊重和开放性这五个价值观。
3、精益软件开发
虽然精益开发通常与敏捷开发联系起来,但精益开发的原则实际上源自丰田公司的精益制造流程。这套开发方法依赖七个关键的原则:消除浪费、促进反馈、尽量延迟决策、快速交付、融入完整性、授权团队和着眼整体。2003年,精益首次引起了软件开发界的注意,当时玛丽·波彭代克(Mary Poppendieck)和汤姆·波彭代克(Tom Poppendieck)出版了《精益软件开发:敏捷工具包》一书。
4、看板
看板是敏捷软件开发的另一个变种,灵感源自丰田公司。它为开发人员提供了一种直观的方法,可以查看什么工作需要完成,让他们得以在有精力时可以“拉取”工作,而不是“推送”工作,以完成某些任务。看板依赖三个核心原则:可视化今天处理的工作,限制在制品,并改进流动。
5、快速应用开发(RAD)
这些年来,几种不同的软件开发方法使用了RAD这个名称。最知名的也许当数詹姆斯·马丁(James Martin)的方法,这套方法于上世纪80年代问世于IBM。它被认为是一种敏捷方法,因为它注重适应不断变化的需求这种能力,不再强调事先规划。
6、测试驱动型开发(TDD)
测试驱动型开发与敏捷软件开发和极限编程都有关。这种方法由肯特·贝克(Kent Beck)及其他人首创,需要开发人员先为任何新的功能特性编写一个测试,之后开始编程工作。它鼓励开发人员极量少编写代码。
7、极限编程
这种敏捷软件开发高度依赖结对编程。与其他敏捷方法一样,它注重快速迭代和频繁的需求变化。它由肯特·贝克开发,此人是敏捷宣言的签署者之一,曾在1999年出版了《极限编程详述:拥抱变化》一书。
8、统一软件开发过程
这种软件开发方法以发明它的公司Rational Software命名,2003年IBM收购了这家公司。一些编程方法非常僵硬,统一软件开发过程却旨在可以轻松适应独特的情形。它是一种迭代框架,高度依赖可视化模型。
9、螺旋模型
上世纪80年代中期,巴里·贝姆(Barry Boehm)最先描述了螺旋模型,这是一种风险驱动型模型,结合了瀑布开发、增量开发、原型开发及其他软件开发方法的元素。其核心是开发人员应该根据风险大小来做决定,他们应该尽量少编写代码,以便尽量降低风险。
10、瀑布模型
不像本文介绍的其他软件开发方法,瀑布模型是顺序式而不是迭代式。从计算机的初期直到最近,瀑布模型都是最常用的软件开发方法。它最适合小规模项目:所有的设计要求都是事先已知的。
原文标题:10 Top Programming Methodologies,作者:Cynthia Harvey