天天看點

【硬體工程師學軟體】之 軟體架構

硬體工程師程式設計基本功一般都比較紮實,畢竟都有幾年的c或c++的基礎,有的甚至還有linux下程式設計的經驗,是以說編碼不是太大的問題,他們頭疼的是軟體的套路太多,尤其是這麼架構那麼架構的,比較頭大。

話說硬體編碼中沒有那麼多的套路,硬體代碼一般都是非常簡潔、高效的,原因是要伺候底層硬體,不得不簡化代碼,提高效率。但是軟體尤其是java,套路比較多,架構體系複雜,硬體工程師一般不太适應,但是軟體工程師卻駕輕就熟。

舉個簡單的例子,有幾年經驗的軟體工程師要是和人聊天的時候,口裡不冒出幾個面向對象或是層次構架的,你都沒法在機關混了。硬體工程師基本上不用對象,為什麼?太浪費資源,而且編譯器也不支援,最多讓你支援個結構就算對得起了。

話又說回來,那硬體工程師學習軟體,要是不了解面向對象還有軟體的構架、類庫什麼的,也沒法提高編碼效率,因為沒有哪個軟體工程師還去用上個世紀的編碼方式去寫一個一個的基本的通用函數了。

那麼構架是什麼?實際上我們軟體和硬體差不多,隻是一個是硬體體系,一個是軟體體系而已,硬體是子產品化的,軟體是對象化的,再往下說一層,都是封裝,硬體實際上是非常良好的封裝,每個子產品之間做到配合良好而且互不影響,這就是非常不錯的封裝,軟體類似,一個軟體系統,可以分為幾個大層次,每個層次又分為若幹子子產品或子系統,每個子產品又分子子產品,子子產品又分基礎類、業務類、函數群組件。

還是舉一個比較實際的例子來說吧。

現在要做一個智能玩具車管理系統,硬體層次就不說了,主要是玩具車配上無線通信和物聯網定位元件。關鍵的是軟體背景。

軟體背景實際上就是基于B/S架構的管理系統,就是基于web的系統。

首先,這個系統需要一個小網站,使用者能夠登入;

其次,這個系統要能管理使用者,要有權限管理吧,如果老闆雇傭了一個營運人員,那還得分個角色,老闆啥都能看,營運人員可不能管錢,錢得老闆娘管。

再次,需要一個小車控制子系統吧,控制小車啟動、停止等等;

最後,還需要一個财務子系統吧,隻能老闆娘能登入,老闆都不行。

上面說的,軟體裡叫做系統結構。如果更細一點,比如詳細介紹每個子系統的功能,那就叫系統功能結構。

單純有結構還不行啊,還需要介紹單元之間的關系,這就叫業務流程,實際上就是用流程圖表示出來,硬體工程師也經常畫這種流程圖,隻不過這裡說的是人的動作,而不是單片機的動作。

僅僅有軟體還不行啊,資料得儲存,就像單片機一樣,要是沒有FLASH,程式擱哪兒?沒有EEPROM,資料存哪兒?軟體也一樣,程式得擱在伺服器上,是以介紹一下伺服器的參數;運作資料擱在資料庫裡,比如說mysql,是以要介紹一下mysql。

然後還得介紹一下程式實作吧?前端打算用什麼語言?vue?easyui?nodejs?後端用什麼語言?java?php?c#?或者是python。

這些都交代了,還要交代一下我這個軟體是不是還用了一些元件和第三方的接口,比如說小程式接口、支付接口、報表元件等等。當然還有我們硬體工程師經常用到的mqtt消息協定或者其他的物聯網協定。

以上就是軟體架構包括的基本的内容。的确是有些啰嗦,但是所有系統都差不多,記住一個,其他的就如法炮制。

【硬體工程師學軟體】之 軟體架構
【硬體工程師學軟體】之 軟體架構
【硬體工程師學軟體】之 軟體架構
【硬體工程師學軟體】之 軟體架構
【硬體工程師學軟體】之 軟體架構

繼續閱讀