日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

软件测试作业5:计算下列代码片段的 Halstead 复杂度的11项内容

發(fā)布時(shí)間:2024/6/3 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 软件测试作业5:计算下列代码片段的 Halstead 复杂度的11项内容 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

作業(yè)5

1、 計(jì)算下列代碼片段的 Halstead 復(fù)雜度的11項(xiàng)內(nèi)容:

if (month < 3) {month = month + 12;year = year - 1; } return dayray((int)(day + (month + 1) * 26/10 + year + year / 4 + 6 * (year/100) + year / 400) % 7);

答:

  • Halstead 復(fù)雜度根據(jù)程序源代碼中語句行的操作符和操作數(shù)的
    數(shù)量計(jì)算程序復(fù)雜性。
    • 程序源代碼中操作符和操作數(shù)的量越大,程序難度就越大。
    • 操作符統(tǒng)計(jì)范圍通常包括語言保留字函數(shù)調(diào)用運(yùn)算符,也可以包括有關(guān)的分隔符等。
    • 操作數(shù)統(tǒng)計(jì)范圍可以是常量和變量等標(biāo)識(shí)符。
  • 設(shè) n1 表示程序中不同的操作符個(gè)數(shù),n2 表示程序中不同的操作數(shù)個(gè)數(shù),N1 表示程序中出現(xiàn)的操作符總數(shù),N2 表示程序中出現(xiàn)的操作數(shù)總數(shù)。Halstead 復(fù)雜度的11項(xiàng)內(nèi)容有:
    • Halstead 程序詞匯表長(zhǎng)度 Program vocabulary: n = n1 + n2.
    • Halstead 程序長(zhǎng)度或簡(jiǎn)單長(zhǎng)度 Program length: N = N1 + N2.
      • 注意到 N 定義為 Halstead 長(zhǎng)度,并非源代碼行數(shù)。
    • 以 N^ 表示程序的預(yù)測(cè)長(zhǎng)度 Calculated program length:
      • N^ = n1*log2(n1) + n2*log2(n2).
      • Halstead 的重要結(jié)論之一是:程序的實(shí)際長(zhǎng)度 N 與預(yù)測(cè)長(zhǎng)度 N^ 非常接近,這表明即使程序還未編寫完也能預(yù)先估算出程序的實(shí)際長(zhǎng)度 N。
    • 程序體積或容量 Volume: V = Nlog2(n),表明了程序在詞匯上的復(fù)雜性。
    • 程序級(jí)別 Level: L^ = (2/n1) x (n2/N2),表明了一個(gè)程序的最緊湊形式的程序量與實(shí)際程序量之比,反映了程序的效率。
    • 程序難度 Difficulty: D = 1/L^,表明了實(shí)現(xiàn)算法的困難程度。
    • 編程工作量 Effort: E = V x D = V/L^ .
    • 語言級(jí)別: L? = L^ x L^ x V .
    • 編程時(shí)間 (hours): T^ = E/(S x f),這里 S = 60 x 60, f = 18 .
    • 平均語句大小: N/語句數(shù)。
    • 程序中的錯(cuò)誤數(shù)預(yù)測(cè)值: B = V/3000 = Nlog2(n)/3000.

首先列表統(tǒng)計(jì)操作符的種類和出現(xiàn)次數(shù):

操作符出現(xiàn)次數(shù)
if1
<1
=2
+7
-1
*2
/4
%1
return(返回操作)1
int(強(qiáng)制類型轉(zhuǎn)換操作)1
dayray(函數(shù)調(diào)用操作)1

操作符一共有11種,n1 = 11,加起來共有22個(gè),N1 = 22。

然后列表統(tǒng)計(jì)操作數(shù)的種類和出現(xiàn)次數(shù):

操作數(shù)出現(xiàn)次數(shù)
month4
31
121
year6
12
day1
261
101
41
61
1001
4001
71

操作數(shù)一共有13種,n2 = 13,加起來共有22個(gè),N2 = 22。

接著統(tǒng)計(jì)語句數(shù):

語句一共有4個(gè)。

最后計(jì)算Halstead復(fù)雜度的11項(xiàng)內(nèi)容:

  • 程序詞匯表長(zhǎng)度 Program vocabulary: n = n1 + n2 = 11 + 13 = 24
  • 程序長(zhǎng)度或簡(jiǎn)單長(zhǎng)度 Program length: N = N1 + N2 = 22 + 22 = 44
  • 程序的預(yù)測(cè)長(zhǎng)度 Calculated program length: N^ = n1*log2(n1) + n2*log2(n2) = 11log2(11)+13log2(13) = 86.159
  • 程序體積或容量 Volume: V = Nlog2(n) = 44log2(24) = 201.73835
  • 程序級(jí)別 Level: L^ = (2/n1) x (n2/N2) = (2/11) x (13/22) = 0.1074
  • 程序難度 Difficulty: D = 1/L^ = 1/0.1074 = 9.31099
  • 編程工作量 Effort: E = V x D = V/L^ = 201.73835 * 9.31099 = 1878.38
  • 語言級(jí)別: L? = L^ x L^ x V = 0.1074 * 0.1074 * 201.73835 = 2.327
  • 編程時(shí)間 (hours): T^ = E/(S x f),這里 S = 60 x 60, f = 18,T^ = 1878.38/(3600 * 18) = 0.028987
  • 平均語句大小: N/語句數(shù) = 44/4 = 11
  • 程序中的錯(cuò)誤數(shù)預(yù)測(cè)值: B = V/3000 = Nlog2(n)/3000 = 201.73835/3000 = 0.067246

總結(jié)

以上是生活随笔為你收集整理的软件测试作业5:计算下列代码片段的 Halstead 复杂度的11项内容的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。