買新暉
摘要: COSMIC規(guī)模度量的一致性是其滿足用戶需求的首要前提。實際上,度量員對方法的理解程度不同以及軟件需求文檔粒度級別過高等原因都會造成度量結(jié)果的差異。該文通過對COSMIC規(guī)則和原則的研究,結(jié)合實際案例的分析,提出軟件結(jié)構(gòu)、功能過程和感興趣對象三個對度量結(jié)果影響較大的技術(shù)因子,并分別給出了相應(yīng)的控制方法。
關(guān)鍵詞: COSMIC;規(guī)模度量;一致性;控制方法
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2014)02-0322-03
COSMIC方法是國際標(biāo)準(zhǔn)的功能大小度量方法,在規(guī)模度量領(lǐng)域應(yīng)用非常廣泛。這個方法可用于實時軟件、商業(yè)應(yīng)用軟件以及兩者混合型軟件功能[1]。軟件的規(guī)模是軟件估算和項目管理的主要依據(jù)之一,度量結(jié)果的一致是有效度量的前提[2]。但是,在實際度量中,度量結(jié)果往往很難取得一致。結(jié)果的不一致主要表現(xiàn)為:不同度量員度量同一軟件時度量結(jié)果的差異,以及同一度量員在不同時刻度量同一軟件時結(jié)果的差異。
造成以上差異的原因主要有:度量文檔描述有歧義,度量員對方法掌握程度不同等原因。該文通過對COSMIC方法的研究,并結(jié)合實際度量活動,針對度量一致性提出了一些個人觀點。作者從影響度量結(jié)果的因素入手,著重分析了軟件結(jié)構(gòu)、功能過程和感興趣對象三個技術(shù)因子,并分別給出了相應(yīng)的控制方法。最后,就技術(shù)因子的控制做了驗證。
1 COSMIC方法概述
COSMIC方法是國際標(biāo)準(zhǔn)的功能大小度量方法,在規(guī)模度量領(lǐng)域應(yīng)用非常廣泛,可用于實時軟件、商業(yè)應(yīng)用軟件以及兩者混合型軟件功能規(guī)模的度量。COSMIC方法通過對給定軟件的功能用戶需求(簡稱FUR)應(yīng)用一組模型、原則(principles)、規(guī)則(rules)等一系列過程,最終得到一個數(shù)字化的“量值”,表示根據(jù)COSMIC方法得到的軟件塊的功能大小。
1.1 度量的一致性
度量的一致性指的是度量結(jié)果的一致,它不同于度量的準(zhǔn)確性。不同的度量員使用同一度量方法,在度量相同軟件時得到數(shù)據(jù)移動類型和數(shù)目相同才稱為度量結(jié)果的一致。一致的度量結(jié)果,不僅可以衡量軟件規(guī)模度量方法的穩(wěn)定性、合理性,同時還具有檢驗度量員度量水平、檢查控制軟件文檔質(zhì)量等用途[3]。
在實際應(yīng)用過程中,不同的度量員度量同一軟件,甚至是度量員對同一軟件的多次度量,常常都會產(chǎn)生很大差異。在某次多名度量員參與的度量實踐中出現(xiàn)了較多的差異,主要表現(xiàn)為四種差異:一是與實際結(jié)果的差異。二是雖然度量最終結(jié)果與標(biāo)準(zhǔn)結(jié)果較為接近,但其內(nèi)部數(shù)據(jù)與案例存在較大差異。三是不同度量員度量結(jié)果的差異。四是同一個度量員對相同軟件的多次度量,結(jié)果仍然難以保證一致。圖1是度量結(jié)果平均值的統(tǒng)計數(shù)據(jù)。其中,度量結(jié)果可以保持在23.2%的偏差率,但是與度量結(jié)果內(nèi)部數(shù)據(jù)差異竟高達(dá)29.8%。
1.2 一致性因子
經(jīng)過多次度量實踐,并對其結(jié)果統(tǒng)計分析,我們發(fā)現(xiàn),度量不一致現(xiàn)象產(chǎn)生的原因主要有三大類12個。解決好這三大類,就可以解決大部分的不一致問題。以三年來多名度量員多次度量《課程注冊系統(tǒng)》[4]的結(jié)果為例,對不一致原因和發(fā)生次數(shù)進行統(tǒng)計。統(tǒng)計分析表明:軟件的結(jié)構(gòu)、功能過程以及感興趣對象等因素對度量結(jié)果的影響最大。而這幾個方面都屬于技術(shù)層面,在這里我們稱之為技術(shù)因子。
2 技術(shù)因子
2.1 結(jié)構(gòu)因子
結(jié)構(gòu)因子包括軟件的層次和對等構(gòu)件。層次和對等構(gòu)件的劃分在度量活動中起很大的作用[4]。
首先,結(jié)構(gòu)因子是確定度量范圍的需要。在COSMIC方法中,軟件度量的前提是在一個獨立的軟件,或者是某一個軟件的“層”。其次,只有識別出正確的軟件結(jié)構(gòu)才能準(zhǔn)確識別出數(shù)據(jù)移動,因為數(shù)據(jù)移動的邊界存在于軟件之間或者層之間。最后,結(jié)構(gòu)因子利于確定度量邊界和識別功能用戶[6]。根據(jù)功能用戶的定義,處于邊界外的功能性用戶才可能被識別為功能用戶。也就是說,根據(jù)層劃分出了邊界,而功能用戶就在邊界之外。
2.2 功能過程因子
功能過程是由一組唯一的、內(nèi)聚的、可獨立執(zhí)行的數(shù)據(jù)移動組成[1]。每一個功能過程,都反映了功能用戶的一個具體有效的功能。功能過程的識別是度量過程的關(guān)鍵。
值得注意的是不同的粒度級別下,所能體現(xiàn)出的候選功能過程是不同的。同時,功能過程的識別反過來也反映了度量過程中的粒度級別的確定。COSMIC方法中標(biāo)準(zhǔn)的粒度級別是功能過程級別,這一點在識別功能過程時一定要明確。功能過程是軟件對用戶需求的響應(yīng),軟件處理的事務(wù)總是由一個或多個功能過程來完成。此外,功能過程的識別和功能用戶的識別相互依賴,因此,功能過程的識別對度量的最終結(jié)果影響較大。
度量實踐表明,只要功能過程的識別相同,其度量結(jié)果的偏差總是可以接受的。
2.3 感興趣對象因子
感興趣對象是從FUR的角度所識別出來的任何事物,可能是具體的事物,也可能是的概念性對象或概念性對象的一部分,它是軟件要處理的和/或要為之存儲數(shù)據(jù)。感興趣對象的識別對于度量結(jié)果影響非常大。COSMIC方法中的“數(shù)據(jù)移動”移動的是單個數(shù)據(jù)組,因此我們需要對數(shù)據(jù)組進行分析。其中,最關(guān)鍵的是要確定這些屬性是否是關(guān)于一個“感興趣對象”的,因為是“感興趣對象”決定了COSMIC方法所定義的“數(shù)據(jù)組”的數(shù)量。例如,如果輸入到一個功能過程中的數(shù)據(jù)屬性是三個獨立的感興趣對象的屬性,那么,我們需要識別出三個獨立的Entry數(shù)據(jù)移動。
3 技術(shù)因子的控制
3.1 結(jié)構(gòu)因子的控制
控制結(jié)構(gòu)因子指的是軟件結(jié)構(gòu)正確的劃分,包括正確識別“層”和對等構(gòu)件[7]。正確的軟件結(jié)構(gòu)劃分要結(jié)合其自身特點,還可以參考軟件功能需求目錄級別,或者借助軟件的WBS來劃分結(jié)構(gòu)[6]。對于面向?qū)ο蟮能浖?,參考自身的?gòu)件圖也是一種不錯的方法。
1) 劃分結(jié)構(gòu)的特點。在實踐中,總結(jié)出了結(jié)構(gòu)劃分的一些特點:一是結(jié)構(gòu)劃分必須依據(jù)軟件的體系結(jié)構(gòu)和功能。二是結(jié)構(gòu)劃分應(yīng)首先澄清對層次和對等構(gòu)件的認(rèn)識。三是結(jié)構(gòu)劃分應(yīng)該根據(jù)功能用戶的識別進行驗證。
2)我們可以參考其構(gòu)件圖來劃分面向?qū)ο蟮能浖7]。對于面向?qū)ο蟮能浖?,?gòu)件圖的文字說明文檔包含:構(gòu)件圖綜述、構(gòu)件圖中的構(gòu)件描述、構(gòu)件圖中的關(guān)系描述和其他與構(gòu)件圖有關(guān)的說明。從總體上,構(gòu)件圖描述構(gòu)件間的依賴關(guān)系、設(shè)置該構(gòu)件圖的目的等。
3.2 功能過程因子的控制
功能過程總是被觸發(fā)事件觸發(fā),它和觸發(fā)事件之間存在一定的關(guān)系。梳理清它們之間的關(guān)系可以幫助識別功能用戶。另外,使用流程圖也可用來識別功能過程。
1)觸發(fā)事件與功能過程不是一一對應(yīng)關(guān)系。一個特定的事件可能觸發(fā)一個或多個并發(fā)執(zhí)行的功能過程,一個特定的功能過程可能由多個事件觸發(fā)。在一些FUR中,當(dāng)一個功能過程可以被不同的觸發(fā)事件觸發(fā)時,功能的描述可能出現(xiàn)在不同的地方,度量員一定要注意區(qū)分。
2)借助流程圖識別功能過程。功能過程是軟件響應(yīng)用戶需求的過程,同樣流程圖描述的也是軟件處理事務(wù)響應(yīng)用戶需求的過程。從這個意義上來說,借助流程圖有助于識別功能過程,甚至可以分析出功能過程的要素。例如可以從外部項識別出功能用戶,從數(shù)據(jù)流向識別數(shù)據(jù)移動等。
3.3 感興趣對象因子的控制
感興趣對象因子的控制指的是感興趣對象的識別。由于感興趣對象可能是具體的事物也可能是概念性對象或概念性對象的一部分,因此單從實體對象方面考慮是不夠的。我們可以通過以下方法識別:
1)通過比較數(shù)據(jù)屬性來識別感興趣對象。識別感興趣對象最關(guān)鍵的是要確定這些屬性是否是關(guān)于一個“感興趣對象”的,因為是“感興趣對象”決定了COSMIC方法所定義的“數(shù)據(jù)組”的數(shù)量。例如,如果輸入到一個功能過程中的數(shù)據(jù)屬性是三個獨立的感興趣對象的屬性,那么,我們需要識別出三個獨立的Entry數(shù)據(jù)移動。
2)根據(jù)數(shù)據(jù)需求來識別感興趣對象。每一個數(shù)據(jù)組應(yīng)該與FUR中的一個感興趣對象直接相關(guān)。數(shù)據(jù)組必須是唯一的,并且可以通過它的數(shù)據(jù)屬性來區(qū)分。同時,一個數(shù)據(jù)組應(yīng)該在支持該軟件的計算機系統(tǒng)中物化,也就是軟件實際用到了該數(shù)據(jù)組。實踐中,數(shù)據(jù)組的物化有很多種形式。例如,作為持久存儲設(shè)備上的一個物理記錄結(jié)構(gòu)(文件、數(shù)據(jù)庫表、ROM存儲器,等等)。數(shù)據(jù)組是物化形式是實際可見的,而在規(guī)格說明書中對數(shù)據(jù)描述時,往往可以表達(dá)出數(shù)據(jù)的來源和接受者等信息。通過這些信息可輔助識別出數(shù)據(jù)屬性和數(shù)據(jù)組,從而進一步識別出感興趣對象。
3) “較大”感興趣對象原則。當(dāng)多次同時出現(xiàn)若干數(shù)據(jù)屬性時,即使它們屬于不同的感興趣對象,我們也應(yīng)當(dāng)嘗試將其抽象為“較大”的感興趣對象。從軟件開發(fā)的角度來看,這樣可以減少數(shù)據(jù)組的重復(fù)度量,使得度量結(jié)果更為合理。
4 結(jié)束語
軟件結(jié)構(gòu)、功能過程和感興趣對象識別的主觀性較強,對度量結(jié)果的影響很大。文章通過對COSMIC方法的研究和實際度量,分析了規(guī)模度量中一致性問題的起因,重點從技術(shù)層面分析和論述了軟件結(jié)構(gòu)、功能過程和感興趣對象,并給出了相應(yīng)的控制方法。這些方法有助于度量員理解COSMIC方法,從而指導(dǎo)和規(guī)范度量過程,提高度量結(jié)果的一致性。
參考文獻(xiàn):
[1]A bran, A., Desharnais, J.-M., Oligny, S., St-Pierre, D. and Symons, C., COSMIC FFP – Measurement Manual (COSMIC implementation guide to ISO/IEC 19761:2003), ?cole de technologie supérieure – Université du Québec, Montréal, Canada, 2003[DB/OL].http://www.gelog.etsmtl.ca/cosmic-ffp/manual.jsp.
[2] ISO/IEC 19761. Software Engineering – “COSMIC-FFP - A functional size measurement method,”[C].International Organization for Standardization-ISO,Geneva,2003.
[3] 周鵬. COSMIC度量一致性的研究與實踐[D].長沙:國防科學(xué)技術(shù)大學(xué)碩士論文,2011.
[4] ISO/IEC 19761,COSMIC-FFP Measurement Method Proposed Measurement Etalon[C].C-Registration System,2007.
[5] Kassab M,Ormandjieva O,Daneva M,et al.Non-Functional Requirements: Size Measurement and Testing with COSMIC-FFP[Z].
[6] Zhou Peng,He Hong Jun.Identification of the software layers in COSMIC-FFP[C].IEEE BTMC vol Ⅲ,Chongqing,December 13-14,2010.
[7] Barry Boehm, Chris Abts.Software Development Cost Estimation Approaches – A Survey[C].Los Angeles, CA 90089-0781,2000.