技术开发 频道

敏捷软件开发方法之谈

【IT168 分析评论】

    DreamHead毕业于我们学校,一直从事软件开发,其长期在第一线的软件开发积累了不少经验和方法,在我们的xiyoulinux论坛上,让他谈谈多次提到的敏捷软件开发方法,以下是他个人的看法:

    敏捷软件开发,实际上,也是一种开发方法。我知道,大家一听到开发方法,都会感觉头痛的。一方面,作为学生,开发方法这种东西,只是在软件工程的课程上听说过,-而自己实际的经验又不多,另一方面,提起方法学,本身显得很抽象,比较理论化。但实际上,所谓开发方法,其实就是一个解决问题的过程。比如说,遇到一个问题,我-们要分析问题,然后动手解决,最后还要检查一下解决得是否正确,对应到软件开发中,这就是需求分析、开发和测试等阶段。

    既然都是软件开发,那为什么还会有不同的方法呢?这和大家平时学习一样,为什么同样的课程,不同的人学起来,结果也差很多呢?其实,最主要的差异就是人和人的学-习方法不同。传统的软件开发过程(也就是常说的瀑布式模型),把软件开发严格的分为若干的阶段,比如前面提到的分析、开发和测试等等,每个阶段做完,才进入下一-个阶段。这样的结果是,对于稍微有些规模的软件,常常是每个阶段都要进行几个月,在很长一段时间之后,才能看到一个软件开发的成品。道理上说,这样的工作是没有-问题的,但软件开发从来就没有这么简单过。就像大多数人考试不可能每次都考100分一样,指望一次做出来的软件就让客户满意是不现实的,所以,常常用户会告诉你-,这不是他想要的,他要这个那个。于是,软件必然要经历一个修改的历程。所以,对于大多数软件而言,变化是必然的。敏捷软件开发的一个口号就是拥抱变化。

    其实,我们可以把敏捷软件开发看作很多人经过多年实践探索出来的一些好的开发实践。比如说,迭代,既然变化无可避免,那么越早让用户见到一个可以运行的东西,他-就会越早提出自己的反馈意见,这样,我们就可以在后面的开发工作中,更好的满足客户的需要。迭代,本质上就是一个小的瀑布模型,但是正是因为它很小,所以,可以-在很短的时间内完成。

    对于程序员而言,比较实用的实践是重构和测试驱动开发。重构就是代码在实现基本功能之后,重新进行调整,让它具备更好的结构。这里面有一个很重要的观念,代码需-要的不仅仅是完成功能。测试驱动开发,就是在写代码之前,先把测试写好,然后,编写代码让测试通过。我曾经写过一篇blog,专门聊了一下这个话题。有兴趣的话-,可以参考一下。

    其它的一些开发实践,比如持续集成,结对编程都是可以尝试的。还有一些实践,可能对学生而言,稍微有些距离,比如开发之前,做业务分析,划分Story Card。

    这里不可能一下子把敏捷开发的所有内容都讲出来。只是给大家开个头,如果有人有兴趣,可以发邮件来讨论一些更细节的东西。再推荐几本书Kent Beck的《极限编程解析》(极限编程可以理解为敏捷软件开发的一种)和《测试驱动开发》,Martin Fowler的《重构》,还有Robert Martin的《敏捷软件开发》(这本书实际上是一本关于设计的书,也是让我在设计上真正入门的书)。

    对于学生而言,我并不是特别鼓励大家过分强调工程方面的东西,但学习一些好的做事方法是应该的。我知道的,曾经有人在西安交大的实验室,组织大家用敏捷软件开发-的方法来做开发。所以,大家可以尝试一些简单的开发实践。

0
相关文章