內部產品屬性



內部產品屬性以僅依賴於產品本身的方式描述軟體產品。衡量內部產品屬性的主要原因是,它有助於在開發過程中監控和控制產品。

測量內部產品屬性

主要的內部產品屬性包括**大小**和**結構**。大小可以在無需執行的情況下靜態測量。產品的大小告訴我們建立它所需的工作量。同樣,產品的結構在設計產品的維護方面也起著重要作用。

測量大小

軟體大小可以用三個屬性來描述:

  • **長度** - 它是產品的物理大小。

  • **功能** - 它描述了產品提供給使用者的函式。

  • **複雜度** - 複雜度有不同型別,例如:

    • **問題複雜度** - 衡量底層問題的複雜度。

    • **演算法複雜度** - 衡量用於解決問題的演算法的複雜度。

    • **結構複雜度** - 衡量用於實現演算法的軟體的結構。

    • **認知複雜度** - 衡量理解軟體所需的工作量。

這三個屬性的測量可以描述如下:

長度

有三個開發產品的尺寸測量對預測預測所需的工作量很有用。它們是規格說明、設計和程式碼。

規格說明和設計

這些文件通常結合文字、圖形和特殊的數學圖表和符號。規格說明測量可用於預測設計的長度,而設計長度又是程式碼長度的預測指標。

文件中的圖表具有統一的語法,例如帶標籤的有向圖、資料流圖或 Z 模式。由於規格說明和設計文件由文字和圖表組成,因此其長度可以用表示文字長度和圖表長度的一對數字來衡量。

對於這些測量,需要為不同型別的圖表和符號定義原子物件。

資料流圖的原子物件是過程、外部實體、資料儲存和資料流。代數規格說明的原子實體是排序、函式、操作和公理。Z 模式的原子實體是規範中出現的各種行。

程式碼

程式碼可以透過多種方式生成,例如過程語言、面向物件和視覺化程式設計。最常用的傳統原始碼程式長度度量是程式碼行數 (LOC)。

總長度,

LOC = NCLOC + CLOC

即,

LOC = 未註釋程式碼行數 + 已註釋程式碼行數

除了程式碼行數之外,Maurice Halstead 提出的其他替代方案,例如大小和複雜度,也可以用於測量長度。

Halstead 的軟體科學試圖捕捉程式的不同屬性。他提出了三個內部程式屬性,例如長度、詞彙量和體積,它們反映了尺寸的不同檢視。

他首先將程式**P**定義為標記的集合,按運算子或運算元分類。這些標記的基本度量是:

  • **μ1** = 唯一運算子的數量

  • **μ2** = 唯一運算元的數量

  • **N1** = 運算子的總出現次數

  • **N2** = 唯一運算子的數量

長度**P**可以定義為

$$N = N_{1}+ N_{2}$$

**P**的詞彙量為

$$\mu =\mu _{1}+\mu _{2}$$

程式的體積 = 編寫長度為**N**的程式所需的思維比較次數,為

$$V = N\times {log_{2}} \mu$$

體積為**V**的程式**P**的程式級別為:

$$L = \frac{V^\ast}{V}$$

其中,$V^\ast$ 是潛在體積,即**P**的最小尺寸實現的體積。

級別的倒數是難度 -

$$D = 1\diagup L$$

根據 Halstead 理論,我們可以計算估計值**L**為

$${L}' = 1\diagup D = \frac{2}{\mu_{1}} \times \frac{\mu_{2}}{N_{2}}$$

類似地,估計的程式長度為 $\mu_{1}\times log_{2}\mu_{1}+\mu_{2}\times log_{2}\mu_{2}$

生成**P**所需的工作量由下式給出:

$$E = V\diagup L = \frac{\mu_{1}N_{2}Nlog_{2}\mu}{2\mu_{2}}$$

其中度量單位**E**是理解**P**所需的初級心理辨別次數。

測量長度的其他替代方案為:

  • 根據程式文字所需的計算機儲存位元組數。

  • 根據程式文字中的字元數。

面向物件開發提出了新的測量長度的方法。Pfleeger 等人發現,物件和方法的數量計數比使用程式碼行數獲得更準確的生產力估計。

功能

產品中固有的功能量提供了產品大小的度量。有許多不同的方法來衡量軟體產品的功能。我們將在下一章中討論一種這樣的方法——阿爾布雷希特的功能點方法。

廣告