CISQ軟體開發品質指標:促進原始碼品質提升的實踐方法


由超過750個全球2,000大企業組成的軟體品質策略聯盟「資訊軟體品質聯盟(Consortium for Information & Software Quality,下文簡稱CISQ)」,針對軟體開發品質的議題,探討軟體安全性、可靠度、性能效率和可維護性,除了可以在開發階段減少錯誤和增進效率,並可在上線營運後方便改版維護並確保穩定順暢運作。 

【CISQ探討的四大原始碼品質指標】

CISQ依據美國聯邦非營利組織MITRE(亦為CVE通用漏洞披露之管理機構)的「通用弱點列舉(Common Weakness Enumeration,CWE)」指標,分別彙整安全性、可靠度、性能效率、可維護性四種軟體原始碼品質(Code quality)指標,藉此提升軟體品質自動化檢測的正確性。

  • 安全性(Security):找出原始碼中最常見的安全威脅,如OWASP Top 10、CWE/SANS Top 25
  • 可靠度(Reliability):衡量原始碼中影響軟體可靠度的弱點,如可用性、容錯、還原性
  • 性能效率(Performance and Efficiency):衡量原始碼中影響軟體性能及效率的弱點,如CPU/裝置/記憶體之使用率和回應時間
  • 可維護性(Maintainability):衡量原始碼中影響維護性的弱點,如認知程度、可變動性、可測試性和可延展性 

【CISQ四大指標在原始碼品質評估之應用】

CISQ除依據CWE通用弱點列舉指標外,CISQ也引用了ISO 25010 SQuaRE(System and Software Quality Requirements and Evaluation,系統和軟體品質需求暨評估),且依照前述四大指標,針對軟體品質的單元層次(Unit level,偏向單一模組或功能)、系統層次(System level,偏向整體系統框架)進行涵蓋率(Coverage)指標彙整,希望強化開發過程和產出後原始碼維護之品質。

表1 CISQ四大原始碼品質指標,與單元層次、系統層次的個別對應評估項目

指標

編碼實踐單元層次

結構實踐系統層次

可靠度

此一指標用來測量足以影響軟體可用性、容錯性和可恢復性的原始碼弱點

•多執行緒環境保護狀態

•「多形(Polymorphism)」和「繼承(Inheritance)」的安全使用

•資源綁定管理、複雜編碼

• 超時狀態(Timeouts)與資源分配之管理

•多層次設計合規性

•管理資料完整性和連續性的軟體

•交易過程中的例外處理

•類別架構合規性

性能效率

此一指標用來測量原始碼中,對回應時間,以及處理器、記憶體、其餘系統資源使用率造成衝擊的弱點

•良好物件導向編碼之合規性

•良好SQL語法之合規性

•迴圈(Loop)中的高代價(Expensive)運算

•針對連線池(Connection pools)的靜態連結

•良好垃圾回收(Garbage collection)之合規性

•與高代價或者遠端資源進行適當互動

•資料存取效能和資料管理

•記憶體、網路和磁碟空間管理

•客戶請求的集中式處理

•針對程式和資料庫互動,使用中間層(Middle layer)

安全性

此一指標用來測量軟體中最常被披露的弱點,包含CWE/SANS Institute前25大致命弱點、OWASP Top 10

•使用寫死(Hard-coded)之憑證

•緩衝區溢位(Buffer overflow)

•初始化遺失

•矩陣目錄的不當驗證

•不恰當的鎖定(Locking)

•無法控制的程式字串

•輸入認證

•SQL隱碼攻擊(Injection)

•跨站腳本攻擊(XSS)

•無法使用經審核之函式庫或框架

•安全架構設計合規性

可維護性

此一指標用來測量原始碼的弱點,其足以影響影響軟體的可理解性、可變性、可測試性和可擴展性

•非結構化且複雜的程式撰寫

•高循環複雜度(Cyclomatic complexity)

•動態程式撰寫的控制層級

•方法(Methods)的過度參數化

•寫死的字串常數(String literals)

•過大的元件大小

•重複的業務邏輯

•初期架構設計合規性

•架構層之間嚴格的調用層次

•過多的橫向層面(Horizontal layers)

•過多的多層次扇入扇出(Fan-in / fan-out)

資料來源:CISQ

CISQ藉由參考CWE/SANS Top 25、OWASP Top 10等國際安全標準,探討原始碼品質中的可靠度、安全性、性能效率、可維護性四大議題,並進一步歸納為可供評估之191條項目,並被CWE所採納為原始碼安全需求指引;CISQ也將其整理過的原始碼品質檢測指標,提交到ISO並參與ISO 25023標準制定討論,補充ISO 25023在原始碼品質檢測面的實施方法和項目,以期獲得業界採用和依循,提升應用程式原始碼在上線生命週期的安全性和維護便利性。 

【小結】

CISQ軟體品質開發指標除依據美國CWE通用弱點披露,針對可靠度、安全性、可維護性、系統效能四項原始碼品質議題,進行軟體開發過程中單元面、系統面的常見錯誤改善建議;若能將CISQ軟體開發品質指標,從四大原始碼品質議題,協助國內SI業者減少資安和系統效能等缺失、把關SI業者軟體開發過程之品質需求,以符合SLA基本要求和國內外資安相關法規、保障產出軟體整體品質、提供更安全穩定的服務。

 

 

參考來源:

 

  1. (2020). Code Quality Standards. Retrieved March 9, 2020, from Consortium for Information & Software Quality (CISQ): https://www.it-cisq.org/standards/code-quality-standards/
  2. Jones, M. (2018, December 18). Introduction to CISQ. Retrieved March 10, 2020, from National Institute of Standards and Technology (NIST): https://csrc.nist.gov/CSRC/media/Projects/cyber-supply-chain-risk-management/documents/SSCA/Winter_2018/TueAM2.3-SSCA_CISQ.pdf
延伸閱讀