qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          軟件質量的分層控制方法

            一、質量的相對概念

            1、多數比較上進的程序員,都希望自己的代碼作品是優雅的、高質量的、別人看到能贊賞不已的。但事實上,緊迫的進度壓力使程序員沒有太多時間思考,匆忙趕出功能后,趕快測試發布趕快交付給客戶。因此有人提出需要重構,有人提出各種測試方法,計算“每千行代碼缺陷率”,以追求“零缺陷”為目標??傊鄶导夹g人員認為“質量越高越好”。這里有個典型例子《養成重構的習慣有多重要》,很有代表性。

            2、現在我們假設一種場景,筷子的質量。

            首先你到了五星級酒店,它的筷子必須是如象牙般優雅,筆直而對稱,沒有任何瑕疵斑點,有合適的重量手感,等等,也就是說五星級酒店對筷子的質量要求是很高的,否則客戶會發飚。

            然后你到了一家路邊的快餐店,順手拿過來一雙“一次性筷子”,拆開后發現毛刺很多容易扎手,甚至筷子有點彎曲,但你還是湊合著用了,或者實在無法忍受就扔掉再拿一把,因為這是在路邊快餐店,用戶對筷子的要求是低的。

            如果你把快餐店的筷子賣到酒店里會發生什么情況?質量太低客人無法接受。如果五星級酒店的筷子賣到快餐店會發生什么情況?用戶不需要那么好,也不愿意付那么多錢。所以同樣做一個筷子,卻對質量有不同要求。

            所以說:質量是相對的。

            3、基于第2點,所以一味追求“高質量代碼”,把“高質量目標”凌駕于“企業贏利目標”之上,是多數技術人員所犯的錯誤。

            二、對質量目標進行逐級分解和控制

            多數成熟度不高的軟件公司會有一定的質量控制方法,但將其用于所有的項目和所有的軟件層面。我認為這是一種資源浪費。適度降低對外圍層次、用戶需求弱相關、使用頻度低模塊的質量控制,會給項目帶來進度和成本上的收益。

            比如下面這個案例。這是一個比較成功的網游公司中,項目代碼分層控制情況

            大家特別注意每個層次的質量要求,從“不使程序崩潰、邏輯正確不使程序崩潰即可”,到“技術總監親自開發測試,不許別人碰里面代碼”分級管理,越是核心部分對代碼質量要求越高,從開發人員的級別/背景/資歷/審核人員級別/測試方法上可以體現出來。而4和5兩層比較外圍的代碼, 只要實現功能就可以了, 我閱讀了這些代碼并在其中開發過一小段時間,里面到處充斥著“壞味道”的代碼,程序員都是邊改邊罵,但這并不影響這個游戲有60萬的活躍用戶和300萬以上的注冊用戶,給公司帶來強勁的現金流。而這套對質量進行分級控制的方法,則是技術總監傳授講解給我的。

            (表格中代碼開放度僅供參考,小公司是輸不起的,看看pudn.com上那些把老東家代碼拿出來開源的人渣就知道了)

            大家知道項目的時間-質量-成本鐵三角, 如果把上面5層代碼的鐵三角列個表格出來,大致如此(我們假設在每個軟件層面投入的成本是一致的)

            越是核心層(1層), 其需要修改的代碼越少,但是對代碼執行的時間和空間開銷越小, 穩定性要求越高. 越外圍的代碼(5層), 針對需求而開發和改動的代碼量越大。選取上表中的1層、5層、平均畫圖來表示是這樣的:

            因此,精益求精、重構只適用于靠近核心的代碼層;而對于外圍代碼層, 由于趕工而導致代碼質量低、放松測試條件,則是完全合理的。

            三、結論

            所以,在做軟件工程的質量控制時,應該把握軟件的關鍵層面,抓住質量控制的瓶頸。橫向而言,就是開發框架、引擎、核心功能之類的層級;縱向而言,就是用戶使用頻率最高的模塊、和競爭對手做差異化競爭的功能等。對于外圍代碼和次要模塊代碼,前者一般不容易出錯得太離譜(被開發框架限制住),后者使用頻度低,則可以適當犧牲質量以求開發速度。

            因此,處于外圍代碼開發的兄弟們就不要成天抱怨、不要提出各種重構要求了。我也曾經在“壞味道”的代碼,確切地說是“糞坑”中撲騰,深知其中感受。但就像魔獸世界里組隊打某些副本BOSS,有的人職責是拉住BOSS的仇恨(拉住客戶),有的人職責是砍BOSS(解決核心模塊),有的人則需要群殺不斷刷出來的小怪(快速開發外圍邏輯)。如果不是這樣的配合,那就會團滅;如果不是這樣的配合,下個月的工資可能就發不出來,不是嗎?

          posted on 2012-07-16 11:04 順其自然EVO 閱讀(164) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2012年7月>
          24252627282930
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 永善县| 松潘县| 三江| 楚雄市| 泸州市| 青铜峡市| 崇信县| 延川县| 出国| 万年县| 靖西县| 萨嘎县| 石嘴山市| 怀来县| 大洼县| 方山县| 南宫市| 丰县| 酉阳| 禄劝| 宜章县| 开平市| 磐石市| 都安| 桂林市| 岫岩| 文登市| 北京市| 辰溪县| 武强县| 济源市| 呼伦贝尔市| 灌南县| 古蔺县| 陇西县| 辉南县| 丰县| 阿巴嘎旗| 信阳市| 上林县| 德兴市|