对于开发模型,我向来学习部深,也许是因为没做开发的缘故了,不过之前对RUP开发模型还是颇有了解,在大学实习期间,这可能是我那次实习中最大的收获了...敏捷,源于什么开始了解,我已经模糊了,不过最近到是开始去了解他了,因为一个朋友的公司居然由于这个敏捷开发模型,导致项目做的很烂,我那朋友也是做测试的,所以经常在一起聊,听说当初去那家公司也是源于敏捷开发,引起了他的兴趣,其实这个并不奇怪,因为敏捷已经在这个时期在开发管理过程中引起广泛的关注,所以当然我也不例外,不过作为一个测试人员,对模型的了解仅局限于过程实施,毕竟没有开发以及项目管理者那么受青睐,最重要的实施者必然是他们.不过说到敏捷开发,必须也有敏捷测试,关于近期公司准备组织大家去培训敏捷模型的课程,相信我们的项目运行方向也是趋于敏捷了,所以我也开始逐步了解一点点了.
敏捷,从字面上理解就是对事务的反应速度,将这种速度演变到软件开发中就是效率,如何更高效的完成软件开发,我想这就是敏捷开发的精髓.但是敏捷的诞生是源于什么呢,从软件开发的过程来分析,我们再开发过程遭遇最多的问题就是需求,如何合理分析并得到稳定的需求,是项目开发成败的关键因素,因为用户只想得到自己想要的东西,那么一旦开发人员误解了用户的需求,最终交付的产品必须满足不了用户,所以如何解决需求随时随地变化地问题,已经成为近年来软件开发过程中最大的难题.所以,直到敏捷的出现,让大家有些豁然开朗,软件软件开发可以这样收放自如,这样随心所欲,并且毫不拒绝用户的任何需求,哪怕是任何时间任何阶段.用于一句英文广告语来表示,那就是"Just do it!"
简单的说,敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。敏捷创始人的创作意愿表明,敏捷是一种思想,它需要的是Actor。其实我认为这个Actor就是执行者,而且很好很强地执行者。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。那么敏捷模型实践流程又与技术和管理有什么关系呢,下面我们具体来从这些方面了解一下.
从技术实践上来讲,第一个方面就是说敏捷开发是体现个体与交互重于过程和工具,很多人都觉得敏捷只是一个过程,给这个过程制定严格的标准,就可以完成,其实不然,更多项目失败的原因就是因为没有理解,敏捷是以人为本,敏捷的改变就是一个一个人的改变.第二个方面谈到,持续部署就是王道, 我想这也是敏捷最突出的一个表现,在快速响应用户需求的同时,其实用户也想快速得到想要的结果,所以开发人员能快速展现成果就是通过快速的部署,但这种部署并不是没有准则和周期的,必须是严格控制且真正提高效率的过程.第三方面,其实源于第二点,但是也是敏捷模型成败的主干,也就是敏捷死于产品交付的压力,敏捷并不是保证交付的银弹,敏捷也从来不是提高交付速度的工具,敏捷和其他所有项目一样,当交付压力过大时,很可能面临失败。因为敏捷的迭代化特征,使这个交付压力从第一个迭代就能体现,而如果这个交付压力不能够很好的解决,比起传统瀑布式项目来说,更容易造成失败。敏捷的迭代式开发也许让我们沮丧,因为我们再也没办法尝试对程序员隐瞒我们交付压力过大的事实,而领导者要做的其实很简单,不管用什么办法,让团队拥有最合理和最现实的交付压力,这样的结果一定不是又快又好,但一定是在合理的速度下达到合理的质量标准。领导者们,你们在某种意义上来说不是团队的领导者,而是团队的保护者,敏捷是帮助你随时发现团队危险的工具,请把你的团队保护好,不要它从一开始就死掉。
从组织管理上来谈敏捷,有这三点,首先,持续集成的习惯怎样养成的,有时候我们总以为持续集成只是技术问题,当我与我那个朋友聊到他们项目总是处于部署过程就出现问题,那么为什么总是在这个阶段出现问题呢,也许我们认为是环境配置等问题,所以每次他都疲于调试,但最后总郁闷丛生,因为问题是在开发之中,而并非环境问题,所以说持续集成建设中遭遇的一些典型难题,归根结底都不是技术问题,而是人的问题。 其实,就是合理的安排敏捷开发过程中人员分配问题,这里我从朋友那里听到最多的话就是加班,因为测试任务和部署都是他来干,结果就是任务不能合理的完成,遇到问题也不能快速定位和解决,开发人员和测试人员的比例也是极其不符合敏捷开发模型的准则,所以他在这个项目中总是很痛苦,因为敏捷并不是敏捷.以此来看,还是要回归到敏捷的宗旨,以人作为项目核心驱动.
敏捷,一个新的方向,但是也可能是一个新的误区. 虽然国内已经引入敏捷不短的时间了,可是能将敏捷在项目中实施成功,屈指可数. 正如敏捷创始人Dave Thomas表示,“敏捷并不是一个产品。敏捷的产生,是因为当初我们犯了错误,所以我们总结出4条原则,希望节省后来人的时间。但是,学习敏捷不能模仿,不是复制,更不能抄袭。敏捷是一种思想,它需要的是行动者(Actor)。”