永無終點的旅程——軟體質量

袁野發表於2012-05-29

人們常常把軟體質量看做是最終的結果或終點。事實並非如此,這是一段永遠都沒有終點的旅程。在測評和管理質量時,你就會對此有更清楚的認識了。每一步質量改進都會為下一步質量改進提供所需的知識、經驗以及資料。因此,應當聚焦於持續不斷的質量改進,並且幫助你的專案團隊成員真正相信並且遵循這些質量管理原則。由於每個人的需求都會有所不同,你必須要清醒地認識到專案團隊中每一位開發人員在這段旅程中所處的階段,並在此基礎上幫助他們所有人更進一步。這段質量旅程中的階段有以下幾個:

(1) 測試並更正。起初,幾乎所有的軟體開發團隊都是把精力集中於讓產品能夠工作。開發人員的目標是盡一切可能讓產品儘快進入測試環節,接下來就是測試、更正(之後還是測試、更正、測試、更正……),直到軟體工作良好,足以交付給使用者為止。在這一階段,專案組成員所知道的提高質量的唯一方法就是在測試上花費更多的時間和金錢。在這一階段,你要想方設法儘快讓專案團隊進入旅程的第2至第8階段。

(2) 檢查。接下來的階段就是,開發者和管理者在測試之前就開始消除缺陷,這通常需要進行各類走查和檢查。這一階段最典型的挑戰是如何讓開發人員以正確的方式完成所有需要的檢查。

(3) 區域性測評。當檢查程式成熟之後,一些團隊開始著手進行測評,並且使用檢查得到的資料一方面來改進檢查過程,另一方面把檢查聚焦在最具破壞性的產品缺陷上。這一階段面臨的挑戰是如何得到足夠的資料並利用這些資料改進產品。

(4) 質量到人。當開發人員參加檢查後,他們對自己所犯的錯誤將會變得更加敏感,而且他們會提前審查自己的工作以儘可能地消除類似錯誤。一旦開發人員能這樣做,他們的產品質量將會迅速地提高。

(5) 個人測評。要想提高個人工作質量,開發人員需要客觀的資料,他們需要了解自己引入及消除的缺陷、產品的規模以及他們花費的時間。這一階段面臨的挑戰是如何讓他們收集這些資料並加以利用。當開發人員開始研究關於那些在檢查、測試階段以及終端使用者都沒有發現的缺陷的資料時,產品質量會再次得到迅速提高。

(6) 設計。一旦開發人員學會了管理他們的編碼缺陷,他們就可以開始關注設計缺陷。這需要精確的、定義良好的設計規範和正確的設計確認方法。這一階段面臨的挑戰是如何對所有大大小小的程式使用正確的設計方法,以及如何在所有的設計檢查和個人設計審查中運用正確的設計確認方法。

(7) 缺陷預防。運用正確的設計和測評方法後,引入的缺陷數量將會大大降低,與之前相比大約會降低一半。但更進一步,有效的缺陷預防程式通過結構化的步驟確認過程問題,並在需要時對過程進行調整以消除更多的缺陷。這一階段面臨的挑戰是如何引入缺陷預防程式,進而對其進行維護和擴充,從而覆蓋產品的整個生命週期。

(8) 基於使用者的測評。最終,質量評估過程應當是由基於使用者的質量測評來驅動。這時面臨的主要挑戰是如何理解那些對使用者來講最重要的質量特徵,並且使用一種對你以及對使用者都有意義的方式來測評這些特徵。

美鋁公司的一位行政高管曾經邀請我參觀了他們的一個鋁平板製造工廠,他說這家工廠生產的是全世界質量最好的鋁平板。在與現場的工程師交談的過程中,我驚奇地發現他們的質量測評與鋁平板的生產無關,而是測評用鋁板製造的罐子。舉個例子來說,鋁材越厚,那麼罐子的成本就越高。但是鋁材越薄,鋁平板中的缺陷就越可能導致代價高昂和耗費時間的“洞穿”現象,從而會中斷整個生產。美鋁公司是鋁平板市場的領先者,這主要得益於他們的產品質量非常好,用他們公司生產的鋁材可以把罐子做得更薄。

質量提高的旅程永遠沒有終點,這個例子就很能說明問題。只要技術還在不斷進步,並且這種進步能引起新的和不同型別使用者的興趣,我們就會面臨新的質量需求。以上8個階段的質量旅程中反映出的最主要資訊是必須要循序漸進。開發人員在第5階段取得合理進展之前,他們不可能有足夠的資料來支援進行第6、7、8階段。因此,既然要用一種更長遠的目光來看待軟體質量,你就應該讓你的團隊把注意力集中到這段質量旅程中的下一步。 ——摘自《軟體管理沉思錄:SEI的專案管理、人際溝通和團隊協作要訣》

enter image description here

相關文章