監(jiān)理公司管理系統(tǒng) | 工程企業(yè)管理系統(tǒng) | OA系統(tǒng) | ERP系統(tǒng) | 造價(jià)咨詢(xún)管理系統(tǒng) | 工程設(shè)計(jì)管理系統(tǒng) | 簽約案例 | 購(gòu)買(mǎi)價(jià)格 | 在線試用 | 手機(jī)APP | 產(chǎn)品資料
X 關(guān)閉

主流軟件開(kāi)發(fā)技術(shù)

申請(qǐng)免費(fèi)試用、咨詢(xún)電話:400-8352-114

文章來(lái)源:泛普軟件

當(dāng)前軟件工程領(lǐng)域和軟件產(chǎn)業(yè)界的熱點(diǎn)技術(shù)包括原型開(kāi)發(fā)方法、C/S與B/S結(jié)構(gòu)、軟件構(gòu)件、軟件復(fù)用等。本文針對(duì)這些當(dāng)今軟件開(kāi)發(fā)的主流技術(shù)加以評(píng)述,以期對(duì)實(shí)際工作做出指導(dǎo)。

原型法

原型法是近年來(lái)提出的一種以計(jì)算機(jī)為基礎(chǔ)的系統(tǒng)開(kāi)發(fā)方法,利用原型法開(kāi)發(fā)系統(tǒng)時(shí)首先構(gòu)造一個(gè)功能簡(jiǎn)單的原型系統(tǒng),然后通過(guò)對(duì)原型系統(tǒng)逐步求精,不斷擴(kuò)充完善得到最終的軟件系統(tǒng)。

原型就是模型,原型系統(tǒng)就是應(yīng)用系統(tǒng)的模型。它是待開(kāi)發(fā)的實(shí)際系統(tǒng)的縮小比例模型,但是保留了實(shí)際系統(tǒng)的大部分性能。這個(gè)模型可在運(yùn)行中被檢查、測(cè)試、修改,直到它的性能達(dá)到用戶(hù)需求為止,隨之這個(gè)工作模型很快就能轉(zhuǎn)換成需要的目標(biāo)系統(tǒng)。

原型法的主要優(yōu)點(diǎn)在于它是一種支持用戶(hù)的方法,使得用戶(hù)在系統(tǒng)生存周期的設(shè)計(jì)階段起到積極的作用,能減少系統(tǒng)開(kāi)發(fā)的風(fēng)險(xiǎn)。特別是在大型項(xiàng)目的開(kāi)發(fā)中,由于用戶(hù)對(duì)系統(tǒng)功能認(rèn)識(shí)的模糊性,使得對(duì)項(xiàng)目需求的分析難以一次完成,往往會(huì)造成已完成的項(xiàng)目多次修改,應(yīng)用原型法則會(huì)避免這種風(fēng)險(xiǎn)。

原型法的概念既適用于系統(tǒng)的重新開(kāi)發(fā),也適用于對(duì)系統(tǒng)的修改;利用原型法開(kāi)發(fā)系統(tǒng)需要有良好的軟件開(kāi)發(fā)環(huán)境、工具的支持。原型法也可以與傳統(tǒng)的生命周期方法相結(jié)合使用,以便擴(kuò)大用戶(hù)參與需求分析、初步設(shè)計(jì)及詳細(xì)設(shè)計(jì)等階段的活動(dòng),加深對(duì)系統(tǒng)的理解。

微軟公司通常采用“同步-穩(wěn)定產(chǎn)品開(kāi)發(fā)法”進(jìn)行項(xiàng)目開(kāi)發(fā)。典型項(xiàng)目的生命周期包括三個(gè)階段:

1. 計(jì)劃階段:完成項(xiàng)目的功能說(shuō)明和進(jìn)度表的制定;

2. 開(kāi)發(fā)階段:寫(xiě)出完整的的源代碼;

3. 穩(wěn)定化階段:完成產(chǎn)品,使之能夠批量生產(chǎn)。

這三大階段以及階段間內(nèi)在的循環(huán)方法與傳統(tǒng)的“瀑布”式開(kāi)發(fā)方式很不相同,后者是由需求、詳盡設(shè)計(jì)、模塊化的代碼設(shè)計(jì)與測(cè)試、集成測(cè)試以及系統(tǒng)測(cè)試組成的。而微軟的三個(gè)階段更像是風(fēng)險(xiǎn)驅(qū)動(dòng)的、漸進(jìn)的“螺旋”式的生命周期模型。

構(gòu)造原型是在計(jì)劃階段具體說(shuō)明一件新產(chǎn)品或一個(gè)新版本的最好方法,這從許多方面來(lái)說(shuō)特別是在系統(tǒng)可用性方面都使開(kāi)發(fā)前測(cè)試成為可能,并且有助于對(duì)與用戶(hù)交互情況做出良好的理解,同時(shí)也能使產(chǎn)品說(shuō)明更加緊湊。

微軟的開(kāi)發(fā)人員通常采用VB構(gòu)造用戶(hù)界面原型,對(duì)于構(gòu)造計(jì)算機(jī)屏幕模型之類(lèi)的工作,畫(huà)筆(Paintbrush)也是一個(gè)很好用的工具。通過(guò)原型法可以使死板的說(shuō)明變成有生命的文件。

C/S與B/S結(jié)構(gòu)

管理信息系統(tǒng)平臺(tái)模式大體上分為四種:主機(jī)終端模式、文件服務(wù)器模式、C/S模式和B/S模式。主機(jī)終端模式由于硬件選擇有限,硬件投資得不到保證,已被逐步淘汰。而文件服務(wù)器模式只適用小規(guī)模的局域網(wǎng),對(duì)于用戶(hù)多、數(shù)據(jù)量大的情況就會(huì)產(chǎn)生網(wǎng)絡(luò)瓶頸,特別是在互聯(lián)網(wǎng)上不能滿足用戶(hù)要求。因此,現(xiàn)代企業(yè)管理信息系統(tǒng)平臺(tái)模式應(yīng)主要考慮C/S模式和B/S模式。

● C/S結(jié)構(gòu)

兩層結(jié)構(gòu)的C/S(Client/ Server)模式在上個(gè)世紀(jì)八九十年代得到大量的應(yīng)用。C/S結(jié)構(gòu)由兩部分構(gòu)成:前端是客戶(hù)機(jī),通常是PC;后端是服務(wù)器,運(yùn)行數(shù)據(jù)庫(kù)管理系統(tǒng),提供數(shù)據(jù)庫(kù)的查詢(xún)和管理。

但兩層的C/S結(jié)構(gòu)存在以下幾個(gè)局限:它是單一服務(wù)器且以局域網(wǎng)為中心的,所以難以擴(kuò)展至大型企業(yè)廣域網(wǎng)或Internet;受限于供應(yīng)商;軟、硬件的組合及集成能力有限;難以管理大量的客戶(hù)機(jī)。

因此,三層C/S結(jié)構(gòu)應(yīng)運(yùn)而生。三層結(jié)構(gòu)的C/S模式是伴隨著中間件技術(shù)的成熟而興起的,核心思想是利用中間件將應(yīng)用分為表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)存儲(chǔ)層三個(gè)不同的處理層次。三個(gè)層次的劃分是從邏輯上來(lái)分的,具體的物理分法可以有多種形式。

三層C/S結(jié)構(gòu)具有以下優(yōu)點(diǎn):具有靈活的硬件系統(tǒng)構(gòu)成;提高程序的可維護(hù)性;利于變更和維護(hù)應(yīng)用技術(shù)規(guī)范;進(jìn)行嚴(yán)密的安全管理;越關(guān)鍵的應(yīng)用,用戶(hù)的識(shí)別和存取權(quán)限設(shè)定愈重要。

● B/S結(jié)構(gòu)

基于Web的B/S(Browser/ Server)方式其實(shí)也是一種客戶(hù)機(jī)/服務(wù)器模式,只不過(guò)它的客戶(hù)端是瀏覽器。

B/S結(jié)構(gòu)中處于第一層的是客戶(hù)端,處于第二層的是應(yīng)用服務(wù)器,由一臺(tái)或者多臺(tái)服務(wù)器組成,該層具有良好的可擴(kuò)充性,可以隨著應(yīng)用的需要增加服務(wù)器的數(shù)目。處于第三層的是數(shù)據(jù)層,由數(shù)據(jù)庫(kù)系統(tǒng)和遺留系統(tǒng)組成。

B/S的優(yōu)勢(shì)在于:簡(jiǎn)化了客戶(hù)端;簡(jiǎn)化了系統(tǒng)的開(kāi)發(fā)和維護(hù);用戶(hù)操作變得更簡(jiǎn)單;適用于網(wǎng)上信息發(fā)布。

軟件構(gòu)件技術(shù)

所謂軟件構(gòu)件化,就是要讓軟件開(kāi)發(fā)像機(jī)械制造工業(yè)一樣,可以用各種標(biāo)準(zhǔn)和非標(biāo)準(zhǔn)的零件來(lái)進(jìn)行組裝。軟件的構(gòu)件化和集成技術(shù)的目標(biāo)是:軟件系統(tǒng)可以由不同廠商提供的,用不同語(yǔ)言開(kāi)發(fā)的,在不同硬件平臺(tái)上實(shí)現(xiàn)的軟件構(gòu)件,方便地、動(dòng)態(tài)地集成。這些構(gòu)件要求能互操作,它們可以放在本地的計(jì)算機(jī)上,也可以分布式地放置在網(wǎng)上異構(gòu)環(huán)境下的不同結(jié)點(diǎn)上。

面向?qū)ο蟮姆椒ê图夹g(shù)是繼結(jié)構(gòu)化方法之后出現(xiàn)的、最有代表性的軟件開(kāi)發(fā)方法,是當(dāng)今軟件開(kāi)發(fā)的主流技術(shù)。但是,面向?qū)ο笏峁┑膬?yōu)點(diǎn)主要是針對(duì)分析、設(shè)計(jì)和源代碼等軟件開(kāi)發(fā)階段的,當(dāng)一個(gè)面向?qū)ο蟮拇a經(jīng)過(guò)編譯、連接后得到的可執(zhí)行軟件則是不可改變的、無(wú)法重用的。

因此,我們需要一種新的、不依賴(lài)于某種特定語(yǔ)言的、在二進(jìn)制代碼級(jí)可復(fù)用的軟件“對(duì)象”,這種“對(duì)象”就是構(gòu)件(Component)。

構(gòu)件技術(shù)是一種軟件實(shí)現(xiàn)的技術(shù)和方法,是對(duì)面向?qū)ο蠓椒ㄔ诙M(jìn)制代碼級(jí)的完善和補(bǔ)充。構(gòu)件是由接口構(gòu)成的,它把接口和接口的實(shí)現(xiàn)分離開(kāi)了。接口是獨(dú)立于語(yǔ)言的一種描述,它將內(nèi)部的實(shí)現(xiàn)以及接口到實(shí)現(xiàn)的映射都封裝起來(lái)了,外界只能通過(guò)接口描述使用構(gòu)件。因此,接口用哪種語(yǔ)言實(shí)現(xiàn)也就無(wú)關(guān)緊要了。

在現(xiàn)有的軟件市場(chǎng)上,有三種代表性的構(gòu)件技術(shù)流派,它們分別是COM(Component Object Model,對(duì)象構(gòu)件模型)、JavaBean和CORBA(the Common Object Request Broker Architecture,公共對(duì)象請(qǐng)求代理體系結(jié)構(gòu))。它們是由不同的機(jī)構(gòu)提出的構(gòu)件技術(shù)實(shí)現(xiàn)模型和標(biāo)準(zhǔn),各有優(yōu)缺點(diǎn)。

● COM

COM是由Microsoft公司推出的構(gòu)件接口標(biāo)準(zhǔn),是軟件構(gòu)件相互通信的一種方式,它是一種二進(jìn)制和網(wǎng)絡(luò)標(biāo)準(zhǔn),允許任意兩個(gè)組件互相通信。目前已有大量的基于COM的構(gòu)件可供復(fù)用,原則上講,這些構(gòu)件可以建立在任何環(huán)境下,但現(xiàn)有的COM構(gòu)件大多都依賴(lài)于Microsoft環(huán)境,在Unix、Macintosh等其他操作系統(tǒng)環(huán)境下可復(fù)用的構(gòu)件還很少,Microsoft公司正在努力開(kāi)發(fā)更多的在其他操作系統(tǒng)環(huán)境下的COM構(gòu)件。

傳統(tǒng)的應(yīng)用程序在源代碼級(jí)可被分割為文件、模塊、類(lèi)或函數(shù)等,以便于實(shí)施、修改和維護(hù),但經(jīng)編譯、鏈接以后就生成了不可改變的二進(jìn)制可執(zhí)行代碼,采用COM技術(shù)產(chǎn)生的源代碼則不同。

一個(gè)COM構(gòu)件是由若干個(gè)接口組成的,而一個(gè)接口則是由若干個(gè)函數(shù)的說(shuō)明組成的。COM是一個(gè)二進(jìn)制標(biāo)準(zhǔn),即接口編譯以后生成的二進(jìn)制代碼的結(jié)構(gòu)要滿足一定的內(nèi)存塊結(jié)構(gòu)。該內(nèi)存塊結(jié)構(gòu)是不依賴(lài)于任何語(yǔ)言的。圖1表示一個(gè)擁有Fun1和Fun2函數(shù)的IX接口的內(nèi)存塊結(jié)構(gòu)。

其中,pIX是指向IX接口的指針,通過(guò)vtbl指針(接口指針)指向接口中函數(shù)的指針數(shù)組(稱(chēng)為v表),v表中的元素是指向接口中函數(shù)實(shí)現(xiàn)的指針。后面我們將會(huì)看到函數(shù)指針在用代理-存根機(jī)制實(shí)現(xiàn)進(jìn)程間、計(jì)算機(jī)間的接口調(diào)用時(shí)指向相應(yīng)的代理。

任何語(yǔ)言的語(yǔ)法成分,只要其編譯后的目標(biāo)代碼在結(jié)構(gòu)滿足圖1的二進(jìn)制形式結(jié)構(gòu),就稱(chēng)其為該構(gòu)件接口的一個(gè)實(shí)現(xiàn)。通常情況下,大多數(shù)程序設(shè)計(jì)語(yǔ)言和其COM支持工具都能將相應(yīng)的語(yǔ)法自動(dòng)地映射為這樣的結(jié)構(gòu),無(wú)需程序員做更多的工作。

COM是一個(gè)二進(jìn)制標(biāo)準(zhǔn)。由于任何語(yǔ)言都要翻譯成二進(jìn)制機(jī)器代碼才能最后執(zhí)行,所以COM可以作為各種高級(jí)語(yǔ)言的中間橋梁,使它們可以互操作;按COM標(biāo)準(zhǔn)實(shí)現(xiàn)的軟件也可以被所有的語(yǔ)言環(huán)境所共享。共享人類(lèi)開(kāi)發(fā)的、豐富的軟件資源是提出的COM的最初動(dòng)機(jī)。

● JavaBean

目前的COM技術(shù)主要是針對(duì)PC市場(chǎng)的不依賴(lài)于語(yǔ)言的軟件構(gòu)件技術(shù),而JavaBean則是針對(duì)解決平臺(tái)依賴(lài)性和語(yǔ)言依賴(lài)性這兩個(gè)問(wèn)題而提出來(lái)的軟件構(gòu)件技術(shù)標(biāo)準(zhǔn)。

關(guān)于平臺(tái)依賴(lài)性問(wèn)題是其他構(gòu)件標(biāo)準(zhǔn)普遍存在的問(wèn)題。盡管其他構(gòu)件標(biāo)準(zhǔn)的接口是惟一的,即使用構(gòu)件的方式是惟一的,但一個(gè)構(gòu)件一旦在某種運(yùn)行環(huán)境下實(shí)現(xiàn)就很難直接在另一種運(yùn)行環(huán)境被復(fù)用。而這種平臺(tái)依賴(lài)性問(wèn)題對(duì)進(jìn)一步提高軟件復(fù)用力度卻是至關(guān)重要的。

由于Java本身在全球軟件界的影響,特別是Java獨(dú)立于平臺(tái)的、適宜于在Internet、易于構(gòu)造B/S應(yīng)用等等特點(diǎn),Javasoft公司利用Java特殊的byteCode機(jī)制,很好地解決了其他構(gòu)件標(biāo)準(zhǔn)難以解決的平臺(tái)依賴(lài)性問(wèn)題,推出了它們自己的構(gòu)件接口標(biāo)準(zhǔn)JavaBean。正像JavaSoft所描述的JavaBean是“一次性編寫(xiě),在任意地方可運(yùn)行,在任意地方可重用”。

JavaBean的構(gòu)件模型主要包括:構(gòu)件和容器。模型的其他部分還包括事件處理、持續(xù)性、布局以及應(yīng)用程序建立器(一種可視化的工具)等,這些都是通過(guò)JavaBean構(gòu)件的標(biāo)準(zhǔn)接口實(shí)現(xiàn)的。

JavaBean構(gòu)件有時(shí)也稱(chēng)為JavaBean或Bean。它是由接口構(gòu)成的,接口是由方法組成的。容器能夠使構(gòu)件組合在一起并相互作用。這種機(jī)制主要是為了界面構(gòu)件提出的,它本身也是一個(gè)構(gòu)件,以便嵌套組合產(chǎn)生復(fù)雜的可視化GUI。JavaBean的主要特征為:

1. 屬性管理

根據(jù)屬性的使用類(lèi)型可將其分為:一般屬性、索引屬性、依附屬性和約束屬性,通過(guò)一些標(biāo)準(zhǔn)的命名約定定義它們相應(yīng)的訪問(wèn)方法,使JavaBean API能用統(tǒng)一的方式對(duì)屬性進(jìn)行管理。其中,依附屬性是基于自身值的變化而向感興趣的部分提供通知的屬性。約束屬性是一種在接收更改之前能使感興趣的部分對(duì)新屬性值執(zhí)行有效檢查的屬性。

2. 內(nèi)省功能

內(nèi)省功能是構(gòu)件的內(nèi)部結(jié)構(gòu)(屬性、方法和事件)展現(xiàn)給外部的機(jī)制。不同于COM,JavaBean不需要構(gòu)件開(kāi)發(fā)者開(kāi)發(fā)這種額外的工作,它只需要開(kāi)發(fā)者對(duì)構(gòu)件的屬性、方法和事件的命名和類(lèi)型符號(hào)遵守一個(gè)約定,通過(guò)標(biāo)準(zhǔn)的JavaBean API就可了解到bean的任何內(nèi)部信息。

JavaBean的事件處理模型是基于現(xiàn)存的AWT事件處理模型的。它決定bean如何對(duì)它自身狀態(tài)的變化做出反應(yīng),以及決定如何將這些變化傳遞給應(yīng)用程序和其他bean。通過(guò)JavaBean API將一個(gè)事件接收器(處理某個(gè)事件的應(yīng)用程序或其他bean)注冊(cè)到該事件上,完成外部對(duì)事件的控制。這是將bean組合起來(lái)的有效方法。

Java與JavaBean的區(qū)別是:Java是在源代碼級(jí)的復(fù)用;而JavaBean是在目標(biāo)代碼級(jí)的復(fù)用,并且,通過(guò)JavaBean提供的標(biāo)準(zhǔn)接口,為在目標(biāo)代碼級(jí)的動(dòng)態(tài)組裝、版本升級(jí)、維護(hù)提供保證,并可利用一些相應(yīng)的可視化工具方便、有效地定制JavaBean和建立應(yīng)用程序。

盡管JavaBean是作為一種通用的構(gòu)件模型提出來(lái)的,但它更主要地還是為解決可視化構(gòu)件而設(shè)計(jì)的一套系統(tǒng),它類(lèi)似于Microsoft的ActiveX。嚴(yán)格地講,目前的JavaBean在不同語(yǔ)言之間提供的互操作性方面是很弱的,它只是提供了在Java環(huán)境下的二進(jìn)制代碼共享機(jī)制。增強(qiáng)JavaBean與其他構(gòu)件技術(shù)之間的互操作是JavaBean今后發(fā)展的一個(gè)主要課題。

● CORBA

CORBA是由OMG(對(duì)象管理組)1990年首次為了解決分布式、異質(zhì)的軟件和硬件環(huán)境下對(duì)象之間的互操作問(wèn)題而提出的、基于中間件的構(gòu)件技術(shù)。CORBA有兩個(gè)重要的特點(diǎn):面向?qū)ο蠹夹g(shù)與分布式計(jì)算的結(jié)合;代理機(jī)制的中間件技術(shù)。

1. 面向?qū)ο笈c分布式技術(shù)的結(jié)合

CORBA是為了解決分布式問(wèn)題而提出的分布式對(duì)象計(jì)算模型。利用計(jì)算機(jī)網(wǎng)絡(luò)進(jìn)行分布式計(jì)算可以共享資源、平衡大型計(jì)算的負(fù)載等。但是,傳統(tǒng)的分布式計(jì)算模型還不夠成熟:客戶(hù)/服務(wù)關(guān)系不靈活、遠(yuǎn)程服務(wù)層次太低、用戶(hù)使用不透明。面向?qū)ο笾械膶?duì)象是一個(gè)相對(duì)獨(dú)立的軟件實(shí)體,它有自己的內(nèi)部狀態(tài)和清晰的對(duì)外接口。但傳統(tǒng)的面向?qū)ο竽P偷膶?shí)現(xiàn),只能在單計(jì)算機(jī)上進(jìn)行。CORBA將這兩者有機(jī)地結(jié)合起來(lái)了。在CORBA中,對(duì)象是分布式計(jì)算模型中理想的節(jié)點(diǎn)描述模塊,對(duì)象既可以是“客戶(hù)”,也可以是“服務(wù)器”,它可自由地分布于計(jì)算機(jī)網(wǎng)絡(luò)上。通過(guò)CORBA,對(duì)象可網(wǎng)絡(luò)透明地相互訪問(wèn),CORBA屏蔽了位置信息和計(jì)算機(jī)的軟硬件環(huán)境,因此,CORBA建立了一個(gè)統(tǒng)一的分布式軟件開(kāi)發(fā)平臺(tái)。

2. 代理機(jī)制的中間件——對(duì)象請(qǐng)求中介(Object Request Broker,簡(jiǎn)稱(chēng)ORB)

作為一種構(gòu)件技術(shù),CORBA要解決的另一個(gè)重要問(wèn)題是二進(jìn)制代碼之間的互操作問(wèn)題。

不同于COM/DCOM技術(shù),CORBA提供了一種中間的代理機(jī)制,將構(gòu)件的接口與構(gòu)件的實(shí)現(xiàn)分離開(kāi)了。服務(wù)對(duì)象實(shí)現(xiàn)后,就將其接口登記在CORBA的代理中,客戶(hù)對(duì)象按照代理中的接口描述訪問(wèn)服務(wù)對(duì)象,而不關(guān)心服務(wù)對(duì)象使用什么語(yǔ)言、在什么地方、在什么軟硬件環(huán)境下實(shí)現(xiàn)的。這些工作都由代理自動(dòng)地、透明地為客戶(hù)對(duì)象完成。這種機(jī)制還可提供客戶(hù)與服務(wù)器之間動(dòng)態(tài)匹配、一個(gè)服務(wù)器為多個(gè)客戶(hù)服務(wù)等功能。

ORB提供的機(jī)制是良好的,也提供了足以使客戶(hù)和服務(wù)器通信的服務(wù),但這些服務(wù)是很低級(jí)的。用戶(hù)要熟練地掌握它們不是一件容易的事情,而且這些繁鎖的過(guò)程經(jīng)常重復(fù)。因此,CORBA對(duì)經(jīng)常使用的服務(wù)封裝內(nèi)部的細(xì)節(jié),提供簡(jiǎn)化用戶(hù)使用的、方便的、標(biāo)準(zhǔn)的對(duì)象服務(wù)。對(duì)象服務(wù)是CORBA非常重要的一部分,是對(duì)ORB功能的擴(kuò)充和補(bǔ)充。CORBA提供的15種服務(wù)可分為三大類(lèi):分布式系統(tǒng)相關(guān)的服務(wù),如命名服務(wù)、事件服務(wù)、安全性服務(wù)和交易器服務(wù);數(shù)據(jù)庫(kù)相關(guān)的服務(wù),如事務(wù)處理、屬性、集合、關(guān)系、查詢(xún)、持久性、外表化、并發(fā)等服務(wù);一般服務(wù),如生命期、計(jì)時(shí)、特許等服務(wù)。大多數(shù)應(yīng)用都是在這些服務(wù)的基礎(chǔ)上建立的。

公共設(shè)施是CORBA提供的另一種比對(duì)象服務(wù)更高一層的框架服務(wù)。它是特定應(yīng)用領(lǐng)域的框架復(fù)用,如復(fù)合文檔構(gòu)件設(shè)施等。CORBA的公共設(shè)施還很少,還有大量的設(shè)施需要集成,如圖形系統(tǒng)、移動(dòng)代理等。

CORBA沒(méi)有定義二進(jìn)制代碼的標(biāo)準(zhǔn),而是在高層定義了一個(gè)標(biāo)準(zhǔn)的接口描述語(yǔ)言IDL,并通過(guò)擴(kuò)展機(jī)制提供各種語(yǔ)言到IDL之間的映射,以IDL為中間的橋梁,達(dá)到各種語(yǔ)言之間的互操作。

● 三種構(gòu)件模型的特點(diǎn)

COM是一種二進(jìn)制標(biāo)準(zhǔn)的構(gòu)件技術(shù),它實(shí)現(xiàn)簡(jiǎn)單、實(shí)用,但要完成真正意義的、獨(dú)立于硬件和操作系統(tǒng)的二進(jìn)制標(biāo)準(zhǔn),還有大量的工作要做。目前,COM還只是Microsoft環(huán)境下的二進(jìn)制標(biāo)準(zhǔn)。

CORBA是一種以IDL為橋梁、基于ORB的中間件的構(gòu)件技術(shù)。它是以IDL為標(biāo)準(zhǔn)的,與實(shí)現(xiàn)構(gòu)件接口的語(yǔ)言、軟件平臺(tái)和硬件平臺(tái)無(wú)關(guān)。但它卻無(wú)法支持Internet上大量的移動(dòng)計(jì)算的需求,一個(gè)構(gòu)件的實(shí)現(xiàn)是與軟硬件平臺(tái)相關(guān)的,即一個(gè)構(gòu)件的實(shí)現(xiàn)是不能在網(wǎng)上移動(dòng)的。

JavaBean是一種能提供在網(wǎng)上移動(dòng)的構(gòu)件技術(shù),它通過(guò)bytecode技術(shù),提供在“任何地方運(yùn)行,任何地方重用”的功能,但它卻是與語(yǔ)言相關(guān)的。

從軟件體系結(jié)構(gòu)的角度看,構(gòu)件技術(shù)中的構(gòu)件只是提供一個(gè)軟件模塊的實(shí)現(xiàn),作為一個(gè)軟件系統(tǒng),它還需要連接子(connector)將軟件模塊組織成一個(gè)整體。有各種各樣組織軟件模塊的形式:管道和過(guò)濾器、層次、基于事件的隱式調(diào)用等等。管道和過(guò)濾器模型最容易實(shí)現(xiàn)軟件模塊的集成,但只能處理簡(jiǎn)單的、流式的應(yīng)用,沒(méi)有普遍性。層次模型可提供不同級(jí)別的抽象,但層與層之間存在著緊密的耦合,而且,這種模型也沒(méi)有普遍性?;谑录碾[式調(diào)用的方式是,構(gòu)件向系統(tǒng)發(fā)出請(qǐng)求,已經(jīng)向系統(tǒng)注冊(cè)響應(yīng)該事件的構(gòu)件就響應(yīng)該事件。這種模型將調(diào)用者和被調(diào)用者徹底地分開(kāi),這種軟件體系結(jié)構(gòu)模型具有很強(qiáng)的靈活性,也具有通用性。

構(gòu)件技術(shù)的初衷是為了能充分地利用在各種環(huán)境下,用各種程序設(shè)計(jì)語(yǔ)言開(kāi)發(fā)的軟件模塊而提出的一種二進(jìn)制代碼級(jí)的軟件復(fù)用技術(shù)。通過(guò)接口這種不依賴(lài)于具體語(yǔ)言的中性機(jī)制,使各種語(yǔ)言之間可以互操作,也就是說(shuō)一種語(yǔ)言可通過(guò)接口訪問(wèn)另一種語(yǔ)言開(kāi)發(fā)的軟件,而不需要移植工作,這大大地提高了軟件的復(fù)用程度。

軟件復(fù)用技術(shù)

軟件復(fù)用就是將已有的軟件成分用于構(gòu)造新的軟件系統(tǒng)??梢员粡?fù)用的軟件成分一般稱(chēng)作可復(fù)用構(gòu)件,無(wú)論對(duì)可復(fù)用構(gòu)件原封不動(dòng)地使用還是作適當(dāng)?shù)男薷暮笤偈褂?,只要是用?lái)構(gòu)造新軟件,則都可稱(chēng)作復(fù)用。軟件復(fù)用不僅僅是對(duì)程序的復(fù)用,它還包括對(duì)軟件生產(chǎn)過(guò)程中任何活動(dòng)所產(chǎn)生的制成品的復(fù)用。但如果是在一個(gè)系統(tǒng)中多次使用一個(gè)相同的軟件成分,則不稱(chēng)作復(fù)用,而稱(chēng)作共享;對(duì)一個(gè)軟件進(jìn)行修改,使它運(yùn)行于新的軟硬件平臺(tái)也不稱(chēng)作復(fù)用,而稱(chēng)作軟件移值。

● 軟件復(fù)用級(jí)別

未來(lái)最有可能產(chǎn)生顯著效益的復(fù)用是對(duì)軟件生命周期中一些主要開(kāi)發(fā)階段的軟件制品的復(fù)用,按抽象程度的高低,可以劃分為如下的復(fù)用級(jí)別:

1.代碼的復(fù)用

包括目標(biāo)代碼和源代碼的復(fù)用。其中目標(biāo)代碼的復(fù)用級(jí)別最低,歷史也最久,當(dāng)前大部分編程語(yǔ)言的運(yùn)行支持系統(tǒng)都提供了連接(Link)、綁定(Binding)等功能來(lái)支持這種復(fù)用。源代碼的復(fù)用級(jí)別略高于目標(biāo)代碼的復(fù)用,程序員在編程時(shí)把一些想復(fù)用的代碼段復(fù)制到自己的程序中,但這樣往往會(huì)產(chǎn)生一些新舊代碼不匹配的錯(cuò)誤。想大規(guī)模實(shí)現(xiàn)源程序的復(fù)用只有依靠含有大量可復(fù)用構(gòu)件的構(gòu)件庫(kù)。如“對(duì)象鏈接及嵌入”(OLE)技術(shù),既支持在源程序級(jí)定義構(gòu)件并用以構(gòu)造新的系統(tǒng),又使這些構(gòu)件在目標(biāo)代碼的級(jí)別上仍然是一些獨(dú)立的可復(fù)用構(gòu)件,能夠在運(yùn)行時(shí)被靈活地重新組合為各種不同的應(yīng)用。

2.設(shè)計(jì)的復(fù)用

設(shè)計(jì)結(jié)果比源程序的抽象級(jí)別更高,因此它的復(fù)用受實(shí)現(xiàn)環(huán)境的影響較少,從而使可復(fù)用構(gòu)件被復(fù)用的機(jī)會(huì)更多,并且所需的修改更少。這種復(fù)用有三種途徑:第一種途徑是從現(xiàn)有系統(tǒng)的設(shè)計(jì)結(jié)果中提取一些可復(fù)用的設(shè)計(jì)構(gòu)件,并把這些構(gòu)件應(yīng)用于新系統(tǒng)的設(shè)計(jì);第二種途徑是把一個(gè)現(xiàn)有系統(tǒng)的全部設(shè)計(jì)文檔在新的軟硬件平臺(tái)上重新實(shí)現(xiàn),也就是把一個(gè)設(shè)計(jì)運(yùn)用于多個(gè)具體的實(shí)現(xiàn);第三種途徑是獨(dú)立于任何具體的應(yīng)用,有計(jì)劃地開(kāi)發(fā)一些可復(fù)用的設(shè)計(jì)構(gòu)件。

3.分析的復(fù)用

這是比設(shè)計(jì)結(jié)果更高級(jí)別的復(fù)用,可復(fù)用的分析構(gòu)件是針對(duì)問(wèn)題域的某些事物或某些問(wèn)題的抽象程度更高的解法,受設(shè)計(jì)技術(shù)及實(shí)現(xiàn)條件的影響很少,所以可復(fù)用的機(jī)會(huì)更大。復(fù)用的途徑也有三種,即從現(xiàn)有系統(tǒng)的分析結(jié)果中提取可復(fù)用構(gòu)件用于新系統(tǒng)的分析;用一份完整的分析文檔作輸入產(chǎn)生針對(duì)不同軟硬件平臺(tái)和其他實(shí)現(xiàn)條件的多項(xiàng)設(shè)計(jì);獨(dú)立于具體應(yīng)用,專(zhuān)門(mén)開(kāi)發(fā)一些可復(fù)用的分析構(gòu)件。

4.測(cè)試信息的復(fù)用

主要包括測(cè)試用例的復(fù)用和測(cè)試過(guò)程信息的復(fù)用。前者是把一個(gè)軟件的測(cè)試用例在新的軟件測(cè)試中使用,或者在軟件作出修改時(shí)在新的一輪測(cè)試中使用。后者是在測(cè)試過(guò)程中通過(guò)軟件工具自動(dòng)地記錄測(cè)試的過(guò)程信息,包括測(cè)試員的每一個(gè)操作、輸入?yún)?shù)、測(cè)試用例及運(yùn)行環(huán)境等一切信息。這種復(fù)用的級(jí)別不便和分析、設(shè)計(jì)、編程的復(fù)用級(jí)別作準(zhǔn)確的比較,因?yàn)楸粡?fù)用的不是同一事物的不同抽象層次,而是另一種信息,但從這些信息的形態(tài)看,大體處于與程序代碼相當(dāng)?shù)募?jí)別。

由于軟件生產(chǎn)過(guò)程主要是正向過(guò)程,即大部分軟件的生產(chǎn)過(guò)程是使軟件產(chǎn)品從抽象級(jí)別較高的形態(tài)向抽象級(jí)別較低的形態(tài)演化,所以較高級(jí)別的復(fù)用容易帶動(dòng)較低級(jí)別的復(fù)用,因而復(fù)用的級(jí)別越高,可得到的回報(bào)也越大,因此分析結(jié)果和設(shè)計(jì)結(jié)果在目前很受重視。用戶(hù)可購(gòu)買(mǎi)生產(chǎn)商的分析件和設(shè)計(jì)件,自己設(shè)計(jì)或編程,掌握系統(tǒng)的剪裁、擴(kuò)充、維護(hù)、演化等活動(dòng)。

● 軟件復(fù)用的困難

軟件復(fù)用各方面的困難,無(wú)論是技術(shù)問(wèn)題還是非技術(shù)問(wèn)題,都影響著軟件復(fù)用的廣泛實(shí)行。

首先構(gòu)件與應(yīng)用系統(tǒng)之間的存在差異。一些開(kāi)發(fā)者開(kāi)發(fā)的構(gòu)件,要做到在被另一些人開(kāi)發(fā)的系統(tǒng)中使用時(shí)正好合適,從內(nèi)容到對(duì)外接口都恰好相符,或者作很少的修改,這不是一件簡(jiǎn)單的事。

其次構(gòu)件要達(dá)到一定的數(shù)量,才能支持有效的復(fù)用,而大量構(gòu)件的獲得需要有很高的投入和長(zhǎng)期的積累;當(dāng)構(gòu)件達(dá)到較大的數(shù)量時(shí),使用者要從中找到一個(gè)自己想要的構(gòu)件,并斷定它確實(shí)是自己需要的,也不是一件輕而易舉的事;基于復(fù)用的軟件開(kāi)發(fā)方法和軟件過(guò)程是一個(gè)新的研究實(shí)踐領(lǐng)域,需要一些新的理論、技術(shù)及支持環(huán)境,目前這方面的研究成果和實(shí)踐經(jīng)驗(yàn)都不夠充分。

最后,人的因素、管理因素、教育因素、法律因素等等都使軟件的復(fù)用更為困難。

●面向?qū)ο蠓椒▽?duì)軟件復(fù)用的支持

支持軟件復(fù)用是人們對(duì)面向?qū)ο蠓椒耐械闹饕M?,也是這種方法受到廣泛重視的主要原因之一。面向?qū)ο蠓椒ㄖ蕴貏e有利于軟件復(fù)用,是由于它的主要概念及原則與軟件復(fù)用的要求十分吻合。

面向?qū)ο蠓椒◤拿嫦驅(qū)ο蟮木幊贪l(fā)展到面向?qū)ο蟮姆治雠c設(shè)計(jì),使這種方法支持軟件復(fù)用的固有特征能夠從軟件生命周期的前期階段開(kāi)始發(fā)揮作用,從而使面向?qū)ο蠓椒▽?duì)軟件復(fù)用的支持達(dá)到了較高的級(jí)別。與其他軟件工程方法相比,面向?qū)ο蠓椒ǖ囊粋€(gè)重要優(yōu)點(diǎn)是,它可以在整個(gè)軟件生命周期達(dá)到概念、原則、術(shù)語(yǔ)及表示法的高度一致。這種一致性使得各個(gè)系統(tǒng)成分盡管在不同的開(kāi)發(fā)與演化階段有不同的形態(tài),但可具有貫穿整個(gè)軟件生命周期的良好映射。這一優(yōu)點(diǎn)使面向?qū)ο蠓椒ú坏茉诟鱾€(gè)級(jí)別支持軟件復(fù)用,而且能對(duì)各個(gè)級(jí)別的復(fù)用形成統(tǒng)一的、高效的支持,達(dá)到良好的全局效果。做到這一點(diǎn)的必要條件是,從面向?qū)ο筌浖_(kāi)發(fā)的前期階段——面向?qū)ο蠓治鼍桶阎С周浖?fù)用作為一個(gè)重點(diǎn)問(wèn)題來(lái)考慮。運(yùn)用面向?qū)ο蠓治龇椒ㄋx的對(duì)象類(lèi)具有適合作為可復(fù)用構(gòu)件的許多特征,面向?qū)ο蠓治鼋Y(jié)果對(duì)問(wèn)題域的良好映射,使同類(lèi)系統(tǒng)的開(kāi)發(fā)者容易從問(wèn)題出發(fā),在已有的面向?qū)ο蠓治鼋Y(jié)果中發(fā)現(xiàn)不同粒度的可復(fù)用構(gòu)件。

●復(fù)用技術(shù)對(duì)面向?qū)ο蠓椒ǖ闹С?

面向?qū)ο蟮能浖_(kāi)發(fā)和軟件復(fù)用之間的關(guān)系是相輔相成的。一方面,面向?qū)ο蠓椒ǖ幕靖拍?、原則與技術(shù)提供了實(shí)現(xiàn)軟件復(fù)用的有利條件;另一方面,軟件復(fù)用技術(shù)也對(duì)面向?qū)ο蟮能浖_(kāi)發(fā)提供了有力的支持。

1.類(lèi)庫(kù)

在面向?qū)ο蟮能浖_(kāi)發(fā)中,類(lèi)庫(kù)是實(shí)現(xiàn)對(duì)象類(lèi)復(fù)用的基本條件。人們己經(jīng)開(kāi)發(fā)了許多基于各種OOPL的編程類(lèi)庫(kù),有力地支持了源程序級(jí)的軟件復(fù)用,但要在更高的級(jí)別上實(shí)現(xiàn)軟件復(fù)用,僅有編程類(lèi)庫(kù)是不夠的。實(shí)現(xiàn)面向?qū)ο蠓治鼋Y(jié)果和面向?qū)ο笤O(shè)計(jì)結(jié)果的復(fù)用,必須有分析類(lèi)庫(kù)和設(shè)計(jì)類(lèi)庫(kù)的支持。為了更好地支持多個(gè)級(jí)別的軟件復(fù)用,可以在面向?qū)ο蠓治鲱?lèi)庫(kù)、面向?qū)ο笤O(shè)計(jì)類(lèi)庫(kù)和面向?qū)ο缶幊填?lèi)庫(kù)之間建立各個(gè)類(lèi)在不同開(kāi)發(fā)階段的對(duì)應(yīng)與演化關(guān)系。即建立一種線索,表明每個(gè)面向?qū)ο蠓治龅念?lèi)對(duì)應(yīng)著哪個(gè)(或哪些)面向?qū)ο笤O(shè)計(jì)類(lèi),以及每個(gè)面向?qū)ο笤O(shè)計(jì)類(lèi)對(duì)應(yīng)著各種面向?qū)ο缶幊陶Z(yǔ)言類(lèi)庫(kù)中的哪個(gè)面向?qū)ο缶幊填?lèi)。

2.構(gòu)件庫(kù)

類(lèi)庫(kù)可以看作一種特殊的可復(fù)用構(gòu)件庫(kù),它為在面向?qū)ο蟮能浖_(kāi)發(fā)中實(shí)現(xiàn)軟件復(fù)用提供了一種基本的支持。但類(lèi)庫(kù)只能存儲(chǔ)和管理以類(lèi)為單位的可復(fù)用構(gòu)件,不能保存其他形式的構(gòu)件;但是它可以更多地保持類(lèi)構(gòu)件之間的結(jié)構(gòu)與連接關(guān)系。構(gòu)件庫(kù)中的可復(fù)用構(gòu)件,既可以是類(lèi),也可以是其他系統(tǒng)單位;其組織方式,可以不考慮對(duì)象類(lèi)特有的各種關(guān)系,只按一般的構(gòu)件描述、分類(lèi)及檢索方法進(jìn)行組織。在面向?qū)ο蟮能浖_(kāi)發(fā)中,可以提煉比對(duì)象類(lèi)粒度更大的可復(fù)用構(gòu)件,例如把某些結(jié)構(gòu)或某些主題作為可復(fù)用構(gòu)件;也可以提煉其他形式的構(gòu)件,例如use case 或交互圖。這些構(gòu)件庫(kù)中,構(gòu)件的形式及內(nèi)容比類(lèi)庫(kù)更豐富,可為面向?qū)ο蟮能浖_(kāi)發(fā)擔(dān)供更強(qiáng)的支持。

3.工具

有效地實(shí)行軟件復(fù)用需要有一些支持復(fù)用的軟件工具,包括類(lèi)庫(kù)或構(gòu)件/構(gòu)架庫(kù)的管理、維護(hù)與瀏覽工具,構(gòu)件提取及描述工具,以及構(gòu)件檢索工具等等。以復(fù)用支持為背景的面向?qū)ο蠓治龉ぞ吆兔嫦驅(qū)ο笤O(shè)計(jì)工具在設(shè)計(jì)上也有相應(yīng)的要求,工具對(duì)面向?qū)ο蠓治?面向?qū)ο笤O(shè)計(jì)過(guò)程的支持功能應(yīng)包括:從類(lèi)庫(kù)或構(gòu)件/構(gòu)架庫(kù)中尋找可復(fù)用構(gòu)件;對(duì)構(gòu)件進(jìn)行修改,并加入當(dāng)前的系統(tǒng)模型;把當(dāng)前系統(tǒng)開(kāi)發(fā)中新定義的類(lèi)(或其它構(gòu)件)提交到類(lèi)庫(kù)(或構(gòu)件庫(kù))。 (ccw)

發(fā)布:2007-04-22 10:01    編輯:泛普軟件 · xiaona    [打印此頁(yè)]    [關(guān)閉]
相關(guān)文章:
南昌OA系統(tǒng)
聯(lián)系方式

成都公司:成都市成華區(qū)建設(shè)南路160號(hào)1層9號(hào)

重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓

咨詢(xún):400-8352-114

加微信,免費(fèi)獲取試用系統(tǒng)

QQ在線咨詢(xún)

泛普南昌OA信息化其他應(yīng)用

南昌OA軟件 南昌OA新聞動(dòng)態(tài) 南昌OA信息化 南昌OA快博 南昌OA行業(yè)資訊 南昌軟件開(kāi)發(fā)公司 南昌門(mén)禁系統(tǒng) 南昌物業(yè)管理軟件 南昌倉(cāng)庫(kù)管理軟件 南昌餐飲管理軟件 南昌網(wǎng)站建設(shè)公司