zoukankan      html  css  js  c++  java
  • 敏捷开发XP

    一、组建XP团队
    在XP团队中,由以下组成
     
     
    二、项目相关环境
    1、利益相关者:与PM一样,对项目进行管理
    2、执行发起人:最终客户(必须定期演示)
     
    三、XP组成
    四、思考
         1、结对编程
         结对编程中,一个人写,一个人思考。结对编程可以防止被打扰,可以提高精力
         2、精力充沛的工作
         按时下班,不把工作带回家,健康饮食,经常锻炼。
         3、信息化工作场所
         通过各种信息(图表等)贴在工作场所,以随时了解项目进度、当前情况,同时通过图表监控、测评项目。
         4、根源分析
         遇到问题不要想责备,问自己为什么会出现这个问题,寻求问题根源
         5、回顾
         在一次会议中引导一个人说过话,那么他继续说话的可能性就会加大
     
    五、协作
    1、信任
         团队内部需要和谐团结,与客户(关系人)的关系弄好。可以采用:客户与程序员换位思考、程序员与测试员换位思考、共同进餐、团队持续性(以团队为单位做项目)。坦然面对错误,及早与关系人坦白困难、错误,共同面对问题。定期交付,维护与关系人的关系。
    2、坐到一起
         团队的所有成员需要在同一个场所办公。现场客户、程序员、测试员等。这样可以及时交流、高效沟通。但是也提供一个私密的小房间供打电话、聊天等。
    3、真实客户参与
         有了真实用户的参与,就不会让自己陷入各种细节。扩大自己的视角。利用他们在实际中如何使用软件、他们的领域知识,可以让你交付一款真正有用的产品。
    4、统一协作语言
         采用同一种语言,可以较少程序员与客户专家的沟通障碍。比如程序员采用客户领域的术语进行图表的绘制、命名。
    5、站立会议
         在一个固定的时间召开。每次不要超过十分钟。时间不一定在早上,可以上午结束的时候。会议由每个人讲需要让整个团队知道的事情。可以以“我昨天做了什么、今天打算做什么、遇到了什么问题”的格式,也不一定得按照这个格式。
    6、编码规范
         编码的规范可以包含:开发实践、工具和快捷键、文件和目录布局、构建和约定、错误处理和断言、实践和日志记录方式、设计约定等。规范的设计,以“1、指定可以接受的最小标准集合 2、关注一致性和共识,而不是完美”。
         在制定规范后,如果有人没有按照规范,可以和他谈:认为这个规范怎么样,为什么没有按照规范。
    7、迭代演示
         迭代演示可以降低风险,增加活力,促进团队进步。XP的核心就是定期交付。在演示的过程中,可以解释为什么和原计划不同,有什么变化。若客户具体到某一细节,可以说在演示结束后由项目经理解释。在演示结束后问客户:1、到目前为止客户是否满意。2、是否可以继续。如果在演示中,客户提到需要添加新特性,则说:会后由产品经理负责特性的把关与添加。
    8、汇报
         进行良好的汇报,可以增加客户对团队的信任,更相信团队的决策。
         进展汇报:愿景陈述、每周演示、发布和迭代计划、burn-up图。如果需要更详细,可以提供路线图   、状态电子邮件
         管理汇报:生产率、产能、缺陷、时间利用率
         不要汇报:源代码行数、故事数、开发速度、代码质量等
     
    六、发布
    1、全部完成
         全部完成是指可以发布使用。平时以全部完成来要求团队,可以避免大量难以预计的收尾工作。完成包含测试完成、编码完成、设计完成、集成完成、成功构建、安装、移植、评审完成、修复完成、用户接受。TDD可以促使设计、测试、编程同步完成。
    2、没有bug
         a.编写更少的bug:采用TDD,可以减少一定bug。或者通过大量技术和组织方法尽量减少bug的生成。
         b.消除bug的温床:通过重构设计不良的代码可以减少bug
         c.修复bug:尽早修复bug,越到最后代码修复的成本就越大。
         d.测试过程:通过探索性测试,以不寻常的方式进行测试,可以检测预料之外的bug
         e.修正过程:对自己进行总结,查找为什么会出现bug,对自己的编码过程就行改正。
    3、版本控制
         版本控制可以管理项目,可以进行回退等
    4、十分钟构建
         自动化构建,可以避免很多问题。可以利用ant、make等进行构建。当项目在很小的时候进行自动化构建。尽量不要让构建的时间太长。
    5、持续集成
         持续集成能够减少很多隐藏的发布时间。每隔几小时进行集成,保证构建、测试及其他发布的基础组件都能及时更新。这样可以降低发布难度。
    6、代码集体所有制
         这样可以让整个团队为所有代码复制。每个人都可以改进别人的代码。这样可以在一个人离开时,团队还能继续推进。实在无法实施集体所有制,可以通过结对编程折中。
    7、文档
         文档不用很多,但是因为有更好有效的交流方式,不是偷懒的借口。不需要特定去做什么文档,如果一些文档有商业价值,将其安排为一个user story进行操作。
     
    七、计划
    1、愿景
         揭示项目正在朝哪个方向前进,以及为什么朝这个方向前进。制定愿景时,可以从:项目应该完成什么、项目为什么有价值、项目的成功标准是什么。愿景指定后就推广出去,贴在工作场所,要求客户一同参与愿景指定。如果有了一份清晰、有说服力的远景,则很容易为故事安排优先级。同时团队成员了解项目的重要程度,有助于提高士气。
    2、发布计划
         在接受项目时,尽量只做一个项目,不要几个一起做。同时尽早发布,经常发布,将最有价值的特性先发布出去,有助于提升商业价值。在发布的时候,不要全部把所有的发布出去,为自己留一些余地,不要一次性全部发布。计划需要不断调整,让客户清楚你的计划。可以以时间为标准进行计划。
    3、计划博弈
         在计划生成后,对计划的具体安排需要讨论。在对计划进行实施时,良好的计划博弈,是让程序员觉得自己的专业知识对计划进行了贡献,客户觉得自己的领域知识做出了优先级划定。
    4、风险管理
         随时对风险进行把控、预测、应对。及时当开发中断也能成功交付,这样以后公司会更加信任你。
    5、迭代计划
         每次选择最后价值的特性加入其中进行迭代。一次迭代,由:演示演一轮迭代、回顾前一轮迭代、制定迭代计划、承担故事的交付、开发故事、准备发布。一般在一周完成。在发布了迭代任务后,对任务进行跟踪。
    6、松弛
         在迭代中添加松弛制度,增加研究时间,不要太紧。
    7、故事
         以用户为中心,用一个个卡片来整理故事。太大的故事进行拆分。故事由客户进行把关。同时也可以包含文档故事、非功能故事、bug故事、试验故事、估算、会议等。将故事分小,可以频繁交付完整特性。
    8、估算
         做良好的估算,在每次迭代中都是一致和可预测的。估算时,对故事进行充分分析和挖掘。
     
    八、开发
    1、增量式需求
         客户可能开始不能确定全部的需求,不用担心。那就开始在已经确定的上面工作。但是客户的每次反馈都需要记录,客户签字,防止客户否认
    2、客户测试
         对于每个特性,创建客户测试可以通过描述、演示、开发进行。描述是由客户详细、举例描述功能。让用户领导进行客户测试,引导他们参与
    3、测试驱动开发
         在开发前先写测试,这样你在开发时,会自动对你的开发过程进行把控
    4、重构
         在平时对代码进行重构,持续提高代码质量
    5、简单设计
    6、增量设计和架构
    7、试验方案
    8、性能优化
    9、探索性测试
     
    XP的价值:简单、勇气、沟通、反馈、尊重。
    在实践中避免浪费,若项目一定会失败,则尽早失败。
  • 相关阅读:
    HashMap
    Java内部类应用——静态内部类
    transient关键字和@Transient 注解
    java基本数据类型传递与引用传递区别
    抽象类
    java collection-list详解
    Arrays,ArrayList,以及ArrayList源码分析
    【转载】【剑指offer】面试题40:最小的 k 个数中的优先级队列
    java stack总结
    java Queue
  • 原文地址:https://www.cnblogs.com/ren-jie/p/5256409.html
Copyright © 2011-2022 走看看