摘 要:針對現(xiàn)有軟件體系結(jié)構(gòu)風格定義在客觀性和全面性方面存在的不足,從客觀角度出發(fā),站在軟件工程的高度從多個方面對軟件體系結(jié)構(gòu)風格進行定義;同時通過研究分析軟件體系結(jié)構(gòu)風格的研究現(xiàn)狀,發(fā)現(xiàn)并指出其四個重點研究方向及各自存在的問題。
關(guān)鍵詞:軟件體系結(jié)構(gòu)風格; 軟件體系結(jié)構(gòu); 軟件工程; 軟件復用
中圖分類號:TP31 文獻標志碼:A 文章編號:1001-3695(2008)08-2270-04
Current research state and existing problems of software architectural style
MAO Fei-qiao,QI De-yu
(Research Institute of Computer Systems, South China University of Technology, Guangzhou 510640, China)
Abstract:Existing software architectural style definitions have less objectivity and they are not defined roundly. Therefore, this paper tried to define software architectural style concept objectively and roundly. In addition, it found and pointed out four important research directions of software architectural style and their existing problems via analyzing their current research state.
Key words:software architectural style; software architecture; software engineering; software reuse
軟件體系結(jié)構(gòu)風格是軟件工程領(lǐng)域中一個重要的研究問題??傮w而言,研究者研究軟件體系結(jié)構(gòu)風格的動因體現(xiàn)在兩個方面:a)研究軟件體系結(jié)構(gòu)風格可指導結(jié)構(gòu)設(shè)計師選用合適的軟件體系結(jié)構(gòu),降低軟件設(shè)計失敗的風險;b)一種軟件體系結(jié)構(gòu)風格提供特定領(lǐng)域內(nèi)一種高層的軟件復用模板——軟件體系結(jié)構(gòu)級的復用,提高軟件開發(fā)效率。
1 軟件體系結(jié)構(gòu)風格定義研究
在諸多有關(guān)軟件體系結(jié)構(gòu)風格的研究文獻中,比較明確地給出的軟件體系結(jié)構(gòu)風格定義有幾種,不少對軟件體系結(jié)構(gòu)風格的研究中[1~8]提到其定義時,引用的也主要是這幾種。
體系結(jié)構(gòu)風格概念率先由Perry等人[9]在1992年引入:軟件體系結(jié)構(gòu)風格是由從各種相似的、具體詳細的體系結(jié)構(gòu)中抽象出的組成元素及其組成關(guān)系表示的,比軟件體系結(jié)構(gòu)受到的限制更少、更不完全。他們在軟件體系風格上關(guān)注的主要是軟件系統(tǒng)的組成元素以及元素間的連接關(guān)系。
Buschmann等人[10]進一步完善了此定義:軟件體系結(jié)構(gòu)風格根據(jù)軟件系統(tǒng)的結(jié)構(gòu)組織定義了軟件系統(tǒng)族;通過構(gòu)件應用的限制及其與系統(tǒng)結(jié)構(gòu)構(gòu)建有關(guān)的組成和設(shè)計規(guī)則來表示組成元素和組成元素之間的關(guān)系;為一個軟件系統(tǒng)及其怎樣構(gòu)造該系統(tǒng)表示一種特殊的基本結(jié)構(gòu);也包括何時使用它所描述的體系結(jié)構(gòu)、它的不變量和特例以及其應用的效果等信息。并且,他們將體系結(jié)構(gòu)風格與體系結(jié)構(gòu)模式兩個概念區(qū)別開來,不僅關(guān)注構(gòu)成軟件系統(tǒng)的組成元素及其之間的連接關(guān)系,而且關(guān)注組成元素使用的約束條件、表示組成元素間關(guān)系的角度以及體系結(jié)構(gòu)風格的適用場合和應用效果。
Shaw等人[11]沒有區(qū)分體系結(jié)構(gòu)風格和體系結(jié)構(gòu)模式,將兩者視為相同的概念來使用。他們認為,軟件體系結(jié)構(gòu)風格是軟件系統(tǒng)結(jié)構(gòu)層次上的組織風格,它根據(jù)結(jié)構(gòu)組織模式定義一個系統(tǒng)族(具體地,就是定義了關(guān)于構(gòu)件和連接器類型的術(shù)語以及它們?nèi)绾谓M織在一起);某些風格還存在一個或多個語義模型,指明如何根據(jù)系統(tǒng)各組成成分的屬性來確定系統(tǒng)的整體屬性。Shaw等人在體系結(jié)構(gòu)風格上強調(diào)的是構(gòu)成軟件系統(tǒng)的組成元素(構(gòu)件)和連接關(guān)系(連接器)的類型、構(gòu)件和連接器間的組織方式以及系統(tǒng)的屬性。他們采用基于不同連接方式的分類方式首次將熟知的軟件體系結(jié)構(gòu)風格分為數(shù)據(jù)流系統(tǒng)、調(diào)用與返回系統(tǒng)、獨立構(gòu)件系統(tǒng)、虛擬機和以數(shù)據(jù)為中心的系統(tǒng)五大類[12]。
Lee等人[13]則將軟件體系結(jié)構(gòu)風格定義為是對構(gòu)件類型、構(gòu)件運行時的控制方式與/或構(gòu)件間數(shù)據(jù)傳遞的描述。一種體系結(jié)構(gòu)風格可看做是在結(jié)構(gòu)上有關(guān)構(gòu)件類型約束及構(gòu)件間交互約束的一個約束集合,這些約束可以定義一個系統(tǒng)結(jié)構(gòu)族集來滿足。可見,Lee等人在軟件體系結(jié)構(gòu)風格上不僅關(guān)注構(gòu)件在體系結(jié)構(gòu)中受到的靜態(tài)約束,更關(guān)注運行時在體系結(jié)構(gòu)中的動態(tài)約束。這在之前關(guān)于軟件體系結(jié)構(gòu)風格定義中從未提到過。在區(qū)別軟件體系結(jié)構(gòu)風格與軟件體系結(jié)構(gòu)時,他們與Perry等人[9]持類似的觀點,均認為軟件體系結(jié)構(gòu)風格與軟件體系結(jié)構(gòu)沒有明確的界限,只是相對于描述比較具體的軟件體系結(jié)構(gòu)而言,軟件體系結(jié)構(gòu)風格更抽象、更概括。
也有一些文獻[14~16]在研究軟件體系結(jié)構(gòu)風格時沒有明確給出定義,但討論了其內(nèi)涵。例如Aborwd等人[14]把軟件體系結(jié)構(gòu)風格看做是慣用的用框線圖描述軟件體系結(jié)構(gòu)方式中,那些對圖中框和線的解釋。他們從這樣的角度來討論軟件體系結(jié)構(gòu)風格,是因為他們打算用形式化的方法來刻畫軟件體系結(jié)構(gòu)風格,從而使各種軟件體系結(jié)構(gòu)風格能夠得到精確的理解,進而指導結(jié)構(gòu)設(shè)計師選擇合適的體系結(jié)構(gòu)風格。
通過對軟件體系結(jié)構(gòu)風格定義的研究發(fā)現(xiàn),有關(guān)軟件體系結(jié)構(gòu)風格的研究者并沒有對軟件體系結(jié)構(gòu)風格概念的定義形成統(tǒng)一觀點。具體研究目的與研究角度的不同,使他們在對軟件體系結(jié)構(gòu)風格概念進行定義時強調(diào)和描述的內(nèi)容存在差異。盡管他們在定義時也有共同之處:認為軟件體系結(jié)構(gòu)風格研究的是軟件系統(tǒng)結(jié)構(gòu)層次上的問題;認為軟件體系結(jié)構(gòu)風格是軟件結(jié)構(gòu)設(shè)計師設(shè)計軟件體系結(jié)構(gòu)時所選用的基本格調(diào)。但是軟件體系結(jié)構(gòu)風格概念需要一個客觀而又全面的定義,并且能夠站在一定的高度科學地給出。
本文嘗試從客觀的角度出發(fā),站在軟件工程的高度比較全面地定義軟件體系結(jié)構(gòu)風格概念。軟件體系結(jié)構(gòu)風格是軟件設(shè)計師設(shè)計具體領(lǐng)域軟件的軟件體系結(jié)構(gòu)時采用的一種結(jié)構(gòu)組織藍本,類似于計算機系統(tǒng)結(jié)構(gòu)中的系列機體系結(jié)構(gòu)概念。軟件體系結(jié)構(gòu)風格一般性地定義了具體領(lǐng)域系列軟件的軟件體系結(jié)構(gòu)基礎(chǔ)和核心組織框架,是軟件體系結(jié)構(gòu)的結(jié)構(gòu)理論,比軟件體系結(jié)構(gòu)更概括、更具一般性,但抽象層次又比軟件體系結(jié)構(gòu)模式低。軟件體系結(jié)構(gòu)風格包括對組成系統(tǒng)結(jié)構(gòu)的主要構(gòu)件元素的描述和能力、行為的約束,構(gòu)件元素間組織關(guān)系(即連接方式)的描述和構(gòu)件元素間動態(tài)交互的約束;也包括對體系結(jié)構(gòu)所具備的特性的描述和解釋,以及各特性對所創(chuàng)建的系統(tǒng)可能產(chǎn)生的影響的描述;還包括對其自身優(yōu)缺點的分析,以及對在系統(tǒng)進化和演化過程中體系結(jié)構(gòu)中可變成分和不可變成分的約束。軟件體系結(jié)構(gòu)風格的描述方式應盡量嚴格,從而使其得到精確理解,避免產(chǎn)生歧義。
2 研究現(xiàn)狀及存在的問題
雖然研究者對軟件體系結(jié)構(gòu)風格概念的定義沒有形成共識,但對軟件體系結(jié)構(gòu)風格的研究從未間斷,并且其被重視程度越來越高。近來對軟件體系結(jié)構(gòu)風格的相關(guān)研究主要集中在如下幾個方面。
2.1 軟件體系結(jié)構(gòu)風格的描述與刻畫
具有代表性的是文獻[17]用一種“組件代數(shù)”方法描述和刻畫協(xié)作式體系結(jié)構(gòu)風格。作者把利用事件通知機制的基于事件的風格、多agent間異步通信時使用的角色組風格以及agent間傳遞消息時使用的協(xié)調(diào)控制風格都看做是協(xié)作式體系結(jié)構(gòu)風格,分別用同一種方法即組件代數(shù)方法進行描述,從而為這三種相似的風格集成提供基礎(chǔ)。文獻[15]通過改進MDA(model-driven architecture)使之能將軟件體系結(jié)構(gòu)特性封裝于其中,使MDA具備描述體系結(jié)構(gòu)風格特性的能力。Loulou等人[18]圍繞基于事件的風格,提出一種正式的、基于邏輯的、使用Z描述符表達的體系結(jié)構(gòu)描述方法,為將幾種基本的基于事件的體系結(jié)構(gòu)風格集成為復雜的基于事件的體系結(jié)構(gòu)風格提供基礎(chǔ)。文獻[16]借鑒組織學理論中的概念,以一種新的視角,形象地對多agent體系結(jié)構(gòu)風格進行刻畫。文獻[19]則用時序邏輯語言XYZ/E形式化地描述并發(fā)處理風格、管理/過濾器風格、基于事件風格和客戶機/服務器四種軟件體系結(jié)構(gòu)風格中的組件和連接方式;為通過組合這幾種風格中的組件和連接方式形成新的軟件體系結(jié)構(gòu)風格提供基礎(chǔ)。
這些有關(guān)軟件體系結(jié)構(gòu)風格描述與刻畫的研究,其目的主要體現(xiàn)在三個方面:a)通過對一種軟件體系結(jié)構(gòu)風格進行描述與刻畫,使這種風格的構(gòu)成元素、結(jié)構(gòu)組織規(guī)則約束和適用場合等更清晰,達到指導結(jié)構(gòu)設(shè)計師進行選擇的目的;b)通過對近似的基本體系結(jié)構(gòu)風格,從相同的角度、用相同的描述方法對其進行描述,為其集成為復雜的同類體系結(jié)構(gòu)風格提供基礎(chǔ);c)通過對類似的體系結(jié)構(gòu)風格從不同的角度或相同的角度、用相同的描述方法對其進行描述,為其集成提供基礎(chǔ)。
在這個方面還存在不少問題需要進一步研究:
a)還有一些應用較廣泛的體系結(jié)構(gòu)風格從未用一種正式的描述方法刻畫過,或未被如文獻[17,18]那樣對其相似或近似的風格用一致的方法進行較全面的描述。例如分布式處理軟件體系結(jié)構(gòu)風格(分布式環(huán)境下構(gòu)建應用系統(tǒng)時用到的一種風格)中,只有客戶機/服務器(C/S)這種風格被描述和刻畫過[19],而與其相似的客戶機/服務器/服務器(C/S/S)、瀏覽器/服務器(B/S)、瀏覽器/服務器/服務器(B/S/S)風格卻沒有被描述和刻畫過。再如基于狀態(tài)轉(zhuǎn)換的軟件體系結(jié)構(gòu)風格,不少應用軟件系統(tǒng)在設(shè)計時采用的就是這種風格,但這種風格卻從未用一種正式的描述方法刻畫過。另外,新出現(xiàn)的和新提出的軟件體系結(jié)構(gòu)風格[1,5,20,21]基本上都沒有如文獻[17,18]那樣被描述過。
b)沒有一致、嚴格的方法描述不同軟件體系結(jié)構(gòu)風格?,F(xiàn)有的對軟件體系結(jié)構(gòu)風格的描述和刻畫在覆蓋范圍上是很有限的,主要是用一致的方法對相似或近似的體系結(jié)構(gòu)風格進行描述,還沒有人提出一種正式的方法可以具備描述刻畫大部分甚至所有軟件體系結(jié)構(gòu)風格的能力,所提出的方法[19]只能描述少數(shù)幾種不同的軟件體系結(jié)構(gòu)風格。也許這種理想的、能夠刻畫所有軟件體系結(jié)構(gòu)風格的方法根本不存在,但這個存在性問題現(xiàn)在還沒有相關(guān)研究對其進行探討。所以,在軟件體系結(jié)構(gòu)風格描述和刻畫的研究上,還值得去進一步研究的是提出一種新描述方法或改進現(xiàn)有的方法,使之在刻畫各種不同軟件體系結(jié)構(gòu)風格時具有較大的覆蓋范圍,從而使大多數(shù)的軟件體系結(jié)構(gòu)風格能用一致的方法進行描述和刻畫。在一致的描述和刻畫方法下,各種軟件體系結(jié)構(gòu)風格才易于比較、對照,易于選擇、集成。
2.2 軟件體系結(jié)構(gòu)風格特性的評估
軟件體系結(jié)構(gòu)風格特性的評估實際上是對某一軟件體系結(jié)構(gòu)風格多個不同實例的綜合性能評價。通過對選用某一軟件體系結(jié)構(gòu)風格創(chuàng)建的多個不同軟件體系結(jié)構(gòu)實例進行性能分析,可評估出這一軟件體系結(jié)構(gòu)風格在滿足軟件系統(tǒng)性能需求上能達到什么程度、存在什么缺陷,從而指導結(jié)構(gòu)設(shè)計師選取適合系統(tǒng)性能需求的軟件系統(tǒng)體系結(jié)構(gòu)風格進行軟件系統(tǒng)結(jié)構(gòu)設(shè)計和改進。目前這方面的研究不多,主要有文獻[22~25]。文獻[24]通過用系統(tǒng)建模方法對選用分層次的軟件體系結(jié)構(gòu)風格創(chuàng)建的軟體體系結(jié)構(gòu)進行性能評價,這種風格的采用在軟件工程實踐中是很頻繁的。實驗發(fā)現(xiàn),隨著任務量(客戶端數(shù)量)的增多,分層次風格的軟件系統(tǒng)的吞吐量先穩(wěn)步上升后趨于不變,而平均響應時間起初很短后來迅速上升。文獻[22]中,Shehory對多agent體系結(jié)構(gòu)風格中的主要體系結(jié)構(gòu)特性(包括agent自身的體系結(jié)構(gòu),分等級、平級和包容的多agent組織結(jié)構(gòu),分對稱、消息接收和連接方式的通信特性,分動態(tài)、靜態(tài)和離線的系統(tǒng)開放性,ANS(agent naming service)、ALS(agent location service)、安全服務和移動agent服務四個系統(tǒng)服務特性,系統(tǒng)健壯性以及代碼重用性這七個方面)進行定性評價,并通過研究三個不同的多agent體系結(jié)構(gòu)風格實例證實了多agent體系結(jié)構(gòu)風格適合于解決具有特定特征的問題。這些特定特征是指系統(tǒng)內(nèi)的信息、相關(guān)位置和控制均具有高度分布性,系統(tǒng)的各個組成部分是異構(gòu)而又自治的,整個系統(tǒng)環(huán)境是開放而又動態(tài)變化的且存在著不確定性。具有這些特征的系統(tǒng)采用多agent體系結(jié)構(gòu)風格來設(shè)計系統(tǒng)體系結(jié)構(gòu)風格是恰當?shù)?。文獻[25]則補充了Shaw等人[11]對軟件體系結(jié)構(gòu)風格研究的工作,通過從結(jié)構(gòu)組織方式、計算模型特點和設(shè)計詞匯表這幾個角度分別研究另外幾種體系結(jié)構(gòu)風格(基于CORBA、基于Web的分布式、領(lǐng)域?qū)<蚁到y(tǒng)和特定商業(yè)背景層次)的實例,淺層次討論了這幾種體系結(jié)構(gòu)風格的優(yōu)缺點。文獻[23]中提到用形式化方法對消息路由器體系結(jié)構(gòu)風格的特性進行分析和評估。這種風格因其具有能確保發(fā)送的消息到達目的地、消息到達時的順序與發(fā)送時的順序一致以及能確保收到的消息是有效的而不是已作廢的這三個典型優(yōu)秀特性,適合于創(chuàng)建像郵件服務或新聞發(fā)布這樣的系統(tǒng)。
目前,僅發(fā)現(xiàn)文獻[26]嘗試用基于評價矩陣的方法定量地對軟件體系結(jié)構(gòu)風格進行評估,還沒有人提出支持定量評估軟件體系結(jié)構(gòu)風格的工具。不過通過量化一些影響軟件體系結(jié)構(gòu)風格特性的因素,使用評估方法或評估工具使軟件體系結(jié)構(gòu)風格特性的評估能達到定量的程度是很有挑戰(zhàn)性的,也是很有意義的。
當前,有關(guān)軟件體系結(jié)構(gòu)風格特性評估的研究還是很初步的,存在著不少值得繼續(xù)深入研究的問題。
a)除比較新的多agent體系結(jié)構(gòu)風格外,其他體系結(jié)構(gòu)風格(包括常見的、不常見的和新出現(xiàn)的)都還沒有像Sheshory[22]那樣被研究者比較深入全面地對其具有的特性進行定性評估。這些研究工作對軟件結(jié)構(gòu)設(shè)計師的設(shè)計工作具有直接的指導作用,并且對定量評估軟件體系結(jié)構(gòu)風格研究也具有直接的促進作用。
b)缺少合適的評價方法或評價工具對軟件體系結(jié)構(gòu)風格的特性進行定量評估。雖然這方面的研究工作在當前開展是很困難的,但筆者認為不妨可以嘗試通過改進現(xiàn)有的比較優(yōu)秀的評價軟件體系結(jié)構(gòu)的一些方法或工具[27, 28],使之能夠支持軟件體系結(jié)構(gòu)風格的定量評估。
2.3 新的軟件體系結(jié)構(gòu)風格的提出
以Shaw 和Garlan為代表的研究者所總結(jié)的軟件體系結(jié)構(gòu)風格如管道/過濾器、層次、基于事件、面向?qū)ο蠛虲/S等體系結(jié)構(gòu)風格,在以往的軟件工程中常被用到。但隨著軟件開發(fā)技術(shù)的進步、Internet的應用和發(fā)展,為了有效地整合資源和共享資源,出現(xiàn)了網(wǎng)格計算、Web服務計算、基于agent的計算等新的計算方式。這些使得需要解決的問題復雜度越來越高,導致需要創(chuàng)建的應用系統(tǒng)更大、更復雜。在這些新的計算方式下,一些新的軟件體系結(jié)構(gòu)風格正在形成或被提出,主要有Fenkam等人[20]提出的雙重保護軟件體系結(jié)構(gòu)風格(dual protection style,DPS);Lee和Bae[13]將面向方面的軟件開發(fā)技術(shù)引入到交互式體系結(jié)構(gòu)風格中形成一種新的、具有較強解決復雜系統(tǒng)非功能性需求能力的軟件體系結(jié)構(gòu)風格;Birbilis等人[15]提出的E-Slate體系結(jié)構(gòu)風格;Hong等人[4]提出的一種網(wǎng)絡(luò)分布式軟件集成體系結(jié)構(gòu)風格(distributed software integration architectural style,DSIAS),利用其提供的結(jié)構(gòu)組織方式可將分布在網(wǎng)絡(luò)中的多個COTS(commercial off-the-shelf)軟件系統(tǒng)集成為一個CBS(COTS based system);Juric等人[1]提出層次的基于構(gòu)件體系結(jié)構(gòu)風格,利用這種風格來支持多類型數(shù)據(jù)庫(關(guān)系型數(shù)據(jù)庫、對象型數(shù)據(jù)庫、XML數(shù)據(jù)倉庫和MMDB等)間的互操作;張世琨等人[21]提出的基于層消息總線的軟件體系結(jié)構(gòu)風格(Jade bird hierarchical message bus-based style, JB/HMB),利用這種風格支持構(gòu)建具有分布和并發(fā)特征的系統(tǒng);Myuymki等人[6]通過分析軟件產(chǎn)業(yè)界幾種軟件產(chǎn)品線,提出一種產(chǎn)品線軟件體系結(jié)構(gòu)風格(product-line architectural style), 可以利用這種風格來解釋和區(qū)分軟件業(yè)現(xiàn)有產(chǎn)品線的軟件系統(tǒng)產(chǎn)品的體系結(jié)構(gòu);Shehory[22]曾定性評估過其特性的多agent體系結(jié)構(gòu)風格。
以上這些新提出的軟件體系結(jié)構(gòu)風格自身所具有的特點,使之能解決一定范圍內(nèi)的問題,但另外一些問題的解決也需要相應的體系結(jié)構(gòu)風格來支持。例如在網(wǎng)格計算方式下,不少網(wǎng)格計算模型(五層沙漏結(jié)構(gòu)模型、開放網(wǎng)格服務結(jié)構(gòu)模型OGSA和織女星結(jié)構(gòu)模型Vega grid等)被提出,那么應該有不同的軟件體系結(jié)構(gòu)風格分別支持這些計算模型環(huán)境中的應用軟件系統(tǒng)的創(chuàng)建,但目前還沒有這樣的軟件體系結(jié)構(gòu)風格被提出。僅文獻[29]針對OGSA提出一種網(wǎng)格計算軟件體系結(jié)構(gòu)(computing-grid software architecture, CGSA)設(shè)計方式,但沒有實現(xiàn)。再如,在Web服務計算方式下,有不少Web服務組織方式被提出,而在這些Web服務組織方式環(huán)境中創(chuàng)建應用軟件系統(tǒng)也需要有合適的軟件體系結(jié)構(gòu)風格支持。所以在這個研究方向還需要更多的新的軟件體系結(jié)構(gòu)風格被提出。
2.4 不同軟件體系結(jié)構(gòu)風格的集成
越來越大、越來越復雜的應用系統(tǒng)的創(chuàng)建,尤其是將幾個屬于不同體系結(jié)構(gòu)風格的子系統(tǒng)集成為一個完整的復雜大系統(tǒng),僅靠單獨一種體系結(jié)構(gòu)風格的指導是很難滿足需求的。解決這個問題的一種趨勢是通過將若干種軟件體系結(jié)構(gòu)風格集成,再用來指導系統(tǒng)的創(chuàng)建。在集成過程中要考慮兩個問題,即有選擇的集成和用什么方法集成。其中,有選擇的集成就是指選擇將哪幾種風格集成在一起。在集成方法的研究上,比較正式而又深入討論的目前只有文獻[30]。在這篇文獻中,作者提出一種在體系結(jié)構(gòu)組成層次上利用ADLs(architecture description languages)相互替換的集成方法。這種方法的優(yōu)勢在于允許屬于不同體系結(jié)構(gòu)風格的體系結(jié)構(gòu)用不同的ADL描述,因為這種集成方法不是在描述語言層次上;但其明顯不足是采用這種方法的前提是先要對待集成的、屬于不同軟件體系結(jié)構(gòu)風格的體系結(jié)構(gòu)用ADL描述出來。對于有選擇的集成這個問題,目前還沒有相關(guān)研究文獻??梢?,對于不同軟件體系結(jié)構(gòu)風格集成的研究,當前還處于初步階段,尤其是針對有選擇集成的研究還是空白,集成方法的研究也很欠缺。
3 總結(jié)
對軟件體系結(jié)構(gòu)風格的研究是很重要的。筆者通過研究具有代表性的軟件體系結(jié)構(gòu)風格定義的描述,發(fā)現(xiàn)現(xiàn)有的定義在客觀性和全面性方面存在著不足。為此,本文嘗試站在軟件工程的高度,比較客觀地從多方面對軟件體系結(jié)構(gòu)風格進行定義。同時,通過對軟件體系結(jié)構(gòu)研究現(xiàn)狀進行分析,發(fā)現(xiàn)并指出軟件體系結(jié)構(gòu)風格描述與刻畫、軟件體系結(jié)構(gòu)風格特性評估、新軟件體系結(jié)構(gòu)風格的提出和不同軟件體系結(jié)構(gòu)風格集成這四個重點研究方向及各自存在的需要進行深入研究的問題。
參考文獻:
[1]JURIC R, KULJIS J, PAUL R. Software architectural style for interoperable databases[C]//Proc of the 26th International Conference on Information Technology Interfaces. Zagreb: University Computing Centre, 2004:159-166.
[2]MONROE R T, GARLAN D. Style-based reuse for software architectures[C]//Proc of the 4th International Conference on Software Reuse. Washington DC: IEEE Computer Society,1996: 84-93.
[3]GAMBLE R F, STIGER P R, PLANT R T. Rule-based systems formalized within a software architectural style[J]. Knowledge-based Systems, 1999, 12(1-2): 13-26.
[4]HONG Zen-wei, LIN J M, CHEN De-sheng, et al. DSIAS: a software architectural style for distributed software integration systems[C]// Proc of the 25th International Conference ofComputer Software and Applications Conference. Washington DC: IEEE Computer Society, 2001:291-296.
[5]BIRBILIS G, KOUTLIS M, KYRIMIS K, et al.E-Slate: a software architectural style for end-user programming[C]//Proc of the 22nd International Conference on Software Engineering. New York: ACM Press, 2000:684-687.
[6]MYLLYMKI T, KOSKIMIES K, MIKKONEN T. Structuring pro-duct lines: a layered architectural style[C]//Proc of the 8th International Confenence on Object-Oriented Intormation Systems. London: Springer-Verlag, 2002:482-487.
[7]HEISEL M, LEVY N. Using LOTOS patterns to characterize architectural styles[C]//Proc of the 7th International Conference on Theory and Practice of Software Development. London: Springer-Verlag,1997:818-832.
[8]STUURMAN S, VAN KATWIJK J. Evaluation of software architectures for a control system: a case study[C]//Proc of the 2nd International Conference on Coordination Languages and Models. Berlin: Springer, 1997: 157-171.
[9]PERRY D E, WOLF A L. Foundations for the study of software architecture[J]. ACM SIGSOFT Software Engineering Notes, 1992, 17(4):40-52.
[10]BUSCHMANN F, MEUNIER R, ROHNERT H, et al. Pattern-oriented software architecture, volume 1: a system of patterns[M]. Chichester: Wiley, 1996: 229-237.
[11]SHAW M, GARLAN D. Software architecture: perspectives on an emerging[M]. New Jersey: Prentice Hall, 1996: 19-32.
[12]SHAW M, CLEMENTS P. A field guide to boxology: preliminary classification of architectural styles for software systems[C]//Proc of the 21st International Computer Software and Applications Confe-rence. Washington DC: IEEE Computer Society, 1997: 6-13.
[13]LEE J S, BAE D H. An aspect-oriented framework for developing component-based software with the collaboration-based architectural style[J]. Information and Software Technology, 2004, 46(2): 81-97.
[14]ABOWD G, ALLEN R, GARLAN D. Using style to understand descriptions of software architecture[J].Software Engineering Notes, 1993, 18(5):9-20.
[15]MIKKONEN T,PITKNEN R, PUSSINEN M. On the role of architectural style in model driven development[C]//Lecture Notes in Computer Science, vol 3047. 2004: 74-87.
[16]KOLP M, GIORGINI P, MYLOPOULS J. A goal-based organizatio-nal perspective on multi-agent architectures[C]//Lecture Notes in Computer Science, vol 2333. 2002:128-140.
[17]ACHEMANN F, KNEUBUEHL S, NIERSTRASZ O. Scripting coordination styles[C]//Proc of the 4th International Conference on Coordination Languages and Models. London: Springer-Verlag, 2000: 19-35.
[18]LOULOU I, KACEM A H. Compositional specification of event-based software architectural styles[C]//Proc of the IEEE International Conference on Computer Systems and Applications. Washington DC: IEEE Computer Society, 2006:337-344.
[19]焦文品,史忠植. 用XYZ/E形式化體系結(jié)構(gòu)風格[J]. 軟件學報,2000, 11(3): 410-415.
[20]FENKAM P, GALL H, JAZAYERI M, et al. DPS: an architectural style for development of secure software[C]//Lecture Notes in Computer Science, vol2437. 2002: 180-198.
[21]王立福,楊芙清,張世琨. 基于層次消息總線的軟件體系結(jié)構(gòu)風格[J]. 中國科學E輯, 2002, 32(3):393- 400.
[22]SHEHORY O. Software architecture attributes of multi-agent systems[C]//Proc of the 1st International Workshop on Agent-Oriented Software Engineering. 2001: 77-90.
[23]CIANCARINI P, MASCOLO C. Analyzing and refining an architectural style[C]//Lecture Notes in Computer Science, vol 1212. 1997: 347-368.
[24]SHARMA V S, JALOTE P, TRIVEDI K S. Evaluating performance attributes of layered software architecture[C]//Lecture Notes in Computer Science, vol 3489. 2005:66-81.
[25]葉俊民,趙恒,曹瀚,等. 軟件體系結(jié)構(gòu)風格的實例研究[J]. 小型微型計算機系統(tǒng),2002, 23(10):1158-1160.
[26]李瑩瑩,孫全玲,袁兆山. 基于評價矩陣的軟件體系結(jié)構(gòu)風格選取[J]. 淮北煤炭師范學院學報:自然科學版, 2005, 26(4): 65-67.
[27]劉霞,李明樹,王青,等. 軟件體系結(jié)構(gòu)分析與評價方法評述[J]. 計算機研究與發(fā)展, 2005, 42(7):1247-1254.
[28]胡紅雷,毋國慶,梁正平,等. 軟件體系結(jié)構(gòu)評估方法的研究[J]. 計算機應用研究, 2004, 21(6): 11-14.
[29]LI Ming-lu, SUN Xian-he, et al. Research on computing grid software architecture[C]//Lecture Notes in Computer Science, vol 3032. 2004: 817-820.
[30]SNBUL A. Abstract state machines for the composition of architectural styles[C]//Lecture Notes in Computer Science, vol 1755. 2000: 54-61.
[31]HECKEL R, THONE S. Behavior-preserving refinement relations between dynamic software architectures[C]//Lecture Notes in Computer Science, vol 3423. 2005: 1-27.
[32]張友生.軟件體系結(jié)構(gòu)[M].北京: 清華大學出版社, 2003:159-165.
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文