《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 業(yè)界動態(tài) > 形式化方法對構(gòu)件庫管理系統(tǒng)支持的探討

形式化方法對構(gòu)件庫管理系統(tǒng)支持的探討

2008-06-04
作者:邊小凡1,,朱建林1,王 倩2

  摘 要: 依據(jù)網(wǎng)上信息收集系統(tǒng)構(gòu)件庫" title="構(gòu)件庫">構(gòu)件庫中構(gòu)件的開發(fā)和管理經(jīng)驗,,提出一種構(gòu)件模型" title="構(gòu)件模型">構(gòu)件模型,,并闡述了此模型對基于語義的構(gòu)件檢索、構(gòu)件組裝和構(gòu)件演化的自動化支持,。
  關(guān)鍵詞: 構(gòu)件模型 構(gòu)件庫 形式化方法 形式化描述,。


  在基于構(gòu)件的軟件開發(fā)(CBSD)[1][2]中,,作為復(fù)用" title="復(fù)用">復(fù)用基礎(chǔ)設(shè)施的構(gòu)件庫系統(tǒng)已成為企業(yè)內(nèi)部和企業(yè)間協(xié)作的必然裝備,,而要建立系統(tǒng)化的構(gòu)件庫,,建立合適的構(gòu)件模型是第一步。構(gòu)件模型是構(gòu)件本質(zhì)特征及構(gòu)件間關(guān)系的抽象描述,。它定義了構(gòu)件的本質(zhì)屬性,,規(guī)定了構(gòu)件接口的結(jié)構(gòu)以及構(gòu)件與軟件體系結(jié)構(gòu)、構(gòu)件與構(gòu)件之間的交互機制,。構(gòu)件模型通常還提供創(chuàng)建和實現(xiàn)構(gòu)件的指導(dǎo)原則,。
1 當(dāng)前典型構(gòu)件模型簡介與分析
  在圍繞構(gòu)件庫進(jìn)行軟件開發(fā)的過程中,不同的角色,、不同的關(guān)注點所需要的構(gòu)件信息也不相同,。基于這一認(rèn)識北京大學(xué)信息科學(xué)技術(shù)學(xué)院軟件研究所將構(gòu)件模型分為三種:構(gòu)件描述,、分類的模型,,構(gòu)件規(guī)約、組裝的模型和構(gòu)件實現(xiàn)的模型,。下面以這種分類方法來分析一下當(dāng)前典型構(gòu)件模型,。
  (1)構(gòu)件描述、分類的模型試圖以一種綜合的方式來描述構(gòu)件,,使得構(gòu)件易于為用戶所理解,,易于在庫中被有效高效地分類、存儲和檢索,。REBOOT(Reuse Based Object-Oriented Techniques)模型就是其中之一,,它通過刻面的" title="面的">面的方法從各個角度刻劃軟構(gòu)件屬性,來實現(xiàn)對構(gòu)件的分類和檢索,。
  (2)構(gòu)件規(guī)約,、組裝的模型描述構(gòu)件的功能和行為規(guī)約,并通過配置這些規(guī)約來刻劃系統(tǒng),。著名的3C模型[3]就是用來刻劃構(gòu)件規(guī)約和組裝的,。3C模型是一個指導(dǎo)性的構(gòu)件模型,它從概念,、內(nèi)容,、語境三個部分來描述構(gòu)件,但是3C模型缺乏形式化定義和易懂的描述,,因此僅具有一定的宏觀指導(dǎo)意義,。
  (3)構(gòu)件實現(xiàn)的模型用于幫助人們決定如何用某種程序設(shè)計語言或以某種可執(zhí)行單元的形式來實現(xiàn)構(gòu)件。有代表性的實現(xiàn)級工業(yè)標(biāo)準(zhǔn)構(gòu)件模型有CORBA,、DCOM/COM和Enterprise JavaBean,,三足鼎立構(gòu)成競爭與互操作并存的格局,工業(yè)構(gòu)件模型最大的缺點在于其缺乏對構(gòu)件語義的深入支持,。
  綜合考慮現(xiàn)有的構(gòu)件模型,,可得出以下結(jié)論:
  (1)現(xiàn)有的面向構(gòu)件描述和分類的模型缺乏對構(gòu)件語義特別是構(gòu)件領(lǐng)域特征的語義的描述,而這些正是理解構(gòu)件基于領(lǐng)域的復(fù)用價值的關(guān)鍵,。
  (2)現(xiàn)有的面向構(gòu)件規(guī)約和組裝的模型缺乏對構(gòu)件演化的支持,,對構(gòu)件組裝的支持機制也未達(dá)到標(biāo)準(zhǔn)化。
  (3)現(xiàn)有的構(gòu)件模型都很少涉及有關(guān)構(gòu)件復(fù)用和構(gòu)件管理的信息,,比如構(gòu)件的復(fù)用度等,。
  (4)在構(gòu)件庫系統(tǒng)中,構(gòu)件模型的應(yīng)用是既面向構(gòu)件描述和分類又面向構(gòu)件規(guī)約和組裝的,,而目前關(guān)注如此多方面的構(gòu)件模型還不多見,。
2 對構(gòu)件庫中構(gòu)件模型的改進(jìn)
  人們對構(gòu)件庫中構(gòu)件的操作包括入庫,、檢索、學(xué)習(xí),、組裝和演化等,,在對構(gòu)件進(jìn)行這些操作時,變換支持其實現(xiàn)的底層構(gòu)件模型是不現(xiàn)實的,。所以,,筆者試圖探求一種構(gòu)件描述模型,并讓它同時支持構(gòu)件的語義檢索,、自動化組裝,、以及對演化的自動化支持等。
2.1 構(gòu)件模型所要描述的信息
  在對構(gòu)件進(jìn)行描述之前,,必須先明確有哪些信息需要被構(gòu)件模型來描述,。而要明確構(gòu)件模型中到底需要記錄那些信息,就應(yīng)該看構(gòu)件庫中圍繞構(gòu)件都做了哪些活動,。經(jīng)過分析,,構(gòu)件庫中分角色對構(gòu)件的操作有:
  (1)構(gòu)件發(fā)布者:注冊構(gòu)件描述、分類信息,;注冊構(gòu)件實體信息(離線構(gòu)件),;注冊構(gòu)件接口信息(在線構(gòu)件)。
  (2)軟件開發(fā)人員:查詢,;下載構(gòu)件實體(離線構(gòu)件),;獲取構(gòu)件接口信息(在線構(gòu)件);學(xué)習(xí)構(gòu)件的功用和構(gòu)件的用法等信息,;應(yīng)用構(gòu)件進(jìn)行應(yīng)用系統(tǒng)組裝,;對不適用的構(gòu)件進(jìn)行演化。
  為了支持這些活動,,構(gòu)件模型中應(yīng)該具有下列信息:
  (1)面向構(gòu)件描述和分類的信息
  所有對用戶查找,、理解、選擇,、適應(yīng)性修改以及使用構(gòu)件有幫助的信息,;
  所有對構(gòu)件庫管理者分類和管理構(gòu)件及構(gòu)件間關(guān)系有幫助的信息;
  構(gòu)件的其他屬性,,包括:生產(chǎn)者,、版本、使用者,、反饋意見,、知識產(chǎn)權(quán)控制等。
  (2)面向構(gòu)件規(guī)約和組裝的信息
  構(gòu)件對外提供的功能;
  構(gòu)件需要外界為它提供的功能,;
  構(gòu)件被用于什么語境,;
  支持構(gòu)件演化的信息。
  綜上所述,,不同的角色在構(gòu)件庫中對構(gòu)件的操作也不同,。所以,對構(gòu)件的信息需求也不同,。在一般情況下,,可以認(rèn)為在企業(yè)里構(gòu)件的入庫者就是構(gòu)件的生產(chǎn)者[3],,他們應(yīng)該將主要的構(gòu)件描述信息在構(gòu)件入庫時錄入進(jìn)去,;而構(gòu)件使用者對構(gòu)件的行為有查找、學(xué)習(xí),、組裝和演化等,,并且在構(gòu)件使用者應(yīng)用構(gòu)件庫進(jìn)行軟件開發(fā)時,在不同時期所關(guān)注的構(gòu)件信息也是不同的,。所以,,應(yīng)該分階段、分層次地把構(gòu)件的信息展現(xiàn)給構(gòu)件使用者,。在這里,,將按照查找、學(xué)習(xí),、組裝與演化三個層次來展現(xiàn)構(gòu)件的性質(zhì),。
2.2 構(gòu)件模型
  構(gòu)件(Component)是指語義完整、語法正確和有可復(fù)用價值的單位軟件,,是軟件復(fù)用過程中可以明確辨識的系統(tǒng)構(gòu)成[4],。結(jié)構(gòu)上,它是基于檢索部分,、基于學(xué)習(xí)部分和基于組裝和演化部分的復(fù)合體,。
  Component==[RetrievalPart,StudyPart,,AssemblyAndEvo-lvementPart]
  也可以表示為:
  Component==RetrievalPart×StudyPart×AssemblyAndEvo-lvementPart
  這里,,RetrievalPart是基于構(gòu)件檢索的部分,查找的目的是為了能夠準(zhǔn)確,、快速地找到所需要的構(gòu)件,,這里支持構(gòu)件查找所用的描述信息由六個刻面和復(fù)用度(一個“屬性-值”對)組成;為了能夠支持計算機檢索,,這部分信息必須用形式化語言來描述,。StudyPart是對構(gòu)件學(xué)習(xí)的部分;學(xué)習(xí)階段的目的是進(jìn)一步確定構(gòu)件是否滿足軟件開發(fā)的要求,這部分工作是由構(gòu)件使用者來做的,,所以用自然語言" title="自然語言">自然語言描述最合適,;支持構(gòu)件學(xué)習(xí)的信息可以分為構(gòu)件內(nèi)部信息描述和構(gòu)件外圍信息描述兩種,構(gòu)件的內(nèi)部信息是外界可見的屬性和行為,其中包括:公有屬性及對它們的自然語言描述和公有行為及對它們的自然語言描述,。構(gòu)件的外圍描述包括:生產(chǎn)者,,版本,使用者,,反饋意見,,知識產(chǎn)權(quán)控制等。AssemblyAndEvolvementPart是支持構(gòu)件組裝和演化的部分,;組裝和演化階段軟件使用者所關(guān)心的是構(gòu)件的具體功能和構(gòu)件的詳細(xì)使用語境,,為了使這階段支持自動化組裝,所以這部分應(yīng)該用形式化語言描述,。
2.2.1 基于檢索的部分
  基于檢索部分描述的主要目的是為了能夠準(zhǔn)確,、快速地找到所需要的構(gòu)件。很多專家學(xué)者在這方面已經(jīng)做了很多工作,,目前各類構(gòu)件庫中使用最多的是關(guān)鍵詞分類法,,枚舉、層次分類法,,屬性-值分類法和刻面分類法[5]四種,。這里選用了刻面分類法來描述構(gòu)件,并加入了復(fù)用度這個屬性-值對來描述構(gòu)件的復(fù)用價值,??堂娣诸惒糠诌x取了功能(Functionality),層次(Level),,表示方法(Representation),,硬件環(huán)境(HardwareEnvironment),軟件環(huán)境(SoftwareEnvironment),,程序語言(Programming Language)六個刻面來描述,。
  定義1 基于檢索部分(RetrievalPart)?;跈z索部分可以表示為:
  RetrievalPart=[Functionality,,Level,Representation,,Hard-wareEnvironment,,SoftwareEnvironment,ProgrammingLanguage,,ReuseDegree]
  其中,,功能選取的術(shù)語:任務(wù)管理,資源管理,時間管理,,編程支持,,中斷管理,異常管理,,用戶界面,,安全管理,網(wǎng)絡(luò)服務(wù),,數(shù)據(jù)庫管理等,;層次選取的術(shù)語:需求,設(shè)計,,實現(xiàn),,實施,測試等,;表示方法選取的術(shù)語:源代碼,,目標(biāo)代碼,,文檔,,圖表等;硬件環(huán)境選取的術(shù)語:CPU,,內(nèi)存,,顯卡,主板等,;軟件環(huán)境是所需軟件的列表,,其中既包括系統(tǒng)軟件又包括應(yīng)用軟件,例如:Win98,,Win2000,,WinXP,Linux,,Office2000等,;程序語言選取的術(shù)語:C,C#,,Visual C++,,VB,Java,,Visual Foxpro等,。這里給選取的術(shù)語空間加入機器學(xué)習(xí)的機制,隨著新構(gòu)件的不斷入庫,,更多,、更規(guī)范的術(shù)語的出現(xiàn),來不斷豐富和完善各個刻面的術(shù)語空間。
  定義1.1 復(fù)用度(ReuseDegree),。復(fù)用度等于初始值(Initialization)加上復(fù)用次數(shù)與入庫時間的比值,。
  ReuseDegree=Initialization+ReuseTime/EnterTime
  初始值在軟件入庫時由入庫人員設(shè)定,并且在以后的構(gòu)件庫運行過程中可以由構(gòu)件庫管理人員或構(gòu)件使用者更改,。
2.2.2 基于學(xué)習(xí)的部分
  定義2 基于學(xué)習(xí)的部分(StudyPart),。基于學(xué)習(xí)的部分可以分兩部分來描述:內(nèi)部信息描述(InnerInfo)和外圍信息描述(OuterInfo),。
  StudyPart=[InnerInfo, OuterInfo]
  其中,,內(nèi)部信息描述的是構(gòu)件能向外界提供什么服務(wù),需要外界為它提供什么服務(wù),,包括:外顯的屬性和向外提供的服務(wù)及其自然語言描述,。外部信息描述的是構(gòu)件的一些外部信息,如生產(chǎn)者,、版本,、使用者、反饋意見,、知識產(chǎn)權(quán)控制等,。
  定義2.1 內(nèi)部信息描述(InnerInfo)。內(nèi)部信息描述按照構(gòu)件結(jié)構(gòu)分成公有屬性(PublicAttribute)和公有行為(PublicAction)兩部分描述,。
  InnerInfo=[PublicAttribute, PublicAction]
  定義2.1.1 公有屬性,。公有屬性的結(jié)構(gòu)是屬性名稱(AttributeName)和相對應(yīng)的自然語言描述(AttributeNatureLanguageDescription)的對偶。因為基于學(xué)習(xí)部分是讓“人”去學(xué)習(xí),,所以用自然語言描述是最合適的,。
  PublicAttribute=[AttributeName,AttributeNatureLanguage-Description]
  定義2.1.2 公有行為,。公有行為的描述結(jié)構(gòu)和公有屬性的描述類似,,是行為名稱(ActionName)和相對應(yīng)的自然語言描述的對偶。其中,,行為名稱和構(gòu)件庫中構(gòu)件的真實行為名稱應(yīng)保持一致,。
  PublicAction=[ActionName,ActionNatureLanguageDesc-ription]
  定義2.2 構(gòu)件的外部信息,。構(gòu)件的外部信息包括:生產(chǎn)者(Producer),,版本(Edition),使用者(User),,反饋意見(Feedback),,知識產(chǎn)權(quán)控制(PropertyRight),入庫時間(EnterTime),,復(fù)用次數(shù)(ReuseTime),。
  OuterInfo=[Producer,,Edition,User,,F(xiàn)eedback,,Property-Right,EnterTime,,ReuseTime]
2.2.3 基于組裝和演化的部分
  基于組裝和演化部分描述的目的是為了更好地支持構(gòu)件的組裝和演化,。在支持組裝方面,此模型支持找出與構(gòu)件組裝相關(guān)的其他構(gòu)件,,提供構(gòu)件接口的語法與語義描述和提供構(gòu)件的實現(xiàn)體,。在支持演化方面,此模型支持找出所有與演化構(gòu)件相關(guān)的構(gòu)件,,分析是否有必要將相關(guān)構(gòu)件一起演化,。
  定義3 基于組裝和演化部分(AssemblyAndEvolvementPart)?;诮M裝和演化部分用來描述支持構(gòu)件組裝和演化的信息,。這里從構(gòu)件關(guān)系語境(ComponentRelationContext)、接口(Interface),、實現(xiàn)(Implementation)三個方面來刻劃,。
  AssemblyAndEvolvementPart=[ComponentRelationContext,Interface, Implementation]
  ComponentRelationContext:構(gòu)件關(guān)系語境集合,,描述構(gòu)件間的關(guān)系,;Interface:接口集合,,接口是描述構(gòu)件的通信接口規(guī)范和語法約束,;Implementation:實現(xiàn)集合,實現(xiàn)是滿足接口規(guī)范和語義描述的實例,。
  通過網(wǎng)上信息收集系統(tǒng)的實踐和多年來的研究,,總結(jié)構(gòu)件間的關(guān)系有如下五種[6],如表1所示,。


  定義3.1 構(gòu)件關(guān)系語境,。根據(jù)表1中劃分的五種構(gòu)件關(guān)系,構(gòu)件關(guān)系語境可以表示成一系列構(gòu)件的列表,,其中包括:版本關(guān)系構(gòu)件列表,,協(xié)作關(guān)系構(gòu)件列表,精化構(gòu)件列表,,被精化構(gòu)件列表,,包含構(gòu)件列表,被包含構(gòu)件列表,,依賴構(gòu)件列表,,被依賴構(gòu)件列表,。形式如下:
  ComponentRelationContext=[EditionRelTab,Cooperation-RelTab,,SubtleRelTab,,BeSubtleRelTab,InclusionRelTab,,Be-InclusionRelTab,,RelyRelTab,BeRelyRelTab]
  定義3.2 接口,。接口體是描述構(gòu)件的通信接口規(guī)范和語法約束,,它可以分為三部分描述:接口名稱(InterfaceName)、接口函數(shù)(InterfaceFunction),、接口語義(InterfaceSemantic),。
  Interface=[InterfaceName,InterfaceFunction,,InterfaceSe-mantic]
  定義3.2.1 接口函數(shù)(InterfaceFunction),。接口函數(shù)的結(jié)構(gòu)由三部分構(gòu)成:函數(shù)名稱(FunctionName),函數(shù)功能(FunctionFunction),,函數(shù)參數(shù)(FunctionParameter):
  InterfaceFunction=[FunctionName,,F(xiàn)unctionFunction,F(xiàn)un-ctionParameter]
  其中,,函數(shù)參數(shù)可以從參數(shù)名稱(ParaName),,參數(shù)說明(ParaExplain),方向(Orientation),,參數(shù)類型(ParaType)四個方面描述:
  FunctionParameter=[ParaName,,ParaExplain,Orientation,,ParaType]
  定義3.2.2 接口語義(InterfaceSemantic),。接口語義可分為接口函數(shù)功能(InterfaceFunction),前條件(ForwardCondition),,后條件(AfterCondition)三部分描述,。
  InterfaceSemantic=[InterfaceFunction,F(xiàn)orwardCondition,,AfterCondition]
  定義3.3 實現(xiàn)(Implementation),。實現(xiàn)是滿足接口規(guī)范和語義描述的實例,它包括索引(Index)和實現(xiàn)體(ImplementationBody)兩個部分,。
  Implementation=[Index,,ImplementationBody]
3 構(gòu)件模型的應(yīng)用
  本構(gòu)件模型對構(gòu)件庫管理的支持是多方面,多角度的,。理論上,,它的提出就是為了更好地支持構(gòu)件庫中構(gòu)件的重用,。實踐中,通過在網(wǎng)上信息收集系統(tǒng)構(gòu)件庫中加入構(gòu)件模型的支持,,使以前難以實現(xiàn)的一些功能得以實現(xiàn),,例如:基于語義的檢索,對構(gòu)件組裝和演化的支持等,。下面簡單介紹一下此模型在這些方面的支持機制,。
3.1 如何支持構(gòu)件的語義檢索
  本模型支持構(gòu)件的語義檢索。它從應(yīng)用領(lǐng)域,,功能,,層次,表示方法,,硬件環(huán)境,,軟件環(huán)境,程序語言,,復(fù)用度八個方面刻劃構(gòu)件的特征,。根據(jù)刻面的重要性和在網(wǎng)上信息收集系統(tǒng)構(gòu)件庫中的實踐,筆者將各個方面的權(quán)值確定如表2,。當(dāng)檢索時,,可以從除復(fù)用度之外的7個刻面輸入需求,然后計算出各個構(gòu)件的匹配度,,并且按照匹配度從高到低依次提供給構(gòu)件檢索者,。如果在輸入需求時沒有輸入某一刻面所需求的術(shù)語描述,則視為對這一刻面沒有要求,,則這一刻面按完全匹配看待,。


  通過在網(wǎng)上信息收集系統(tǒng)構(gòu)件庫中的應(yīng)用,證明了在此模型的支持下構(gòu)件的查準(zhǔn)率和查全率都有了明顯的改善,。更重要的是,,這種查找支持了定量的語義匹配度查找。
3.2 如何支持構(gòu)件組裝和演化
  具體的組裝過程是由專門的組裝工具來實現(xiàn),,此構(gòu)件模型在網(wǎng)上信息收集系統(tǒng)構(gòu)件庫中對構(gòu)件組裝和演化的支持體現(xiàn)在提供構(gòu)件組裝、演化的語境支持和組裝工具所需要的所有信息,。
  (1)分析作為組裝元素的構(gòu)件的關(guān)系語境(ComponentRelationContext),,可以得到此構(gòu)件的組裝語境和演化語境。組裝語境刻劃的信息是如果使用某一構(gòu)件去組裝,,那么還必須使用哪些與此構(gòu)件有關(guān)的其他構(gòu)件來組裝,。演化語境確定哪些構(gòu)件與本構(gòu)件演化有關(guān),關(guān)聯(lián)的程度有多大,,是否有必要也跟隨這個構(gòu)件一起演化,;演化語境還要確定演化后的構(gòu)件與周圍構(gòu)件的關(guān)系是否會發(fā)生變化,,發(fā)生什么樣的變化等。
  (2)提供接口,、實現(xiàn)等信息給組裝工具,,由組裝工具根據(jù)本構(gòu)件模型所提供的信息實現(xiàn)組裝。例如構(gòu)件模型中對構(gòu)件接口的描述提供了構(gòu)件接口的語法描述和語義描述,,這些都是構(gòu)件組裝時所必須的信息,。
  本文針對構(gòu)件庫中構(gòu)件的檢索、學(xué)習(xí),、組裝和演化,,提出了一種構(gòu)件模型。目的就是方便構(gòu)件庫的管理并使構(gòu)件的檢索,、組裝和演化更加正確,、自動。這一模型雖然在上述方面有所改進(jìn),,但是它還處于對實用化構(gòu)件模型的摸索階段,,還有很多需要改進(jìn)的地方。今后研究重點是對本構(gòu)件模型的精簡,,以及加強此模型對組裝和演化的支持,,以實現(xiàn)組裝和演化的完全自動化。
參考文獻(xiàn)
1 WALINAUK B.The current state of CBSE.IEEE Software,,1998,;(15):37-46
2 Brown A.Large-scale component-based development.New jersey:Prentice Hall,Inc.,,2000
3 邊小凡,,朱建林,吳利明.基于構(gòu)件的軟件開發(fā)方法在非成熟領(lǐng)域中的應(yīng)用.河北大學(xué)學(xué)報(自然科學(xué)版),,2005,;(25)(增):108-110
4 賈 育,顧毓清.基于領(lǐng)域特征空間的構(gòu)件語義表示方法.軟件學(xué)報,,2002,;13(2):311-316
5 王淵峰,張 涌,,任洪敏等.基于刻面描述的構(gòu)件檢索.軟件學(xué)報,,2002;13(8):1546-1552
6 婁 健,,邊小凡.教學(xué)評測與評估領(lǐng)域構(gòu)件庫系統(tǒng)的設(shè)計與實現(xiàn).河北大學(xué)數(shù)學(xué)與計算機學(xué)院研究生論文集,,2003

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點,。轉(zhuǎn)載的所有的文章,、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容、版權(quán)和其它問題,,請及時通過電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話:010-82306118,;郵箱:[email protected]