论产品迭代开发的重要性

我理解的迭代开发,即是软件通过识别硬件版本,从而兼容产品生命周期内,所有的硬件改动。也就是一个软件,适配多个硬件。
 
一般标识的硬件版本的方法有两种:其一是预留若干个IO口,通过改变这些IO口电平状态,来产生与硬件版本绑定的编码;其二是通过往板上某个存储器内刷不同的编码。方法一比较彻底地标识出硬件版本,后续这个编码不会发生变化,缺点是对IO口资源有要求,并且这个要求有点不确定性,因为谁也不知道这个产品硬件后续需要更改多少次。方法二相对比较灵活,有比较大地延展性,缺点是这个编码可能会被软件擦除,也就是做不到和硬件地唯一匹配。
 
并不是所有的硬件改动都可以被软件兼容,例如,如果硬件改动的是运行内存这类最小系统的组成单元,软件可能都跑不起来,更别说兼容了。一般比较适用的场景是:最小系统固定,外围电路变化。
 
H公司对这种迭代开发运用比较纯熟,我对这种开发方式的认知也来自这段工作经历。H公司的产品主要分三大类,而这三类产品都用同一个最小系统,外围芯片差别就挺大,所以采用硬件IO编码标识这三类产品。一个类别下又有若干型号,同一个型号随着长期开发又会产生许多硬件变更,这个时候采用存储器编码,类似一个序列号,作为软件的一个组件。
 
D公司在这方面就比较欠缺了,由于没有采用硬件版本识别和迭代开发的方式,很多时候,D公司的前一批样机在适配新的硬件改动后就无法使用,样机数量大,研发开销就多。造成一个研发费用不低,研发人员又少的恶性循环。举一个例子,在一次硬件方案变更中,换了一颗外围DSP芯片,就重新生产了一百五十多台样机,每台样机元器件成本都在千元以上。这还是一个不大的项目,如果把这些开销拿来招兵买马,让有识之士腾出时间精研产品,研发质量又能上一个台阶了。

相关推荐