Seriously, every time you write a piece of software, you should have defined what "done" means. First. If you have a customer, then there should be a contract -- specific, measurable, agreed, and testable -- that defines done.
If you don't know where you're going, how will you know when you get there?
冲刺评审中的测试、单元测试、集成测试、Webtest、同行 QA 和最终用户评审。 同行 QA 决定是否有其他必要,所有测试都必须在 CI 环境中通过。 这是一个 scrum web 项目。
Test, unit test, integration test, webtest, peer QA and end user review in the sprint review. Peer QA decides if anything else is necessary, all tests must pass in CI environment. This is in a scrum web-project.
A good measurement is code churn. Using your source code control software, measure the rate of change. How many lines of code are being removed/added/changed per day. Graph this over time. As you approach being ready to release, this should trend downwards and give an indication of stability and readiness to ship. This assumes that you are actually testing well and making changes to fix bugs or respond to change requests. If your user acceptance test users and integration/unit test activity are continuing to regress and test and you aren't having to make code changes (because they aren't finding anything necessitating a change) then you are probably ready to ship.
If big chunks of code are churning a few days before an arbitrary or externally driven ship date, look out!
From a development viewpoint 'done' is described quite well by my friend and mentor Simon Baker, here
Alistair Cockburn, Jeff Patton and Mike Cohn also have the following collected views
Shippable quality, which has to be exercised in a go-live, forces teams to really focus on ensuring that incremental work is more carefully thought through.
'Done' is something which all the above quoted would be the first to agree is always different per team and project; however to satisfy knowing that a given piece of work is done, the team must conduct an exercise at the start to flesh out the measure of done-ness and list those criteria.
In so doing, everyone has agreed by consensus what an acceptable completion point is - whether that includes noting the Task in Excel, or writing documentation (or not) becomes an implementation detail for that team/project. The overriding thing is that everyone's understanding of Done is uniform.
Equally, assuming you reach that definition by consensus, it can also be changed as required by consensus.
Each project will have it's own definition of done, ours is code complete (compiles successfully, etc), unit tested (or some kind of local testing if not possible) and released within one of our packages (so it's available to the other teams).
But the MOST important thing in DoD is every parties should agree on what it is (team, product owner, manager, etc) and it should be some kind of public contract, published in a team portal is a good idea.
发布评论
评论(12)
支票什么时候结清?
说真的,每次你编写一个软件时,你都应该定义“完成”的含义。 第一的。 如果你有客户,那么应该有一份合同——具体的、可衡量的、商定的和可测试的——来定义完成。
如果你不知道你要去哪里,你怎么知道你什么时候到达那里?
When the check clears?
Seriously, every time you write a piece of software, you should have defined what "done" means. First. If you have a customer, then there should be a contract -- specific, measurable, agreed, and testable -- that defines done.
If you don't know where you're going, how will you know when you get there?
肯定取决于软件的上下文和用途吗?
Lunar Lander(真实的)与 Flash 游戏 Lunar Lander 的“完成”定义截然不同。
在我工作的地方,完成是由非技术经理委员会定义的。 你可以想象其中的乐趣和游戏。
Surely dependent on context and purpose of the software?
Lunar Lander (the real thing) would have a very different definition of Done to Lunar Lander the Flash game.
Where I work, DONE is defined by a committee of non-technical managers. You can imagine the fun and games.
冲刺评审中的测试、单元测试、集成测试、Webtest、同行 QA 和最终用户评审。 同行 QA 决定是否有其他必要,所有测试都必须在 CI 环境中通过。 这是一个 scrum web 项目。
Test, unit test, integration test, webtest, peer QA and end user review in the sprint review. Peer QA decides if anything else is necessary, all tests must pass in CI environment. This is in a scrum web-project.
当客户(1)认为它已经完成时,它就会被签入、备份和记录。
另外:“完成”在网络开发中很少存在。
(1) 客户可能是内部 PM 等
When they client(1) considers it done, it's checked in, backed up, and documented.
Also: "done" rarely exists in web dev.
(1) where client may be an internal PM or such
一个好的衡量方法是代码改动。 使用源代码控制软件测量变化率。 每天删除/添加/更改多少行代码。 绘制随时间变化的图表。 当您接近准备发布时,这应该呈下降趋势,并表明稳定性和准备交付。 这假设您实际上测试良好并进行更改以修复错误或响应更改请求。 如果您的用户验收测试用户和集成/单元测试活动继续回归和测试,并且您不必进行代码更改(因为他们没有发现任何需要更改的内容),那么您可能已经准备好交付。
如果大块代码在任意或外部驱动的发布日期前几天出现,请注意!
A good measurement is code churn. Using your source code control software, measure the rate of change. How many lines of code are being removed/added/changed per day. Graph this over time. As you approach being ready to release, this should trend downwards and give an indication of stability and readiness to ship. This assumes that you are actually testing well and making changes to fix bugs or respond to change requests. If your user acceptance test users and integration/unit test activity are continuing to regress and test and you aren't having to make code changes (because they aren't finding anything necessitating a change) then you are probably ready to ship.
If big chunks of code are churning a few days before an arbitrary or externally driven ship date, look out!
当软件可以用来满足定义系统的要求时。
但我一直认为,“软件永远不会完成,它只是达到了可接受的不完整程度。”
When the software can be used to satisfy the requirements that define the system.
But I've always thought, "software is never done, it just reaches an acceptable level of incompleteness."
从发展的角度来看,我的朋友兼导师 Simon Baker 很好地描述了“完成”,此处
Alistair Cockburn、Jeff Patton 和 Mike Cohn 也有以下内容 收集的意见
可交付的质量必须在上线时实施,迫使团队真正专注于确保增量工作得到更仔细的考虑。
“完成”是上面引用的所有内容首先同意的事情,每个团队和项目总是不同的; 然而,为了满足知道某项工作已完成的情况,团队必须在一开始就进行练习,以充实完成度的衡量标准并列出这些标准。
这样做时,每个人都一致同意可接受的完成点是什么 - 无论是包括在 Excel 中记录任务,还是编写文档(或不)成为该团队/项目的实施细节。 最重要的是每个人对 Done 的理解是统一的。
同样,假设您通过协商一致达成了该定义,则也可以根据协商一致的要求对其进行更改。
From a development viewpoint 'done' is described quite well by my friend and mentor Simon Baker, here
Alistair Cockburn, Jeff Patton and Mike Cohn also have the following collected views
Shippable quality, which has to be exercised in a go-live, forces teams to really focus on ensuring that incremental work is more carefully thought through.
'Done' is something which all the above quoted would be the first to agree is always different per team and project; however to satisfy knowing that a given piece of work is done, the team must conduct an exercise at the start to flesh out the measure of done-ness and list those criteria.
In so doing, everyone has agreed by consensus what an acceptable completion point is - whether that includes noting the Task in Excel, or writing documentation (or not) becomes an implementation detail for that team/project. The overriding thing is that everyone's understanding of Done is uniform.
Equally, assuming you reach that definition by consensus, it can also be changed as required by consensus.
当满足所有要求并且所有测试通过时。
When all of the requirements are met and all the tests pass.
它从未完成,只是版本化和发布。
It's never done, simply versioned and released.
每个项目都有自己的完成定义,我们的代码是完整的(编译成功等),经过单元测试(如果不可能,则进行某种本地测试)并在我们的一个包中发布(因此其他团队可以使用) 。
但国防部中最重要的事情是各方都应该就其内容达成一致(团队、产品负责人、经理等),并且应该是某种公共合同,在团队门户网站上发布是一个好主意。
Each project will have it's own definition of done, ours is code complete (compiles successfully, etc), unit tested (or some kind of local testing if not possible) and released within one of our packages (so it's available to the other teams).
But the MOST important thing in DoD is every parties should agree on what it is (team, product owner, manager, etc) and it should be some kind of public contract, published in a team portal is a good idea.
任何时候任何软件都已完成 80%。 至少,这是我的经验所教导的......
Any piece of software at any time is always 80% done. At least, that's what my experience teaches ...
当客户认为是的时候。
When the customer thinks it is.