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

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


  通過在網(wǎng)上信息收集系統(tǒng)構(gòu)件庫中的應(yīng)用,證明了在此模型的支持下構(gòu)件的查準(zhǔn)率和查全率都有了明顯的改善。更重要的是,這種查找支持了定量的語義匹配度查找。
3.2 如何支持構(gòu)件組裝和演化
  具體的組裝過程是由專門的組裝工具來實(shí)現(xiàn),此構(gòu)件模型在網(wǎng)上信息收集系統(tǒng)構(gòu)件庫中對(duì)構(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è)構(gòu)件一起演化;演化語境還要確定演化后的構(gòu)件與周圍構(gòu)件的關(guān)系是否會(huì)發(fā)生變化,發(fā)生什么樣的變化等。
  (2)提供接口、實(shí)現(xiàn)等信息給組裝工具,由組裝工具根據(jù)本構(gòu)件模型所提供的信息實(shí)現(xiàn)組裝。例如構(gòu)件模型中對(duì)構(gòu)件接口的描述提供了構(gòu)件接口的語法描述和語義描述,這些都是構(gòu)件組裝時(shí)所必須的信息。
  本文針對(duì)構(gòu)件庫中構(gòu)件的檢索、學(xué)習(xí)、組裝和演化,提出了一種構(gòu)件模型。目的就是方便構(gòu)件庫的管理并使構(gòu)件的檢索、組裝和演化更加正確、自動(dòng)。這一模型雖然在上述方面有所改進(jìn),但是它還處于對(duì)實(shí)用化構(gòu)件模型的摸索階段,還有很多需要改進(jìn)的地方。今后研究重點(diǎn)是對(duì)本構(gòu)件模型的精簡,以及加強(qiáng)此模型對(duì)組裝和演化的支持,以實(shí)現(xiàn)組裝和演化的完全自動(dòng)化。
參考文獻(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é)報(bào)(自然科學(xué)版),2005;(25)(增):108-110
4 賈 育,顧毓清.基于領(lǐng)域特征空間的構(gòu)件語義表示方法.軟件學(xué)報(bào),2002;13(2):311-316
5 王淵峰,張 涌,任洪敏等.基于刻面描述的構(gòu)件檢索.軟件學(xué)報(bào),2002;13(8):1546-1552
6 婁 健,邊小凡.教學(xué)評(píng)測與評(píng)估領(lǐng)域構(gòu)件庫系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).河北大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院研究生論文集,2003

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