由超過750個全球2,000大企業組成的軟體品質策略聯盟「資訊軟體品質聯盟(Consortium for Information & Software Quality,下文簡稱CISQ)」,針對軟體開發品質的議題,探討軟體安全性、可靠度、性能效率和可維護性,除了可以在開發階段減少錯誤和增進效率,並可在上線營運後方便改版維護並確保穩定順暢運作。
【CISQ探討的四大原始碼品質指標】
CISQ依據美國聯邦非營利組織MITRE(亦為CVE通用漏洞披露之管理機構)的「通用弱點列舉(Common Weakness Enumeration,CWE)」指標,分別彙整安全性、可靠度、性能效率、可維護性四種軟體原始碼品質(Code quality)指標,藉此提升軟體品質自動化檢測的正確性。
【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基本要求和國內外資安相關法規、保障產出軟體整體品質、提供更安全穩定的服務。