敏捷软件开发宣言
敏捷开发以用户的需求
进化为核心,采用迭代
、循序渐进
的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
在2001年,17位编程大师共同发布《敏捷软件开发宣言》
。其他的核心思想可以分为以下四个部分:
- “人”以及“人与人的互动” > “过程”和“工具”;
- 可运行的软件 > 面面俱到的文档;
- 客户合作 > 合同谈判;
- 响应变化 > 遵循计划。
基于《敏捷软件开发宣言》的思想,其共有12条原则
,这里不一一叙述,可以在这里查看详情。
敏捷过程模型
1. 特点
开发过程中的“变化”无处不在,也是不可避免的。在实际项目中,很难预测需求和系统何时以及如何发生变化,并且对于开发者来说,要将变化的意识贯穿在每一项开发活动中。面对这写要求,敏捷开发
应运而生。所有敏捷过程模型都遵循敏捷软件开发宣言和敏捷原则,每种模型又各有特点,一下介绍两种:XP
与SCRUM
。
2. XP(extreme programing)
- 背景:
1996年由__Ken Beck__等人提出,著名书籍:《Extreme Programing Explained:Embrace Change》。 - 基本观点:
软件开发是人与人合作进行的过程,因此成功的软件开发过程应该充分利用人的优势,而弱化人的缺点,突出人在软件开发过程中的作用。 - 适用范围:
XP适合规模小,进度紧,需求变化大,质量要求严的项目。功能需求可以固定的,可以作比较精确的需求设计的,生命周期很长的,超大型软件项目不适于适用XP方法。 - 核心价值观:
- 沟通问题往往是由于开发人员与设计人员,设计人员与客户之间的沟通不畅造成的;
- 简单在系统可运行的前提下,做最简单的工作。时刻保持代码的简单,无冗余;
- 反馈尽快获得用户反馈,越详细越好,使得开发人员能够保证自己的成果符合用户的需要;
- 勇气“拥抱变化”对于用户的反馈,要用于对自己的代码进行修改,丢掉坏的代码。
- XP设计过程:
- XP Planning:计划阶段
- XP Design:设计阶段
- XP Coding & Testing:编码与测试阶段
3. SCRUM
- 背景:
1990年代由__Schwaber & Beedle__提出并实践。 - 特点:
整个开发过程由若干个短的迭代周期组成,一个短的迭代周期称为一个Sprint,每个Sprint的建议长度是2到4周。使用产品Backlog来管理需求,是一个按照商业价值排序的需求列表,列表条目的体现形式通常为用户故事。在Sprint中,Scrum团队从产品Backlog中挑选最高优先级的需求进行开发。挑选的需求在Sprint计划会议上经过讨论、分析和估算得到相应的任务列表(backlog)。在每个迭代结束时,Scrum团队将递交潜在可交付的产品增量。 - 基本过程:
- 找出完成产品需要做的事情;
- 决定当前的冲刺需要解决的事情;
- 冲刺冲刺Sprint;
- 每日站会。
- 常用方式:
Sprint Burndown Chart
Task board
个人总结
我个人认为敏捷开发中最重要的因素是:人 。
通过对《敏捷软件开发宣言》的学习,“人与人的合作交流”
就一个敏捷软件开发项目是否成功的主要因素。所以在软件软件开发过程中,开发者的编程环境需要做到尽量的开放,而且尽量实现“结对编程”
,这样才能使得开发过程变得不易于原计划脱轨,大大增强了开发的成功率。
而对于较为典型的SCRUM和XP这两种敏捷过程模型,Scrum注重的是管理和组织实践,而XP关注的是实际的编程实践,两者都聚焦于信息价值流和信息沟通除了迭代长度稍有差别外,大多数Scrum实践与XP是兼容且相互补充。
所以说:组合使用Scurm和XP会有显著收获!