如何提高C/C++大型項目的軟件質量?

如何提高c/c++大型項目的軟件質量?

        軟件的交付質量一直是我們軟件開發項目最爲關注的核心問題,那麼如何保證軟件項目,尤其是大型和超大型軟件項目的質量,不管在國內還是國外一直是許多軟件企業一直關注和研究的問題。

       通常我們會在功能性,可用性,高效性,可測試性,可維護性和可移植性等6個維度來對軟件質量進行把控和評定。


1.功能性,即軟件是否滿足了客戶業務要求;

2.可用性,即衡量用戶使用軟件需要付出多大的努力,簡潔容易操作的軟件,對於客戶來說是非常重要的,就拿國內用戶量最大的微信來說,你會不會覺得它的設計總是那麼的簡潔易用,以至於使用了這麼多年,它的複雜度也沒有增加很多,大道至簡的產品設計和簡單好用往往能吸引更多的用戶;

3.可靠性,即軟件是否能夠一直處在一個穩定的狀態上滿足可用性;可靠性是質量的傳統定義和基本要求。當然對於不同應用場景的軟件有不同的要求,比如,大部分客戶端軟件來說,好用,絕大部分情況下能夠正常運行和處理問題就可以了,但是對於一些行業的軟件,如金融交易軟件,航天和醫療軟件,如果出現問題,那麼產生的代價是巨大的。

4.高效性,即衡量軟件正常運行需要耗費多少物理資源;程序的實際執行和事件處理效率。尤其是對於一些實時性要求較高的應用場景,幾毫秒的差異可能會帶來結果的截然不同。如互聯網金融的高頻交易軟件、策略交易軟件和軍用軟件。

5.可測試性,即能對每個功能模塊做有效的測試,通常,我們的軟件不會只因爲通過了測試就變得可靠;到了你能夠測試的時候,軟件已經建立了內在質量。並不是所有的軟件都可以被有效的測試。爲了讓軟件可以有效地測試,我們必須在項目的開始的每一個環節都本着高質量的這個目標進行設計。

6.可維護性,即衡量對已經完成的軟件進行調整的可行度;好的軟件必須要有系統的缺陷追蹤和對客戶新需求的可擴展性。對於C++開發的許多系統來說,如果系統的設計不好,可能導致系統的維護成本和擴展成本都會非常高。大型的系統,可維護的設計都是從項目的每一步(需求分析,系統架構,詳細設計,質量保障,嚴格測試等)都進行精心設計和策劃而來的。

7.可移植性,即衡量軟件是否能夠方便地部署到不同的運行環境中;任何一個好的系統都應具備向新平臺的可移植性。

提高軟件質量的方法:

1.    質量保證(Quality Assurance,QA),一般是一個軟件公司內部負責“確保”產品質量已達到某種標準的組織。建立軟件測試過程模型,QA所做的測試都是在最終用戶層次上進行的。任何層次的迴歸測試都依賴於開發者本身。

2.    質量保障,QA必須成爲開發過程中不可獲取的一部分,不能只等着開發人員扔過來一個軟件纔開始測試。開發者有責任保障軟件產品的質量。QA要去體現這一點。不管是客戶,還是架構師,開發人員,還是QA測試人員都有全程參與保證項目質量的責任和義務,要保證高質量的軟件產品,系統架構師和軟件開發者在整個軟件開發過程中都必須把質量放在首位。

3.    建立PDCA循環,不光是對於開發人員的要求,也是對QA測試人員的要求。PDCA循環又叫質量環,是管理學中的一個通用模型。是英語單詞Plan、Do、Check和Adjust的第一個字母,PDCA循環就是按照這樣的順序進行軟件質量管理。


4.    避免重複代碼,重構系統中重複的代碼,減少不必要的干擾。

5.    及時測試已經完成的代碼,建立缺陷跟蹤。

6.    定期對代碼進行審查,做好代碼review。

7.    規範的代碼註釋,註釋的目的是使得其他開發人員能夠明白你所寫的這段代碼是做什麼的?如果你的註釋能做到這點,那麼OK,那麼你的註釋是基本完美的。

8.    代碼邏輯清晰,減少不必要的代碼,寫每一段代碼之前都多思考一下,假設着提出幾種方案,看哪種方案更加簡潔易懂,就使用那種方案,力求能寫出不言自明的代碼。

9.    對多種能達到同一目的的算法,比較分析,找出更加有效和高效的算法。

10.  良好的命名習慣,函數變量名,變量,方法的命名要見詞達意,使得看得人能一眼就看懂。

11.  複雜的類,方法,參數過多的函數應當把它拆分成更小的單元來實現,保證每一個單元的職責單一。

12.  不要在代碼裏面使用純數字,能使用宏定義,經量使用宏。

13.  多層嵌套的代碼,分開來處理,不要嵌套過深。

14.  局部變量保證其用途單一。

15.  提倡使用代碼生成工具,尤其在大型系統開發中,使用自動化工具的好處是顯而易見的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章