走在架構師的大道上 Jack.Wang's home

          Java, C++, linux c, C#.net 技術,軟件架構,領域建模,IT 項目管理 Dict.CN 在線詞典, 英語學習, 在線翻譯

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            195 Posts :: 3 Stories :: 728 Comments :: 0 Trackbacks

          目前軟件體系結構的現狀如何呢?軟件體系結構的發展趨勢又是什么呢?這就是本文要介紹的內容。目前,軟件體系結構尚處在迅速發展之中,越來越多的研究人員正在把注意力投向軟件體系結構的研究。用于對軟件體系進行規格描述的模型、標記法和工具仍很不正規。盡管這些不正規的模型是有用的,為使之更為精確和健壯,在很多方面的研究工作還需要繼續進行。

          原文地址:http://www.qqread.com/soft-engineering/z405613.html

          關于軟件體系結構的研究工作主要在國外展開的,國內到目前為止對于軟件體系結構的研究尚處在起步階段。軟件體系結構在國內未引起人們廣泛注意的原因主要有兩點:

          (1)軟件體系結構從表面上看起來是一個老話題,似乎沒有新東西。

          (2)與國外相比,國內對大型和超大型復雜軟件系統開發的經歷相對較少,對軟件危機的災難性體會沒有國外深刻,因而對軟件體系結構研究的重要性和必要性的認識還不很充分。

          一、應用現狀

          1、形成研究熱點,仍處于非形式化水平

          自20世紀90年代后期以來,軟件體系結構的研究成為一個熱點。廣大軟件工作者已經認識到軟件體系結構研究的重大意義和它對軟件系統設計開發的重要性,開展了很多研究和實踐工作。

          從軟件體系結構研究的現狀來看,當前的研究和對軟件體系結構的描述,在很大程度上來說還停留在非形式化的基礎上。軟件構架師仍然缺乏必要的工具,這種工具應該是顯式描述的、有獨立性的形式化工具。

          在目前通用的軟件開發方法中,其描述通常是用非形式化的圖和文本,不能描述系統期望的存在于構件之間的接口,不能描述不同的組成系統的組合關系的意義。難以被開發人員理解,更不能用來分析其一致性和完整性等特性。

          當一個軟件系統中的構件之間幾乎以一種非形式化的方法描述時,系統的重用性也會受到影響,在設計一個系統結構過程中的努力很難移植到另一個系統中去。對系統構件和連接關系的結構化假設沒有得到顯式的、形式化的描述時,把這樣的系統構件移植到另一個系統中去將是有風險的,甚至是不可能的。

          2、軟件體系結構的形式化方法研究

          軟件體系結構研究如果僅僅停留在非形式化的框圖階段,已經難以適應進一步發展的需要。為支持基于體系結構的開發,需要有形式化建模符號、體系結構說明的分析與開發工具。從軟件體系結構研究的現狀來看,在這一領域近來已經有不少進展,其中比較有代表性的是美國卡耐基梅隆大學(Carnegie Mellon University)的Robert J.A11en于l997年提出的Wright系統。Wright是-種結構描述語言,該語言基于一種形式化的、抽象的系統模型,為描述和分析軟件體系結構和結構化方法提供了一種實用的工具。Wright主要側重于描述系統的軟件構件和連接的結構、配置和方法。它使用顯式的、獨立的連接模型來作為交互的方式,這使得該系統可以用邏輯謂詞符號系統,而不依賴特定的系統實例來描述系統的抽象行為。該系統還可以通過一組靜態檢查來判斷系統結構規格說明的一致性和完整性。從這些特性的分析來說,Wright系統的確適用于對大型系統的描述和分析。

          3、軟件體系結構的建模研究

          研究軟件體系結構的首要問題是如何表示軟件體系結構,即如何對軟件體系結構建模。根據建模的側重點的不同,可以將軟件體系結構的模型分為5種:結構模型、框架模型、動態模型、過程模型和功能模型。在這5個模型中,最常用的是結構模型和動態模型。

          (1)結構模型

          這是一個最直觀、最普遍的建模方法。這種方法以體系結構的構件、連接件和其他概念來刻畫結構,并力圖通過結構來反映系統的重要語義內容,包括系統的配置、約束、隱含的假設條件、風格、性質。研究結構模型的核心是體系結構描述語言。

          (2)框架模型

          框架模型與結構模型類似,但它不太側重描述結構的細節而更側重于整體的結構。框架模型主要以一些特殊的問題為目標建立只針對和適應該問題的結構。

          (3)動態模型

          動態模型是對結構或框架模型的補充,研究系統的"大顆粒"的行為性質。例如,描述系統的重新配置或演化。動態可能指系統總體結構的配置、建立或拆除通信通道或計算的過程。這類系統常是激勵型的。

          (4)過程模型

          過程模型研究構造系統的步驟和過程。因而結構是遵循某些過程腳本的結果。

          (5)功能模型

          該模型認為體系結構是由一組功能構件按層次組成,下層向上層提供服務。它可以看作是一種特殊的框架模型。
          這5種模型各有所長,也許將5種模型有機地統一在一起,形成一個完整的模型來刻畫軟件體系結構更合適。例如,Kruchten在1995年提出了一個“4+1”的視角模型。“4+1”模型從5個不同的視角包括邏輯視角、過程視角、物理視角、開發視角和場景視角來描述軟件體系結構。每一個視角只關心系統的一個側面,5個視角結合在一起才能夠反映系統的軟件體系結構的全部內容。“4+1”模型如圖1所示。 

          詳解軟件體系結構的現狀及發展方向(圖一)
          圖1:“4+1”模型

          4、發展基于體系結構的軟件開發模型

          軟件開發模型是跨越整個軟件生存周期的系統開發、運行、維護所實施的全部工作和任務的結構框架,給出了軟件開發活動各階段之間的關系。目前,常見的軟件開發模型大致可分為三種類型:
          (1)以軟件需求完全確定為前提的瀑布模型。

          (2)在軟件開發初始階段只能提供基本需求時采用的漸進式開發模型,如螺旋模型等。

          (3)以形式化開發方法為基礎的變換模型。

          所有開發方法都是要解決需求與實現之間的差距。但是,這三種類型的軟件開發模型都存在這樣或那樣的缺陷,不能很好地支持基于軟件體系結構的開發過程。因此,研究人員在發展基于體系結構的軟件開發模型方面做了一定的工作。例如,為了形象地表示體系結構的生命周期,北京郵電大學的周瑩新博士建立了一個軟件體系結構的生命周期模型,該模型如圖2所示。

          詳解軟件體系結構的現狀及發展方向(圖二)
          圖2:軟件體系結構的生命周期模型

          5、軟件產品線體系結構的研究

          軟件體系結構的開發是大型軟件系統開發的關鍵環節。體系結構在軟件生產線的開發中具有至關重要的作用,在這種開發生產中,基于同一個軟件體系結構,可以創建具有不同功能的多個系統。在軟件產品族之間共享體系結構和一組可重用的構件,可以增加軟件工程和降低開發和維護成本。

          一個產品線代表著一組具有公共的系統需求集的軟件系統,它們都是根據基本的用戶需求對標準的產品線構架進行定制,將可重用構件與系統獨有的部分集成而得到的。采用軟件生產線式模式進行軟件生產,將產生巨型編程企業。但目前生產的軟件產品族大部分是處于同一領域的。

          二、研究熱點

          當前,體系結構仍是一個非常新的研究領域,其概念還相當模糊。但軟件體系結構作為軟件工程領域中的一個組成部分,已經取得了長足的發展,受到大多數軟件系統設計和研究人員的重視。

          軟件體系結構目前較活躍的研究方向包括:(1)軟件體系結構形式基礎的研究;(2)針對軟件體系結構描述中特有的問題研究新的專門的高級語言;(3)建立用于度量和評價軟件體系結構的模型和方法;(4)建立面向專門領域的軟件體系結構范型庫。(5)把軟件體系結構從目前的直覺和經驗狀態過渡到理論。

          1、提供新的軟件體系結構描述語言

          在提高軟件工程師對軟件系統的描述和理解能力中,雖然軟件體系結構描述起著重要作用,但這些抽象的描述通常是非形式化的和隨意的。體系結構設計經常難以理解,難以適于進行形式化分析和模擬,缺乏相應的支持工具幫助構架師完成設計工作。為了解決這個問題,用于描述和推理的形式化語言得以發展,這些語言就叫做體系結構描述語言(Architecture Description Language), ADLs尋求增加軟件體系結構設計的可理解性和重用性。

          ADL是這樣一種語言,系統構架師可以利用它所提供的特性進行軟件系統概念體系結構建模。ADL提供了具體的語法與刻畫體系結構的概念框架。ADLs使得系統開發者能夠很好地描述他們設計的體系結構,以便與人交流,能夠用提供的工具對許多實例進行分析。

          這種描述語言的目的就是提供一種規范化的體系結構描述,從而使得體系結構的自動化分析變得可能。研究人員已經設計出了近二十種ADLs,比較有影響力的有C2、UniCon、MetaH、Aesop、SADL、Rapide、Wright等。這些語言能夠對體系結構連接器進行第一級抽象,同時還能描述模型的結構和內部構件之間的交互作用,并且還引入了一些新的系統分析模式。

          2、對軟件體系結構的專門知識的整理

          這方面的工作主要是對軟件工程師在軟件開發實踐中得來的各種體系結構的原則、模式的整理和分類。例如,對軟件體系結構風格的分類和比較,對體系結構描述語言的綜合分析等。就目前看來,國內對軟件體系結構的研究主要集中在對軟件體系結構的專門知識的整理上。

          3、提供特定領域的體系結構框架

          最近,開發特定的領域去為產品提供可重用框架日益受到關注。這些開發基于這樣的想法:可以提取相關系統中的共同方面,以便可以通過低成本地把這些共同的設計實例化來構筑新系統。常見的例子有:

          (1)編譯器的標準分解。這個方法可以使一個本科生在一個學期時間內構造一個新的語言編譯系統。

          (2)標準化的通訊協議。這個可以使廠家通過在不同層次的抽象上提供服務來互相操縱。

          (3)第四代語言。利用4GL開發出商務信息處理的通用范式。

          (4)用戶界面工具和框架。這個方法為開發者提供了一個可重用框架以及象菜單、對話框這樣的可重用構件的集合。

          軟件體系結構充當一個理解系統構件和它們之間關系的框架,特別是那些始終跨越時間和實現的屬性。這個理解對于現在系統的分析和未來系統的綜合很有必要。在分析和支持下,體系結構抓住領域知識和實際的一致,促進設計的評估和構件的實施,減少仿真和構造原型。在綜合的支持下,體系結構提供了建立系列產品的基礎,以可預測的方式利用領域知識構造和維護模塊、子系統和系統。

          4、提供軟件體系結構的形式化基礎

          對體系結構設計的推理的形式化表示使得體系結構級的設計更好地被理解、被實現。它的目的是對體系結構設計人員在實踐過程中總結出來的一些設計的經驗和方法加以總結、概括,從而形成一個形式化的描述,形成一定的理論基礎(以代替當前的不精確的研究)。已提出一些形式化機制,如過程代數、偏序集合、化學抽象機等。希望對系統的非功能特性如性能、可維護性等給出形式特征,同時給出軟件體系結構的理論。

           

          5、建立評價軟件體系結構的方法

          通過分析來預見軟件的質量,通過分析來創建、選擇、評估與比較不同的體系結構。例如,Kazman等人在2000年提出的ATAM(Architectural Tradeoff Analysis Method)方法。ATAM方法不但能夠揭示體系結構如何滿足特定的質量需求(例如性能和可修改性),而且還提供了分析這些質量需求之間交互作用的方法。使用ATAM方法評價一個軟件體系結構的目的是理解體系結構設計滿足系統質量需求的結果。采用ATAM方法的步驟如圖3所示,限于篇幅,在此不再詳細介紹具體步驟,有興趣的讀者可查閱有關ATAM方法的文獻。

          詳解軟件體系結構的現狀及發展方向(圖三)
          圖3:采用ATAM方法的步驟


          三、發展方向

          1、各種ADLs之間的信息互換

          現有的ADLs大多是與領域相關的,所以不利于對不同領域體系結構的說明。但這些針對不同領域的ADLs在某些方面又大同小異,造成資源的冗余。其實,大多數ADLs具有一系列的共同概念。如何用一種公共形式把各種語言綜合起來,使得能夠交換各種體系結構描述信息,將是今后軟件體系結構研究和實踐的重點之一。

          2、設計工具和環境

          軟件體系結構設計既然作為軟件工程的一部分,它的計算機輔助實現手段是相當重要的。我們應當開發出一些軟件工具來實現體系結構的描述和分析,開發階段轉換工具,以實現階段成果的自動轉換,例如,把需求規格說明自動轉換為構件等。目前關于這方面的研究成果很少,特別是可以應用到實際項目開發中的工具和環境就更少。

          3、體系結構再工程

          當今軟件系統的規模變得越來越大,結構也越來越復雜,同時從頭開始構建的大系統數量在急劇地減少,因而很多遺留系統正在被逐步地利用。從遺留系統軟件代碼和系統中抽取結構信息,經過描述、統一、抽象、一般化與實例化等處理,可總結出系統的體系結構。

          在這種情況下,軟件再工程變得越來越重要,因為它提供了一條把遺留系統轉換為可進化系統的現實可行的途徑,是一種可以改進人們對軟件的理解和改進軟件本身的活動。這類研究的目的是為一些特定的應用領域的軟件系統提供一些體系結構框架,如控制系統、移動機器人和用戶接口界面等。通過這些框架可以很方便地構造一個新的軟件系統。





          本博客為學習交流用,凡未注明引用的均為本人作品,轉載請注明出處,如有版權問題請及時通知。由于博客時間倉促,錯誤之處敬請諒解,有任何意見可給我留言,愿共同學習進步。
          posted on 2008-09-14 21:22 Jack.Wang 閱讀(1084) 評論(0)  編輯  收藏 所屬分類: 架構師篇
          主站蜘蛛池模板: 商河县| 江西省| 韩城市| 镇江市| 石林| 天峨县| 团风县| 曲松县| 古田县| 耒阳市| 武强县| 赤壁市| 宕昌县| 太湖县| 兴安县| 军事| 海阳市| 宜川县| 宁强县| 弥勒县| 双桥区| 读书| 岐山县| 碌曲县| 廉江市| 新田县| 丹江口市| 凤凰县| 沭阳县| 元阳县| 宁德市| 喀什市| 梓潼县| 满洲里市| 大同市| 石棉县| 苗栗县| 绥棱县| 丰都县| 合川市| 梁河县|