Code inspection 的代價

除了動態測試(執行程式來檢驗是否正確)以外,靜態的檢視也是非常重要的測試方法。檢視的對象可以是 code, 設計文件、需求文件等。當檢視的對象是 code, 我們稱之為 code inspection,一般而言有以下的角色:
  • 撰寫者 (owner):程式的撰寫者
  • 檢視員 (inspector) :檢視程式的錯誤,通常都是較為資深或領域專家
  • 速記員 (scriber):在檢視會議中幫忙記錄
  • 主席 (chair/moderator):仲裁與協調會議的進行
在分工比較細的組織中,甚至還有報告者,但可以撰寫者來兼任。靜態檢視可以分為幾個步驟
  1. 簡介 (Overview): 由撰寫程式者向所有的檢視者簡介系統內容
  2. 獨立準備 (Individual Preparation): 每個 inspector 獨立的閱讀與檢視程式碼,並將疑問處圈選出來,預備在會議上討論
  3. 檢視會議 (inspection): 檢視程式碼
  4. 追蹤 (follow up): 修正會議上所找出來錯誤,並持續追蹤
依照 Sommerville 書上的資料顯示,簡介、獨立準備、檢視會議 的速度分別是 500, 125, 90 statement/hour, 假設我們完成了一個 1,000 statement 的程式碼,檢視員有 2 位,請問一次 code inspection 花公司多少錢?值得嗎?(請假設每個員工的薪水)。有興趣的大家一起算算吧!

留言

  1. 定位資深領域專家

    400/hr (1人月薪約70000元)
    檢視1000 statement 總共要花
    21hr * 2人

    42hr * 400=16800元
    1000行的程式碼 可能賣不到這價錢
    除非專家的行情壓低 或是 程式碼的質量
    達到高價位,要不然不太划算

    而且 程式碼量越多,所花的時間不會等差
    增加,可能會以多倍增加的方式上升

    反之亦然,但
    程式碼很少可能就不需要經由這個過程

    milua

    回覆刪除
  2. 今天假設一個專家時薪300大洋(很便宜了吧?)

    整個過程要跑21小時-兩個人就要花12600元

    而試想1000行的程式能有多少價值呢?

    姑且不論設計師的薪水

    以常聽到的笑話-程式五行一元來說

    1000行的程式也不過200元

    我想沒有老闆會幹這種蠢事

    我想到幾個問題

    1.程式的價值被低估-台灣人對於看不到的東西都覺得沒有價值

    2.怎樣的程式需要這樣謹慎的檢查-除非是牽扯到安全問題的ISSUE(像軍方),才有可能這樣子檢查,想當初美國程設這樣發達我想也跟軍方出資有關係。

    回覆刪除
  3. 最近一段時間有幾篇文章談論測試的相關問題,尤其薛文的『Code inspection的代價』一文,讓我又想到MDA技術,事實上,利用MDA發展軟體也須要測試,不過是在測試「模式」是否符合需求,因為程式是自動產生,而且程式是由模式(PIM)自動轉換而來,這就符合軟工發展的歷史,即:不斷提升軟體發展的抽象度,當然自動產生的程式如不能100%符合需求,發展者亦可依其須要增減程式,但一般而言數量很少,在我看,似乎不必大陣仗做如此煩冗的code inspection。當然MDA尚有一些問題待解,例目前的UML(包括OCL)寫成的模式是否能充分代表需求(有人提出使用domain-specific lanaguage),以及程式自動轉換是否完整等等都是MDA的 issues。

    回覆刪除
  4. 就我所知,code inspection 的使用時機有兩個:一是協助 debug (自己就是看不出來自己寫的一小段 code 中到底錯誤出在那裡,只好求助他人,所謂旁觀者清也);另一則是這一段 code 太重要,為了降低險,多找幾個有經驗的人一起看。

    一次檢視的範圍大約是 100~200 行 code 而已,人不是電腦,耐性不足,超過一兩個小時的檢視會議就不再有檢視的效果,有時人多更沒用,因為會相信別人可以看出錯誤在那裡而自己開始打起瞌睡來。

    檢視專家的時薪不會只是 NT$300 的啦,麥當勞工讀生的時薪都是 NT$100 了,所以搞軟體的還在那接兩萬塊的 case 的話,可能是永遠翻不了身的。雖然很多人會想,在台灣寫軟體可能也不需要有 code inspection 的過程,但一旦有機會,我建議你開價 NT$3000 試試看。

    黃教授一直在提倡推動 MDA,我們不妨把 code inspection 的作為提昇到以 UML 為基礎的 high level code 上,一方面傳承軟工的品質精神,一方面也可在高階提昇生產力。希望有一天,這種 code inspection 的價值會達到時薪 NT$30000 的。

    回覆刪除
  5. 劉教授提議:「不妨把code inspection的工作提昇到以UML為基礎的high level code‧‧‧」,這就是所謂Agile MDA,即視excutable model為基本artifact的觀念。誠如劉教授所言:「在台灣寫程式可能也不需要有code inspection的過程」,其實code inspection仍然須要,只是要inspect是模式,而不是程式語言寫成的程式,如果有一天台灣真能達到這種境界,台灣的軟體工業將可能顯現出另一種面貌,甚至「胎換骨」也說不定,這樣說不知對不對,誠徵專家指教,不過劉教授的「可能」值得探討。至於時薪400或30000本人算術不佳倒無從評價。

    回覆刪除

張貼留言

這個網誌中的熱門文章

CMMI是什麼?

CRC cards - 非正規物件導向發展技術