`
hotjava
  • 浏览: 178462 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

转dlee的XP 项目管理方法

阅读更多

去年在一家公司时我的 CTO keys 写的 XP 项目管理方法,对 XP 感兴趣的朋友可以参考一下。

采用 XP 方法进行项目管理

-------------------------
核心价值
-------------------------

1、沟通
缺乏沟通,是几乎所有软件问题的根源。通过直接,及时地与客户沟通,就可以消除大多数的问题。

2、简单
保持设计的简单,为今天设计,永远不要为明天设计。
不要将注意力放在软件的最复杂难解的功能上。今天做简单的工作,明天花点代价修改它要比今天做可能永远用不到的复杂工作好的多。

3、反馈
更早和经常来自客户,团队和实际最终用户的具体反馈意见将为项目提供更多的机会来把握住正确的方向,少走弯路。
通过自动化的单元测试来获得系统的反馈,通过反馈告诉我们工作做得怎么样。

4、勇气
要有勇气尝试新得的,不同的东西来大幅度减少项目时间。要有勇气在即使面对巨额预算和截止期限压力时仍能坚持做正确的事情。


-------------------------
规则和实践
-------------------------

计划
---------

1、编写 User Story
通过 User Story 来描述系统需要为用户做些什么。一个 User Story 一般三句话左右,是客户以他们自己的术语写成的。

2、通过发布计划制订时间表
对每个用户素材进行估计,选出一些用户素材在第一个发布中实现,再分别选出随后几个发布中应实现的用户素材,形成发布计划。

3、频繁发布小版本
经常将迭代生成的版本发布给客户。这样客户就能及早得到并使用这些功能。这对及时地收到有价值的反馈并作用到以后的开发中去是非常关键的。

4、将项目划分为迭代
每个迭代一到三周。

5、每次迭代开始前制订迭代计划
按照 User Story 对客户价值的高低顺序,从发布计划中选取出来的。User Story 和上次迭代测试失败的部分都会转化为开发任务,每个任务应该持续一到三个开发日。

6、Move people around
在每次迭代中,鼓励每个人去尝试接手系统中新的部分。结对编程能够在不降低生产力并能保证思维连续性的前提下使之成为可能。人员的组合可适时进行调整。避免形成知识孤岛。

7、每天上班后召开 stand-up meeting
站着开会的目的就是整个组内的交流沟通。在这个每天举行的会上,交流所遇到的问题,一些解决方案和项目的焦点所在。大家围成一个圈站着开会可以避免长时间的讨论。

8、遇到问题时修改 XP
XP 规则是应该遵循的,但对不能良好运做的部分应毫不犹豫地加以修改。

设计
---------

1、简单
尽量用最简单的方法去达到目的。在为一段复杂代码浪费许多时间前,先找出简单的方法肯定费时更少开销也更低。尽可能地保持简单,尽可能晚地增加功能。

2、在设计期间使用 CRC 卡
CRC 卡的目的是让程序员脱离过程模型的束缚,而以面向对象的方法来考虑问题和交流思想。

3、尽可能地重构
尝试更改现有代码是否可以让新特性的开发更容易。查看刚刚写好的代码,看是否有方法可以对它进行简化。

编码
---------

1、客户随时在场
需要在现场有一位客户来明确素材,并做出重要的企业决策。开发人员是不允许单独做这些事情的。让客户随时在场可以消除开发人员等待决策出现的瓶颈。

2、代码必需符合相应的标准
通过编码标准防止团队被一些无关紧要的愚蠢争论搞的不知所措。目标应该是团队中没有人辨认得出是谁写的哪一部分代码。以团队为单位对某一标准达成协议,然后遵守这一标准。

3、首先做单元测试
开发人员在编写代码前先编写单元测试。单元测试及时告诉开发人员系统在某一点上是否工作。

4、实行结对编程
开发人员结对进行开发。

5、经常集成
经常进行代码集成可以避免集成梦魇。

6、实行集体代码所有权
小组中的任何人都有权对代码进行更改来改进它。每个人都拥有全部代码,这意味着每个人都对它负责。

7、将优化工作留到最后。

8、不要超时工作
长时间地持续工作会扼杀工作绩效。疲劳的开发人员会犯更多错误。让开发人员每天早晨都感到有活力有激情,每天晚上都感到疲惫而满足。

测试
--------

1、所有的代码必需有单元测试。

2、所有的代码发布前必需 100% 通过单元测试。

3、当发现了一个 bug,必须要增加相应的测试。

4、经常运行单元测试并公布其结果。


-------------------------
项目开发过程
-------------------------

项目开发过程分为 3 个阶段:调研,承诺,迭代

调研阶段
----------

1、编写 User Story,写入项目主目录的 doc/TODO.txt 文件中,例如:

* 仓库管理
对仓库信息进行维护
对仓库进行分类,例如自有仓库、中转仓、虚拟仓、售后仓等。

2、由开发人员评估 User Story。对于不能评估的 User Story,由需求人员对 User Story 进行拆分,拆分后再由开发人员进行评估。每个 User Story 上的开发时间为一周、两周或三周。

承诺阶段
---------

1、对 User Story 按用户价值、风险和开发速度排序,写入项目主目录的 doc/TODO.txt 文件中,例如:

story value risk velocity
-----------------------------------------------------
user 高 低 15人天
customer 高 低 15人天
role_security 高 中 15人天
sales_order 高 低 6人天
data_encryption 中 中 12人天
data_exchange 中 高 15人天
data_backup 低 低 12人天

2、制订发布计划,写入项目主目录的 doc/TODO.txt 文件中,例如:

* version 0.1 : 90人天,2002.7.5 发布
user,customer,role_security
仓库,report,sales_order,进销存分析

* version 0.2 : 97人天
客户退货,编码对照,仓库调拨,经营管理
数据同步,数据采集,data_encryption,data_exchange,data_backup


迭代阶段
----------
1、制订迭代计划,每个迭代一般持续一至三周。迭代计划尽量细分到每天。

迭代计划写入项目主目录的 doc/TODO.txt 文件中,例如:

* Disability Plan Redesign
Richard: 0.5 days: 45 Transaction input
Brain: 1.0 days: DAP Counter corrections

* Supplemental Unemployment Benefit
Ralph: 1.0 days: Take deduction bases on catalog
Ann: 0.5 days: Load UPGUA history tables

2、用 CRC 卡进行设计
CRC 设计文档规范见 $CVSROOT/knowledge/management/CRCConventions.txt

3、编写单元测试代码
在编写程序前,首先编写验证该程序的单元测试代码。测试代码放在项目主目录下面的 test 目录中。

4、按照代码规范进行编码
Java 代码规范见:$CVSROOT/knowledge/management/CodeConventions.pdf


-------------------------
Team 构成
-------------------------

1、由 2-3 个程序员组成 pair,pair 为 team 安排工作和进行工作考核的最小单位。

2、由 2-3 个 pair 组成 group,并制定一位 group leader

3、由 2-3 个 group 组成 team,并制定一位 team leader

group leader 的职责
--------------------

1、每天上午上班后组织 group 成员召开 stand-up meeting 进行组内交流。

2、指导 group 使其按照项目管理的要求进行工作,在技术上和业务上对 group 成员进行帮助。

3、检查 group 成员的提交到 CVS 中的代码,每天下班前将发现的问题写到 $CVSROOT/knowledge/management/GroupReport.txt 中。

4、需求分析和系统设计。

5、可接收性测试。

team leader 的职责
-------------------

1、在项目管理,技术和业务上对 team 的工作进行指导。

2、检查各 group 的工作,每天下班前将发现的问题写到 $CVSROOT/knowledge/management/TeamReport.txt 中。

3、需求分析和系统设计。

4、可接收性测试。

项目管理部的职责
-------------------

1、检查所有的 team 是否按照项目管理的要求在工作。

2、检查所有的 team 的迭代计划。

3、每天将检查的结果形成项目管理报告($CVSROOT/knowledge/management/PMReport.txt)

4、可接收性测试。


其他注意事项

1、源代码就是文档
在整个开发过程中的 User Story 是临时的文档,不会被长期保留,CRC 文档和源代码才是最终的开发文档,将被长期保留。

2、不说悄悄话
通过 IRC 等工具进行交流,让所有的人都知道你在怎样思考,减少悄悄话。

分享到:
评论
1 楼 yao_2110 2008-06-03  
我感觉XP的精髓就是:
1,有效沟通。
2,快速迭代。
3,单元测试。

相关推荐

    D-Link DGS-3650产品手册

    DGS-3650提供包括二、三、四层的多层访问控制列表、通过TACACS+和RADIUS服务的802.1x用户认证等, 构建一套完整的安全特性。另外提供的恶意攻击抑制能力和三层IPV4、IPV6静态路由特性增加了网络的性能和安全。...

    超炫emlog模版

    EMLOG程序模版,为某文化传媒公司官网专用,演示地址http://www.haidatian.com/,超炫和N多特效,下载你肯定不后悔!

    自动备份插件

    主要目的是为了更方便的自动备份网站数据,并按照自己设定的备份间隔时间,后期将实现网盘同步等等强大功能!

    六首页数字藏品NFT交易网React NextJS网站模板 六首页数字藏品nft交易网反应NextJS网站模板

    六首页数字藏品NFT交易网React NextJS网站模板 六首页数字藏品nft交易网反应NextJS网站模板

    wireshark安装教程入门

    wireshark安装教程入门

    基于C++负数据库的隐私保护在线医疗诊断系统

    【作品名称】:基于C++负数据库的隐私保护在线医疗诊断系统 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】: 基于负数据库的隐私保护在线医疗诊断系统 NDBMedicalSystem 客户端及服务器端 本项目是在保护用户隐私的前提下,完成了对新冠肺炎、乳腺癌、眼疾等多种疾病的智能诊断。

    基本的嵌入式操作系统给

    任务管理

    3-10.py

    3-10

    Python3+MATLAB无线传感器网络相关仿真 基于RSSI测距的多边定位法仿真 生成五种网络拓扑结构源码.zip

    Python3+MATLAB无线传感器网络相关仿真 基于RSSI测距的多边定位法仿真 生成五种网络拓扑结构源码.zip

    matlab交互式课件模块,介绍了典型的工作流程,设置,以及涉及到用机器学习解决回归问题的考虑.zip

    matlab交互式课件模块,介绍了典型的工作流程,设置,以及涉及到用机器学习解决回归问题的考虑.zip

    563563565+3859

    5635356

    基于Matlab的模糊控制PID仿真以及相应的论文验证参数源码+文档+各种资料.zip

    基于Matlab的模糊控制PID仿真以及相应的论文验证参数源码+文档+各种资料.zip

    麦肯锡-年月xx集团战略设计和首次上市咨询报告.ppt

    麦肯锡-年月xx集团战略设计和首次上市咨询报告.ppt

    麦肯锡 把握中国资本市场的机遇.ppt

    麦肯锡 把握中国资本市场的机遇.ppt

    基于python深度学习实现多种农产品价格预测源码+项目说明.zip

    基于python深度学习实现多种农产品价格预测源码+项目说明.zip个人经导师指导并认可通过的98分大作业设计项目,适用人群:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业或毕业设计,作为“参考资料”使用。 基于python深度学习实现多种农产品价格预测源码+项目说明.zip个人经导师指导并认可通过的98分大作业设计项目,适用人群:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业或毕业设计,作为“参考资料”使用。 基于python深度学习实现多种农产品价格预测源码+项目说明.zip个人经导师指导并认可通过的98分大作业设计项目,适用人群:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业或毕业设计,作为“参考资料”使用。 基于python深度学习实现多种农产品价格预测源码+项目说明.zip个人经导师指导并认可通过的98分大作业设计项目,适用人群:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业或毕业设计,作为“参考资料”使用。 基于python深度学习实现多种农产品价格预测源码+项目说明.zip个人经导师指导并认可通过的98分大作

    matlab华松敏编写的教科书《机器人理论与技术基础》的源代码.zip

    matlab华松敏编写的教科书《机器人理论与技术基础》的源代码.zip

    setuptools-23.0.0-py2.py3-none-any.whl

    文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    ChatGPT 中文调教指南.zip

    ChatGPT是由OpenAI训练的一款大型语言模型,能够和你进行任何领域的对话。 国内中文版 它能够生成类似于人类写作的文本。您只需要给出提示或提出问题,它就可以生成你想要的东西。 充当 Linux 终端 我想让你充当 Linux 终端。我将输入命令,您将回复终端应显示的内容。我希望您只在一个唯一的代码块内回复终端输出,而不是其他任何内容。不要写解释。除非我指示您这样做,否则不要键入命令。当我需要用英语告诉你一些事情时,我会把文字放在中括号内[就像这样]。我的第一个命令是 pwd 充当英语翻译和改进者 我希望你能担任英语翻译、拼写校对和修辞改进的角色。我会用任何语言和你交流,你会识别语言,将其翻译并用更为优美和精炼的英语回答我。请将我简单的词汇和句子替换成更为优美和高雅的表达方式,确保意思不变,但使其更具文学性。请仅回答更正和改进的部分,不要写解释。我的第一句话是“how are you ?”,请翻译它。 充当论文润色者(拿摘要部分举例) 请你充当一名论文编辑专家,在论文评审的角度去修改论文摘要部分,使其更加流畅,优美。下面是具体要求: 能让读者快速获得文章的要点或精髓,

    matlab机器人课程和书籍中的问题.zip

    matlab机器人课程和书籍中的问题.zip

    麦肯锡_-_解决_问题_的_基本_方法_-_七步成诗.ppt

    麦肯锡_-_解决_问题_的_基本_方法_-_七步成诗.ppt

Global site tag (gtag.js) - Google Analytics