1. 敏捷开发(Agile Development)
1) 敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。
2) 在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
3) 敏捷设计是一个过程,不是一个事件。它是一个持续的应用原则、模式以及实践来改进软件的结构和可读性的过程。它致力于保持系统设计在任何时间都尽可能得简单、干净和富有表现力。
4) 敏捷软件开发宣言
个体和交互 胜过 过程和工具
可以工作的软件 胜过 面面俱到的文档
客户合作 胜过 合同谈判
响应变化 胜过 遵循计划
2. Scrum
1) Scrum是一种迭代式增量软件开发过程,通常用于敏捷软件开发。
2) 在每一次冲刺(一个15到30 天周期 ,长度由开发团队决定),开发团队创建可用的(可以随时推出)软件的一个增量。每一个冲刺所要实现的特性来自产品订单(product backlog),产品订单是按照优先级排列的要完成的工作的概要的需求。哪些订单项会被加入一次冲刺由冲刺计划会议决定。在会议中,产品负责人告诉开发团队他需要完成产品订单中的哪些订单项。开发团队决定在下一次冲刺中他们能够承诺完成多少订单项。在冲刺的过程中,没有人能够变更冲刺订单(sprint backlog),这意味着在一个冲刺中需求是被冻结的。
3) 主要角色
产品负责人(Product Owner):负责维护产品订单的人,代表利益相关者的利益。
Scrum主管(Scrum Master):为Scrum过程负责的人,确保scrum的正确使用并使得Scrum的收益最大化。
开发团队(Team): 由负责自我管理开发产品的人组成的跨职能团队。
4) 工件
产品订单(Product Backlog):按照优先级排序的高层需求。
冲刺订单(Sprint Backlog):要在冲刺中完成的任务的清单。
冲刺燃尽图(Burndown Chart):在冲刺长度上显示所有剩余工作时间逐日递减的图。
5) 活动
计划会(Sprint Planning Meeting):在每个冲刺之初,由产品负责人讲解需求,并由开发团队进行估算的计划会议。
每日立会(Daily Standup Meeting):团队每天进行沟通的内部短会。
评审会(Review Meeting):在冲刺结束前给产品负责人演示并接受评价的会议。
回顾会(Retrospective Meeting):在冲刺结束后召开的关于自我持续改进的回忆。
3. 级限编程(Extreme Programming,简称XP)
1) 极限编程是一个轻量级的、灵巧的软件开发方法;同时它也是一个非常严谨和周密的方法。它的基础和价值观是交流、朴素、反馈和勇气;即,任何一个软件项目都可以从四个方面入手进行改善:加强交流;从简单做起;寻求反馈;勇于实事求是。XP是一种近螺旋式的开发方法,它将复杂的开发过程分解为一个个相对比较简单的小周期;通过积极的交流、反馈以及其它一系列的方法,开发人员和客户可以非常清楚开发进度、变化、待解决的问题和潜在的困难等,并根据实际情况及时地调整开发过程。
2) 极限编程是一组简单、具体的实践,这些实践结合在形成了一个敏捷开发过程。极限编程是一种优良的、通用的软件开发方法,项目团队可以拿来直接采用,也可以增加一些实践,或者对其中的一些实践进行修改后再采用。
3) 核心价值:沟通(Communication)、简单(Simplicity)、反馈(Feedback)和勇气(Courage)
4) 有效实践
完整团队(Full Team)
规划策略(The Planning Game)
编码标准(Code Standards)
简单设计(Simple Design)
重构(Refractoring)
结对编程((Pair programming))
测试驱动开发(Test-driven development)
持续集成(Continuous Integration)
集体代码所有权(Collective Code Ownership)
小型发布(Small Release)
4. Start with Scrum and then invent your own version of XP.