早在十年前,开发人员就发现了不同于传统瀑布式软件项目管理的工作方法。这种方法行之有效,而且可以帮助他们向客户更频繁地交付质量更高的软件。这些发现激发了他们的热情,他们开始撰文著述、在各种讨论会议上讨论,还找到了一群志同道合的朋友-他们工作方式相似但却不完全相同。正如敏捷宣言所描述的那样,2001年他们组织举办了一个会议,定义了一个公认的词汇把这类相似的工作方式概括起来。敏捷软件开发由此诞生。
敏捷软件开发有很多不同的实践和形式,它包含很多具体的方法论比如极限编程(XP),Crystal和Scrum,当然并不局限于这些方法论。其中大多数方法特点类似,采用增量迭代式的方法来计划、开发和部署软件项目。每个方法论均依靠反馈,提高软件项目的透明度,来发现那些通常易被个别人忽略或遗漏的问题。些额外提供的信息,可以让每个人都能更早做出更好、更明智的决定,从而能够适应不断产生的变化,并进行优先级调整。敏捷方法论的一个重要特点是需向客户频繁发布项目结果。发布时机尚未成熟,至少还可以提供可演示并且具备发布潜力的软件。
采用敏捷实践并不神秘。它只是尽力更快、更早交付价值的一种方式。敏捷方法的根基在于,它鼓励尽量先为客户交付系统中最具价值的部分。不同的实践让团队能够在保证质量的前提下完成任务。
终端用户不需要苦等整套系统全部开发完成,他们就可以从最具价值的部分提前获益了。为了达到这样的目的,敏捷专注于通过纪律性的工作方式提高沟通质量,增加从持续反馈中学习的机会,并且减少不必要的例行公事所带来的麻烦。举个例子,持续回顾将在整个项目周期里反复进行,以让团队仔细思考并且持续的调整他们的开发流程,以符合开发的具体场景。
敏捷团队的特点有哪些?不同的人工作方式各有不同,但其工作核心一致,即敏捷团队向终端用户频繁交付高水准的解决方案(通常是两周一次)。他们开发端到端的,而非叠层重复的系统,尽可能早的提供有价值、可演示的功能。他们采用丰富多样的交流方式,推崇通过交谈替代反复的文档传递,通过建立众多的反馈循环将项目带向成功。他们通过对真实数据的分析,提前发现项目进展中可能出现的问题,并不依赖项目成立之初所拟建的相关计划。从项目交付的各个角度进行考察分析后,团队就可以及早做好风险管控, 不至于到整个项目快要结束时才发现问题。基于事实的信息让投资者不再简单的期望项目的最佳方案,这些信息能为他们在做决策选择时提供了强有力的支持。 top^