一種構(gòu)件接口與構(gòu)件實(shí)現(xiàn)映射表的追溯分析方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種構(gòu)件接口與構(gòu)件實(shí)現(xiàn)映射表的追溯分析方法及系統(tǒng),屬于構(gòu)件的 追溯分析領(lǐng)域。
【背景技術(shù)】
[0002] 構(gòu)件和基于構(gòu)件的軟件工程(Component-based Software Engineering,簡(jiǎn)稱 CBSE)已成為軟件工程領(lǐng)域的熱點(diǎn)。構(gòu)件是可以被復(fù)用的軟件實(shí)體,主要由構(gòu)件接口與構(gòu) 件實(shí)現(xiàn)組成。軟件系統(tǒng)的質(zhì)量在很大程度上依賴于組成系統(tǒng)的構(gòu)件的質(zhì)量,構(gòu)件的需求、 涉及或編碼修改都可能會(huì)對(duì)構(gòu)件帶來(lái)影響,還可能影響到構(gòu)件所在的整個(gè)軟件系統(tǒng)。隨著 對(duì)軟件復(fù)用理解的深入,構(gòu)件的概念已不再局限于源代碼,而是延伸到構(gòu)件和系統(tǒng)需求、架 構(gòu)、設(shè)計(jì)、文檔、測(cè)試計(jì)劃、測(cè)試案例和數(shù)據(jù)以及其他對(duì)開(kāi)發(fā)活動(dòng)有用的信息,這些信息都可 以稱為可復(fù)用軟件構(gòu)件。由于構(gòu)件概念的復(fù)雜化以及構(gòu)件信息的結(jié)構(gòu)化,采用本體來(lái)表示 構(gòu)件信息,一方面可以更加準(zhǔn)確、完整地對(duì)構(gòu)件進(jìn)行描述,同時(shí)還可以實(shí)現(xiàn)構(gòu)件檢索;另一 方面也為構(gòu)件的刻面描述提供豐富的語(yǔ)義注解。
[0003] 在構(gòu)件化軟件的演化周期中,構(gòu)件測(cè)試是保障和提高構(gòu)件質(zhì)量的重要手段之一, 為后期集成測(cè)試、系統(tǒng)測(cè)試以及回歸測(cè)試奠定了基礎(chǔ)。在軟件實(shí)施前需要進(jìn)行變化影響分 析,預(yù)估軟件變化造成的影響,輔助項(xiàng)目經(jīng)理和開(kāi)發(fā)人員評(píng)估和實(shí)施變化。通過(guò)有效的變化 影響分析可以減少軟件維護(hù)的代價(jià)以及回歸測(cè)試的成本。目前軟件變化影響分析主要有兩 種方法,一種是基于追溯的變化影響分析,另一種是基于依賴關(guān)系的變化影響分析?;?追溯分析指的是"能從前向和后向兩個(gè)方向追溯某個(gè)組件在生命周期各個(gè)階段所對(duì)應(yīng)的元 素"。追溯分析方法提供了對(duì)所有類型的實(shí)體之間相關(guān)性的詳細(xì)評(píng)估。
[0004] 在構(gòu)件的生命周期中,對(duì)構(gòu)件所做的修改不僅與構(gòu)件的源代碼相關(guān),也與需求文 檔、設(shè)計(jì)文檔以及測(cè)試用例等相關(guān)?;谧匪莸淖兓绊懛治霾粌H能夠追溯同一層次內(nèi)元 素間的關(guān)系,也能追溯某一層次的某個(gè)元素及其在另一個(gè)層次所對(duì)應(yīng)的元素。因此,當(dāng)用戶 提出某個(gè)修改時(shí),通過(guò)這種追溯性分析,可識(shí)別出在不同層次中受到潛在影響的元素。除此 之外,追溯分析定義了追溯實(shí)體、應(yīng)追溯到的對(duì)象及其關(guān)聯(lián)關(guān)系。追溯方法使用有意義的名 字來(lái)標(biāo)注代碼和文檔中數(shù)據(jù),如函數(shù)、變量、類型、類和方法等,通過(guò)這些標(biāo)記符的分析可以 幫助聯(lián)想到不同層次的程序文檔的概念。因此,采用本體描述構(gòu)件模型,通過(guò)本體間的映射 關(guān)系一一映射表,其描述了追溯實(shí)體關(guān)系的建立方向,從而提出基于本體的構(gòu)件追溯分析 過(guò)程。與其他變化影響技術(shù)相比,基于本體的構(gòu)件追溯分析可以有效的分析和維護(hù)系統(tǒng)。
【發(fā)明內(nèi)容】
[0005] 針對(duì)上述問(wèn)題,本發(fā)明提供了一種構(gòu)件接口與構(gòu)件實(shí)現(xiàn)映射表的追溯分析方法及 系統(tǒng)。
[0006] 本發(fā)明的技術(shù)方案是:一種構(gòu)件接口與構(gòu)件實(shí)現(xiàn)映射表的追溯分析方法,包括:
[0007] 本體構(gòu)建模塊,用于對(duì)構(gòu)件接口和構(gòu)件實(shí)現(xiàn)建立本體模型,并用XML表示;
[0008] 映射建立模塊,用于根據(jù)使用本體描述的構(gòu)件接口與構(gòu)件實(shí)現(xiàn)生成映射表;
[0009] 追溯分析模塊,用于分析以及顯示追溯分析結(jié)果。
[0010] 構(gòu)件接口稱為源本體,構(gòu)件實(shí)現(xiàn)稱為目標(biāo)本體,所述構(gòu)件接口與構(gòu)件實(shí)現(xiàn)生成映 射表的方法,包括如下步驟:
[0011] Stepl、當(dāng)源本體和目標(biāo)本體存在且不為空時(shí),通過(guò)parserXML()方法解析源本體 和目標(biāo)本體;
[0012] Step2、通過(guò)getAttributenode ()方法獲取源本體中屬性節(jié)點(diǎn)對(duì)象,取出屬性節(jié) 點(diǎn)的名稱和值;
[0013] Step3、按照已獲取的源本體屬性節(jié)點(diǎn)名稱,通過(guò)findName()方法查找在已解析 的目標(biāo)本體屬性節(jié)點(diǎn)名稱中是否存在對(duì)應(yīng)節(jié)點(diǎn):
[0014] 若存在對(duì)應(yīng)屬性節(jié)點(diǎn)名稱,貝U通過(guò)matchValue()方法判斷源本體與目標(biāo)本體屬 性節(jié)點(diǎn)的值是否匹配:若屬性節(jié)點(diǎn)值匹配,則通過(guò)xmlD印th()方法深度遍歷目標(biāo)本體;若 屬性節(jié)點(diǎn)值不匹配,則執(zhí)行步驟Step7 ;
[0015] 若不存在對(duì)應(yīng)屬性節(jié)點(diǎn)名稱,則執(zhí)行步驟Step7;
[0016] Step4、通過(guò)getPath()方法獲得各個(gè)目標(biāo)本體屬性節(jié)點(diǎn)到根節(jié)點(diǎn)的最短無(wú)向路 徑,從而得到匹配的屬性節(jié)點(diǎn)的公共祖先節(jié)點(diǎn),通過(guò)getNbn 〇de()方法獲取公共祖先節(jié)點(diǎn) 的相鄰屬性節(jié)點(diǎn);其中,公共祖先節(jié)點(diǎn)下的所有屬性節(jié)點(diǎn)除匹配屬性節(jié)點(diǎn)以外的稱為相鄰 屬性節(jié)點(diǎn);令T為一棵XML文檔樹(shù),n和n0為T中的兩個(gè)節(jié)點(diǎn),n和n0的最短無(wú)向路徑由n 和n0除根節(jié)點(diǎn)外的最高層分別到n和n0的路徑組成,公共祖先節(jié)點(diǎn)是指在最短無(wú)向路徑 中距離n和n0最遠(yuǎn)的相同節(jié)點(diǎn);
[0017] Step5、通過(guò)semanticRelated()方法判斷目標(biāo)本體中匹配的屬性節(jié)點(diǎn)與其相鄰 屬性節(jié)點(diǎn)是否語(yǔ)義相關(guān):
[0018] 若語(yǔ)義相關(guān),貝U通過(guò)getRelatedNode()方法獲取目標(biāo)本體的屬性節(jié)點(diǎn)在相同父 節(jié)點(diǎn)的相鄰屬性節(jié)點(diǎn);若語(yǔ)義不相關(guān),則執(zhí)行步驟Step7 ;
[0019] 其中,節(jié)點(diǎn)tl、節(jié)點(diǎn)t2的公共祖先節(jié)點(diǎn)下的所有節(jié)點(diǎn)組成的樹(shù),表示為關(guān)系樹(shù) T(tl,t2),節(jié)點(diǎn)tl和節(jié)點(diǎn)t2的最近公共祖先節(jié)點(diǎn)下的所有節(jié)點(diǎn)中當(dāng)且僅當(dāng)節(jié)點(diǎn)tl或節(jié)點(diǎn) t2的名稱存在且唯一,稱節(jié)點(diǎn)tl和節(jié)點(diǎn)t2是語(yǔ)義相關(guān)的;
[0020] Step6、通過(guò)crateTable ()方法將獲取的源本體的屬性節(jié)點(diǎn)對(duì)象、對(duì)應(yīng)的目標(biāo)本 體的屬性節(jié)點(diǎn)對(duì)象以及相鄰屬性節(jié)點(diǎn)對(duì)象存入節(jié)點(diǎn)集,將源本體的屬性節(jié)點(diǎn)對(duì)象作為源屬 性,而目標(biāo)本體的屬性節(jié)點(diǎn)對(duì)象以及相鄰屬性節(jié)點(diǎn)對(duì)象作為目標(biāo)屬性,以表的形式顯示;
[0021] Step7、結(jié)束;
[0022] 構(gòu)件接口包括語(yǔ)法信息、語(yǔ)義信息、協(xié)議信息、測(cè)試信息;語(yǔ)法信息包括功能描述 和非功能描述,功能描述包括方法信息、參數(shù)信息、文本描述,方法信息包括方法名、返回類 型,參數(shù)信息包含參數(shù)名、參數(shù)類型;非功能描述包括服務(wù)質(zhì)量信息和附加信息,服務(wù)質(zhì)量 信息用以定義用戶使用服務(wù)的滿意程度,包括費(fèi)用、時(shí)間、可靠性、信譽(yù)度,附加信息包括開(kāi) 發(fā)者、版本號(hào)、應(yīng)用領(lǐng)域、截止期限;語(yǔ)義信息包括合約,合約包括前置條件、后置條件和不 變式;協(xié)議信息包括復(fù)合構(gòu)件、單一構(gòu)件及流程地址;測(cè)試信息包括測(cè)試用例、測(cè)試時(shí)間、 測(cè)試評(píng)價(jià);
[0023] 構(gòu)件實(shí)現(xiàn)包括類;類中包含了類的基本信息和功能描述,類的基本信息包括類名、 父類名和類注釋,功能描述包括方法信息和參數(shù)信息,方法信息包括方法名、返回類型和方 法注釋,參數(shù)信息包含參數(shù)名、參數(shù)類型;
[0024] 構(gòu)件接口的本體模型中,方法名、返回類型,參數(shù)名、參數(shù)類型,文本描述,費(fèi)用、時(shí) 間、可靠性、信譽(yù)度,開(kāi)發(fā)者、版本號(hào)、應(yīng)用領(lǐng)域、截止期限,前置條件、后置條件和不變式,復(fù) 合構(gòu)件、單一構(gòu)件及流程地址,測(cè)試用例、測(cè)試時(shí)間、測(cè)試評(píng)價(jià),以上這些節(jié)點(diǎn)稱為屬性節(jié) 占.
[0025] 在構(gòu)件實(shí)現(xiàn)的本體模型中類名、父類名、類注釋,方法名、返回類型、方法注釋,參 數(shù)名、參數(shù)類型,以上節(jié)點(diǎn)稱為屬性節(jié)點(diǎn)。
[0026] 所述顯示追溯分析結(jié)果的步驟如下:
[0027] Stepl、通過(guò)modifyjudge()方法確定修改內(nèi)容;
[0028] Step2、通過(guò)SearchMap()方法根據(jù)修改內(nèi)容建立查詢并判斷修改內(nèi)容是否在映 射表中:
[0029] 若修改內(nèi)容在映射表中,則執(zhí)行步驟Step3;
[0030] 若修改內(nèi)容不在映射表中,則執(zhí)行步驟Step4;
[0031] Step3、通過(guò)getMapsc()在映射表中獲取構(gòu)件接口源屬性中具有修改內(nèi)容的記錄 集合R,對(duì)R中的每一條記錄Ri(i = 1,…,n),取出構(gòu)件實(shí)現(xiàn)目標(biāo)屬性的集合1\,對(duì)1\取交 集得到受影響的結(jié)果集,接著執(zhí)行步驟S