??? 忽然想到這個話題,是因為讀書、思考、生活的一篇BLOG:代碼質量與文檔質量。當然如果莊子[注1]只是說代碼質量或(比較)文檔質量,我也就不會有什么想法了。可是該文一開始就上升到了“項目質量”的高度,在吸引了足夠的眼球之后,又偷偷的把“項目質量”的概念換成了“代碼質量”。
??? 首先要說的是“項目質量”和“代碼質量”。同樣都是XX的質量,自然具有相同之處,但這相同之處也僅就“質量”而止。無疑代碼是項目產品的組成部分,所以 我們也就把代碼的質量看做項目產品質量的組成部分(注意我們談到項目時實際指的是項目的最終產品,在這里我并沒有偷換概念。)。由此可見,用代碼質量來指 代項目(產品)質量,有以偏概全的嫌疑。
??? 其次是“代碼質量”和“文檔質量”。迄今為止,我還沒有見過沒有任何文檔的項目,事實上文檔也是項目產品的一個組成部分。盡管代碼和文檔在“出品”的時間 上有差別,但最終它們都是項目產品的組成部分。由此我們可以說代碼質量和文檔質量都是項目產品質量的組成部分,在這一點上它們是沒有先后、高低差別的。就 文檔來說,它是人們溝通的工具,本身是不應該做為直接的代碼質量控制工具的。文檔質量和代碼質量之間是平等的關系,不應該顧此失彼。
??? 至于人為因素造成的質量控制上的失誤,根本不應該由某種機制來承擔。Qualified persons do qualified things.
??? 上面所說的僅是莊子一些邏輯上的不嚴密。當然不能反對莊子提出的項目質量、代碼質量和文檔質量,因為任何人工制品都有質量的要求。但從軟件的角度看,這些“質量”都是孤立的,沒有一個完整的產品概念,這些“質量”之間就缺乏聯系,盡管它們對于用戶來說就是一個整體。
??? 通常對質量的研究都是首先把質量本身劃分為多個要素或組成因素,從而希望從多個不同的方面來對質量進行控制。比如把產品質量分為產品移交、產品運行和產品 改進三個方面,對應到軟件又可以進一步分為可移植性、可重用性、可靠性、可用性、性能、模塊性、可擴展性、可修改性等等。
??? 在對質量本身進行分析后,它才形成可指導、應用于生產過程中的原則,從而達到對質量的控制和把握。而一個成熟的過程控制機制,必然已經充分考慮了質量的要 求,并以質量為其最終目標。當我們考慮選擇一個合適的軟件過程控制機制時,也要注意這個問題。
??? [注1]:莊子即讀書、思考、生活。
??? 首先要說的是“項目質量”和“代碼質量”。同樣都是XX的質量,自然具有相同之處,但這相同之處也僅就“質量”而止。無疑代碼是項目產品的組成部分,所以 我們也就把代碼的質量看做項目產品質量的組成部分(注意我們談到項目時實際指的是項目的最終產品,在這里我并沒有偷換概念。)。由此可見,用代碼質量來指 代項目(產品)質量,有以偏概全的嫌疑。
??? 其次是“代碼質量”和“文檔質量”。迄今為止,我還沒有見過沒有任何文檔的項目,事實上文檔也是項目產品的一個組成部分。盡管代碼和文檔在“出品”的時間 上有差別,但最終它們都是項目產品的組成部分。由此我們可以說代碼質量和文檔質量都是項目產品質量的組成部分,在這一點上它們是沒有先后、高低差別的。就 文檔來說,它是人們溝通的工具,本身是不應該做為直接的代碼質量控制工具的。文檔質量和代碼質量之間是平等的關系,不應該顧此失彼。
??? 至于人為因素造成的質量控制上的失誤,根本不應該由某種機制來承擔。Qualified persons do qualified things.
??? 上面所說的僅是莊子一些邏輯上的不嚴密。當然不能反對莊子提出的項目質量、代碼質量和文檔質量,因為任何人工制品都有質量的要求。但從軟件的角度看,這些“質量”都是孤立的,沒有一個完整的產品概念,這些“質量”之間就缺乏聯系,盡管它們對于用戶來說就是一個整體。
??? 通常對質量的研究都是首先把質量本身劃分為多個要素或組成因素,從而希望從多個不同的方面來對質量進行控制。比如把產品質量分為產品移交、產品運行和產品 改進三個方面,對應到軟件又可以進一步分為可移植性、可重用性、可靠性、可用性、性能、模塊性、可擴展性、可修改性等等。
??? 在對質量本身進行分析后,它才形成可指導、應用于生產過程中的原則,從而達到對質量的控制和把握。而一個成熟的過程控制機制,必然已經充分考慮了質量的要 求,并以質量為其最終目標。當我們考慮選擇一個合適的軟件過程控制機制時,也要注意這個問題。
??? [注1]:莊子即讀書、思考、生活。