目前軟件體系結(jié)構(gòu)的現(xiàn)狀如何呢?軟件體系結(jié)構(gòu)的發(fā)展趨勢(shì)又是什么呢?這就是本文要介紹的內(nèi)容。
原文地址:http://www.qqread.com/soft-engineering/z405613.html
關(guān)于軟件體系結(jié)構(gòu)的研究工作主要在國(guó)外展開(kāi)的,國(guó)內(nèi)到目前為止對(duì)于軟件體系結(jié)構(gòu)的研究尚處在起步階段。軟件體系結(jié)構(gòu)在國(guó)內(nèi)未引起人們廣泛注意的原因主要有兩點(diǎn):
(1)軟件體系結(jié)構(gòu)從表面上看起來(lái)是一個(gè)老話(huà)題,似乎沒(méi)有新東西。
(2)與國(guó)外相比,國(guó)內(nèi)對(duì)大型和超大型復(fù)雜軟件系統(tǒng)開(kāi)發(fā)的經(jīng)歷相對(duì)較少,對(duì)軟件危機(jī)的災(zāi)難性體會(huì)沒(méi)有國(guó)外深刻,因而對(duì)軟件體系結(jié)構(gòu)研究的重要性和必要性的認(rèn)識(shí)還不很充分。
一、應(yīng)用現(xiàn)狀
1、形成研究熱點(diǎn),仍處于非形式化水平
自20世紀(jì)90年代后期以來(lái),軟件體系結(jié)構(gòu)的研究成為一個(gè)熱點(diǎn)。廣大軟件工作者已經(jīng)認(rèn)識(shí)到軟件體系結(jié)構(gòu)研究的重大意義和它對(duì)軟件系統(tǒng)設(shè)計(jì)開(kāi)發(fā)的重要性,開(kāi)展了很多研究和實(shí)踐工作。
從軟件體系結(jié)構(gòu)研究的現(xiàn)狀來(lái)看,當(dāng)前的研究和對(duì)軟件體系結(jié)構(gòu)的描述,在很大程度上來(lái)說(shuō)還停留在非形式化的基礎(chǔ)上。軟件構(gòu)架師仍然缺乏必要的工具,這種工具應(yīng)該是顯式描述的、有獨(dú)立性的形式化工具。
在目前通用的軟件開(kāi)發(fā)方法中,其描述通常是用非形式化的圖和文本,不能描述系統(tǒng)期望的存在于構(gòu)件之間的接口,不能描述不同的組成系統(tǒng)的組合關(guān)系的意義。難以被開(kāi)發(fā)人員理解,更不能用來(lái)分析其一致性和完整性等特性。
當(dāng)一個(gè)軟件系統(tǒng)中的構(gòu)件之間幾乎以一種非形式化的方法描述時(shí),系統(tǒng)的重用性也會(huì)受到影響,在設(shè)計(jì)一個(gè)系統(tǒng)結(jié)構(gòu)過(guò)程中的努力很難移植到另一個(gè)系統(tǒng)中去。對(duì)系統(tǒng)構(gòu)件和連接關(guān)系的結(jié)構(gòu)化假設(shè)沒(méi)有得到顯式的、形式化的描述時(shí),把這樣的系統(tǒng)構(gòu)件移植到另一個(gè)系統(tǒng)中去將是有風(fēng)險(xiǎn)的,甚至是不可能的。
2、軟件體系結(jié)構(gòu)的形式化方法研究
軟件體系結(jié)構(gòu)研究如果僅僅停留在非形式化的框圖階段,已經(jīng)難以適應(yīng)進(jìn)一步發(fā)展的需要。為支持基于體系結(jié)構(gòu)的開(kāi)發(fā),需要有形式化建模符號(hào)、體系結(jié)構(gòu)說(shuō)明的分析與開(kāi)發(fā)工具。從軟件體系結(jié)構(gòu)研究的現(xiàn)狀來(lái)看,在這一領(lǐng)域近來(lái)已經(jīng)有不少進(jìn)展,其中比較有代表性的是美國(guó)卡耐基梅隆大學(xué)(Carnegie Mellon University)的Robert J.A11en于l997年提出的Wright系統(tǒng)。Wright是-種結(jié)構(gòu)描述語(yǔ)言,該語(yǔ)言基于一種形式化的、抽象的系統(tǒng)模型,為描述和分析軟件體系結(jié)構(gòu)和結(jié)構(gòu)化方法提供了一種實(shí)用的工具。Wright主要側(cè)重于描述系統(tǒng)的軟件構(gòu)件和連接的結(jié)構(gòu)、配置和方法。它使用顯式的、獨(dú)立的連接模型來(lái)作為交互的方式,這使得該系統(tǒng)可以用邏輯謂詞符號(hào)系統(tǒng),而不依賴(lài)特定的系統(tǒng)實(shí)例來(lái)描述系統(tǒng)的抽象行為。該系統(tǒng)還可以通過(guò)一組靜態(tài)檢查來(lái)判斷系統(tǒng)結(jié)構(gòu)規(guī)格說(shuō)明的一致性和完整性。從這些特性的分析來(lái)說(shuō),Wright系統(tǒng)的確適用于對(duì)大型系統(tǒng)的描述和分析。
3、軟件體系結(jié)構(gòu)的建模研究
(1)結(jié)構(gòu)模型
這是一個(gè)最直觀、最普遍的建模方法。這種方法以體系結(jié)構(gòu)的構(gòu)件、連接件和其他概念來(lái)刻畫(huà)結(jié)構(gòu),并力圖通過(guò)結(jié)構(gòu)來(lái)反映系統(tǒng)的重要語(yǔ)義內(nèi)容,包括系統(tǒng)的配置、約束、隱含的假設(shè)條件、風(fēng)格、性質(zhì)。研究結(jié)構(gòu)模型的核心是體系結(jié)構(gòu)描述語(yǔ)言。
(2)框架模型
框架模型與結(jié)構(gòu)模型類(lèi)似,但它不太側(cè)重描述結(jié)構(gòu)的細(xì)節(jié)而更側(cè)重于整體的結(jié)構(gòu)。框架模型主要以一些特殊的問(wèn)題為目標(biāo)建立只針對(duì)和適應(yīng)該問(wèn)題的結(jié)構(gòu)。
(3)動(dòng)態(tài)模型
動(dòng)態(tài)模型是對(duì)結(jié)構(gòu)或框架模型的補(bǔ)充,研究系統(tǒng)的"大顆粒"的行為性質(zhì)。例如,描述系統(tǒng)的重新配置或演化。動(dòng)態(tài)可能指系統(tǒng)總體結(jié)構(gòu)的配置、建立或拆除通信通道或計(jì)算的過(guò)程。這類(lèi)系統(tǒng)常是激勵(lì)型的。
(4)過(guò)程模型
過(guò)程模型研究構(gòu)造系統(tǒng)的步驟和過(guò)程。因而結(jié)構(gòu)是遵循某些過(guò)程腳本的結(jié)果。
(5)功能模型
該模型認(rèn)為體系結(jié)構(gòu)是由一組功能構(gòu)件按層次組成,下層向上層提供服務(wù)。它可以看作是一種特殊的框架模型。
這5種模型各有所長(zhǎng),也許將5種模型有機(jī)地統(tǒng)一在一起,形成一個(gè)完整的模型來(lái)刻畫(huà)軟件體系結(jié)構(gòu)更合適。例如,Kruchten在1995年提出了一個(gè)“4+1”的視角模型。“4+1”模型從5個(gè)不同的視角包括邏輯視角、過(guò)程視角、物理視角、開(kāi)發(fā)視角和場(chǎng)景視角來(lái)描述軟件體系結(jié)構(gòu)。每一個(gè)視角只關(guān)心系統(tǒng)的一個(gè)側(cè)面,5個(gè)視角結(jié)合在一起才能夠反映系統(tǒng)的軟件體系結(jié)構(gòu)的全部?jī)?nèi)容。“4+1”模型如圖1所示。
4、發(fā)展基于體系結(jié)構(gòu)的軟件開(kāi)發(fā)模型
軟件開(kāi)發(fā)模型是跨越整個(gè)軟件生存周期的系統(tǒng)開(kāi)發(fā)、運(yùn)行、維護(hù)所實(shí)施的全部工作和任務(wù)的結(jié)構(gòu)框架,給出了軟件開(kāi)發(fā)活動(dòng)各階段之間的關(guān)系。目前,常見(jiàn)的軟件開(kāi)發(fā)模型大致可分為三種類(lèi)型:
(1)以軟件需求完全確定為前提的瀑布模型。
(2)在軟件開(kāi)發(fā)初始階段只能提供基本需求時(shí)采用的漸進(jìn)式開(kāi)發(fā)模型,如螺旋模型等。
(3)以形式化開(kāi)發(fā)方法為基礎(chǔ)的變換模型。
所有開(kāi)發(fā)方法都是要解決需求與實(shí)現(xiàn)之間的差距。但是,這三種類(lèi)型的軟件開(kāi)發(fā)模型都存在這樣或那樣的缺陷,不能很好地支持基于軟件體系結(jié)構(gòu)的開(kāi)發(fā)過(guò)程。因此,研究人員在發(fā)展基于體系結(jié)構(gòu)的軟件開(kāi)發(fā)模型方面做了一定的工作。例如,為了形象地表示體系結(jié)構(gòu)的生命周期,北京郵電大學(xué)的周瑩新博士建立了一個(gè)軟件體系結(jié)構(gòu)的生命周期模型,該模型如圖2所示。
5、軟件產(chǎn)品線(xiàn)體系結(jié)構(gòu)的研究
一個(gè)產(chǎn)品線(xiàn)代表著一組具有公共的系統(tǒng)需求集的軟件系統(tǒng),它們都是根據(jù)基本的用戶(hù)需求對(duì)標(biāo)準(zhǔn)的產(chǎn)品線(xiàn)構(gòu)架進(jìn)行定制,將可重用構(gòu)件與系統(tǒng)獨(dú)有的部分集成而得到的。采用軟件生產(chǎn)線(xiàn)式模式進(jìn)行軟件生產(chǎn),將產(chǎn)生巨型編程企業(yè)。但目前生產(chǎn)的軟件產(chǎn)品族大部分是處于同一領(lǐng)域的。
二、研究熱點(diǎn)
當(dāng)前,體系結(jié)構(gòu)仍是一個(gè)非常新的研究領(lǐng)域,其概念還相當(dāng)模糊。但軟件體系結(jié)構(gòu)作為軟件工程領(lǐng)域中的一個(gè)組成部分,已經(jīng)取得了長(zhǎng)足的發(fā)展,受到大多數(shù)軟件系統(tǒng)設(shè)計(jì)和研究人員的重視。
軟件體系結(jié)構(gòu)目前較活躍的研究方向包括:(1)軟件體系結(jié)構(gòu)形式基礎(chǔ)的研究;(2)針對(duì)軟件體系結(jié)構(gòu)描述中特有的問(wèn)題研究新的專(zhuān)門(mén)的高級(jí)語(yǔ)言;(3)建立用于度量和評(píng)價(jià)軟件體系結(jié)構(gòu)的模型和方法;(4)建立面向?qū)iT(mén)領(lǐng)域的軟件體系結(jié)構(gòu)范型庫(kù)。(5)把軟件體系結(jié)構(gòu)從目前的直覺(jué)和經(jīng)驗(yàn)狀態(tài)過(guò)渡到理論。
1、提供新的軟件體系結(jié)構(gòu)描述語(yǔ)言
這種描述語(yǔ)言的目的就是提供一種規(guī)范化的體系結(jié)構(gòu)描述,從而使得體系結(jié)構(gòu)的自動(dòng)化分析變得可能。研究人員已經(jīng)設(shè)計(jì)出了近二十種ADLs,比較有影響力的有C2、UniCon、MetaH、Aesop、SADL、Rapide、Wright等。這些語(yǔ)言能夠?qū)w系結(jié)構(gòu)連接器進(jìn)行第一級(jí)抽象,同時(shí)還能描述模型的結(jié)構(gòu)和內(nèi)部構(gòu)件之間的交互作用,并且還引入了一些新的系統(tǒng)分析模式。
2、對(duì)軟件體系結(jié)構(gòu)的專(zhuān)門(mén)知識(shí)的整理
這方面的工作主要是對(duì)軟件工程師在軟件開(kāi)發(fā)實(shí)踐中得來(lái)的各種體系結(jié)構(gòu)的原則、模式的整理和分類(lèi)。例如,對(duì)軟件體系結(jié)構(gòu)風(fēng)格的分類(lèi)和比較,對(duì)體系結(jié)構(gòu)描述語(yǔ)言的綜合分析等。就目前看來(lái),國(guó)內(nèi)對(duì)軟件體系結(jié)構(gòu)的研究主要集中在對(duì)軟件體系結(jié)構(gòu)的專(zhuān)門(mén)知識(shí)的整理上。
3、提供特定領(lǐng)域的體系結(jié)構(gòu)框架
最近,開(kāi)發(fā)特定的領(lǐng)域去為產(chǎn)品提供可重用框架日益受到關(guān)注。這些開(kāi)發(fā)基于這樣的想法:可以提取相關(guān)系統(tǒng)中的共同方面,以便可以通過(guò)低成本地把這些共同的設(shè)計(jì)實(shí)例化來(lái)構(gòu)筑新系統(tǒng)。常見(jiàn)的例子有:
(1)編譯器的標(biāo)準(zhǔn)分解。這個(gè)方法可以使一個(gè)本科生在一個(gè)學(xué)期時(shí)間內(nèi)構(gòu)造一個(gè)新的語(yǔ)言編譯系統(tǒng)。
(2)標(biāo)準(zhǔn)化的通訊協(xié)議。這個(gè)可以使廠家通過(guò)在不同層次的抽象上提供服務(wù)來(lái)互相操縱。
(3)第四代語(yǔ)言。利用4GL開(kāi)發(fā)出商務(wù)信息處理的通用范式。
(4)用戶(hù)界面工具和框架。這個(gè)方法為開(kāi)發(fā)者提供了一個(gè)可重用框架以及象菜單、對(duì)話(huà)框這樣的可重用構(gòu)件的集合。
軟件體系結(jié)構(gòu)充當(dāng)一個(gè)理解系統(tǒng)構(gòu)件和它們之間關(guān)系的框架,特別是那些始終跨越時(shí)間和實(shí)現(xiàn)的屬性。這個(gè)理解對(duì)于現(xiàn)在系統(tǒng)的分析和未來(lái)系統(tǒng)的綜合很有必要。在分析和支持下,體系結(jié)構(gòu)抓住領(lǐng)域知識(shí)和實(shí)際的一致,促進(jìn)設(shè)計(jì)的評(píng)估和構(gòu)件的實(shí)施,減少仿真和構(gòu)造原型。在綜合的支持下,體系結(jié)構(gòu)提供了建立系列產(chǎn)品的基礎(chǔ),以可預(yù)測(cè)的方式利用領(lǐng)域知識(shí)構(gòu)造和維護(hù)模塊、子系統(tǒng)和系統(tǒng)。
4、提供軟件體系結(jié)構(gòu)的形式化基礎(chǔ)
對(duì)體系結(jié)構(gòu)設(shè)計(jì)的推理的形式化表示使得體系結(jié)構(gòu)級(jí)的設(shè)計(jì)更好地被理解、被實(shí)現(xiàn)。
5、建立評(píng)價(jià)軟件體系結(jié)構(gòu)的方法
通過(guò)分析來(lái)預(yù)見(jiàn)軟件的質(zhì)量,通過(guò)分析來(lái)創(chuàng)建、選擇、評(píng)估與比較不同的體系結(jié)構(gòu)。例如,Kazman等人在2000年提出的ATAM(Architectural Tradeoff Analysis Method)方法。ATAM方法不但能夠揭示體系結(jié)構(gòu)如何滿(mǎn)足特定的質(zhì)量需求(例如性能和可修改性),而且還提供了分析這些質(zhì)量需求之間交互作用的方法。使用ATAM方法評(píng)價(jià)一個(gè)軟件體系結(jié)構(gòu)的目的是理解體系結(jié)構(gòu)設(shè)計(jì)滿(mǎn)足系統(tǒng)質(zhì)量需求的結(jié)果。采用ATAM方法的步驟如圖3所示,限于篇幅,在此不再詳細(xì)介紹具體步驟,有興趣的讀者可查閱有關(guān)ATAM方法的文獻(xiàn)。
三、發(fā)展方向
1、各種ADLs之間的信息互換
現(xiàn)有的ADLs大多是與領(lǐng)域相關(guān)的,所以不利于對(duì)不同領(lǐng)域體系結(jié)構(gòu)的說(shuō)明。但這些針對(duì)不同領(lǐng)域的ADLs在某些方面又大同小異,造成資源的冗余。其實(shí),大多數(shù)ADLs具有一系列的共同概念。如何用一種公共形式把各種語(yǔ)言綜合起來(lái),使得能夠交換各種體系結(jié)構(gòu)描述信息,將是今后軟件體系結(jié)構(gòu)研究和實(shí)踐的重點(diǎn)之一。
2、設(shè)計(jì)工具和環(huán)境
軟件體系結(jié)構(gòu)設(shè)計(jì)既然作為軟件工程的一部分,它的計(jì)算機(jī)輔助實(shí)現(xiàn)手段是相當(dāng)重要的。我們應(yīng)當(dāng)開(kāi)發(fā)出一些軟件工具來(lái)實(shí)現(xiàn)體系結(jié)構(gòu)的描述和分析,開(kāi)發(fā)階段轉(zhuǎn)換工具,以實(shí)現(xiàn)階段成果的自動(dòng)轉(zhuǎn)換,例如,把需求規(guī)格說(shuō)明自動(dòng)轉(zhuǎn)換為構(gòu)件等。目前關(guān)于這方面的研究成果很少,特別是可以應(yīng)用到實(shí)際項(xiàng)目開(kāi)發(fā)中的工具和環(huán)境就更少。
3、體系結(jié)構(gòu)再工程
當(dāng)今軟件系統(tǒng)的規(guī)模變得越來(lái)越大,結(jié)構(gòu)也越來(lái)越復(fù)雜,同時(shí)從頭開(kāi)始構(gòu)建的大系統(tǒng)數(shù)量在急劇地減少,因而很多遺留系統(tǒng)正在被逐步地利用。從遺留系統(tǒng)軟件代碼和系統(tǒng)中抽取結(jié)構(gòu)信息,經(jīng)過(guò)描述、統(tǒng)一、抽象、一般化與實(shí)例化等處理,可總結(jié)出系統(tǒng)的體系結(jié)構(gòu)。
在這種情況下,軟件再工程變得越來(lái)越重要,因?yàn)樗峁┝艘粭l把遺留系統(tǒng)轉(zhuǎn)換為可進(jìn)化系統(tǒng)的現(xiàn)實(shí)可行的途徑,是一種可以改進(jìn)人們對(duì)軟件的理解和改進(jìn)軟件本身的活動(dòng)。這類(lèi)研究的目的是為一些特定的應(yīng)用領(lǐng)域的軟件系統(tǒng)提供一些體系結(jié)構(gòu)框架,如控制系統(tǒng)、移動(dòng)機(jī)器人和用戶(hù)接口界面等。通過(guò)這些框架可以很方便地構(gòu)造一個(gè)新的軟件系統(tǒng)。
本博客為學(xué)習(xí)交流用,凡未注明引用的均為本人作品,轉(zhuǎn)載請(qǐng)注明出處,如有版權(quán)問(wèn)題請(qǐng)及時(shí)通知。由于博客時(shí)間倉(cāng)促,錯(cuò)誤之處敬請(qǐng)諒解,有任何意見(jiàn)可給我留言,愿共同學(xué)習(xí)進(jìn)步。