淺談保證軟件工程質量的一些心得體會

Itwolf原創博客,轉載請標明出處,謝謝編程

前言:後端

質量這個詞究竟有多重要,沒有切身體會真的很難說的出來,從畢業到進入華爲工做立刻就要滿1.5年了,如今這個詞理解更加深入了些。這麼說吧,質量在華爲的研發領域幾乎能夠說是重過其餘一切,開發進度來不及能夠延期,方案搞不定能夠變動,裁決不作,惟有質量不可妥協。爲何質量這麼重要?簡單說幾點:架構

(1)              質量是一個企業的代名詞,質量都作很差,客戶確定會有很差的體驗,並質疑你的能力。框架

(2)              對於大型的軟件工程活動,若是前期版本處處挖坑,那麼後期版本將會越作越痛苦,並且定位和解決問題所消耗的時間和金錢將會更多(這點感觸頗深)。函數

(3)              從軟件開發的角度來看,越早引入問題,帶來的人力消耗和經濟損失就越大,具體多大呢?聽說有專門的團隊研究過是成指數形式增加的(具體數字我不記得了,可是從切身體會來說我是深信不疑的),舉個例子,若是開發階段,引入一個和其餘地方關聯性比較強問題,一直沒被發現,而後幾個版本以後發現,那麼可能不少代碼都是基於這個錯誤的邏輯繼續開發的,到時候修改起來,極可能會牽一髮而動全身。再好比,需求分析沒作好,或軟件架構設計不合理,開發完以後才發現,那代價就會更大。工具

(4)              。。。。。。測試

正文:spa

既然質量這麼重要,那麼管理團隊和開發代碼,才能保證軟件工程的質量呢?下面結合我工做中的一點體會,還有最近讀的一本書《代碼大全2》的一些感悟羅列我認爲比較重要的幾點,也歡迎你們補充。架構設計

一、  質量意識的培養設計

之因此把這點放在第一位,真的是人爲這點是最重要也是最難作到的,可能你本身有質量意識,可是要讓整個團隊甚至整個公司都有質量意識仍是很是難的,首先要創建你們共有的質量價值觀,從企業文化中將質量意識植入人心,否則以中國人的「聰明」老是上有政策,下有對策。因此我認爲意識和價值觀的創建是一切的基礎,有了共同的價值才能更好的執行規則。

二、  有清晰的質量目標和嚮導

   有了意識,還須要有目標,要用清晰可見的目標來推進你們爲質量負責,量化好什麼樣的代碼是質量好的,好比每千行代碼少於多少個bug,bug要根據影響劃分出不一樣級別。質量必定要做爲一個評價研發人員工做或績效的重要因素。

三、 重要的地方請重要的人把關

  假設你如今有一個10個普通級別的人的開發團隊,我建議換成一個1個大牛級別+5個普通級別的團隊,哪怕花5倍的工資請一個大牛,而後要他作核心的框架、系統設計、重點問題公關和保證其餘人開發的質量把控。有些地方若是作的很差修改代價可能會比較小,好比某個程序寫的很差,或某個獨立的功能有問題,可是有的地方代價會很大,好比架構設計不合理,或系統設計有問題。並且如前言所說,軟件開發越是靠前的步驟出問題,帶來的代價就會越大,並且會大的明顯。

四、  編程規範

這點剛工做的時候體會不深,隨着工做的深刻,體會愈來愈明顯,大型軟件的編寫不是一我的的事,定位、修改問題,也不是隻改本身的部分,咱們甚至定位的大部分問題都是老版本和別人的問題,這個時候,若是你們沒有一個統一格式的編程規範,就會很難讀懂別人的邏輯,只能處處罵娘了。並且好的編程規範確實能讓咱們的程序可讀性更好,更少的犯錯誤。

五、  管理好複雜度

人類在同時面臨更多更復雜的東西的時候,每每就會顯得更加吃力,也更容易犯錯誤。一開始部門老大給咱們設定函數圈複雜度標準的時候,我也是有些不解,特別是修改別人圈複雜度很高的函數,有時候甚至是一種負擔,但後來愈加體會到,合理的複雜度確實能要咱們少犯些錯誤,並且定位問題和走讀代碼也會更加清晰。代碼大全的做者甚至認爲軟件的首要技術使命就是管理複雜度。

六、  測試甚至調試以前就要保證代碼質量

不要過度的依賴測試,測試固然很重要,但這是保證咱們質量的最後一道關口,代碼大全的做者也認爲測試不是改進質量的方法,要從代碼源頭進行把控,好的代碼應該不須要調試或不多須要調試的。固然不須要代碼的代碼幾乎是不存在的,可是意識上必定是要這樣的。就比如找到初中那會兒作數學卷子的狀態,交卷以前就要確保本身能得滿分,這樣成績出來即便不是滿分,成績也應該不會差。

確保調試前就有高質量代碼的一些手段:

(1)     使用靜態檢查工具,清除一切警告。

(2)     代碼檢視,這點是必定要作的。首先自檢是必需要有的,而後互檢也能夠開展,對應風險需求,除此以外還能夠會議集體檢視。

七、  嚴格控制修改引入

對於大型軟件項目來講,修改問題引入新問題是一件很是可怕的事,這樣除了讓你的團隊有改不完的問題以外,還很容易把新引入的問題遺留到更後端,形成更大損失,因此修改問題必定要謹慎評估影響,有其餘人把控檢視,測試也要發散測試,總之修改引入是一件很是嚴重的事。

八、  改正bug定位根因,且觸類旁通

首先不能在沒定位出根因的狀況下去規避,由於這樣不只可能解決不了問題,還可能會帶來更大的隱患。不能只改bug自己,要培養髮起排查改進的習慣。

九、  測試都沒有發現的問題必定要回溯

測試是質量的最後一道保障,若是測試都把問題遺漏了,必定要回溯,尋找遺漏緣由,排查改進。

十、 構建自動化測試環境

這點不比多說,若是天天都有自動化在跑測試用例,起碼一些基本的問題不會日後遺留,前面已經屢次提到,越早發現問題,解決問題的代價就會越小。

十一、 改進改進

再好的規則和團隊都有不足,因此更好的辦法就是與時俱進,實時改進,發現不足就及時總結改進,能夠跌倒一次,但毫不在同一個地方跌倒兩次。

十二、更多方法歡迎你們補充

 

 個人博客即將搬運同步至騰訊雲+社區,邀請你們一同入駐:https://cloud.tencent.com/developer/support-plan

相關文章
相關標籤/搜索