`
hotjava
  • 浏览: 183800 次
  • 性别: 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因其简洁易用、安装方便、资源占用低等特点,在个人博客和小型企业网站领域中颇受欢迎。它支持自定义模版,因此用户...

    自动备份插件

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

    基于C语言课程设计学生成绩管理系统、详细文档+全部资料+高分项目.zip

    【资源说明】 基于C语言课程设计学生成绩管理系统、详细文档+全部资料+高分项目.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

    基于springboot的简历系统源码(java毕业设计完整源码+LW).zip

    项目均经过测试,可正常运行! 环境说明: 开发语言:java JDK版本:jdk1.8 框架:springboot 数据库:mysql 5.7/8 数据库工具:navicat 开发软件:eclipse/idea

    “招聘智能化”:线上招聘问答系统的功能开发

    互联网技术经过数十年的发展,已经积累了深厚的理论基础,并在实际应用中无处不在,极大地消除了地理信息的障碍,实现了全球即时通讯,极大地便利了人们的日常生活。因此,利用计算机技术设计的线上招聘问答系统,不仅在管理上更加系统化和操作性强,更重要的是在数据保存和使用上能够节省大量时间,使得系统变得非常高效和实用。 线上招聘问答系统采用MySQL作为数据管理工具,Java作为编码语言,以及SSM框架作为开发架构。系统主要实现了简历管理、论坛帖子管理、职位招聘管理、职位招聘留言管理、招聘岗位管理、所在行业管理以及求职意向管理等功能。 该系统的设计不仅方便了操作人员,而且合理性高,能有效避免误操作,确保数据在录入时就符合设计要求,从而最大限度地减少源头性输入错误,使数据更加可控和可靠,将出错率降至最低。

    simulink实现标准IEEE33配电网系统,50HZ,将各节点数据统计起来输出到工作区,再matlab中跑出某时刻节点电压分布,适合用于观察某时刻节点电压变化情况 #特别是当用于接入双馈风机时

    simulink实现标准IEEE33配电网系统,50HZ,将各节点数据统计起来输出到工作区,再matlab中跑出某时刻节点电压分布,适合用于观察某时刻节点电压变化情况。 #特别是当用于接入双馈风机时,用powergui无法进行潮流计算,通过此方法能过很好的解决此问题。 有参考文献。

    给袋式真空包装机UG10全套技术资料100%好用.zip

    给袋式真空包装机UG10全套技术资料100%好用.zip

    基于java+ssm+mysql+微信小程序的智慧消防小程序 源码+数据库+论文(高分毕业设计).zip

    项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea、微信开发者工具 数据库:MySql5.7以上 部署环境:maven 数据库工具:navicat

    Java 入门教程.md

    Java 入门教程.md

    Unity寻路插件(A* Pathfinding)

    2024.10月份更新 最低unity版本2021.3.4

    xxscd_7.0.apk

    xxscd_7.0.apk

    基于C语言课程设计-职工管理系统、详细文档+全部资料+高分项目.zip

    【资源说明】 基于C语言课程设计-职工管理系统、详细文档+全部资料+高分项目.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

    自动氩弧焊机sw18全套技术资料100%好用.zip

    自动氩弧焊机sw18全套技术资料100%好用.zip

    MATLAB Simulink搭建电动车制动能量回收控制策略 整车参数 整车参数及性能指标 基本参数 参数值 整备质量 kg 1550 满载质量 kg 1920 轴距 m 2.670 轮胎滚动半径 m

    MATLAB Simulink搭建电动车制动能量回收控制策略 整车参数 整车参数及性能指标 基本参数 参数值 整备质量 kg 1550 满载质量 kg 1920 轴距 m 2.670 轮胎滚动半径 m 0.3 续驶里程 km 300 最高车速 (km·h-1) 150 最大爬坡度 % 30 0~100 km·h-1加速时间 s 12 电机、电池参数匹配 轮毂电机、动力电池参数 参数 参数值 轮毂电机 额定功率 kW 20 峰值功率 kW 50 额定转速 r·(min-1) 450 峰值转速 r·(min-1) 1500 额定转矩 (N·m) 400 峰值转矩 (N·m) 900 动力电池 额定电压 V 336 容量 Ah 170 最大充电功率 kW 7.5 电机最大制动力矩 式中,Temax为电机最大制动力矩;Pmax为电机峰值功率;PBmax为电池最大充电功率;ηb为电池充电效率;Tmax为电机峰值转矩;n为电机转速;nd为电机基速。 充电电流 式中,Im为充电电流;ηm为电机发电效率;T为单个电机制动力矩;Uec为电池的端电压。 动力电池SOC 采

    基于springboot的CSGO赛事管理系统源码(java毕业设计完整源码+LW).zip

    CSGO赛事管理系统的作用就是提供一个在线CSGO赛事管理的信息储存以及搜索的系统,用来协助对CSGO赛事信息进行统一管理。一个完善的CSGO赛事管理系统,可以对CSGO赛事进行精细化的管理。 环境说明: 开发语言:java JDK版本:jdk1.8 框架:springboot 数据库:mysql 5.7/8 数据库工具:navicat 开发软件:eclipse/idea

    多层陶瓷电容预热清扫机2DCAD+BOM清单proe4.0 可编辑全套技术资料100%好用.zip

    多层陶瓷电容预热清扫机2DCAD+BOM清单proe4.0 可编辑全套技术资料100%好用.zip

    毕设-ssm的最多跑一次微信小程序-源码-LW-PPT.rar

    “最多跑一次”小程序是一款基于微信平台的便民服务应用程序,旨在为用户提供政务服务、社区服务、生活服务的线上办理和查询功能,让用户能够足不出户即可享受各种便民服务。该小程序的名称源自“最多跑一次”改革理念,旨在减少群众办事过程中的跑腿次数,提高办事效率,方便用户快速、便捷的完成各项事务。政务服务方面,该小程序涵盖了各级政府部门的线上办事服务,用户可以通过小程序完成各类证件申办、查询政务信息、预约办事等功能,避免了排队等待和办公室跑腿的繁琐程序。社区服务方面,该小程序整合了社区文化活动、志愿者服务、社区警务等多项社区服务事项,为用户提供便捷的社区服务。生活服务方面,用户可以通过该小程序查询公交车时刻、预约停车位、快递物流查询等日常生活服务,方便了用户的出行和生活。此外,该小程序还具有身份验证、在线支付、消息通知等功能,用户可以通过微信小程序完整的完成各种服务事务,无需额外下载其他应用,提升了用户的使用体验。总之,“最多跑一次”小程序以其丰富的服务内容、便捷的操作流程和安全的使用环境,满足了用户办事的多样化需求,让用户享受到智慧城市带来的便利和舒适。

    基于springboot的准妈妈孕期交流平台源码(java毕业设计完整源码+LW).zip

    项目均经过测试,可正常运行! 环境说明: 开发语言:java JDK版本:jdk1.8 框架:springboot 数据库:mysql 5.7/8 数据库工具:navicat 开发软件:eclipse/idea

    09 - 淘宝直播:第一次直播话术怎么写.pdf

    09 - 淘宝直播:第一次直播话术怎么写

Global site tag (gtag.js) - Google Analytics