《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 業(yè)界動(dòng)態(tài) > 新書速遞:周立功教授心血新力作《面向AMetal框架與接口的編程(上)》

新書速遞:周立功教授心血新力作《面向AMetal框架與接口的編程(上)》

2017-08-29
來源:ZLG致遠(yuǎn)電子

  概要:產(chǎn)品的BOM成本很低,而毛利又很高,為何很多上市公司的年利潤卻買不起一套房?房子到底是被誰買走了,這個(gè)問題值得我們反思!經(jīng)過近二十年持之以恒的研究與分析,周立功教授對(duì)如何實(shí)現(xiàn)軟件代碼的復(fù)用和跨平臺(tái)、實(shí)現(xiàn)開發(fā)者夢(mèng)寐以求的奮斗目標(biāo),進(jìn)行了大膽的推測(cè),提出了核心域與非核心域的概念,而對(duì)于人與人之間思維差異為企業(yè)與個(gè)人發(fā)展帶來的影響,給出了終極解決之道!

  在致遠(yuǎn)電子公眾號(hào)后臺(tái)回復(fù)關(guān)鍵字【編程】可在線閱讀。

             

  書本前言

  產(chǎn)品的 BOM 成本很低,而毛利又很高,為何很多上市公司的年利潤卻買不起一套房?房子到底被誰買走了,這個(gè)問題值得我們反思!

  1、大膽的推測(cè)

  追求代碼復(fù)用和跨平臺(tái),這是開發(fā)者夢(mèng)寐以求的奮斗目標(biāo),但現(xiàn)實(shí)很殘酷,幾乎無法成為現(xiàn)實(shí)。原因何在?MCU 有 M0、M4、M7、ARM9、A5、A7、A8 內(nèi)核、DSP......有些項(xiàng)目不需要操作系統(tǒng),有些項(xiàng)目可能選擇 FreeRTOS 或μC/OS-II 或 sysBIOS,另一些項(xiàng)目可能選擇 Linux 或 Windows,因?yàn)椴煌陌雽?dǎo)體公司支持的平臺(tái)不一樣。

  基于此,我們不妨做一個(gè)大膽的假設(shè)。雖然 PCF85063、RX8025T 和 DS1302 來自不同的半導(dǎo)體的公司,但其共性都是 RTC 實(shí)時(shí)日歷時(shí)鐘芯片,即可高度抽象共用相同的驅(qū)動(dòng)接口,其差異性用特殊的驅(qū)動(dòng)接口應(yīng)對(duì)。雖然 FreeRTOS 或μC/OS-II 或 sysBIOS、Linux、Windows 各不相同,但它們都是 OS,多線程、信號(hào)量、消息、郵箱、隊(duì)列等是其特有的共性,顯然 QT 和 emWin 同樣可以高度抽象為 GUI 框架。也就是說,不管什么 MCU,也不管是否使用操作系統(tǒng),只要修改相應(yīng)的頭文件,即可復(fù)用應(yīng)用代碼,這就是平臺(tái)的雛形。

  2、核心域與非核心域

  其實(shí)一個(gè)軟件系統(tǒng)封裝了若干領(lǐng)域的知識(shí),其中一個(gè)領(lǐng)域知識(shí)代表了系統(tǒng)的核心競爭力,這個(gè)領(lǐng)域被稱為“核心域”,其它領(lǐng)域稱為“非核心域”。雖然更通俗的說法是“業(yè)務(wù)”和“技術(shù)”,但使用“核心域”和“非核心域”更嚴(yán)謹(jǐn)。

  非核心域就是別人的領(lǐng)域,比如,底層驅(qū)動(dòng)、操作系統(tǒng)和組件,即便你有一些優(yōu)勢(shì),那也是暫時(shí)的,競爭對(duì)手也能通過其它渠道獲得。雖然非核心域的改進(jìn)是必要的,但不充分,還是要在核心域上深入挖掘,讓競爭對(duì)手無法輕易從第三方獲得。因?yàn)樵诤诵挠蛏仙钊胪诰颍_(dá)到基于核心域的復(fù)用,這是獲得和保持競爭力的根本手段。

  要達(dá)到基于核心域的復(fù)用,有必要將核心域和非核心域分開考慮。因?yàn)檫^早地將各個(gè)領(lǐng)域的知識(shí)混雜,會(huì)增加不必要的負(fù)擔(dān),從而導(dǎo)致開發(fā)人員騰不出腦力思考核心域中更深刻的問題。由于待解決的問題的規(guī)模一旦變大,而人腦的容量和運(yùn)算能力有限,因此必須分而治之,因?yàn)楹诵挠蚺c非核心域的知識(shí)都是獨(dú)立的。

  3、思維差異決定收益

  Yourdon 和 Constantine 在《結(jié)構(gòu)化設(shè)計(jì)》一書中,將經(jīng)濟(jì)學(xué)作為軟件設(shè)計(jì)的底層驅(qū)動(dòng)力,軟件設(shè)計(jì)應(yīng)該致力于降低整體成本。人們發(fā)現(xiàn)軟件的維護(hù)成本遠(yuǎn)遠(yuǎn)高于它的初始成本,因?yàn)槔斫猬F(xiàn)有代碼需要花費(fèi)時(shí)間,而且容易出錯(cuò)。同時(shí)改動(dòng)之后,還要進(jìn)行測(cè)試和部署。Apple之所以成為全球最賺錢的手機(jī)公司,關(guān)鍵在于產(chǎn)品的性能超越了用戶的預(yù)期,且因?yàn)榇罅靠芍赜玫暮诵念I(lǐng)域知識(shí),綜合成本做到了極致。

  更多的時(shí)候,程序員不是在編碼,而是在閱讀程序。由于閱讀程序需要從細(xì)節(jié)和概念上理解,因此修改程序的投入會(huì)遠(yuǎn)遠(yuǎn)大于最初編程的投入?;谶@樣的共識(shí),讓我們操心的一系列事情,需要不斷地思考和總結(jié)使之可以重用,這就是方法論的源起。

  通過財(cái)務(wù)數(shù)據(jù)分析,由于早期決策失誤和缺乏科學(xué)的軟件工程方法,我們開發(fā)了一些周期長、技術(shù)難度大且回報(bào)率極低的產(chǎn)品,不僅軟件難以重用,而且擴(kuò)展和維護(hù)難度很大,從而導(dǎo)致開發(fā)成本居高不下。

  顯而易見,從軟件開發(fā)來看,軟件工程與計(jì)算機(jī)科學(xué)是完全不同的兩個(gè)領(lǐng)域的知識(shí)。其主要區(qū)別在于人,因?yàn)檐浖_發(fā)是以人為中心的過程。如果考慮人的因素,軟件工程更接近經(jīng)濟(jì)學(xué),而非計(jì)算機(jī)科學(xué)。如果不改變思維方式,則很難開發(fā)出既好賣且成本低的產(chǎn)品。

  雖然大多數(shù)開發(fā)者都很勤奮,但其奮斗目標(biāo)不是企業(yè)和個(gè)人收益最大化,而是以學(xué)習(xí)基礎(chǔ)技術(shù)為樂趣,極少與市場人員和用戶交流,不注重提升個(gè)人挖掘用戶需求的創(chuàng)造力,而是將精力用錯(cuò)了地方,這是很多人一輩子也沒有認(rèn)識(shí)到的深刻問題。只是表面地嘆息自己懷才不遇,甚至將自己失敗的責(zé)任推給他人。由此可見,人與人之間的差別不在于知識(shí)和經(jīng)驗(yàn),而是思維方面的差異決定了每個(gè)人的未來。

  4、解決之道

  代碼的優(yōu)劣不僅直接決定了軟件的質(zhì)量,還將直接影響軟件成本。軟件成本是由開發(fā)成本和維護(hù)成本組成的,而維護(hù)成本卻遠(yuǎn)高于開發(fā)成本,蠻力開發(fā)的現(xiàn)象比比皆是,大量來之不易的資金被無聲無息地吞沒,整個(gè)社會(huì)的資源浪費(fèi)嚴(yán)重。

  為何不將復(fù)雜的技術(shù)高度抽象呢?如果實(shí)現(xiàn)就能做到讓專業(yè)的人做專業(yè)的事,AWorks就是在這樣的背景下誕生的。由于其中融入了更多的軟件工程技術(shù)方法,因此就能做到將程序員徹底從非核心域中釋放出來聚焦于核心競爭力。

  無論你選擇什么芯片和任何 OS,比如,Linux 和其它任何 RTOS,只要 AWorks 支持它,就可以在目標(biāo)板上實(shí)現(xiàn)跨平臺(tái)運(yùn)行。因?yàn)闊o論什么 OS,它只是 AWorks 的一個(gè)組件,針對(duì)不同的 OS,AWorks 都會(huì)提供相應(yīng)的適配器,那么所有的組件都可以根據(jù)需要更換。

  由于 AWorks 制定了統(tǒng)一的接口規(guī)范,并對(duì)各種微處理器內(nèi)置的功能部件與外圍器件進(jìn)行了高度的抽象,因此無論你選用的是 ARM 還是 DSP,通過“按需定制”的外設(shè)驅(qū)動(dòng)軟件和相關(guān)組件,以高度復(fù)用的軟件設(shè)計(jì)原則和只針對(duì)接口編程的思想為前提,則應(yīng)用軟件均可實(shí)現(xiàn)“一次編程、終生使用和跨平臺(tái)”?;诖?,進(jìn)一步擴(kuò)大了 AWorks 使用范圍,又發(fā)展出了代碼更小的 AMetal,AWorks 能給你帶來的最大價(jià)值就是不需要重新發(fā)明輪子。

  5、叢書簡介

  《面向AMetal框架與接口的編程(上)》是《嵌入式軟件工程方法與實(shí)踐叢書》中的第一套第二本書,叢書共含四套:

  第一套

  《程序設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)》

  《面向 AMetal 框架與接口的編程》(上)

  《面向?qū)ο蟮姆治雠c設(shè)計(jì)》

  第二套

  《面向 AWorks 框架與接口的編程》(適用于各種 MCU)

  《面向?qū)ο蟮姆治雠c設(shè)計(jì)》

  第三套

  《面向 AWorks 框架與接口的編程——基于 Linux》(適用于 ARM9 以上內(nèi)核)

  《面向?qū)ο蟮姆治雠c設(shè)計(jì)》

  第四套

  《C++現(xiàn)代程序設(shè)計(jì)》

  《面向 AWorks 框架與接口的編程——基于 C++》(適用于 ARM9 以上內(nèi)核)

  《面向?qū)ο蟮姆治雠c設(shè)計(jì)》

  還在寫作中的內(nèi)容包括測(cè)試與持續(xù)集成,書籍均由周立功團(tuán)隊(duì)從理論知識(shí)到實(shí)踐應(yīng)用的精華匯編,將來會(huì)陸續(xù)與大家見面,共同學(xué)習(xí)與探討。


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。