您的位置:軟件測(cè)試 > 軟件項(xiàng)目管理 > 項(xiàng)目計(jì)劃 >
基于用例的工作量估計(jì)
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/5/10 14:54:36 ] 推薦標(biāo)簽:

類(lèi)和子系統(tǒng)在 UML 中定義為;在 UML 中更大的聚合是子系統(tǒng)(包含子系統(tǒng)),為了更簡(jiǎn)單的進(jìn)行描述,我進(jìn)行了不同的命名。對(duì)于那些知道 2167 和 498 軍方標(biāo)準(zhǔn)(稱(chēng)子系統(tǒng)為 CSC,稱(chēng)類(lèi)為 CSU)中的術(shù)語(yǔ)的人來(lái)說(shuō),子系統(tǒng)組(subsystemGroup)的規(guī)模用 CSCI -來(lái)表示。我記得,經(jīng)過(guò) 2167 天的關(guān)于 Ada 的結(jié)構(gòu)應(yīng)該映射到哪一層次的爭(zhēng)論后,塵埃落定,Ada 包通常映射為 CSU。我并不建議系統(tǒng)必須嚴(yán)格的遵循這種層次結(jié)構(gòu),還將存在層次之間的混合,這種層次結(jié)構(gòu)使我能夠更好地了解規(guī)模對(duì)于每個(gè)用例工作量的影響。

在每一層上都會(huì)有用例(盡管對(duì)于單個(gè)的類(lèi)可能不是這樣),但并不是單純的大量細(xì)節(jié)堆砌 ,而是用例針對(duì)那個(gè)層上的每個(gè)組件(例如子系統(tǒng)、子系統(tǒng)組,等等)。在上文中我曾斷言對(duì)于每一層的每一個(gè)組件都有 10 個(gè)用例――如果用例的描述平均是 10 頁(yè),那么將會(huì)給出一個(gè)潛在的、大約 100 頁(yè)長(zhǎng)度的說(shuō)明文檔(還要加上類(lèi)似的或者少一些的關(guān)于非系統(tǒng)性需求的相應(yīng)說(shuō)明),這是 Stevens 98 提倡的數(shù)字,并且和Royce98推薦的數(shù)字很接近。但是為什么是 10 個(gè)用例呢?為了得出這個(gè)數(shù)字,基于對(duì)每一個(gè)子系統(tǒng)的類(lèi)的數(shù)量、類(lèi)的規(guī)模、操作規(guī)模等等我認(rèn)為的合理的規(guī)模,我進(jìn)行了自下向上的推理。這些和其他假設(shè)共同搜集在下表中供大家引用。

我沒(méi)有大量的經(jīng)驗(yàn)數(shù)據(jù)-貫穿文中的是瑣碎的、分散的數(shù)據(jù),Lorentz 94 和 Henderson-Sellers 96 有一些數(shù)據(jù),我也有一些在澳大利亞的項(xiàng)目中得出的數(shù)據(jù),主要是在軍用航空航空領(lǐng)域。任何情況下,在這個(gè)階段,將框架或多或少的定位到合適的位置是非常重要的。

分層結(jié)構(gòu)中組件的大小
這里我應(yīng)該指出的是,我曾經(jīng)使用代碼行來(lái)度量組件的大小,但許多人不喜歡這種度量。這些是 C++(或者相同層次的語(yǔ)言)代碼行,所以,要回到功能點(diǎn)非常容易。

在容器中的類(lèi)的數(shù)目和能表達(dá)的行為的豐富性之間肯定有許多關(guān)系。我選擇了 8 個(gè)類(lèi)/子系統(tǒng) ,8 個(gè)子系統(tǒng)/子系統(tǒng)組,8 個(gè)子系統(tǒng)組/子系統(tǒng),等等。那么為什么是 8 個(gè)呢?

1. 它在 7 或-2 之間;

2. 由于每個(gè)類(lèi)有 850 slocs(每 70 slocs 有 12 個(gè)操作)的 C++代碼,它得出了一個(gè)子系統(tǒng)的規(guī)模是 7000 slocs-一個(gè)可以由小的團(tuán)隊(duì)(3-7人)在 4-9 個(gè)月能夠交付的功能/代碼的程序塊,其中系統(tǒng)的迭代長(zhǎng)度該調(diào)整到 30 萬(wàn)-100 萬(wàn)slocs (RUP 99) 的范圍內(nèi) 。

那么,多少用例能夠表達(dá)八個(gè)類(lèi)的行為(外部的)?,哪些是屬于子系統(tǒng)的并且已經(jīng)被定位在子系統(tǒng)中了?決定豐富性的原因不僅僅是用例的數(shù)量,還有每個(gè)用例的場(chǎng)景數(shù)量,F(xiàn)在,并沒(méi)有多少方法來(lái)指導(dǎo)場(chǎng)景/用例擴(kuò)展――在Booch 98中,Grady Booch 指出"存在一個(gè)從用例到場(chǎng)景的"膨脹系統(tǒng)",一個(gè)復(fù)雜度適當(dāng)?shù)南到y(tǒng)中可能有幾十個(gè)用于捕獲系統(tǒng)行為的用例,每個(gè)用例可能具有幾十個(gè)場(chǎng)景….",Bruce Powel Douglass 在 Douglass 99 中指出,"….為了詳細(xì)描述用例需要很多場(chǎng)景,通常需要1打到幾打"。我選擇了 30 個(gè)場(chǎng)景/用例――這處于"幾打"的較低的一邊,但是 Rechtin(在 Rechtin 91中)指出,工程師能夠處理 5 到 10 個(gè)互相作用的變量(對(duì)于這個(gè)變量,我解釋為互相協(xié)作的 5 到 10 個(gè)類(lèi))并且 10 到 50 種交互(我解釋為場(chǎng)景)。以這種方式解釋?zhuān)鄠(gè)用例即為該變量空間的多個(gè)實(shí)例。

因此,10 個(gè)用例,每個(gè)用例 30 個(gè)場(chǎng)景,也是說(shuō)一共 300 個(gè)場(chǎng)景(后面將導(dǎo)致大約 300 個(gè)測(cè)試用例)對(duì)于覆蓋 8 個(gè)類(lèi)的有意義的行為來(lái)說(shuō)已經(jīng)足夠了。是否有其他的跡象表明這是個(gè)合理的數(shù)字呢?如果應(yīng)用 Pareto 的 80-20 規(guī)則,那么20%的類(lèi)將表達(dá)80%的功能,同樣,80% 的功能將被每個(gè)類(lèi)中20%的操作來(lái)表達(dá)。讓我們保守的說(shuō),我們需要20%的類(lèi)(等)來(lái)達(dá)到75%的功能并且通過(guò)這點(diǎn)來(lái)構(gòu)建一個(gè) Pareto 分布圖。(圖 1)

圖 1: 一個(gè) Pareto 式樣的分布圖

如果我們想要描述 80% 的系統(tǒng)行為,并且將 Pareto 規(guī)則應(yīng)用到類(lèi)、操作和場(chǎng)景數(shù)量方面,那么對(duì)于每一者都需要描述其行為的 93%(0.933= 0.8)--也是對(duì)于每一個(gè)都需要 50%,例如,4 個(gè)類(lèi)和 5 個(gè)操作(= (12 - 2 構(gòu)建器/析構(gòu)器)/2)。節(jié)點(diǎn)樹(shù)的不同分叉的數(shù)量可能達(dá)到數(shù)千個(gè)(其中節(jié)點(diǎn)樹(shù)用來(lái)代表4個(gè)類(lèi)及每個(gè)類(lèi)5個(gè)操作的執(zhí)行模式)。我為每個(gè)節(jié)點(diǎn)創(chuàng)建了 1 到 3 個(gè)鏈接,假設(shè)在頂層有 10 個(gè)操作(接口操作)的層次結(jié)構(gòu),并且形成了一個(gè)三層的樹(shù)。這將會(huì)有 1000 條路徑或者場(chǎng)景。所以,500 個(gè)場(chǎng)景將會(huì)得到 93% 的覆蓋。使用 300 個(gè)場(chǎng)景(用相同的假定)我們可以得到 73% 的覆蓋。根據(jù)一個(gè)選定的算法,可以對(duì)這個(gè)樹(shù)進(jìn)行修剪,從而刪除冗余的行為說(shuō)明,甚至更少的數(shù)量完全可以符合要求。

達(dá)到該目的的另一個(gè)方法是研究一下對(duì)于 7000 slocs 的 C++代碼需要多少測(cè)試用例(從場(chǎng)景派生而來(lái))。這些測(cè)試用例不受單元測(cè)試層次的制約,并且在 Jones 91 和 Boeing 777 項(xiàng)目中有許多證據(jù)表明這個(gè)數(shù)字是安全的,至少它符合實(shí)踐。這些來(lái)源表明在 250 到 280 之間是合適的。在一個(gè)完全不同的層次上,加拿大自動(dòng)空中交通系統(tǒng)(Canadian Automated Air Traffic System ,CAATS)項(xiàng)目使用了 200 項(xiàng)系統(tǒng)測(cè)試(我私下里獲悉的)。

用例的規(guī)模
用例應(yīng)該具有多大規(guī)模呢?是否應(yīng)該足夠大以及表達(dá)足夠的細(xì)節(jié)才能表達(dá)所需要的行為--這取決于與系統(tǒng)有關(guān)的用例復(fù)雜性、內(nèi)部用例和外部用例。--這里我們應(yīng)該描述多少系統(tǒng)的內(nèi)部動(dòng)作來(lái)深入探討一下這個(gè)問(wèn)題。很明顯,從外部行為描述來(lái)構(gòu)建系統(tǒng),要求將輸出與輸入關(guān)聯(lián)起來(lái)。例如,如果行為對(duì)歷史記錄敏感并且很復(fù)雜,那么在沒(méi)有系統(tǒng)內(nèi)部的一些概念模型及行為的動(dòng)作時(shí),很難描述它。注意,沒(méi)有必要描述一個(gè)系統(tǒng)是如何從內(nèi)部構(gòu)建的--任何滿(mǎn)足非功能性需求和匹配模型行為的設(shè)計(jì)能夠滿(mǎn)足要求。

UML 1.3 中提供的定義是:"用例【類(lèi)】:一個(gè)系統(tǒng)可以執(zhí)行的動(dòng)作(包括變體)序列的說(shuō)明,其中這些動(dòng)作與系統(tǒng)參與者進(jìn)行交互"。對(duì)復(fù)雜的行為的內(nèi)部動(dòng)作,可能合理的采用這個(gè)定義也可以在實(shí)現(xiàn)階段再進(jìn)行定義――這對(duì)于終用戶(hù)來(lái)說(shuō)是個(gè)更遠(yuǎn)的步驟。業(yè)務(wù)規(guī)則也應(yīng)該納入到用例中以便約束參與者的行為(例如,在一個(gè)ATM系統(tǒng)中,銀行需要有一條規(guī)則:在一次交易中,提取的金額不能超過(guò) 500 美元,無(wú)論賬號(hào)中的余額為多少)。

根據(jù)這種解釋?zhuān)录挠美髅枋龅捻?yè)數(shù)可以為 2-20 。從計(jì)算的角度上看,具有簡(jiǎn)單行為的系統(tǒng)顯然不需要冗長(zhǎng)的描述;蛟S我們可以認(rèn)為簡(jiǎn)單的商務(wù)系統(tǒng)通常用 2 到 10 頁(yè)來(lái)描述,平均為 5 頁(yè)。對(duì)于更復(fù)雜的系統(tǒng)來(lái)說(shuō),業(yè)務(wù)系統(tǒng)和科學(xué)系統(tǒng)在 6 到 15 頁(yè)之間,平均為 9 頁(yè)。復(fù)雜的命令和控制系統(tǒng)在 8 到 20 頁(yè)之間,平均為 12 頁(yè)(這些比率反映了相同規(guī)模系統(tǒng)的工作量與類(lèi)型之間的非線(xiàn)性關(guān)系),盡管我沒(méi)有數(shù)據(jù)來(lái)支持這種觀(guān)點(diǎn)。更富有表達(dá)力和描述性的形式(例如狀態(tài)機(jī)或者活動(dòng)圖)可能需要更少的篇幅--我們?nèi)耘f傾向于加強(qiáng)文本,所以此處不討論其他形式,畢竟相關(guān)資料很少或者根本沒(méi)有。

與上述規(guī)模有系統(tǒng)差異的開(kāi)發(fā)應(yīng)該運(yùn)用乘法規(guī)則來(lái)計(jì)算在這些假設(shè)基礎(chǔ)上得出的每個(gè)用例的小時(shí)數(shù)(我建議增加一個(gè) COCOMO -樣式的成本驅(qū)動(dòng),該驅(qū)動(dòng)是系統(tǒng)類(lèi)型的(簡(jiǎn)單的業(yè)務(wù)類(lèi)型、更復(fù)雜的類(lèi)型、命令及控制類(lèi)型等等)的觀(guān)察到的平均規(guī);蚪ㄗh的平均規(guī)模。

用例規(guī)模的另一個(gè)方面是場(chǎng)景的數(shù)量。例如,一個(gè) 5 頁(yè)長(zhǎng)的用例可能是一個(gè)具有很多路徑的復(fù)雜結(jié)構(gòu)。再一次重申,需要將場(chǎng)景的數(shù)量以及這個(gè)比例估計(jì)為 30(這是我對(duì)于每個(gè)用例的場(chǎng)景數(shù)的初步估計(jì)),將其作為成本的驅(qū)動(dòng)因素。

得到的結(jié)果是,我們假設(shè)基于大約長(zhǎng)度為 100 頁(yè)說(shuō)明的用例,對(duì)于任何給定層次的外部說(shuō)明及補(bǔ)充說(shuō)明來(lái)說(shuō),都是足夠的。范圍是 20 到 200 頁(yè)之間(這些界限是模糊的)。注意,一個(gè)系統(tǒng)(子系統(tǒng)組)在低的層次上的總數(shù)是 3-15 頁(yè)/ ksloc(簡(jiǎn)單的業(yè)務(wù)系統(tǒng))到 12-30 頁(yè)/ ksloc(復(fù)雜的命令和控制系統(tǒng))。這或許能夠解釋 Royce 98 表中的 14-9 和實(shí)際項(xiàng)目之間明顯的矛盾之處,前者的工件所占用的篇幅非常少,而實(shí)際項(xiàng)目卻占用了大量的頁(yè)。本文的觀(guān)點(diǎn)認(rèn)為規(guī)格說(shuō)明的層次不應(yīng)受頁(yè)數(shù)的限制。--Royce 是正確的,對(duì)于大型的、復(fù)雜的系統(tǒng)而言,重要內(nèi)容的說(shuō)明(如版本聲明)可以達(dá)到范圍的上限――200 頁(yè)

上一頁(yè)12345下一頁(yè)
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd