软件测试思想者 - 什么是敏捷?
软件测试思想者 - 什么是敏捷?
敏捷在时下比较流行,世界500强中的众多公司都在进行着敏捷实践,比如,IBM、Microsoft、HP等。但是,什么是敏捷呢?似乎没有定论,本文试着给出一种理解。
对于敏捷的理解,可以从敏捷的核心、原则和方法三个维度来理解。简单来说,敏捷就是以敏捷联盟宣言倡导的敏捷价值观为核心,遵循敏捷的12条基本原则,采用适合自己的优秀的敏捷方法的成功软件开发实践。
以下是几个正确的敏捷观点:
敏捷不等同于一个流程或一种方法(XP、Scrum)。
敏捷不等同于一套固定模板。
敏捷不是一种可直接重用的方法,实践敏捷需要因人而异,因地制宜。
一、敏捷的核心
敏捷的核心是2001年敏捷联盟宣言倡导的敏捷价值观。
我们一直在实践中探寻更好的软件开发方法,身体力行的同时也帮助他人。由此我们建立了如下价值观:
- 个体和互动 高于 流程和工具(Individuals and interactions over processes and tools)
- 工作的软件 高于 详尽的文档(Working software over comprehensive documentation)
- 客户合作 高于 合同谈判(Customer collaboration over contract negotiation)
- 响应变化 高于 遵循计划(Responding to change over following a plan)
也就是说,尽管右项有其价值,我们更重视左项的价值。
二、敏捷的原则
1、我们的最高目标:通过尽早和持续地交付有价值的软件来满足客户。
2、欢迎对需求提出变更: 即使是在项目开发后期。要善于利用需求变更,帮助客户获得竞争优势。
3、要不断交付可用的软件,周期从几周到几个月不等,且越短越好。
4、项目过程中,业务人员与开发人员必须在一起工作。
5、要善于激励项目人员,给他们以所需要的环境和支持,并相信他们能够完成任务。
6、无论是团队内还是团队间,最有效的沟通方法是面对面的交谈。
7、可用的软件是衡量进度的主要指标。
8、敏捷过程提倡可持续的开发。项目方、开发人员和用户应该能够保持恒久稳定的进展速度。
9、对技术的精益求精以及对设计的不断完善将提升敏捷性。
10、要做到简洁,即尽最大可能减少不必要的工作。这是一门艺术。
11、最佳的架构、需求和设计出自于自组织的团队。
12、团队要定期反省如何能够做到更有效,并相应地调整团队的行为。
三、敏捷的方法
敏捷联盟所使用的敏捷方法如下:
1、软件开发节奏(Software Development Rhythms)
2、敏捷数据库技术(AD/Agile Database Techniques)
3、敏捷建模(AM/Agile Modeling)
4、自适应软件开发(ASD/Adaptive Software Development)
5、水晶方法(Crystal)
6、特征驱动开发(FDD/Feature Driver Development)
7、动态系统开发方法(DSDM/Dynamic Systems Development Method)
8、精益软件开发(Lean Software Development)
9、AUP(Agile Unified Process)
10、Scrum
11、XBreed
12、极限编程(XP/eXtreme Programming)
13、探索性测试