概要:產品的BOM成本很低,而毛利又很高,為何很多上市公司的年利潤卻買不起一套房?房子到底是被誰買走了,這個問題值得我們反思!經過近二十年持之以恒的研究與分析,周立功教授對如何實現(xiàn)軟件代碼的復用和跨平臺、實現(xiàn)開發(fā)者夢寐以求的奮斗目標,進行了大膽的推測,提出了核心域與非核心域的概念,而對于人與人之間思維差異為企業(yè)與個人發(fā)展帶來的影響,給出了終極解決之道!
在致遠電子公眾號后臺回復關鍵字【編程】可在線閱讀。
書本前言
產品的 BOM 成本很低,而毛利又很高,為何很多上市公司的年利潤卻買不起一套房?房子到底被誰買走了,這個問題值得我們反思!
1、大膽的推測
追求代碼復用和跨平臺,這是開發(fā)者夢寐以求的奮斗目標,但現(xiàn)實很殘酷,幾乎無法成為現(xiàn)實。原因何在?MCU 有 M0、M4、M7、ARM9、A5、A7、A8 內核、DSP......有些項目不需要操作系統(tǒng),有些項目可能選擇 FreeRTOS 或μC/OS-II 或 sysBIOS,另一些項目可能選擇 Linux 或 Windows,因為不同的半導體公司支持的平臺不一樣。
基于此,我們不妨做一個大膽的假設。雖然 PCF85063、RX8025T 和 DS1302 來自不同的半導體的公司,但其共性都是 RTC 實時日歷時鐘芯片,即可高度抽象共用相同的驅動接口,其差異性用特殊的驅動接口應對。雖然 FreeRTOS 或μC/OS-II 或 sysBIOS、Linux、Windows 各不相同,但它們都是 OS,多線程、信號量、消息、郵箱、隊列等是其特有的共性,顯然 QT 和 emWin 同樣可以高度抽象為 GUI 框架。也就是說,不管什么 MCU,也不管是否使用操作系統(tǒng),只要修改相應的頭文件,即可復用應用代碼,這就是平臺的雛形。
2、核心域與非核心域
其實一個軟件系統(tǒng)封裝了若干領域的知識,其中一個領域知識代表了系統(tǒng)的核心競爭力,這個領域被稱為“核心域”,其它領域稱為“非核心域”。雖然更通俗的說法是“業(yè)務”和“技術”,但使用“核心域”和“非核心域”更嚴謹。
非核心域就是別人的領域,比如,底層驅動、操作系統(tǒng)和組件,即便你有一些優(yōu)勢,那也是暫時的,競爭對手也能通過其它渠道獲得。雖然非核心域的改進是必要的,但不充分,還是要在核心域上深入挖掘,讓競爭對手無法輕易從第三方獲得。因為在核心域上深入挖掘,達到基于核心域的復用,這是獲得和保持競爭力的根本手段。
要達到基于核心域的復用,有必要將核心域和非核心域分開考慮。因為過早地將各個領域的知識混雜,會增加不必要的負擔,從而導致開發(fā)人員騰不出腦力思考核心域中更深刻的問題。由于待解決的問題的規(guī)模一旦變大,而人腦的容量和運算能力有限,因此必須分而治之,因為核心域與非核心域的知識都是獨立的。
3、思維差異決定收益
Yourdon 和 Constantine 在《結構化設計》一書中,將經濟學作為軟件設計的底層驅動力,軟件設計應該致力于降低整體成本。人們發(fā)現(xiàn)軟件的維護成本遠遠高于它的初始成本,因為理解現(xiàn)有代碼需要花費時間,而且容易出錯。同時改動之后,還要進行測試和部署。Apple之所以成為全球最賺錢的手機公司,關鍵在于產品的性能超越了用戶的預期,且因為大量可重用的核心領域知識,綜合成本做到了極致。
更多的時候,程序員不是在編碼,而是在閱讀程序。由于閱讀程序需要從細節(jié)和概念上理解,因此修改程序的投入會遠遠大于最初編程的投入?;谶@樣的共識,讓我們操心的一系列事情,需要不斷地思考和總結使之可以重用,這就是方法論的源起。
通過財務數(shù)據(jù)分析,由于早期決策失誤和缺乏科學的軟件工程方法,我們開發(fā)了一些周期長、技術難度大且回報率極低的產品,不僅軟件難以重用,而且擴展和維護難度很大,從而導致開發(fā)成本居高不下。
顯而易見,從軟件開發(fā)來看,軟件工程與計算機科學是完全不同的兩個領域的知識。其主要區(qū)別在于人,因為軟件開發(fā)是以人為中心的過程。如果考慮人的因素,軟件工程更接近經濟學,而非計算機科學。如果不改變思維方式,則很難開發(fā)出既好賣且成本低的產品。
雖然大多數(shù)開發(fā)者都很勤奮,但其奮斗目標不是企業(yè)和個人收益最大化,而是以學習基礎技術為樂趣,極少與市場人員和用戶交流,不注重提升個人挖掘用戶需求的創(chuàng)造力,而是將精力用錯了地方,這是很多人一輩子也沒有認識到的深刻問題。只是表面地嘆息自己懷才不遇,甚至將自己失敗的責任推給他人。由此可見,人與人之間的差別不在于知識和經驗,而是思維方面的差異決定了每個人的未來。
4、解決之道
代碼的優(yōu)劣不僅直接決定了軟件的質量,還將直接影響軟件成本。軟件成本是由開發(fā)成本和維護成本組成的,而維護成本卻遠高于開發(fā)成本,蠻力開發(fā)的現(xiàn)象比比皆是,大量來之不易的資金被無聲無息地吞沒,整個社會的資源浪費嚴重。
為何不將復雜的技術高度抽象呢?如果實現(xiàn)就能做到讓專業(yè)的人做專業(yè)的事,AWorks就是在這樣的背景下誕生的。由于其中融入了更多的軟件工程技術方法,因此就能做到將程序員徹底從非核心域中釋放出來聚焦于核心競爭力。
無論你選擇什么芯片和任何 OS,比如,Linux 和其它任何 RTOS,只要 AWorks 支持它,就可以在目標板上實現(xiàn)跨平臺運行。因為無論什么 OS,它只是 AWorks 的一個組件,針對不同的 OS,AWorks 都會提供相應的適配器,那么所有的組件都可以根據(jù)需要更換。
由于 AWorks 制定了統(tǒng)一的接口規(guī)范,并對各種微處理器內置的功能部件與外圍器件進行了高度的抽象,因此無論你選用的是 ARM 還是 DSP,通過“按需定制”的外設驅動軟件和相關組件,以高度復用的軟件設計原則和只針對接口編程的思想為前提,則應用軟件均可實現(xiàn)“一次編程、終生使用和跨平臺”。基于此,進一步擴大了 AWorks 使用范圍,又發(fā)展出了代碼更小的 AMetal,AWorks 能給你帶來的最大價值就是不需要重新發(fā)明輪子。
5、叢書簡介
《面向AMetal框架與接口的編程(上)》是《嵌入式軟件工程方法與實踐叢書》中的第一套第二本書,叢書共含四套:
第一套
《程序設計與數(shù)據(jù)結構》
《面向 AMetal 框架與接口的編程》(上)
《面向對象的分析與設計》
第二套
《面向 AWorks 框架與接口的編程》(適用于各種 MCU)
《面向對象的分析與設計》
第三套
《面向 AWorks 框架與接口的編程——基于 Linux》(適用于 ARM9 以上內核)
《面向對象的分析與設計》
第四套
《C++現(xiàn)代程序設計》
《面向 AWorks 框架與接口的編程——基于 C++》(適用于 ARM9 以上內核)
《面向對象的分析與設計》
還在寫作中的內容包括測試與持續(xù)集成,書籍均由周立功團隊從理論知識到實踐應用的精華匯編,將來會陸續(xù)與大家見面,共同學習與探討。