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