潘永安
(江蘇電子信息職業(yè)學院計算機與通信學院,江蘇淮安,223003)
關鍵字:分層技術;軟件設計;B/s;MVC
在軟件設計中分層技術是將一個軟件設計分為不同功能的層次,依據(jù)軟件的具體需求每層的功能設計都不相同,層與層之間是交互關系,界限明朗,功能細致,相互不干擾,將軟件設計成為高內(nèi)聚、低耦合的特性。不同層數(shù)的分層技術對應不同的軟件需求,同樣的分層技術,具體模式使用不同技術搭配,則軟件設計也不同,分層技術在軟件設計中的應用越來越為廣泛。
計算機專業(yè)突飛猛進,涉及到越來遇到的領域,逐漸在各個領域占領一席之地,科技的發(fā)展解放了許多勞動力,很多量大、不好計算、保存的工作都由計算機來替代,進而導致計算機軟件的需求量逐年遞增,迫使軟件開發(fā)的速度越來越開,同時軟件技術開發(fā)的速度遠超于硬件的發(fā)展速度,在低配置的硬件上需要運動高配置的代碼,硬件和軟件不能匹配,發(fā)展不夠平衡[1-2]。軟件的快速發(fā)展、硬件和軟件發(fā)展速度不相同、代碼量指數(shù)倍的增加,編程人員思維的容納性在以上可以寫情況下就出現(xiàn)了分層思想。
分層思想是軟件工程方法中最常用的思想,通過將一個較大的設計進行分層,根據(jù)設計的大小和種類,分為不同的層次。分層技術在計算機軟件開發(fā)中有著極大的優(yōu)勢。軟件設計者使用分層思想能夠使得軟件更加合理化,最大利用化。分層技術是用于描述軟件設計中不同層次之間的關系,將軟件各個層次之間進行連接、傳輸,在相同的硬件情況下,分層技術科加快計算機的運行速度,提高軟件的安全性。分層設計首先需要考慮的是邏輯的分層,也就是將整個任務在邏輯上進行分層,分解為一個個子任務,對子任務的分層則需要是水平分層。也就意味分層是由高到低,或由低到高。
分層技術是將整個系統(tǒng)進行水平分層,是因為在軟件設計中,開發(fā)人員下意識的認定了一個認知“機器為本,用戶至上”。也就是說在軟件設計中,機器是整系統(tǒng)運行的基礎,但是軟件設計的軟件是為用戶服務。當軟件分層時,往往層次越往上,也就會越抽象,也就意味著越面向用戶、面向業(yè)務。相反加購中層次越往下,則就更加通用,是面向機器設備。
分層設計也需要依據(jù)不同的變化原因確定每一層的邊界,確定邊界是為了防止邊界與邊界之間進行相互干擾,或者說是盡量將邊界之間的影響降到最低。在軟件分層設計中,每一層和每一層之間的關系應該是正交關系,正交關系并不意味著兩層、兩層之間沒有關系,而是說層與層之間的關系應該像兩條垂直的直線一樣,只有一個交點,其他地方永不相交。層與層之間的關系需要將兩條之間的垂直點作為依賴點,也就是兩層之間的協(xié)作點,無論對哪一層進行造作,除了協(xié)作點之外,都不會對另一層有任何影響。
分層技術有良好的擴展性,在軟件設計中,如果需要對某一功能模塊進行增刪改查,分層技術能夠在原有的設計中,只改動最小的范圍就可以完成新的需求,通過分成技術對復雜軟件進行合理分解,能夠使軟件更加合理化、更加系統(tǒng)性[3]。
分層技術使得軟件內(nèi)部有良好的獨立性,由于軟件設計中已經(jīng)將整體進行分層,當某一層出現(xiàn)問題是,可以及時修改,同時還不會影響其他層。當整體出現(xiàn)問題時,分層也會使得整體排查問題的速度加快,是不分層時,排查問題的數(shù)倍。
雙層分層技術是將客服端(Browser)和服務器(Server)分為兩層,能夠在原有基礎上縮短開發(fā)時間,提高工作效率。其中客服端是指在用戶在web瀏覽器上,實現(xiàn)界面化的用戶交互,將表示層和業(yè)務邏輯層布置在客服端,主要功能用于提交客服要求,并將要求發(fā)送到服務器,申請服務器端的數(shù)據(jù)庫等服務。服務器則是底層服務器,也可以稱之為數(shù)據(jù)層,主要是用于實現(xiàn)邏輯業(yè)務,包括回饋客戶端請求,在數(shù)據(jù)庫查詢等操作。少部分需要在客服端實現(xiàn),減輕了客戶端的壓力。但B/S架構不能同時容納大量用戶,出現(xiàn)數(shù)據(jù)交互過大的情況下,會出現(xiàn)數(shù)據(jù)延遲,通訊信號差的問題。假如系統(tǒng)發(fā)生變化,則需要同時修改客戶端和服務端,維修費用較大不方便。
三層架構是在雙層架構的基礎上設計,將其優(yōu)化,能夠滿足大量客戶或大量數(shù)據(jù)交互的需求。三層分層技術分別為,表示層、業(yè)務邏輯層、數(shù)據(jù)層。這是將雙層中的業(yè)務邏輯模塊單獨為層。表示層為完成用戶用戶與應用程序之間的交互。業(yè)務邏輯層負責處理、實現(xiàn)業(yè)務,處于表示層和數(shù)據(jù)訪問層,數(shù)據(jù)訪問層,是系統(tǒng)的持久層,負責管理數(shù)據(jù)庫。
MVC(Model、View、Controller)是 非 常 典 型 的 三層分層技術,Model是業(yè)務邏輯層,View是表示層,Controller是用來調(diào)度其他兩層,將MVC模式具體化,如JSP+Servlet+JavaBean。其中JavaBean既可以作為數(shù)據(jù)模型來封裝業(yè)務數(shù)據(jù),也可以作為業(yè)務邏輯模型來包含應用的業(yè)務,根據(jù)收到控制器傳來的請求,執(zhí)行特定的業(yè)務邏輯處理,返回執(zhí)行結果。JSP則作為視圖層,負責提供未用戶展現(xiàn)數(shù)據(jù),提交用戶請求,Servlet則作為控制器,接受用戶的請求,將請求中的數(shù)據(jù),轉(zhuǎn)化為業(yè)務模型中的數(shù)據(jù)模型,同時根據(jù)業(yè)務執(zhí)行結果來選擇要返回的視圖。具體模式如下圖1所示。
圖1 JSP+Servlet+JavaBean模式
軟件設計的難度越來越高,用戶對軟件的性能,如反應速度,反饋信息的程度等要求也越來越高,信息化越發(fā)普及,而信息的發(fā)展則使得數(shù)據(jù)越來越多,相較之前更加復雜,計算環(huán)境與之前發(fā)生了翻天覆地的變化,數(shù)據(jù)的大量增加,數(shù)據(jù)之間邏輯的復雜程度翻倍,因此用用戶會提出不同的、個性化的、有針對性行的軟件需求,軟件分層技術的發(fā)展在用戶需求的推動下,衍生出了超過三層的分層技術[4]。
分層技術的快速發(fā)展,給軟件設計帶來許多便利,幫助編程人員節(jié)省資源,提高代碼復用率,減少軟件模塊設計中的冗余性,將不同的功能分到不同的軟件層,鞏固了軟件運行的安全性,提高軟件運行速度,已經(jīng)有不少成熟的軟件將分層技術結合在軟件開發(fā)的過程中,在軟件測試可以加快速度,同時還能保證每層之間的獨立性,相互之間不影響,從雙層到三層分層技術,又衍生出更加具體化的四層、五層分層技術,分層技術不斷進步,軟件設計不斷完善。