iT邦幫忙

2023 iThome 鐵人賽

0
Software Development

深入淺出設計模式 - 使用 C++系列 第 32

《軟體工程篇 - 4》 — 軟體工程管理的量度 (Measures / Metrics)

  • 分享至 

  • xImage
  •  

量度(Measures) 和 指標(Metrics) 的定義

  • 量度(Measures): 是對特定屬性或特質的直接或間接觀測
    • 例如: 程式碼行數、缺陷數量...等
  • 指標(Metrics): 是基於一或多個量度來評價某個層面的數學函數
    • 例如: 缺陷密度(缺陷數量/程式碼行數)

分類

產品度量 (Product Metrics)

這類度量關注的是軟體產品本身,例如程式碼品質或用戶界面的可用性

Size Metrics

  • Lines of Code (LOC)
    • 用來衡量軟體規模的基本指標,通常計算源碼文件中的行數來得出。它是一個簡單但直觀的量度,經常用於估計開發時間和成本。然而,這個指標無法反映程式碼的複雜性或品質
  • Function Points (FP)
    • measure the size of an application system based on the functional view of the system. The size is determined by counting the number of inputs, outputs, queries, internal files and external files in the system and adjusting that total for the functional complexity of the system

Complexity Metrics

  • Cyclomatic Complexity
    • 是用來量度程式碼複雜度的一種指標。具體來說,它衡量了程式的控制流圖中線性獨立路徑的數量。數值高通常意味著較高的維護成本和更大的測試困難
    • M = E – N + 2P ,where
      • E = the number of edges in the control flow graph
      • N = the number of nodes in the control flow graph
      • P = the number of connected components
  • Coupling and Cohesion
    • 低 Coupling 和高 Cohesion 通常是高質量軟體設計的特點
  • Modularity Index
    • 通常用一種或多種數學公式來計算,例如基於模塊之間的依賴關係
    • 高模塊化指數通常意味著較低的維護成本和更高的可重用性

Performance Metrics

  • Latency
    • 表示從發送一個請求到接收到相應回應所需的時間。它通常用毫秒(ms)或秒(s)來表示
  • Throughput
    • 是一個系統在單位時間內能處理的任務數量或資料量。通常用每秒請求數(Requests Per Second, RPS)或每秒傳輸位元數(Bits Per Second, bps)來量度

Quality Metrics

  • Defect Density
  • Mean Time Between Failures (MTBF)

Application

  • Quality Assessment: Helps in identifying the robustness and reliability of the software
  • Performance Tuning: Assists in optimizing the software for better performance

過程度量 (Process Metrics)

這些度量用於評價軟體開發過程的效能和成熟度

Key Metrics

  • 發佈前捕捉缺陷百分比(Percentage of Defects Caught Before Release)
    • 在軟體發佈前找到和修復的缺陷數量與總缺陷數量的比例,通常以百分比形式呈現
  • 測試階段缺陷到達模式(Testing Defect Arrival Pattern)
    • 考察在各個測試階段中發現的缺陷的頻率和分佈,有助於了解軟體的品質和準備狀況
  • 測試階段缺陷到達率(Defect Arrival Rate During Testing Phases)
    • 在特定測試階段中發現缺陷的速率,提供軟體穩定性和缺陷密度的見解
  • 修復反應時間(Fix Response Time)
    • 從報告缺陷到解決問題的持續時間,對評估維護反應性很重要
  • 上市時間(Time to Market)
    • 從項目啟動到產品發佈的經過時間,常用於評估開發過程的效率。

Application

  • Process Optimization: To make the development and maintenance more efficient
  • Quality Assurance: To ensure the software meets quality standards throughout the development life cycle

資源度量 (Project Metrics)

這些度量專注於人力和其他資源的使用情況

Human Resources

  • 開發人員數量(Number of Developers)
    • 表示參與軟體開發項目的開發人員總數。這個數字是評估項目規模和所需資源的基礎。
  • 人員配置模式(Staffing Pattern)
    • 描述了項目生命週期中員工數量的變化和分佈。這有助於理解項目的需求,以及何時需要增加或減少員工

成本指標 (Cost Metrics)

  • 成本績效指數 (Cost Performance Index, CPI)
    • 衡量項目的實際成本與預算之間的關係,用以評估項目是否超支
  • 預算偏差 (Budget Variance)
    • 表示項目的實際成本與預算之間的差異,用來評估項目的財務健康狀況

時程指標 (Schedule Metrics)

  • 計劃與實際時間 (Planned vs Actual Time)
    • 比較項目的實際完成時間與原計劃完成時間,用於評估項目時程的執行情況
  • 時程偏差 (Schedule Variance)
    • 表示項目的實際完成時間與計劃完成時間之間的差異,用以評估時程管理的有效性

生產力指標 (Productivity Metrics)

  • 每人月功能點數 (Feature Points per Man-Month)
    • 表示每個開發人員在一個月內能完成的功能點數,用以評估團隊的總體生產力

Application

  • Resource Allocation: To ensure optimal use of available resources
  • Project Tracking: For monitoring the project status against predefined goals

Reference

  1. https://nccur.lib.nccu.edu.tw/bitstream/140.119/35198/9/35600309.pdf
  2. https://www.tutorialspoint.com/software_quality_management/software_quality_measurement_metrics.htm
  3. https://www.javatpoint.com/software-engineering-software-metrics
  4. https://www.geeksforgeeks.org/cyclomatic-complexity/

上一篇
《軟體工程篇 - 3》 — 軟體工程的方法論 (Methodology)
下一篇
《軟體工程篇 - 5》 — 軟體測試方法 (Software Testing)
系列文
深入淺出設計模式 - 使用 C++37
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言