这周5和周6参加了两天公司组织的Agile相关知识的培训,对Agile的认识比以前更多了一些。初次接触Agile大概在四五年前,大约是刚上研究生的时候。在学校的图书馆中看到了敏捷开发和极限编程(XP)等字眼的书,当时没太在意,感觉自身的专业方向不搭边,随便翻翻看,发现也没怎么看懂,囧。
从这几年的工作经验来开,当时没看懂是应该的,看懂了才是怪事。Agile的开发模式需要有相当经历的开发经验的人才能够理解,因为这是一个“草根”的开发模式,或者说做事哲学。
1. Agile是什么?
很难对Agile有个明确的定义说明什么是Agile的,什么不是Agile的。Agile从出生开始即是为了解决软件开发中过重的开发模式而诞生的,为了减少文档驱动的开发模型中反馈周期过长,难以应对需求变化而诞生的。它是针对这些缺点而提出的改进方式。Agile的哲学是“结果是最重要的,所有的过程手段都是为结果服务的;如果过程导致结果不理想,那就改进这个过程”。因此,Agile的开发模式是一个逐渐改进的方式,直到Team能够应付不断的需求变化,能够快速响应,能够快速的给客户创造价值。我的理解:能够满足上述要求的开发模式都可以认为是Agile的。
2. 文档驱动 VS 测试驱动
常规的开发模式是以文档驱动的。需要有很详细的需求文档,根据需求文档进行初始设计、详细设计,然后是编码实现和测试。这种模式有其优点存在,比较适用于需求变化不是很大,变化速度不快的项目,典型的例子就是军方的武器系统的开发。但这种模式对民用软件行业,特别是互联网行业的项目而言就显的太沉重了,基本上完全不能快速的响应政策、市场和客户的变化。
Agile提出了以测试驱动的开发模式。Agile中的测试强调自动化的单元测试和自动化的集成测试。以大量的可以自动化运行的单元测试保证任何微小的改动在check in代码库中之前都是逻辑正确的,自动化的集成测试则可以保证不同模块之间的漏洞能够尽早的发现,能够尽早的fix bug,减少后期修改bug的成本。
Agile的开发模式中,是测试先行的方式。它的特点如下:
首先根据User Story编写测试代码,然后根据测试代码的要求完成逻辑代码。在这个阶段不关注逻辑代码的任何编码标准和规范,也不关注代码性能,以最小的时间代价实现正确的功能为终极目标。完成后开始运行测试代码,直到所有的测试点都通过。
完成上述任务后,我们就已经初步拥有了一个可以正常运行,完成核心功能的系统了,这时候可以让客户参与进来,和客户确认做出来的东西是不是真的是用户需要的。与此同时,开发team需要对代码进行重构,每次重构都需要进行所有的测试代码进行测试,保证重构后不会引入新的bug。好的代码结构是不停重构出来的。
3. Agile与技术架构的矛盾
Agile要求迅速响应变化,但变化经常给原有的设计带来挑战。Agile并不是不要设计直接进行开发,Agile模式仍然是需要一定的预先设计的。特别是系统的核心,如数据存储是DB还是文件系统,而且这些核心设计是不能够被推翻的,否则代价巨大不可接受。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/barfoo/archive/2008/06/29/2595942.aspx
分享到:
相关推荐
【IBM敏捷(Agile)培训】是一门针对希望通过敏捷方法提升项目管理效率和团队协作能力的学习者设计的课程。Agile是一种以人为核心、迭代、逐步发展的软件开发方法论,它强调灵活应对需求变化,追求高质量交付,并促进...
Agile是一种敏捷开发方法论,它强调迭代、灵活和团队协作的方式来提高软件开发效率和质量。Agile的核心理念是适应变化、快速响应需求,并通过频繁的交付和反馈来优化产品开发过程。 在Agile实践中,Scrum是一个常用...
华为Agile Controller及eSight售前培训胶片............................
Agile Testing A Practical Guide for Testers and Agile Teams 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除
根据给定文件的信息,我们可以提炼出与敏捷产品生命周期管理(Agile Product Lifecycle Management,简称Agile PLM)相关的几个核心知识点: ### 1. Agile PLM 概念 Agile PLM 是一种集成的解决方案,旨在帮助企业...
Agile Lite是一款轻量级的敏捷开发框架,主要用于快速构建高效、可维护的Web应用。这个示例代码提供了官方的演示示例,帮助开发者更好地理解和使用Agile Lite框架。通过研究这些源码,我们可以深入学习如何利用该...
agile日志处理工具
知识点:Oracle Agile PLM 9.2.2.4 的安装与使用 1. **产品概述**: Oracle Agile Product Lifecycle Management(PLM)是一款由Oracle公司开发的产品生命周期管理软件,用于帮助企业管理和优化产品的设计、开发、...
在IT行业的软件开发领域,敏捷过程(Agile Process)已成为一种主流的方法论,它强调适应性和灵活性,以应对快速变化的市场需求和项目需求。本文将深入探讨敏捷过程的核心概念、其在组织中的引入策略,以及如何克服...
下面我们将详细探讨 Agile Lite 的主要组成部分及其相关知识点。 1. **UI框架**:Agile Lite 的UI框架提供了丰富的组件和布局选项,以适应移动设备的各种屏幕尺寸和交互需求。这些组件可能包括导航栏、滑动菜单、...
Oracle Agile PLM 方案介绍 Oracle Agile PLM 是一个基于标准的架构,开放的跨企业协同工作平台,旨在帮助高科技电子行业的企业提高产品生命周期管理效率,降低成本,提高产品价值。该解决方案可以帮助企业快速...
"redmine系统agile敏捷插件安装包"是专门为Redmine系统设计的一个插件,旨在帮助项目团队实现敏捷开发的流程管理。 在敏捷开发方法中,团队通常采用迭代和增量的方式进行软件开发,强调快速响应变化,提高工作效率...
agile 9.3.6英文文档 Oracle's Agile PLM documentation set includes Adobe® Acrobat PDF files. The Oracle Technology Network (OTN) Web site ...
- **结对编程**:两个开发者共享一个工作台,一起编写代码,提高代码质量和团队协作。 - **回顾会议**:每次迭代结束后,团队反思过程,找出改进点,持续优化工作流程。 通过采用敏捷开发,软件项目能够更好地应对...
Learn the agile philosophy of lean processes, incremental delivery, deep client participation, decentralized authority, and just-in-time planning to bring speed, creativity, empowerment and increased ...