敏捷开发方法综述
2014-03-19 19:09 铿锵玫瑰—叶 阅读(399) 评论(0) 编辑 收藏 举报一、传统软件开发方法
传统的重量级软件开发方法存在很多局限:
(1)传统软件开发过程是基于设计之初正确的设计与估计.并通过开发人员开发出完美的产品。开发方式以“明确需求”为核心.从需求分析、软件设计到系统实现,再进行集成和测试。这样,系统集成进行得比较晚,集成的时间周期比较长,集成时发现的缺陷也比较多。
(2)虽然目前有许多项目采用增量迭代的开发周期,但是通常项目在部署前才发布版本,用户只有在部署后才能看到真正的系统.因此,用户会提出很多修改意见,包括流程方面的问题.有此问题可能会影响到系统的架构设计。
(3)开发人员由于进度或成本等因素,对单元测试重视程序不足,又缺乏有效的回归测试方法,这样,对于用户提交的Bug,开发人员对Bug的定位时间会比较长,因此,修改的周期也会比较长。
(4)传统的开发方法中规定了各种文档,如需求分析、软件设计和各种测试文档等等。在软件开发过程中变更是不可避免的,但是经常需求变了、设计变了,程序变了,而相应的文档却没修改。时间越久,文档就越不符合实际情况。
为克服以上限制,敏捷开发方法应运而生:
二、敏捷开发方法
敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备继承和可运行的特征。换言之,就是把一个大项目氛围多个相互关系,但也可独立运行的小项目,并分别完成,在此过程中,软件一直处于可使用状态。
1、减少风险
2、减少重复过程
3、任何时间、任何地点生成可部署的软件
4、增强项目的可见性
Refactoring重构
优点:
-
能改进软件设计使软件更容易被理解
-
能帮你找到bug
-
提高软件的开发速度
Pai-Programing:结对编程技术
是指两位程序员肩并肩地坐在同一台电脑前合作完成同一个设计、同一个算法、同一段代码或同一组测试。与两位程序员各自独立工作相比,结对编程往往只需花费大约一半的时间就能编写出质量更高的代码。
Stand up:站立式会议
是一种新型的会议方式,为一些新兴科技公司所开创。它提倡员工可选择以站姿而不是坐姿来开会,以身体的放松来带动精神的放松,一方面提升工作效率,另一方面也有助员工身体健康。
Frequent Releases:小版本发布
敏捷开发中,尽量多的发布以周、月为单位的产品,这样客户每隔一段时间就会拿到发布的产品进行使用,通过反馈信息来改进产品。这样可以与客户的需求和变化进行很好的互动。
Minimal Documentation:较少的文档
敏捷开发中并不是没有文档,而是由大量的文档,即测试。这些测试代码真实地反映了客户的需求以及系统API的用法,如果有新人加入团队,最快的熟悉项目的方法就是给他看测试代码,如果用书面文档或者注释,某些代码变化了,需要对文档进行更新。
Collaborative Focus:以合作为中心,表欣慰代码共享
在敏捷开发中,代码是贵团队所有而不是某些人,每个人都有权利或的系统任何一部分的代码然后修改它,如果有人看到某些代码不好的话,拿她能够对这部分代码重构而不需要征求代码作者的同意,很可能也不知道谁写的这部分代码。这样每个人能够熟悉系统的代码,技师团队的人员变动,也没有风险。
Customer Engagement:现场客户
在敏捷开发中,客户是与开发团队一起工作的,团队到客户现场进行开发或者邀请客户到团队公司李开发。如果开发过程中有什么问题或者产品经过一个迭代后,能够以最快的速度得到客户的反馈。
Automated Testing:自动化测试
为了减小人力或者重复劳动,所有的测试都是自动化的,这对QA人员提出了更高的要求。他们要熟悉开发语言、自动化测试工具,能够编写自动化测试脚本或者实用工具录制。
Adaptive Planing:可调整计划
敏捷开发计划是可以调整的,需求分析-概要设计-详细设计-开发-测试-交付,每一个阶段都是有计划的进行。
总之,敏捷开发与传统开发过程有很大不同,在这过程中,团队是有激情和活力的,能偶适应较大的变化,做出更高质量的软件。