1.3 亲历高复用研发模式

机缘巧合下,一次偶然,让我有机会参与日本东芝公司电制事业部G2平台研发,该平台是用于支撑东芝各类工业嵌入式设备快速研发的技术平台。这段经历,让我惊奇的发现其研发模式完全迥异于我以前的认知。这段经历不仅让我大开眼界,也开始倒逼自己认真思考这种工作模式的优缺点。为何要这样做?这样做的优点是什么?又是如何一步步迭代到目前这个样子的呢?

从表面看,这种研发模式最典型的特征是努力提升工作(包含代码,设计文档甚至培训讲义等,但本书以代码复用为切入点)复用率,当然还有很多可参考借鉴之处,本章我会和大家分享一些这种研发模式中让自己很震惊的特征。

在东芝内部,大家习惯将这种研发模式称之为“平台化”模式。不过平台化这个词估计早就被各行各业用烂了,担心大家望词乱生义,在本书中我喜欢称之为高复用研发模式,或者高复用严格平台化架构,但不可避免的依然会频繁使用到平台化这个词语,希望大家不要误解。

1.3.1 夸张的代码复用率

我刚加入该项目组时,是由一位做规约开发的工程师带我熟悉整个研发流程。借助这个机会,我有幸阅读了他实现的一个规约程序,虽然仅仅是电力系统最常见的IEC104远动规约,但让我在内心中重新定义了“代码复用”这个概念。

我们平时做产品,代码复用是经常的事情。我的产品中需要某个功能,而恰好你的产品中已经实现过了,找你领导商量一下,然后将代码拷过来改一改,OK,搞定。这可能就是我们认为的代码复用。

与我们不一样,该规约项目组复用时不是直接将代码拷贝给其他项目组,而仅仅将编译后的中间文件和头文件导入代码库,其他项目组用配置软件直接导出复用就好。

大家看出关键差异了吗,其关键就在于我们需要改一改,而这儿不需要。因为不需要将一份代码维护成多个版本,这才是一种真正的复用。注意,从今而后,本书中一旦提到复用,都是指这种一个字符都不用修改的复用策略。

做过产品的工程师都知道,即使同样是104规约,很多产品线都存在着多多少少的差异,各个市场也会提出一些特殊的需求。这种情况下,是如何做到代码完全复用的呢。我阅读并分析代码后,发现关键需要做到如下几方面的工作:

  1. 需要抽象提炼各类数据模型api接口。
    规约程序需要访问很多具体的数据模型,如遥测、遥信等,这些数据模型在各类产品中概念大致相似,但或多或少的会存在细节上的差异,且会随着需求而持续变化。为了规约程序不受影响,就需要细致的提炼数据模型api接口。

  2. 构建动态执行架构,兼容前后台,实时OS或linux等多种运行环境。
    工控产品应用领域差异很大,因成本或需求要求不同,有些是前后台裸系统,有些则会使用复杂的强实时OS,或者使用linux系统。大家都知道前后台系统是简单的函数调用,而OS中是一个个的死循环任务函数,不想分别实现一套104规约,就需要构建抽象层,兼容各种运行环境。

  3. 构建规约数据参数配置表,需要维护软件或配置软件的支撑。
    各类装置虽然都使用104规约机制传输,但传输的具体数据却存在很多差异。因此,想让规约代码可复用,代码具体实现中就不能涉及任何特定的数据,用IT术语来说,规约代码只能针对数据接口进行编程。为了应对这种情况,需要额外构建各装置的数据接口配置表。如果规约传输的数据允许用户现场设置,该部分功能一般会内嵌在维护软件中,如果仅允许在厂内修改或合作伙伴二次开发,经常会内嵌在配置软件中(配置软件和维护软件会在后续框架设计中详述)。

  4. 可扩展程序架构,以支持各种二次开发环境。
    104规约虽然是国际标准,但在具体实施的过程中,大家总是会忍不住去扩展或修改它,因此会诞生各种区域版本(我实现过特殊的中东版本)、工程版本、特殊需求版本等。如何应对这种需求呢?最好的策略是分层,将104规约最基本的功能作为可复用模块进行构建,并提供二次修改的机制。最常见的二次扩展机制有参数文件、脚本和二次开发环境等(这些机制各有优缺点,在后续框架设计中都会提及)。

  5. 依据需求持续优化迭代。
    任何设计初期都可能存在不足,有些地方会考虑不周,而有些扩展选项又从未用过等。在实际工作中,我们经常是保持程序架构稳定,但会持续的优化细节。打磨的时间久了,我们就会惊奇的发现针对某一行业的程序改动频率会越来越小,此时,可复用的104规约模块就构建完毕了。

至此,我们终于完成了可复用104规约模块的构建。不知大家有没有意识到,其中提及的api接口、动态执行框架、配置软件、维护软件、脚本系统、二次开发环境等都不是104规约范围内的概念,为了完成104规约的复用,需要诸多模块配合,甚至平台级的支撑,而这,也正是可复用模块不容易做到的底层原因。

困难是有的,但如果你能闭眼想一想,假如我们的产品中,甚至我们部门负责的几条产品线,更甚至我们整个公司,所有的软件模块都是以类似这样的模式构建的,会是怎样的一种情景呢。下图是我当初参与具体研发工作时导出的可复用模块接口配置表(留意滚动条,最终会通过配置软件读取生成接口文件并下载到设备中),大家能感受到我当初的那种震撼心理吗?
在这里插入图片描述
基于大量可复用的软件模块,研发新产品就会简单很多了,其主要流程如下图所示:

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值