當(dāng)前位置:工程項目OA系統(tǒng) > 泛普各地 > 江西OA系統(tǒng) > 南昌OA系統(tǒng) > 南昌OA信息化
主流軟件開發(fā)技術(shù)
當(dāng)前軟件工程領(lǐng)域和軟件產(chǎn)業(yè)界的熱點技術(shù)包括原型開發(fā)方法、C/S與B/S結(jié)構(gòu)、軟件構(gòu)件、軟件復(fù)用等。本文針對這些當(dāng)今軟件開發(fā)的主流技術(shù)加以評述,以期對實際工作做出指導(dǎo)。
原型法
原型法是近年來提出的一種以計算機為基礎(chǔ)的系統(tǒng)開發(fā)方法,利用原型法開發(fā)系統(tǒng)時首先構(gòu)造一個功能簡單的原型系統(tǒng),然后通過對原型系統(tǒng)逐步求精,不斷擴充完善得到最終的軟件系統(tǒng)。
原型就是模型,原型系統(tǒng)就是應(yīng)用系統(tǒng)的模型。它是待開發(fā)的實際系統(tǒng)的縮小比例模型,但是保留了實際系統(tǒng)的大部分性能。這個模型可在運行中被檢查、測試、修改,直到它的性能達(dá)到用戶需求為止,隨之這個工作模型很快就能轉(zhuǎn)換成需要的目標(biāo)系統(tǒng)。
原型法的主要優(yōu)點在于它是一種支持用戶的方法,使得用戶在系統(tǒng)生存周期的設(shè)計階段起到積極的作用,能減少系統(tǒng)開發(fā)的風(fēng)險。特別是在大型項目的開發(fā)中,由于用戶對系統(tǒng)功能認(rèn)識的模糊性,使得對項目需求的分析難以一次完成,往往會造成已完成的項目多次修改,應(yīng)用原型法則會避免這種風(fēng)險。
原型法的概念既適用于系統(tǒng)的重新開發(fā),也適用于對系統(tǒng)的修改;利用原型法開發(fā)系統(tǒng)需要有良好的軟件開發(fā)環(huán)境、工具的支持。原型法也可以與傳統(tǒng)的生命周期方法相結(jié)合使用,以便擴大用戶參與需求分析、初步設(shè)計及詳細(xì)設(shè)計等階段的活動,加深對系統(tǒng)的理解。
微軟公司通常采用“同步-穩(wěn)定產(chǎn)品開發(fā)法”進行項目開發(fā)。典型項目的生命周期包括三個階段:
1. 計劃階段:完成項目的功能說明和進度表的制定;
2. 開發(fā)階段:寫出完整的的源代碼;
3. 穩(wěn)定化階段:完成產(chǎn)品,使之能夠批量生產(chǎn)。
這三大階段以及階段間內(nèi)在的循環(huán)方法與傳統(tǒng)的“瀑布”式開發(fā)方式很不相同,后者是由需求、詳盡設(shè)計、模塊化的代碼設(shè)計與測試、集成測試以及系統(tǒng)測試組成的。而微軟的三個階段更像是風(fēng)險驅(qū)動的、漸進的“螺旋”式的生命周期模型。
構(gòu)造原型是在計劃階段具體說明一件新產(chǎn)品或一個新版本的最好方法,這從許多方面來說特別是在系統(tǒng)可用性方面都使開發(fā)前測試成為可能,并且有助于對與用戶交互情況做出良好的理解,同時也能使產(chǎn)品說明更加緊湊。
微軟的開發(fā)人員通常采用VB構(gòu)造用戶界面原型,對于構(gòu)造計算機屏幕模型之類的工作,畫筆(Paintbrush)也是一個很好用的工具。通過原型法可以使死板的說明變成有生命的文件。
C/S與B/S結(jié)構(gòu)
管理信息系統(tǒng)平臺模式大體上分為四種:主機終端模式、文件服務(wù)器模式、C/S模式和B/S模式。主機終端模式由于硬件選擇有限,硬件投資得不到保證,已被逐步淘汰。而文件服務(wù)器模式只適用小規(guī)模的局域網(wǎng),對于用戶多、數(shù)據(jù)量大的情況就會產(chǎn)生網(wǎng)絡(luò)瓶頸,特別是在互聯(lián)網(wǎng)上不能滿足用戶要求。因此,現(xiàn)代企業(yè)管理信息系統(tǒng)平臺模式應(yīng)主要考慮C/S模式和B/S模式。
● C/S結(jié)構(gòu)
兩層結(jié)構(gòu)的C/S(Client/ Server)模式在上個世紀(jì)八九十年代得到大量的應(yīng)用。C/S結(jié)構(gòu)由兩部分構(gòu)成:前端是客戶機,通常是PC;后端是服務(wù)器,運行數(shù)據(jù)庫管理系統(tǒng),提供數(shù)據(jù)庫的查詢和管理。
但兩層的C/S結(jié)構(gòu)存在以下幾個局限:它是單一服務(wù)器且以局域網(wǎng)為中心的,所以難以擴展至大型企業(yè)廣域網(wǎng)或Internet;受限于供應(yīng)商;軟、硬件的組合及集成能力有限;難以管理大量的客戶機。
因此,三層C/S結(jié)構(gòu)應(yīng)運而生。三層結(jié)構(gòu)的C/S模式是伴隨著中間件技術(shù)的成熟而興起的,核心思想是利用中間件將應(yīng)用分為表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)存儲層三個不同的處理層次。三個層次的劃分是從邏輯上來分的,具體的物理分法可以有多種形式。
三層C/S結(jié)構(gòu)具有以下優(yōu)點:具有靈活的硬件系統(tǒng)構(gòu)成;提高程序的可維護性;利于變更和維護應(yīng)用技術(shù)規(guī)范;進行嚴(yán)密的安全管理;越關(guān)鍵的應(yīng)用,用戶的識別和存取權(quán)限設(shè)定愈重要。
● B/S結(jié)構(gòu)
基于Web的B/S(Browser/ Server)方式其實也是一種客戶機/服務(wù)器模式,只不過它的客戶端是瀏覽器。
B/S結(jié)構(gòu)中處于第一層的是客戶端,處于第二層的是應(yīng)用服務(wù)器,由一臺或者多臺服務(wù)器組成,該層具有良好的可擴充性,可以隨著應(yīng)用的需要增加服務(wù)器的數(shù)目。處于第三層的是數(shù)據(jù)層,由數(shù)據(jù)庫系統(tǒng)和遺留系統(tǒng)組成。
B/S的優(yōu)勢在于:簡化了客戶端;簡化了系統(tǒng)的開發(fā)和維護;用戶操作變得更簡單;適用于網(wǎng)上信息發(fā)布。
軟件構(gòu)件技術(shù)
所謂軟件構(gòu)件化,就是要讓軟件開發(fā)像機械制造工業(yè)一樣,可以用各種標(biāo)準(zhǔn)和非標(biāo)準(zhǔn)的零件來進行組裝。軟件的構(gòu)件化和集成技術(shù)的目標(biāo)是:軟件系統(tǒng)可以由不同廠商提供的,用不同語言開發(fā)的,在不同硬件平臺上實現(xiàn)的軟件構(gòu)件,方便地、動態(tài)地集成。這些構(gòu)件要求能互操作,它們可以放在本地的計算機上,也可以分布式地放置在網(wǎng)上異構(gòu)環(huán)境下的不同結(jié)點上。
面向?qū)ο蟮姆椒ê图夹g(shù)是繼結(jié)構(gòu)化方法之后出現(xiàn)的、最有代表性的軟件開發(fā)方法,是當(dāng)今軟件開發(fā)的主流技術(shù)。但是,面向?qū)ο笏峁┑膬?yōu)點主要是針對分析、設(shè)計和源代碼等軟件開發(fā)階段的,當(dāng)一個面向?qū)ο蟮拇a經(jīng)過編譯、連接后得到的可執(zhí)行軟件則是不可改變的、無法重用的。
因此,我們需要一種新的、不依賴于某種特定語言的、在二進制代碼級可復(fù)用的軟件“對象”,這種“對象”就是構(gòu)件(Component)。
構(gòu)件技術(shù)是一種軟件實現(xiàn)的技術(shù)和方法,是對面向?qū)ο蠓椒ㄔ诙M制代碼級的完善和補充。構(gòu)件是由接口構(gòu)成的,它把接口和接口的實現(xiàn)分離開了。接口是獨立于語言的一種描述,它將內(nèi)部的實現(xiàn)以及接口到實現(xiàn)的映射都封裝起來了,外界只能通過接口描述使用構(gòu)件。因此,接口用哪種語言實現(xiàn)也就無關(guān)緊要了。
在現(xiàn)有的軟件市場上,有三種代表性的構(gòu)件技術(shù)流派,它們分別是COM(Component Object Model,對象構(gòu)件模型)、JavaBean和CORBA(the Common Object Request Broker Architecture,公共對象請求代理體系結(jié)構(gòu))。它們是由不同的機構(gòu)提出的構(gòu)件技術(shù)實現(xiàn)模型和標(biāo)準(zhǔn),各有優(yōu)缺點。
● COM
COM是由Microsoft公司推出的構(gòu)件接口標(biāo)準(zhǔn),是軟件構(gòu)件相互通信的一種方式,它是一種二進制和網(wǎng)絡(luò)標(biāo)準(zhǔn),允許任意兩個組件互相通信。目前已有大量的基于COM的構(gòu)件可供復(fù)用,原則上講,這些構(gòu)件可以建立在任何環(huán)境下,但現(xiàn)有的COM構(gòu)件大多都依賴于Microsoft環(huán)境,在Unix、Macintosh等其他操作系統(tǒng)環(huán)境下可復(fù)用的構(gòu)件還很少,Microsoft公司正在努力開發(fā)更多的在其他操作系統(tǒng)環(huán)境下的COM構(gòu)件。
傳統(tǒng)的應(yīng)用程序在源代碼級可被分割為文件、模塊、類或函數(shù)等,以便于實施、修改和維護,但經(jīng)編譯、鏈接以后就生成了不可改變的二進制可執(zhí)行代碼,采用COM技術(shù)產(chǎn)生的源代碼則不同。
一個COM構(gòu)件是由若干個接口組成的,而一個接口則是由若干個函數(shù)的說明組成的。COM是一個二進制標(biāo)準(zhǔn),即接口編譯以后生成的二進制代碼的結(jié)構(gòu)要滿足一定的內(nèi)存塊結(jié)構(gòu)。該內(nèi)存塊結(jié)構(gòu)是不依賴于任何語言的。圖1表示一個擁有Fun1和Fun2函數(shù)的IX接口的內(nèi)存塊結(jié)構(gòu)。
其中,pIX是指向IX接口的指針,通過vtbl指針(接口指針)指向接口中函數(shù)的指針數(shù)組(稱為v表),v表中的元素是指向接口中函數(shù)實現(xiàn)的指針。后面我們將會看到函數(shù)指針在用代理-存根機制實現(xiàn)進程間、計算機間的接口調(diào)用時指向相應(yīng)的代理。
任何語言的語法成分,只要其編譯后的目標(biāo)代碼在結(jié)構(gòu)滿足圖1的二進制形式結(jié)構(gòu),就稱其為該構(gòu)件接口的一個實現(xiàn)。通常情況下,大多數(shù)程序設(shè)計語言和其COM支持工具都能將相應(yīng)的語法自動地映射為這樣的結(jié)構(gòu),無需程序員做更多的工作。
COM是一個二進制標(biāo)準(zhǔn)。由于任何語言都要翻譯成二進制機器代碼才能最后執(zhí)行,所以COM可以作為各種高級語言的中間橋梁,使它們可以互操作;按COM標(biāo)準(zhǔn)實現(xiàn)的軟件也可以被所有的語言環(huán)境所共享。共享人類開發(fā)的、豐富的軟件資源是提出的COM的最初動機。
● JavaBean
目前的COM技術(shù)主要是針對PC市場的不依賴于語言的軟件構(gòu)件技術(shù),而JavaBean則是針對解決平臺依賴性和語言依賴性這兩個問題而提出來的軟件構(gòu)件技術(shù)標(biāo)準(zhǔn)。
關(guān)于平臺依賴性問題是其他構(gòu)件標(biāo)準(zhǔn)普遍存在的問題。盡管其他構(gòu)件標(biāo)準(zhǔn)的接口是惟一的,即使用構(gòu)件的方式是惟一的,但一個構(gòu)件一旦在某種運行環(huán)境下實現(xiàn)就很難直接在另一種運行環(huán)境被復(fù)用。而這種平臺依賴性問題對進一步提高軟件復(fù)用力度卻是至關(guān)重要的。
由于Java本身在全球軟件界的影響,特別是Java獨立于平臺的、適宜于在Internet、易于構(gòu)造B/S應(yīng)用等等特點,Javasoft公司利用Java特殊的byteCode機制,很好地解決了其他構(gòu)件標(biāo)準(zhǔn)難以解決的平臺依賴性問題,推出了它們自己的構(gòu)件接口標(biāo)準(zhǔn)JavaBean。正像JavaSoft所描述的JavaBean是“一次性編寫,在任意地方可運行,在任意地方可重用”。
JavaBean的構(gòu)件模型主要包括:構(gòu)件和容器。模型的其他部分還包括事件處理、持續(xù)性、布局以及應(yīng)用程序建立器(一種可視化的工具)等,這些都是通過JavaBean構(gòu)件的標(biāo)準(zhǔn)接口實現(xiàn)的。
JavaBean構(gòu)件有時也稱為JavaBean或Bean。它是由接口構(gòu)成的,接口是由方法組成的。容器能夠使構(gòu)件組合在一起并相互作用。這種機制主要是為了界面構(gòu)件提出的,它本身也是一個構(gòu)件,以便嵌套組合產(chǎn)生復(fù)雜的可視化GUI。JavaBean的主要特征為:
1. 屬性管理
根據(jù)屬性的使用類型可將其分為:一般屬性、索引屬性、依附屬性和約束屬性,通過一些標(biāo)準(zhǔn)的命名約定定義它們相應(yīng)的訪問方法,使JavaBean API能用統(tǒng)一的方式對屬性進行管理。其中,依附屬性是基于自身值的變化而向感興趣的部分提供通知的屬性。約束屬性是一種在接收更改之前能使感興趣的部分對新屬性值執(zhí)行有效檢查的屬性。
2. 內(nèi)省功能
內(nèi)省功能是構(gòu)件的內(nèi)部結(jié)構(gòu)(屬性、方法和事件)展現(xiàn)給外部的機制。不同于COM,JavaBean不需要構(gòu)件開發(fā)者開發(fā)這種額外的工作,它只需要開發(fā)者對構(gòu)件的屬性、方法和事件的命名和類型符號遵守一個約定,通過標(biāo)準(zhǔn)的JavaBean API就可了解到bean的任何內(nèi)部信息。
JavaBean的事件處理模型是基于現(xiàn)存的AWT事件處理模型的。它決定bean如何對它自身狀態(tài)的變化做出反應(yīng),以及決定如何將這些變化傳遞給應(yīng)用程序和其他bean。通過JavaBean API將一個事件接收器(處理某個事件的應(yīng)用程序或其他bean)注冊到該事件上,完成外部對事件的控制。這是將bean組合起來的有效方法。
Java與JavaBean的區(qū)別是:Java是在源代碼級的復(fù)用;而JavaBean是在目標(biāo)代碼級的復(fù)用,并且,通過JavaBean提供的標(biāo)準(zhǔn)接口,為在目標(biāo)代碼級的動態(tài)組裝、版本升級、維護提供保證,并可利用一些相應(yīng)的可視化工具方便、有效地定制JavaBean和建立應(yīng)用程序。
盡管JavaBean是作為一種通用的構(gòu)件模型提出來的,但它更主要地還是為解決可視化構(gòu)件而設(shè)計的一套系統(tǒng),它類似于Microsoft的ActiveX。嚴(yán)格地講,目前的JavaBean在不同語言之間提供的互操作性方面是很弱的,它只是提供了在Java環(huán)境下的二進制代碼共享機制。增強JavaBean與其他構(gòu)件技術(shù)之間的互操作是JavaBean今后發(fā)展的一個主要課題。
● CORBA
CORBA是由OMG(對象管理組)1990年首次為了解決分布式、異質(zhì)的軟件和硬件環(huán)境下對象之間的互操作問題而提出的、基于中間件的構(gòu)件技術(shù)。CORBA有兩個重要的特點:面向?qū)ο蠹夹g(shù)與分布式計算的結(jié)合;代理機制的中間件技術(shù)。
1. 面向?qū)ο笈c分布式技術(shù)的結(jié)合
CORBA是為了解決分布式問題而提出的分布式對象計算模型。利用計算機網(wǎng)絡(luò)進行分布式計算可以共享資源、平衡大型計算的負(fù)載等。但是,傳統(tǒng)的分布式計算模型還不夠成熟:客戶/服務(wù)關(guān)系不靈活、遠(yuǎn)程服務(wù)層次太低、用戶使用不透明。面向?qū)ο笾械膶ο笫且粋€相對獨立的軟件實體,它有自己的內(nèi)部狀態(tài)和清晰的對外接口。但傳統(tǒng)的面向?qū)ο竽P偷膶崿F(xiàn),只能在單計算機上進行。CORBA將這兩者有機地結(jié)合起來了。在CORBA中,對象是分布式計算模型中理想的節(jié)點描述模塊,對象既可以是“客戶”,也可以是“服務(wù)器”,它可自由地分布于計算機網(wǎng)絡(luò)上。通過CORBA,對象可網(wǎng)絡(luò)透明地相互訪問,CORBA屏蔽了位置信息和計算機的軟硬件環(huán)境,因此,CORBA建立了一個統(tǒng)一的分布式軟件開發(fā)平臺。
2. 代理機制的中間件——對象請求中介(Object Request Broker,簡稱ORB)
作為一種構(gòu)件技術(shù),CORBA要解決的另一個重要問題是二進制代碼之間的互操作問題。
不同于COM/DCOM技術(shù),CORBA提供了一種中間的代理機制,將構(gòu)件的接口與構(gòu)件的實現(xiàn)分離開了。服務(wù)對象實現(xiàn)后,就將其接口登記在CORBA的代理中,客戶對象按照代理中的接口描述訪問服務(wù)對象,而不關(guān)心服務(wù)對象使用什么語言、在什么地方、在什么軟硬件環(huán)境下實現(xiàn)的。這些工作都由代理自動地、透明地為客戶對象完成。這種機制還可提供客戶與服務(wù)器之間動態(tài)匹配、一個服務(wù)器為多個客戶服務(wù)等功能。
ORB提供的機制是良好的,也提供了足以使客戶和服務(wù)器通信的服務(wù),但這些服務(wù)是很低級的。用戶要熟練地掌握它們不是一件容易的事情,而且這些繁鎖的過程經(jīng)常重復(fù)。因此,CORBA對經(jīng)常使用的服務(wù)封裝內(nèi)部的細(xì)節(jié),提供簡化用戶使用的、方便的、標(biāo)準(zhǔn)的對象服務(wù)。對象服務(wù)是CORBA非常重要的一部分,是對ORB功能的擴充和補充。CORBA提供的15種服務(wù)可分為三大類:分布式系統(tǒng)相關(guān)的服務(wù),如命名服務(wù)、事件服務(wù)、安全性服務(wù)和交易器服務(wù);數(shù)據(jù)庫相關(guān)的服務(wù),如事務(wù)處理、屬性、集合、關(guān)系、查詢、持久性、外表化、并發(fā)等服務(wù);一般服務(wù),如生命期、計時、特許等服務(wù)。大多數(shù)應(yīng)用都是在這些服務(wù)的基礎(chǔ)上建立的。
公共設(shè)施是CORBA提供的另一種比對象服務(wù)更高一層的框架服務(wù)。它是特定應(yīng)用領(lǐng)域的框架復(fù)用,如復(fù)合文檔構(gòu)件設(shè)施等。CORBA的公共設(shè)施還很少,還有大量的設(shè)施需要集成,如圖形系統(tǒng)、移動代理等。
CORBA沒有定義二進制代碼的標(biāo)準(zhǔn),而是在高層定義了一個標(biāo)準(zhǔn)的接口描述語言IDL,并通過擴展機制提供各種語言到IDL之間的映射,以IDL為中間的橋梁,達(dá)到各種語言之間的互操作。
● 三種構(gòu)件模型的特點
COM是一種二進制標(biāo)準(zhǔn)的構(gòu)件技術(shù),它實現(xiàn)簡單、實用,但要完成真正意義的、獨立于硬件和操作系統(tǒng)的二進制標(biāo)準(zhǔn),還有大量的工作要做。目前,COM還只是Microsoft環(huán)境下的二進制標(biāo)準(zhǔn)。
CORBA是一種以IDL為橋梁、基于ORB的中間件的構(gòu)件技術(shù)。它是以IDL為標(biāo)準(zhǔn)的,與實現(xiàn)構(gòu)件接口的語言、軟件平臺和硬件平臺無關(guān)。但它卻無法支持Internet上大量的移動計算的需求,一個構(gòu)件的實現(xiàn)是與軟硬件平臺相關(guān)的,即一個構(gòu)件的實現(xiàn)是不能在網(wǎng)上移動的。
JavaBean是一種能提供在網(wǎng)上移動的構(gòu)件技術(shù),它通過bytecode技術(shù),提供在“任何地方運行,任何地方重用”的功能,但它卻是與語言相關(guān)的。
從軟件體系結(jié)構(gòu)的角度看,構(gòu)件技術(shù)中的構(gòu)件只是提供一個軟件模塊的實現(xiàn),作為一個軟件系統(tǒng),它還需要連接子(connector)將軟件模塊組織成一個整體。有各種各樣組織軟件模塊的形式:管道和過濾器、層次、基于事件的隱式調(diào)用等等。管道和過濾器模型最容易實現(xiàn)軟件模塊的集成,但只能處理簡單的、流式的應(yīng)用,沒有普遍性。層次模型可提供不同級別的抽象,但層與層之間存在著緊密的耦合,而且,這種模型也沒有普遍性。基于事件的隱式調(diào)用的方式是,構(gòu)件向系統(tǒng)發(fā)出請求,已經(jīng)向系統(tǒng)注冊響應(yīng)該事件的構(gòu)件就響應(yīng)該事件。這種模型將調(diào)用者和被調(diào)用者徹底地分開,這種軟件體系結(jié)構(gòu)模型具有很強的靈活性,也具有通用性。
構(gòu)件技術(shù)的初衷是為了能充分地利用在各種環(huán)境下,用各種程序設(shè)計語言開發(fā)的軟件模塊而提出的一種二進制代碼級的軟件復(fù)用技術(shù)。通過接口這種不依賴于具體語言的中性機制,使各種語言之間可以互操作,也就是說一種語言可通過接口訪問另一種語言開發(fā)的軟件,而不需要移植工作,這大大地提高了軟件的復(fù)用程度。
軟件復(fù)用技術(shù)
軟件復(fù)用就是將已有的軟件成分用于構(gòu)造新的軟件系統(tǒng)。可以被復(fù)用的軟件成分一般稱作可復(fù)用構(gòu)件,無論對可復(fù)用構(gòu)件原封不動地使用還是作適當(dāng)?shù)男薷暮笤偈褂茫灰怯脕順?gòu)造新軟件,則都可稱作復(fù)用。軟件復(fù)用不僅僅是對程序的復(fù)用,它還包括對軟件生產(chǎn)過程中任何活動所產(chǎn)生的制成品的復(fù)用。但如果是在一個系統(tǒng)中多次使用一個相同的軟件成分,則不稱作復(fù)用,而稱作共享;對一個軟件進行修改,使它運行于新的軟硬件平臺也不稱作復(fù)用,而稱作軟件移值。
● 軟件復(fù)用級別
未來最有可能產(chǎn)生顯著效益的復(fù)用是對軟件生命周期中一些主要開發(fā)階段的軟件制品的復(fù)用,按抽象程度的高低,可以劃分為如下的復(fù)用級別:
1.代碼的復(fù)用
包括目標(biāo)代碼和源代碼的復(fù)用。其中目標(biāo)代碼的復(fù)用級別最低,歷史也最久,當(dāng)前大部分編程語言的運行支持系統(tǒng)都提供了連接(Link)、綁定(Binding)等功能來支持這種復(fù)用。源代碼的復(fù)用級別略高于目標(biāo)代碼的復(fù)用,程序員在編程時把一些想復(fù)用的代碼段復(fù)制到自己的程序中,但這樣往往會產(chǎn)生一些新舊代碼不匹配的錯誤。想大規(guī)模實現(xiàn)源程序的復(fù)用只有依靠含有大量可復(fù)用構(gòu)件的構(gòu)件庫。如“對象鏈接及嵌入”(OLE)技術(shù),既支持在源程序級定義構(gòu)件并用以構(gòu)造新的系統(tǒng),又使這些構(gòu)件在目標(biāo)代碼的級別上仍然是一些獨立的可復(fù)用構(gòu)件,能夠在運行時被靈活地重新組合為各種不同的應(yīng)用。
2.設(shè)計的復(fù)用
設(shè)計結(jié)果比源程序的抽象級別更高,因此它的復(fù)用受實現(xiàn)環(huán)境的影響較少,從而使可復(fù)用構(gòu)件被復(fù)用的機會更多,并且所需的修改更少。這種復(fù)用有三種途徑:第一種途徑是從現(xiàn)有系統(tǒng)的設(shè)計結(jié)果中提取一些可復(fù)用的設(shè)計構(gòu)件,并把這些構(gòu)件應(yīng)用于新系統(tǒng)的設(shè)計;第二種途徑是把一個現(xiàn)有系統(tǒng)的全部設(shè)計文檔在新的軟硬件平臺上重新實現(xiàn),也就是把一個設(shè)計運用于多個具體的實現(xiàn);第三種途徑是獨立于任何具體的應(yīng)用,有計劃地開發(fā)一些可復(fù)用的設(shè)計構(gòu)件。
3.分析的復(fù)用
這是比設(shè)計結(jié)果更高級別的復(fù)用,可復(fù)用的分析構(gòu)件是針對問題域的某些事物或某些問題的抽象程度更高的解法,受設(shè)計技術(shù)及實現(xiàn)條件的影響很少,所以可復(fù)用的機會更大。復(fù)用的途徑也有三種,即從現(xiàn)有系統(tǒng)的分析結(jié)果中提取可復(fù)用構(gòu)件用于新系統(tǒng)的分析;用一份完整的分析文檔作輸入產(chǎn)生針對不同軟硬件平臺和其他實現(xiàn)條件的多項設(shè)計;獨立于具體應(yīng)用,專門開發(fā)一些可復(fù)用的分析構(gòu)件。
4.測試信息的復(fù)用
主要包括測試用例的復(fù)用和測試過程信息的復(fù)用。前者是把一個軟件的測試用例在新的軟件測試中使用,或者在軟件作出修改時在新的一輪測試中使用。后者是在測試過程中通過軟件工具自動地記錄測試的過程信息,包括測試員的每一個操作、輸入?yún)?shù)、測試用例及運行環(huán)境等一切信息。這種復(fù)用的級別不便和分析、設(shè)計、編程的復(fù)用級別作準(zhǔn)確的比較,因為被復(fù)用的不是同一事物的不同抽象層次,而是另一種信息,但從這些信息的形態(tài)看,大體處于與程序代碼相當(dāng)?shù)募墑e。
由于軟件生產(chǎn)過程主要是正向過程,即大部分軟件的生產(chǎn)過程是使軟件產(chǎn)品從抽象級別較高的形態(tài)向抽象級別較低的形態(tài)演化,所以較高級別的復(fù)用容易帶動較低級別的復(fù)用,因而復(fù)用的級別越高,可得到的回報也越大,因此分析結(jié)果和設(shè)計結(jié)果在目前很受重視。用戶可購買生產(chǎn)商的分析件和設(shè)計件,自己設(shè)計或編程,掌握系統(tǒng)的剪裁、擴充、維護、演化等活動。
● 軟件復(fù)用的困難
軟件復(fù)用各方面的困難,無論是技術(shù)問題還是非技術(shù)問題,都影響著軟件復(fù)用的廣泛實行。
首先構(gòu)件與應(yīng)用系統(tǒng)之間的存在差異。一些開發(fā)者開發(fā)的構(gòu)件,要做到在被另一些人開發(fā)的系統(tǒng)中使用時正好合適,從內(nèi)容到對外接口都恰好相符,或者作很少的修改,這不是一件簡單的事。
其次構(gòu)件要達(dá)到一定的數(shù)量,才能支持有效的復(fù)用,而大量構(gòu)件的獲得需要有很高的投入和長期的積累;當(dāng)構(gòu)件達(dá)到較大的數(shù)量時,使用者要從中找到一個自己想要的構(gòu)件,并斷定它確實是自己需要的,也不是一件輕而易舉的事;基于復(fù)用的軟件開發(fā)方法和軟件過程是一個新的研究實踐領(lǐng)域,需要一些新的理論、技術(shù)及支持環(huán)境,目前這方面的研究成果和實踐經(jīng)驗都不夠充分。
最后,人的因素、管理因素、教育因素、法律因素等等都使軟件的復(fù)用更為困難。
●面向?qū)ο蠓椒▽浖?fù)用的支持
支持軟件復(fù)用是人們對面向?qū)ο蠓椒耐械闹饕M?,也是這種方法受到廣泛重視的主要原因之一。面向?qū)ο蠓椒ㄖ蕴貏e有利于軟件復(fù)用,是由于它的主要概念及原則與軟件復(fù)用的要求十分吻合。
面向?qū)ο蠓椒◤拿嫦驅(qū)ο蟮木幊贪l(fā)展到面向?qū)ο蟮姆治雠c設(shè)計,使這種方法支持軟件復(fù)用的固有特征能夠從軟件生命周期的前期階段開始發(fā)揮作用,從而使面向?qū)ο蠓椒▽浖?fù)用的支持達(dá)到了較高的級別。與其他軟件工程方法相比,面向?qū)ο蠓椒ǖ囊粋€重要優(yōu)點是,它可以在整個軟件生命周期達(dá)到概念、原則、術(shù)語及表示法的高度一致。這種一致性使得各個系統(tǒng)成分盡管在不同的開發(fā)與演化階段有不同的形態(tài),但可具有貫穿整個軟件生命周期的良好映射。這一優(yōu)點使面向?qū)ο蠓椒ú坏茉诟鱾€級別支持軟件復(fù)用,而且能對各個級別的復(fù)用形成統(tǒng)一的、高效的支持,達(dá)到良好的全局效果。做到這一點的必要條件是,從面向?qū)ο筌浖_發(fā)的前期階段——面向?qū)ο蠓治鼍桶阎С周浖?fù)用作為一個重點問題來考慮。運用面向?qū)ο蠓治龇椒ㄋx的對象類具有適合作為可復(fù)用構(gòu)件的許多特征,面向?qū)ο蠓治鼋Y(jié)果對問題域的良好映射,使同類系統(tǒng)的開發(fā)者容易從問題出發(fā),在已有的面向?qū)ο蠓治鼋Y(jié)果中發(fā)現(xiàn)不同粒度的可復(fù)用構(gòu)件。
●復(fù)用技術(shù)對面向?qū)ο蠓椒ǖ闹С?
面向?qū)ο蟮能浖_發(fā)和軟件復(fù)用之間的關(guān)系是相輔相成的。一方面,面向?qū)ο蠓椒ǖ幕靖拍睢⒃瓌t與技術(shù)提供了實現(xiàn)軟件復(fù)用的有利條件;另一方面,軟件復(fù)用技術(shù)也對面向?qū)ο蟮能浖_發(fā)提供了有力的支持。
1.類庫
在面向?qū)ο蟮能浖_發(fā)中,類庫是實現(xiàn)對象類復(fù)用的基本條件。人們己經(jīng)開發(fā)了許多基于各種OOPL的編程類庫,有力地支持了源程序級的軟件復(fù)用,但要在更高的級別上實現(xiàn)軟件復(fù)用,僅有編程類庫是不夠的。實現(xiàn)面向?qū)ο蠓治鼋Y(jié)果和面向?qū)ο笤O(shè)計結(jié)果的復(fù)用,必須有分析類庫和設(shè)計類庫的支持。為了更好地支持多個級別的軟件復(fù)用,可以在面向?qū)ο蠓治鲱悗臁⒚嫦驅(qū)ο笤O(shè)計類庫和面向?qū)ο缶幊填悗熘g建立各個類在不同開發(fā)階段的對應(yīng)與演化關(guān)系。即建立一種線索,表明每個面向?qū)ο蠓治龅念悓?yīng)著哪個(或哪些)面向?qū)ο笤O(shè)計類,以及每個面向?qū)ο笤O(shè)計類對應(yīng)著各種面向?qū)ο缶幊陶Z言類庫中的哪個面向?qū)ο缶幊填悺?
2.構(gòu)件庫
類庫可以看作一種特殊的可復(fù)用構(gòu)件庫,它為在面向?qū)ο蟮能浖_發(fā)中實現(xiàn)軟件復(fù)用提供了一種基本的支持。但類庫只能存儲和管理以類為單位的可復(fù)用構(gòu)件,不能保存其他形式的構(gòu)件;但是它可以更多地保持類構(gòu)件之間的結(jié)構(gòu)與連接關(guān)系。構(gòu)件庫中的可復(fù)用構(gòu)件,既可以是類,也可以是其他系統(tǒng)單位;其組織方式,可以不考慮對象類特有的各種關(guān)系,只按一般的構(gòu)件描述、分類及檢索方法進行組織。在面向?qū)ο蟮能浖_發(fā)中,可以提煉比對象類粒度更大的可復(fù)用構(gòu)件,例如把某些結(jié)構(gòu)或某些主題作為可復(fù)用構(gòu)件;也可以提煉其他形式的構(gòu)件,例如use case 或交互圖。這些構(gòu)件庫中,構(gòu)件的形式及內(nèi)容比類庫更豐富,可為面向?qū)ο蟮能浖_發(fā)擔(dān)供更強的支持。
3.工具
有效地實行軟件復(fù)用需要有一些支持復(fù)用的軟件工具,包括類庫或構(gòu)件/構(gòu)架庫的管理、維護與瀏覽工具,構(gòu)件提取及描述工具,以及構(gòu)件檢索工具等等。以復(fù)用支持為背景的面向?qū)ο蠓治龉ぞ吆兔嫦驅(qū)ο笤O(shè)計工具在設(shè)計上也有相應(yīng)的要求,工具對面向?qū)ο蠓治?面向?qū)ο笤O(shè)計過程的支持功能應(yīng)包括:從類庫或構(gòu)件/構(gòu)架庫中尋找可復(fù)用構(gòu)件;對構(gòu)件進行修改,并加入當(dāng)前的系統(tǒng)模型;把當(dāng)前系統(tǒng)開發(fā)中新定義的類(或其它構(gòu)件)提交到類庫(或構(gòu)件庫)。 (ccw)
- 1網(wǎng)關(guān)平臺選購的關(guān)鍵指標(biāo)
- 2協(xié)同OA撬動電子政務(wù)新變革
- 3三問IE7反釣魚欺詐
- 4政府云的應(yīng)用
- 5南昌OA系統(tǒng)數(shù)據(jù)整合(1):借款與報銷
- 6布線在亂局與希望中成長
- 7怎樣提高NCPI的可用性
- 8服務(wù)器技術(shù)八大走勢
- 9核心網(wǎng)網(wǎng)絡(luò)測試技術(shù)
- 10如何創(chuàng)建Web服務(wù)
- 11走進CCXML標(biāo)準(zhǔn)
- 12利用辦公自動化OA解決企業(yè)管理和辦公難題
- 13管理思想 企業(yè)OA系統(tǒng)的靈魂
- 14企業(yè)管理離不開OA協(xié)同這個潤滑劑
- 15Linux系統(tǒng)包管理器簡化操作
- 16如何配置Linux安全服務(wù)管理工具
- 17知識經(jīng)濟方興未艾OA不止于知識容器
- 18網(wǎng)站交互式功能利弊談
- 19泛普軟件:OA辦公系統(tǒng)市場下半年發(fā)展趨勢分析
- 20如何保護VoIP網(wǎng)絡(luò)
- 21完全攻略O(shè)racle數(shù)據(jù)庫備份與恢復(fù)
- 22如何全面了解云計算?
- 23網(wǎng)絡(luò)改造要充分利用現(xiàn)有網(wǎng)絡(luò)環(huán)境
- 24未來OA的專、精、細(xì)之路
- 25解讀我國服裝產(chǎn)業(yè)信息化現(xiàn)狀及發(fā)展趨勢
- 26簡述硬盤保護技術(shù)
- 27信息化現(xiàn)狀分析 企業(yè)IT規(guī)劃成關(guān)鍵
- 28消滅網(wǎng)絡(luò)擁塞
- 29整體安全注重哪些細(xì)節(jié)
- 302013年運營商發(fā)力行業(yè)信息化
成都公司:成都市成華區(qū)建設(shè)南路160號1層9號
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓