摘 要:隨著軟件開發(fā)的規(guī)?;?、規(guī)范化、寬泛化,軟件開發(fā)的技術(shù)和手段也在發(fā)生著日新月異的變化。本文圍繞軟件分層技術(shù)進行了詳細的分析和闡述,并在此基礎(chǔ)上將其與軟件模塊化實現(xiàn)方法進行比較,最終總結(jié)出兩種開發(fā)方式的適用范圍,本文的終極目標就是使讀者更好地理解和應(yīng)用軟件分層技術(shù)。
關(guān)鍵詞:分層技術(shù);軟件開發(fā);分模塊開發(fā)
中圖分類號:TP311.52
隨著網(wǎng)絡(luò)、信息技術(shù)的飛速發(fā)展,從事軟件開發(fā)工作的技術(shù)人員越來越多。最近在做項目、閑暇時間看論壇的時候,發(fā)現(xiàn)網(wǎng)上有很多帖子,很多IT行業(yè)的人士對“為什么軟件開發(fā)要分層”,“到底是分層次好還是分模塊好”等問題展開了熱烈的討論,看完帖子后,覺得受益匪淺,也覺得將此議題作為自己軟件課題的研究對象非常有意義,所以,筆者決定,結(jié)合自身對這個問題的理解以及網(wǎng)絡(luò)上其他同仁的一些見解,對分層技術(shù)在計算機軟件開發(fā)中的一些問題進行簡要的分析,為軟件開發(fā)的技術(shù)研究添磚加瓦。
1 分層技術(shù)在計算機軟件開發(fā)中的分析
1.1 分層是什么?
在軟件開發(fā)設(shè)計中,應(yīng)用最多的就是分層技術(shù)。軟件分層的宗旨,其實就是實現(xiàn)“高內(nèi)聚、低耦合”。軟件分層采用分而治之的思想,把問題分解之后各個擊破,使得軟件開發(fā)更加容易被控制、延伸和資源的分配。在軟件開發(fā)實際應(yīng)用過程中,采用最多的便是三層開發(fā),即將整個問題劃分為表示層-業(yè)務(wù)邏輯層―數(shù)據(jù)訪問層-數(shù)據(jù)庫等。在此需要注意的是,分層結(jié)構(gòu)的層數(shù)、概念并不像數(shù)學(xué)公式一樣是固定的,不同的項目、不同的架構(gòu)師對其分層的粗細程度也是不一樣的。但不管怎樣,他們都明確地把表示層、業(yè)務(wù)邏輯訪問、數(shù)據(jù)訪問及數(shù)據(jù)庫訪問劃分出來,其中表示層,是用來實現(xiàn)用戶的操作所設(shè)計的界面;業(yè)務(wù)層,是用來處理表示層提交的數(shù)據(jù)請求,并且向下使用數(shù)據(jù)層操作數(shù)據(jù),以便完成所要進行的業(yè)務(wù);數(shù)據(jù)訪問層,主要是接受業(yè)務(wù)層的數(shù)據(jù)庫操作請求,并完成數(shù)據(jù)庫操作,同時記錄日志信息;數(shù)據(jù)庫,是用來存儲數(shù)據(jù)的,一般為關(guān)系型數(shù)據(jù)庫;這樣的分層組織結(jié)構(gòu),上層使用下層服務(wù),下層對上層隱藏其細節(jié),這樣更利于系統(tǒng)的開發(fā)、維護和擴展。
1.2 軟件開發(fā)分層是否有必要?
筆者認為這個肯定是必要的,能存在的東西,肯定都是有價值的,下面,筆者就軟件分層開發(fā)的好處進行列舉分析:
1.2.1 方便團隊分工
軟件開發(fā)分層技術(shù),其實可以認為是對工種的分類,其基本上將軟件開發(fā)人員劃分為數(shù)據(jù)庫設(shè)計人員、業(yè)務(wù)實現(xiàn)人員、界面設(shè)計人員。之前一直應(yīng)用的分模塊軟件開發(fā)方式,為了完成所分配模塊的任務(wù),每個人都要獨立完成數(shù)據(jù)庫的設(shè)計,業(yè)務(wù)流程的實現(xiàn)以及界面的設(shè)計。這樣的開發(fā)最終會造成代碼可讀性差,后期維護繁瑣,不能實現(xiàn)人盡其才的用人宗旨。反而,通過分層軟件開發(fā)方式,界面設(shè)計人員主要負責(zé)對界面的設(shè)計,業(yè)務(wù)實現(xiàn)人員主要負責(zé)處理界面提交的數(shù)據(jù)請求完成邏輯流程,數(shù)據(jù)庫設(shè)計人員主要負責(zé)關(guān)系數(shù)據(jù)庫規(guī)劃、設(shè)計。如此看來,如果采用分層開發(fā),可以將每位員工放到適合的崗位上,能合理地分配員工工作,實現(xiàn)人盡其才的用人原則和宗旨。
1.2.2 降低開發(fā)和維護成本
通過分層,將整個系統(tǒng)劃分為不同的邏輯塊,三層結(jié)構(gòu)通過中間件、相關(guān)程序?qū)崿F(xiàn)了客戶端與服務(wù)器的分離,實現(xiàn)了應(yīng)用服務(wù)器與數(shù)據(jù)服務(wù)器之間的通信,實現(xiàn)了異構(gòu)平臺之間的數(shù)據(jù)交換。即使客戶端改變,數(shù)據(jù)庫或應(yīng)用服務(wù)器也可保持不變,反之亦然,通過分層開發(fā),提高了系統(tǒng)模塊的復(fù)用性,縮短了開發(fā)周期,降低了開發(fā)和維護成本。
1.2.3 增強系統(tǒng)復(fù)用性
組件的使用,增強了系統(tǒng)的復(fù)用性。將數(shù)據(jù)訪問集中到數(shù)據(jù)訪問層的組件中,減少了應(yīng)用程序的重復(fù)代碼,一些有共性的邏輯操作都集中封裝在邏輯層的組件中,之后每一個使用該方法的操作,都可以通過共享方式來訪問該組件。
1.2.4 提高系統(tǒng)擴展性
分層開發(fā)及分模塊開發(fā)使得系統(tǒng)更容易在縱向和水平方向上拓展,有了這個拓展,就更容易將系統(tǒng)擴展為功能更齊全,升級為性能更強大的系統(tǒng),同時還可以通過擴大規(guī)模來增強網(wǎng)絡(luò)應(yīng)用。在擴充或修改功能時,基本不會破壞原有結(jié)構(gòu)的穩(wěn)定性。三層結(jié)構(gòu)在營造企業(yè)競爭優(yōu)勢中的作用主要體現(xiàn)在模塊化設(shè)計使得用戶在現(xiàn)有結(jié)構(gòu)的基礎(chǔ)上實現(xiàn)了系統(tǒng)擴展,從而提高企業(yè)信息化的速度和業(yè)務(wù)水平。
1.2.5 其他好處
在分層軟件開發(fā)中,通過將每層的代碼進行規(guī)范,可以固定開發(fā)語言的風(fēng)格。一個好的數(shù)據(jù)訪問層可以將數(shù)據(jù)庫的差異完全屏蔽掉,使得開發(fā)人員可以快速地進行數(shù)據(jù)庫轉(zhuǎn)換。
1.3 分模塊開發(fā)和分層開發(fā)哪個更好一些?
軟件開發(fā),不論是分層開發(fā)還是分模塊開發(fā),均是開發(fā)實現(xiàn)的兩種方法。分層從架構(gòu)設(shè)計的角度看,是對系統(tǒng)的縱向分解,模塊從功能模塊角度看,是對系統(tǒng)的縱向分解,所以模塊和層是一個垂直正交的關(guān)系。分模塊開發(fā)是被采用較多的一種實現(xiàn)方式,但是,筆者更傾向于分層方式,下面將對這兩種開發(fā)方式的看法分別列舉如下:
分層開發(fā),使各層次之間采用接口方式進行執(zhí)行,同時分層開發(fā)保證了員工職責(zé)的清晰化及員工工作的專業(yè)化,更有利于員工的合理分配。但分層開發(fā)也有其弊端,由于各個人員承擔(dān)的任務(wù)難度不一樣,更容易造成瓶頸現(xiàn)象。要想更好地保證系統(tǒng)開發(fā)的質(zhì)量,選擇分層開發(fā)更合適。
分模塊開發(fā),每個開發(fā)人員必須要對一個模塊進行從頭到尾的設(shè)計,使得系統(tǒng)能夠更快地被完成,因為在一定程度上減少了協(xié)調(diào)成本。如果是在項目時間不夠的情況下,特別容易造成分層結(jié)構(gòu)缺失,開發(fā)人員只顧功能不管分層,便會使得員工與職責(zé)相分離,所以,這會造成項目的不好控制。
通過多年項目經(jīng)驗積累,筆者認為,要想提快速度,可以采用分模塊開發(fā),要想保證質(zhì)量,可以采用分層開發(fā)。其實,分層與分模塊,只是軟件開發(fā)的兩種實現(xiàn)方式,并無絕對的好壞之分,只是在具體的項目開發(fā)實際情形中,可以選擇適合該項目的開發(fā)方式,也可以是兩種方式的結(jié)合。不論是分層還是分模塊,都需要不同的依賴模型。目前而言,對于企業(yè)級的軟件開發(fā),可以先將業(yè)務(wù)劃分成相應(yīng)的模塊,然后再進行分層。但其實這也只是一個籠統(tǒng)的概念,對于一個實際開發(fā)過程,什么樣的情況適合什么樣的開發(fā)方式,不論是分層還是分模塊,需要根據(jù)不同的情況去進行選擇。
2 結(jié)束語
通過對層次結(jié)構(gòu)、軟件層次開發(fā)方式的分析,以及層次開發(fā)及分模塊開發(fā)的比較,將層次開發(fā)提升到一個理論討論的高度上。通過分析,可知層次開發(fā)具有方便團隊分工、降低開發(fā)和維護成本、增強系統(tǒng)的復(fù)用性以及擴展性等優(yōu)點,但是分層結(jié)構(gòu)也有其缺點,并不是分層越多越好,否則管理會比較麻煩,并且導(dǎo)致運行效率低,所以,一個良好層次結(jié)構(gòu)的系統(tǒng),其層數(shù)的數(shù)目要恰到好處才行。對于企業(yè)軟件工程的實施,我們可以采用分層+分模塊設(shè)計的方式來實現(xiàn),將兩者的優(yōu)點有效地結(jié)合,并將其缺點力爭降到最小。
參考文獻:
[1]王麗華.試論計算機軟件開發(fā)中的分層技術(shù)運用[J].河南科技,2013(05):23-24.
[2]徐愛蘭.計算機軟件開發(fā)中的分層技術(shù)探討[J].計算機光盤軟件與應(yīng)用,2012(24):45-47.
[3]焦麗平.試論計算機軟件開發(fā)中的分層技術(shù)運用[J].數(shù)字技術(shù)與應(yīng)用,2013(02).
[4]趙明亮.計算機應(yīng)用軟件開發(fā)技術(shù)[J].黑龍江科技信息,2011(26).
作者單位:湖北荊楚理工學(xué)院,湖北荊門 448000