張圓圓,劉 琪,王 穎
1.中國電子科技集團公司 電子科學研究院,北京 100041
2.北京海淀區(qū)復興路14號 80分隊,北京 100897
近年來,我軍武器裝備更新步伐不斷加快,對軍工裝備研制需求不斷增長。軍工科研項目是普遍按照產品型號及系列進行研發(fā)的大型復雜系統(tǒng)工程[1],具有安全可靠性高、投資規(guī)模巨大、建設周期長等特點[2]。軟件研發(fā)是軍工項目研制的一部分,隨著計算機技術越來越廣泛地應用于武器裝備,軍用軟件在規(guī)模和功能重要性上均呈急劇上升趨勢,軟件研發(fā)已成為軍工型號項目研制的關鍵[3]?!败浖顒邮强煽?、可度量和可改進的過程”(Watts Humphrey),為了提高軟件質量、控制進度,軍用軟件開發(fā)組織必須在項目過程中持續(xù)度量,持續(xù)跟蹤,持續(xù)改進,不斷提高軟件項目管理水平。
目前,各武器裝備型號都積累了一大批成熟的軟件產品,型號項目的系列化研制方式,使得軟件產品的重用也越來越普遍[4],對存在復用的型號項目軟件進行有效、準確的軟件規(guī)模/成本估計(Software Measurement),是軟件研制過程中進行任務、資源分配,以及進度安排等項目策劃(Project Plan)活動的重要前提和基礎。軟件復用開發(fā)與傳統(tǒng)的軟件開發(fā)方式不同,導致了新的軟件復用度量方法及度量模型的需求[5],本文根據(jù)軍用型號項目軟件研制特點,分析了軟件開發(fā)過程中的復用行為對成本度量結果的影響,并結合項目實施的實際過程及經驗數(shù)據(jù),對 COCOMO2.0(Constructive Cost Model,建設成本分析模型)進行了改進,形成了適用于軍用型號項目的改進型軟件復用進度/成本估計模型。
隨著現(xiàn)代軟件工程技術越來越向集成化、構件化方向發(fā)展,相應地,能夠在不同層次、不同程度上,以不同方式重復使用軟件各個要素及成分的軟件復用技術也得到了越來越普遍的運用。可復用軟(構)件具有測試充分、接口清晰、可移植性好、質量穩(wěn)定等特點,合理的復用能夠有效縮短軟件開發(fā)周期、減少軟件代碼錯誤率,從而有效地減少項目開發(fā)的成本[6]。
根據(jù)復用粒度大小和抽象層次的不同[7],可將軟件復用分為小粒度復用、中粒度復用及大粒度復用三類;軟件復用活動可分為生產活動和消費活動[8-9],生產活動是可復用(軟)構件的研發(fā)過程(Development for Reuse),如 COTS(Commercial Off-The-Shelf components,成品軟件)的研發(fā);消費活動是基于可復用軟件(構件)來構造、集成和組裝應用系統(tǒng)的過程(Development with Reuse),即對可復用對象進行選擇、裁剪及使用的消費過程。顯然,軟件復用生產活動趨向于增加項目成本,消費行為趨向于減少項目成本。
將對構件的可復用性進行的度量稱為軟件可復用性度量(reusability metrics),描述了軟(構)件被專門設計、開發(fā)和支持,以便在其他應用程序中加以利用的程度;將開發(fā)過程對軟構件消費的成本度量稱為復用度量(reuse metrics)。
軍用型號項目研制周期較長,多按產品型號進行系列化研制[4],各型產品多積累了豐富的領域知識、架構設計、測試用例、需求設計文檔、軟件源代碼等各粒度、各層次的可復用成分,在軍用型號軟件項目研制過程中,應在繼承、復用型號積累的各類可復用因素的同時,在軟件架構、接口設計等各個環(huán)節(jié)注重產品的可復用性,使軟件產品易于被同型號產品所沿用,即型號項目軟件研發(fā)過程同時包含了復用軟件的生產和消費。因此,不同于一般軟件項目,軍用型號項目軟件復用成本度量模型應同時包含對軟件可復用性及軟件復用的成本度量。
COCOMO模型對軟件可復用性的度量通過系統(tǒng)通用特性統(tǒng)計項中的“可重用性”及成本影響力因子“可復用性開發(fā)”得到了體現(xiàn),本文主要對模型中軟件復用度量(reuse metrics)方法進行了改進。
根據(jù)是否采用算法模型(Algorithmic Model),可以將軟件成本度量方法分為基于算法模型的方法、非基于算法模型的方法以及組合方法[10]。其中,基于算法模型的成本估算方法通過線性模型、乘法模型、分析模型等規(guī)則、公式的建立,將軟件成本估算為一系列主要成本驅動因子變量的函數(shù)[11]。COCOMO模型是基于算法模型的成本度量方法的典型代表,該方法選取項目中具有代表性的特征,從產品(Product)、平臺(Platform)、人員(Personnel)和項目(Project)等 4個方面使用17個成本影響力乘數(shù)EM(Effort-Multiplier)來綜合衡量環(huán)境、人員等因素對項目開發(fā)成本/進度的影響。
每類 EM 乘數(shù)都分為“Very Low,Low,Nominal,High,Very High,Extra High”等級別,每個級別對應通常在0.5到1.5之間的具體參數(shù)值,而每類乘數(shù)的Nominal級別取值一定為1,代表該類乘數(shù)對項目成本沒有影響,取值小于1,表示項目中該類因素能減少項目成本,反之則會增加項目成本。EM乘數(shù)直接與軟件規(guī)模估計結果相乘,每一項影響力乘數(shù)/因子都會對軟件規(guī)模估計結果的整體進行調整。
成本度量模型需要軟件規(guī)模度量結果作為輸入[11],根據(jù)軍用型號項目軟件的特點,本文使用IFPUG功能點法進行規(guī)模估計、COCOMO 2.0成本度量模型進行成本/進度度量,在此基礎上,從以下幾個方面對上述模型進行了改進,形成了軍用型號項目軟件復用成本度量模型:
(1)基于復用度量的功能點規(guī)模估計方法
在根據(jù)需求進行功能點分析及識別的同時,根據(jù)復用粒度不同,對復用單元逐一進行復用度分析,分析精度可精確到類一級,具體闡述及數(shù)學模型見3.3節(jié)。
(2)復用軟件(構件)DI表
在 GSC(General System Characteristic,系統(tǒng)通用特性)列表中增加了復用軟(構)件DI項,并定義了量化評價表,以量化評估軟件復用對系統(tǒng)整體規(guī)模的影響。
(3)復用乘數(shù)
在軟件成本估計階段,增加了反映系統(tǒng)復用消費情況的乘數(shù)“REME”(Reuse Metric,復用度量)。REME量化評估表見4.2節(jié)表4。
功能點規(guī)模估計法(Function Point Analysis,F(xiàn)PA)是基于軟件的功能性需求,通過統(tǒng)計各類需求功能點的數(shù)量及復雜度,以得到軟件規(guī)模估計值的方法[12-13]。功能點估計法是目前普遍使用的主流軟件規(guī)模估計方法,能夠在項目早期根據(jù)用戶需求對軟件功能數(shù)量進行測量,而無需借助于軟件設計細節(jié)及具體編碼?,F(xiàn)以功能點估計法中的IFPUG法為例,介紹功能點估計的基本工作過程。
IFPUG法將應用系統(tǒng)功能性需求分為兩類:數(shù)據(jù)功能性需求和事務功能性需求。數(shù)據(jù)功能性需求滿足用戶的內、外部數(shù)據(jù)需求,分為內部邏輯文件(Internal Logical Files,ILF)及外部接口文件(External Interface Files,EIF),其中,ILF是指一組存在內在邏輯關聯(lián)、由本應用內部產生及維護的數(shù)據(jù)/控制信息,EIF是在本應用中被引用的在應用邊界之外產生及維護的數(shù)據(jù)/控制信息;事物(交易)功能性需求是用戶提出的用來對數(shù)據(jù)進行處理的需求,包括外部輸入(External Inputs,EI)、外部輸出(External Outputs,EO)以及外部查詢(External Inquiries,EQ),其中,EI接收來自應用邊界之外的數(shù)據(jù)/控制信息,用以維護內部邏輯文件或改變系統(tǒng)行為,EO向應用系統(tǒng)之外發(fā)送經處理的數(shù)據(jù)/控制信息,而EQ則向用戶展示經提取處理的數(shù)據(jù)/控制信息,不會引起對ILF的維護或系統(tǒng)行為的改變。
通過識別及歸類,得到用戶需求中以上五類功能點的數(shù)量及類別。對于每個功能點,需要根據(jù)其處理的事務或數(shù)據(jù)的復雜程度來確定該功能點的復雜度權值,復雜度越高,賦予功能點的權值也就越高,意味著實現(xiàn)該功能點所需要的工作量也越大。功能點復雜度權值計算方法如表1所示。
表1 各類功能點不同復雜度的權值
表1中,功能點復雜度分為簡單,一般,復雜等類別,主要根據(jù)功能點的復雜度加權因子來計算并確定,如:表2為使用RET及DET來確定EIF類功能點的復雜度分類閾值的示例。
表2 外部接口文件類功能點復雜度
表2中,記錄元素類型(RET)代表用戶可以識別的數(shù)據(jù)元素子集,相當于數(shù)據(jù)庫中的表;數(shù)據(jù)元素類型(DET)代表用戶可以識別的,唯一、不重復的字段,即數(shù)據(jù)表中字段。
逐一確定每個功能點的復雜度,統(tǒng)計每類功能點中各復雜度功能點數(shù)量Nij,并與表1中相對應的復雜度權值Vij相乘,得到系統(tǒng)未調整功能點數(shù)UFP,如式(1)所示:
UFP能夠從數(shù)據(jù)/事務復雜度的角度出發(fā)來衡量系統(tǒng)規(guī)模,但一些諸如復雜安全控制,大量邏輯處理、復雜數(shù)學計算、復雜輸入/輸出、軟件復用度等系統(tǒng)級影響因素,都會在整體上客觀影響項目開發(fā)周期及項目成本估計結果。為此,需要統(tǒng)計各GSC項對系統(tǒng)規(guī)模的影響,并使用一個從1(不重要)到5(絕對重要)的評分標準來量化評估通用系統(tǒng)特性對系統(tǒng)規(guī)模的影響程度。將各個GSC項取值相加,得到系統(tǒng)TDI(Total Degree of Influence),如式(2)所示。其中,i代表第i項GSC對系統(tǒng)的影響程度。
GSC項的選擇、取值、對項目的影響程度及所占比重均可以根據(jù)當前軟件行業(yè)的技術發(fā)展情況及所處行業(yè)的特點進行裁剪及定制[13],使其成為軟件開發(fā)組織的過程資產。對于軍用型號項目軟件,由于相同型號所使用的硬件平臺及軟件開發(fā)環(huán)境相對固定,且基于保密等原因一般不以網上下載升級包的形式進行軟件在線升級,因此刪除了“在線升級”GSC評估項,并根據(jù)型號項目開發(fā)過程中普遍存在的對同系列以往型號項目多個層次、各種粒度的復用、繼承的特點,對復用粒度大小,復用度百分比等復用因素進行量化、分級,開發(fā)了復用軟(構)件DI表,如表3所示。
表3 復用軟(構)件DI表
將式(2)中得到的通用評估特性TDI帶入公式(3)進行計算,得到系統(tǒng)調整(修正)因子VAF:
式(3)決定了系統(tǒng)影響度系數(shù)TDI在修正因子VAF中所占比重,即決定了項目的系統(tǒng)特性對軟件成本及進度的影響程度。由公式可推導出,由于TDI的取值范圍是[0,70],乘以權值后的取值范圍是 [0,0.7],因此VAF的取值范圍為[0.65,1.35]。也就是說,GSC項對項目的整體調整范圍是±35%。
最后,將通過式(3)得到的VAF與通過式(1)得到的UFP相乘,即得到了最終的軟件功能點度量值FPC,如式(4)所示:
在COCOMO成本度量模型中,使用功能點法進行規(guī)模度量時,如果分析人員通過分析,估計有百分之r的構件可重用,則可以使用下式對軟件復用規(guī)模進行估計[11]:
上式對軟件的整體重用比例進行了估計,具有一定的主觀性,缺乏估計的客觀依據(jù),往往不夠精確,從而影響了估計的準確性。軍用軟件開發(fā)過程中可能出現(xiàn)各種粒度的復用,以面向對象軟件為例,存在對象/類、模塊/操作集合、系統(tǒng)等不同粒度軟件單元的復用[14]。在使用功能點法進行規(guī)模估算的過程中,用戶需求被細分并識別為各類功能點,而功能點由具體的函數(shù)/類等小粒度軟件單元來實現(xiàn),這樣,通過對功能點的識別及復用度估計,可實現(xiàn)對函數(shù)等小粒度軟件單元的復用度量[15]。進一步,可以按照粒度從小到大的順序,自底層到頂層逐步計算系統(tǒng)功能點數(shù),并估計各粒度復用對象的復用度,直至整個系統(tǒng)。根據(jù)復用對象的不同,可使用以下三個準則進行分析及估算:
(1)對函數(shù)/方法(Function)、類(Class)等小粒度復用,在進行類的規(guī)模度量的同時,估計其在新系統(tǒng)中的復用度RPC;
其中,UFPi表示對某個復用類i的功能點度量,RPCi表示該類的復用度估計值。
(2)對模塊(Module)為粒度的復用,估計模塊整體復用度RPM,同時估計該復用模塊的TDI;
其中,UFPj表示對某個復用模塊j的功能點數(shù)度量結果,RPMj表示對該模塊的整體復用度估計值,TDIj表示對該模塊的GSC統(tǒng)計結果。
(3)對分系統(tǒng)(System)級大粒度復用,則需在估計分系統(tǒng)復用度RPS、計算分系統(tǒng)TDI的同時,以該復用分系統(tǒng)為單位統(tǒng)計其成本規(guī)模因子EM。
分系統(tǒng)級復用度量=EMk×TDIk×(1-RPSk)×UFPk其中,UFPk表示對某個分系統(tǒng)級復用模塊k的功能點數(shù)度量結果,RPSk表示對分系統(tǒng)的整體復用度估計值,TDIk表示對該分系統(tǒng)的GSC統(tǒng)計結果,EMk表示對分系統(tǒng)的成本估計乘數(shù)。
使用準則(1),(2),(3),在軟件功能點度量過程中對各個粒度的軟件復用對象進行復用規(guī)模估算,即得到了最終的軟件復用后規(guī)模度量結果。
通過第3章得到以功能點為單位的軟件復用規(guī)模度量值FPC,進一步,需要對系統(tǒng)的成本因子進行度量,以得到最終的工作量/成本及進度估計。
其中,A為常量,當軟件規(guī)模以功能點為單位時,A的取值為0.033,指數(shù)E由下式得出:
式(6)中,B為線性縮放比例常量,取值為0.91;W代表開發(fā)團隊的5項規(guī)模效應比例因子(Scaling Factor),用以衡量軟件開發(fā)組織對大規(guī)模軟件的研發(fā)能力,分別為:PREC(先例性,有開發(fā)類似產品的經驗),F(xiàn)LEX(開發(fā)靈活性),RESL(能夠處理和化解項目風險的能力),TEAM(團隊凝聚力),PMAT(組織過程成熟度)。
通過式(5)、(6)可知,當指數(shù)E>1時,軟件組織的收益率會隨著開發(fā)規(guī)模的增大而下降,即具有規(guī)模不經濟性,反之則具有規(guī)模經濟性。
經過計算,即得到估計了規(guī)模不經濟性后的標稱(nominal)工作量PMNM。
實際估計過程中,根據(jù)經驗,去掉了與軟件復用情況密切相關的RELY及DOCU乘數(shù),增加了反映系統(tǒng)復用情況的乘數(shù)“REME”(Reuse Metric,復用度量),并定義了其量化評估取值表,如表4所示。
表4 REME量化評估表
將上一節(jié)得到的標稱工作量PMNS與各項成本驅動因子量化評估結果相乘,得到校正后(adjust)的最終工作量估計PMAD(人×月):
進一步,使用下式得到軟件開發(fā)周期的估計值TDEV(月):
本章使用改進的系統(tǒng)復用成本度量模型對某軍用大型軟件地面規(guī)劃分系統(tǒng)進行基于各粒度復用的成本度量。該分系統(tǒng)具有A、B、C、D、E五個模塊,分系統(tǒng)繼承、復用了該型號軟件產品的領域知識、算法,軟件架構等。其中,模塊B是對以往型號的整體改造和移植,重用度達到90%;模塊C、D集成了一個COTS軟件系統(tǒng),并使用COTS提供的二次開發(fā)接口進行了顯示功能及連接代碼的開發(fā),新開發(fā)部分的重用度為60%;模塊A、E為新研,但重用了部分以往型號的軟件源代碼、庫函數(shù)。
功能點估計及計算結果如下:
為解決上述技術難點,分別建立永磁直驅柔性構架有限元瞬態(tài)響應分析模型及整車動力學模型,并提出架懸直驅結構與驅動軸間動態(tài)間隙的干涉評判指標,以此作為間隙大小設定的依據(jù)。
(1)對模塊A、B、C、D、E分別根據(jù)各模塊的整體特性進行TDI統(tǒng)計,將結果帶入式(3),得到模塊調整(修正)因子VAF,具體統(tǒng)計結果如表5所示。
(2)對5個模塊(A,B,C,D,E)進行功能點規(guī)模估計,得到各模塊的功能點估計結果(269,930,233,90,299)。
(3)對5個模塊分別按各復用對象的復用粒度進行復用規(guī)模分析。
模塊A中,部分重用了(30%)該型產品上一版軟件的一個功能需求,共計由2個ILF(簡單,復雜度權值7),1個EI(簡單,復雜度權值3),2個EQ(簡單,復雜度權值3)實現(xiàn)該功能需求[15],代入式(1)進行計算可得該重用需求功能點的UFP計算結果為23,運用3.3節(jié)準則(1)進行計算后可得該需求功能的復用規(guī)模度量結果為17;模塊B為配置項級重用,重用后工作量為原來的10%;模塊C、D在COTS提供的接口基礎上進行功能開發(fā),重用后工作量為原來的40%;模塊E中,部分重用了(80%)一個需求功能點,共計由2個ILF(簡單,復雜度權值7),2個EI(簡單,復雜度權值3),3個EO(簡單,復雜度權值4),3個EQ(簡單,復雜度權值3)實現(xiàn)該功能,代入式(1)進行計算可得該重用需求功能點的UFP計算結果為41,同樣,運用3.3節(jié)準則(1)進行計算后可得該需求功能的復用規(guī)模度量結果為8;重用部分的UFP為原來的20%。復用度量后各模塊規(guī)模估計結果為(263,93,93,36,266)。
表5 改進GSC項列表及各模塊TDI
(4)將得到的模塊VAF向量與各模塊復用UFP向量進行點乘,得到整個分系統(tǒng)功能點估計結果,如表6所示。
表6 功能點計算結果
軟件成本/進度估計計算結果如下:
(1)規(guī)模經濟效益指數(shù)E
對5項規(guī)模效應比例因子所涉及的5個方面進行衡量,以量化評估開發(fā)組織的研發(fā)能力隨著軟件規(guī)模的增大而變化的趨勢,經過對組織的五項比例因子進行考察,最終規(guī)模經濟性比例因子取值見表7中黑體所示,將規(guī)模因子帶入公式(6)進行計算,得到規(guī)模指數(shù)E。
表7 規(guī)模經濟比例因子取值表
(2)經過對分系統(tǒng)的整體復用程度進行衡量及評估,該系統(tǒng)的復用度量乘數(shù)REME取值定為0.95(high)。
(3)逐一確定各成本影響力乘數(shù)的取值,具體取值結果見表8所示。
為了檢驗改進的軟件復用度量模型的有效性,將改進的度量模型與標準的COCOMO2.0軟件估計方法的各步驟中間計算結果進行了比較,并將使用兩種方法得到的工作量、工期、成本以及平均生產率等最終規(guī)模度量結果與該項目實際數(shù)據(jù)進行了對比。計算過程中,取待估計分系統(tǒng)的整體TDI為31,分系統(tǒng)整體復用度估計值r為0.6。兩種方法計算結果對比值如表9所示。
本單位通過積累前期歷次執(zhí)行型號項目軟件研發(fā)工作的經驗數(shù)據(jù),得到本組織的型號產品軟件開發(fā)項目平均生產率P為8 h/功能點,以每周5個工作日,每天工作8 h來計算,則P為20功能點/人月;在工期估計方面,該分系統(tǒng)開發(fā)項目于2013年3月11日開始進入需求分析階段,至2013年12月22日完成驗收交付,歷時41周。可見,使用改進的成本估計方法的確提高了軟件估計的精度。
表8 成本影響力乘數(shù)EM取值對比表
表9 成本估計計算結果對比表
準確的軟件成本度量是項目順利進行的基礎。軍用型號項目軟件復用度量模型使用功能點法詳細評估每個復用單元的復用后實際工作量,并對COCOMO2.0軟件成本分析模型進行了改進,增加了軟件復用量化評估成本驅動因子及系統(tǒng)通用特性統(tǒng)計項,從系統(tǒng)級對度量結果進行了修正。與傳統(tǒng)度量模型相比,復用度量模型具有更高的準確性,適應了軍用型號軟件項目的開發(fā)特點,為項目的進度安排及成本控制等方面提供了很好的參考。
[1]張杰,閆振國,李原.航空型號生產項目集成進度控制方法[J].計算機工程與應用,2008,44(26):230-232.
[2]郭薇,李想,曾斌.面向軍用軟件的COCOMOII改進模型研究[J].船舶電子工程,2014,34(1).
[3]Lee T,Gu T,Baik J.MND-SCEMP:an empirical study of a software cost estimation modeling process in the defense domain[J].Empirical Software Engineering,2014,19(1):213-240.
[4]吳清才,鄭琪,王首一.軍用軟件的工程研制與[M].北京:國防工業(yè)出版社,2013.
[5]李英梅.基于構件的軟件復用度量的研究[D].哈爾濱:哈爾濱工程大學,2007.
[6]Graham I.Object-orientedmethods[M].Wokingham,UK:Addison-Wesley,1991.
[7]Agresti W W.Software reuse:developers’experiences and perceptions[J].Journal of Software Engineering and Applications,2011,4(1):48-58.
[8]Karlsson E A.Software reuse:a holistic approach[M].Chichester:John Wiley and Sons Ltd.,1995.
[9]Vasantha R,Sudhakaran J K.A mixed method approach for efficient component retrieval from a component repository[J].Journalof Software Engineering and Applications,2011,4(7).
[10]李明樹,何梅,楊達,等.軟件成本估算方法及應用[J].軟件學報,2007,18(4):775-795.
[11]Boehm B W,Abts C,Brown A W,et al.Software cost estimationwithCOCOMO II[M].New York:Prentice Hall,2000.
[12]IFPUG(International Function Point Users Group).Function point counting practices manual-release4.2[R].2004.
[13]Chrobot B C.The economic importance of business softwaresystemsfunctionalsizemeasurement[J].Software Engineering,2011,1(1).
[14]毛明志,陳立.多粒度的面向對象軟件估算模型的研究及應用[J].計算機科學,2009(2).
[15]文靜,顧勛梅.一種度量軟件需求的功能點方法[J].微電子學與計算機,2011(10).