目前軟件體系結構的現狀如何呢?軟件體系結構的發展趨勢又是什么呢?這就是本文要介紹的內容。
原文地址: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、軟件體系結構的建模研究
(1)結構模型
這是一個最直觀、最普遍的建模方法。這種方法以體系結構的構件、連接件和其他概念來刻畫結構,并力圖通過結構來反映系統的重要語義內容,包括系統的配置、約束、隱含的假設條件、風格、性質。研究結構模型的核心是體系結構描述語言。
(2)框架模型
框架模型與結構模型類似,但它不太側重描述結構的細節而更側重于整體的結構。框架模型主要以一些特殊的問題為目標建立只針對和適應該問題的結構。
(3)動態模型
動態模型是對結構或框架模型的補充,研究系統的"大顆粒"的行為性質。例如,描述系統的重新配置或演化。動態可能指系統總體結構的配置、建立或拆除通信通道或計算的過程。這類系統常是激勵型的。
(4)過程模型
過程模型研究構造系統的步驟和過程。因而結構是遵循某些過程腳本的結果。
(5)功能模型
該模型認為體系結構是由一組功能構件按層次組成,下層向上層提供服務。它可以看作是一種特殊的框架模型。
這5種模型各有所長,也許將5種模型有機地統一在一起,形成一個完整的模型來刻畫軟件體系結構更合適。例如,Kruchten在1995年提出了一個“4+1”的視角模型。“4+1”模型從5個不同的視角包括邏輯視角、過程視角、物理視角、開發視角和場景視角來描述軟件體系結構。每一個視角只關心系統的一個側面,5個視角結合在一起才能夠反映系統的軟件體系結構的全部內容。“4+1”模型如圖1所示。
4、發展基于體系結構的軟件開發模型
軟件開發模型是跨越整個軟件生存周期的系統開發、運行、維護所實施的全部工作和任務的結構框架,給出了軟件開發活動各階段之間的關系。目前,常見的軟件開發模型大致可分為三種類型:
(1)以軟件需求完全確定為前提的瀑布模型。
(2)在軟件開發初始階段只能提供基本需求時采用的漸進式開發模型,如螺旋模型等。
(3)以形式化開發方法為基礎的變換模型。
所有開發方法都是要解決需求與實現之間的差距。但是,這三種類型的軟件開發模型都存在這樣或那樣的缺陷,不能很好地支持基于軟件體系結構的開發過程。因此,研究人員在發展基于體系結構的軟件開發模型方面做了一定的工作。例如,為了形象地表示體系結構的生命周期,北京郵電大學的周瑩新博士建立了一個軟件體系結構的生命周期模型,該模型如圖2所示。
5、軟件產品線體系結構的研究
一個產品線代表著一組具有公共的系統需求集的軟件系統,它們都是根據基本的用戶需求對標準的產品線構架進行定制,將可重用構件與系統獨有的部分集成而得到的。采用軟件生產線式模式進行軟件生產,將產生巨型編程企業。但目前生產的軟件產品族大部分是處于同一領域的。
二、研究熱點
當前,體系結構仍是一個非常新的研究領域,其概念還相當模糊。但軟件體系結構作為軟件工程領域中的一個組成部分,已經取得了長足的發展,受到大多數軟件系統設計和研究人員的重視。
軟件體系結構目前較活躍的研究方向包括:(1)軟件體系結構形式基礎的研究;(2)針對軟件體系結構描述中特有的問題研究新的專門的高級語言;(3)建立用于度量和評價軟件體系結構的模型和方法;(4)建立面向專門領域的軟件體系結構范型庫。(5)把軟件體系結構從目前的直覺和經驗狀態過渡到理論。
1、提供新的軟件體系結構描述語言
這種描述語言的目的就是提供一種規范化的體系結構描述,從而使得體系結構的自動化分析變得可能。研究人員已經設計出了近二十種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方法的文獻。
三、發展方向
1、各種ADLs之間的信息互換
現有的ADLs大多是與領域相關的,所以不利于對不同領域體系結構的說明。但這些針對不同領域的ADLs在某些方面又大同小異,造成資源的冗余。其實,大多數ADLs具有一系列的共同概念。如何用一種公共形式把各種語言綜合起來,使得能夠交換各種體系結構描述信息,將是今后軟件體系結構研究和實踐的重點之一。
2、設計工具和環境
軟件體系結構設計既然作為軟件工程的一部分,它的計算機輔助實現手段是相當重要的。我們應當開發出一些軟件工具來實現體系結構的描述和分析,開發階段轉換工具,以實現階段成果的自動轉換,例如,把需求規格說明自動轉換為構件等。目前關于這方面的研究成果很少,特別是可以應用到實際項目開發中的工具和環境就更少。
3、體系結構再工程
當今軟件系統的規模變得越來越大,結構也越來越復雜,同時從頭開始構建的大系統數量在急劇地減少,因而很多遺留系統正在被逐步地利用。從遺留系統軟件代碼和系統中抽取結構信息,經過描述、統一、抽象、一般化與實例化等處理,可總結出系統的體系結構。
在這種情況下,軟件再工程變得越來越重要,因為它提供了一條把遺留系統轉換為可進化系統的現實可行的途徑,是一種可以改進人們對軟件的理解和改進軟件本身的活動。這類研究的目的是為一些特定的應用領域的軟件系統提供一些體系結構框架,如控制系統、移動機器人和用戶接口界面等。通過這些框架可以很方便地構造一個新的軟件系統。
本博客為學習交流用,凡未注明引用的均為本人作品,轉載請注明出處,如有版權問題請及時通知。由于博客時間倉促,錯誤之處敬請諒解,有任何意見可給我留言,愿共同學習進步。