從生產管理角度檢視軟體品質的責任

更新於 2023/08/22閱讀時間約 7 分鐘

最近常在思考,軟體開發的品質到底是什麼,我們能承擔的品質出問題的風險有多大?在軟體開發過程,無論你是走Scrum或是DevOps的開發流程,都希望交付出來的軟體品質是好的,因此,每當談軟體開發中的測試種類就包含這些議題

  • TDD
  • 自動化測試
  • 測試左移
  • 增量測試
  • 整合測試
  • UI測試

在DevOps也透過不斷持續性高頻率的佈署降低系統問題帶來的損害。不過,我認為這些都是在軟體工程面的手法。說穿了這些責任其實都是落在工程團隊(在DevOps中QA人員是併在工程團隊),換句話說一旦出事情都會是在工程團隊身上,但是,對於品質這個範疇真的只有工程團隊責任嗎?或許我們從工業工程在生產製造過程對於品質的角度來看軟體開發品質這件事情

品質工程

品質管理這個詞最早是被運用在生產製造領域,也因此針對品質管理開始有了這種手法,例如:TQM、SPC、品管七大手法、六個標準差…等等。而對於品質定義是

  • 品質是適合使用
  • 品質是符合要求或規格
  • 品質是在競爭的價格下,滿足顧客的需要和期望
  • 品質是產品出廠後,對社會所造成的損失
  • 品質是精準

也因為這樣所以在生產製造過程中,總是會針對品質訂定許多指標避免不良產品流入到市場。當然,也因為這樣要維持一個好的品質產出,也不是一種佛心事業,要有好的品質,伴隨而來就是要投入一定的品質成本:

  • 鑑定成本(appraisal cost) : 投入於檢驗、測試及發掘不良等所花費之成本
  • 預防成本(preventive cost):為了防止不良產品(或服務)發生所支出之成本
  • 內部失敗成本(internal failure cost) :指產品、零件或物料交給顧客之前就發現未達到顧客之品質需求條件所造成之費用
  • 外部失敗成本(external failure cost) :將產品運交顧客之後,因為發生不良品或被消費者懷疑為不良品所支出之成本

其中,預防成本與鑑定成本係發現不良品之前的成本,稱為事前成本,而內部及外部失敗成本是發現不良品之後的成本,稱事後成本。事前成本是企業比較好控制的一環,大多數企業會盡量讓事前成本和品質水準達到一定的平衡點,所以,不可諱言的當你需要有一定品質,就是必要投入一定的成本與時間。

如果,換到軟體開發角度上,大多數的決策者或是需求者,卻往往不這樣認為,認為用原有成本與時間就可以達到良好的品質。在軟體開發過程的原有成本就變是原本的開發人力,時間就是能完成一個能動功能的時間。要在這些不變情況下提升軟體品質,這是多麼不可思議的事情。

再者,製造生產是可以透過複製多條生產線來攤平品質成本帶來的影響,這是取決於每條生產線是可以生產相同產品,產生出相同價值而攤平成本。但是軟體開發可以嗎?從這下面這張圖來看

raw-image

軟體開發真正能Repeating相同開發相同程式碼是不太可能。舉例來說同樣都是開發Web的查詢功能,不同需求背後串接的API也不一定相同,User想要的介面與行為也不同,看似相同其實是有差異性。就像是製造一台Toyta和一台BMW,同樣都是做一輛車,但是背後的生產流程也是不同。絕對不可能用同樣生產線可以同時生產Toyta和BMW。因此,對於每一次開發來說,不同需求,換言之就等於是一條新開的產品生產線,是需要投入相對等值的品質成本才能確保品質。不會說之前做過或是這只是小修改,這樣就不會出錯之類的幻想

可靠度工程

談到品質工程中,又往往會講到可靠度,當然在軟體開發中,軟體品質與系統可靠度往往都會被列入同等考量或是相同定義。而在可靠度工程中,最有名的就是所謂的浴缸曲線,且失效時間(MTTF)與失效率則是在可靠度工程中兩個觀察指標

raw-image

一般來說產品製造談到的可靠性,首先談論的會是先期的設計的可靠性,在設計的可靠性,它會具有下列幾點要素

  • 產品可靠性決定於設計階段
  • 產品可靠性必須由團隊共同負責,包括設計、製造、品管、採購等部門成員
  • 製造過程只能依設計之可靠性來滿足其特性,並無法透過製程來提昇可靠度水準
  • 品質管制只能依現有的製程水準控制在穩定的狀態,它也無法提昇可靠度水準。

如果換成軟體開發要素來看

  • 系統可靠性決定於需求階段
  • 系統可靠性由團隊共同負責,包括談需求者、開發者、測試人員、SRE等成員
  • 開發過程只能依需求可靠性滿足其特性,並無法透過開發者能力提升可靠度水準
  • 測試只能控制系統品質能符合需求水準,也無法提升可靠度水準

為什麼我認為可靠度的浴缸曲線其實跟軟體開發很相似。在軟體開發早期,一定會遇到許多bug,所以,會透過不斷測試與修正,達到一定穩定後交付給用戶使用,基本來說User使用的階段所遭遇到失效率是相對低的。

而當系統運行一段時間,難免會因為資料的增長、流量增加或是元件或語言版本的過時,造成一定系統失效機率,一種比較常發生案例就是用的元件有問題,但因為版本過舊,現在也無法被Support與修改,就會走向老化失效

raw-image

而大部分架構規劃不錯,且有不斷投入維護資源,該系統就會比較偏向早期失效,發生老化失效時間就會被拉長。我們可以發現一件事情,不管可靠度工程與品質工程如何運用,都不可能讓一個產品達到0失效又或是所謂SLA為100%(能到達99.99995 %之類,是需要投入相當多成本?)

試想,如果今日需求設計不斷變更,要求時間更短,而其餘條件不變情況下,發生系統失效率與失效時間又會有多大呢?

軟體品質

曾記得有一個老前輩跟我說過品質是做出來,後來才理解,真正含意則是

品質是「設計和製造」出來的,不是檢查出來的

軟體設計來自於需求面,軟體設計來自於開發面。這兩者絕對會是屬於1+1的類型,如果當前者為0,無論是哪種優秀開發者也無法讓1+1變成2。而當產品(需求)不斷變更設計,生產線(開發者)可以立即就生產(開發)出高良率的產品(系統)。

在敏捷的時代與快速變化的市場,當然不可能說一切需求都是很明確才能開始開發,這樣似乎也跟不上時代(市場)潮流。因此,當我們都在追求時間與速度的同時,則會讓X和Y變成一種不可控的變數,那就必須評估X+Y所產生風險是否是大家能承擔,而承擔這個責任絕對不只有一方的責任。而是從需求到開發過程的成員都必須共同承擔這項責任

有時候,我自己也很好奇在製造業中對於如何產生出高品質與高可靠性的思維都相當充分與理解,但是面對於軟體開發(生產),卻可以自動忽略這些層面。

我認為會影響軟體品質好壞的因素是相當多,包含:

  • 需求透明度
  • 需求準確度
  • 時間成本
  • 人力成本
  • 架構/程式設計
  • 測試

測試工程其實只是軟體工程一部分,但是,卻有許多認為只要測試好,就能一定達到SLA 100%,如果達不到,就一定測試沒做好或是開發者能力問題。此外,也因為在軟體開發過程中,品質成本支出並不會在財務報表上記上一筆,也讓人往往忘記軟體品質提升也是需要有相對應成本

我想在軟體開發品質上我們也因該從另一個角度來看待這項事情,才能在平衡各項因素下,做到我們所能承擔風險的軟體品質。而不是在理想幻想品質就會自動產生,再者,現在軟體開發複雜度已經比以前高很多,挑戰也是,想要用以前標準與思維是行不通的。而在現實場域也常常遇到,需求者在沒有與開發者相互溝通下,自認為一個小小需求異動或是功能變更,只是一個很簡單事情,有這樣思維是相當可怕,這樣其實不僅破壞整個團隊效率也破壞整體系統可靠度。例如:想要在報表多一個欄位,看似web直接加一個來欄位就可以,而這欄位是原本沒有被設計的(需求沒提到),其實修改部分簡單看來就必須從Web →API →SP →Table,更別說是資料來源要怎樣處理?資料要如何寫入?是否有其他外部系統也在使用也需要修改?Index是否需要?強行別Model異動修改…等。而只是被認為只要加一個欄位就好。尤其,當今日我們期望系統做得越彈性功能越強大又能串接更多資料或是平台的同時,其相對架構也越複雜了。

在硬體思維下,金錢是很容易被衡量,但是軟體往往花費是人力與心力,因為無形,所以自然就被認為理所當然,也就忽略其成本效益

avatar-img
6會員
11內容數
沒有最完美架構、只有最適合情境的架構、好的架構是需要不斷迭代
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
EK.Technology 日常 的其他內容
DevOps這個名詞,這幾年在台灣被討論次數有越來越高的趨勢,也發現想要導入或是開始進行DevOps的企業,也從過去的網路公司的產業、電商產業或是軟體資訊業,慢慢吹向到傳統企業與製造業的資訊部門。 我在一些非資訊相關產業的場子上,聽到很多企業主管說想要開始導入或是了解DevOps,再加上去年也剛好
隨著雲端概念越來越普及,Azure 作為一個雲端平台,已逐漸演變成為一個高度複雜的架構。早期的 Azure 概念是讓使用者在雲端上開啟所需的資源並建立相關的服務,同時也不需要自行建構機房等基礎設施,因此具有相當的優勢。但是隨著時間的推移,雲端的應用也越來越廣泛,因此 Azure 也提供了許多指導方式
這陣子一直在看AI對整個產業影響,但大多數我們可以看到都是偏向雲端或是服務器端的影響相對是第一個被沖擊的,所以,相對應的硬體成長也隨者這一波帶動不少成長。不過,我更好奇是否有機會AI也可以在Edge進行訓練與應用。因此,整理一些看過的內容。會許不久將來我們也許可以看到,說不久也可能不會太久
DevOps這個名詞,這幾年在台灣被討論次數有越來越高的趨勢,也發現想要導入或是開始進行DevOps的企業,也從過去的網路公司的產業、電商產業或是軟體資訊業,慢慢吹向到傳統企業與製造業的資訊部門。 我在一些非資訊相關產業的場子上,聽到很多企業主管說想要開始導入或是了解DevOps,再加上去年也剛好
隨著雲端概念越來越普及,Azure 作為一個雲端平台,已逐漸演變成為一個高度複雜的架構。早期的 Azure 概念是讓使用者在雲端上開啟所需的資源並建立相關的服務,同時也不需要自行建構機房等基礎設施,因此具有相當的優勢。但是隨著時間的推移,雲端的應用也越來越廣泛,因此 Azure 也提供了許多指導方式
這陣子一直在看AI對整個產業影響,但大多數我們可以看到都是偏向雲端或是服務器端的影響相對是第一個被沖擊的,所以,相對應的硬體成長也隨者這一波帶動不少成長。不過,我更好奇是否有機會AI也可以在Edge進行訓練與應用。因此,整理一些看過的內容。會許不久將來我們也許可以看到,說不久也可能不會太久
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
已經在成熟路上的AI人工智能及或許未來的常溫超導體,也是屬於科技突發的躍進,AI已經可以減少人力的使用,而常溫超導體如果誕生則可以大幅提升能源使用的效能。都能夠增加總要素生產率(TFP),進而提升全人類的總生產。
Thumbnail
在現代數據驅動的商業環境中,企業不斷尋求有效的解決方案以應對日益複雜的生產環境。科技的進步讓我們有機會利用更精確的數據進行監控和管理生產流程。因此,即時監控生產活動、使用數據分析來支持決策的系統已成為現代企業提升效率和減少風險的重要趨勢。這種趨勢不僅提升了生產過程的透明度,也提高了快速、準確決策的可
Thumbnail
關於生產,許多女性都是抱持著戒慎恐懼的態度,也有些女性因為擔心生產的疼痛而對懷孕一事卻步,回想過往總會聽到有生產經驗的女性分享生產的感覺就像是被火車輾過,聽起來真的非常驚悚,但是理性思考一下怎麼可能會真的知道被火車輾過是什麼感覺呢?所以在我自己生產之前仍舊無法體會那是什麼樣的感覺,只是一心想著屆時到
Thumbnail
以前都聽說生產很痛,但你只要看到寶寶 一切都會值得這樣的話。實際經歷整個從陣痛、宮縮到寶寶落地的生產過程,對我來說喜悅感其實持續被覆蓋著。更多時間,更像是同時擔心自己另一半跟小孩狀況的煎熬。
★把消極的孤獨轉換成積極的孤獨,把一個人獨處的時光視為更正面、更有意義的存在。 ●我覺得真正問題出在,煩惱自己變得孤獨。 ●一個人的時候,不等於孤獨。不管跟誰在一起、不管處於什麼狀態,只要你內心覺得孤獨,那就是孤獨,因為孤獨是感覺問題。 ●孤獨的七大效用: 3.看見生存方式,也就是該怎麼活著。
Thumbnail
我以為的生產是件快樂的事,家裡有了新成員,對這個新生命的到來應該是充滿期待。 臺灣有句俗諺,「生得過雞酒香,生不過四塊板」,比喻婦女生產的艱辛及危險性。如果生產順利就可以吃雞酒坐月子;若是不幸難產死亡,則必須準備棺材辦後事了。
Thumbnail
Green Book ,在電影中是一本黑人旅遊專用的綠色小本子,上面記載一些黑人友善的旅館或餐廳。1960年代,對於黑人的歧視還很嚴重,謝利博士(Don Shirley)是一位黑人音樂家,而且他還有數個博士學位;托尼(Ton
Thumbnail
你也有相同的經驗嗎?巷口有兩間賣甘草芭樂的移動攤位,其中一攤大排長龍,另一攤門可羅雀,根本討厭排隊等待的你,卻還是乖乖地加入長長的隊伍,且不斷自我催眠,這家一定比較好吃,不然怎麼會那麼多人。 什麼是從眾心理呢?
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
已經在成熟路上的AI人工智能及或許未來的常溫超導體,也是屬於科技突發的躍進,AI已經可以減少人力的使用,而常溫超導體如果誕生則可以大幅提升能源使用的效能。都能夠增加總要素生產率(TFP),進而提升全人類的總生產。
Thumbnail
在現代數據驅動的商業環境中,企業不斷尋求有效的解決方案以應對日益複雜的生產環境。科技的進步讓我們有機會利用更精確的數據進行監控和管理生產流程。因此,即時監控生產活動、使用數據分析來支持決策的系統已成為現代企業提升效率和減少風險的重要趨勢。這種趨勢不僅提升了生產過程的透明度,也提高了快速、準確決策的可
Thumbnail
關於生產,許多女性都是抱持著戒慎恐懼的態度,也有些女性因為擔心生產的疼痛而對懷孕一事卻步,回想過往總會聽到有生產經驗的女性分享生產的感覺就像是被火車輾過,聽起來真的非常驚悚,但是理性思考一下怎麼可能會真的知道被火車輾過是什麼感覺呢?所以在我自己生產之前仍舊無法體會那是什麼樣的感覺,只是一心想著屆時到
Thumbnail
以前都聽說生產很痛,但你只要看到寶寶 一切都會值得這樣的話。實際經歷整個從陣痛、宮縮到寶寶落地的生產過程,對我來說喜悅感其實持續被覆蓋著。更多時間,更像是同時擔心自己另一半跟小孩狀況的煎熬。
★把消極的孤獨轉換成積極的孤獨,把一個人獨處的時光視為更正面、更有意義的存在。 ●我覺得真正問題出在,煩惱自己變得孤獨。 ●一個人的時候,不等於孤獨。不管跟誰在一起、不管處於什麼狀態,只要你內心覺得孤獨,那就是孤獨,因為孤獨是感覺問題。 ●孤獨的七大效用: 3.看見生存方式,也就是該怎麼活著。
Thumbnail
我以為的生產是件快樂的事,家裡有了新成員,對這個新生命的到來應該是充滿期待。 臺灣有句俗諺,「生得過雞酒香,生不過四塊板」,比喻婦女生產的艱辛及危險性。如果生產順利就可以吃雞酒坐月子;若是不幸難產死亡,則必須準備棺材辦後事了。
Thumbnail
Green Book ,在電影中是一本黑人旅遊專用的綠色小本子,上面記載一些黑人友善的旅館或餐廳。1960年代,對於黑人的歧視還很嚴重,謝利博士(Don Shirley)是一位黑人音樂家,而且他還有數個博士學位;托尼(Ton
Thumbnail
你也有相同的經驗嗎?巷口有兩間賣甘草芭樂的移動攤位,其中一攤大排長龍,另一攤門可羅雀,根本討厭排隊等待的你,卻還是乖乖地加入長長的隊伍,且不斷自我催眠,這家一定比較好吃,不然怎麼會那麼多人。 什麼是從眾心理呢?