看板 Soft_Job 關於我們 聯絡資訊
※ 引述《semop (semop)》之銘言: : 標題: Re: [心得] 為什麼軟體開發者需要在意軟體品質指標 : 時間: Sun May 27 14:15:10 2012 : : ※ 引述《guest2008 (guest)》之銘言: : : 直接開新回文 : : 1. test case 是否有必要: : : 回想了一下,根本不需要像 T 大一樣大力鼓摧,那個真的就是類似摩托車跟汽車 : : 的關係,摩托車跟汽車都可以到達目的地,你認為摩托車真的會比汽車慢嗎?? : : 錯!有時候車子塞車,或者找不到停車位,或者xxoo各種因素,結果都是摩托車 : : 先到。 : : 摩托車跟汽車都是可以到達終點的,要看狀況去選擇交通工具,而不是一意的說 : : 汽車就是比較好。而且汽車真的成本比較貴,且貴太多了。 : : 結論:請先斟酌專案狀況,不需特別的去擁護 test case 的建立或提出議聲。 : : 其實反過來說,如果要製作高品質的軟體,測試反而不是重點。 : : 完善的軟體架構,特別是內建的驗證、確認和錯誤處理程序,才是最基本的工夫。 : 所有支持測試的論點,都可以用在軟體架構的完善之上。 : : 比較極端的時候,這部分可以佔到程式碼的三分之一,就是要追求任何問題, : 都不能延遲到問題發生的地方之外,才發現和處理。 : : 所有系統問題都有內建的錯誤處理,所有輸出入都有內建的資料驗證, : 所有操作流程都有內建的狀態檢查,所有程式碼都要經過人工的 code review... : : 嚴謹的開發過程,本身就是最佳的軟體品質增進辦法。 : : 這時 test case 的必要性就非常低了,例如資料輸入都已經統一經過驗證程序了, : 再餵入擺明通不過驗證的資料,有什麼意義呢? : : 以前的程式設計就是這樣的,完全不做外掛的自動化測試程式, : 有什麼需要檢查的地方,就通通寫入程式當中,除非是一定要人工判讀的結果, : 但那就表示軟體的設計本身就有問題,才會輸出這種東西。 : : 現在有些人提倡 test case, 是為了要快速開發卻又要減少 debug 的不確定性, : 所以付出一定的檢測成本來達成這個需求,但並不是所有狀況的最佳做法, : 主要是應用在商業系統開發和維護上。 : : 而在目前輕量級的軟體形成潮流,且相當重視創新價值的時候, : 由於軟體價值的不確定性高,軟體可能非常有價值,也可能一文不值, : 就又出現完全不搞測試的做法,先儘可能用最低成本快速開發, : 確定軟體具有商業價值,再投入較高成本重寫有較高品質的新版本, : 就是另一套很多人提倡的新做法了。 : : 總之,歷史上從來沒有任何一個軟體方法,適用於所有的可能狀況, : 這就是所謂的 "No Silver Bullet" 的原則了,要提倡什麼方法都好, : 但請先確定適用的領域和前提,不要太過度相信特定的軟體工程方法了。 : : : -- : ※ 發信站: 批踢踢實業坊(ptt.cc) : ◆ From: 218.174.32.74 : 推 Ting1024:是阿,不用太過趕流行。實實在在建構比較重要。 05/27 14:33 : 推 thinkniht:我很好奇一件事情 你碰過的專案中... 05/27 15:10 : → thinkniht:有實現過"完善的軟體架構"嗎??? 05/27 15:11 : : 有的,至少在 service system 或 network service 這一塊, : 很需要在考慮得到的範圍內,完整地把軟體架構做好,不能依賴測試來填補問題, : 沒做好就有很大的機會垮掉或出包,沒有太多僥倖的空間, : : 大部分開發系統核心或關鍵技術的案子,對於穩定性和安全性要求通常都很高, : 甚至會比效能還重要,基本上就是需要做到這樣子的。 : : 雖然技術領域的軟體開發,已經幾乎沒有年輕人在做,但這還是很需要有人做的。 : : 推 thinkniht:再請問一下..."技術領域的軟體開發"是甚麼意思啊 05/27 16:40 : : 嗯... 大致上就是系統程式設計、軟體技術研發、需要用到冷門技術的軟體開發, : 和科技相關的應用吧,或者可以說是"比較有技術性"的程式設計了。 : : ※ 編輯: semop 來自: 218.174.32.74 (05/27 17:09) : 推 guest2008:thinkniht:你有沒有用過廠商給的API來寫APP?如 google的 05/27 17:54 : → guest2008:API還是券商的API..還是機台的API..這些都算系統程式 05/27 17:55 : → guest2008:打錯..是"技術領域的軟體開發"..另外廣義的講會更多 05/27 17:59 code review 要有程式能力夠強的資深同事才行 但通常這樣的同事也很忙 就算一開始開發的時候會看一下 等之後程式要做一些修改時 不可能一直做code review 有沒有可能越改越爛呢? 我是看過越改越爛的啦 所以啦 我相信code review可以提升品質 但是公司是否真的願意支付這個成本 會是很大的問題 內建驗證的部份 如果是檢查資料異常那當然是OK 但如果單純是為了看程式有否異常而做的檢查 那似乎是沒有必要放在release版本中的 正常程式的錯誤應該在上線前就處理才對吧一.一+ 而且這種做法 很可能會讓驗證跟程式的業務邏輯綁在一起 這樣的程式我想應該不好維護吧... 我認為程式如果設計得不好(耦合性太高) 會很難做單元測試 開發新東西時 要是真的就抱持著程式能跑就好 不管可測試性的話... 之後要做單元測試...困難度會高一點 (謎之音:真的只有一點而已嗎XD) 以下是跟主題沒太大關係的話題: 我目前寫的程式...是碰不到UI與資料庫的 技術上...我覺得也沒甚麼技術 (用到的技術呢 相信很多版友都會用) 主要就運算邏輯複雜點而已 我不知道算不算你所謂的"技術領域的軟體開發" (所以我才會特別問) 但我想算是軟體產品的核心之一吧... 單元測試...有時候非做不可啦 不然UI和資料庫的資料都沒好... 我怎麼驗證我的程式可不可以跑XD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.42.225.173