如何做好軟件系統設計階段質量保障
設計是用戶需求到編碼實現的必經階段,軟件項目在設計階段的稟賦決定了軟件項目的資質。好的軟件設計不是軟件項目成功的唯一條件,但是沒有好的設計軟件項目肯定無法做好。
一、軟件設計的重要性體現在以下幾個方面:
1、軟件設計在整個軟件項目的建設中起著承上啟下的重要作用。
從整個軟件項目開發階段來看,軟件項目可以分為需求、設計、編碼、驗證四個階段。設計承接需求分析,基于準確的需求分析,對項目目標進行結構化搭建。設計階段產生的設計說明書以及設計規范是編碼階段的作業指導,也是測試人員開發測試用例的指導書。
2、軟件設計是對軟件項目質量進行保障的關鍵步驟。
軟件項目的質量與需求分析、設計、編碼、驗證段這四個階段的質量之間的關系,可以用C語言表達為:最終的軟件質量 = 需求分析質量 && 設計質量 && 編碼質量 && 驗證質量,這種“與”的關系表明任何一個階段出現質量紕漏,軟件項目的最終質量都無法保障。
3、設計階段提供的軟件表示,使軟件項目質量的評價成為可能。
反映軟件設計質量的要素有:準確性、穩健性、安全性、通信有效性、處理有效性、可操作性、完備性、一致性、可追蹤性、可見性、可擴充性、復用性、模塊 性、清晰性、自描述性、簡單性、結構性、硬件系統無關性、軟件系統無關性、文檔完備性等。通過這些考核要素對設計階段質量進行控制,從而達到從項目前端控 制軟件質量的效果。同時該階段的設計規范也是進行軟件質量評價的參照標準與基本要求。
因此,想做好整個軟件項目的質量保障,必須充分重視設計階段的質量保障工作。山東省軟件評測中心作為國內最早一批獲得國家實驗室認可并取得政府授權的中立的第三方機構,在十余年的軟件項目質量服務過程中發現:
二、設計階段經常出現的質量問題從大的方面看有以下幾種原因:
1、需求分析階段工作不充分
好的軟件設計必然基于準確的需求分析,離開正確的需求分析,軟件設計就是做得再好,在源頭上也是錯誤的,更無任何意義,有時甚至是南轅北轍。有些軟件項 目因為工期緊張或乙方軟件企業管理不規范,甲方用戶人員技術受限或配合不到位或承建方需求分析人員業務、技術經驗不足等這樣那樣的原因,需求調研沒有做 透,更有甚者基本的業務邏輯還沒有完全理清,就匆匆開始需求分析然后又囫圇吞棗的進行自我想象中的架構設計,結果可想而知。
2、設計不充分
有許多軟件企業不重視設計階段的工作,或者略掉設計直接進行編碼。這樣必然把許多的問題遺留給編碼階段,等寫了一部分代碼后再后頭看,錯了,返工……另 外,設計人員由于技術欠缺或經驗不足,或者對業務理解不夠深入,未能充分考慮后期需求變動對設計的影響也是造成設計不充分的一類重要原因。
設計不充分往往導致頻繁變更與諸多性能、安全方面的漏洞。在軟件項目里,越是在項目前期發現問題,解決成本越低。據相關機構統計,在設計階段發現偏差比在需求分析階段發現并修正要高出5 倍,在編碼階段覺察偏差則會提高到10倍,而如果延續到單元測試或系統測試階段發現設計缺陷修正成本則會提高到20倍。另外,設計人員由于技術欠缺或經驗不足,或者對業務理解不夠深入,未能充分考慮后期需求變動對設計的影響也是造成設計不充分的一類重要原因。
3、過度設計
與設計不充分相對應的一種情況是設計過度,過度設計一般是由于設計人員在做項目分析設計時,過分的考慮潛在的、未來的以及準備擴展等因素,過度的抽象, 過多思考封裝、分離解耦,導致太多顆粒單位,太多插件等等,給設計資源造成不必要的浪費,并且可能導致原本可以簡單實現的邏輯變復雜,造成系統整體性能的 下降與維護成本的上升等等,以至于影響到用戶體驗或者簡直沒法用。
上述情況都會造成軟件設計質量的下降,那么我們應該如何做好設計階段的質量保障工作?
三、如何才能做好軟件項目設計階段的質量保障
1、思想上重視
充分認識設計階段的重要性,從思想上強調設計階段質量保障工作的必要性與重要性。關于軟件設計的重要性前文已從幾個方面作了總結,不再贅述。項目團隊成員與甲方都要充分理解并一致認同設計規范與設計評審等質量管理措施對整個項目的意義與重要性。
2、選用合適的設計思想、設計方法
設計開始,在充分了解需求與項目背景的前提下,結合項目情況采用恰當的設計思想與設計方法,從設計的指導思想與方法上避免設計階段的質量瑕疵。 我們在做軟件設計時還要根據項目的具體情況與應用場景選用合適的設計思想作指導,選用合適的建模方法幫我們盡快理清系統的業務邏輯并理出思路。
從方法學的角度來講,軟件的設計與開發從最初的機器語言-匯編語言發展到面向過程的結構化設計方法,到現在應用較多的面向對象、面向組件發展到面向服務,每一步都體現了不斷抽象、更加貼近業務實務的發展趨勢。
不管采用什么樣的設計方法進行架構設計,設計都需要以充分滿足項目需求為目的,任何分析與設計方法只有針對具體問題才有實際意義。另一方面要考慮的是,采用的方法要側重滿足項目或產品的質量需求,也就是非功能性需求。確保設計階段的質量無憂。
3、項目管理上避免
項目管理是貫穿整個項目生命周期的,80%的軟件項目質量問題是由項目管理造成的。軟件設計階段作為軟件項目的一個重要環節,要做好質量保障自 然離不開好的項目管理。從設計團隊組建到角色分工與權責確定,到設計規范的制定與流程梳理,所有這些工作都需要一個好的團隊負責人去把控。設計團隊負責人 還要重視設計評審,通過設計評審不斷發現問題,逐步完善細化設計架構與詳細設計說明書,作為后期代碼實現與測試用例編寫的指導。要重視項目經理的作用,項 目經理的職責是進行溝通,促進溝通并建立溝通的渠道。只有通過溝通才能在項目成員間建立起認同與理解,從而將設計思路有效實現。
4、引入專業的第三方質量保障服務機構指導
一般的項目建設,乙方自己充當質量保障的角色,部分軟件企業為了降低成本,盡可能的減少質量保障環節的資源支出,致使設計質量無法保障,即使有 部分軟件企業視質量為生命,建立了良好的質量管理體系,但是囿于精力所限或趕工期或質量保障經驗上的限制,設計質量也是不能令人滿意。而從甲方看,一般囿 于人員、技術、精力的限制,甲方很難有精力或技術能力去對項目的質量進行深入的關注。更何況軟件本身并不可見,充滿復雜的邏輯關系,模塊之間的耦合關聯度 不易把握。第三方質量保障服務機構靠技術與服務來贏得客戶信任,因而更加重視項目的質量與最終用戶體驗。從而會更加專業的對待項目過程中的質量管理。
綜上,算是拋磚引玉,歡迎探討!
posted on 2012-04-13 10:19 順其自然EVO 閱讀(1576) 評論(0) 編輯 收藏 所屬分類: CMMI & QA