有关敏捷开发的一点感想[110617班 刘耀先]

敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。这是百度上对于敏捷开发的一个定义。从这个定义上来说,敏捷开发实际上是将一个庞大的项目分解为很多个小的项目进行实现。这样的好处就是能够使得在工作的每个人都能够处在比较轻松但同时有工作可做的情况。而这也使得工程周期变短。

Martin Fowler是敏捷开发的创始人。他从上世纪80年代就开始了他的软件开发之旅,在此期间,他通过与别人的不断探索与创新,产生了敏捷开发的思想。2001年2月,17名像Martin Fowler这样、在软件开发各领域有所建树的大师们,汇聚在犹他州Wasatch山脉中的一处滑雪场内,用3天的时间放松、讨论。而这次讨论的结果就是被称为Agile Software Development的软件开发方法。这种新型的方法摆脱了传统的以文档为驱动的、笨重的软件开发模式,而是从用户核心需求入手,在短时间内拿出一个原型,然后根据用户的其他需求增加模块,同时修改和完善。这种方便快捷同时又极其便利的方法彻底改变了人类开发软件的模式。

Martin Fowler的新方法虽然看上去很好用,但是其中引申出了一个问题,那就是我们将一个程序分解成为了很多歌小部分,那么从这一点上来说程序设计中的“设计”不就没有了么?这个问题从敏捷编程提出到现在一直有人提出。

敏捷编程的一个核心思想就是主张简单。当从事开发工作时,你应当主张最简单的解决方案就是最好的解决方案。不要过分构建你的程序。如果你现在并不需要这项额外功能,那就不要在模型中增加它。要有这样的勇气:你现在不必要对这个系统进行过分的建模,只要基于现有的需求进行建模,日后需求有变更时,再来重构这个系统。尽可能的保持模型的简单。这样的思想看上去使得程序设计完全变成了无脑的代码累积。

然而,真正的程序设计并不是真的将设计从编程上抹消了,而是将编程与程序设计这两个本身是不同的工作明确的分开了。编程时程序员的工作,而软件设计是SE的工作。敏捷编程实际上就是将本身的一个混杂的工作分清楚,这原本是和编程混在一起的。程序设计真正的工作是去了解一个程序的构架,而不是去注意程序具体是用怎样的语言写或者用什么样的语法去实现。将程序设计作为单独的一项工作来处理,这是这个思想的真正重要的核心。

从表面上看,敏捷编程看上去非常好懂得样子。但是实际上敏捷编程相对传统的瀑布编程而言并不简单。敏捷编程是一种思想,是一种对于团队提出要求的思想。敏捷编程的高要求在于对于团队的要求。团队中的每个人都要在与别人要求相符合的情况下开始自己的工作,这也使得单个人的能力受到了限制。如果有队员对于自己的工作有所疑惑,那么工程将会变得难以进行下去。从这点上看,团队是敏捷编程的一个重要对象。

而不论是什么样的设计思想,我们最终的目的都是“通过尽早和不断交付有价值的软件满足客户需要”。客户的要求,永远是软件设计的最重要的组成部分。

原文地址:https://www.cnblogs.com/deathmoon/p/3371356.html