AWorks的哲学思想
一、 思维差异
苹果公司之所以能成为全球最赚钱的公司,关键在于其产品的性能超越了用户的预期,并且具备大量可重用的核心领域知识,使综合成本达到了极致。Yourdon和Constantine在《结构化设计》一书中,将经济学作为软件设计的底层驱动力,认为软件设计应该致力于降低整体成本。人们发现软件的维护成本远远高于它的初始成本,这是因为理解现有代码需要花费时间,且容易出错;而改动代码之后,还要进行测试和部署。
在很多时候,程序员不是在编码,而是在阅读程序。由于阅读程序需要从细节和概念上理解,因此修改程序的投入会远远大于最初编程的投入。基于这样的共识,我们考虑一系列事情时,就要不断地总结使之可以重用,这就是方法论的源起。
通过财务数据分析可知,由于早期决策失误和缺乏科学的软件工程方法,我们开发了一些周期长、技术难度大且回报率极低的产品,不仅软件难以重用,而且扩展和维护难度很大,从而导致开发成本居高不下。
由此可见,从软件开发来看,软件工程与计算机科学是完全不同的两个领域的知识,其主要区别在于人,因为软件开发是以人为中心的过程。如果考虑人的因素,软件工程更接近经济学,而非计算机科学。显然,如果我们不改变思维方式,就很难开发出既好卖成本又低的产品。
二、 利润模型
产品的BOM 成本很低,而毛利又很高,为何很多上市公司的年利润却买不起一套房? 房子到底被谁买走了,这个问题值得我们反思!
成功的企业除了愿景、使命和价值观之外,其核心指标就是利润。作为开发人员,最大的痛苦之一就是很难精准地开发出好卖的产品。因为很多企业都不知道利润是如何来的,所以有必要建立一个利润模型,即“利润=需求-设计”。需求是致力面向AWorks框架和接口的C编程(上)?
于解决“产品如何好卖”的问题,设计是致力于解决“如何降低成本”的问题。代码的优劣不仅直接决定了软件的质量,还将直接影响软件成本。软件成本是由开发成本和维护成本组成的,而维护成本却远高于开发成本,蛮力开发的现象比比皆是,大量来之不易的资金被无声无息地吞没,造成社会资源的严重浪费。为何不将复杂的技术高度抽象呢? 如果实现了就能做到让专业的人做专业的事,AWorks就是在这样的背景下诞生的。由于其中融入了更多的软件工程技术方法,因此就能做到将程序员彻底从非核心域中解脱出来,专注于核心竞争力。
三、 核心域和非核心域
其实一个软件系统封装了若干领域的知识,其中有一个领域的知识代表了系统的核心竞争力,则这个领域就称为“核心域”,而其他领域就称为“非核心域”。虽然更通俗的说法是“业务”和“技术”,但使用“核心域”和“非核心域”更严谨。非核心域就是别人的领域,比如,底层驱动、操作系统和组件,即便你有一些优势,那也是暂时的,竞争对手也能通过其他渠道获得。虽然非核心域的改进是必要的,但不充分,还是要在核心域上深入挖掘,让竞争对手无法轻易从第三方获得。因为只有在核心域上深入挖掘,达到基于核心域的复用,才是获得和保持竞争力的根本手段。
要达到基于核心域的复用,有必要将核心域和非核心域分开考虑。因为过早地将各个领域的知识混杂,会增加不必要的负担,从而导致开发人员腾不出脑力思考核心域中更深刻的问题。由于核心域与非核心域的知识都是独立的,解决问题的规模一旦变大,而人脑的容量和运算能力又有限,就会顾此失彼,故必须分而治之。
四、 共性与差异性
如果没有ARM 公司的IP授权模式,那么在设计MCU 时势必会消耗大量来之不易的财富。虽然ARM 公司的规模相对来说不大,但是毫不影响ARM 成为一个伟大的企业,其为人类做出的贡献是有目共睹的。
尽管如此,如果没有软件的支持,那么硬件就是一坨废铁。由于需求五花八门,人们尽管也做出了巨大的努力,期望最大限度地降低开发成本,但期望的实现有,却遥遥无期,无法做到高度地重用人类通过艰苦努力积累的知识。由于商业利益的驱使,伟大企业的不伟大之处,是企图将客户绑在他们的战车上,让竞争对手绝望,大凡成功的企业无不如此。有没有破解的办法呢? 有,那就是“共性与差异性分析”抽象工具。实际上,不管是基于何种内核的MCU,也不管是哪家公司的OS,其设计原理都是一样的,只是实现方法和实体(硬件和程序)不一样,但只要将其共性抽象为统一接口,差异性用特殊的接口应对即可。
基于此,我们不妨做一个大胆的假设。虽然PCF85063、RX8025T 和DS1302来? AWorks的哲学思想自不同的半导体公司,但其共性都是RTC实时日历时钟芯片,即可高度抽象共用相同的驱动接口,其差异性可用特殊的驱动接口应对。虽然FreeRTOS或μC/OS Ⅱ或sysBIOS、Linux、Windows各不相同,但它们都是OS,多线程、信号量、消息、邮箱、队列等是其特有的共性,显然QT和emWin同样可以高度抽象为GUI框架。也就是说,不管是什么MCU,也不管是否使用操作系统,只要修改相应的头文件,即可复用应用代码。
由此可见,无论选择何种MCU 和OS,只要AWorks支持它,就可以在目标板上实现跨平台运行。因为无论何种OS,它只是AWorks的一个组件,针对不同的OS,AWorks都会提供相应的适配器,那么所有的组件都可以根据需要互换。
由于AWorks制定了统一的接口规范,并对各种MCU 内置的功能部件与外围器件进行了高度的抽象,因此无论你选用的是ARM 还是DSP,只要以高度复用的软件设计原则和只针对接口编程的思想为前提,应用软件就可实现“一次编程、终生使用、跨平台”,显然AWorks所带来的最大价值就是不需要重新发明轮子。
五、 生态系统
如果仅有OS和应用软件框架,要构成生态系统,这是远远不够的。在万物互联的时代,一个完整的IoT 系统,还包括传感器、信号调理电路、算法和接入云端的技术,可以说异常复杂,包罗万象。这不是一个公司拿到需求就可以在几个月之内完成的,需要长时间的大量积累。
ZLG集团(ZLG集团目前包含两个子公司:广州致远电子有限公司和广州周立功单片机科技有限公司,后文将ZLG集团简称为ZLG,两个子公司分别简称为致远电子和周立功单片机)在成立之初就做了长远的布局,并没有将自己定位于芯片代理或设计,也没有将自己定位于仪器制造,更没有将自己定位于方案供应商,而是随着时间的推移和时代的发展,经过艰苦的努力自然而然地成为了“工业互联网生态系统”的领导品牌。这不是刻意为之的,而是通过长期的奋斗顺理成章的结果。
ZLG通过“芯片+AWorks”设计了高附加值的模块、板卡和高端测量仪器,通过有线和无线通信接口接入ZWS(ZLG Web Services) IoT云端处理系统,实现了大数据处理,构成工业互联网生态系统。
ZLG的商业模式既可以销售硬件,也可以销售平台,还可以针对某个特定的行业提供系统服务于终端用户。与此同时,ZLG 将在全国50所大学建立工业互联网生态系统联合实验室,通过产学研的模式培养人才服务于工业界,还将通过天使投资打造ZLG 系,帮助更多的人取得更大的成功,推动“中国制造2025”计划的高速发展。
六、 专家与通才
任何一个组织和系统的成功都离不开专家和通才的鼎力配合与奋斗。这12年面向AWorks框架和接口的C编程(上)?一路走来很不容易,但欣慰的是AWorks生态系统的开发,培养了一些专家和核心骨干人才。我深深地体会到卓越人才的价值,多么高的评价都不为过,所以今后我的主要工作就是寻找和发现卓越人才,为他们提供一个衣食无忧的,能够静下心来创新的平台,大家共同努力改变这世界的某一小部分。欢迎自我推荐或读者向我推荐有理想有抱负的人才,如果你有心就一定能找到我。
七、 丛书简介
这套丛书命名为《嵌入式软件工程方法与实践丛书》,目前已经完成《程序设计与数据结构》《面向AMetal框架和接口的C编程(上)》,后续还将推出《面向AWorks框架和接口的C编程(下)》《面向AMetal框架和接口的LoRa编程》《面向AWorks框架和接口的C++编程》《面向AWorks框架和接口的GUI编程》《面向AWorks框架和接口的CAN 编程》《面向AWorks框架和接口的网络编程》《面向AWorks框架和接口的EtherCAT编程》《嵌入式系统应用设计》等图书,最新动态详见www.zlg.cn(致远电子官网)和www.zlgmcu.com(周立功单片机官网)。
周立功
2018年5月4日