定义:敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。
子项目特征:
-
- 各个子项目需求经过测试;
- 具备集成和可运行的特性;
- 小项目相互联系。
敏捷更符合软件开发规律
- 软件更像一个活着的植物,软件开发是自底向上逐步有序的生长过程,类似于植物自然生长
- 敏捷开发遵循软件客观规律,不断的进行迭代增量开发,最终交付符合客户价值的产品
当前最主流敏捷方法:SCRUM
- 这是一种迭代的增量化过程,用于产品开发或工作管理。
敏捷开发特点
- 敏捷开发包含很多方法,例如XP和FDD,同重量级的文档驱动的开发过程相比较,敏捷方法在灵活性等方面更具吸引力。这个方法的创始人强调了在软件实践过程中的变更而不是孤立的进行一些实践。
- 很多方法很难独立的使用。如:测试驱动的开发,结对开发,计划调整周期以及持续改进,不过,后来的结果证实,这些方法都取得了成功。
- 使用这些方法并不能保证一定成功。开发着的经验和技术仍旧是影响开发结果的最主要因素。对于合适的人,基于敏捷原则的开发方法可以产生更好的结果,同时形成一个愉快的、有激情的工作环境。
敏捷宣言
个体和交互 胜过 过程和工具
可以工作的软件 胜过 面面俱到的文档
客户合作 胜过 合同谈判
响应变化 胜过 遵循计划
敏捷规则
- 最高目标是能持续地、及早地向客户交付软件
- 拥抱变化
- 频繁的发布可运行软件
- 客户和开发在一起工作
- 以人为本
- 最重要的衡量开发过程的手段,是可工作的软件
- 稳定的开发速度
- 敏捷高效的设计
- 简单有效
- 重视Teamwork
- 积极的调整
我们为什么需要敏捷?
部门
- 培养团队合作精神,稳定开发队伍;
- 提高开发人员的水平;
- 提高项目成功率,降低开发成本,提升软件开发效率
项目经理
- 更好的和用户沟通,更清晰地理解用户需求;
- 更充分地使用资源,更科学的调配资源,更精确的掌握开发进度;
系统分析设计
- 设计更加完善;
- 更有效的更新知识,得到其他成员更多的尊重;
程序员
- 学习系统设计和项目管理;
- 提高学习和工作效率,受到重视,工作更有效。
敏捷对生产率、质量、满意度和成本有明显改进
- 82%的项目生产率有提高
- 78%的项目质量有提高
- 78%的项目客户满意度有提高
- 37%的项目成本有降低