摘要:簡單介紹了軟件架構和組件的概念以及軟件架構可靠性評估平臺的功能和設計思想。軟件架構可靠性評估平臺,用于對軟件架構的可靠性進行評估。軟件架構主要由組件和連接件組成,該文設計的組件庫就是用來存放組件,實現(xiàn)對組件進行維護,從而使系統(tǒng)結構層次更分明,使系統(tǒng)有更好的可擴展性。
關鍵詞:軟件架構;可靠性評估平臺;組件庫
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2009)05-1121-03
The Design of Components Library in the Evaluation Platform of Software Architecture
YANG Cheng ,CHEN Wei-ru
(Department of Computer Science and Technology, Shenyang Institute of Chemical Technology, Shenyang 110142, China)
Abstract: A brief introduction of the software architecture and components as well as the function and design of Reliability evaluation platform of software architecture.Reliability evaluation platform of software architecture designed in this article is used to assess the reliability. It mainly composed by components and connector. components library is used to storage components,At the same time,it can implement the components maintenance, so that the system-level structure more clearly and a better system scalability.
Keywords: Software Architecture,Reliability evaluation platform of software architecture,components library
軟件架構是軟件開發(fā)早期設計階段的產(chǎn)物,是關于系統(tǒng)的抽象描述。軟件架構的正確設計和選擇,為以后的開發(fā)、集成、測試、維護各個階段的成功提供了保證[1]?;诩軜嫷能浖到y(tǒng)是指由組件裝配、組合而成的軟件系統(tǒng),它主要由組件和連接件組成。人們越來越關注軟件架構和組件技術,源于它所帶來的產(chǎn)品的穩(wěn)定性、可靠性、可復用性和可擴展性等優(yōu)勢。在架構描述語言、軟件架構分割和可靠性計算方法等研究基礎上,研究設計一個相應的軟件架構評估平臺,支持對架構的圖形化建模、ADL的自動生成和對架構的可靠性進行評估,是很有意義的。作為存放組件的容器,組件庫設計的好壞,直接影響到整個平臺的穩(wěn)定性和效率。本文著重闡述架構評估平臺中組件庫的設計。
1 相關概念及架構平臺的功能
1.1 軟件架構的概念
軟件架構(Software Architecture,簡稱SA)是在1969 年的NATO 軟件工程會議上首次提出的[2],直到1995年SA 才被確立為軟件工程一個研究方向。雖然好的架構不一定能保證可以獲得高可靠性的軟件產(chǎn)品,但可以肯定是,建立在不良架構基礎上的軟件不可能獲得較高的可靠性[3]。
軟件架構就是系統(tǒng)的一個或多個結構,它包括軟件組件、這些組件的外部可見屬性以及組件之間的相互關系。軟件架構是由組件、連接件和配置組成[4];組件是架構中的功能單元;連接件是功能單元之間進行交互的通道;配置用來說明組件和連接件是如何結合在一起的,是對組件和連接件的約束;通過配置可以確定組件是否正確連接、接口是否匹配、連接件構成的通信是否正確等。組件、連接件和配置是軟件架構最基本的構造元素。此外,軟件架構還包括端口和角色兩種元素[5]。
1.2 組件的概念
組件是軟件架構不可缺少的一部分。一般認為,組件是提供某種功能的計算單元或用戶級的邏輯對象,如外部文件或共享數(shù)據(jù)等。組件也可以和一個微型應用程序類似,是已編譯、鏈接好的二進制代碼。組件是可獨立部署的單元,可以作為第三方的組裝單元。
組件可以是原子的,也可以是復合的。組件和連接件組合構成更為復雜的復合組件。復合組件的結構也可以被看作是一個軟件架構。組件通過接口與外部環(huán)境交互,而接口由一組端口組成,每個端口表示組件與外部環(huán)境的交互點。
這種基于組件的軟件系統(tǒng)實現(xiàn)了軟件“即插即用”的思想,通過組裝已存在的組件和連接件來搭建整個系統(tǒng),使得軟件開發(fā)變得簡單有效。
1.3 架構平臺的功能和組成
面向可靠性評估的軟件架構設計平臺要求能對軟件架構進行開發(fā)、設計和描述,對所描述的軟件架構進行可靠性的評估。
架構平臺提供必要的架構風格庫、組件庫和連接件庫,除基本元件之外,還可以根據(jù)需要對架構風格庫、組件庫和連接件庫中的元件進行增加、刪除和修改。
平臺使用架構描述語言ADL(Architecture Description Language)對軟件架構進行描述。作者所在的課題組研究了用于可靠性評估的架構描述語言RE/ADL[6],并提出了使用該描述語言進行可靠性分割的方法。
2 組件庫設計
2.1 組件庫組件的分類
在企業(yè)級的應用軟件系統(tǒng)中大多采用三層的應用框架:用戶界面層、業(yè)務邏輯層和數(shù)據(jù)層。在這種結構的軟件框架中,每一層為上一層提供服務(服務提供者),并作為下一層的客戶(服務消費者),從而提供了一個具有高度可移植性、可擴充性的兼容性平臺。本文設計的組件庫中對組件的分類就是以這種對軟件系統(tǒng)層次的劃分為基礎進行研究的,將組件庫細分為用戶界面組件、業(yè)務邏輯組件、通用操作組件、數(shù)據(jù)組件和商業(yè)組件。
用戶界面組件由界面對象(UI)對象)組成,是應用軟件的用戶接口部分,是人機進行交互的接口,對應于用戶的需求,并負責觸發(fā)業(yè)務事件以啟動業(yè)務邏輯組件或通用操作組件。用戶界面層組件包括窗體、命令按鈕、菜單項等。
業(yè)務邏輯組件是應用軟件系統(tǒng)的主體,負責處理所有與業(yè)務邏輯和業(yè)務規(guī)則直接相關的操作,是應用軟件系統(tǒng)的業(yè)務模型,表現(xiàn)為各種各樣的物流、資金流、信息流等。這些大小不定的組件分別完成不同的商業(yè)邏輯或商業(yè)規(guī)則,是為應用軟件系統(tǒng)業(yè)務邏輯設計開發(fā)的特定功能組件,如某行業(yè)軟件中的生產(chǎn)計劃表單等。這一類組件一般粒度比較大,復用性較弱。
在對應用軟件系統(tǒng)進行開發(fā)的過程中,不同的應用軟件系統(tǒng)之間存在一些通用的操作。這些操作可以很方便地從一個系統(tǒng)的開發(fā)移植到另一個系統(tǒng)的開發(fā)中。因此,為了提高軟件架構的開發(fā)效率和平臺的易用性,將這些通用的操作從業(yè)務邏輯層分離出來,單獨形成通用操作組件,如數(shù)據(jù)存取操作組件、打印操作組件、查詢操作組件、數(shù)據(jù)接口組件等,這一類組件復用性較強。
數(shù)據(jù)組件負責軟件系統(tǒng)基礎數(shù)據(jù)和商業(yè)數(shù)據(jù)的存放和管理,并對這些數(shù)據(jù)的完整性、一致性提供保證。它一般都是由一些主流的數(shù)據(jù)庫管理系統(tǒng)組成,如ORACLE、DB2、SQL Server、Sybase、MySQL等。
商業(yè)組件指被特定標準了的組件。這些標準為組件開發(fā)者提供了現(xiàn)成的應用程序架構。這一類組件包括Com組件、EJB組件和CORBA組件等。
2.2 組件庫結構
軟件復用是一種提高軟件質(zhì)量和降低軟件成本的有效方法,隨著計算機軟件理論和技術的革新,組件技術受到了越來越多研究人員的矚目。作為軟件復用概念的具體化實現(xiàn),已經(jīng)有越來越多的研究機構和開發(fā)商投入到組建的研究和開發(fā)中,并且已經(jīng)相當多地應用到了軟件的開發(fā)中。
本文研究設計的軟件架構可靠性評估平臺,要求能夠?qū)σ_發(fā)的軟件進行架構設計或描述,并且對其進行評估。組件是軟件架構的必要組成部分。為方便進行架構設計或描述,需要有一種機制來管理組件,即需要建立組件庫。
組件庫的搭建有利于架構平臺對組件進行管理,也方便對組件進行使用。除常規(guī)的組件庫維護功能外,組件庫還考慮了添加自定義組件的功能,可以將新組件或由多個已有組件的復合而成的組件添加到組件庫中,以便復用。組件庫的設計可以使整個平臺功能更加強大,結構可以得到優(yōu)化,也可以使開發(fā)更加靈活。
架構平臺的組件庫主要由五部分組成:組件庫容器、組件基類、基本組件、原子組件、復合組件。
組件庫類是用來存放組件的容器,并提供增加、刪除、修改等方法對組件庫中的組件進行控制。另外,組件庫又是平臺生成具體組件的工廠。
組件類是其它組件的基類,是具體組件的一個原型,由它并不能夠生成具體的組件,但其它組件都由這個模型派生出來,它提供一種規(guī)范。這樣既增強了架構平臺結構的靈活性,也提高了編程效率。
基本組件類是幾個基本組件的基類,這個類派生出來的組件都是一般架構設計中常用的組件,并且在組件庫中不能被用戶修改或刪除?;窘M件又分為用戶界面組件、業(yè)務邏輯組件、通用操作組件、數(shù)據(jù)組件、商業(yè)組件。在基本組件類派生的這五種詳細劃分的組件類中存放用于生成用戶使用的組件的模型。如用戶界面組件包括窗體、菜單等。
原子組件類是一個可以根據(jù)用戶要求生成自定義組件的類。這種組件可以進行版本替換,根據(jù)用戶需要對原組件修改或添加新功能。
復合組件是由若干個組件和連接件組合,把它們封裝成一個組件實體。在軟件的架構中,某些組件和連接件的組合經(jīng)常被使用,復合組件可以提高開發(fā)效率,也可以使整個架構層次更分明,開發(fā)更簡便。復合組件的結構同時也可以被看作是一個軟件架構(或稱為子架構)。
確切地說,組件庫所管理的不是各個組件對象本身,而是不同組件的類,或者說是組件框架。根據(jù)架構平臺的需要,組件庫負責管理各類組件,同時生成具體組件對象供平臺使用。
更確切地說,本架構平臺組件庫所管理的組件并不是真正可運行的組件,其為平臺生成的也只是組件框架或組件說明,即組件設計實例。根據(jù)組件設計實例,軟件開發(fā)人員可以進行組件開發(fā)。
3 組件庫實現(xiàn)
以組件類為基類,產(chǎn)生基本組件、原子組件、復合組件三個派生類。組件類是三個派生組件類的模型,為它們提供必要的屬性和方法,但本身并不能生成平臺架構中用戶使用的組件實例。在構架平臺中只能由基本組件派生的模塊、數(shù)據(jù)庫、數(shù)據(jù)文件、由原子組件類生成的自定義組件以及復合組件類生成用戶要使用的組件實例。
組件庫類(CcompLibrary)的設計要求簡單有效,清晰明了。主要包括組件列表和添加組件、修改組件、刪除組件等方法。ComponentList用來存放組件信息。ComponentGList用來存放組件的圖形信息,與ComponnetList中的組件信息是通過組件類型號CTypeID一一對應的,使用中點擊組件庫中的組件圖形,在內(nèi)存中就生成一個相應的組件。AddComponent、EditComponent、RemoveComponent方法控制組件庫中組件的添加、修改和刪除。
Class CcompLibrary
{
private ArrayList ComponentList = new ArrayList();//組件列表
private ArrayList ComponentGList = new ArrayList();//組件圖形
public int AddComponent(CComponent ACmp)//添加組件方法
public int EditComponent(Cccomponent ECmp)//修改組件
public int RemoveComponent(CComponent RCmp)//移除組件方法
……
}
以組件類為基類,產(chǎn)生基本組件、原子組件、復合組件三個派生類。組件類是三個派生組件類的模型,為它們提供必要的屬性和方法,但本身并不能生成平臺架構中用戶使用的組件實例。在構架平臺中只能由基本組件派生的具體的組件類、自定義的組件類以及復合組件類生成用戶要使用的組件實例,而該實例也只是設計實例。組件的模型存放在二進制文件中,生成實例時調(diào)用相應的文件。
架構平臺生成的包括組件設計實例的軟件架構以二進制文件的形式儲存,存儲組件必要的設計信息,如組件的ID、名稱、功能的描述、位置、大小、可靠性值或可靠性描述等。還應存儲一個端口列表,用來存放向內(nèi)傳遞組件處理所需要的內(nèi)容或控制信息和向外傳遞組件處理后的結果或控制信息。圖2是組件的圖形化表示。
CTypeName是組件類型的名稱,CTypeID是與CTypeName一一對應的組件類型號,在ComponentList中存放的就是組件類型號;Cname和CID是由組件類生成具體組件的名稱和組件號;MpDependence是組件的可靠性值;CPositionX和CpositionY是組件的位置信息。CPList是組件的端口列表;組件類中還包括大小、顏色、可見性等信息。
public class CComponent
{
private int CTypeID;//組件類型號
private float CTypeName;//組件類型名
private float MpDependence;//可靠性值
privat int CID;//組件號
private string CName;//組件名
private int CPositionX;//位置信息
private int CPositionY;
private ArrayList CPList = new ArrayList();//端口列表
… …
}
4 結論
軟件架構關注系統(tǒng)的全局組織形式,是對系統(tǒng)結構高層抽象的描述。對于大型軟件系統(tǒng)而言,好的架構的設計已經(jīng)成為系統(tǒng)成功的關鍵因素。本文介紹了軟件架構、基于風格的軟件架構可靠性評估平臺的概念、平臺組件庫的概念、結構和設計方法。組件庫的設計能起到對架構平臺系統(tǒng)結構層次更分明,使系統(tǒng)開發(fā)更靈活。組件庫設計中對組件的分類還不夠細致,隨著應用環(huán)境中新組件和新技術的不斷演化,還需要進一步細化、完善,如何融合軟件架構描述語言也應該著手研究。目前軟件架構可靠性評估平臺正在開發(fā)中。
參考文獻:
[1] Land R.A Brief Survey of Software Architecture[R].Malardalen Real-Time Research Center (MRTC) Report,2002.
[2] Kruchten P,Obbink H, Stafford J.The Past,Present,and future of software architecture[J].IEEE Software,2006,23(2):22-30.
[3] 周欣,黃璜,孫家輔等.軟件體系結構質(zhì)量評價概述[J].計算機科學,2003,30(1):49-52.
[4] Len Bass.軟件構架實踐[M].北京:清華大學出版社,2002:15-16.
[5] 梅宏,申峻嶸.軟件體系結構研究進展[J].軟件學報,2006,17(6):1257-1275.
[6] 王璐.基于軟件架構可靠性評估描述語言的研究[D].沈陽:沈陽化工學院,2007:23-35.