李冶 高源
摘要:分層軟件架構(gòu)設(shè)計(jì)是對(duì)軟件功能予以細(xì)化的,實(shí)現(xiàn)軟件解耦的設(shè)計(jì)思想,是現(xiàn)代軟件設(shè)計(jì)過(guò)程中常用的軟件設(shè)計(jì)思路。分層軟件結(jié)構(gòu)在系統(tǒng)的復(fù)用度、可擴(kuò)展性以及開(kāi)發(fā)難度的降低方面有著先天性的優(yōu)勢(shì)。該文以軟件分層設(shè)計(jì)為核心題,介紹了其基本概念,從設(shè)計(jì)優(yōu)勢(shì)以及應(yīng)用方式兩個(gè)方面予以了簡(jiǎn)要討論,為開(kāi)發(fā)人員和軟件系統(tǒng)設(shè)計(jì)人員在分層軟件應(yīng)用技術(shù)方面提供參考。
關(guān)鍵詞:計(jì)算機(jī);軟件;分層;技術(shù);架構(gòu);應(yīng)用
中圖分類(lèi)號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2017)13-0089-02 1分層軟件架構(gòu)設(shè)計(jì)介紹
分層軟件架構(gòu)設(shè)計(jì)是隨著軟件規(guī)模的擴(kuò)大而逐漸產(chǎn)生的軟件設(shè)計(jì)方面的技術(shù),其核心內(nèi)容是將軟件結(jié)構(gòu)中功能相同的部分集中起來(lái)完成特定的功能任務(wù),而將功能差異較大的部分進(jìn)行分離處理,從而是實(shí)現(xiàn)了軟件結(jié)構(gòu)的相對(duì)隔離,使得軟件體系結(jié)構(gòu)層次性更加清晰。在軟件工程領(lǐng)域中所說(shuō)“高內(nèi)聚、低耦合”就是軟件分層技術(shù)最為簡(jiǎn)單的描述,利用分層技術(shù)能夠?qū)崿F(xiàn)軟件開(kāi)發(fā)和維護(hù)的高度靈活性以及功能模塊的復(fù)用度。在軟件層次結(jié)構(gòu)分層架構(gòu)設(shè)計(jì)中,最為著名的就是人們所說(shuō)的MVC模式,其中V是指VIEW視圖層,主要是指軟件的界面、用戶接口,其實(shí)現(xiàn)方式既可以是客戶端軟件形式,還可以是以HTML為主要表現(xiàn)形式的瀏覽器形式,其核心功能是進(jìn)行數(shù)據(jù)展示和對(duì)用戶操作的接受、反饋;而M則是MODEL模型的意思,通過(guò)獲得VIEW層用戶數(shù)據(jù)或者提取持久化層數(shù)據(jù)構(gòu)建相應(yīng)的數(shù)據(jù)模型,服務(wù)于數(shù)據(jù)操作;而C則是指CONTROL控制層,將不同的業(yè)務(wù)邏輯予以控制,完成數(shù)據(jù)處理以及視圖展現(xiàn)。當(dāng)然,軟件分層是根據(jù)項(xiàng)目的實(shí)際情況予進(jìn)行劃分的,應(yīng)在層次劃分的復(fù)雜度與開(kāi)發(fā)維護(hù)成本方面予以綜合考量。
2分層軟件架構(gòu)設(shè)計(jì)的優(yōu)勢(shì)分析
1)提升軟件的復(fù)用度
軟件各構(gòu)建的復(fù)用程度是現(xiàn)代計(jì)算機(jī)軟件工程利于研究的重要課題,傳統(tǒng)的一體化設(shè)計(jì),從視圖展示、數(shù)據(jù)構(gòu)建、業(yè)務(wù)處理、到數(shù)據(jù)持久化過(guò)程都在一個(gè)軟件構(gòu)建中予以完成,一旦需求發(fā)生了變更,軟件維護(hù)所耗費(fèi)的精力和修改復(fù)雜度是難以估量的,更別說(shuō)軟件的復(fù)用程度了。利用軟件分層設(shè)計(jì),將各個(gè)層次予以劃分,數(shù)據(jù)展現(xiàn)層的變更和維護(hù)并不涉及到后續(xù)數(shù)據(jù)模型的構(gòu)建、業(yè)務(wù)邏輯的處理、以及持久化部分,僅僅需要對(duì)相應(yīng)的視圖層予以變更即可完成,如果數(shù)據(jù)模型相同,后續(xù)的持久化模塊以及業(yè)務(wù)邏輯模塊便可實(shí)現(xiàn)高度軟件復(fù)用功能,這是傳統(tǒng)的一體式設(shè)計(jì)所不具備的軟件架構(gòu)模式。還有一些中間件的技術(shù),對(duì)外提供相應(yīng)的業(yè)務(wù)處理接口,只要實(shí)現(xiàn)相應(yīng)接口構(gòu)建交付于中間件即可實(shí)現(xiàn)相應(yīng)業(yè)務(wù)的處理,達(dá)到了軟件復(fù)用的效果。
2)降低軟件開(kāi)發(fā)難度
利用分層技術(shù),可以將軟件開(kāi)發(fā)的各個(gè)模塊予以劃分,開(kāi)發(fā)人員不必關(guān)注其他方面的內(nèi)容,只需要將所涉及的功能模塊予以設(shè)計(jì)、編碼即可完成,有效地降低了軟件開(kāi)發(fā)難度,提升開(kāi)發(fā)人員自信心,保障軟件開(kāi)發(fā)進(jìn)度。除此之外,處在不同層次的開(kāi)發(fā)設(shè)計(jì)人員,可以更加專(zhuān)注于其所涉及的層次,例如視圖展現(xiàn)層,甚至可以利用美工人員進(jìn)行開(kāi)發(fā);而數(shù)據(jù)庫(kù)設(shè)計(jì)人員更關(guān)注于底層持久化的設(shè)計(jì),從而實(shí)現(xiàn)了開(kāi)發(fā)人員高度協(xié)調(diào),降低整個(gè)軟件項(xiàng)目的開(kāi)發(fā)難度。利用傳統(tǒng)的開(kāi)發(fā)模式,這種優(yōu)勢(shì)是無(wú)法展現(xiàn)出來(lái)的。
3)提升了軟件的擴(kuò)展性
分層技術(shù)也為軟件的可拓展性提供了天然的便利,要提升軟件的擴(kuò)展性無(wú)非是設(shè)計(jì)相應(yīng)的接口功能,而軟件分層架構(gòu)正是這種接口設(shè)計(jì)的實(shí)現(xiàn)。下層結(jié)構(gòu)為上層結(jié)構(gòu)提供相應(yīng)服務(wù),下層結(jié)構(gòu)同時(shí)提供相應(yīng)服務(wù)接口,這與計(jì)算機(jī)網(wǎng)絡(luò)結(jié)構(gòu)ISO分層模型設(shè)計(jì)思想是極其一致的。因此利用軟件分層架構(gòu)的設(shè)計(jì)是極其容易實(shí)現(xiàn)整個(gè)系統(tǒng)拓展功能。這里需要指出的是,如果設(shè)計(jì)人員對(duì)接口加以統(tǒng)一性的設(shè)計(jì),那么對(duì)于標(biāo)準(zhǔn)化的軟件實(shí)現(xiàn)也是具有非常重要的意義。由此可見(jiàn),利用好軟件分層能夠極大地提升軟件的擴(kuò)展性。
3軟件分層結(jié)構(gòu)的應(yīng)用
3.1單項(xiàng)業(yè)務(wù)在軟件開(kāi)發(fā)中的應(yīng)用
所謂的單項(xiàng)結(jié)構(gòu)也就是最為傳統(tǒng)客戶端/服務(wù)器模式(這里所說(shuō)的客戶端既可以是專(zhuān)用的客戶端軟件,也可以是通用的瀏覽器),將用戶業(yè)務(wù)處理、數(shù)據(jù)持久化直接在視圖層完成,代碼相對(duì)集中,這種數(shù)據(jù)處理方式對(duì)于用戶量極少、服務(wù)器要求較低的業(yè)務(wù)開(kāi)發(fā)是可行的,但是其維護(hù)工作量較大,軟件的復(fù)用度以及系統(tǒng)的拓展性都是較差的。一旦用戶數(shù)量變多,其系統(tǒng)的性能將變得極其低下,系統(tǒng)的穩(wěn)定性也是急劇下降,總之,這種單項(xiàng)業(yè)務(wù)處理開(kāi)發(fā)模式僅僅出現(xiàn)在最初的客戶端/服務(wù)器交互模式使用過(guò)程中,系統(tǒng)的運(yùn)行速度以及用戶體現(xiàn)度相對(duì)較差。
3.2二、三層技術(shù)在計(jì)算機(jī)軟件開(kāi)發(fā)中的應(yīng)用
為了克服單項(xiàng)數(shù)據(jù)模型的缺陷,二層技術(shù)應(yīng)運(yùn)而生,主要是將數(shù)據(jù)展現(xiàn)的視圖層與系統(tǒng)結(jié)構(gòu)予以分離,視圖層更加清晰、便于設(shè)計(jì),但是其性能與系統(tǒng)運(yùn)行速度同樣不容樂(lè)觀,在此就不進(jìn)行討論了。
三層技術(shù)則是對(duì)二層技術(shù)進(jìn)行進(jìn)一步細(xì)分,后臺(tái)系統(tǒng)結(jié)構(gòu)劃分為數(shù)據(jù)持久化層以及業(yè)務(wù)邏輯層,至此現(xiàn)代化的軟件模型基本形成,分別是視圖層、業(yè)務(wù)處理層、數(shù)據(jù)持久化層,其中視圖層進(jìn)行單一的數(shù)據(jù)展示和用戶交互功能的實(shí)現(xiàn),其展現(xiàn)方式也更加多元化;業(yè)務(wù)處理層通過(guò)對(duì)視圖層所傳遞過(guò)來(lái)的數(shù)據(jù)以及從持久化層抽取的數(shù)據(jù)進(jìn)行相應(yīng)的數(shù)據(jù)處理過(guò)程,分別予以交付和存儲(chǔ),實(shí)現(xiàn)新視圖數(shù)據(jù)的遞交以及變化后持久化數(shù)據(jù)的完成,使得業(yè)務(wù)處理邏輯更加清晰;數(shù)據(jù)持久化層是與后臺(tái)數(shù)據(jù)庫(kù)進(jìn)行直接交互的層次模型,實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的增刪改查、函數(shù)、過(guò)程等的調(diào)用,完成數(shù)據(jù)持久化的過(guò)程。這種三層軟件架構(gòu)基本上與現(xiàn)代的軟件開(kāi)發(fā)模式接近,系統(tǒng)執(zhí)行效率以及系統(tǒng)的穩(wěn)定性都有了較大程度的提升,但是業(yè)務(wù)處理邏輯往往與視圖層和持久化層劃分清晰度仍存在一定的問(wèn)題,這就導(dǎo)致了現(xiàn)如今應(yīng)用更為廣泛的四層或者更多層的軟件結(jié)構(gòu)。
3.3四層技術(shù)在計(jì)算機(jī)軟件開(kāi)發(fā)中的應(yīng)用
四層軟件分層技術(shù)通常是在三層結(jié)構(gòu)上添加數(shù)據(jù)模型層,全部的數(shù)據(jù)交互都是以數(shù)據(jù)模型的方式予以進(jìn)行的,而不是進(jìn)行數(shù)據(jù)的直接傳遞,從而使得軟件層次機(jī)構(gòu)更加清晰,使得業(yè)務(wù)邏輯層、視圖層、持久化層的劃分更加明確,克服三層結(jié)構(gòu)劃分不清晰的問(wèn)題。多層結(jié)構(gòu)則是在四層結(jié)構(gòu)上進(jìn)一步系統(tǒng),例如構(gòu)建多層數(shù)據(jù)模型、其他中間件的利用等等予以實(shí)現(xiàn)的。
3.4中間件技術(shù)分層開(kāi)發(fā)中的應(yīng)用
中間件技術(shù)從本質(zhì)上來(lái)講也是完成相對(duì)獨(dú)立功能、復(fù)用度較高的軟件構(gòu)建,用戶按照既定的接口參數(shù)進(jìn)行數(shù)據(jù)傳遞即可完成相應(yīng)功能的處理技術(shù),中間件技術(shù)往往由第三開(kāi)發(fā)商予以完成,對(duì)于降低整個(gè)系統(tǒng)的開(kāi)發(fā)難度有著重要的意義。除此之外,利用一些中間件的技術(shù)可以在異構(gòu)系統(tǒng)之間進(jìn)行數(shù)據(jù)交互,最為典型的就是webservice技術(shù),通過(guò)利用該技術(shù)將異構(gòu)的數(shù)據(jù)模型通過(guò)XML數(shù)據(jù)轉(zhuǎn)換,實(shí)現(xiàn)了異構(gòu)系統(tǒng)之間的系統(tǒng)接入,對(duì)于拓展系統(tǒng)功能,具有極其重要的意義。當(dāng)然一些中間件技術(shù)是收費(fèi)的,但相對(duì)而言這些技術(shù)往往在可靠性方面具有一定的積極因素,能夠有效縮短開(kāi)發(fā)周期,也是分層技術(shù)中常用的技術(shù)手段。
另外,需要說(shuō)明的是,并不是所有的分層都是嚴(yán)格按照上述的分層模式予以系統(tǒng)層次的劃分,例如一些不涉及到視圖層的命令式的軟件其層次的劃分相對(duì)就較少,當(dāng)然不同系統(tǒng)和不同技術(shù)應(yīng)用的時(shí)候還是有所差異,分層架構(gòu)的軟件開(kāi)發(fā)應(yīng)根據(jù)系統(tǒng)設(shè)計(jì)時(shí)的實(shí)際情況予以合理的應(yīng)用。