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