文/車雪
構(gòu)件的軟件開發(fā)流行于20世紀(jì)90年代,一個(gè)軟件構(gòu)件是可執(zhí)行軟件的一個(gè)可分離的單元。構(gòu)件可以提高軟件開發(fā)中構(gòu)件復(fù)用成度,縮短軟件的開發(fā)周期,提高系統(tǒng)的穩(wěn)定性,軟件構(gòu)件是軟件復(fù)用的基本單元,為了實(shí)現(xiàn)軟件的復(fù)用,必須不斷地積累軟件部件,并將其組成軟件庫(kù)。了解構(gòu)件的軟件開發(fā)技術(shù)和方法可以從構(gòu)件的概念及應(yīng)用優(yōu)勢(shì)、構(gòu)件的主要內(nèi)容和構(gòu)件的軟件開發(fā)過(guò)程來(lái)了解。
構(gòu)件是軟件的構(gòu)成元素,它幾乎是獨(dú)立并可被替換的一部分。其可以明確辯識(shí),可以通過(guò)構(gòu)件接口訪問(wèn)它所提供的服務(wù)。而且構(gòu)件和語(yǔ)境有明顯依靠關(guān)系,是可以組裝的軟件實(shí)體。從廣義上講構(gòu)件可以是數(shù)據(jù),也可以是被封裝的對(duì)象類、軟件構(gòu)架、文檔、測(cè)試用例等。軟件構(gòu)件是由第三方提供的可組裝軟件實(shí)體,軟件構(gòu)件都承載著一些有用的功能,并且遵循某種構(gòu)件模型??蓮?fù)用構(gòu)件則是指具有可復(fù)用價(jià)值的構(gòu)件。
當(dāng)前我國(guó)軟件企業(yè)方面面對(duì)著日益增加的競(jìng)爭(zhēng)壓力,在國(guó)際市場(chǎng)上稍不注意就有可能會(huì)被淘汰,角逐愈激烈愈能促進(jìn)軟件這個(gè)行業(yè)的發(fā)展。傳統(tǒng)軟件開發(fā)方式僅僅是通過(guò)軟件開發(fā)人員手工設(shè)計(jì)的模式,如果稍有變動(dòng)就必須重新開發(fā)系統(tǒng)。這樣很難跟得上現(xiàn)在軟件行業(yè)的發(fā)展。然而現(xiàn)在的構(gòu)件軟件技術(shù)在碰到業(yè)務(wù)流程發(fā)生變化或系統(tǒng)升級(jí)等情況時(shí),不需要全盤推翻重新開發(fā),只需要增加新的構(gòu)件或改動(dòng)原來(lái)的構(gòu)件即可完成。這樣不僅節(jié)省時(shí)間和成本,還大大提升了軟件開發(fā)的效率。相比于傳統(tǒng)的軟件開發(fā)技術(shù),構(gòu)件的軟件開發(fā)的軟件產(chǎn)品更能吻合客戶的需求,上市時(shí)間和軟件質(zhì)量也是遙遙領(lǐng)先于傳統(tǒng)的軟件開發(fā)。
構(gòu)件的主要內(nèi)容可以從構(gòu)件的基本特點(diǎn)、構(gòu)件的要素和常用構(gòu)件的基本模式進(jìn)行大致的了解。
(1)自描述:構(gòu)件必須能夠識(shí)別其屬性、存取方法和事件,通過(guò)這些信息可以使開發(fā)環(huán)境將第三方軟件構(gòu)件緊密地結(jié)合起來(lái)。
(2)可移植性:構(gòu)件應(yīng)該能在不同硬件平臺(tái)運(yùn)行和軟件環(huán)境中工作。
(3)通用性:構(gòu)件不是為某一個(gè)企業(yè)或客戶專門定制的,而是在某一領(lǐng)域中通用的。
(4)連結(jié)機(jī)制:構(gòu)件必須能產(chǎn)生事件或具有讓程序員從語(yǔ)意上實(shí)現(xiàn)相互連接的其它機(jī)制。
(5)是預(yù)先創(chuàng)建的:在軟件開發(fā)周期中,源代碼復(fù)用代價(jià)比較高,所以最好是預(yù)先創(chuàng)建的。構(gòu)件是第三方通過(guò)現(xiàn)成買來(lái)的,根據(jù)接口參數(shù)和約束條件進(jìn)行調(diào)用的。
一般完工的構(gòu)件應(yīng)具備以下要素:
(1)規(guī)格說(shuō)明:建立在接口概念之上,作為服務(wù)提供方與客戶之間的契約。
(2)一個(gè)或多個(gè)實(shí)現(xiàn):應(yīng)符合規(guī)格說(shuō)明,各自實(shí)現(xiàn)。
(3)受約束的構(gòu)件標(biāo)準(zhǔn):即符合某種構(gòu)件模型。
(4)包裝方法:按不同的方式分組,提供一套可以替換的服務(wù)。
(5)部署方法:即可以部署多個(gè)實(shí)例。
由于軟件構(gòu)件蘊(yùn)含著及其大量的信息,且構(gòu)件數(shù)量也是十分龐大,對(duì)于其分類就顯得尤為重要了。常用的構(gòu)件分類模式有枚舉分類、屬性―值分類和刻面分類。
枚舉分類:將構(gòu)件按某些性質(zhì)分成若干大類,再將大類分成若干較小的類,經(jīng)過(guò)多次分解,形成構(gòu)件分類的層次結(jié)構(gòu)。這樣的分層結(jié)構(gòu)易于理解或檢索,但在建立層次結(jié)構(gòu)之前需進(jìn)行領(lǐng)域分析。
屬性―值分類:為每一個(gè)構(gòu)件定義一組屬性,開發(fā)人員可以通過(guò)指定一組特定屬性對(duì)構(gòu)件庫(kù)檢索,這樣具有較好的靈活性,使用的屬性數(shù)量沒(méi)有限制;屬性沒(méi)有優(yōu)先級(jí)。
刻面分類:根據(jù)一組刻面對(duì)構(gòu)件進(jìn)行分類。每個(gè)刻面從不同的側(cè)面對(duì)構(gòu)件庫(kù)中的構(gòu)件進(jìn)行分類,并根據(jù)重要性設(shè)置刻面的優(yōu)先級(jí)。用戶通過(guò)指定一組刻面的術(shù)語(yǔ)值尋找匹配的構(gòu)件。這種方法同樣具有較好的靈活性,易于加入新的刻面值,易于擴(kuò)展和修改。
傳統(tǒng)的軟件開發(fā)過(guò)程在重用元素及開發(fā)方法上和構(gòu)件的軟件開發(fā)都有很大的不同。自構(gòu)件的出現(xiàn)以來(lái)軟件的重用元素得到了根本的改變。且相比于傳統(tǒng)的軟件開發(fā)過(guò)程,構(gòu)件的軟件開發(fā)過(guò)程亦有很大不同。構(gòu)件的軟件開發(fā)過(guò)程可分為以下幾步:
按照需求從構(gòu)件庫(kù)查找所需的標(biāo)準(zhǔn)構(gòu)件,并對(duì)構(gòu)件的功能、可靠性和市場(chǎng)價(jià)值進(jìn)行分析,篩選出一些較好的構(gòu)件。
部分構(gòu)件不能直接應(yīng)用于軟件的開發(fā),需按照所需要求進(jìn)行修改或擴(kuò)展。
修改或擴(kuò)展的構(gòu)件需在構(gòu)造應(yīng)用工具上進(jìn)行測(cè)試,保證構(gòu)件的功能及能夠正常應(yīng)用,以免造成軟件開發(fā)過(guò)程中返工的現(xiàn)象。
將構(gòu)件裝配成模板。
先完成應(yīng)用邏輯和數(shù)據(jù)定義編程的工作,然后對(duì)應(yīng)用服務(wù)器及客戶的標(biāo)準(zhǔn)完成文件的配置和部署。
通過(guò)系統(tǒng)中某些構(gòu)件的升級(jí)或替換使系統(tǒng)中的功能不斷地進(jìn)行改進(jìn)完善即系統(tǒng)的演化。
相比于傳統(tǒng)的軟件開發(fā)技術(shù)所開發(fā)出的軟件,CBSD技術(shù)軟件的復(fù)用,可以有效的地提高軟件開發(fā)的效率和質(zhì)量,降低開發(fā)和維護(hù)的成本??萍荚诓粩嗟剡M(jìn)步,相信在不久的將來(lái),構(gòu)件的軟件開發(fā)技術(shù)會(huì)更加完善,改去現(xiàn)存的缺點(diǎn),大大提高軟件開發(fā)的工作效率。在科技發(fā)展迅猛的現(xiàn)在,唯有順應(yīng)潮流,不斷地學(xué)習(xí)并掌握新的技術(shù),才不會(huì)被這個(gè)時(shí)代所淘汰。同時(shí)相對(duì)于企業(yè)來(lái)說(shuō),不斷引進(jìn)發(fā)達(dá)的技術(shù),培養(yǎng)工作人員的技能,才能大大提高產(chǎn)品的質(zhì)量和工作效率,在軟件開發(fā)市場(chǎng)獲取一席之地。