文/劉國展
嵌入式軟件分層架構的本質與優缺點
文/劉國展
在軟件開發設計過程中,分層架構的應用可以提升軟件的效率和質量。本文首先對嵌入式軟件分層架構的本質進行了分析,然后對分層架構的優缺點進行了研究,最后對分層架構的設計進行了探討。
嵌入式軟件 分層架構本質 開發模型
在嵌入式軟件開發過程中,硬件底層、操作系統、應用程序等都是共同設計開發的,但如今軟件越來越復雜,已經不適應當前形勢,因為每次開發項目都需要重新設計出一套新軟件。對軟件的重復使用造成了比較大的限制,給日常生活工作帶來不便,增加了消費成本,而且也浪費人力資源。本文重點對嵌入式軟件分層的本質與優缺點進行分析。
社會的不斷發展,帶來了工業革命,也給傳統的勞動生產力進行了優化和改良,每一個人都有自己的崗位和工作,發揮自身的潛能。此外由于單一的勞動大大提高了人員的操作熟練度,減少了在勞動過程中的損失,從而有效的提高生產力,帶動經濟效益,由此也衍生出了分工的概念。隨著社會的快速發展,勞動人員的分工也在不斷的強化和細化,一些特殊形式的分工可以有效的提高工作效率,而且還有其他的特點:
(1)像金字塔一樣,最底層的并不知道還有存在頂尖層次;
(2)相鄰兩個層次可以相互聯系。因此來講,滿足以上兩點內容就可以將其稱之為分層架構,也是分層架構思想的啟發。
將分層技術融入到軟件開發過程中,其實就是為了更加有效的對用戶提出的所有需求進行分析和梳理,將軟件系統中各個功能領域進行抽象化,科學合理的確定系統內部各個層次之間的關系,從而簡化模塊的開發過程,將系統開發問題轉變為內簡單的軟件設計問題,并且其支持系統所涵蓋的所有功能。在進行軟件系統開發過程中,系統的場景越復雜,為了更好的解決問題就需要更加精細的進行分層,并且各個層次之間的關系、接口對接的關系就更加難以進行設計。雖然分層的方式多種多樣,但是在軟件開發過程中并沒有制定出標準。以實現計算機軟件所有功能為基礎,需要對各個層次之間的問題進行解決,簡化軟件實現過程,并且能夠有效的對上層提供所需的服務;一旦某一層次出現問題,則只會對其上下層次產生影響,不會對系統的整體產生影響;每個層次內部在進行分層,最大限度的實現軟件的所有功能。
一般來講,采用嵌入式應用系統可以將計算機軟件開發從技術層面分為四大方面:硬件平臺、BSP和設備驅動層、調動系統層和應用層。
主要包含計算機軟件的核心部分,比如嵌入式微處理器。微處理器具有大量的外接端口,便于進行對接。還有一些周邊的功能電路部分,如液晶顯示屏、鍵盤、開關等。
設備驅動層不僅僅可以實現微處理器內部硬件和外部硬件的API,而且還能夠有效的為底部算法提供API,其中主要包含定時器、CAN、SPI等微處理器片內部和外部的驅動以及API功能的實現,還包含微處理器片外外設的水平測試儀、溫度傳感器等驅動和API功能的實現。一般來講,設備驅動層屬于獨立的部分,以操作平臺底層的硬件語言為基礎來進行硬件抽象層的建立,并且有效的為上層應用提供對接端口。
調動系統層在進行編寫過程中可以使用嵌入式操作系統為基礎來進行編寫。一般來講,主要分為兩大部分:嵌入式操作系統和基礎應用的裁剪。或者也可以以現有的調度器為基礎來進行內如管理和電源管理等專用系統的編寫。
應用層主要是一些開發類工作,其中包含人機接口的開發、算法的開發、數據庫的開發等工作。

圖1:交互分層關系圖

圖2:電機監控系統組成及交聯
采用嵌入式軟件開發方式對軟件的功能、精準度和可靠性有效極其嚴格的要求。隨著社會的不斷發展,嵌入式應用系統也變得更加的復雜,將分層技術引入到嵌入式應用軟件系統開發過程中,不僅僅能夠確保軟件開發邏輯的合理性,而且還能大大提高計算機軟件開發的效率。在軟件開發過程中,嚴格按照“高內聚、低耦合”的標準,對嵌入式應用軟件系統的各項功能區域進行劃分,大大降低軟件各個層次之間的耦合度,并且可以將其分為四大層次:應用管理層、算法協議層、功能開發層和硬件驅動層。
采用分層架構的只要目的在于對“關注面”進行有效的隔離。軟件在進行開發過程中,存在大量復雜的問題,這也嚴重影響了軟件開發工作的進度,因此必須將復雜抽象的問題進行分解,單獨進行解決。
能夠更好地發揮開發人員的特長,有利于加快開發進程;層次之間可以隔離,更方便開發過程中的隨時糾誤;各個層次之間的關系弱化便于分層標準的確定,也就更能保障軟件質量。
系統的穩定性會受到影響,因為無法封裝系統的所有功能,如果使用過程產生異變,系統可能會整體受損;層次之間的調用關系一旦打破,也就意味著效率的降低。
垂直劃分原則普遍應用于分層架構的邏輯層面,物理層面一般采用水平劃分原則。本文正是從邏輯層面和物理層面進行劃分的,稱邏輯層面為構建分層,物理層面為交互分層。
如果是交互分層,各個層次之間的關系如圖1。界面主要負責人機數據;控制層主要傳達系統命令,協調各方工作;實體層主要是運算邏輯和數據信息;接口層的作用就是與外部系統對接。
構建分層中,驅動層的作用是封裝硬件邏輯;其硬件主要交付基礎層應用;中間層的作用則是隔離應用層與基礎層,同時向上層應用層提供所需服務;應用層為軟件中具象的應用單元提供服務。
在使用層次正交分析之前,需要對兩個不同維度中,層次的劃分、層次的內容進行確定,這樣才能有效的確定好各個層次之間的對應關系。
將正交分層作為參考標準;將關注點相同的內容劃分為一類;復用內容劃為一層;變化內容劃為一層;與外部接口有關的可以劃為一層。
以電機監控系統為例來進行分層架構的解釋說明,圖2為電機監控系統組成圖和交聯圖。操作人員使用操作界面中的Keypad實現對電機的控制,經過MCD處理之后,借助AD轉化器來對實體進行控制;與此同時,實體Motor將狀態傳送給Contactor,再將其傳送給MCU,最終在顯示界面的LCD上進行展示;MCU可以借助網絡與電腦進行連接,借助電腦PC可以對其進行監控。
綜上所述,本文首先對分層架構的概念進行了分析介紹,然后對分層架構的本質和優缺點進行了探討,并對分層架構的設計進行了探討。通過在嵌入式軟件開發過程中應用分層架構具有良好的可擴展性,可以對成熟的軟件功能模塊進行積累,減少后期的維護難度,保證項目的開發效率和開發質量。
[1]陳翌.嵌入式軟件開發技術[M].北京:國防工業出版社,2003.
[2]王湘文,陳建倫,陳紀銘.分層軟件架構設計及其應用研究[J].福建電腦,2011(06):55-56+93.
[3]高煥堂.架構設計的How-to[J].程序員,2009(04):160-160.
作者單位 廣東九聯科技股份有限公司 廣東省惠州市516000
劉國展(1986-),男,廣東省陸豐市人。大學本科學歷。助理工程師,從事數字電視開發工作。