日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

变革前的思索

發(fā)布時間:2025/3/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 变革前的思索 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、軟件業(yè)面臨的挑戰(zhàn)——適應(yīng)技術(shù)和需求易變性

??? 荷馬在他的史詩中描述了西西弗斯的故事,他必須將一塊巨石推上海蒂斯的一座小山,但每當(dāng)接近山頂時,巨石又會滾下來,因此西西弗斯的苦役用無止境。而當(dāng)今的IT軟件人正是現(xiàn)在版的西西弗斯——面臨的是快速變化的技術(shù)和越來越復(fù)雜的需求。(摘自《應(yīng)用MDA》)

許多軟件業(yè)同仁已經(jīng)察覺到,軟件業(yè)正站到了一個新的巨大的技術(shù)變革的前沿。看看最近炙手可熱的技術(shù)和標(biāo)準(zhǔn):面向構(gòu)件編程、面向方面編程(AOP)、產(chǎn)生式編程(GP)、動態(tài)語言、模型驅(qū)動架構(gòu)(MDA)、語義Web(Semantic Web)、Web服務(wù)、面向服務(wù)架構(gòu)(SOA)、BPEL等等。事實上,我們已經(jīng)再一次被大量全新的技術(shù)和標(biāo)準(zhǔn)所包圍。在諸多的新標(biāo)準(zhǔn)和技術(shù)中,究竟那一種方案,會讓軟件業(yè)迎來一次革命性的變革?在這些看似不同的方案中,他們是否有共同的方向?這個共同的、最重要的方向是什么?面對洶涌而來的新標(biāo)準(zhǔn)和新技術(shù)浪潮,在變革的前夜,探尋軟件技術(shù)變革和突破的走向,就是我這一年學(xué)習(xí)和思索的主題。

??? 需求推動IT發(fā)展,IT發(fā)展又刺激新的更大更復(fù)雜的需求,這是IT發(fā)展的巨大動力源泉。軟件業(yè)從硬件分化出來那天開始,就面臨著適應(yīng)技術(shù)變化和需求變化的挑戰(zhàn)。特別是,硬件、網(wǎng)絡(luò)和通訊的快速發(fā)展拉近了時空,以前所未有的速度影響人們的生活、企業(yè)的經(jīng)營和社會的發(fā)展,這更使軟件業(yè)雪上加霜,面臨更加嚴(yán)重的危機和挑戰(zhàn)。

??? 正是技術(shù)和需求的易變性,導(dǎo)致軟件危機,也催生一次又一次的軟件業(yè)變革。更好的適應(yīng)技術(shù)和需求的易變性既是軟件業(yè)變革的推動力也是變革的方向和檢驗標(biāo)準(zhǔn)。

二、迎接挑戰(zhàn)——分離模型與實現(xiàn)

?????? OMG組織以特有的影響力將MDA推到了這場變革的中心。MDA定義了平臺無關(guān)模型(PIM)、平臺相關(guān)模型(PSM)和代碼以及它們之間的關(guān)系。MDA的關(guān)鍵思想包含兩部分:模型和驅(qū)動,這里的模型是指PIM,驅(qū)動的方法是將PIM通過變換工具自動生成平臺相關(guān)模型(PSM),進一步生成代碼。

????? PIM的“獨立于平臺”這個說法有模糊性,容易讓人誤解。正是因為這一點,PIM遭到業(yè)界部分人士(包括知名人士)的質(zhì)疑,認(rèn)為PIM根本就不存在,是空中樓閣。我們先來看看《應(yīng)用MDA》一書中關(guān)于PIM的一個小結(jié):

l?? PIM更準(zhǔn)確的定義應(yīng)該是“獨立于平臺的計算模型”。

l?? 平臺獨立性是一個相對的說法。當(dāng)聲稱某個語言或者模型是獨立于平臺的,你必須說明獨立于哪些平臺技術(shù)。

l?? 當(dāng)前,獨立于平臺意味著獨立于信息格式化技術(shù)、3GL、4GL、分布式組件中間件和消息中間件。

這個解釋還是不夠清晰,我們再看看《解析MDA》中對PIM的描述:

PIM是具有高抽象層次、獨立于任何實現(xiàn)技術(shù)的模型。

這里指出了“獨立于平臺”實際上是獨立于實現(xiàn)技術(shù)。這對我們理解MDA非常重要。

??? 我的理解,任何軟件系統(tǒng)包括模型和實現(xiàn)兩部分,模型是對系統(tǒng)的描述,實現(xiàn)是利用特定技術(shù)在特定平臺或環(huán)境中對模型的解釋。模型僅僅負(fù)責(zé)對系統(tǒng)的描述,與實現(xiàn)技術(shù)無關(guān)。我把這一點稱為模型的實現(xiàn)技術(shù)無關(guān)性。分離模型與實現(xiàn),這樣做具有合理性嗎?有什么好處呢? 是否符合軟件業(yè)變革的方向和檢驗標(biāo)準(zhǔn)呢?

??? 讓我們再聽聽布魯克斯在《沒有銀彈》文中的論述:“所有軟件活動包括根本任務(wù)——打造構(gòu)成抽象軟件實體的復(fù)雜概念結(jié)構(gòu),次要任務(wù)——使用編程語言表達這些抽象實體,在空間和時間限制內(nèi)將它們影射成機器語言” 。

??? 我把布魯克斯的根本任務(wù)理解為表達模型,次要任務(wù)理解為實現(xiàn)模型。分離模型與實現(xiàn)就是分離軟件活動中的根本任務(wù)與次要任務(wù)這兩個關(guān)注面。模型實現(xiàn)是軟件活動的次要任務(wù),當(dāng)然,這并不是說它不重要。我理解布魯克斯的觀點是根本任務(wù)的復(fù)雜性遠遠超過次要任務(wù)的復(fù)雜性,換句話說,就是次要任務(wù)相比根本任務(wù),要容易解決的多。

??? 在討論分離的合理性與好處之前,我們先關(guān)注模型實現(xiàn)的兩種方式。一種是直接執(zhí)行,就是使用動態(tài)執(zhí)行引擎直接執(zhí)行,我把這個動態(tài)執(zhí)行引擎稱為模型的運行平臺;另一種是模型變換,就是把模型變換為更容易執(zhí)行的目標(biāo)語言表達的模型,目標(biāo)語言一般情況是抽象程度更低的語言,這里的變換通常需要變換定義和相應(yīng)的變換工具。

下面,討論分離能否迎接軟件業(yè)面臨的挑戰(zhàn)——適應(yīng)技術(shù)和需求的易變性。

??? 首先,模型與實現(xiàn)分離后,能夠很好的適應(yīng)技術(shù)易變性。由于實現(xiàn)往往高度依賴特定技術(shù)和特定平臺,當(dāng)技術(shù)發(fā)生遷移時,只需針對這種技術(shù)作相應(yīng)的實現(xiàn),編寫相應(yīng)的運行平臺或變換工具。所以,能夠比較好的應(yīng)對實現(xiàn)技術(shù)發(fā)展帶來的挑戰(zhàn)。

??? 其次,我們看看適應(yīng)需求易變性方面。模型與實現(xiàn)分離后,應(yīng)對需求的變更,就是調(diào)整模型,然后重新實現(xiàn)即可??纯粗匦聦崿F(xiàn)的代價,如果模型的實現(xiàn)是采用直接執(zhí)行方式,我們不需要做任何事情,如果采用模型變換方式,只需重新變換,然后發(fā)布實施即可。從這里可以看出,模型的實現(xiàn)是很容易適應(yīng)需求變化的。分離后,能否適應(yīng)需求易變性,關(guān)鍵是看模型本身是否比較容易隨需而變。如果模型本身不容易改變,則適應(yīng)需求易變性就是空話。

??? 舉個例子,看看互聯(lián)網(wǎng),網(wǎng)站就是一個模型,HTML和URL是這個模型的描述語言,它的實現(xiàn)方式是直接執(zhí)行,Web服務(wù)器和瀏覽器是運行平臺。想想,如果沒有Web這種模型和實現(xiàn)分離的手段,而采用3GL編程的模式,現(xiàn)在的Web會是怎樣的一種景象。

讓我們再看看MDA,MDA的思路分離了模型和實現(xiàn),這無疑邁出了迎接挑戰(zhàn)的最重要的步伐。但是,到目前為止依然有不少質(zhì)疑MDA方向的聲音,這是為什么?MDA在模型表達方面做的工作還遠遠不夠。MDA 的四層模型表達能力雖然比3GL提升不少,但依然不夠,很多的業(yè)務(wù)邏輯無法直接描述,只能用過程型的計算邏輯表達。而OMG組織在MDA的方向重點是模型變換,也就是說,MDA目前的努力依然是在解決次要任務(wù)。

??? 相對于復(fù)雜概念結(jié)構(gòu)的模型表達,模型的實現(xiàn)方式是變換還是直接執(zhí)行并不重要。響應(yīng)布魯克斯的呼吁吧,我們是該關(guān)注根本任務(wù)的時候了。

三、關(guān)注根本任務(wù)——模型表達

?????? 3GL的問題到底在哪?讓我們先做個假設(shè),SOA 時代已經(jīng)變?yōu)楝F(xiàn)實,整個互聯(lián)網(wǎng)就像運行著的一個進程,調(diào)用遠程服務(wù)與調(diào)用內(nèi)部方法一樣方便。是否就解決布魯克斯說的根本復(fù)雜性了呢?當(dāng)然還存在問題。

??? 機器指令、匯編語言、第三代編程語言(包括結(jié)構(gòu)化3GL和面向?qū)ο?GL)和網(wǎng)絡(luò)出現(xiàn)之后的各種RPC(包括CORBA、DCOM、EJB、SOAP等)的發(fā)展都是以計算為核心、圍繞提升計算平臺的抽象層次,其主體是采用過程性表達,用指令告訴計算平臺如何做。

?????? 3GL的表達范式不適合用來表達復(fù)雜概念結(jié)構(gòu),不適合用來表達多種多樣的模型,不適合用來表達計算無關(guān)模型(CIM),導(dǎo)致了軟件業(yè)的根本困難,使軟件業(yè)無法應(yīng)對需求的易變性和復(fù)雜性。如何表達這些多種多樣的模型呢?

??? 事實上,由于3GL表達的局限性,已經(jīng)產(chǎn)生了多種專用的領(lǐng)域表達語言,就我熟悉的企業(yè)應(yīng)用軟件領(lǐng)域來看,比如SQL語言、工作流描述語言(XPDL、BPEL、XLANG、WSFL、BPML、WSCI)、規(guī)則描述語言、權(quán)限描述語言、界面描述語言等等。這些語言的共同特征是表達目標(biāo)領(lǐng)域比較自然、簡潔和表達能力強,而且與實現(xiàn)無關(guān)。它們都能比較好的適應(yīng)技術(shù)和需求變化。

??? 這能給我們什么啟發(fā)呢?要表達模型,需要用合適的表達語言。當(dāng)然,通用的模型表達語言并不容易突破,這也許是3GL后的抽象層次提升到現(xiàn)在都不理想的原因吧。但不要悲觀,我們看看可能的方向。

??? 模型表達是知識的表達。知識表達按范式分有說明性(Declarative paradigm)和過程性(Imperative paradigm),按作用分有結(jié)構(gòu)和動態(tài)表達。到目前為止,并沒有適合計算機處理的統(tǒng)一知識表達手段。但有多種領(lǐng)域、學(xué)科在做探索。比如人工智能學(xué)科。人工智能中有多種知識表達方式,比如演繹系統(tǒng)、產(chǎn)生式系統(tǒng)、框架結(jié)構(gòu)、語義網(wǎng)絡(luò)、描述邏輯和過程性知識。這些方式構(gòu)成了強大的知識表達體系和應(yīng)用能力,其中有不少在軟件中以得到應(yīng)用,比如目前主流的規(guī)則引擎都是采用產(chǎn)生式系統(tǒng),不少專家推理和知識系統(tǒng)采用一階謂詞邏輯表達。

??? 我們再看看Web的發(fā)展方向。W3C明確指出,語義Web是方向,而且已經(jīng)做了不少工作,取得不少進展。今年剛剛通過OWL(Web Ontology Language)為推薦標(biāo)準(zhǔn),這為語義Web的發(fā)展奠定了堅實的基礎(chǔ)。OWL基于描述邏輯(Description Logic),在表達結(jié)構(gòu)和語義方面有其獨到之處。最近,根據(jù)OWL,OMG也開始定義自己的本體表達語言O(shè)DM(Ontology Definition Metamodel)。這些情況表明,形式化的語義表達和推理即將姍姍來遲,這將為模型提供結(jié)構(gòu)方面的形式化語義表達能力。這一點非常重要,因為到目前為止,軟件處理的都是弱語義數(shù)據(jù)。這不但容易引起非常多的不應(yīng)該產(chǎn)生的錯誤,而且軟件幾乎沒有語義關(guān)聯(lián)和推理等智能處理能力。

??? 如何融合聲明性和過程性、結(jié)構(gòu)和動態(tài)表達方式,形成協(xié)調(diào)、適合計算機處理、表達能力強和富語義的模型表達體系,甚至統(tǒng)一的模型表達語言,也許是突破根本復(fù)雜性的希望所在

四、希望現(xiàn)代版西西弗斯的苦役早日結(jié)束

??? 面對苦役,我們技術(shù)人員應(yīng)該怎么辦?首先,認(rèn)清各種技術(shù)的實質(zhì)是解決根本問題還是次要問題。其次,深入領(lǐng)域,學(xué)習(xí)、應(yīng)用甚至創(chuàng)造特定領(lǐng)域模型表達語言是應(yīng)對技術(shù)和需求易變性的不變之策。

摘自:http://blog.csdn.net/coofucoo/archive/2005/05/28/382722.aspx

總結(jié)

以上是生活随笔為你收集整理的变革前的思索的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。