liu_qiang

敏捷开发方法--11061188

传统的软件开发有个很大的特点:典型的“边写边改“。在软件规模较小,需求固定的情况下,这些开发方法一定程度上发挥了作用。但是随着软件规模的越发增大,对工程进行调试,以及对已有代码进行优化重构就显得愈加困难。这里面有两个重要因素:需求的不固定性,以人为本的思想。

与其他的工程领域不同,软件开发过程存在着很大的不确定性。不确定性来自两方面:开发着对业务实际需求的不清楚。以及客户使用后对需求提出的新要求。而传统软件方法更适用于需求固定的开发模式,这也造成了传统方式的效率底下。当工程较大时,甚至不能提前预知调试bug及重构代码所需时间,更多增添了一层不确定性。

传统方式更类似于工程型方法。工程型方法的目标是定义一个过程,忽略人在开发中祈祷的作用。而敏捷型方法则认为没有任何过程能代替开发组的技能,过程起的作用是对开发组的 工作提供支持。实际上,”敏捷宣言“的主要规则之一就是:个人之间的交流比过程,工具更重要。团队的个人以及个人间协同工作的方式是项目成功的两个重要因素,比对过程和工具的选择重要得多。

对于适应性,敏捷开发提供了一些解决方案。对于不可预见过程的机制,迭代式开发就显得尤为重要。适应性过程能及时应付需求更新,迭代式开发则能经常不断地生产处最终系统的工作版本。开发过程中逐步对缺陷bug进行测试,提前解决了软件存在的隐含问题。迭代周期因人而异,但一般趋势是让它尽量缩短,这样就能更有效率地使开发工作准确地面向变化的需求。

对于客户来说,他们更希望签下稳定的价格合同。但软件开发的适应性又使这变得很困难。解决办法则是,固定时间和价格,而让范围能够可控制地变化。与此同时,客户参与到开发进度的检查等过程,也对更好地满足了适应性要求。在每一个迭代阶段中,他们都能检查开发进度,也能变更软件开发方向。更密切的关系,使得开发者可以更好地了解客户需求。客户也可以根据变更了的业务需求和实际使用情况,来及时要求改变一些系统功能。

通过上述方式,一定程度上减轻了适应性对软件开发带来的困难。而”以人为本”的思想也是敏捷开发与传统开发的一大区别。

传统开发模式中,程序员只是作为可替代的部件存在。严格根据实现制定的计划蓝图,一步一步事先预定功能。但忽视了人作为开发主体的作用。这一劣势在适应性更高的软件开发中愈发显现。

一个关键之处是让大家接受一个过程而非强加一个过程。 通常软件开发的的过程是由 管理人员决定的,如果管理人员已脱离 实际的开发活动很长时间,则这样的过程难免受到抵制,无意中浪费了大量人力。接受一个过程需要一种“自愿致力” (commitment),这样大家就能以积极的态度参与进来。同时在开发环节还特别需要技术人员与业务专家的沟通,一方面方便技术人员更好地了解软件需求。通过对相关行业知识的理解,开发出更适合客户需求的软件产品。

 在早期的敏捷开发方法中,极限编程(XP)是最著名的之一。其基本思想是: 实践是项目组的日常的具体活动,而价值观是根本性的知识和理念,其构成了该方法基石。对测试的极端重视也是它最显著的特点之一。在不对代码的功能特征作任何改变的前提下,修改现存代码的结构以提高设计的质量是其使用的重要技术。在进行极限编程时,需要不断地使用重构。面对一项新功能时,若已有代码不能使轻松加入改功能,则需要重构。通过持续不断的重构,代码质量会提高到一个相当高的标准上.

总之,相比于传统开发方法,敏捷开发更能满足当代软件开发的需要

 

posted on 2013-10-16 00:09  liu_qiang  阅读(155)  评论(0编辑  收藏  举报

导航