基于UML的軟件規(guī)模度量

飛速發(fā)展的計算機技術使得計算機的應用領域迅速擴大,因此,在各具體應用領域內開發(fā)的軟件系統(tǒng)越來越多,規(guī)模不斷地增長, 復雜程度增大。分析、評估現(xiàn)有軟件系統(tǒng)的可維護性、可靠性、可修改性和復雜性來降低后續(xù)類似系統(tǒng)的開發(fā)代價、提高軟件系統(tǒng)的質量提供了依據(jù), 軟件度量是解決該問題的一種有效方法。
通過度量軟件生命周期中各種不同的元素來衡量軟件的規(guī)模,為項目管理者提供項目的各種重要信息,也給此后的評估活動的奠定了基礎。功能點分析是一種通用的規(guī)模度量方法,但是其需要專業(yè)人員的操作,而且復雜度的等級劃分是不連續(xù)的,這與實際的情況有較大的不同,因此,本文對其進行研究。
功能點分析
使用功能點分析度量軟件的規(guī)模是按照功能特征來進行的,通過需求分析獲得的系統(tǒng)功能及描述功能特征的用例圖和時序圖等來計算該系統(tǒng)的功能點即規(guī)模。主要通過外部應用接口和內部應用復雜度以及系統(tǒng)的總體性能特征來完成,由兩個部分組成:即未調整的功能點數(shù)及加權因子。未調整的功能點對外部輸入、外部輸出、外部查詢、內部邏輯文件和外部接口文件進行計數(shù)。在確定了它們的類型后,就要為其指定級別,事務功能類型(EI,EQ和 EO)的復雜度級別取決于被更新或引用的參考元素類型的個數(shù)以及數(shù)據(jù)元素類型的個數(shù);ILF和EIF的級別取決于記錄元素類型RET和數(shù)據(jù)元素類型DET的個數(shù)。各功能的復雜度等級及其權值的規(guī)定參照文獻。
問題分析
功能點分析是一種通用的度量軟件規(guī)模的方法,而且已經(jīng)成為軟件度量的標準,但是它仍然存在以下3個方面的問題,具體表現(xiàn)在:
1) 度量的復雜性
由于采用FPA進行規(guī)模度量的規(guī)則非常復雜,需要專業(yè)的人員進行評估;并且度量的規(guī)則是用簡單的自然語言描述的,因此,度量結果很容易受度量者的主觀影響;
2)復雜度分類存在模糊性
根據(jù)DET, RET和 FTR的復雜程度將5種功能元素歸類為低,中和高,這樣的復雜度劃分容易實現(xiàn),但是存在模糊性。例如:表1中的軟件項目有2個ILF:ILF2和ILF3,他們都有2個RET,但是ILF2有50個DET, ILF3有20個DET。依據(jù)復雜性權重矩陣,它們具有相同的復雜度并且分配相同的權重值10,然而,ILF2比ILF3多了30個DET,應該更復雜。
3)復雜度分類存在不連續(xù)性
兩種不同的復雜度分類的權重值是不連續(xù)的,即使他們僅有1DET的差別。表1中的軟件項目有2個ILF:ILF1和ILF2,他們都有2個RET,但是ILF1有51個DET,ILF2有50個DET。依據(jù)復雜性權重矩陣,ILF1的復雜度為高分配權重值15,ILF2的復雜度為中分配權重值10,然而,ILF1僅比ILF2多了1個DET,權重值卻多5。

表1
為了解決問題1,本文采用UML來輔助評估過程,借助于系統(tǒng)分析中的類圖來簡化度量規(guī)則;采用邊界模糊的的方法來解決問題2和3。
UML是一種通用的分析設計方法,本文用類圖來輔助進行功能規(guī)模的計算,功能點分析是一種廣泛應用的軟件規(guī)模度量方法,但是度量的結果容易受度量工作者的主觀影響,導致不同的人對同一項目的規(guī)模度量可能有很大的產(chǎn)生較大的差距;而且度量過程需要專業(yè)的人員實施,代價較大;為了使規(guī)模度量簡單易行,將需求的分析的結果作為度量的依據(jù),并分析出規(guī)模與分析之間的度量規(guī)則,這樣不僅不會增加太多的工作量,而且度量結果不受主觀因素的影響。,所以,本文以此為基礎進行規(guī)模度量。具體規(guī)則如下:
(1) 計算數(shù)據(jù)類型的功能點數(shù)
計算數(shù)據(jù)類型功能點主要通過實體類來計算,但并不是每一個實體類都算做一個文件。計算實體類為一個文件依據(jù)以下的規(guī)則進行:
1) 若該類與其它類僅存在關聯(lián)關系不存在組成、聚集和繼承關系,則記為一個文件;
2) 若該類與其它類存在組成關系,則表示整體的類計為一個文件,而每一個部分類分別看作為整體類的一個記錄元素;
3) 若該類與其它類存在繼承關系,且父類是抽象類,則父類計為子類的記錄元素;
4)若該類與其它類存在繼承關系,且父類是具體類,則父類計為一個文件,同時計為子類的一個記錄元素。
(2)計算事務類型的功能點數(shù)
事務類型的復雜度由系統(tǒng)時序圖中執(zhí)行者與邊界類和邊界類與數(shù)據(jù)庫文件之間的消息交互來計算。
(3)復雜度劃分的處理
針對復雜度在劃分上是分斷的,不是連續(xù)的,若該結果在同一項目中出現(xiàn),可能導致度量結果的不準確。本文采用一定的方法將不同復雜度的權值的邊界進行模糊化解決該問題。下面以ILF的復雜度計算為例來說明這種方法。ILF的功能復雜度評價矩陣如表2所示,各復雜度等級對應的功能點數(shù)如表3所示。

表2 ILF的功能復雜度評價矩陣

表3 復雜度等級對應的功能點數(shù)
從表中可以看出:影響復雜度等級的因素有RET和DET的數(shù)量,首先說明DET的變化對模糊化權值得影響,因為對于相同的RET,DET的數(shù)量越多說明越復雜,即功能點數(shù)隨著DET的增加而增加,因此,將邊界左右的5個DET進行模糊化,本文采用線性的方法實現(xiàn)模糊化。對RET對復雜度的影響,是用同樣的方式進行,最后將所得的權值進行加權平均得到最終的功能點數(shù)。
根據(jù)該關系可計算出3個ILF文件對應的功能點數(shù)為:ILF1為10.75,ILF2為10.5, ILF3為8.5。
醫(yī)院管理系統(tǒng)的規(guī)模被計算采用本文的方法,在此以內部邏輯文件的功能點計算為例來說明改進的方法與原始方法的區(qū)別,計算結果如表4所示:

表4 內部邏輯文件的功能點
為了解決傳統(tǒng)FPA方法在計算過程中需要專業(yè)人員及工作量大的問題,提出了根據(jù)UML中的類圖、時序圖、用例圖計算功能點的規(guī)則;同時,為了解決功能要素復雜度劃分不連續(xù)的問題,提出了利用邊界模糊化的方法來改進的復雜度權值計算方法。
10.3969/j.issn.1001- 8972.2016.21.023