`
hotjava
  • 浏览: 181266 次
  • 性别: 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是一个基于PHP语言的开源博客系统,它的全称是"Easy Manage Log",意即简单管理日志。EMLOG因其简洁易用、安装方便、资源占用低等特点,在个人博客和小型企业网站领域中颇受欢迎。它支持自定义模版,因此用户...

    自动备份插件

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

    Matlab Toolbox for Interval Type-2 Fuzzy Logic Systems.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    基于java的大学生第二课堂设计与实现.docx

    基于java的大学生第二课堂设计与实现.docx

    vue+SpringBoot442大学校园快递代取管理系统的设计与实现java毕业设计源码含论文.rar

    jdk版本:jdk1.8+ 前端:vue.js+ElementUI 开发工具:IDEA 或者eclipse都支持 编程语言: java 框架支持:springboot 数据库: mysql 版本不限 数据库工具:Navicat/SQLyog都可以 详细技术:java+springboot+vue+MYSQL+MAVEN 前端采用的Vue框架,后端采用java语言,sprinboot框架,mybatis操作数据源,使用软件:idea,eclipse、MySQL。完成了用户登录管理等模块的设计与实现。完成了系统数据库的设计,并基于MySQL数据库管理系统

    win和android安卓平台的播放器 .zip(毕设&课设&实训&大作业&竞赛&项目)

    项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。

    application.properties

    application.properties

    【语音分离】通过分析信号的FFT,根据音频使用合适的滤波器进行语音信号分离Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    使用 javaEE,MySQL,jsp,jQuery,bootstrap,华为云搭建的小网站——奇异果物品管理平台(毕设&课设&

    项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。

    MATLAB 中的工具箱用于对架空和地下输电线路进行建模(单位长度参数、传播特性、频率扫描、瞬态模拟).rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    linux常用命令大全.docx

    linux常用命令大全

    罗彩琳23002374.cpp

    罗彩琳23002374.cpp

    基于ASP的房屋租售信息管理系统的设计(源代码+论文).zip

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看rEADME.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。

    使用SSM框架, MySql数据库, 食疗药膳推荐系统(首次上传项目记录).zip(毕设&课设&实训&大作业&竞赛&项目)

    项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。

    java基于ssm+vue学生奖惩管理系统源码 带毕业论文

    【资源说明】 1、开发环境:ssm框架;内含Mysql数据库;VUE技术 2、项目代码都经过严格调试,代码没有任何bug!下载可以直接使用! 3、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 4、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。

    ASP网上购物系统的设计与实现(源代码+论文).zip

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看ReAdme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 、本项目3比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看ReAdme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通;、本项 3目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看ReAdme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。

    MES APP应用系统(一个基于ReactNative的工厂MES移动APP).zip(毕设&课设&实训&大作业&竞赛&项目)

    项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。

    莱斯衰落信道下面向虚拟现实应用的无人机 MEC 系统的延迟优化matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    用于时间序列的通用深度自动编码器Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

Global site tag (gtag.js) - Google Analytics