【摘 要】本文主要介紹了一種基于軟件體系結(jié)構(gòu)的構(gòu)件模型和語言,其中主要包括構(gòu)件模型SACM,面向構(gòu)件語言SAJ,SAJ語言的語法、語義和類型系統(tǒng),豐富構(gòu)件接口信息等幾個方面。通過研究表明,該模型和方案能解決軟件開發(fā)中所面臨的問題,有利于軟件的開發(fā)和完善,在今后的實際工作中值得進一步推廣和應(yīng)用。 

  【關(guān)鍵詞】軟件體系結(jié)構(gòu) 構(gòu)件模型 構(gòu)件語言 SACM SAJ 

  【中圖分類號】G642 【文獻標識碼】A 【文章編號】1674-4810(2013)14-0081-01 

  在軟件開發(fā)中,如何提高軟件質(zhì)量是人們的普遍追求和共同愿望。而提高質(zhì)量的關(guān)鍵問題就是構(gòu)件技術(shù)和軟件體系結(jié)構(gòu)技術(shù)。但是,目前在這兩項技術(shù)開發(fā)中面臨著多方面的挑戰(zhàn),本文擬對這些問題提出相應(yīng)的解決方案。 

  一 基于軟件體系結(jié)構(gòu)的構(gòu)件模型SACM 

  第一,構(gòu)件。SACM構(gòu)件是能提供相對獨立服務(wù)的計算單元,具有規(guī)范的接口和顯示的上下文依賴,能夠被第三方組合。就其組成來看,主要包括端口和服務(wù)兩個部分,每個端口代表一個交互點,至多有一個請求服務(wù)接口和一個提供服務(wù)接口。對于構(gòu)件來說,其服務(wù)實現(xiàn)部分由方法體構(gòu)成,這就降低了構(gòu)件之間的耦合度,能夠提高構(gòu)件的復用程度。 

  第二,構(gòu)件之間的關(guān)系。在SACM中,存在著多種構(gòu)件,這些構(gòu)架之間相互聯(lián)系,形成了多種多樣的不同的關(guān)系,主要有部分-整體關(guān)系、泛化關(guān)系、連接關(guān)系、協(xié)作關(guān)系。 

  第三,連接子的引入及其作用。為了更容易地實現(xiàn)映射、對軟件系統(tǒng)屬性進行分析、驗證和跟蹤,提高構(gòu)件的復用程度,提高軟件系統(tǒng)結(jié)構(gòu)的動態(tài)配置、加強低軟件的維護,在SACM構(gòu)件中有必要引入連接子。就其作用來看,連接子主要發(fā)揮通信、轉(zhuǎn)換、輔助交換、協(xié)調(diào)控制的作用,對整個軟件系統(tǒng)的運行有著積極的意義。 

  第四,基于連接子構(gòu)件組合方法。在SACM構(gòu)件當中,構(gòu)件組合方法主要有兩種:基于被動的和基于主動的連接子構(gòu)件組合方法,不同的方式有各自的優(yōu)勢,需要根據(jù)具體情況選用。 

  二 面向構(gòu)件語言SAJ 

  第一,SAJ語言設(shè)計的目的。該語言設(shè)計的目的主要包括以下幾個方面:能夠更好地支持面向構(gòu)件軟件開發(fā)、實現(xiàn)從體系結(jié)構(gòu)設(shè)計模型到地層代碼的映射。 

  第二,SAJ語言支持面向構(gòu)件軟件開發(fā)。在進行軟件開發(fā)的過程中,為了能夠更好地對面向構(gòu)件的軟件進行支持,面向構(gòu)件語言應(yīng)能夠支持構(gòu)件的封裝、復用和組合,并支持構(gòu)件的設(shè)計與開發(fā)。具體來說,是從以下五個方面來支持面向構(gòu)件軟件開發(fā)的:構(gòu)件的封裝性、構(gòu)件組合、面向構(gòu)件設(shè)計原則、設(shè)計模式、連接子復用。 

  第三,SAJ語言的實現(xiàn)。使用Polyglot框架來實現(xiàn)SAJ語言的編譯器,并將編寫的源代碼翻譯成Java代碼,每個端口自動產(chǎn)生一個字段,保存所使用的連接子。由連接子協(xié)調(diào)構(gòu)件之間的通信,通過消息截取和消息過濾,有利于解決構(gòu)件之間不相容的問題。有利于實現(xiàn)日志、數(shù)據(jù)加密傳輸?shù)确⻊?wù),并能夠?qū)崿F(xiàn)各種體系結(jié)構(gòu)風格,具有良好的運用空間。 

  三 SAJ語言的語法、語義和類型系統(tǒng) 

  第一,SAJ語言的簡介。對于SAJ語言來說,它的核心是基于RelJ,它是在RelJ的基礎(chǔ)上,添加了構(gòu)件、端口、連接子、角色等軟件體系結(jié)構(gòu)。 

  第二,SAJ語言的類型系統(tǒng)。類型是程序設(shè)計中項的集合,它們具有共同的性質(zhì)。對于類型系統(tǒng),從本質(zhì)上來說,它是一個類型推導規(guī)則的集合,在程序設(shè)計中具有重要的作用:檢查類型錯誤、支持語言抽象、優(yōu)化程序,并支持語言的安全性。 

  四 豐富構(gòu)件接口信息 

  第一,顯示相應(yīng)的服務(wù)關(guān)系。顯示描述請求服務(wù)和提供服務(wù)之間的關(guān)系,構(gòu)件要想為外界服務(wù),就需要從外界得到相應(yīng)的請求服務(wù)。對于現(xiàn)有構(gòu)件模型來說,請求服務(wù)和提供服務(wù)之間的關(guān)系是固定的。但是在可復用構(gòu)件的軟件開發(fā)中,請求服務(wù)和提供服務(wù)之間不存在嚴格的依賴關(guān)系,往往存在著一些問題與不足,影響正常的服務(wù)。因此,有必要顯示請求服務(wù)與提供服務(wù)之間的關(guān)系。此外,從構(gòu)件復用粒度的角度來說,顯示它們之間的服務(wù)也是十分必要的。同時,顯示它們之間的關(guān)系,有利于對構(gòu)件質(zhì)量進行精確度量、調(diào)整與改進,更能靈活適應(yīng)不同的環(huán)境,提高服務(wù)質(zhì)量,更好地滿足軟件開發(fā)的實際需要。 

  第二,描述服務(wù)的參數(shù)值。在進行軟件開發(fā)時,服務(wù)的參數(shù)值往往會對構(gòu)件行為產(chǎn)生一定的影響。并且構(gòu)件開發(fā)人員對這個也非常清楚。所以,在接口中增加描述服務(wù)的參數(shù)值是現(xiàn)實的、必要的。在構(gòu)件接口中,有提供服務(wù)和請求服務(wù),對于它們的參數(shù)值描述略有不同。一般是在行為協(xié)議中描述參數(shù)值,并在構(gòu)件組合中得到具體應(yīng)用。 

  五 結(jié)束語 

  總之,構(gòu)件模型和面向構(gòu)件語言有利于解決當前構(gòu)件技術(shù)和軟件體系結(jié)構(gòu)技術(shù)所面臨的問題。文中所提出的構(gòu)件模型SACM和構(gòu)件語言SAJ,能夠有力地促進構(gòu)件技術(shù)的發(fā)展。在今后的實際工作中,仍然有對該相關(guān)問題進行進一步深入研究的必要。 

  參考文獻 

  [1]岳洋.SMC/ADL:一種層級式構(gòu)件系統(tǒng)的體系結(jié)構(gòu)描述語言[J].計算機科學,2012(7) 

  [2]馬維綱.基于軟件體系結(jié)構(gòu)的構(gòu)件組裝技術(shù)研究[D].西安理工大學,2007 

  [3]陳波.基于軟件體系結(jié)構(gòu)的構(gòu)件模型和語言研究[D].國防科學技術(shù)大學,2007