如何做好軟體系統設計階段質量保障
設計是使用者需求到編碼實現的必經階段,軟體專案在設計階段的稟賦決定了軟體專案的資質。好的軟體設計不是軟體專案成功的唯一條件,但是沒有好的設計軟體專案肯定無法做好。
一、軟體設計的重要性體現在以下幾個方面:
1、軟體設計在整個軟體專案的建設中起著承上啟下的重要作用。
從整個軟體專案開發階段來看,軟體專案可以分為需求、設計、編碼、驗證四個階段。設計承接需求分析,基於準確的需求分析,對專案目標進行結構化搭建。設計階段產生的設計說明書以及設計規範是編碼階段的作業指導,也是測試人員開發測試用例的指導書。
2、軟體設計是對軟體專案質量進行保障的關鍵步驟。
軟體專案的質量與需求分析、設計、編碼、驗證段這四個階段的質量之間的關係,可以用C語言表達為:最終的軟體質量 = 需求分析質量 && 設計質量 && 編碼質量 && 驗證質量,這種“與”的關係表明任何一個階段出現質量紕漏,軟體專案的最終質量都無法保障。
3、設計階段提供的軟體表示,使軟體專案質量的評價成為可能。
反映軟體設計質量的要素有:準確性、穩健性、安全性、通訊有效性、處理有效性、可操作性、完備性、一致性、可追蹤性、可見性、可擴充性、複用性、模組 性、清晰性、自描述性、簡單性、結構性、硬體系統無關性、軟體系統無關性、文件完備性等。通過這些考核要素對設計階段質量進行控制,從而達到從專案前端控 制軟體質量的效果。同時該階段的設計規範也是進行軟體質量評價的參照標準與基本要求。
因此,想做好整個軟體專案的質量保障,必須充分重視設計階段的質量保障工作。山東省軟體評測中心作為國內最早一批獲得國家實驗室認可並取得政府授權的中立的第三方機構,在十餘年的軟體專案質量服務過程中發現:
二、設計階段經常出現的質量問題從大的方面看有以下幾種原因:
1、需求分析階段工作不充分
好的軟體設計必然基於準確的需求分析,離開正確的需求分析,軟體設計就是做得再好,在源頭上也是錯誤的,更無任何意義,有時甚至是南轅北轍。有些軟體項 目因為工期緊張或乙方軟體企業管理不規範,甲方使用者人員技術受限或配合不到位或承建方需求分析人員業務、技術經驗不足等這樣那樣的原因,需求調研沒有做 透,更有甚者基本的業務邏輯還沒有完全理清,就匆匆開始需求分析然後又囫圇吞棗的進行自我想象中的架構設計,結果可想而知。
2、設計不充分
有許多軟體企業不重視設計階段的工作,或者略掉設計直接進行編碼。這樣必然把許多的問題遺留給編碼階段,等寫了一部分程式碼後再後頭看,錯了,返工……另 外,設計人員由於技術欠缺或經驗不足,或者對業務理解不夠深入,未能充分考慮後期需求變動對設計的影響也是造成設計不充分的一類重要原因。
設計不充分往往導致頻繁變更與諸多效能、安全方面的漏洞。在軟體專案裡,越是在專案前期發現問題,解決成本越低。據相關機構統計,在設計階段發現偏差比在需求分析階段發現並修正要高出5 倍,在編碼階段覺察偏差則會提高到10倍,而如果延續到單元測試或系統測試階段發現設計缺陷修正成本則會提高到20倍。另外,設計人員由於技術欠缺或經驗不足,或者對業務理解不夠深入,未能充分考慮後期需求變動對設計的影響也是造成設計不充分的一類重要原因。
3、過度設計
與設計不充分相對應的一種情況是設計過度,過度設計一般是由於設計人員在做專案分析設計時,過分的考慮潛在的、未來的以及準備擴充套件等因素,過度的抽象, 過多思考封裝、分離解耦,導致太多顆粒單位,太多外掛等等,給設計資源造成不必要的浪費,並且可能導致原本可以簡單實現的邏輯變複雜,造成系統整體效能的 下降與維護成本的上升等等,以至於影響到使用者體驗或者簡直沒法用。
上述情況都會造成軟體設計質量的下降,那麼我們應該如何做好設計階段的質量保障工作?