• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      組件系統(tǒng)接口匹配識別方案和應(yīng)用

      2016-02-23 07:51:55陳宏君王國棟
      關(guān)鍵詞:配置文件組件軟件

      陳宏君,王國棟

      (南京南瑞繼保電氣有限公司,江蘇 南京 211102)

      組件系統(tǒng)接口匹配識別方案和應(yīng)用

      陳宏君,王國棟

      (南京南瑞繼保電氣有限公司,江蘇 南京 211102)

      在平臺化、組件化的開發(fā)背景下,文中提出一種組件系統(tǒng)接口匹配識別方案。該方案首先在版本描述文件中記錄組件的當(dāng)前版本、父版本、兼容標(biāo)記,并填寫所依賴組件的工作版本,之后在集成配置文件中設(shè)置各個(gè)組件的工作版本。打包工具通過分析組件版本描述文件和集成配置文件,構(gòu)建單個(gè)組件的版本演化樹,根據(jù)各個(gè)組件版本演化樹和組件間依賴的工作版本,構(gòu)建組件系統(tǒng)依賴圖,將組件系統(tǒng)的版本匹配拆分為判斷各個(gè)組件被其他組件所依賴的工作版本是否匹配。如果各個(gè)組件在系統(tǒng)內(nèi)都是匹配的,則整個(gè)組件系統(tǒng)是版本匹配的。

      組件系統(tǒng);版本樹;接口匹配;組件依賴

      0 引 言

      在平臺化軟件開發(fā)和使用周期內(nèi),由于面向的應(yīng)用領(lǐng)域高度復(fù)雜,往往存在增強(qiáng)功能、優(yōu)化性能、修復(fù)缺陷等需求,這要求軟件系統(tǒng)具有較強(qiáng)的適應(yīng)能力,以便于開發(fā)人員能快速集成?;诮M件的軟件開發(fā)方法可減少軟件開發(fā)成本和加快開發(fā)進(jìn)度,故組件化的開發(fā)得到了廣泛應(yīng)用[1-5]。復(fù)雜、大規(guī)模軟件體系結(jié)構(gòu)出現(xiàn)網(wǎng)絡(luò)化、層次化、分布式的發(fā)展態(tài)勢,軟件規(guī)模擴(kuò)大化,同構(gòu)、異構(gòu)模塊存在復(fù)雜的交互協(xié)同方式,軟件的兼容性問題也日益突出[6]。嵌入式和上位機(jī)軟件的組件模型在建模過程中可包括3類[7]:源碼組件(編譯時(shí)組件)、二進(jìn)制代碼組件(鏈接時(shí)組件)、可執(zhí)行代碼組件(運(yùn)行時(shí)組件)?;诮M件進(jìn)行系統(tǒng)組合時(shí),存在一些交互活動的序列不匹配而導(dǎo)致組合行為不兼容的情況[8-14]。某個(gè)組件升級后,應(yīng)用人員進(jìn)行集成打包時(shí),存在如下問題或需求:

      (1)個(gè)別組件升級時(shí),是否其他組件也需配套升級,能否可選升級個(gè)別組件;避免所有功能都需完整測試一遍;

      (2)如何判斷部分升級時(shí),功能接口是匹配兼容的;

      (3)某個(gè)組件新增的功能,本應(yīng)用不需要時(shí),是否可保留當(dāng)前斷面版本,不用升級到最新版本;

      (4)是否可跨版本升級。

      在平臺化、組件化、模塊化架構(gòu)的開發(fā)模式下,希望在解耦發(fā)布、可選打包、版本匹配方面能有通用的解決方案,實(shí)現(xiàn)組件系統(tǒng)的快速可靠集成。

      文中介紹了版本演化樹,構(gòu)建了組件系統(tǒng)依賴圖,設(shè)計(jì)了組件系統(tǒng)接口匹配識別方案。

      1 組件概念

      組件(package/component)是可獨(dú)立發(fā)布的二進(jìn)制單元。組件是1個(gè)黑盒子,對外的接口主要是API功能和端口,其中API是組件對外提供的功能,端口表示組件內(nèi)部調(diào)用外部其他組件功能的函數(shù)[2]。圖1是一種組件模型。

      圖1 組件模型

      組件、總線、接口是組件系統(tǒng)的三元組,組件本質(zhì)是程序,可由界面、函數(shù)、數(shù)據(jù)等組成,它實(shí)現(xiàn)某種功能,并通過預(yù)定義的接口連接到總線上。總線是一個(gè)宿主總控程序,負(fù)責(zé)組件之間的互操作和通信。接口負(fù)責(zé)組件的設(shè)置、啟動、初始化、注銷和數(shù)據(jù)通信等工作。在對組件的接口定義了統(tǒng)一的規(guī)范后,系統(tǒng)投入運(yùn)行時(shí),用戶可以根據(jù)自己的需要通過接口集成到系統(tǒng)中,或從系統(tǒng)中卸載,而宿主程序和軟件框架均不用修改。

      2 組件系統(tǒng)接口匹配判據(jù)

      單個(gè)組件基于版本演化信息文件構(gòu)建版本生成樹,按照父節(jié)點(diǎn)-子節(jié)點(diǎn)層次關(guān)系形成N叉樹,從子節(jié)點(diǎn)訪問父節(jié)點(diǎn)路徑需設(shè)置兼容、不兼容標(biāo)志,單個(gè)組件內(nèi)兩個(gè)版本(A、B)是否兼容的判據(jù)是:從版本A節(jié)點(diǎn)出發(fā),通過遞歸訪問其若干層父節(jié)點(diǎn),可構(gòu)成1條連通路徑到版本B節(jié)點(diǎn),并且該路徑都是可兼容的。

      一個(gè)系統(tǒng)由N個(gè)組件構(gòu)成,各組件之間可能存在版本依賴關(guān)系,則整個(gè)系統(tǒng)最多構(gòu)成N*(N-1)/2條依賴關(guān)系。單個(gè)組件最多被N-1個(gè)組件依賴。則單個(gè)組件在系統(tǒng)內(nèi)是否匹配的判據(jù)是:該組件的當(dāng)前版本和被其他組件依賴的各個(gè)版本號之間都是兼容的。如果所有組件在系統(tǒng)內(nèi)都是匹配的,則整個(gè)系統(tǒng)是接口匹配能正常工作的。

      3 組件版本演化樹

      單個(gè)組件(模塊)存在版本分支,新版本基于某個(gè)舊版本升級開發(fā),用N叉樹結(jié)構(gòu)描述版本演化過程。將新舊版本映射為子-父節(jié)點(diǎn),新舊版本之間存在兼容、不兼容的情況。其三元組為<新版本號,舊版本號,兼容標(biāo)記>,見圖2。

      圖2 版本演化樹

      版本是否兼容,由開發(fā)者在發(fā)布時(shí)標(biāo)注,如下情況視為兼容:

      (1)修改bug,未增加接口、未改變功能行為;

      (2)新增可選接口函數(shù)、可選輸入、輸出、參數(shù)。

      如下情況視為不兼容:

      (1)刪除接口、變量;

      (2)修改接口名、變量名、配置方式;

      (3)修改了功能行為定義。

      其中接口、變量的變化,通過分析對比源文件,詞法分析后,進(jìn)行特定語義分析,提取出函數(shù)列表和形參列表,可進(jìn)行智能校驗(yàn)。當(dāng)刪除原有接口或形參不一致時(shí),置接口不兼容標(biāo)記,僅新增接口或接口無變化,置接口兼容標(biāo)記。對于功能函數(shù)行為的變化,需人工確定是否兼容,故組件版本節(jié)點(diǎn)兼容標(biāo)志是半自動獲取的,是將自動分析獲取的接口兼容標(biāo)記和人工設(shè)置的功能行為兼容標(biāo)記進(jìn)行與操作后得出組件版本間兼容標(biāo)記。版本演化樹通過讀取版本信息文件構(gòu)建。版本樹形結(jié)構(gòu)定義如下:

      structVNode{

      Stringcurrent_version; //當(dāng)前節(jié)點(diǎn)版本

      QStringparent_version; //父節(jié)點(diǎn)版本

      boolcompatible; //是否和父節(jié)點(diǎn)兼容

      VNode*parent; //父節(jié)點(diǎn)指針

      QListchild_list; //第1層子節(jié)點(diǎn)

      };

      4 組件系統(tǒng)依賴圖

      一個(gè)系統(tǒng)內(nèi)的組件通常存在版本、功能依賴關(guān)系,組件之間能正常協(xié)同運(yùn)行,依賴其他組件有合適匹配的版本(最小工作版本)。將系統(tǒng)的版本匹配拆分為各個(gè)組件被要求依賴的版本是否兼容的問題。通過讀取組件依賴配置文件,可形成單個(gè)組件被要求的工作版本序列,根據(jù)版本兼容演化規(guī)則,如果單個(gè)組件的版本序列是隸屬于1個(gè)可兼容分支,并可演化到當(dāng)前版本,則進(jìn)行版本歸并,判斷為單個(gè)組件滿足其他組件的依賴要求。如果所有組件都滿足其他組件的依賴要求,則整個(gè)系統(tǒng)是版本匹配的。

      以圖3為例,當(dāng)前系統(tǒng)由3個(gè)組件構(gòu)成,分別為V1.3版本的Master,V1.2版本的Slave,V1.2版本的IEC103。而V1.3的Master需要的其他組件工作版本為V1.1的Slave。V1.2版本的Slave需要V1.3的Master配合。V1.2的IEC103依賴V1.0的Slave和V1.2的Master。

      圖3 組件間版本配合依賴關(guān)系示意圖

      對每個(gè)組件:

      (1)Master被其他組件依賴的版本序列為:V1.3、V1.2,當(dāng)前打包版本為V1.3;

      (2)Slave被其他組件依賴的版本序列為:V1.1、V1.0,當(dāng)前打包版本為V1.2;

      (3)IEC103未被其他組件依賴,當(dāng)前打包版本為V1.1;

      (4)則版本匹配的問題拆分為3個(gè)進(jìn)程各自的版本序列是否是可兼容的;假如4個(gè)組件的版本演化樹如圖4所示,則可得出該系統(tǒng)的組件之間是版本接口匹配的結(jié)論。

      圖4 系統(tǒng)的兼容匹配轉(zhuǎn)換為各個(gè)組件的

      5 版本描述和集成文本

      定義組件版本描述文件格式,組件開發(fā)人員按照格式填寫對應(yīng)組件版本信息。組件發(fā)布時(shí),開發(fā)人員同步提供組件版本描述文件。記錄當(dāng)前版本、父版本、兼容標(biāo)記,并保留組件開發(fā)歷史版本的記錄和隸屬關(guān)系,如果依賴其他組件,則須填寫外部組件的工作版本信息。版本描述文件示例如下:

      [Key=IEC103Current=1.1]

      [VersionChild=1.1,Parent=1.0,Compatible=1]

      [DependKey=MASTER,ReqV=1.3] [DependKey=SLAVE,ReqV=1.2]

      [VersionChild=1.0,Parent=1.0,Compatible=1]

      其中,Key填寫組件名,Current填寫組件當(dāng)前版本;Child填寫子版本、Parent填寫父版本,Compatible填寫兼容標(biāo)志;DependKey填寫依賴的外部組件名,ReqV填寫依賴的外部組件工作版本。單個(gè)組件發(fā)布新版本時(shí),需更新組件版本描述文件,并保留歷史版本的描述信息。

      集成人員填寫組件系統(tǒng)集成配置文件。不同應(yīng)用人員,所需集成的組件、版本可能不同,通過組件系統(tǒng)集成配置文件,描述該系統(tǒng)所包括的各個(gè)組件名字、工作版本。集成配置文件示例如下:

      Key=MASTERVersion=1.3

      Time=2014-12-06_16:29:59Crc=8F6DE121

      Key=SLAVEVersion=1.2

      Time=2014-11-11_20:27:19Crc=2E9F6B30

      Key=IEC103Version=1.1

      Time=2014-10-22_10:25:36Crc=6A5BC31E

      其中,組件名Key、組件工作版本Version是關(guān)鍵信息;Time是組件編譯形成時(shí)間;CRC是組件的校驗(yàn)碼。

      6 具體實(shí)現(xiàn)步驟

      打包工具通過讀取version.txt文件、各組件版本描述文件,可構(gòu)建組件的版本演化樹、組件之間依賴版本、組件的工作版本序列,并按照規(guī)則得出當(dāng)前打包的組件之間接口是否匹配的結(jié)論。

      關(guān)鍵步驟如下:

      第一步:定義組件版本描述文件,在版本描述文件中記錄組件當(dāng)前版本、父版本、兼容標(biāo)記,并保留組件開發(fā)歷史版本的記錄和隸屬關(guān)系,若該組件依賴其他組件,則須填寫所依賴組件的工作版本。

      第二步:定義組件系統(tǒng)集成配置文件,在該文件中定義所挑選的各個(gè)組件名、對應(yīng)的工作版本。

      第三步:分析各個(gè)組件版本描述文件,構(gòu)建單個(gè)組件的版本演化樹,并判斷單個(gè)組件的任意2個(gè)版本是否兼容。用N叉樹結(jié)構(gòu)描述組件版本演化過程,將新-舊版本映射為子-父節(jié)點(diǎn),其三元組為<新版本號,舊版本號,兼容標(biāo)記>。從子節(jié)點(diǎn)訪問父節(jié)點(diǎn)路徑需設(shè)置兼容、不兼容標(biāo)志,則單個(gè)組件內(nèi)兩個(gè)版本(A、B)是否匹配的判據(jù)是:從版本A節(jié)點(diǎn)出發(fā),通過遞歸訪問A節(jié)點(diǎn)的多層父節(jié)點(diǎn),可構(gòu)成1條連通路徑到版本B節(jié)點(diǎn),并且該路徑都是可兼容的。

      第四步:分析組件集成配置文件,并根據(jù)各個(gè)組件版本演化樹和組件間依賴的工作版本,構(gòu)建組件系統(tǒng)依賴圖,將組件系統(tǒng)的版本匹配拆分為判斷各個(gè)組件被依賴的工作版本是否匹配。按照第2節(jié)的整體設(shè)計(jì)思路進(jìn)行判斷。

      如圖5所示,調(diào)用版本匹配判斷檢測工具,組件開發(fā)人員定義組件版本描述文件,集成人員定義組件系統(tǒng)配置文件,通過工具導(dǎo)入各個(gè)組件版本描述文件和集成配置文件,工具基于第三步、第四步原理進(jìn)行分析后,得出組件系統(tǒng)版本是否匹配的結(jié)論。

      圖5 打包時(shí)版本匹配的處理流程

      7 結(jié)束語

      基于文中提出的方案,組件集成人員基于版本匹配工具,能快速得出組件系統(tǒng)是否匹配的結(jié)論,加快了集成的速度,降低了由于版本不匹配的配置風(fēng)險(xiǎn)。該發(fā)明已經(jīng)在電力系統(tǒng)控制保護(hù)平臺的嵌入式組件系統(tǒng)、上位機(jī)可視化編程配置組件系統(tǒng)的集成時(shí)進(jìn)行了應(yīng)用,結(jié)果表明開發(fā)集成效率得到了顯著提高。

      [1] 陶傳奇,李必信,JerryGao,等.基于模型的構(gòu)件軟件修改影響分析[J].軟件學(xué)報(bào),2013,24(5):942-960.

      [2] 袁偉民,左 春.基于樣本程序的領(lǐng)域開發(fā)平臺的研究與實(shí)踐[J].計(jì)算機(jī)工程與設(shè)計(jì),2010,31(18):3979-3982.

      [3] 丁 博,王懷民,史殿習(xí).構(gòu)造具備自適應(yīng)能力的軟件[J].軟件學(xué)報(bào),2013,24(9):1981-2000.

      [4] 周曉鋒,馬志強(qiáng),劉馨月.一種基于組件的軟件開發(fā)方法[J].信息技術(shù)與標(biāo)準(zhǔn)化,2005(9):35-38.

      [5] 張 馳.軟件組件接口擴(kuò)展技術(shù)研究[J].微電子學(xué)與計(jì)算機(jī),2007,24(8):35-37.

      [6] 王 博,白曉穎,賀 飛,等.可組合嵌入式軟件建模與驗(yàn)證技術(shù)研究綜述[J].軟件學(xué)報(bào),2014,25(2):234-253.

      [7] 何鵬飛,何 平,張松陽,等.組件技術(shù)在嵌入式系統(tǒng)中的應(yīng)用[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2014,23(6):220-223.

      [8] 鄭曉梅,胡晨駿,李 剛,等.基于MDE的AADL構(gòu)件組合兼容的方法[J].計(jì)算機(jī)工程與設(shè)計(jì),2014,35(5):1862-1867.

      [9] 孫小兵,李必信,陶傳奇.基于LoCMD的軟件修改分析技術(shù)[J].軟件學(xué)報(bào),2012,23(6):1368-1381.

      [10] 史浩輝,何 煒.基于構(gòu)件的指控軟件復(fù)用[J].計(jì)算機(jī)技術(shù)與發(fā)展,2011,21(2):159-161.

      [11]TaoCQ,LiBX,SunXB.AhierarchicalmodelforregressiontestselectionandcostanalysisofJavaprograms[C]//ProcoftheAsiaPacificsoftwareengineeringconf.Sydney:IEEEComputerSociety,2010:290-299.

      [12]LinL,ProwellSJ,PooreJH.Theimpactofrequirementschangesonspecificationsandstatemachines[J].JournalofSoftwarePracticeandExperience,2009,39(6):573-610.

      [13]ParkS,BaeDH.Anapproachtoanalyzingthesoftwareprocesschangeimpactusingprocessslicingandsimulation[J].JournalofSystemsandSoftware,2011,84(4):528-543.

      [14]HassanMO,DeruelleL,BassonH.Aknowledge-basedsystemforchangeimpactanalysisonsoftwarearchitecture[C]//Procoftheresearchchallengesininformationscience.[s.l.]:[s.n.],2010:545-556.

      Matching Recognition Scheme for Interface of Component System and Its Application

      CHEN Hong-jun,WANG Guo-dong

      (NR Electric Co.,Ltd.,Nanjing 211102,China)

      With the modular philosophy and developing in platform architecture,a matching recognition scheme for interface of component system was presented.Firstly,the scheme records current version,parent version and compatible tokens of component in the version description file as well as the version information of components depended by the current components,then it sets working version of each component in the integrated configuration file.After all that the packaging tool analyzes the version description file and integrated configuration file of each component to construct version evolution tree of every component,and furthermore establish dependency graph of the component system by analyzing the version evolution tree of each component and the working version depended by every components.Finally split the version matching problem of a whole component system into matching of working version of each component depended by other components.And when every component in the system is matched,the whole component system would be version matched.

      component system;version tree;interface matching;component dependency

      2015-05-10

      2015-08-13

      時(shí)間:2016-01-26

      國家“863”高技術(shù)發(fā)展計(jì)劃項(xiàng)目(2015AA050101)作者簡介:陳宏君(1981-),男,高級工程師,碩士,研究方向?yàn)榭梢暬幊誊浖颓度胧杰浖?/p>

      http://www.cnki.net/kcms/detail/61.1450.TP.20160126.1517.024.html

      TP39

      A

      1673-629X(2016)02-0124-04

      10.3969/j.issn.1673-629X.2016.02.028

      猜你喜歡
      配置文件組件軟件
      提示用戶配置文件錯(cuò)誤 這樣解決
      無人機(jī)智能巡檢在光伏電站組件診斷中的應(yīng)用
      能源工程(2022年2期)2022-05-23 13:51:50
      禪宗軟件
      英語文摘(2021年10期)2021-11-22 08:02:26
      新型碎邊剪刀盤組件
      U盾外殼組件注塑模具設(shè)計(jì)
      搭建簡單的Kubernetes集群
      互不干涉混用Chromium Edge
      軟件對對碰
      忘記ESXi主機(jī)root密碼怎么辦
      風(fēng)起新一代光伏組件膜層:SSG納米自清潔膜層
      太陽能(2015年11期)2015-04-10 12:53:04
      游戏| 北碚区| 盱眙县| 汤阴县| 自贡市| 承德县| 江西省| 盐津县| SHOW| 施甸县| 石河子市| 墨脱县| 永寿县| 宁强县| 大化| 新营市| 商洛市| 静宁县| 克拉玛依市| 通辽市| 泾源县| 江口县| 贺兰县| 名山县| 中牟县| 那坡县| 贞丰县| 梁平县| 太湖县| 肥乡县| 永寿县| 四子王旗| 台北县| 百色市| 枣阳市| 惠东县| 张家界市| 英山县| 阿城市| 麻江县| 浮梁县|