亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于軟件需求規(guī)范的項(xiàng)目級(jí)復(fù)用研究

        2022-03-16 03:58:36巴元秀趙逢禹
        關(guān)鍵詞:數(shù)據(jù)模型開(kāi)源相似性

        巴元秀,趙逢禹,劉 亞

        (上海理工大學(xué) 光電信息與計(jì)算機(jī)工程學(xué)院,上海 200093)

        1 PR-REQ項(xiàng)目復(fù)用方法

        軟件項(xiàng)目復(fù)用對(duì)減少開(kāi)發(fā)工作量和成本、提高軟件項(xiàng)目質(zhì)量具有重要影響。在軟件開(kāi)發(fā)中,通過(guò)復(fù)用技術(shù)可以充分利用已有的開(kāi)發(fā)成果,從而提高軟件開(kāi)發(fā)的效率、降低開(kāi)發(fā)成本。同時(shí),通過(guò)復(fù)用高質(zhì)量的已有的開(kāi)發(fā)產(chǎn)品,避免了重新開(kāi)發(fā)過(guò)程中可能引入的錯(cuò)誤,從而提高軟件的質(zhì)量。

        Gharehyazie等人利用代碼克隆檢測(cè)工具Deckard研究項(xiàng)目?jī)?nèi)部以及跨項(xiàng)目的克隆,研究發(fā)現(xiàn)代碼克隆非常普遍,從同一項(xiàng)目的幾行代碼到跨項(xiàng)目的代碼片段之間都檢測(cè)到不同程度的相似。Zhang Yun等人研究GitHub上的項(xiàng)目復(fù)用,發(fā)現(xiàn)含有相似的README文件的軟件項(xiàng)目存在相似性。由此可以看出不論是代碼級(jí)別還是項(xiàng)目級(jí)別,都存在著大量的復(fù)用。

        目前最常用的軟件復(fù)用技術(shù)主要是代碼的復(fù)用。軟件開(kāi)發(fā)人員在進(jìn)行項(xiàng)目開(kāi)發(fā)的過(guò)程中發(fā)現(xiàn),開(kāi)發(fā)同類(lèi)型的軟件應(yīng)用時(shí)會(huì)實(shí)現(xiàn)相似或相同的功能,相應(yīng)的代碼實(shí)現(xiàn)也是相似的。代碼克隆技術(shù)便是代碼復(fù)用方法中最原始且最常用的技術(shù),一般表示為開(kāi)發(fā)人員通過(guò)代碼搜索技術(shù)從開(kāi)源項(xiàng)目中找到自己所需要的源代碼并復(fù)制到自己的項(xiàng)目中。文獻(xiàn)[5]提出一種代碼級(jí)別的復(fù)用技術(shù),該技術(shù)利用提取工具將源代碼的內(nèi)容生成代碼摘要,將用戶(hù)輸入的文本與代碼摘要進(jìn)行搜索查詢(xún),最后獲取相似的代碼進(jìn)行復(fù)用。

        近年來(lái),隨著開(kāi)源生態(tài)的完善,人們更多地關(guān)注項(xiàng)目級(jí)別的復(fù)用研究。Xu等人研究跨項(xiàng)目復(fù)用,利用歷史開(kāi)源軟件項(xiàng)目的描述文檔和源代碼,將其與待開(kāi)發(fā)項(xiàng)目的功能進(jìn)行相似性度量并推薦相似的軟件項(xiàng)目。Thung等人利用相似的項(xiàng)目會(huì)共享相似的第三方庫(kù)這一原理,提取開(kāi)源項(xiàng)目使用的庫(kù),利用對(duì)庫(kù)的相似性匹配相似的項(xiàng)目實(shí)現(xiàn)項(xiàng)目級(jí)別的復(fù)用。Nguyen等人提出生態(tài)系統(tǒng)概念,由歷史開(kāi)源項(xiàng)目、庫(kù)以及項(xiàng)目之間的相互依賴(lài)關(guān)系組成,將開(kāi)發(fā)人員對(duì)待開(kāi)發(fā)項(xiàng)目的創(chuàng)建、修改等行為與生態(tài)系統(tǒng)分別構(gòu)建成圖,利用圖的相似性算法選取相似的項(xiàng)目進(jìn)行復(fù)用。

        文獻(xiàn)[6~8]在項(xiàng)目級(jí)復(fù)用研究中仍有不足之處。文獻(xiàn)[6]主要研究了項(xiàng)目開(kāi)發(fā)過(guò)程中跨項(xiàng)目的代碼復(fù)用技術(shù),是編碼階段的復(fù)用方法。文獻(xiàn)[7]是從項(xiàng)目使用的庫(kù)方面考慮復(fù)用,文獻(xiàn)[8]是根據(jù)歷史開(kāi)源項(xiàng)目、庫(kù)以及待開(kāi)發(fā)項(xiàng)目三者之間的依賴(lài)關(guān)系考慮復(fù)用。以上的研究都還沒(méi)有實(shí)現(xiàn)從待開(kāi)發(fā)項(xiàng)目的需求分析考慮項(xiàng)目級(jí)別的復(fù)用。

        文獻(xiàn)[9]提出一種基于需求規(guī)范文檔進(jìn)行代碼的功能特征復(fù)用的方法,該方法首先從需求規(guī)范文檔中提取出功能特征關(guān)鍵詞,然后將提取出的關(guān)鍵詞與代碼庫(kù)中代碼的功能特征關(guān)鍵詞進(jìn)行相似性匹配,最后根據(jù)相似的功能特征進(jìn)行代碼復(fù)用。文獻(xiàn)[9]從需求規(guī)范文檔的功能特征出發(fā),搜索可復(fù)用的代碼,仍然屬于項(xiàng)目局部功能的代碼復(fù)用。

        在軟件工程實(shí)踐中,當(dāng)開(kāi)發(fā)人員獲取項(xiàng)目的軟件需求后,通常需要根據(jù)需求文檔中的問(wèn)題領(lǐng)域、用例描述、數(shù)據(jù)模型E-R圖搜索開(kāi)源項(xiàng)目庫(kù)中的相似軟件項(xiàng)目。如果能從需求文檔的問(wèn)題領(lǐng)域、用例描述以及數(shù)據(jù)模型方面找到相似的歷史項(xiàng)目進(jìn)行復(fù)用,可以大大節(jié)省項(xiàng)目設(shè)計(jì)與實(shí)施時(shí)間。而用自動(dòng)化的方法找到相似的歷史項(xiàng)目,是一件復(fù)雜的工作。因此本文提出了一種基于軟件需求規(guī)范的的項(xiàng)目級(jí)復(fù)用方法PR-REQ(Project Reuse based on Requirements Specification)。該方法首先分析歷史開(kāi)源項(xiàng)目,構(gòu)建算法提取歷史項(xiàng)目核心信息,包括項(xiàng)目的領(lǐng)域信息、代碼的功能操作序列以及數(shù)據(jù)模型信息。然后針對(duì)待開(kāi)發(fā)軟件項(xiàng)目的需求文檔,研究提取問(wèn)題領(lǐng)域、用例的功能操作序列以及數(shù)據(jù)模型等信息的方法。最后分別構(gòu)建領(lǐng)域相似性度量、功能操作序列相似性度量以及數(shù)據(jù)模型相似性度量算法,加權(quán)計(jì)算得到最終的相似性度量值并按由大到小排列。文中從GitHub上下載了8類(lèi)Java web項(xiàng)目構(gòu)造實(shí)驗(yàn),對(duì)本文提出的方法進(jìn)行實(shí)證。

        2 PR-REQ項(xiàng)目復(fù)用方法

        項(xiàng)目級(jí)別的復(fù)用是對(duì)歷史項(xiàng)目在軟件架構(gòu)、功能實(shí)現(xiàn)、數(shù)據(jù)模型、設(shè)計(jì)與編碼等多方面的復(fù)用,也是軟件復(fù)用中最高級(jí)別的復(fù)用。為了實(shí)現(xiàn)項(xiàng)目級(jí)別的復(fù)用,圖1給出了該方法的操作流程圖,分為3步,它們分別是歷史開(kāi)源項(xiàng)目信息的提取、待開(kāi)發(fā)項(xiàng)目的需求文檔分析以及項(xiàng)目相似性度量計(jì)算。

        (1)歷史開(kāi)源項(xiàng)目信息的提取。

        為了復(fù)用歷史項(xiàng)目,需要對(duì)開(kāi)源歷史項(xiàng)目進(jìn)行數(shù)據(jù)分析與特征提取。在每個(gè)項(xiàng)目中,大部分都有源代碼和描述文檔。源代碼包含了項(xiàng)目的功能信息和數(shù)據(jù)模型信息。描述文檔通常給出了項(xiàng)目的功能介紹、用法以及如何安裝或部署。

        a.描述文檔領(lǐng)域信息的提取。

        分析描述文檔中的項(xiàng)目功能介紹,利用自然語(yǔ)言的方法處理文本主題分析提取項(xiàng)目的領(lǐng)域信息。

        b.代碼中功能信息的提取。

        采用靜態(tài)代碼分析技術(shù)解析歷史項(xiàng)目的代碼,提取項(xiàng)目的各功能操作,構(gòu)建項(xiàng)目的功能操作序列。

        c.數(shù)據(jù)模型信息的提取。

        從數(shù)據(jù)庫(kù)配置文件或源代碼中提取所使用的數(shù)據(jù)庫(kù)的表名、列名等信息,構(gòu)建數(shù)據(jù)模型。

        (2)待開(kāi)發(fā)項(xiàng)目的需求文檔分析。

        a.領(lǐng)域信息的提取。

        在軟件復(fù)用時(shí),屬于同一個(gè)領(lǐng)域的項(xiàng)目被復(fù)用的可能性更高。這里通過(guò)自然語(yǔ)言處理方法,對(duì)需求文檔進(jìn)行分析,提取待開(kāi)發(fā)項(xiàng)目的領(lǐng)域信息。

        b.功能操作信息的提取。

        為了從項(xiàng)目的功能方面進(jìn)行相似性度量分析,需提取需求文檔中的用例,根據(jù)用例中的活動(dòng)和參與活動(dòng)的對(duì)象,構(gòu)建待開(kāi)發(fā)項(xiàng)目各功能的功能操作序列。

        c.數(shù)據(jù)模型信息的提取。

        在數(shù)據(jù)模型E-R圖中提取與待開(kāi)發(fā)項(xiàng)目有關(guān)的實(shí)體信息。

        (3)項(xiàng)目相似性度量。

        a.領(lǐng)域相似性度量。

        為了能夠根據(jù)需求文檔中的領(lǐng)域信息在歷史開(kāi)源項(xiàng)目中尋找領(lǐng)域方面相似的項(xiàng)目,本文從開(kāi)源歷史項(xiàng)目的描述文檔和待開(kāi)發(fā)項(xiàng)目的需求文檔中各提取若干個(gè)主題,利用主題的相似性計(jì)算領(lǐng)域的相似度。

        a

        =(

        a

        ,

        a

        ,…,

        a

        )定義為從待開(kāi)發(fā)項(xiàng)目的需求文檔描述中提取的

        n

        維主題向量,

        b

        =(

        b

        ,

        b

        ,…,

        b

        )定義為從開(kāi)源歷史項(xiàng)目的描述文檔中提取的

        n

        維主題向量,領(lǐng)域相似度計(jì)算如公式(1)所示。

        (1)

        b.功能操作相似性度量。

        為了從功能操作方面比較待開(kāi)發(fā)項(xiàng)目的需求文檔和歷史開(kāi)源項(xiàng)目之間的相似性,本文構(gòu)建了功能操作序列的相似性度量方法。待開(kāi)發(fā)項(xiàng)目的需求文檔中的功能操作序列定義為

        W

        ={

        W

        ,

        W

        ,…,

        W

        },其中

        W

        (

        i

        =1,2,…,

        m

        )代表一組功能操作序列的集合。歷史開(kāi)源項(xiàng)目中提取的功能操作序列定義為

        T

        ={

        T

        ,

        T

        ,…,

        T

        },其中

        T

        (

        j

        =1,2,…,

        n

        )代表一組功能操作序列的集合。序列

        W

        中序列的個(gè)數(shù)記為

        m

        ,序列

        T

        中序列的個(gè)數(shù)記為

        n

        ,采用余弦相似度計(jì)算

        W

        中任一個(gè)序列

        W

        T

        中任一個(gè)序列

        T

        的相似度值記為

        S

        (

        W

        ,

        T

        ),最后根據(jù)公式(2)計(jì)算最終的相似度值。

        S

        (

        W

        ,

        T

        )=

        (2)

        c.數(shù)據(jù)模型相似性度量。

        為了更準(zhǔn)確地進(jìn)行項(xiàng)目復(fù)用,本文對(duì)數(shù)據(jù)模型也進(jìn)行分析,構(gòu)建數(shù)據(jù)模型相似性分析。歷史開(kāi)源項(xiàng)目中的數(shù)據(jù)模型定義為

        A

        ={

        A

        ,

        A

        ,…,

        A

        },其中

        A

        (

        j

        =1,2,…,

        n

        )代表由表名、列名信息組成的一組數(shù)據(jù)模型集合,集合

        A

        中的個(gè)數(shù)記為

        n

        。待開(kāi)發(fā)項(xiàng)目的需求文檔中提取出的數(shù)據(jù)模型定義為

        C

        ={

        C

        ,

        C

        ,…,

        C

        },其中

        C

        (

        i

        =1,2,…,

        m

        )代表由需求文檔中表名、列名信息組成的一組數(shù)據(jù)模型集合,集合

        C

        中的個(gè)數(shù)記為

        m

        。采用余弦相似度計(jì)算集合

        A

        中任一組數(shù)據(jù)模型

        A

        與集合

        C

        中任一組數(shù)據(jù)模型

        C

        的相似度值記為

        S

        (

        C

        ,

        A

        ),最后根據(jù)公式(3)計(jì)算集合

        C

        A

        的相似度值。

        S

        (

        C

        ,

        A

        )=

        (3)

        d.計(jì)算候選項(xiàng)目的最終相似得分。

        在分別計(jì)算上述三種相似度值后,最后采用公式(4)進(jìn)行加權(quán)計(jì)算得到最終的相似性度量分值。

        (4)

        其中,

        α

        代表領(lǐng)域信息的權(quán)重,

        β

        代表功能操作序列的權(quán)重,

        γ

        代表數(shù)據(jù)模型的權(quán)重。

        圖1 PR-REQ方法流程圖

        3 PR-REQ方法的關(guān)鍵技術(shù)

        PR-REQ項(xiàng)目復(fù)用方法中的關(guān)鍵技術(shù)主要是從歷史開(kāi)源項(xiàng)目與待開(kāi)發(fā)項(xiàng)目的需求文檔中提取相關(guān)特征,然后計(jì)算這些特征的相似度并基于特征相似性推薦可復(fù)用的歷史項(xiàng)目。其中的關(guān)鍵技術(shù)主要有歷史開(kāi)源項(xiàng)目信息的提取和待開(kāi)發(fā)項(xiàng)目需求文檔信息的提取。

        3.1 歷史開(kāi)源項(xiàng)目信息提取

        大多數(shù)開(kāi)源項(xiàng)目中都有描述文檔和源代碼。為了分析歷史開(kāi)源項(xiàng)目,本文對(duì)項(xiàng)目中包含的描述文檔和源代碼進(jìn)行數(shù)據(jù)分析和特征提取。

        (1)領(lǐng)域信息的提取

        描述文檔是描述軟件項(xiàng)目信息的文檔,它一般包含軟件的基本功能、簡(jiǎn)要的使用說(shuō)明、代碼目錄結(jié)構(gòu)說(shuō)明等信息。文中使用斯坦福主題模型工具提供的基于概率模型的LDA主題模型算法對(duì)描述文檔中的項(xiàng)目功能介紹部分進(jìn)行領(lǐng)域信息的主題提取。

        在對(duì)領(lǐng)域描述文本進(jìn)行數(shù)據(jù)提取等相關(guān)工作之前,一般要進(jìn)行文本的預(yù)處理。文本的預(yù)處理也就是將需要進(jìn)行分析的文本通過(guò)一定的方式轉(zhuǎn)換成方便處理的結(jié)構(gòu)化的數(shù)據(jù)形式, 可以提高文本處理的準(zhǔn)確性。需求規(guī)范文檔大多由中文文本構(gòu)成,因此文中主要使用的預(yù)處理方式是中文文本的預(yù)處理。結(jié)合對(duì)于中文文本的特征進(jìn)行分析,在研究的過(guò)程中,文本預(yù)處理方式主要包括語(yǔ)料庫(kù)清理、分詞、詞性標(biāo)注和停止詞過(guò)濾。

        ①語(yǔ)料庫(kù)清理。

        語(yǔ)料庫(kù)的清理主要是清理和刪除一些非法語(yǔ)言文字等不良數(shù)據(jù)。

        ②分詞、詞性標(biāo)注。

        詞是構(gòu)成語(yǔ)句的基本單元,分析語(yǔ)句前需要先分詞,將文本中詞切分出來(lái)作為特征值,是自然語(yǔ)言處理比較重要的一步。中文分詞就是指將句子中漢字序列切分成詞集合。相對(duì)于英文而言,中文分詞要復(fù)雜得多。

        ③停止詞過(guò)濾。

        在普通文本中含有標(biāo)點(diǎn)符號(hào)、介詞、語(yǔ)氣詞等,這些詞對(duì)理解文本沒(méi)有實(shí)際意義,應(yīng)從分詞結(jié)果中去除,這些詞稱(chēng)之為停用詞。去停用詞可以省存儲(chǔ)空間,減少停用詞對(duì)理解語(yǔ)句造成的噪音,降低文本維度,可以提高處理文本的效率和準(zhǔn)確率。

        文獻(xiàn)[13]認(rèn)為對(duì)一篇科技文獻(xiàn),提取主題數(shù)量在5到6個(gè)時(shí)分析效果最好。借鑒該研究的結(jié)論,對(duì)軟件需求與歷史項(xiàng)目文檔的主題數(shù)量為5。

        (2)代碼中功能操作序列的提取。

        如何在軟件項(xiàng)目代碼中提取主要功能的操作序列是本文的關(guān)鍵算法。對(duì)于不同的軟件項(xiàng)目,由于其軟件架構(gòu)不同,其功能的操作序列提取方法也有差異,但都可以通過(guò)對(duì)配置文件與源代碼的靜態(tài)分析獲得。文中以Java web項(xiàng)目為研究對(duì)象,給出特征提取算法。Java web項(xiàng)目的功能操作信息主要體現(xiàn)在項(xiàng)目的頁(yè)面文件上,因此文中針對(duì)Java web項(xiàng)目的頁(yè)面文件提取功能操作序列。為了從頁(yè)面文件中提取項(xiàng)目的功能操作,需要利用JSOUP解析器從應(yīng)用程序的入口頁(yè)面開(kāi)始對(duì)其進(jìn)行數(shù)據(jù)解析,提取對(duì)應(yīng)頁(yè)面的功能操作,構(gòu)建功能操作序列。在提取功能操作時(shí),在web頁(yè)面中,操作功能主要分為靜態(tài)和動(dòng)態(tài)兩類(lèi)。 就是一個(gè)靜態(tài)頁(yè)面的跳轉(zhuǎn),可以從中提取出“注冊(cè)”功能; 是一個(gè)動(dòng)態(tài)頁(yè)面的跳轉(zhuǎn),在點(diǎn)擊“提交訂單”的同時(shí)會(huì)調(diào)用saveOrder方法,從后臺(tái)數(shù)據(jù)庫(kù)中調(diào)取數(shù)據(jù),可以從中提取出“提交訂單”功能。算法1給出了代碼功能操作提取算法。

        算法1:代碼功能操作提取算法。

        輸入:Java web項(xiàng)目的頁(yè)面文件集合

        P

        ={

        p

        ,

        p

        ,…,

        p

        },項(xiàng)目的配置文件config。輸出:項(xiàng)目的功能操作序列

        T

        ={

        T

        ,

        T

        ,…,

        T

        },其中

        T

        (

        i

        =1,2,…,

        m

        )為一組功能操作序列的集合

        處理:

        1.初始化隊(duì)列Queue,

        G

        ={

        V

        ,

        E

        },

        V

        =Φ,

        E

        =Φ;2.從config中找到項(xiàng)目的入口頁(yè)面文件,不失一般性假設(shè)為

        p

        ;3.將

        p

        作為訪(fǎng)問(wèn)的第一個(gè)頁(yè)面文件入隊(duì)列Queue;

        4.while(Queue非空)

        {

        CurrentPage=deQueue(Queue);//隊(duì)頭元素出隊(duì);

        V

        =

        V

        ∪{CurrentPage};利用JSOUP解析器提取CurrentPage頁(yè)面中的功能操作信息

        f

        和與之對(duì)應(yīng)的跳轉(zhuǎn)頁(yè)面

        p

        ,

        p

        P

        ;構(gòu)造

        G

        的有向邊,加入到集合

        E

        中,記為

        E

        =

        E

        ∪{<(CurrentPage,

        p

        ),

        f

        >};if (

        p

        not in

        V

        )

        p

        入隊(duì)列Queue;

        }

        5.在圖

        G

        中,從節(jié)點(diǎn)

        p

        開(kāi)始按照深度優(yōu)先算法遍歷路徑上的功能操作

        f

        構(gòu)造功能操作序列

        T

        ;6.輸出功能操作序列

        T

        ,結(jié)束算法。

        (3)數(shù)據(jù)模型的提取

        算法以Java web項(xiàng)目的代碼文檔集合作為輸入,采用一種輕量級(jí)的查詢(xún)提取工具SQL提取器,該工具使用AST過(guò)程內(nèi)的字符串解析,能夠?qū)Υa中的數(shù)據(jù)模型進(jìn)行靜態(tài)分析,提取出帶有元信息的SQL語(yǔ)句,通過(guò)對(duì)SQL語(yǔ)句進(jìn)行分析,輸出含有數(shù)據(jù)庫(kù)的表名、列名信息的集合。文中給出了利用SQL提取器進(jìn)行數(shù)據(jù)模型提取的過(guò)程,見(jiàn)算法2。

        算法2:數(shù)據(jù)模型的提取。

        輸入:項(xiàng)目的代碼文檔集合

        B

        ={

        b

        ,

        b

        ,…,

        b

        }。輸出:表名、列名信息組成的數(shù)據(jù)模型集合

        A

        ={}。

        處理:

        1.初始化集合

        A

        ;2.將

        b

        作為訪(fǎng)問(wèn)的第一個(gè)代碼文檔;3.for each (CurrentFile in

        B

        )

        {

        利用SQL提取器提取出CurrentFile中SQL語(yǔ)句的表名和Insert語(yǔ)句中的列名,記為

        A

        =

        A

        ∪{}

        3.2 待開(kāi)發(fā)項(xiàng)目需求文檔信息提取

        對(duì)于待開(kāi)發(fā)項(xiàng)目,需要在需求文檔中提取領(lǐng)域信息、功能操作信息、數(shù)據(jù)模型。其中領(lǐng)域信息的提取方法與歷史開(kāi)源項(xiàng)目中提取領(lǐng)域信息的方法一致。數(shù)據(jù)模型的提取是對(duì)需求文檔的數(shù)據(jù)模型E-R圖中的實(shí)體關(guān)系進(jìn)行分析。功能信息的提取是對(duì)需求文檔中的用例進(jìn)行特征提取,提取用例的活動(dòng),構(gòu)建待開(kāi)發(fā)項(xiàng)目的功能操作序列。限于篇幅,文中主要介紹對(duì)需求文檔中的功能信息進(jìn)行提取的方法。

        用例由用例名稱(chēng)、描述、角色、編號(hào)、前置條件以及主事件流等組成,文中給出了用例功能操作序列的提取算法,該算法使用需求文檔中的用例集合

        R

        ={

        r

        ,

        r

        ,…,

        r

        }作為輸入,提取出與系統(tǒng)進(jìn)行交互的用例活動(dòng),構(gòu)建功能操作序列

        W

        ={

        W

        ,

        W

        ,…,

        W

        }作為輸出,見(jiàn)算法3。

        算法3:用例功能特征的操作序列的提取。

        輸入:需求文檔中的用例集合

        R

        ={

        r

        ,

        r

        ,…,

        r

        }。輸出:功能操作序列

        W

        ={

        W

        ,

        W

        ,…,

        W

        },其中

        W

        (

        i

        =1,2,…,

        m

        )為一組功能操作序列的集合。

        處理:

        1.初始化集合

        W

        ;2.將

        r

        作為訪(fǎng)問(wèn)的第一個(gè)用例;3.for each (CurrentUse in

        R

        )

        {

        根據(jù)CurrentUse中的事件流的交互過(guò)程,提取出參與用例活動(dòng)的操作和對(duì)應(yīng)的活動(dòng)對(duì)象,構(gòu)建功能操作序列集合記為

        W

        ;

        W

        =

        W

        W

        ;

        }

        4.輸出操作序列

        W

        ,結(jié)束算法。

        4 實(shí)驗(yàn)研究

        在軟件項(xiàng)目級(jí)別的復(fù)用研究領(lǐng)域中,目前尚沒(méi)有找到包含待開(kāi)發(fā)項(xiàng)目的需求文檔、歷史項(xiàng)目的源代碼數(shù)據(jù)集,以及它們之間相似度的度量參考標(biāo)準(zhǔn)。因此為了驗(yàn)證文中提出的PR-REQ方法的準(zhǔn)確性,文中構(gòu)造了一個(gè)實(shí)驗(yàn),采用人工方法和PR-REQ方法分別對(duì)需求文檔進(jìn)行分析,將PR-REQ方法找出的Top N的相似軟件項(xiàng)目與人工找出的Top N的相似軟件項(xiàng)目進(jìn)行一致性和包含性比較。

        4.1 數(shù)據(jù)集

        文中從GitHub上下載了958個(gè)Java Web項(xiàng)目,這些項(xiàng)目包含學(xué)校管理類(lèi)、企業(yè)類(lèi)、競(jìng)賽類(lèi)、網(wǎng)購(gòu)類(lèi)、游戲類(lèi)等八類(lèi)項(xiàng)目,在這些項(xiàng)目中同時(shí)具有需求描述和項(xiàng)目代碼的項(xiàng)目數(shù)共68個(gè)。開(kāi)源軟件項(xiàng)目數(shù)及其類(lèi)別見(jiàn)表1。

        表1 開(kāi)源軟件項(xiàng)目數(shù)及其類(lèi)別

        4.2 實(shí)驗(yàn)步驟

        基于PR-REQ方法開(kāi)發(fā)了一個(gè)項(xiàng)目復(fù)用推薦程序,該推薦程序首先從數(shù)據(jù)庫(kù)中讀取歷史開(kāi)源項(xiàng)目和待開(kāi)發(fā)項(xiàng)目的需求文檔。然后分別提取開(kāi)源項(xiàng)目和需求文檔中的領(lǐng)域信息、功能操作序列以及數(shù)據(jù)模型信息并存儲(chǔ)于數(shù)據(jù)庫(kù)中。最后通過(guò)調(diào)用相似度量程序?qū)π枨笪臋n和歷史開(kāi)源項(xiàng)目進(jìn)行相似度量,利用相似度得分機(jī)制將候選項(xiàng)目按得分由大到小排列,并將候選項(xiàng)目的結(jié)果存儲(chǔ)到數(shù)據(jù)庫(kù)中。

        4.3 驗(yàn)證PR-REQ方法的準(zhǔn)確性

        為了驗(yàn)證該方法的準(zhǔn)確性,文中從百度文庫(kù)中下載了5個(gè)學(xué)校管理類(lèi)需求文檔和5個(gè)企業(yè)類(lèi)需求文檔,對(duì)其從①到⑩進(jìn)行編號(hào)。為了便于實(shí)驗(yàn)中對(duì)相似項(xiàng)目進(jìn)行排序,將表1中同時(shí)具有需求描述和項(xiàng)目代碼的68個(gè)項(xiàng)目進(jìn)行從1到68編號(hào)。其次,分別采用人工方法和PR-REQ方法對(duì)這10個(gè)需求文檔進(jìn)行分析,從68個(gè)項(xiàng)目中找出相似的軟件項(xiàng)目。人工方法是由作者共同對(duì)每個(gè)需求文檔進(jìn)行分析,從領(lǐng)域、功能操作以及數(shù)據(jù)模型三個(gè)方面進(jìn)行數(shù)據(jù)分析,找出與之相似程度最高的3個(gè)項(xiàng)目,對(duì)其進(jìn)行相似度排序并記錄3個(gè)項(xiàng)目對(duì)應(yīng)的編號(hào)。PR-REQ方法則是利用開(kāi)發(fā)好的項(xiàng)目復(fù)用推薦程序,對(duì)這10個(gè)需求文檔進(jìn)行特征提取與分析,同樣找出與之相似程度最高的3個(gè)項(xiàng)目,對(duì)其進(jìn)行相似度排序并記錄3個(gè)項(xiàng)目對(duì)應(yīng)的編號(hào)。最后,分別對(duì)人工選取的項(xiàng)目和PR-REQ方法選取的項(xiàng)目進(jìn)行一致率和包含率分析,驗(yàn)證文中提出的PR-REQ方法的準(zhǔn)確性。

        定義1:一致率:PR-REQ系統(tǒng)找出的項(xiàng)目與人工找出的項(xiàng)目一致的比率。

        定義2:包含率:PR-REQ系統(tǒng)找出的項(xiàng)目包含在人工找出的項(xiàng)目中的比率。

        表2是針對(duì)每個(gè)需求文檔,利用人工方法和PR-REQ方法找出的相似軟件項(xiàng)目對(duì)應(yīng)的編號(hào)。然后對(duì)表2中的編號(hào)進(jìn)行一致率和包含率分析,分析結(jié)果見(jiàn)表3。

        表2 人工方法和PR-REQ方法選取的相似項(xiàng)目的編號(hào)

        表3 一致率和包含率分析 %

        由表3可以看出,針對(duì)這10個(gè)需求文檔,人工分析與PR-REQ分析推薦的第一個(gè)歷史項(xiàng)目有80%相同,在推薦一個(gè)最相似的項(xiàng)目時(shí),一致率與包含率意義相同。Top 2一致率為40%,Top 3一致率為30%,可以看出,隨著推薦的項(xiàng)目越多,一致率會(huì)有所下降,這一結(jié)果也符合預(yù)期;而對(duì)于包含率,Top 1、Top 2與Top 3都不低于80%,也就是說(shuō)利用PR-REQ方法找出的1到3個(gè)相似項(xiàng)目與人工找出的1到3個(gè)相似項(xiàng)目雖然無(wú)法在相似程度上保持一致,但包含率在80%以上,這說(shuō)明文中提出的PR-REQ方法具有較高的準(zhǔn)確性,對(duì)于項(xiàng)目復(fù)用具有實(shí)用價(jià)值。

        5 結(jié)束語(yǔ)

        軟件項(xiàng)目需求分析是開(kāi)發(fā)人員開(kāi)發(fā)一個(gè)新項(xiàng)目時(shí)的第一階段,目前尚沒(méi)有一種項(xiàng)目復(fù)用方法可以根據(jù)待開(kāi)發(fā)項(xiàng)目的需求文檔進(jìn)行項(xiàng)目級(jí)復(fù)用。針對(duì)這一問(wèn)題,文中提出了一種基于軟件需求分析的項(xiàng)目級(jí)復(fù)用方法PR-REQ,該方法從項(xiàng)目的主題領(lǐng)域、功能操作信息以及數(shù)據(jù)模型三個(gè)方面對(duì)待開(kāi)發(fā)項(xiàng)目的需求文檔和開(kāi)源歷史項(xiàng)目進(jìn)行特征提取和數(shù)據(jù)分析,最后構(gòu)建相似性度量方法進(jìn)行相似項(xiàng)目推薦?;谖闹刑岢龅姆椒ǎS機(jī)選取了企業(yè)類(lèi)和學(xué)校管理類(lèi)的需求文檔各5個(gè)來(lái)構(gòu)造實(shí)驗(yàn)驗(yàn)證其準(zhǔn)確性。

        實(shí)驗(yàn)結(jié)果表明,文中提出的基于需求分析的項(xiàng)目級(jí)復(fù)用方法在尋找相似的軟件項(xiàng)目方面具有較高的準(zhǔn)確性,該方法對(duì)于開(kāi)發(fā)人員在項(xiàng)目開(kāi)發(fā)的初期階段具有重要作用。但是本實(shí)驗(yàn)只取了68個(gè)歷史項(xiàng)目文件,針對(duì)兩類(lèi)共10個(gè)項(xiàng)目需求文檔進(jìn)行了分析,實(shí)驗(yàn)樣本數(shù)量仍然偏少,為了證實(shí)該方法的實(shí)用性,還需下載更多的項(xiàng)目進(jìn)行分析。另外對(duì)于非Java web項(xiàng)目,還需基于歷史項(xiàng)目的代碼進(jìn)一步構(gòu)建算法提取功能操作序列與項(xiàng)目的數(shù)據(jù)模型。

        猜你喜歡
        數(shù)據(jù)模型開(kāi)源相似性
        一類(lèi)上三角算子矩陣的相似性與酉相似性
        淺析當(dāng)代中西方繪畫(huà)的相似性
        五毛錢(qián)能買(mǎi)多少頭牛
        面板數(shù)據(jù)模型截面相關(guān)檢驗(yàn)方法綜述
        加熱爐爐內(nèi)跟蹤數(shù)據(jù)模型優(yōu)化
        大家說(shuō):開(kāi)源、人工智能及創(chuàng)新
        開(kāi)源中國(guó)開(kāi)源世界高峰論壇圓桌會(huì)議縱論開(kāi)源與互聯(lián)網(wǎng)+創(chuàng)新2.0
        低滲透黏土中氯離子彌散作用離心模擬相似性
        開(kāi)源計(jì)算機(jī)輔助翻譯工具研究
        V4國(guó)家經(jīng)濟(jì)的相似性與差異性
        91情侣视频| 毛片成人18毛片免费看| 国产让女高潮的av毛片| 色爱无码av综合区| 岛国AV一区二区三区在线观看| 国产成人丝袜在线无码| 五月婷婷开心六月激情| 国产av精品麻豆网址| 久久精品国产字幕高潮| 日本熟妇人妻xxxxx视频| 成人国产永久福利看片| 亚洲av极品尤物不卡在线观看| 91九色最新国产在线观看| 影音先锋男人av鲁色资源网| 狠狠久久亚洲欧美专区| 国产免费一区二区av| 24小时在线免费av| 一区二区三区国产| 97人妻熟女成人免费视频| 999精品免费视频观看| 亚洲av色精品国产一区二区三区 | 无码ol丝袜高跟秘书在线观看| 久久中文字幕无码一区二区| 亚洲第一女人天堂av| 人人澡人人妻人人爽人人蜜桃麻豆| 真人与拘做受免费视频| 精品免费一区二区三区在| 亚洲视频综合在线第一页| 久久精品中文字幕有码| 久久99精品久久水蜜桃| 精品国产一级毛片大全| 激情视频国产在线观看| 亚洲综合天堂av网站在线观看 | 久久人妻av无码中文专区| 亚洲女人的天堂网av| 色综合久久久无码中文字幕| 比比资源先锋影音网| av网站入口在线免费观看| 午夜国产视频一区二区三区| 少妇无码太爽了不卡视频在线看| 国产亚洲亚洲精品777|