浅谈「敏捷」开发
2016-09-15 15:40
148 查看
敏捷软件开发宣言
敏捷开发以用户的需求进化为核心,采用
迭代、
循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
在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会有显著收获!
相关文章推荐
- 浅谈开发工作中使用的敏捷开发模式
- 浅谈开发工作中使用的敏捷开发模式
- 浅谈敏捷开发思想中的简单最好原则
- 浅谈敏捷软件开发
- 浅谈敏捷开发中迭代和旧版本维护
- 浅谈敏捷开发和迭代开发相结合
- 浅谈TDD、BDD与ATDD软件开发 (敏捷开发模式)
- 浅谈开发工作中使用的敏捷开发模式
- [置顶] 浅谈TDD、BDD与ATDD软件开发 (敏捷开发模式)
- 浅谈敏捷开发和迭代开发相结合
- 浅谈TDD、BDD与ATDD软件开发 (敏捷开发模式)
- 个人浅谈敏捷开发
- 【敏捷开发】浅谈对Agile Scrum的认识
- 浅谈即时验收在敏捷开发中的应用
- 浅谈敏捷开发
- 浅谈敏捷开发
- 浅谈敏捷开发和迭代开发中的建模
- 敏捷开发的面向对象的设计原则
- [原创] 敏捷软件开发管理实践 (二) ——做最细致的项目跟踪
- 面向对象的设计原则(整理于敏捷开发)