1. 什么是极限编程 Extreme Programming XP

  • 极限编程是一个轻量级的、灵巧的软件开发方法;同时它也是一个非常严谨和周密的方法。
  • 它的核心价值是交流、简单、反馈和勇气。即,任何一个软件项目都可以从四个方面入手进行改善加强交流;从简单做起;寻求反馈;勇于实事求是。
  • XP是一种近螺旋式的开发方法,它将复杂的开发过程分解为一个个相对比较简单的小周期;通过积极的交流、反馈以及其它一系列的方法,开发人员和客户可以非常清楚开发进度、变化、待解决的问题和潜在的困难等,并根据实际情况及时地调整开发过程。
  • Extreme Programming(极限编程,简称XP)是由Kent Beck在1996年提出的,
  • XP是一个轻量级的、灵巧的软件开发方法,是一种软件工程方法学,强调程序设计师团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软体版本、紧凑而自我组织型的团队、能够很好的适应需求变化的代码编写和团队组织方法,也更注重做为软体开发中人的作用。

2. 极限编程交付实践

  • 是一种基于频繁交付周期的软件开发方法,旨在改进软件项目成果的整套实践

    持续集成 Continuous Integration

  • 无论产品如何,都要频繁地将工作集成到整筹中,然后再进行重新测试,以确定整个产品仍按照预期期工

    在不同层面测试

  • 对端到端信息使用系统级测试,对构建块使用单元测试(Unit Test)。在两者之间,了解是否需要进行集成测试(Integrated Test)。以及在何处进行测试。团队发现冒烟测试(Smoking Test)有助于测试工作产品是否良好。团队发现,决定何时以及对哪些产品运行回测试测(Regression Test),可以帮助他们在维护产品质量的同时,良好地构建性能,敏捷团队偏爱自动化测试(Automate Test),因此他们可以借此构建和保持交付的势头。

    验收测试驱动开发 (ATDD)

  • 在ATDD中,整个团队聚集一堂讨论工作产品的收标准。然后,团队创建测试,这让团队能够编写足够的代码,进行自动化测试,满足标准要求。对于非软件顶目,要考虑怎样在团队完成大量价值时对工作进行测试。

    测试驱动开发 (TDD) 和行为驱动开发 (BDD)

  • 在编写/创建产品之前编写自动化测试,实际上可以帮助人员设计产品,防范产品错误。对于非软件项目,要考虑如何的过“测试驱动”团队的设计。硬件和机械类项目经常使用模拟进行设计的中间測试。

    刺探 SPIKE(一个短暂时间盒,研究或实验,如果失败就撤离)

  • 刺探对学习很有用,可以在诸如评怙、收标准定义以及通过产品了解用户行为的流程中使用。在团队需要学习一些关键技木或功能要素时,刺探会很有帮助


4. Extreme Programming at a glance

image.png

5. XP实践 XP Practices

image.png

6. XP迭代

XP不做过多长远规划,只要保证每一天、每分、每秒都在做最重要、最有价值的事情就可以,至于项目是否继续做,这是由客户或管理层决定的事情。

七个迭代周期:

  • 月迭代:发布计划 Release Plan
  • 一周迭代:迭代计划 Sprint Plan
  • 数日迭代:验收测试 Acceptance Test
  • 每日迭代:每日站会 Daily Scrum Meeting
  • 小时级迭代:结对讨论 Pair Discussion
  • 分钟级迭代:自动测试 Automatic Test
  • 秒级迭代:结对编程 Pairing Program

image.png

7. XP角色

程序员(Programmer)

  • 进行编程以符合产品用户故事。

    测试员(Tester)

  • 协助客户定义和撰写验收测试的用户故事。

    教练(Coach)

  • 团队的导师(Tutor)、促进者(Facilitator)及引导者。

    客户(Customer)

  • 定义要制作的产品内容与排序。

  • = 相当于产品负责人的角色,但并不是真正的PO
  • XP没有Product Owner的专门角色,客户是提需求的角色

    交互设计师 (UX Design)

  • 基于阶段性开发模型的:首先交互设计师勾勒出系统应该做什么,然后程序员编程实现

    架构师 Architectural Design