概述

产品经理之于版本管理,就像是父母之于孩子成长记录。作为一个父母总是期望自己能记录下孩子的每一次成长与变化。作为一个产品经理,同样要记录下每个版本变化并做好管理与维护。产品版本的变化是产品生命线上的重要里程碑,它记录了产品功能、产品修复及产品优化等变化情况,便于后续的追溯及回忆。

如何做好产品的版本管理,在不同的项目里面会有不同的处理方式。在本文,考虑现在的团队及项目情况,使用了以下的版本管理的方案。

目的

版本控制规范用于确定软件系统的命名及版本号管理的规则,以确保清楚地、唯一地标识出软件系统的各个组成部分及其状态,并建立这些部分之间的一致性关系。

范围

版本控制的范围包括:

  1. 源代码:用计算机编程语言编写的源代码文件;
  2. 文档:需求规格说明书、总体设计说明书、数据库设计说明书、详细设计说明书等描述软件功能和结构的技术文档;项目计划等项目管理文档以及各种测试文档和用户文档;
  3. 产品包:将源代码进行编译得到的可运行的软件系统。

版本号

版本号用 v {主版本号}.{副版本号}.{动态版本号} 表示

UTOOLS1579432614484.png

版本标志

版本标志用 v 表示,将版本号与其他文字隔离开

主版本号

主版本号是软件系统的主要版本描述,主版本号的变更特指重大变革发生;

  • 确立时间
    • 产品需求计划时候确立
  • 更新人
    • 产品立项会议上确立后由产品经理更新
  • 更新规则
    • 产品需求发生重大变更、迭代或产品战略性变更时候,主版本号加1;
    • 产品需求发生全面全新的优化,包括页面、体验及技术上的全面全新优化,主版本号加1;

副版本号

当发生不影响软件的整体流程或概念的功能变更的时候,对副版本号进行更新

  • 确立时间
    • 产品需求计划时候确立
  • 更新人
    • 产品经理与项目负责人协商后由产品经理更新
  • 更新规则
    • 主版本号更新时,副版本号归0;
    • 产品需求新增功能模块,副版本号加1;
    • 产品优化后,体验有显著性的提升,包括页面、体验、技术的优化,但未达到全面的优化阶段,副版本号加1;

动态版本号

主要是指功能完善和修复,比如线上紧急 BUG 修复、细节优化等;

  • 确立时间
    • 提交发布时候,由开发及发布负责人协商确定;
  • 更新人
    • 确定发布内容后,发布负责人向产品经理索要版本号并发布;
  • 更新规则
    • 主版本号、副版本号更新时候,动态版本号归0;
    • 产品需求新增及优化一般性非重要性功能模块,动态版本号加1;
    • 线上BUG修复并进行紧急发布后,动态版本号加1;

版本路径

软件系统涉及 WEB、API、APP 等,为了方便管理与环境复现,各个平台使用统一版本号路径。(产品线还算简单,就没有使用差异版本号了,统一版本号可以节省记录版本对应关系的步骤)

版本号路径图

UTOOLS1579426818839.jpeg

路径说明

所有平台共用同一个版本号进行管理

  • 当某一次发布进行了所有平台的发布,定版本号为 v1.0.0,则所有平台的代码打 Tag 为 v1.0.0(如发布1);
  • 当某一次发布进行了单独或者非全平台的发布,则版本号为前一次发布中,任意平台版本号 +1;(如发布4,版本号为发布3 中APP版本号 +1);

定位版本

  • 当需要复现某一次发布版本时候,只需要确定该次版本发布的版本号,并找出其他所有平台不大于该版本号 Tag 的最大版本号 Tag 即可。

版本发布流程

为了清晰每次发布内容以便后续追踪版本路径,发版本前必须通知产品经理并确定版本号。确定版本号后,发布负责人在 Git 代码库中打上版本号 Tag 并进行版本发布。

版本更新日志模板

发布时间

YY-MM-DD

版本号

v1.1.1

版本说明

【全新内容】

1.新增XX模块1/功能1,达到XX效果/目的;

2.新增XX模块2/功能2,达到XX效果/目的;

【产品优化】

1.优化现有XX模块1/功能1,改进了/整合了XX体验/操作/展示,达到XX效果/目的;

2.优化现有XX模块2/功能2,改进了/整合了XX体验/操作/展示,达到XX效果/目的;

【修复内容】

1.修复XX模块1/功能1,增强了/整合了XX体验/操作/展示,达到XX效果/目的;

2.修复XX模块2/功能2,增强了/整合了XX体验/操作/展示,达到XX效果/目的;

写着最后

本文写的是现阶段,流浪猫所在项目团队的版本管理方案,不足之处欢迎留言讨论。