配置管理是个比较通用的概念,但由于软件的特殊性,它在软件领域里的应用会更多一些。之前写过一次,今天尝试从另一个角度再写一次,或许对大家从事相关工作有所启迪。
为了便于逐层理解,我们就从一张标签说起……
走进超市,水果摊上挑了几个苹果,阿姨打包好,贴上标签,你拿到收银区,收银小姐姐扫标签,你伸出手机,微 信二维码付款……
这是我们再熟悉不过的场景了,而其中的头号功臣就是标签,苹果袋子上带背胶的价签毫无疑问是典型的标签,而广义来看,微 信支付码、开车进停车场扫的车牌、保安大叔让出示的健康码……都是标签。
那么,再引申到汽车行业,我们车上有VIN码、钣金会打钢印以及车上几万个零件多数都要贴标签。此外,除了这实物标签,软件里也会有自己的各种Label。可见,标签在汽车里也显然是必不可缺的。
然而,越司空见惯的东西,实际上其背后的意义也值得品味,因为这正说明其具有普适性价值和意义。
暂且不去扩展,我们先就局限在汽车产品标签上,仔细想一想它的样子和使用场景……一张白底黑字带背胶的长条,首先映入眼帘的是Logo,当然会有产品名字,上面也写着车型或项目名,有零件号,有各类版本号,还有条形码,有生产日期,可能也有说明类或警示类文字或符号……
以我们的经验不难理解,标签的第一作用是标识,将从产线上出来的、看上去都一个样的产品做唯一性标识,从此它们就不一样了,从此它们就获取了一个时间和空间的唯一交汇点,当我们拿起它来,可以对它进行品头论足,进行分门别类。
哲语讲,世界上没有完全相同的两片叶子。标签倒是起到了将其落地的作用,这样看它好似还承载了哲学的味道。
开个玩笑,言归正传。
前面提到了标识的意义,但企业花钱搞出这些东西,显然不仅仅是为了标识后便于交流的作用。
再想一下,我们还会发现,日常工作中,在不同的需求下,我们会基于这个标签查这个产品的上下游,去看它在各类载体上的流转状态,比如采购单、设计图纸、DFMEA、数模、检验报告、物流记录等等之类(这里所有的东西都有唯一的“标签”,比如版本号),这样出现了质量问题,可以找到根因或者追回召回,也会用其作为追责证据……
用一个概念来讲呢,就是追溯。
中文里的追溯是追寻源头,是来龙和前世,但在我们这里它还有去脉和今生乃至来生的含义,这就显然比静态标识的意义更加广泛了。不过,没有自带静态唯一性标识属性的标签,追溯也就无从谈起了。
我们再来扩展一下,上述的“标签”及随后的“追溯”进入软件领域后会怎么样呢?
先看相同点,抛开最直观最狭义的软件版本号不谈,“标签”是不是近似于配置管理里配置项的Baseline?
可能会有一点点不好理解,回顾一下,前面提到的标签概念,时空交汇的唯一点。
机械产品被贴了标签后,就在时空里占了一个点位。软件产品也一样,发了一个版本并被定义ID后,也是占了一个点位,也就是我们爱讲的Baseline。
不过,最大的不同的是什么呢?
一个机械产品从开发到生产,变量非常有限,前面提到图纸、测试报告等也是屈指可数的版本变化,肉眼可见的清晰,逻辑虽可以,但根本没必要做什么配置管理,记性好的,脑子记就可以,所以除了产品本身之外,其他东西自然就被弱化了。
而软件产品不同于机械产品的静态性,它是具有频繁迭代的成长性的,看不见,摸不着,需求、设计、测试、bug……一系列的东西(配置项)频繁变化,而且各自之间又有很强的依赖性,所以我们不能像对待机械产品一样,弱化产品之外的东西,这就让配置管理体现了价值,它可以让我们清晰地知道每个节点的状态和关系。
为了更好地理解,我们设想一个形象化结构,横为纬,竖为经,纬线是软件产品的迭代发展生命轨迹,经线就是基线,经纬交点就类似于贴了“标签”的“产品”,也就是被Baselined了的配置项,整体这张网就是配置管理。