聶 磊
[摘要]基于構(gòu)件的軟件開發(fā)是以構(gòu)件為組裝藍(lán)圖,以可復(fù)用軟件構(gòu)件為組裝模塊,支持組裝式復(fù)用,以提高軟件生產(chǎn)效率和軟件產(chǎn)品質(zhì)量的有效途徑。對軟件構(gòu)件技術(shù)、基于構(gòu)件的軟件開發(fā)方法進(jìn)行較深入的研究,并在此基礎(chǔ)上將構(gòu)件技術(shù)引入到軟件項(xiàng)目設(shè)計(jì)中來,探討如何利用軟件構(gòu)件技術(shù)開發(fā)軟件項(xiàng)目。
[關(guān)鍵詞]軟件開發(fā)構(gòu)件技術(shù)應(yīng)用研究
中圖分類號:TP3文獻(xiàn)標(biāo)識碼:A文章編號:1671—7597(2009)1020093--01
一、引言
隨著軟件開發(fā)規(guī)模和復(fù)雜性、社會對軟件開發(fā)速度和數(shù)質(zhì)量要求的不斷提高,“軟件危機(jī)”現(xiàn)象愈加明顯,提高軟件生產(chǎn)率成為軟件產(chǎn)業(yè)當(dāng)務(wù)之急。為此,人們提出了軟件復(fù)用思想,而構(gòu)件技術(shù)是軟件復(fù)用技術(shù)的最新發(fā)展趨勢?;跇?gòu)件的軟件開發(fā)技術(shù)近年來取得了突飛猛進(jìn)的發(fā)展,這不僅對軟件產(chǎn)業(yè)的技術(shù)革新影響深遠(yuǎn),還將為許多其它領(lǐng)域帶來巨大的效益。構(gòu)件化技術(shù)對軟件開發(fā)工廠化是非常重要的。有了構(gòu)件才能通過構(gòu)件的組裝、互連,實(shí)現(xiàn)軟件的工程化開發(fā)。
二、軟件構(gòu)件技術(shù)
(一)軟件工程概念
軟件工程的概念主要是針對20世紀(jì)60年代“軟件危機(jī)”而提出的。它首次出現(xiàn)在1968年NATO(北大西洋公約組織)會議上。自這一概念提出以來,圍繞軟件項(xiàng)目,人們開展了有關(guān)開發(fā)模型、方法以及支持工具的研究。其主要成果有:提出了瀑布模型,開發(fā)了一些結(jié)構(gòu)化程序設(shè)計(jì)語言、結(jié)構(gòu)化方法等。并且圍繞項(xiàng)目管理提出了費(fèi)用估算、文檔復(fù)審等方法和工具。
(二)軟件構(gòu)件技術(shù)
構(gòu)件最早由Meliroy在1968年NATO軟件工程會議上提出。構(gòu)件是可復(fù)用的軟件組成成份,可被用來構(gòu)造其他軟件。它可以是被封裝的對象類、類樹、一些功能模塊、軟件框架、軟件構(gòu)架(或體系結(jié)構(gòu))、文檔、分析件、設(shè)計(jì)模式等。構(gòu)件分為構(gòu)件類和構(gòu)件實(shí)例,通過給出構(gòu)件類的參數(shù),生成實(shí)例,通過實(shí)例的組裝和控制來構(gòu)造相應(yīng)的應(yīng)用軟件。例如,如果有一個(gè)開發(fā)人員創(chuàng)建了一個(gè)能讓一個(gè)客戶進(jìn)入公司的數(shù)據(jù)庫的構(gòu)件,那么其他程序員就不必重新編寫這個(gè)功能,而是從公司的構(gòu)件庫中直接提取這個(gè)構(gòu)件,并將其應(yīng)用在新程序中。
基于構(gòu)件的軟件開發(fā)(cBSD,Component Based software Development)是以構(gòu)件為組裝藍(lán)圖,以可復(fù)用軟件構(gòu)件為組裝模塊,支持組裝式復(fù)用,以提高軟件生產(chǎn)效率和軟件產(chǎn)品質(zhì)量的有效途徑。它包含了系統(tǒng)分析、構(gòu)造、維護(hù)和擴(kuò)展的各個(gè)方面,這些方面都是以構(gòu)件方法為核心的。
軟件構(gòu)件技術(shù)以及基于構(gòu)件的軟件開發(fā)方法,與傳統(tǒng)軟件工程方法有所不同,它不僅僅針對某個(gè)具體的工程項(xiàng)目,而更多地是針對某一行業(yè)領(lǐng)域的共性需求,利用領(lǐng)域工程方法,將多年積累的行業(yè)經(jīng)驗(yàn)進(jìn)行總結(jié),提煉出業(yè)務(wù)模型、特定領(lǐng)域的系統(tǒng)架構(gòu)、構(gòu)件庫等,這樣開發(fā)出來的架構(gòu)和構(gòu)件封裝了業(yè)務(wù)的個(gè)性和變化性,具有此領(lǐng)域的共同特點(diǎn),在此領(lǐng)域有很高的可復(fù)用性。有了這樣的積累之后,整個(gè)應(yīng)用軟件的生產(chǎn)方式將發(fā)生很大的改變,將不再是從頭做起。而是以“構(gòu)件組裝”的方式生產(chǎn)出軟件應(yīng)用系統(tǒng)。軟件系統(tǒng)的質(zhì)量、復(fù)用率和開發(fā)效率都得到大幅提高。
軟件構(gòu)件技術(shù)要想在實(shí)際工作得到有效利用,需要有一些平臺軟件來支撐,這就是我們所說的軟件構(gòu)件技術(shù)的支撐平臺四要素,即構(gòu)件運(yùn)行支撐環(huán)境、構(gòu)件開發(fā)/組裝環(huán)境、構(gòu)件管理環(huán)境和基于構(gòu)件的開發(fā)方法和過程。
三、構(gòu)件化開發(fā)實(shí)踐——基于構(gòu)件的院校辦公系統(tǒng)
在深入研究基于構(gòu)件的軟件開發(fā)方法的基礎(chǔ)上,將其運(yùn)用在院校辦公系統(tǒng)中,在較好實(shí)現(xiàn)系統(tǒng)功能的基礎(chǔ)上,更能充分發(fā)揮基于構(gòu)件的軟件開發(fā)方法的優(yōu)點(diǎn),使該系統(tǒng)更易于升級和維護(hù),使系統(tǒng)的安全性、可擴(kuò)展性、復(fù)用性、可定制性和適應(yīng)性均得到大大提高。
(一)構(gòu)件體系結(jié)構(gòu)與接口的設(shè)計(jì)
目前支持構(gòu)件體系結(jié)構(gòu)開發(fā)較成熟的模型有CORBA、COM/DCOM及J2EE三大技術(shù)體系。其中J2BE具有平臺無關(guān)性、可一次開發(fā)多處運(yùn)行等特點(diǎn),因此我們選用J2EE技術(shù)。
J2EE技術(shù)提供了一個(gè)基于構(gòu)件的開發(fā)方法來設(shè)計(jì)、開發(fā)、裝配和部署企業(yè)級應(yīng)用程序。J2EE平臺提供了一個(gè)多層結(jié)構(gòu)的分布式的應(yīng)用程序模型,該模型具有重用組件的能力、基于擴(kuò)展標(biāo)記語言(XML)的數(shù)據(jù)交換、統(tǒng)一的安全模式和靈活的事務(wù)控制。
在CBSD中,系統(tǒng)是依靠各種構(gòu)件協(xié)同工作完成系統(tǒng)功能。為了實(shí)現(xiàn)各構(gòu)件間信息交換就需定義一組接口。業(yè)務(wù)構(gòu)件接口設(shè)計(jì)包括邏輯控制構(gòu)件接口(Session EJB接口)和業(yè)務(wù)對象構(gòu)件接口(Entity EJB接口)。
在該系統(tǒng)中采用一組服務(wù)來完成,上層或需用方通過以XML定義的服務(wù)接口向提供者請求服務(wù),系統(tǒng)中各構(gòu)件也利用該接口發(fā)布和請求服務(wù)。
(二)應(yīng)用系統(tǒng)的部署
在構(gòu)件實(shí)現(xiàn)、裝配和測試成功以后,構(gòu)件就可以被部署在應(yīng)用程序中了。在這一步需要連接客戶端應(yīng)用程序和服務(wù)器端構(gòu)件。
例如,在構(gòu)建運(yùn)用JsP/Servlet技術(shù)基于Web的應(yīng)用系統(tǒng)中,組裝過程就是連接web服務(wù)器和應(yīng)用服務(wù)器(包含EJB構(gòu)件容器)。在web端JsP或Java Servlet根據(jù)業(yè)務(wù)要求調(diào)用EJB構(gòu)件相應(yīng)服務(wù)(接口操作)。
在開發(fā)過程中任務(wù)的分配采用全局開發(fā)采用分層模式,局部開發(fā)采用分模塊方式。相應(yīng)地軟件開發(fā)人員分為構(gòu)件生產(chǎn)者和構(gòu)件使用者兩類,構(gòu)件生產(chǎn)者可以將主要精力放到業(yè)務(wù)邏輯部分。而構(gòu)件使用人員將得到可復(fù)用構(gòu)件裝配到系統(tǒng)中,可以全身心關(guān)注與用戶交互部分。全局分層模式的運(yùn)用將與用戶交互部分與后臺邏輯處理部分嚴(yán)格分離,實(shí)現(xiàn)了真正的軟件松耦合目的,另外也實(shí)現(xiàn)了構(gòu)件的“一次編寫,處處運(yùn)行”目的。
四、結(jié)語
基于構(gòu)件的軟件開發(fā)方法極大地利用了復(fù)用技術(shù),可以減少軟件開發(fā)活動(dòng)中大量的重復(fù)性工作,提高軟件生產(chǎn)效率,降低開發(fā)成本,縮短開發(fā)周期。同時(shí),由于可復(fù)用構(gòu)件大都經(jīng)過嚴(yán)格的測試,并在實(shí)際運(yùn)行環(huán)境中得到進(jìn)一步檢驗(yàn),因此,利用可復(fù)用構(gòu)件進(jìn)行軟件開發(fā)有助于改善軟件質(zhì)量。此外,大量使用可復(fù)用構(gòu)件,軟件的靈活性和標(biāo)準(zhǔn)化程度也可望得到提高。
本文對軟件構(gòu)件技術(shù)、基于構(gòu)件的軟件開發(fā)方法進(jìn)行了較深入的研究,并在此基礎(chǔ)上將構(gòu)件技術(shù)引入到軟件項(xiàng)目設(shè)計(jì)中來,探討了如何利用軟件構(gòu)件技術(shù)開發(fā)軟件項(xiàng)目。關(guān)于基于構(gòu)件的軟件開發(fā)方法的研究,以后還需要結(jié)合更多實(shí)際項(xiàng)目尤其是大規(guī)模項(xiàng)目進(jìn)行更深入的研究和探討。在大型軟構(gòu)件庫的支持下,利用現(xiàn)有的、質(zhì)量好、可靠性強(qiáng)的軟構(gòu)件,按照大規(guī)模軟件開發(fā)的工程規(guī)范進(jìn)行開發(fā),是滿足大型系統(tǒng)要求的捷徑。