一種軟件復雜度分析系統及方法
【專利摘要】本發明公開了一種軟件復雜度分析系統,該系統包括:軟件數據收集模塊,其用于收集并輸出描述待分析軟件中軟件包和所述軟件包之間依賴關系的軟件數據;標準化模塊,其用于接收待分析軟件數據,并將待分析軟件數據標準化得到標準軟件數據;軟件復雜度分析模塊,其針對待分析軟件中的每一個軟件包,基于該軟件包與待分析軟件中其他軟件包之間的依賴關系計算每一個軟件包的復雜度,并根據每一軟件包的復雜度基于預設模型計算待分析軟件的復雜度。本發明結構簡單、方便可用,能夠準確地分析出軟件的復雜度,從而提高軟件的質量和降低維護軟件的代價。
【專利說明】一種軟件復雜度分析系統及方法
【技術領域】
[0001]本發明涉及軟件分析【技術領域】,具體地說,涉及一種軟件復雜度分析系統及方法。【背景技術】
[0002]由于免費開放源代碼等優點,開源軟件得到廣泛應用。開源軟件不同于商業軟件,它是以開源的方式由分布在各地的軟件開發小組協同開發。同時,基于對開源項目代碼的獲取與重用,會有非常多的組織和個人加入其中,這就使得開源軟件的種類和數量急劇增力口。它們在功能上相互依賴,基于各自特定的開發語言和組件模型,這些直接導致了開源軟件的高復雜度。而軟件的復雜度直接影響軟件的質量,尤其是穩定性,進而影響軟件維護的代價和精力。
[0003]所以研究開源軟件的復雜度對于研究開源軟件的風險性和穩定性是十分必要的,目前尚沒有對開源軟件復雜度進行量化分析的方便可以用的系統,這使得對于軟件的管理和風險評估方面存在不足,影響了開源軟件的發展。
[0004]根據上述情況,亟需一種用于分析軟件復雜度的方便可用的系統。
【發明內容】
[0005]為解決上述問題,本發明提供了一種軟件復雜度分析系統,該系統包括:
[0006]軟件數據收集模塊,其用于收集并輸出包括軟件包數據和各個軟件包之間依賴關系數據的待分析軟件數據;
[0007]標準化模塊,其用于接收所述待分析軟件數據,并將所述待分析軟件數據標準化得到標準軟件數據;
[0008]軟件復雜度分析模塊,其用于接收所述標準軟件數據,基于其中軟件包數據和各個軟件包之間依賴關系數據計算每一個軟件包的復雜度,并基于所述每一軟件包的復雜度通過預設模型計算所述待分析軟件的復雜度。
[0009]根據本發明的一個實施例,所述預設模型包括以下所列項中的任一項:
[0010]平均值模型,計算所述各個軟件包的復雜度的平均值,作為所述待分析軟件的復雜度;
[0011]加權模型,對所述各個軟件包的復雜度進行加權求和,將所得結果作為所述待分析軟件的復雜度。
[0012]根據本發明的一個實施例,所述軟件包之間的依賴關系包括所述軟件包之間的環狀依賴關系。
[0013]根據本發明的一個實施例,所述軟件復雜度分析模塊還包括環中出現次數最多邊查找單元,其用于根據所述環狀依賴關系查找所有環中出現次數最多的邊。
[0014]根據本發明的一個實施例,所述系統還包括存儲器,其連接在所述標準化模塊和軟件復雜度分析模塊之間,用于接收和存儲所述標準化模塊和軟件復雜度分析模塊輸出的數據。[0015]根據本發明的一個實施例,所述系統還包括圖形繪制單元,其用于訪問存儲器以獲取待分析軟件的標準軟件數據,所述圖形繪制單元包括以下所列項中的任一項或幾項:
[0016]復雜度圖形繪制單元、軟件包依賴關系有向圖繪制單元、軟件包環狀依賴關系環狀圖繪制單元。
[0017]根據本發明的一個實施例,所述系統還包括:
[0018]軟件版本數據獲取模塊,其用于獲取待分析軟件的各個版本的版本數據;
[0019]軟件進化趨勢分析模塊,其用于接收所述待分析軟件的各個版本的版本數據,并對所述軟件版本數據進行分析,得到待分析軟件的進化趨勢數據。
[0020]根據本發明的一個實施例,所述系統還包括軟件進化趨勢圖形繪制單元,其用于根據所述進化趨勢數據繪制相應圖形,所述軟件進化趨勢圖形繪制單元包括以下所列項中的任一項或幾項:
[0021]軟件文件數進化曲線繪制單元、軟件源代碼行數進化曲線繪制單元、軟件文件數與源代碼行數關系曲線繪制單元、軟件圈復雜度進化曲線繪制單元。
[0022]本發明還提供了一種軟件復雜度分析方法,所述方法包括以下步驟:
[0023]待分析軟件數據收集步驟,收集并輸出包括軟件包數據和各個軟件包之間依賴關系數據的待分析軟件數據;
[0024]數據標準化步驟,將所述待分析軟件數據按照特定格式進行標準化,得到標準軟件數據;
[0025]軟件復雜度分析步驟,基于接收到的所述標準軟件數據中的軟件包數據和各個軟件包之間依賴關系數據計算每一個軟件包的復雜度,進而基于所述每一個軟件包的復雜度通過預設模型計算所述待分析軟件的復雜度。
[0026]根據本發明的一個實施例,所述方法還包括以下步驟:
[0027]軟件版本數據獲取步驟,針對待分析的軟件獲取所述待分析軟件的版本數據;
[0028]軟件進化趨勢分析步驟,對所述待分析軟件的版本數據進行分析,得到待分析軟件的進化趨勢數據。
[0029]本發明提供的系統結構簡單、方便可用,能夠準確地分析出軟件的復雜度,從而為各個軟件包提供風險評估數據,為有效降低大型軟件的風險度提供數據依據,有利用提高大型軟件的質量(例如穩定性),進而有效降低軟件維護的代價。
[0030]本發明的其它特征和優點將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實施本發明而了解。本發明的目的和其他優點可通過在說明書、權利要求書以及附圖中所特別指出的結構來實現和獲得。
【專利附圖】
【附圖說明】
[0031]為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要的附圖做簡單的介紹:
[0032]圖1是根據本發明一個實施例的軟件復雜度分析系統結構圖;
[0033]圖2是根據本發明一個實施例的分析軟件復雜度的流程圖;
[0034]圖3是根據本發明一個實施例的基于SOA思想的軟件復雜度分析系統結構圖;
[0035]圖4時根據本發明一個實施例的基于SOA思想的軟件復雜度分析系統進行軟件復雜度分析的流程圖;
[0036]圖5a至圖5d分別是根據本發明一個實施例的軟件包的環狀圖;
[0037]圖6a是根據本發明一個實施例的軟件包之間依賴關系的有向圖;
[0038]圖6b是根據本發明一個實施例的去除出現次數最多的邊后軟件包之間依賴關系的有向圖;
[0039]圖7是根據本發明一個實施例的具有軟件進化趨勢分析功能的軟件復雜度分析系統的結構圖;
[0040]圖8是根據本發明一個實施例的軟件復雜度分析系統進行軟件進化趨勢分析的流程圖。
【具體實施方式】
[0041]以下將結合附圖及實施例來詳細說明本發明的實施方式,借此對本發明如何應用技術手段來解決技術問題,并達成技術效果的實現過程能充分理解并據以實施。需要說明的是,只要不構成沖突,本發明中的各個實施例以及各實施例中的各個特征可以相互結合,所形成的技術方案均在本發明的保護范圍之內。
[0042]如圖1所示,本實施例基于隨機圖論提供了一種軟件復雜度分析系統,其包括:軟件數據收集模塊101、標準化模塊102、軟件復雜度分析模塊103。其中標準化模塊102連接在軟件數據收集模塊101和軟件復雜度分析模塊103之間。
[0043]圖2示出了利用上述軟件復雜度分析系統進行軟件復雜度分析的流程圖。首先,在步驟S201中軟件數據收集模塊101收集并輸出包括待分析軟件中軟件包數據和各個軟件包之間依賴關系數據的待分析軟件數據。其中軟件包數據包括軟件包的名稱和軟件包的標示值,但本發明不限于此。
[0044]隨后,在步驟S202中標準化模塊102接收軟件數據收集模塊101發出的待分析軟件數據,并將待分析軟件數據按照特定的格式進行標準化,得到標準軟件數據。本實施例
中,標準化模塊102將待分析軟件數據標準化為表格形式。
[0045]最后在步驟S203中,軟件復雜度分析模塊103根據步驟S202中得到的標準軟件數據中的軟件包之間的依賴關系對待分析軟件的復雜度進行分析,得到待分析軟件的復雜
度結果。
[0046]在步驟S203中,軟件復雜度分析模塊103針對待分析軟件中的每一個軟件包,基于該軟件包與待分析軟件中其他軟件包之間的依賴關系計算每一個軟件包的復雜度,并根據每一軟件包的復雜度基于預設模型計算待分析軟件的復雜度。
[0047]其中,上述預設模型可以為平均值模型,即將各個軟件包的復雜度的平均值作為待分析軟件的復雜度。上述預設模型還可以為加權模型,即將各個軟件包的復雜度通過預定的加權系數加權求和,并將得到的結果作為待分析軟件的復雜度。但本發明不限于此,在根據本發明的其他實施例中,軟件復雜度分析模塊103還可以利用其他合理模型計算得到待分析軟件的復雜度。
[0048]該系統結構簡單、方便可用,能夠準確地分析出軟件的復雜度,從而為各個軟件包提供風險評估數據,并為有效降低大型軟件的風險度提供數據依據。
[0049]實施例一:[0050]如圖3所示,本實施例中,軟件復雜度分析系統采用面向服務的體系結構(Service-Oriented Architecture,簡稱為SOA)的思想,將系統的軟件數據收集模塊101置于客戶端30中,將標準化模塊102和軟件復雜度分析模塊102置于web服務器31中。同時為了滿足快速處理大量數據的要求,本實施例中,軟件復雜度分析系統還包括存儲器304,其置于數據庫服務器32中。
[0051]為了更好地為用戶提供軟件復雜度分析的結果,如圖3所述,本實施例中,軟件復雜度分析系統包括:軟件數據收集模塊101、標準化模塊102、存儲器304、軟件復雜度分析模塊103、圖形繪制模塊305和分析結果顯示模塊306。
[0052]圖4示出了本實施例中軟件復雜度分析系統進行軟件復雜度分析的流程圖。如圖4所示,本實施例中,在步驟S402中標準化模塊102接收軟件數據收集模塊101在步驟S401中收集到的待分析軟件數據,將該數據按照一定的形式(例如表格)進行標準化得到標準軟件數據,隨后在步驟S403中將得到的標準軟件數據存儲到與標準化模塊102連接的存儲器204 中。
[0053]表1
[0054]
【權利要求】
1.一種軟件復雜度分析系統,其特征在于,包括: 軟件數據收集模塊,其用于收集并輸出包括軟件包數據和各個軟件包之間依賴關系數據的待分析軟件數據; 標準化模塊,其用于接收所述待分析軟件數據,并將所述待分析軟件數據標準化得到標準軟件數據; 軟件復雜度分析模塊,其用于接收所述標準軟件數據,基于其中軟件包數據和各個軟件包之間依賴關系數據計算每一個軟件包的復雜度,并基于所述每一軟件包的復雜度通過預設模型計算所述待分析軟件的復雜度。
2.如權利要求1所述的系統,其特征在于,所述預設模型包括以下所列項中的任一項: 平均值模型,計算所述各個軟件包的復雜度的平均值,作為所述待分析軟件的復雜度; 加權模型,對所述各個軟件包的復雜度進行加權求和,將所得結果作為所述待分析軟件的復雜度。
3.如權利要求1所述的系統,其特征在于,所述軟件包之間的依賴關系包括所述軟件包之間的環狀依賴關系。
4.如權利要求3所述的系統,其特征在于,所述軟件復雜度分析模塊還包括環中出現次數最多邊查找單元,其用于根據所述環狀依賴關系查找所有環中出現次數最多的邊。
5.如權利要求1至3中任一項所述的系統,其特征在于,所述系統還包括存儲器,其連接在所述標準化模塊和軟件復雜度分析模塊之間,用于接收和存儲所述標準化模塊和軟件復雜度分析模塊輸出的數據。
6.如權利要求5所述的系統,其特征在于,所述系統還包括圖形繪制單元,其用于訪問存儲器以獲取待分析軟件的標準軟件數據,所述圖形繪制單元包括以下所列項中的任一項或幾項: 復雜度圖形繪制單元、軟件包依賴關系有向圖繪制單元、軟件包環狀依賴關系環狀圖繪制單元。
7.如權利要求1至3中任一項所述的系統,其特征在于,所述系統還包括: 軟件版本數據獲取模塊,其用于獲取待分析軟件的各個版本的版本數據; 軟件進化趨勢分析模塊,其用于接收所述待分析軟件的各個版本的版本數據,并對所述軟件版本數據進行分析,得到待分析軟件的進化趨勢數據。
8.如權利要求7所述的系統,其特征在于,所述系統還包括軟件進化趨勢圖形繪制單元,其用于根據所述進化趨勢數據繪制相應圖形,所述軟件進化趨勢圖形繪制單元包括以下所列項中的任一項或幾項: 軟件文件數進化曲線繪制單元、軟件源代碼行數進化曲線繪制單元、軟件文件數與源代碼行數關系曲線繪制單元、軟件圈復雜度進化曲線繪制單元。
9.一種軟件復雜度分析方法,其特征在于,所述方法包括以下步驟: 待分析軟件數據收集步驟,收集并輸出包括軟件包數據和各個軟件包之間依賴關系數據的待分析軟件數據; 數據標準化步驟,將所述待分析軟件數據按照特定格式進行標準化,得到標準軟件數據;軟件復雜度分析步驟,基于接收到的所述標準軟件數據中的軟件包數據和各個軟件包之間依賴關系數據計算每一個軟件包的復雜度,進而基于所述每一個軟件包的復雜度通過預設模型計算所述待分析軟件的復雜度。
10.如權利要求9所述的方法,其特征在于,所述方法還包括以下步驟: 軟件版本數據獲取步驟,針對待分析的軟件獲取所述待分析軟件的版本數據; 軟件進化趨勢分析步驟,對所 述待分析軟件的版本數據進行分析,得到待分析軟件的進化趨勢數據。
【文檔編號】G06F11/36GK103605607SQ201310630388
【公開日】2014年2月26日 申請日期:2013年12月2日 優先權日:2013年12月2日
【發明者】夏磊 申請人:中標軟件有限公司