標籤:
由於本人專業方向是電腦體繫結構方向的,平時做嵌入式方面的實驗以及項目較多,這個學期又學習了軟體工程的課程,因此想藉此機會,總結下在軟體工程上面學習到的知識,並看看是否有什麼能夠借鑒到嵌入式方向的開發上面去。
首先我想總結下,軟體開發與嵌入式開發的不同之處。作為軟體開發,首先應當從使用者或者使用者的需求入手,明白使用者想讓你去實現什麼功能,而到了具體的實現,有時卻限制的不是那麼的死。而至於嵌入式的開發,從需求入手是相同的,但是對於實現的方式,卻明顯不同於傳統的軟體開發。對於程式設計語言,不同的嵌入式開發平台有著不同的相容需求,碰上好的可以用c++,要求高的就是c,或者類c,再不濟就是組合語言,而且是各種各樣的組合語言。為什麼會有這樣的限制?我認為正是出於成本的考慮。比如一個人電冰箱,要控制整台冰箱的功能,並不需要一個很強大的處理核心,而只要能夠滿足一些基本的溫度採集,製冷機控制訊號就足夠了,顯然並不需要再附加什麼c++編譯器來實現控制,那樣不但浪費了許多儲存空間,而且對於執行效率沒有協助反而會有阻礙作用,得不償失。若採用組合語言來實現的話,一來編譯沒有難度,基本上通過邏輯電路就可得到可執行檔機器代碼,二來沒有複雜的程式邏輯,對編程人員的壓力也不是很大。可見,在嵌入式的開發過程中,除了要考慮需求,更要去考慮你實現的成本。在軟體工程中並不明顯的指標,換做在嵌入式的開發過程中情況卻截然不同。
那麼,有什麼是我能夠從軟體共課程中借鑒來的呢?我認為,應該是這種工程化開發的思路以及過程。工程化方法的好處就是,可以使你在開發過程中條理清晰,知道自己現在正在做什麼,知道自己將要做什麼,知道自己什麼還沒有去做,以一個全域的統籌形象來管理你的工程,清晰明了。在嵌入式開發的過程中,特別需要這樣的工程化方法,其一因為使用低級的程式設計語言無法使程式結構一目瞭然,這時除了註解添加,更好的方法就是以圖結構來描述你所做的設計,因為圖結構確實可以描述一些語言所不及的範疇,這樣使得每次通過閱讀圖描述,就能夠明白開發進行到了哪一步。還有就是因為在嵌入式開發的結尾階段會有大量的測試工作,而測試資料的分析可以借鑒軟體工程中的分析方法。其他的方面還有很多很多,但是光是以上兩點,我覺得已經能夠使我在嵌入式的開發過程中有所提高。
基於軟體開發對嵌入式開發的思考