- 相關(guān)推薦
計(jì)算機(jī)軟件開發(fā)的進(jìn)展研究論文
1引言
當(dāng)前,計(jì)算機(jī)技術(shù)的迅速更新、軟件處理對(duì)象如企業(yè)業(yè)務(wù)過程的不斷變化以及軟件開發(fā)競爭的日趨激烈已經(jīng)使傳統(tǒng)的從源代碼級(jí)開發(fā)軟件系統(tǒng)的方法面臨越來越大的挑戰(zhàn)。利用傳統(tǒng)開發(fā)方法開發(fā)的大多數(shù)系統(tǒng)所使用的是在開發(fā)初始時(shí)所能得到的技術(shù),面向的是當(dāng)時(shí)所需處理的問題,要使這些軟件系統(tǒng)適應(yīng)處理對(duì)象如業(yè)務(wù)過程的變化以及計(jì)算機(jī)技術(shù)的進(jìn)步是一件非常復(fù)雜的工作,往往必須對(duì)原有系統(tǒng)在代碼上進(jìn)行重大修改,這種修改代價(jià)較高并且也有一定的風(fēng)險(xiǎn),從而造成軟件的可擴(kuò)充性Scalabiltiy)較差。在開發(fā)過程中,為減少軟件開發(fā)費(fèi)用、縮短軟件開發(fā)周期,保持開發(fā)者的技術(shù)水平變得越來越重要,因?yàn)橹挥羞@樣才能達(dá)到一個(gè)較高的開發(fā)效率,使得項(xiàng)目按時(shí)完成。而在傳統(tǒng)的開發(fā)方法中,由于開發(fā)不同的軟件時(shí)常需要不同的開發(fā)工具,這使得開發(fā)者必須不斷學(xué)習(xí)新的開發(fā)工具,原有的技巧以及已具備的經(jīng)驗(yàn)難以被再次利用。當(dāng)今的軟件開發(fā)經(jīng)常需要利用現(xiàn)有成果,開發(fā)時(shí)可能要集成不同的系統(tǒng)、新的應(yīng)用、標(biāo)準(zhǔn)的軟件包以及已在業(yè)務(wù)開展中使用了的與任務(wù)有關(guān)的現(xiàn)有數(shù)據(jù)與系統(tǒng),通過集成可以減少不必要的工作量,提高軟件的可用性,加快開發(fā)進(jìn)度。但是傳統(tǒng)的代碼開發(fā)方法主要著眼于從無到有的構(gòu)造,對(duì)軟件集成Integration)的支持不夠,大量的開發(fā)時(shí)間被投入到底層編程中,這種編程不僅耗時(shí)而且可能是重復(fù)勞動(dòng),從長遠(yuǎn)看還會(huì)造成代碼難于維護(hù)。
隨著軟件構(gòu)件技術(shù)的成熟,大量的構(gòu)件作為現(xiàn)成的商品在軟件市場出現(xiàn),基于構(gòu)件的軟件開發(fā)CBSD:Component-basedSoftwareDevelopment)也作為一種新的工業(yè)化的軟件開發(fā)方法被提了出來。該方法是對(duì)以前傳統(tǒng)開發(fā)方法的一種改變,它使得軟件開發(fā)從代碼開發(fā)轉(zhuǎn)移到對(duì)已測試、已使用的,并且在內(nèi)部互操作的構(gòu)件的集成是軟件重用的一種實(shí)例。通過加強(qiáng)系統(tǒng)的靈活性以及可維護(hù)性,CBSD可以被用來減少軟件的開發(fā)費(fèi)用、快速的集成系統(tǒng)以及減少與支持升級(jí)大型系統(tǒng)相關(guān)的維護(hù)費(fèi)用,從而使軟件開發(fā)者處于有利的競爭地位。該方法的基礎(chǔ)是基于這樣的假設(shè):大型軟件系統(tǒng)的某些部分會(huì)不斷重現(xiàn);系統(tǒng)的公用部分應(yīng)當(dāng)編寫一次而不是多次;公共系統(tǒng)應(yīng)通過重用被集成而不是一而再,再而三的重寫,它體現(xiàn)了FredBrooks所支持的購買而不構(gòu)造”的開發(fā)思想。在CBSD中的構(gòu)件主要是指可以通過商業(yè)手段獲取的構(gòu)件CommercialOff-the-shellComponent),主要是遵循已有的C0M/DC0M、C0GBA以及JAVABEALS構(gòu)件標(biāo)準(zhǔn)的構(gòu)件、開發(fā)者可以加以剪裁的應(yīng)用框架以及已被其他應(yīng)用集成或擴(kuò)展的獨(dú)立軟件系統(tǒng)。當(dāng)今世界上許多研宄機(jī)構(gòu)如美國的卡耐基梅隆大學(xué)、加拿大的國立研宄委員會(huì)NationalResearchCouncil)都在積極對(duì)CBSD展開研究,該文將對(duì)這一領(lǐng)域的研究成果、進(jìn)展加以綜述。
2CBSD的主要活動(dòng)
CBSD的開展主要是通過集成已存在的構(gòu)件來進(jìn)行的,這與傳統(tǒng)的開發(fā)方法有著明顯的不同,在后者中,系統(tǒng)集成通常是實(shí)現(xiàn)工作的結(jié)束部分,而在CBSD中,構(gòu)件集成是構(gòu)造系統(tǒng)的核心內(nèi)容。因此,在決定獲取、重用甚至構(gòu)造構(gòu)件時(shí),可集成性是所需考慮的關(guān)鍵因素。
CBSD由4個(gè)主要活動(dòng)組成:構(gòu)件的評(píng)選、構(gòu)件的適配、構(gòu)件的組裝以及系統(tǒng)的演化。
2.1構(gòu)件的評(píng)選
構(gòu)件的評(píng)選是一個(gè)從市場上的一批相互競爭的構(gòu)件中加以選擇的過程,該過程要求在眾多侯選者中選出最適合在該軟件環(huán)境中使用的構(gòu)件。在安全性要求較高的應(yīng)用中,構(gòu)件的選擇可以擴(kuò)充到包括對(duì)創(chuàng)建與維護(hù)構(gòu)件的開發(fā)過程的選擇,但這樣也會(huì)減少使用現(xiàn)有構(gòu)件的一些好處。
一個(gè)適合使用的構(gòu)件可能本身就是一個(gè)復(fù)雜的軟件,為了有效地使用該構(gòu)件,必須深入了解它。但較好地了解一個(gè)構(gòu)件并不是一件容易的事情。首先構(gòu)件的文檔可能不全或者錯(cuò)誤。即使構(gòu)件的提供者有意識(shí)作好文檔,一個(gè)復(fù)雜的軟件是不可能在文檔中被完全并且正確說明的。即使不完全的文檔可能也是龐大的,除了非常有經(jīng)驗(yàn)的使用者,其他人將很難理解;其次構(gòu)件的接口可能非常復(fù)雜。許多構(gòu)件有上百個(gè)API調(diào)用,即使編制這些構(gòu)件的人都很難知道每個(gè)API調(diào)用的行為或者特殊調(diào)用序列的結(jié)果;最后在構(gòu)件中存在錯(cuò)誤。所有這些問題都對(duì)了解構(gòu)件造成困難。
構(gòu)件的評(píng)選有兩個(gè)階段:發(fā)現(xiàn)與評(píng)價(jià)。在發(fā)現(xiàn)階段,要判別構(gòu)件的特性。這些特性包括構(gòu)件的功能提供什么樣的服務(wù))、構(gòu)件界面的其他方面如使用的標(biāo)準(zhǔn))以及其他難以分離出的質(zhì)量特點(diǎn)如構(gòu)件的可靠性,可預(yù)測性以及可用性。在一些情況下,在發(fā)現(xiàn)構(gòu)件時(shí)也應(yīng)該考慮構(gòu)件的非技術(shù)特性,如提供者的市場占有率、以前的業(yè)績以及構(gòu)件開發(fā)組織的過程成熟度。發(fā)現(xiàn)構(gòu)件是一個(gè)艱難的無法精確定義的過程,所需的信息很難量化,有時(shí)也難以得到。
構(gòu)件的評(píng)價(jià)是一種決策。評(píng)價(jià)構(gòu)件用來支持作出編制還是購買、買A還是買B以及使用特征A還是使用特征B的決定。當(dāng)前已經(jīng)存在了一些相對(duì)成熟的評(píng)價(jià)技術(shù),如ISO的通用標(biāo)準(zhǔn)以及IEEE的特定域的構(gòu)件評(píng)價(jià)技術(shù),但就構(gòu)件評(píng)價(jià)本身來說是不確定的,這主要是由于使用難以互相比較的標(biāo)準(zhǔn)、不明確的系統(tǒng)期望、不精確的評(píng)價(jià)方法以及構(gòu)件的快速修改,這意味著構(gòu)件評(píng)價(jià)帶有一定的錯(cuò)誤。確定構(gòu)件的適應(yīng)性是構(gòu)件評(píng)價(jià)的目標(biāo),構(gòu)件對(duì)系統(tǒng)百分之百的適應(yīng)是不大可能的,一般都存在一定的權(quán)衡,而構(gòu)件對(duì)系統(tǒng)的不適應(yīng)程度由不適應(yīng)的類型、修補(bǔ)不適應(yīng)的費(fèi)用以及不適應(yīng)性所導(dǎo)致的風(fēng)險(xiǎn)所決定。對(duì)于每一個(gè)評(píng)價(jià)活動(dòng),由于存在各自不同類型的決定、系統(tǒng)環(huán)境評(píng)價(jià)過程都是有針對(duì)性的,對(duì)開發(fā)者有用的應(yīng)該是一種系統(tǒng)的方法,該方法能夠在眾多可變的因素中加以選擇以說明有用的評(píng)價(jià)標(biāo)準(zhǔn)。
2.2構(gòu)件的適配
由于每個(gè)構(gòu)件在編制時(shí)針對(duì)的是滿足不同需求的,并且是基于上下文的不同假設(shè),在應(yīng)用到一個(gè)新系統(tǒng)時(shí)構(gòu)件常常必須被改寫。構(gòu)件必須被改寫的前提是保證構(gòu)件間的沖突最小。對(duì)構(gòu)件內(nèi)部結(jié)構(gòu)的理解程度決定了對(duì)構(gòu)件適應(yīng)的不同方法*2+:
1)白盒子法。用戶可以獲得構(gòu)件的源碼,這樣可以通過改寫構(gòu)件以使構(gòu)件能與其他構(gòu)件進(jìn)行互操作。這種方法可以對(duì)構(gòu)件的特性進(jìn)行非常細(xì)致的控制,不過由于需要修改源碼,從長遠(yuǎn)看可能會(huì)導(dǎo)致嚴(yán)重的維護(hù)和升級(jí)的問題,使得基于構(gòu)件開發(fā)的許多優(yōu)點(diǎn)被丟失。
2)黑盒子法。只能得到構(gòu)件的二進(jìn)制可執(zhí)行形式,構(gòu)件沒有提供擴(kuò)展機(jī)制或API。
3)灰盒子法。在這種情況下,構(gòu)件的源碼是不可更改的,但構(gòu)件提供了它自身的擴(kuò)展機(jī)制或可編程的接口API。
對(duì)構(gòu)件自身的擴(kuò)展機(jī)制加以調(diào)用的方式一般稱之為構(gòu)件的剪裁ComponentTailoring),它指構(gòu)件的使用者以構(gòu)件提供者所提供的方式來增強(qiáng)構(gòu)件的功能,包括腳本Script)、插件Plug-in)的使用和繼承inheritance)三種方式。卻本方式是指構(gòu)件在某些特定事件下執(zhí)行某一特定的腳本過程,早期的腳本是由簡單的宏語言來編寫的,在當(dāng)前許多新的應(yīng)用中腳本描述能力已經(jīng)越來越高級(jí),用戶可以使用完善的編程語言和解釋器來編寫腳本如VBA、tcl以及Perl。插件是指在一個(gè)封閉應(yīng)用中注冊的構(gòu)件,當(dāng)應(yīng)用需要該插件功能時(shí)會(huì)對(duì)插件執(zhí)行一個(gè)回調(diào)Callback)。繼承允許構(gòu)件內(nèi)部的某一特定部分被修改和限定,當(dāng)前的面向?qū)ο髽?biāo)準(zhǔn)允許構(gòu)件被開發(fā)者使用,盡管使用者只能得到構(gòu)件的二進(jìn)制代碼,繼承的使用要求深入了解構(gòu)件結(jié)構(gòu),在通常情況下僅僅被專業(yè)開發(fā)者所使用。對(duì)構(gòu)件可編程接口的調(diào)用一般會(huì)涉及到在構(gòu)件周圍編寫一個(gè)屏蔽構(gòu)件工作區(qū)以及延伸的包容器Wrapper)以提供對(duì)構(gòu)件接口的更高級(jí)抽象。把構(gòu)件包容起來有很多好處:可以使構(gòu)件遵循標(biāo)準(zhǔn),如在已有系統(tǒng)上的COGBA包容器;為某一范圍的構(gòu)件提供一個(gè)標(biāo)準(zhǔn)接口;增加或隱藏)構(gòu)件的功能;為構(gòu)件提供一個(gè)單一的訪問接口;盡管該集成者無法控制構(gòu)件,構(gòu)件的包容器能給構(gòu)件的集成者一種直觀的感覺。構(gòu)件的集成者可以控制和訪問包容器。
2.3構(gòu)件的組裝
構(gòu)件的組裝較易發(fā)生錯(cuò)誤,需要一定量的編碼,并且難以調(diào)試和測試,此外,構(gòu)件還較易發(fā)生變化,商業(yè)構(gòu)件經(jīng)常面臨頻繁的升級(jí)。這些升級(jí)所增加的功能或消除的問題不一定是用戶所希望的,在上一版本的關(guān)鍵功能可能在后續(xù)的版本中被刪去了,在這種情況下,用戶可能會(huì)希望在系統(tǒng)新的發(fā)布版本中使用由其他供應(yīng)商提供的同類型構(gòu)件。
為了處理在搭建系統(tǒng)時(shí)所遇到的問題,集成構(gòu)件的體系結(jié)構(gòu)應(yīng)該有以下一些特點(diǎn):
1)構(gòu)件可插拔。系統(tǒng)的體系結(jié)構(gòu)必須允許構(gòu)件的替換,這種替換包括更新為構(gòu)件的新版本和將構(gòu)件替換為由其他供應(yīng)商所提供的同類型構(gòu)件。
2)構(gòu)件間松散耦合。構(gòu)件間的耦合必須盡可能的小,耦合可能包括功能耦合如過程調(diào)用以及其他類型的依賴如資源競爭或結(jié)構(gòu)上的假設(shè)。體系結(jié)構(gòu)必須允許構(gòu)件間的隔離。
3)隱藏不必要的功能。為了使自己的構(gòu)件區(qū)別于其他人提供的構(gòu)件,構(gòu)件供應(yīng)商給他的構(gòu)件加上過多功能,這對(duì)構(gòu)件的組裝不利,系統(tǒng)結(jié)構(gòu)設(shè)計(jì)者可能因此希望去掉這些功能,系統(tǒng)的體系結(jié)構(gòu)必須提供對(duì)功能隱藏的支持。
4)調(diào)試與測試。由于在開發(fā)過程中構(gòu)件基本上是以灰/黑盒子的形式來使用的,所以不可能對(duì)構(gòu)件內(nèi)部加以調(diào)試和測試。軟件的體系結(jié)構(gòu)無法克服這一問題,但是它可以包括在運(yùn)行時(shí)對(duì)構(gòu)件的行為加以監(jiān)控及驗(yàn)證的能力,并且可以防止構(gòu)件的錯(cuò)誤擴(kuò)展到系統(tǒng)的其他部分。
在由構(gòu)件開發(fā)軟件系統(tǒng)時(shí),可以使用以下幾種體系結(jié)構(gòu)類型:
1)數(shù)據(jù)庫結(jié)構(gòu)。在該結(jié)構(gòu)中對(duì)所有操作數(shù)據(jù)的集中控制是系統(tǒng)在構(gòu)件間共享信息的關(guān)鍵。
2)黑板模型。構(gòu)件間的數(shù)據(jù)共享是隨意的,涉及降低系統(tǒng)的開銷水平。
3)消息總線。構(gòu)件有各自不同的數(shù)據(jù)存儲(chǔ),這些局部數(shù)據(jù)通過變化消息來加以協(xié)調(diào)。
4)消息請求代理0)B)協(xié)調(diào),0)*技術(shù)提供了與語言無關(guān)的接口定義和對(duì)象定位與激發(fā)的機(jī)制。
組裝構(gòu)件時(shí),在許多時(shí)候必須編寫一些粘接代碼GlueCode),這些代碼可以通過必須的數(shù)據(jù)轉(zhuǎn)換等手段來消除構(gòu)件間接口不兼容的問題,使底層構(gòu)件的功能按需激發(fā),從而提供把不同的構(gòu)件結(jié)合在一起的功能。不僅如此,通過捕獲異常,粘接代碼還能為系統(tǒng)提供統(tǒng)一的異常處理機(jī)制。
2.4系統(tǒng)的演化
系統(tǒng)是不斷改變的;系統(tǒng)中的構(gòu)件也是不斷變化的。系統(tǒng)與其構(gòu)件的演化對(duì)系統(tǒng)的維護(hù)造成了多種影響。在把新版本的構(gòu)件加入到系統(tǒng)時(shí)需要做許多工作,對(duì)于一個(gè)由多個(gè)構(gòu)件組成的系統(tǒng),每個(gè)構(gòu)件都有其自身的升級(jí)安排,把每個(gè)構(gòu)件的每一個(gè)新版本加入到系統(tǒng)中代價(jià)非常高昂,造成這種困難的原因是因?yàn)樵跇?gòu)件的新版本中,構(gòu)件的行為、界面、前提、性能以及錯(cuò)誤的消除都可能發(fā)生變化;在舊版本的構(gòu)件上進(jìn)行的定制、擴(kuò)展以及相關(guān)工作必須施加到新構(gòu)件上。
在基于構(gòu)件的系統(tǒng)中沒有在機(jī)械系統(tǒng)中定義的‘一致”的概念,在機(jī)械系統(tǒng)中各個(gè)部件完美結(jié)合而在軟件系統(tǒng)中各構(gòu)件的結(jié)合是在一定的限度之內(nèi)的。一種處理系統(tǒng)演化的方法是假發(fā)生,系統(tǒng)可能依賴于已不再使用或已被升級(jí)的特殊平臺(tái);也可能在新版本中需要去除錯(cuò)誤。集成新版本的構(gòu)件需要作出較大的努力。首先,新版本的構(gòu)件必須被評(píng)價(jià)以確定在舊版本上作了什么改變;其次,新構(gòu)件必須被集成到系統(tǒng)中。這可能包括添加或移去構(gòu)件的工作區(qū),增加新的擴(kuò)充以考慮構(gòu)件新的行為,升級(jí)文檔和培訓(xùn)過程等等;最后,系統(tǒng)必須被測試和確認(rèn)。
3使用CBSD的優(yōu)缺點(diǎn)
作為一種新的軟件開發(fā)方法,CBSD具有自身的特點(diǎn),這些特點(diǎn)把它與傳統(tǒng)的代碼開發(fā)方法區(qū)分開來。使用CBSD可以給軟件開發(fā)帶來以下好處構(gòu)件的開發(fā)者可以使用最適合的開發(fā)工具而不必學(xué)習(xí)新的語言和工具,這樣就允許企業(yè)可以利用已有的技術(shù);當(dāng)使用預(yù)先創(chuàng)建及測試的構(gòu)件時(shí),在組裝過程中應(yīng)用的開發(fā)者可以關(guān)注業(yè)務(wù)問題而不用擔(dān)心技術(shù)以及外部設(shè)施等問題,減少了系統(tǒng)完成時(shí)間。
在市場上出現(xiàn)的構(gòu)件大多經(jīng)過市場的檢驗(yàn)而變的比較成熟,對(duì)這些構(gòu)件的使用可以使系統(tǒng)比在使用自己編制的構(gòu)件的情況下更可靠、設(shè)計(jì)更合理。
由于系統(tǒng)的開發(fā)基于組裝過程,構(gòu)件能被較容易的替換為更便宜、有更多附加值、使用更好技術(shù)并且具有類似功能的構(gòu)件。這樣使得系統(tǒng)的靈活性更好,開發(fā)者也不會(huì)過分依賴于某個(gè)供應(yīng)商。
CBSD可以降低軟件開發(fā)費(fèi)用,由于構(gòu)件的供應(yīng)商開發(fā)及維護(hù)構(gòu)件是針對(duì)多個(gè)用戶的,那么使用該構(gòu)件的軟件在該構(gòu)件部分的開發(fā)及維護(hù)費(fèi)用被多個(gè)用戶分擔(dān)。
雖然CBSD有許多優(yōu)點(diǎn),但也存在不少缺點(diǎn),這些缺點(diǎn)給軟件開發(fā)帶來一定的風(fēng)險(xiǎn)。
首先開發(fā)者無法得到構(gòu)件的源碼,也就無法通過修改源碼來改變構(gòu)件的功能,這就意味著分析、調(diào)試以及測試構(gòu)件必須完全以黑盒子的形式進(jìn)行。不僅如此,在許多時(shí)候,完整并且正確的特性說明也是拿不到的。雖然構(gòu)件的提供商提供了功能描述但是對(duì)于那些想掌握構(gòu)件更詳細(xì)的特性以及所需資源的開發(fā)者來說,這種說明往往難以滿足需要。構(gòu)件集成者也可能會(huì)使用未被構(gòu)件提供商所預(yù)見的構(gòu)件使用方式。
其次,構(gòu)件的使用者無法控制構(gòu)件的升級(jí)。構(gòu)件的使用者僅僅是構(gòu)件提供商許多客戶中的一個(gè),雖然從總體來說,構(gòu)件的升級(jí)是由客戶來驅(qū)動(dòng)的,但單個(gè)客戶不可能有對(duì)構(gòu)件升級(jí)的全部控制權(quán)。
再次,在構(gòu)件集成時(shí),所選用的構(gòu)件之間可能不匹配或者是作為單獨(dú)應(yīng)用設(shè)計(jì)的構(gòu)件與軟件的其他部分不易交互。構(gòu)件之間的不匹配可以由許多原因?qū)е,如?shù)據(jù)模型、功能不匹配、資源沖突、過程模型等等。在有些時(shí)候這種不匹配在開發(fā)階段的后期才會(huì)暴露出來。
4CBSD開發(fā)時(shí)建議遵循的原則
通過對(duì)大量基于構(gòu)件軟件開發(fā)過程的分析,可以得到一套有助于利用構(gòu)件成功開發(fā)軟件的原則43,|。這些原則從經(jīng)驗(yàn)中來,遵循這些原則,可以簡化開發(fā)及系統(tǒng)演化的工作。
1)包容所有的構(gòu)件
系統(tǒng)中所有的構(gòu)件都應(yīng)該有包容器把它們給包容起來。提出這一原則的理由在于包容器提供了系統(tǒng)開發(fā)者對(duì)構(gòu)件界面以及構(gòu)件間交互的唯一機(jī)制,并且使系統(tǒng)的其他構(gòu)件不受該構(gòu)件改變的影響。此外,系統(tǒng)中所有提供重要功能而由手工編寫的部分應(yīng)與對(duì)待構(gòu)件相似的方式對(duì)待,也應(yīng)該用包容器包起來,這樣當(dāng)以后如果出現(xiàn)同樣功能的構(gòu)件時(shí),開發(fā)者可以較容易地把手工編寫部分改成構(gòu)件。
2)粘接代碼獨(dú)立于構(gòu)件
粘接代碼應(yīng)該獨(dú)立于與其粘接的構(gòu)件,在構(gòu)件替換時(shí)不必改寫,構(gòu)件的替換被構(gòu)件的包容和剪裁獨(dú)立所隱藏,粘接代碼與構(gòu)件的交互是通過包容器間接進(jìn)行的。粘接代碼所提供的功能不應(yīng)該依賴于所訪問的特定構(gòu)件,諸如異常處理、控制流等服務(wù)的升級(jí)應(yīng)獨(dú)立于多粘接的構(gòu)件,這樣當(dāng)構(gòu)件升級(jí)或修改時(shí),粘接代碼可以保持不變。通過提供構(gòu)件周圍用來隔絕的包容器粘接代碼可以使用標(biāo)準(zhǔn)方法訪問構(gòu)件。
3)檢驗(yàn)構(gòu)件的版本一致性
構(gòu)件以新版本發(fā)布的形式快速升級(jí),系統(tǒng)通常與使用構(gòu)件的哪一個(gè)版本運(yùn)行有關(guān)系,一個(gè)特殊的構(gòu)件被升級(jí)到一個(gè)新版本經(jīng)常意味著包容器以及其他構(gòu)件也要被升級(jí)。
系統(tǒng)的開發(fā)者無論如何都需要保證當(dāng)前構(gòu)件的配置版本一致,理想的版本檢查是自動(dòng)進(jìn)行的,版本驗(yàn)證可以在創(chuàng)建、安裝或運(yùn)行時(shí)進(jìn)行,這與構(gòu)件的連接時(shí)間有關(guān)。Perl和使用Ac?tiveX構(gòu)件的VisualBasic都有對(duì)版本驗(yàn)證的支持。在Perl中,構(gòu)件開發(fā)者在每個(gè)發(fā)布的軟件模塊中加入一個(gè)版本號(hào),構(gòu)件使用者在連接該模塊時(shí)必須說明所需的版本,在運(yùn)行時(shí)系統(tǒng)會(huì)檢查所連的模塊的版本是否等于或高于所需版本。ActiveX構(gòu)件對(duì)構(gòu)件及接口都有一個(gè)版本號(hào),構(gòu)件的版本號(hào)是由開發(fā)者確定的,它被安裝程序使用來決定已安裝的構(gòu)件是否應(yīng)該被新版本的構(gòu)件所替換。接口的版本號(hào)是在編譯時(shí)自動(dòng)分配的,它用來記錄一個(gè)構(gòu)件接口的不同版本的一致性。在運(yùn)行時(shí),當(dāng)一個(gè)VisualBasic程序連接到ActiveX構(gòu)件時(shí),一個(gè)驗(yàn)證構(gòu)件所暴露的接口是否是VisualBasic程序所預(yù)期接口的檢查會(huì)自動(dòng)進(jìn)行。如果版本不一致的話,系統(tǒng)集成者可以捕獲異常。
4)在包容及粘接中加入斷言
在許多情況下為了確認(rèn)運(yùn)行時(shí)的斷言在包容及粘接中所進(jìn)行的高層次檢查是非常有用的。這些斷言可以僅僅是驗(yàn)證參數(shù)值或類型,也可以更為復(fù)雜,斷言數(shù)據(jù)值之間的關(guān)系或所需要事件的臨時(shí)順序。這種運(yùn)行時(shí)的檢查主要位于包容器及粘接代碼中,通過在構(gòu)件間添加斷言并且在斷言違背時(shí)發(fā)出異常,錯(cuò)誤能很快被發(fā)現(xiàn)并且從系統(tǒng)中分離出來。
5)使用開放的標(biāo)準(zhǔn)
使用遵循開放標(biāo)準(zhǔn)的構(gòu)件能使不同供應(yīng)商的構(gòu)件間較容易地替換,而選擇遵循特殊標(biāo)準(zhǔn)的構(gòu)件會(huì)給系統(tǒng)的可移植性以及用不同來源的構(gòu)件配置系統(tǒng)時(shí)帶來問題。如果使用不開放的標(biāo)準(zhǔn),系統(tǒng)開發(fā)者會(huì)過分依賴某一特定的供應(yīng)商,即使有其他供應(yīng)商提供相同功能并且性能或費(fèi)用上更可取的構(gòu)件,開發(fā)者也無法采用。
6)—致的體系結(jié)構(gòu)類型
通常開發(fā)者無法控制構(gòu)件內(nèi)部的結(jié)構(gòu)以及構(gòu)件的演化與維護(hù),他們所能決定的是系統(tǒng)體系結(jié)構(gòu)及體系結(jié)構(gòu)類型。通過定義在系統(tǒng)整個(gè)生命周期內(nèi)都可維護(hù)的靈活的體系結(jié)構(gòu)并且保證構(gòu)件都遵循這一結(jié)構(gòu)能使在系統(tǒng)中添加構(gòu)件較易進(jìn)行,系統(tǒng)內(nèi)的服務(wù)也能按照需要剪裁和修改。如果在開發(fā)過程中過早地束縛于一個(gè)特殊的體系結(jié)構(gòu),會(huì)使構(gòu)件的集成變得困難,構(gòu)件的完全利用也不太可能實(shí)現(xiàn)。
5小結(jié)
基于構(gòu)件的軟件開發(fā)已經(jīng)越來越廣泛地應(yīng)用于包括企業(yè)信息系統(tǒng)在內(nèi)的多個(gè)領(lǐng)域的軟件生產(chǎn)中,并且成功地開發(fā)出許多系統(tǒng),但在對(duì)安全性要求苛刻的系統(tǒng)中,使用該方法風(fēng)險(xiǎn)仍然太大。為了方便該方法的開展,當(dāng)前出現(xiàn)了不少開發(fā)工具如compuware公司的Uniface、SuperNova公司的Visualconcepts,這些工具在構(gòu)件組裝、部署等方面提供了許多支持,使得基于構(gòu)件的開發(fā)能更加有效地進(jìn)行。
【計(jì)算機(jī)軟件開發(fā)的進(jìn)展研究論文】相關(guān)文章:
計(jì)算機(jī)軟件開發(fā)實(shí)習(xí)周報(bào)04-21
生物學(xué)研究論文03-03
水利工程中計(jì)算機(jī)的運(yùn)用研究論文范文(通用7篇)05-11
幼兒舞蹈教學(xué)研究論文01-03
技工院校軟件開發(fā)專業(yè)項(xiàng)目課程實(shí)踐探索論文03-23