当前位置:首页>编程日记>正文

UML for Java Programmers之dx实战

本站寻求有缘人接手,详细了解请联系站长QQ1493399855

dx是一套简单的开发规则。它说白了就是迭代开发,在短周期内迭代处理”所有事情“,这里所指的”所有事情“包括需求、分析、设计、实现、测试和文档等等。

它的大概流程是这样:
1. 初始探索
    跟客户坐下来一起讨论系统到底是做什么的。在这个过程中,识别出系统的use-case也就是我们所说的user-story。一般花两到三天的时间做这件事。
2. 功能特征评估
  对于每个story,我们给个时间评估,这只是一个纯数字的评估,我们不关心数字的具体单位是什么,对每个story之间的比例的评估才是我们真正关心的。就是说一个8个点数的story是一个4个点数的story的两倍。
  在评估这个过程中,就是用一个很完美的时间里作一件事情。比如,头一天晚上准时上床睡觉,第二天起来后吃了像样的早餐,然后上班路上也不塞车,在工作过程中没有电话骚扰,整天没有会议,电脑也不死机,网络也很快,你的搭档跟你合作的时候也出奇的机敏,考虑又周全,而且也很有耐心,在这样的情况 下工作一天的我们就称为进行了一天”完美编程“。然后在这样的情况下去评估每一个story需要多少天可以完成。
3. 探究
  根据上面的探索,我们就可以验证我们的评估。比如完成一个7个点的story需要5人天的话,就意味着5天内快速的粗略地完成7个点。也许保质保量的完成这样的工作需要3倍的时间。因此调整一下我们的评估为15天完成7个点,大概1天完成半个点,这个数字就是我们的初始速度。
4. 计划
  有了story,评估,速度我们都有了,可以开始迭代了。计划要做的其实就是用我们当前的速度作为标准算出每次迭代里做的story。
  4.1 发布计划
  根据我们团队的人数,发布周期,确定发布周期内的迭代次数(一般是6次或者说三个月),然后根据我们每次迭代能完成的点数,然后让客户根据他的优先级挑选一批差不多数量的story作为我们的发布计划。
  4.2 迭代计划
  根据每次迭代能完成的工作量,挑选出本次迭代需要完成的story。然后把这里story再细化任务,这任务比story要小很多,它以4-10小时为单位的。在分配任务 时,每个人在自己的任务上签下名字。在签名字时候,每个人心里都有一个预算,每签一个任务就在自己的预算里减去相应的数字,直到自己的预算花光为止。
5. 中点
  在迭代周期内开发时间过了一半的时候,看看完成了几个stoy,如果比原计划快了,就让客户多增加几个story,然后慢了,就让客户把其中的一些story移到下一个周期。
6. 速度反馈
  在一个迭代结束时候,我们进行速度反馈。比如本次迭代完成了23点story点,那么这个就作为下一次迭代可以完成的story数的依据。

一次迭代包括了什么?
结对开发
  两个开发人员用同一台机器一起工作,一起处理他们负责的任务。两个程序员都完全忙玩写代码,他们的眼睛都关注着屏幕。
可验收测试
  每次dx迭代开始的时候,客户和QA把user-story充实到use-case里面,并为之编写可验收测试 案例。然后把这里测试案例交给开发人员,这些测试是真正的需求文档。
单元测试
  为写的代码编写单元测试。
重构
  因为有单元测试在撑腰,所以可以放心地去重构,测试的结果会告诉你重构后的正确性。绝不能把烂代码留到第二天。
开发式办公室
  所有工作都在一个房间进行,即使客户也不例外。
持续集成
  不管有没有其他人check out过,你都可以进行check out。然后只要手快就可以check in。而第二个check in 的人就要负责合并代码。这里有一个原则,负责合并代码的人必须确保测试是通过的。

特别提醒,这里没有提到UML,也没有提到JAVA。UML不是一个方法,而一种图示,JAVA出不是一个方法,而一种工具。

最近,dx其实就是xp。


http://www.coolblog.cn/news/ef9aff5b41df45e2.html

相关文章:

  • asp多表查询并显示_SpringBoot系列(五):SpringBoot整合Mybatis实现多表关联查询
  • s7day2学习记录
  • 【求锤得锤的故事】Redis锁从面试连环炮聊到神仙打架。
  • 矿Spring入门Demo
  • 拼音怎么写_老师:不会写的字用圈代替,看到孩子试卷,网友:人才
  • Linux 实时流量监测(iptraf中文图解)
  • Win10 + Python + GPU版MXNet + VS2015 + RTools + R配置
  • 美颜
  • shell访问php文件夹,Shell获取某目录下所有文件夹的名称
  • 如何优雅的实现 Spring Boot 接口参数加密解密?
  • LeCun亲授的深度学习入门课:从飞行器的发明到卷积神经网络
  • 支撑微博千亿调用的轻量级RPC框架:Motan
  • Mac原生Terminal快速登录ssh
  • 法拉利虚拟学院2010 服务器,法拉利虚拟学院2010
  • java受保护的数据与_Javascript类定义语法,私有成员、受保护成员、静态成员等介绍...
  • mysql commit 机制_1024MySQL事物提交机制
  • 2019-9
  • jquery 使用小技巧
  • 科学计算工具NumPy(3):ndarray的元素处理
  • vscode pylint 错误_将实际未错误的py库添加到pylint白名单
  • linux批量创建用户和密码
  • 工程师在工作电脑存 64G 不雅文件,被公司开除后索赔 41 万,结果…
  • js常用阻止冒泡事件
  • newinsets用法java_Java XYPlot.setInsets方法代碼示例
  • 气泡图在开源监控工具中的应用效果
  • 各类型土地利用图例_划重点!国土空间总体规划——土地利用
  • php 启动服务器监听
  • dubbo简单示例
  • Ubuntu13.10:[3]如何开启SSH SERVER服务
  • [iptables]Redhat 7.2下使用iptables实现NAT
  • 【设计模式】 模式PK:策略模式VS状态模式
  • CSS小技巧——CSS滚动条美化
  • JS实现-页面数据无限加载
  • 最新DOS大全
  • Django View(视图系统)
  • 阿里巴巴分布式服务框架 Dubbo
  • 阿里大鱼.net core 发送短信
  • Sorenson Capital:值得投资的 5 种 AI 技术
  • 程序员入错行怎么办?
  • 两张超级大表join优化
  • Arm芯片的新革命在缓缓上演
  • 第九天函数
  • Linux软件安装-----apache安装
  • HDU 5988 最小费用流
  • 《看透springmvc源码分析与实践》读书笔记一
  • nagios自写插件—check_file
  • python3 错误 Max retries exceeded with url 解决方法
  • 正式开课!如何学习相机模型与标定?(单目+双目+鱼眼+深度相机)
  • 通过Spark进行ALS离线和Stream实时推荐
  • 行为模式之Template Method模式