AWorks的哲學(xué)思想
一、 思維差異
蘋(píng)果公司之所以能成為全球最賺錢(qián)的公司,關(guān)鍵在于其產(chǎn)品的性能超越了用戶(hù)的預(yù)期,并且具備大量可重用的核心領(lǐng)域知識(shí),使綜合成本達(dá)到了極致。Yourdon和Constantine在《結(jié)構(gòu)化設(shè)計(jì)》一書(shū)中,將經(jīng)濟(jì)學(xué)作為軟件設(shè)計(jì)的底層驅(qū)動(dòng)力,認(rèn)為軟件設(shè)計(jì)應(yīng)該致力于降低整體成本。人們發(fā)現(xiàn)軟件的維護(hù)成本遠(yuǎn)遠(yuǎn)高于它的初始成本,這是因?yàn)槔斫猬F(xiàn)有代碼需要花費(fèi)時(shí)間,且容易出錯(cuò);而改動(dòng)代碼之后,還要進(jìn)行測(cè)試和部署。
在很多時(shí)候,程序員不是在編碼,而是在閱讀程序。由于閱讀程序需要從細(xì)節(jié)和概念上理解,因此修改程序的投入會(huì)遠(yuǎn)遠(yuǎn)大于最初編程的投入。基于這樣的共識(shí),我們考慮一系列事情時(shí),就要不斷地總結(jié)使之可以重用,這就是方法論的源起。
通過(guò)財(cái)務(wù)數(shù)據(jù)分析可知,由于早期決策失誤和缺乏科學(xué)的軟件工程方法,我們開(kāi)發(fā)了一些周期長(zhǎng)、技術(shù)難度大且回報(bào)率極低的產(chǎn)品,不僅軟件難以重用,而且擴(kuò)展和維護(hù)難度很大,從而導(dǎo)致開(kāi)發(fā)成本居高不下。
由此可見(jiàn),從軟件開(kāi)發(fā)來(lái)看,軟件工程與計(jì)算機(jī)科學(xué)是完全不同的兩個(gè)領(lǐng)域的知識(shí),其主要區(qū)別在于人,因?yàn)檐浖_(kāi)發(fā)是以人為中心的過(guò)程。如果考慮人的因素,軟件工程更接近經(jīng)濟(jì)學(xué),而非計(jì)算機(jī)科學(xué)。顯然,如果我們不改變思維方式,就很難開(kāi)發(fā)出既好賣(mài)成本又低的產(chǎn)品。
二、 利潤(rùn)模型
產(chǎn)品的BOM 成本很低,而毛利又很高,為何很多上市公司的年利潤(rùn)卻買(mǎi)不起一套房? 房子到底被誰(shuí)買(mǎi)走了,這個(gè)問(wèn)題值得我們反思!
成功的企業(yè)除了愿景、使命和價(jià)值觀之外,其核心指標(biāo)就是利潤(rùn)。作為開(kāi)發(fā)人員,最大的痛苦之一就是很難精準(zhǔn)地開(kāi)發(fā)出好賣(mài)的產(chǎn)品。因?yàn)楹芏嗥髽I(yè)都不知道利潤(rùn)是如何來(lái)的,所以有必要建立一個(gè)利潤(rùn)模型,即“利潤(rùn)=需求-設(shè)計(jì)”。需求是致力面向AWorks框架和接口的C編程(上)?
于解決“產(chǎn)品如何好賣(mài)”的問(wèn)題,設(shè)計(jì)是致力于解決“如何降低成本”的問(wèn)題。代碼的優(yōu)劣不僅直接決定了軟件的質(zhì)量,還將直接影響軟件成本。軟件成本是由開(kāi)發(fā)成本和維護(hù)成本組成的,而維護(hù)成本卻遠(yuǎn)高于開(kāi)發(fā)成本,蠻力開(kāi)發(fā)的現(xiàn)象比比皆是,大量來(lái)之不易的資金被無(wú)聲無(wú)息地吞沒(méi),造成社會(huì)資源的嚴(yán)重浪費(fèi)。為何不將復(fù)雜的技術(shù)高度抽象呢? 如果實(shí)現(xiàn)了就能做到讓專(zhuān)業(yè)的人做專(zhuān)業(yè)的事,AWorks就是在這樣的背景下誕生的。由于其中融入了更多的軟件工程技術(shù)方法,因此就能做到將程序員徹底從非核心域中解脫出來(lái),專(zhuān)注于核心競(jìng)爭(zhēng)力。
三、 核心域和非核心域
其實(shí)一個(gè)軟件系統(tǒng)封裝了若干領(lǐng)域的知識(shí),其中有一個(gè)領(lǐng)域的知識(shí)代表了系統(tǒng)的核心競(jìng)爭(zhēng)力,則這個(gè)領(lǐng)域就稱(chēng)為“核心域”,而其他領(lǐng)域就稱(chēng)為“非核心域”。雖然更通俗的說(shuō)法是“業(yè)務(wù)”和“技術(shù)”,但使用“核心域”和“非核心域”更嚴(yán)謹(jǐn)。非核心域就是別人的領(lǐng)域,比如,底層驅(qū)動(dòng)、操作系統(tǒng)和組件,即便你有一些優(yōu)勢(shì),那也是暫時(shí)的,競(jìng)爭(zhēng)對(duì)手也能通過(guò)其他渠道獲得。雖然非核心域的改進(jìn)是必要的,但不充分,還是要在核心域上深入挖掘,讓競(jìng)爭(zhēng)對(duì)手無(wú)法輕易從第三方獲得。因?yàn)橹挥性诤诵挠蛏仙钊胪诰?達(dá)到基于核心域的復(fù)用,才是獲得和保持競(jìng)爭(zhēng)力的根本手段。
要達(dá)到基于核心域的復(fù)用,有必要將核心域和非核心域分開(kāi)考慮。因?yàn)檫^(guò)早地將各個(gè)領(lǐng)域的知識(shí)混雜,會(huì)增加不必要的負(fù)擔(dān),從而導(dǎo)致開(kāi)發(fā)人員騰不出腦力思考核心域中更深刻的問(wèn)題。由于核心域與非核心域的知識(shí)都是獨(dú)立的,解決問(wèn)題的規(guī)模一旦變大,而人腦的容量和運(yùn)算能力又有限,就會(huì)顧此失彼,故必須分而治之。
四、 共性與差異性
如果沒(méi)有ARM 公司的IP授權(quán)模式,那么在設(shè)計(jì)MCU 時(shí)勢(shì)必會(huì)消耗大量來(lái)之不易的財(cái)富。雖然ARM 公司的規(guī)模相對(duì)來(lái)說(shuō)不大,但是毫不影響ARM 成為一個(gè)偉大的企業(yè),其為人類(lèi)做出的貢獻(xiàn)是有目共睹的。
盡管如此,如果沒(méi)有軟件的支持,那么硬件就是一坨廢鐵。由于需求五花八門(mén),人們盡管也做出了巨大的努力,期望最大限度地降低開(kāi)發(fā)成本,但期望的實(shí)現(xiàn)有,卻遙遙無(wú)期,無(wú)法做到高度地重用人類(lèi)通過(guò)艱苦努力積累的知識(shí)。由于商業(yè)利益的驅(qū)使,偉大企業(yè)的不偉大之處,是企圖將客戶(hù)綁在他們的戰(zhàn)車(chē)上,讓競(jìng)爭(zhēng)對(duì)手絕望,大凡成功的企業(yè)無(wú)不如此。有沒(méi)有破解的辦法呢? 有,那就是“共性與差異性分析”抽象工具。實(shí)際上,不管是基于何種內(nèi)核的MCU,也不管是哪家公司的OS,其設(shè)計(jì)原理都是一樣的,只是實(shí)現(xiàn)方法和實(shí)體(硬件和程序)不一樣,但只要將其共性抽象為統(tǒng)一接口,差異性用特殊的接口應(yīng)對(duì)即可。
基于此,我們不妨做一個(gè)大膽的假設(shè)。雖然PCF85063、RX8025T 和DS1302來(lái)? AWorks的哲學(xué)思想自不同的半導(dǎo)體公司,但其共性都是RTC實(shí)時(shí)日歷時(shí)鐘芯片,即可高度抽象共用相同的驅(qū)動(dòng)接口,其差異性可用特殊的驅(qū)動(dòng)接口應(yīng)對(duì)。雖然FreeRTOS或μC/OS Ⅱ或sysBIOS、Linux、Windows各不相同,但它們都是OS,多線程、信號(hào)量、消息、郵箱、隊(duì)列等是其特有的共性,顯然QT和emWin同樣可以高度抽象為GUI框架。也就是說(shuō),不管是什么MCU,也不管是否使用操作系統(tǒng),只要修改相應(yīng)的頭文件,即可復(fù)用應(yīng)用代碼。
由此可見(jiàn),無(wú)論選擇何種MCU 和OS,只要AWorks支持它,就可以在目標(biāo)板上實(shí)現(xiàn)跨平臺(tái)運(yùn)行。因?yàn)闊o(wú)論何種OS,它只是AWorks的一個(gè)組件,針對(duì)不同的OS,AWorks都會(huì)提供相應(yīng)的適配器,那么所有的組件都可以根據(jù)需要互換。
由于AWorks制定了統(tǒng)一的接口規(guī)范,并對(duì)各種MCU 內(nèi)置的功能部件與外圍器件進(jìn)行了高度的抽象,因此無(wú)論你選用的是ARM 還是DSP,只要以高度復(fù)用的軟件設(shè)計(jì)原則和只針對(duì)接口編程的思想為前提,應(yīng)用軟件就可實(shí)現(xiàn)“一次編程、終生使用、跨平臺(tái)”,顯然AWorks所帶來(lái)的最大價(jià)值就是不需要重新發(fā)明輪子。
五、 生態(tài)系統(tǒng)
如果僅有OS和應(yīng)用軟件框架,要構(gòu)成生態(tài)系統(tǒng),這是遠(yuǎn)遠(yuǎn)不夠的。在萬(wàn)物互聯(lián)的時(shí)代,一個(gè)完整的IoT 系統(tǒng),還包括傳感器、信號(hào)調(diào)理電路、算法和接入云端的技術(shù),可以說(shuō)異常復(fù)雜,包羅萬(wàn)象。這不是一個(gè)公司拿到需求就可以在幾個(gè)月之內(nèi)完成的,需要長(zhǎng)時(shí)間的大量積累。
ZLG集團(tuán)(ZLG集團(tuán)目前包含兩個(gè)子公司:廣州致遠(yuǎn)電子有限公司和廣州周立功單片機(jī)科技有限公司,后文將ZLG集團(tuán)簡(jiǎn)稱(chēng)為ZLG,兩個(gè)子公司分別簡(jiǎn)稱(chēng)為致遠(yuǎn)電子和周立功單片機(jī))在成立之初就做了長(zhǎng)遠(yuǎn)的布局,并沒(méi)有將自己定位于芯片代理或設(shè)計(jì),也沒(méi)有將自己定位于儀器制造,更沒(méi)有將自己定位于方案供應(yīng)商,而是隨著時(shí)間的推移和時(shí)代的發(fā)展,經(jīng)過(guò)艱苦的努力自然而然地成為了“工業(yè)互聯(lián)網(wǎng)生態(tài)系統(tǒng)”的領(lǐng)導(dǎo)品牌。這不是刻意為之的,而是通過(guò)長(zhǎng)期的奮斗順理成章的結(jié)果。
ZLG通過(guò)“芯片+AWorks”設(shè)計(jì)了高附加值的模塊、板卡和高端測(cè)量?jī)x器,通過(guò)有線和無(wú)線通信接口接入ZWS(ZLG Web Services) IoT云端處理系統(tǒng),實(shí)現(xiàn)了大數(shù)據(jù)處理,構(gòu)成工業(yè)互聯(lián)網(wǎng)生態(tài)系統(tǒng)。
ZLG的商業(yè)模式既可以銷(xiāo)售硬件,也可以銷(xiāo)售平臺(tái),還可以針對(duì)某個(gè)特定的行業(yè)提供系統(tǒng)服務(wù)于終端用戶(hù)。與此同時(shí),ZLG 將在全國(guó)50所大學(xué)建立工業(yè)互聯(lián)網(wǎng)生態(tài)系統(tǒng)聯(lián)合實(shí)驗(yàn)室,通過(guò)產(chǎn)學(xué)研的模式培養(yǎng)人才服務(wù)于工業(yè)界,還將通過(guò)天使投資打造ZLG 系,幫助更多的人取得更大的成功,推動(dòng)“中國(guó)制造2025”計(jì)劃的高速發(fā)展。
六、 專(zhuān)家與通才
任何一個(gè)組織和系統(tǒng)的成功都離不開(kāi)專(zhuān)家和通才的鼎力配合與奮斗。這12年面向AWorks框架和接口的C編程(上)?一路走來(lái)很不容易,但欣慰的是AWorks生態(tài)系統(tǒng)的開(kāi)發(fā),培養(yǎng)了一些專(zhuān)家和核心骨干人才。我深深地體會(huì)到卓越人才的價(jià)值,多么高的評(píng)價(jià)都不為過(guò),所以今后我的主要工作就是尋找和發(fā)現(xiàn)卓越人才,為他們提供一個(gè)衣食無(wú)憂(yōu)的,能夠靜下心來(lái)創(chuàng)新的平臺(tái),大家共同努力改變這世界的某一小部分。歡迎自我推薦或讀者向我推薦有理想有抱負(fù)的人才,如果你有心就一定能找到我。
七、 叢書(shū)簡(jiǎn)介
這套叢書(shū)命名為《嵌入式軟件工程方法與實(shí)踐叢書(shū)》,目前已經(jīng)完成《程序設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)》《面向AMetal框架和接口的C編程(上)》,后續(xù)還將推出《面向AWorks框架和接口的C編程(下)》《面向AMetal框架和接口的LoRa編程》《面向AWorks框架和接口的C++編程》《面向AWorks框架和接口的GUI編程》《面向AWorks框架和接口的CAN 編程》《面向AWorks框架和接口的網(wǎng)絡(luò)編程》《面向AWorks框架和接口的EtherCAT編程》《嵌入式系統(tǒng)應(yīng)用設(shè)計(jì)》等圖書(shū),最新動(dòng)態(tài)詳見(jiàn)www.zlg.cn(致遠(yuǎn)電子官網(wǎng))和www.zlgmcu.com(周立功單片機(jī)官網(wǎng))。
周立功
2018年5月4日