軟件復(fù)用與項(xiàng)目需求變化_第1頁
軟件復(fù)用與項(xiàng)目需求變化_第2頁
軟件復(fù)用與項(xiàng)目需求變化_第3頁
軟件復(fù)用與項(xiàng)目需求變化_第4頁
軟件復(fù)用與項(xiàng)目需求變化_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

軟件復(fù)用與項(xiàng)目需求變化

軟件復(fù)用本質(zhì)是為了快速適應(yīng)不斷變化的需求(adapttochangingneeds),兩者目標(biāo)是一致的,但是當(dāng)我們過于注重軟件復(fù)用(如組件復(fù)用componentreuse又譯構(gòu)件復(fù)用)時(shí),千萬需要牢記:快速適應(yīng)不斷變化的需求是根本目的,它的重要性要重于組件復(fù)用技術(shù)本身。本文總結(jié)了軟件復(fù)用的不同層次:設(shè)計(jì)復(fù)用、組件架構(gòu)復(fù)用以及業(yè)務(wù)模型復(fù)用,復(fù)用技術(shù)的不斷發(fā)展正是由于適應(yīng)變化需求的要求不斷提高導(dǎo)致,本人從2002年開始從事復(fù)用技術(shù)研究,最初從復(fù)用層次底層設(shè)計(jì)模式開始,在國內(nèi)媒體第一次全面分析了GoF設(shè)計(jì)模式,經(jīng)過這幾年發(fā)展,親身體會(huì)復(fù)用技術(shù)已經(jīng)進(jìn)入了一個(gè)新的階段。1、適應(yīng)需求變化現(xiàn)如今是一個(gè)計(jì)劃趕不上變化的時(shí)代,企業(yè)競爭力逐漸表現(xiàn)在企業(yè)適應(yīng)變化能力的競爭,誰能更快適應(yīng)市場的變化,誰就能夠在競爭中勝出,這種快速適應(yīng)能力如果靠“人民戰(zhàn)爭”無疑是不現(xiàn)實(shí)的,軟件可以幫助我們來適應(yīng)這種快速變化。談到這里,稍微再說明一下國人軟件教育的誤區(qū),不錯(cuò),軟件曾經(jīng)是科學(xué)計(jì)算的工具,因此,我們非常注重軟件的算法和數(shù)據(jù)結(jié)構(gòu),甚至將之作為數(shù)學(xué)的衍生物,但是,現(xiàn)如今已經(jīng)成為一種幫助我們快速響應(yīng)變化的有力工具,如果我們的教育背景中只有算法和數(shù)據(jù)結(jié)構(gòu),能夠編制出應(yīng)付快速變化的軟件嗎?很顯然,他們是風(fēng)馬牛不相及,由此可見國人軟件概念和軟件教育的落后性,在這樣的軟件認(rèn)識(shí)背景下,固然設(shè)計(jì)模式的崇高位置得不到確立,軟件設(shè)計(jì)被拋棄在腦后,編制出的大多數(shù)企業(yè)軟件系統(tǒng)根本不具備應(yīng)付變化的能力,程序員拒絕頻繁更改程序,甚至借助技術(shù)原因阻擾軟件的頻繁更改,這種軟件程序員和軟件用戶之間的矛盾可以稱為miscommunication,miscommunication是導(dǎo)致軟件系統(tǒng)的失敗一個(gè)重要原因。國內(nèi)早就有著名言論:“不上ERP等死;上了ERP找死”,如果你的企業(yè)不上ERP,那么你的企業(yè)就不能借助軟件應(yīng)付快速的市場等環(huán)境變化,那么必然會(huì)被淘汰;但是,如果上了一個(gè)不注重“適應(yīng)需求變化”的ERP軟件系統(tǒng),那就是企業(yè)被僵化的ERP軟件框死,喪失了使用ERP的根本目的。適應(yīng)需求變化則成為現(xiàn)代軟件系統(tǒng)一個(gè)孜孜不倦的追求目標(biāo),那么如何實(shí)現(xiàn)呢?原則:給予人們可以裁剪他們系統(tǒng)的能力應(yīng)適應(yīng)需求變化,建立一個(gè)適應(yīng)需求變化的系統(tǒng),允許系統(tǒng)在一系列小的、可控制的步驟上進(jìn)行改變。2、組件誕生將不變的通用的東西抽象出來,以達(dá)到在不同項(xiàng)目中重用復(fù)用,將我們有限的精力集中在項(xiàng)目具體變化和特點(diǎn)上。當(dāng)然這些抽象復(fù)用的東西之間彼此必須是松耦合,這樣才能根據(jù)需求挑選組合。讓我們先回顧一下軟件的發(fā)展史,軟件開發(fā)的發(fā)展史實(shí)際是一部我們思維不斷抽象拔高的發(fā)展過程,這種抽象概念非常類似于建模的思考方式:概要貼切地描述事物,忽視次要的細(xì)節(jié)。抽象體現(xiàn)在軟件開發(fā)上就是每個(gè)具體項(xiàng)目需要完成的代碼行數(shù)量越來越少。從1970到1980這段時(shí)間,軟件開發(fā)從機(jī)器語言到匯編語言。進(jìn)而發(fā)展到高級(jí)語言,甚至一些CASE工具,面向功能編程發(fā)展到面向?qū)ο缶幊?,功能模塊重用細(xì)化到類的重用,類的重用是最初是通過設(shè)計(jì)模式實(shí)現(xiàn)的。進(jìn)入90年代中期,誕生了基于組件的開發(fā)模式(CBD:componentbaseddevelopment),CBD將抽象概念帶往了一個(gè)新的方向,與減少代碼數(shù)量相反,CBD將功能各個(gè)方面細(xì)化分離到不同的、相互隔離層中,如表現(xiàn)層、業(yè)務(wù)邏輯層、持久層、安全層以及核心層等,并且可以管理這些組件之間的依賴關(guān)系,通過這種分離,我們可以提純細(xì)化組件功能,進(jìn)而產(chǎn)生可以重用的框架,如Struts框架可以重用在大部分應(yīng)用系統(tǒng)的表現(xiàn)層中,StrutsJdonFrameworkHibernate是一個(gè)框架組合,代表一種架構(gòu)設(shè)計(jì),這種架構(gòu)設(shè)計(jì)其實(shí)可以重用在大部分應(yīng)用系統(tǒng),這種重用我稱之為架構(gòu)級(jí)別重用。3、組件復(fù)用軟件組件(Softwarecomponents)是軟件提供業(yè)務(wù)或技術(shù)功能的基本單元或元素,這些單元可以獨(dú)立地被部署、他們可以自我管理并且被虛擬部署到網(wǎng)絡(luò)的任何地方,業(yè)務(wù)組件((Businesscomponents)執(zhí)行業(yè)務(wù)邏輯、遵循一定的業(yè)務(wù)規(guī)則并且管理相應(yīng)的數(shù)據(jù)(數(shù)據(jù)庫操作稱為managecorporatedata);而技術(shù)組件(Technicalcomponents)則提供相應(yīng)的平臺(tái)以便業(yè)務(wù)組件可以依賴其上運(yùn)行,例如權(quán)限、組件管理等。JdonFramework/Spring都屬于一種技術(shù)組件框架,而我們具體項(xiàng)目的業(yè)務(wù)層代碼如果能夠提煉可以復(fù)用,則是業(yè)務(wù)組件;JdonFramework/Spring則都提供了業(yè)務(wù)組件賴于運(yùn)行的一些核心底層機(jī)制,特別是組件的管理,如組件的創(chuàng)建、組件的獲得、組件的資源管理、組件的消亡等生命周期支持,所以,我們可以在JdonFramework/Spring中加入自己的業(yè)務(wù)組件,當(dāng)然,JdonFramework還提供了Session等狀態(tài)管理的支持功能,為業(yè)務(wù)組件提供了更廣闊的生命周期支持。組件復(fù)用技術(shù)以前是停留在編譯前期,也就是說:我們在編程時(shí),導(dǎo)入所需要的其他組件Jar包,然后混同我們的項(xiàng)目編譯部署,但是這需要通過專業(yè)技術(shù)人員實(shí)現(xiàn),很顯然是不能適應(yīng)原則中第一句:給予人們可以裁剪他們系統(tǒng)的能力應(yīng)適應(yīng)需求變化,[整理]這里的“人們”應(yīng)該是指軟件最終用戶,應(yīng)該給予用戶自己改變系統(tǒng)的能力,也就是說:需要提供軟件系統(tǒng)運(yùn)行時(shí)能夠動(dòng)態(tài)改變自身的能力。組件復(fù)用技術(shù)以前停留在軟件編譯階段,現(xiàn)在則更靠前,必須在軟件運(yùn)行階段,當(dāng)然對技術(shù)要求相當(dāng)高,需要語言支持RTTI(簡單又神秘的Class.forName發(fā)揮作用了),這在"Evolution,Architecture,andMetamorphosis"一文中被認(rèn)為是Metamorphosis,現(xiàn)在由于AOP技術(shù)出現(xiàn),AOP有一種動(dòng)態(tài)Weaving技術(shù),實(shí)際就是在軟件運(yùn)行時(shí)實(shí)現(xiàn)動(dòng)態(tài)攔截,這樣給予終端用戶更大的改變系統(tǒng)能力,他們基本可以以動(dòng)態(tài)插拔的概念實(shí)現(xiàn)多個(gè)組件的組合運(yùn)行。在"AOPvsDecorator"一文中,我把編譯階段的組件組合方式(我更愿意稱為靜態(tài)組合)和運(yùn)行時(shí)組合等兩種處理方式,合并稱為過濾器模式,如果你希望采取組件可插拔式的復(fù)用,就可以使用過濾器模式。4、組件可插拔更換為什么說組件的可插拔非常重要?組件重用目的是為了更好地適應(yīng)需求變化,但是有了組件重用不代表就快速適應(yīng)需求變化,因?yàn)榻M件本身也會(huì)產(chǎn)生設(shè)計(jì)錯(cuò)誤(提煉得不夠抽象或者組件很難以替代),這就必然導(dǎo)致軟件系統(tǒng)得維護(hù)成本提高,那么快速適應(yīng)需求變化的目標(biāo)也就成為一紙空文。實(shí)踐證明:組件設(shè)計(jì)問題已經(jīng)成為導(dǎo)致軟件開發(fā)失敗的一個(gè)主要因素。組件設(shè)計(jì)有兩個(gè)主要風(fēng)險(xiǎn):組件提純的純度和組件的替代方式。提煉的純度也就是抽象的高度,組件的抽象程度越高,當(dāng)然可重用范圍越廣,但是往往我們只有經(jīng)歷多個(gè)項(xiàng)目后,才發(fā)現(xiàn)自己的組件提煉還欠火候,這實(shí)際是組件的提煉過程成本。組件提練雖然取決于人為設(shè)計(jì)因素,但是在實(shí)現(xiàn)手段上也依賴于組件的替換方式,通過經(jīng)常反復(fù)頻繁的微調(diào)和更換,才能將組件不斷提煉向理想狀態(tài)靠攏,所以,必須有一種方便的組件替換方式提供頻繁更換支持,我們總不希望更換組件象以前更換汽車發(fā)動(dòng)機(jī)火花塞一樣,需要拆開汽車,打開發(fā)動(dòng)機(jī)那樣麻煩吧?參考PC電腦硬件設(shè)計(jì):更新CPU或內(nèi)存條,只要直接插拔就可以,這些部件和母版都是一種松散的、可插拔的關(guān)系,如果軟件組件替換是動(dòng)態(tài)的可插拔更加方便終端用戶在軟件系統(tǒng)交付后,根據(jù)需求改變他們的系統(tǒng)。組件可插拔本質(zhì)上是這些組件必須是最大化的松耦合,彼此依賴影響非常小,換句話說:如果實(shí)現(xiàn)了可插拔更換,說明你的組件已經(jīng)實(shí)現(xiàn)松耦合了。那就有可能設(shè)計(jì)一種軟件框架:它能夠?yàn)槊總€(gè)部件提供非常棒的服務(wù)訪問,軟件組件是松耦合’looselycoupled’,這些組件的大部分通過幾行代碼就可以實(shí)現(xiàn)替換。目前這種方便的實(shí)現(xiàn)方式是使用XML進(jìn)行組件的配置。JdonFramework/Spring都是這樣的一種框架,JdonFramework更進(jìn)步的是:JF框架本身的組件也是可以替換的,例如你希望在JF中使用Spring的配置文件,那么你只要做一個(gè)Spring配置文件的解析組件,然后替換JF框架原來的XML解析器就可以了。無論EJB2/EJB3等在這方面要稍遜于Ioc/AOP框架,對于支持EJB3的JBoss4這樣架構(gòu),需要?jiǎng)討B(tài)更換AOP攔截器還不是很方便,因?yàn)镴Boss4本身組件沒有象JF那樣做到可插拔配置,不過,JBoss5已經(jīng)開始走上這條路,使用一個(gè)微核心來管理所有的可插拔組件,我曾經(jīng)在"JBoss5迎來中間件徹底的可配置時(shí)代"一文中提出組件是否方便替換是衡量一個(gè)組件框架的重要指標(biāo)。在最近的TheServerSide文章’ServiceAccess’tothesoftwarecomponents中,[收集]主要是談?wù)摿吮憩F(xiàn)層組件的替換訪問方式,GIF這樣圖片組件不可以隨意控制調(diào)整,基本不能復(fù)用,但是通過SVG或XUI等支持XML組件動(dòng)態(tài)替換技術(shù)的使用,則可以實(shí)現(xiàn)顯示圖形組件的復(fù)用。5、SOA在軟件運(yùn)行時(shí),給予用戶動(dòng)態(tài)插拔式更換組件,達(dá)到復(fù)用的組件更加適合變化的需求,這是軟件業(yè)追求的目標(biāo),而SOA(ServiceOrientedArchitecture)則是從另外一種方向,也是在運(yùn)行時(shí)提供用戶一種改變系統(tǒng)的能力。SCBA(ServicesandComponentsBasedArchitecture),SCBA是通過減少需求變化帶來的傳遞損耗和時(shí)間來實(shí)現(xiàn)的,當(dāng)需求變化時(shí),SOA的服務(wù)將支持跟進(jìn)變化和替換。SCBA更強(qiáng)調(diào)的是一種業(yè)務(wù)過程重用,而且是跨組織跨多個(gè)專業(yè)域范圍的,例如我以前說的四色圖實(shí)際是對跨域范圍的業(yè)務(wù)總結(jié),特別是ERP域范圍,大多數(shù)企業(yè)系統(tǒng)都是由MI等四種原始模型組成的,例如JiveJdon3看上去只是一個(gè)論壇系統(tǒng),實(shí)際不只是,它的Message模型可以重用在網(wǎng)站內(nèi)容系統(tǒng)、新聞發(fā)布系統(tǒng)、電子商務(wù)系統(tǒng)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論