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