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