什么是敏捷开发?
敏捷开发以用户的需求变化为核心,采用迭代、循序渐进的方法进行软件开发。
敏捷开发模式的分类
- XP极限编程(eXtreme Programming)
- SCRUM
- 水晶方法
- 动态系统开发方法
- 精益开发
其中XP和SCRUM最为流行。
极限编程
极限编程是一种轻量,高效,弹性的软件开发方式。
四大核心价值观
- 沟通: 完善的流程和详细的文档用于团队协作虽然能够保证一致性,但效率往往不高。 极限编程提倡通过高效的口头沟通来保证整个团队的高效协作。(并不是舍弃流程和文档,只是更加侧重口头上的沟通)
- 简单: ==今天够用就行。 那么系统的扩展性怎么实现? 极限编程提倡重构。(对开发人员要求较高) 重构建立在软件开发中无法避免出现BUG的前提下,与其最后修改整体的BUG,不如在一次次的重构迭代中反复扩展优化。
- 反馈 通过提前编写测试代码,经常性的反馈代码的问题和进展。 在开发过程中,通过持续集成,使得每一次的发布都可以成为可执行版本。
- 勇气 应用极限编程,每时每刻都在应对变化。这要求开发者时刻面对快速开发,重新开发。 变化在软件开发中是不可避免的,极限编程的思想就是将变化扼杀在摇篮中,避免最后形成一个无法重构的庞大工程。
13个最佳实践
- 计划游戏 快速制定一个概要的计划,随着项目细节的不断更新和迭代,再完善这份计划。 主要分为三个步骤:客户编写故事;开发人员进行按照优先级进行分解和排序;确定产品迭代周期(2-3周)
- 小型发布 持续集成,但每一个版本的发布都需要具备足够的商业价值。
- 隐喻 寻求共识 发明共享词汇,增强团队默契
- 简单设计
设计不应该一次性完成。因为变化不可能被所有的预见。所有设计一次也是无法完成的。
扎克伯格:不变的事物只有变化
- 通过所有的测试程序
- 没有任何重复的代码
- 保持定期重构的思想
- 单一职责(一个类只做一件事)
- 测试先行 先写测试代码,再写代码。(开始时效率低,但能解决许多隐形问题)
- 重构
重构是一种对代码改进而不影响功能实现的技术,重构的目的是降低变化引起的风险,使得代码优化更加容易。
重构场景:
- 实现功能之前:改变现有代码结构,使得新的特性更加容易实现
- 实现功能之后:检查一下刚刚写完的代码,考虑是否能够简化
理论上来说,重构思想和开闭原则是相违背的,但如果一开始没有超强的设计分析和预测变化的能力,用来设计的时间不如花在重构上。【设计终究只能浮于纸上,而实践才能更加真实的发现问题】
- 结对编程 code review
- 集体代码所有制 编码规范统一
- 持续集成 在确保系统运行的单元测试通过之后,每天尽可能的多做代码集成。
- 每周工作40小时 保证休息,提高效率。
- 现场客户 主要为了沟通
- 编码标准 定义变量名等开发规范。【确保沟通交流】
- 配合是关键 1 1>2