现实生活中,软件的需求往往不是在设计阶段就非常明确,而是处在不断的演化中,贯穿于软件的整个生命周期。由于需求的不明确及其变化,导致软件开发的各个阶段都要随之变化,包括分析建模、概要设计、详细设计、代码设计、软件测试等等,因而对软件开发的成本、工作量、开发进度、软件质量都形成了严峻的考验。
在研发过程中,由于需求的变更而引起的分析、设计、编码、测试等阶段的变更数不胜数。同时在研发中的不同阶段,由于需求的变更而带来的修改难度也存在很大的差别,而利用良好的管理工具和处理手段可以较好的应对这些变更。
1、敏捷软件的开发方法
敏捷方法是来源于实践的方法,可在非常短的迭代周期内应对需求的不断变化,并且提供了轻量级的软件项目管理和开发、维护的思路。所谓轻量级就是能根据需求变化快速地做出反应。敏捷方法是“适应性”而非“预测性”,目的是成为适应变化的技术过程。而传统重量级的软件开发方法是试图对一个软件开发项目在很长的时间跨度内做出详细的计划,然后依照计划进行技术开发,在项目计划制定完成后拒绝变化,这显然是不可行的。敏捷软件开发方法是“面向人”的而非“面向过程”的,强调软件的开发应当是一项愉快的工作,应使软件开发工作能够利用人的特点,充分发挥技术人员的创造能力。
敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。也就是把1个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
2、敏捷开发平台的实现
2. 1敏捷开发流程
敏捷开发平台主要用于开发基于J2EE架构MVC模式的Web项目,其架构主要由开发环境(Eclipse及其插件、Struts、Hibernate等)、源代码仓库(Subversion)、构建服务器(Cruise
Control、JUnit、Ant及代码检验模块Check Style)、Web服务器(Tomcat、HttpUnit、JMeter)等几部分组成。图1给出了敏捷开发系统流程。
首先需要从源代码仓库中获取全部最新的源代码,然后编写程序的代码和相应的单元测试代码,以保证程序能够通过编译并且所有的单元测试全部通过,再提交代码,将代码检入到源代码仓库中。持续集成工具Cruise
Control的源代码监视及管理模块监测到源代码仓库中的代码发生变化后,由Ant执行任务,首先初始化目标目录,将目标目录清空后,创建源程序目录、测试程序目录和class目录,接着从源代码仓库中检出源代码到源程序目录,检出测试代码到测试程序目录,然后调用代码检验工具Check
Style检验源代码是否符合事先配置好的代码规范,再编译源程序生成目标类,并调用JUnit测试框架进行测试,如果测试全部通过,即可将整个Web应用打成1个WAR包,并将这个WAR包发布到Web服务器。
2. 2敏捷开发平台的搭建
在敏捷开发过程中,通过配置管理软件对源代码进行管理和控制,就可以实现任何开发人员都能够很容易地获取到全部最新的源代码。关键的环节是自动化,能够自动根据配置的时间间隔读取配置文件并进行循环构建。构建过程中所做的工作主要是访问源代码仓库,检测源代码仓库中代码是否发生变化。如果发生变化,应获取源代码的最新版本,并根据配置信息首先对代码进行检验,再对代码进行一次构建,创建一个日志文件,最后向项目组所有人员通知代码的检验结果和构建结果。如图2所示敏捷开发平台框架。
敏捷开发框架是基于SOA的软件开发模式设计并运用J2EE技术实现的应用程序开发框架。该系统综合利用了ESB技术、EIP设计模式、IOC模式、构件设计、管理、组装技术以及数据集成和数据交换等关键技术,具有良好的与其他软件开发管理系统接口的能力。该系统并非直接为最终用户服务,而是为开发最终用户的应用系统提供一套工具和运行平台。它可以使开发人员专注于应用系统核心业务逻辑的分析、设计和开发,极大地增强了软件应用的伸缩性和灵活性。基于敏捷开发平台开发的应用程序符合松散耦合、可重构的系统需求。
3、敏捷开发方法
VISIONONE公司在2008年6月至7月进行了关于敏捷开发的问卷调查,根据得到的来自80多个国家的超过2300份问卷反馈得知,95%的公司在软件开发中使用了敏捷方法,其中超过60%的公司使用超过了一年时间。
Scrum和XP作为最重要的两种敏捷方法,超过70%的公司在使用,下文简要介绍这两种常用的敏捷开发方法。
敏捷方法是数十种“方法集”的统称(“方法集”就是为了开发软件而定期做的每一件事情),包括比较有代表性的Scrum、Extremeprogramming
(后文简称XP),Unified Process和Crystal Clear等。这些“方法集”共同的特点就是轻量级,迭代增量式的开发和交付,以及适应需求变化。
3.1 敏捷方法之一:Scrum
SCrum的创始人是Jeff Sutherland和Ken Schwaber,他们在1995年提出了Scrum方法。近年来Scrum已经变成了敏捷开发中最流行的方法之一。Scrum使用“产品backlog”、“Sprint
backlog”和每日例会(Daily Scrum Meeting)分别对整个项目、每个迭代周期和每个工作日进行计划完成情况追踪,并根据每日例会、Sprint计划会议和Sprint评审会议得到的反馈,不断对项目开发计划和过程进行调整。
3.2 敏捷方法之二:XP
XP是一个非常著名的敏捷方法,最早是由Kent Beck在1996年提出的。XP注重使用更短的迭代周期(1至2周)和大量的工程实践,包括用户故事、结对编程、持续集成、测试驱动开发,重构和自动化测试等。
4、敏捷方法的应?
在欧美外包项目中,需求分析工作贯穿于产品开发的始终,而且需求变更会经常发生。敏捷方法作为“拥抱”需求变化的方法,是最适合这类项目的。
另一方面,敏捷方法采用短周期迭代和增量交付的方式,可以最大程度的避免需求理解的偏差,并且帮助客户明确和完善需求。特别是Scrum在每次迭代结束的时候,开发团队通过产品演示阐明了对需求的理解,同时根据在演示中双方的沟通,明确一些有歧义的需求,并且引导客户对需求进行进一步的完善。
除此之外,敏捷方法也能满足欧美客户对开发过程的其他方面要求。比如,客户希望开发团队采用本公司熟悉或者与本公司软件开发类似的开发方法。
事实上,敏捷方法被世界上越来越多的公司和团队使用,并且项目成功率和质量很高,欧美很多公司也有敏捷方法的实践,所以一般来说欧美客户很容易接受团队使用敏捷方法。再比如,客户希望可以经常得到可以运行的版本,帮助他们通过给潜在终端客户的演示,了解市场和最终客户的需求,这无疑也是敏捷方法的强项。
5、结束语
敏捷方法作为近年流行的一种软件开发方法,由于适应欧美软件项目需求频繁变化的特点,同时满足客户对于短周期增量交付的要求,在欧美软件外包行业中得到了越来越广泛的应用。经过多年的时间证明,敏捷方法能够提高开发团队的生产率,产品的质量和客户的满意度。对于软件外包服务商而言,在公司组织级需要采取相应的措施,以对敏捷团队进行支持和监控,并满足客户不断提高的要求
|