文/劉國展
嵌入式軟件分層架構(gòu)的本質(zhì)與優(yōu)缺點
文/劉國展
在軟件開發(fā)設(shè)計過程中,分層架構(gòu)的應(yīng)用可以提升軟件的效率和質(zhì)量。本文首先對嵌入式軟件分層架構(gòu)的本質(zhì)進行了分析,然后對分層架構(gòu)的優(yōu)缺點進行了研究,最后對分層架構(gòu)的設(shè)計進行了探討。
嵌入式軟件 分層架構(gòu)本質(zhì) 開發(fā)模型
在嵌入式軟件開發(fā)過程中,硬件底層、操作系統(tǒng)、應(yīng)用程序等都是共同設(shè)計開發(fā)的,但如今軟件越來越復雜,已經(jīng)不適應(yīng)當前形勢,因為每次開發(fā)項目都需要重新設(shè)計出一套新軟件。對軟件的重復使用造成了比較大的限制,給日常生活工作帶來不便,增加了消費成本,而且也浪費人力資源。本文重點對嵌入式軟件分層的本質(zhì)與優(yōu)缺點進行分析。
社會的不斷發(fā)展,帶來了工業(yè)革命,也給傳統(tǒng)的勞動生產(chǎn)力進行了優(yōu)化和改良,每一個人都有自己的崗位和工作,發(fā)揮自身的潛能。此外由于單一的勞動大大提高了人員的操作熟練度,減少了在勞動過程中的損失,從而有效的提高生產(chǎn)力,帶動經(jīng)濟效益,由此也衍生出了分工的概念。隨著社會的快速發(fā)展,勞動人員的分工也在不斷的強化和細化,一些特殊形式的分工可以有效的提高工作效率,而且還有其他的特點:
(1)像金字塔一樣,最底層的并不知道還有存在頂尖層次;
(2)相鄰兩個層次可以相互聯(lián)系。因此來講,滿足以上兩點內(nèi)容就可以將其稱之為分層架構(gòu),也是分層架構(gòu)思想的啟發(fā)。
將分層技術(shù)融入到軟件開發(fā)過程中,其實就是為了更加有效的對用戶提出的所有需求進行分析和梳理,將軟件系統(tǒng)中各個功能領(lǐng)域進行抽象化,科學合理的確定系統(tǒng)內(nèi)部各個層次之間的關(guān)系,從而簡化模塊的開發(fā)過程,將系統(tǒng)開發(fā)問題轉(zhuǎn)變?yōu)閮?nèi)簡單的軟件設(shè)計問題,并且其支持系統(tǒng)所涵蓋的所有功能。在進行軟件系統(tǒng)開發(fā)過程中,系統(tǒng)的場景越復雜,為了更好的解決問題就需要更加精細的進行分層,并且各個層次之間的關(guān)系、接口對接的關(guān)系就更加難以進行設(shè)計。雖然分層的方式多種多樣,但是在軟件開發(fā)過程中并沒有制定出標準。以實現(xiàn)計算機軟件所有功能為基礎(chǔ),需要對各個層次之間的問題進行解決,簡化軟件實現(xiàn)過程,并且能夠有效的對上層提供所需的服務(wù);一旦某一層次出現(xiàn)問題,則只會對其上下層次產(chǎn)生影響,不會對系統(tǒng)的整體產(chǎn)生影響;每個層次內(nèi)部在進行分層,最大限度的實現(xiàn)軟件的所有功能。
一般來講,采用嵌入式應(yīng)用系統(tǒng)可以將計算機軟件開發(fā)從技術(shù)層面分為四大方面:硬件平臺、BSP和設(shè)備驅(qū)動層、調(diào)動系統(tǒng)層和應(yīng)用層。
主要包含計算機軟件的核心部分,比如嵌入式微處理器。微處理器具有大量的外接端口,便于進行對接。還有一些周邊的功能電路部分,如液晶顯示屏、鍵盤、開關(guān)等。
設(shè)備驅(qū)動層不僅僅可以實現(xiàn)微處理器內(nèi)部硬件和外部硬件的API,而且還能夠有效的為底部算法提供API,其中主要包含定時器、CAN、SPI等微處理器片內(nèi)部和外部的驅(qū)動以及API功能的實現(xiàn),還包含微處理器片外外設(shè)的水平測試儀、溫度傳感器等驅(qū)動和API功能的實現(xiàn)。一般來講,設(shè)備驅(qū)動層屬于獨立的部分,以操作平臺底層的硬件語言為基礎(chǔ)來進行硬件抽象層的建立,并且有效的為上層應(yīng)用提供對接端口。
調(diào)動系統(tǒng)層在進行編寫過程中可以使用嵌入式操作系統(tǒng)為基礎(chǔ)來進行編寫。一般來講,主要分為兩大部分:嵌入式操作系統(tǒng)和基礎(chǔ)應(yīng)用的裁剪?;蛘咭部梢砸袁F(xiàn)有的調(diào)度器為基礎(chǔ)來進行內(nèi)如管理和電源管理等專用系統(tǒng)的編寫。
應(yīng)用層主要是一些開發(fā)類工作,其中包含人機接口的開發(fā)、算法的開發(fā)、數(shù)據(jù)庫的開發(fā)等工作。
圖1:交互分層關(guān)系圖
圖2:電機監(jiān)控系統(tǒng)組成及交聯(lián)
采用嵌入式軟件開發(fā)方式對軟件的功能、精準度和可靠性有效極其嚴格的要求。隨著社會的不斷發(fā)展,嵌入式應(yīng)用系統(tǒng)也變得更加的復雜,將分層技術(shù)引入到嵌入式應(yīng)用軟件系統(tǒng)開發(fā)過程中,不僅僅能夠確保軟件開發(fā)邏輯的合理性,而且還能大大提高計算機軟件開發(fā)的效率。在軟件開發(fā)過程中,嚴格按照“高內(nèi)聚、低耦合”的標準,對嵌入式應(yīng)用軟件系統(tǒng)的各項功能區(qū)域進行劃分,大大降低軟件各個層次之間的耦合度,并且可以將其分為四大層次:應(yīng)用管理層、算法協(xié)議層、功能開發(fā)層和硬件驅(qū)動層。
采用分層架構(gòu)的只要目的在于對“關(guān)注面”進行有效的隔離。軟件在進行開發(fā)過程中,存在大量復雜的問題,這也嚴重影響了軟件開發(fā)工作的進度,因此必須將復雜抽象的問題進行分解,單獨進行解決。
能夠更好地發(fā)揮開發(fā)人員的特長,有利于加快開發(fā)進程;層次之間可以隔離,更方便開發(fā)過程中的隨時糾誤;各個層次之間的關(guān)系弱化便于分層標準的確定,也就更能保障軟件質(zhì)量。
系統(tǒng)的穩(wěn)定性會受到影響,因為無法封裝系統(tǒng)的所有功能,如果使用過程產(chǎn)生異變,系統(tǒng)可能會整體受損;層次之間的調(diào)用關(guān)系一旦打破,也就意味著效率的降低。
垂直劃分原則普遍應(yīng)用于分層架構(gòu)的邏輯層面,物理層面一般采用水平劃分原則。本文正是從邏輯層面和物理層面進行劃分的,稱邏輯層面為構(gòu)建分層,物理層面為交互分層。
如果是交互分層,各個層次之間的關(guān)系如圖1。界面主要負責人機數(shù)據(jù);控制層主要傳達系統(tǒng)命令,協(xié)調(diào)各方工作;實體層主要是運算邏輯和數(shù)據(jù)信息;接口層的作用就是與外部系統(tǒng)對接。
構(gòu)建分層中,驅(qū)動層的作用是封裝硬件邏輯;其硬件主要交付基礎(chǔ)層應(yīng)用;中間層的作用則是隔離應(yīng)用層與基礎(chǔ)層,同時向上層應(yīng)用層提供所需服務(wù);應(yīng)用層為軟件中具象的應(yīng)用單元提供服務(wù)。
在使用層次正交分析之前,需要對兩個不同維度中,層次的劃分、層次的內(nèi)容進行確定,這樣才能有效的確定好各個層次之間的對應(yīng)關(guān)系。
將正交分層作為參考標準;將關(guān)注點相同的內(nèi)容劃分為一類;復用內(nèi)容劃為一層;變化內(nèi)容劃為一層;與外部接口有關(guān)的可以劃為一層。
以電機監(jiān)控系統(tǒng)為例來進行分層架構(gòu)的解釋說明,圖2為電機監(jiān)控系統(tǒng)組成圖和交聯(lián)圖。操作人員使用操作界面中的Keypad實現(xiàn)對電機的控制,經(jīng)過MCD處理之后,借助AD轉(zhuǎn)化器來對實體進行控制;與此同時,實體Motor將狀態(tài)傳送給Contactor,再將其傳送給MCU,最終在顯示界面的LCD上進行展示;MCU可以借助網(wǎng)絡(luò)與電腦進行連接,借助電腦PC可以對其進行監(jiān)控。
綜上所述,本文首先對分層架構(gòu)的概念進行了分析介紹,然后對分層架構(gòu)的本質(zhì)和優(yōu)缺點進行了探討,并對分層架構(gòu)的設(shè)計進行了探討。通過在嵌入式軟件開發(fā)過程中應(yīng)用分層架構(gòu)具有良好的可擴展性,可以對成熟的軟件功能模塊進行積累,減少后期的維護難度,保證項目的開發(fā)效率和開發(fā)質(zhì)量。
[1]陳翌.嵌入式軟件開發(fā)技術(shù)[M].北京:國防工業(yè)出版社,2003.
[2]王湘文,陳建倫,陳紀銘.分層軟件架構(gòu)設(shè)計及其應(yīng)用研究[J].福建電腦,2011(06):55-56+93.
[3]高煥堂.架構(gòu)設(shè)計的How-to[J].程序員,2009(04):160-160.
作者單位 廣東九聯(lián)科技股份有限公司 廣東省惠州市516000
劉國展(1986-),男,廣東省陸豐市人。大學本科學歷。助理工程師,從事數(shù)字電視開發(fā)工作。