我知道的很多操作系统项目(我是 PHP 开发人员)都使用版本作为里程碑,但这是最好的方法吗?里程碑是否应该意味着项目迭代过程中的某些东西(意思是全名)?有什么规则吗?或者它完全是主观的?
5 回答
就像那句古老的格言所说,“标准的美妙之处在于有这么多可供选择。” 我不能告诉你我将如何为 PHP 项目做这件事,但我可以告诉你我们用于商店的方法 - 这是一个 .NET 商店。
我们使用一个相当传统的四部分版本控制系统,版本的每个部分代表不同的东西。例如:
Major.Minor.Revision.Build
显然,每个都是一个数字。对我们来说,这四个部分是微软预先安排好的。让我带你回顾一下堆栈,关于我们如何证明每个人的合理性:
- 构建 - 在我们的商店中自动递增。这个指标就像一个构建的唯一标识符,因为它是由编译器提供的。
- 修订版 - 我们将此保留用于不会破坏兼容性的版本。公开的接口被保留,第三方实现可能会在没有修改的情况下原封不动地运行。
- 次要 - 此版本通常会引入新功能、更改现有功能并运行破坏兼容性的更高风险。
- Major - 涉及大量重写、大量新功能集以及从根本上偏离以前的代码库的大规模更改。
里程碑在哪里发挥作用?它们是我们的项目目标。里程碑在项目启动之前确定,代表应达到预期进度水平的点。它主要用于在发布之前向业务用户介绍功能并监控发布的整体交付计划。我们还在版本控制中为每个里程碑应用了一个标签,以帮助轻松识别由于任何原因需要手动构建的里程碑。
在我们店里,里程碑的内容比它的名字更重要。为什么?当有多种原因表明它是一个里程碑时,复杂的里程碑不能轻易地以传达含义的方式命名。我们在日历和 wiki 上放置了里程碑,并描述了预期在其中实现的目标。
就像我之前提到的,我相信你也会得到一些其他的“标准”。目标是找到适合您和您的团队的流程,并坚持下去。
在我们的开发过程中,版本和里程碑是不同的。我们的标准里程碑之一是发布。当然,这有一个版本。但对我来说,里程碑是未来的事情,是我必须计划的事情。版本与发布相耦合,因此它已成为过去。
我们的标准里程碑计划基于公司范围的项目管理标准。我们有
- S-Gate:指定
- A-Gate:可用
- V-Gate:已验证
- R门:已发布
对于迭代开发,我们基本上重复这个循环。从 A 到 V 门是 alpha 阶段,从 V 到 R 是 beta 阶段。对于更大的项目,我们添加了与正在完成的特定功能集相关的里程碑。
我们使用它的原因主要是所有项目都是根据这个方案报告的,并且以他们熟悉的方式向管理层提供信息总是好的做法;-)
嗯,是的,这意味着你已经在迭代中完成了足够的工作来发布一些有用的东西。里程碑通常意味着您已经完成了比迭代结束更重要的事情。我会使用有意义的名字是的。
你在谈论至少两件不相关的事情。有源代码控制和项目里程碑。它们是相关的,但它们不是一回事。此外,还有软件开发工作本身,这与源代码和项目里程碑有关,但也有所不同。
这是一种基于 Scrum 的方法。它有三个可以编号或命名的不相关的东西。
首先是软件开发工作。
我们有冲刺来构建东西。这些可以编号,但它们通常有名称。诸如“批量加载第 1 部分”、“重构工作簿库”或“添加销售演示数据夹具”之类的名称。
我们有发布来发布东西。这些可以编号(基于 SVN 版本,或基于我们内部的“兼容性版本”,但它们通常有名称。“客户 X 的第一个版本”,或“此的错误修复”或“升级到那个”或其他东西有意义的。
其次,有源代码控制。为此,我们有一些与 sprint 和发布无关的内部版本/修订跟踪。
SVN 有存储库版本号。这会随着每次签入而增加。有几个星期,每天都有一个签到。几个星期,只有几个“大”签到。
我们有一个 major.minor 版本号,我们手动更新以显示兼容性。一些应用程序从 1.1 迁移到 1.2,因为一些小的变化,但数据库和 API 是相同的。其他应用程序从 2.3 迁移到 3.1,因为数据库或 API(或两者)以某种不兼容的方式发生了更改,我们需要进行模式迁移,并可能通知客户 REST 客户端接口的更改。
三是项目规划。
我们的项目计划里程碑包括我们的发布时间表。然而,项目里程碑还包括其他与软件无关的事情。里程碑包括诸如“签署新的托管协议”或“获取客户 X 测试数据”之类的内容。这些不是版本或发布或冲刺或任何东西。
“有什么规矩吗?” 是的。阅读 Scrum 以获得一套好的规则。
这不是一回事。这是两(或三)件事。
版本号很方便,因为您可以立即获取任何两个版本,并查看两个版本中哪个较新。它总是在一定程度上是主观的,因为谁能说什么功能或错误修复构成了里程碑?
我喜欢的方案是 xyz,其中 x 是主要版本号,y 是次要版本号,z 是内部版本号。主要版本意味着重写、大修或引入主要的新功能。次要版本意味着重大的错误修复,或一些小的功能改进或错误修复。内部版本号正是 - 版本号。