劉宇辰
(哈爾濱市醫(yī)藥工程學校,哈爾濱150040)
淺談軟件體系結構的研究
劉宇辰
(哈爾濱市醫(yī)藥工程學校,哈爾濱150040)
隨著軟件體系規(guī)模越來越大,軟件的制作過程也越來越復雜。軟件設計的核心已經不再是傳統(tǒng)的“算法+數據結構=程序”的計算設計模式,取而代之的是系統(tǒng)的總體結構設計和規(guī)范。軟件體系結構研究的主要內容涉及軟件體系結構描述、風格、評價和形式化方法等。討論了軟件體系結構的研究背景、概念、研究內容及發(fā)展趨勢。
軟件體系結構;軟件工程;軟件開發(fā)
就像是城市中規(guī)劃的一個個社區(qū)一樣,每個軟件系統(tǒng)都有它的體系結構。但在以往的眾多軟件工程實踐中,體系結構的設計通常都是非形式化的、隨意的,所產生的是不能對軟件進行維護與分析的弊端。由此帶來的直接后果是:體系結構的設計僅僅被開發(fā)人員模糊領悟,將其選擇大多建立在以往的直覺與閱歷上,并不在牢固的工程原則上。造成幾乎不能對體系結構上面的設計做出同等且完備的分析。隨著系統(tǒng)的不斷演變,使得體系結構不能得到良好的維系,并且欠缺有效工具來協(xié)助人們設計完善的體系結構。事實上,每個軟件都有屬于它的體系結構,一個沒有體系結構的軟件是不存在的。如果把一個軟件比作一輛汽車,從它的全體上來講,是由于它存在核心組件、外部修飾和基本框架。放在軟件中便是基于操作系統(tǒng)上的能達成計算邏輯的主體應用程序、利于用戶操作使用的界面程序以及基本框架軟件。這也使得人們著手注重軟件體系結構,并深入的對其進行研究與總結。
起初都是利用語句來構成模塊進而完成結構化程序。模塊的集中與嵌套形成了層層調用的程序結構,這也就形成了體系結構。表達結構下的程序、計算表達的邏輯結構的同等性以及自上而下的開發(fā)手段,順其自然地形成了一套體系結構。因為,在程序的整體范圍并不算龐大的結構化程序設計時期,只需要利用強調結構化程序策劃的方法,自上而下慢慢地不斷改進,并著重解決好各模塊間的關聯(lián)程度問題就可以得到一個比較優(yōu)秀的結構。所以在當時并沒有特別著重地探求軟件體系結構。但是當軟件的整體規(guī)模和繁瑣度日趨提高,軟件危機(即軟件的整體質量、復用與維護的問題)的程度也日漸嚴重,已有的開發(fā)方法已經遲延于現(xiàn)實對軟件的需求,因此人們通過研究與實踐形成了一套利用工程化的措施來進行軟件開發(fā)的新模式,這一措施便是軟件工程。而隨著軟件工程在實際中的深入應用,人們慢慢地領悟到:伴著軟件體系繁復程度和規(guī)模的不斷增長,系統(tǒng)的總體結構設計與相關規(guī)格描述的關鍵性已經大幅跨越了特定算法與數據結構的相應選擇,并且擁有一個優(yōu)秀的體系結構對于確保系統(tǒng)的完美運行是不可或缺的。于是關于軟件體系結構的研究便應運而生。
自20世紀90年代后期以來,在軟件工程領域的主流探討慢慢成為針對軟件體系結構的探討,并為眾多的軟件成品和大型的軟件系統(tǒng)開發(fā)提供主要技術支持,逐漸地被業(yè)內所重視。特別是近年來關于軟件體系結構的探討更是整體自立于軟件工程,成為計算機科學領域的新興熱門與特殊分支。
2.1 軟件體系結構的定義
盡管軟件體系結構在整個軟件工程領域里已被普遍地運用,可其能夠完全被學界所認可的定義至今未有。眾多的專家學者都從各個不同的方面入手,對軟件體系結構給予了定義上的表述。在這里筆者通過對各種表述的解讀和對軟件體系結構的研究,從而將其定義概括為:軟件體系結構是一個程序或者系統(tǒng)構件的組織結構,是它們之間的關聯(lián)以及支配系統(tǒng)的設計和演變的方針與原則。
2.2 軟件體系結構的研究內容
通常,一個系統(tǒng)的軟件體系結構都是由一組算法構件、彼此交互的構件、連接件以及構件與連接件結合在一起時的限制描述而組成。一個特定系統(tǒng)大多是通過構件間眾多的集合同構件彼此交互來給予其定義的,并且這種系統(tǒng)往往能夠作為一個豐富的元素提供給相關大型系統(tǒng),以服務于開發(fā)人員對大型系統(tǒng)的設計。
由于軟件體系結構不但為系統(tǒng)確立了其組織結構與拓撲結構,并且還給出了用以組成系統(tǒng)的元素與系統(tǒng)需求間的對照關系。所以軟件體系結構的研究內容主要涉及到對其進行結構描述、風格定義、評價體系和體系結構組成的形式化方法等內容。目前,在軟件體系結構的研究領域中,人們通常針對模塊化接口語言、專屬領域下的體系結構、軟件復用的規(guī)范化、基于體系結構設計下的環(huán)境與形式化來進行深入的研究。并且通過:建立針對特定范疇的體系結構范型庫,利用軟件體系結構的模型建立檢測與評估系統(tǒng),對于在軟件體系結構的描述中出現(xiàn)的特殊問題而探索出新的專屬高級語言,將軟件體系結構依靠當前的直觀感覺與實際體驗狀態(tài)生成新理論等四個方向入手進行研究。從而達到利用體系結構的開發(fā)人員在實踐中總結出來的設計經驗與開發(fā)方法,來產生一個形式化的描述,最后成為確定性的理論基礎的目的。
現(xiàn)今軟件體系結構的發(fā)展趨勢主要是以軟件體系結構為基礎而進行的軟件開發(fā)。它的開發(fā)方式大多是鑒于架構與構件。跟傳統(tǒng)軟件開發(fā)過程相比較,其在重用的元素、開發(fā)方法上有著巨大的差異。雖然都是通過面向對象技術來推動軟件的重用,不過它只是達成了類與類之間繼承的重用,而在全盤系統(tǒng)與類之間依然保有著明顯的差距。為填補這個差距人們先后嘗試了很多方法,例如改變系統(tǒng)體系結構、改變設計模式等等。而軟件體系結構的應運而生則給軟件系統(tǒng)提供了一個來自屬性、結構與行為等全方位的高級抽象,使得軟件體系結構的準確策劃與選取成為了軟件系統(tǒng)成功與否的重要因素。通過研究人員的實踐與總結,將鑒于軟件體系結構的軟件開發(fā)步驟分為四步,即:需求分析、進行體系結構設計、對連接件與構件進行規(guī)劃、軟件成品測試與系統(tǒng)實現(xiàn)。一個優(yōu)秀的軟件體系結構能夠成為軟件開發(fā)與維護工作強大而堅實的支柱。
目前將大量精力投入到軟件體系結構相關領域研究的人員越來越多。隨著研究的深入進行,軟件開發(fā)人員在開發(fā)新系統(tǒng)時不再需要重復他人已創(chuàng)造出的東西,而是在軟件復用層次愈來愈高的基礎上復用過往成果并應用于開發(fā)當中。這樣就可以把更多的精力放在軟件的創(chuàng)新功能上,從而大幅提高一款軟件的制作功效。所以,將軟件整體生產效率提高與簡化軟件整體上的維護過程是軟件體系結構研究的突出貢獻。
[1]WilliamStallings.Computer organization and architecture Designing for performance [M].Forth editing,Prentice Hall,Inc.1996.
[2]齊治昌.軟件設計與體系結構[J].高等教育出版社,2010年02月.
[3]王昕陽.基于軟件體系結構的系統(tǒng)開發(fā)[J].寧波職業(yè)技術學院學報,2010年10月第五期.
[4].張友生,李雄.軟件體系結構原理、方法與實踐[J].清華大學出版社,2009年08月.
(編輯 文新梅)
About the Research of Software Architecture
LIUYuchen
(Harbin Pharmaceutical and EngineeringSchool,Harbin150040,China)
With the increasing scale of the software system,the production process of software is becoming more and more complex.The core ofsoftware design is nolonger the design mode ofthe traditional“Algorithms+Data Structures=Program”, but the whole structure design and specifications of a system.The main content of software architecture research involves software architecture description,style,evaluation and formalism method,etc.This paper discusses the research background, concept,research content and development trends ofsoftware architecture.
software architecture;software engineering;software development
TP311
B
1672-0601(2015)11-0105-02
2015-09-24
劉宇辰(1988-),男,學士學位,助理講師。