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

更新於 發佈於 閱讀時間約 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
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
品質成本完整解析與全球實踐指南 🌟 目錄 品質成本的基本概念與重要性 品質成本的分類與範疇 如何衡量與分析品質成本 品質成本對企業競爭力的影響 降低品質成本的策略與工具 世界級企業實例分享 🌍 品質成本與可持續發展的結合 數位化與大數據在品質成本管理中的應用 📊 如何建立高
品質問題案例實際操作 品質問題是企業在生產和運營過程中無法避免的挑戰,尤其是在製造業、服務業或其他注重客戶滿意度的行業中。以下是一個基於 大數據分析 和 品質管理方法 的實際操作案例,旨在揭示如何有效識別、分析和解決品質問題。 案例背景 假設某家電子產品製造公司,專注於生產高品質的消費電子產品
AI:品質管理的智慧引擎 一、AI 品質管理的廣闊領域 AI 技術在現代企業的品質管理中,扮演著智慧引擎的角色,其應用涵蓋了 缺陷檢測、預測性維護、統計程序控制(SPC)、品質保證、自動化檢查等多方面,不僅提升了產品品質,也顯著提高了生產效率,降低了運營成本。 二、AI 在品質管理的核心應
Thumbnail
「所以,你想要用A框架,但又覺得B框架也不錯?」David挑眉問道,一臉的疑惑和一絲不易察覺的笑意。 .... David神秘地笑了笑,「技術選擇可不是簡單的喜好問題,它牽扯到技術轉移的成本、技術負債的累積,還有整個團隊的長期發展。先來聽聽我的想法吧。」
Thumbnail
產品開發的成功,除了品質,更在於是否能夠在適當的時程內推出並滿足客戶需求。 身為開發、設計人員,從文中提供的三個角度來思考,以確保產品與公司的競爭力。
Thumbnail
相較於接案公司,說到自有軟體產品的企業,普遍大家會自動套上粉紅濾鏡,覺得產品公司就是比較好,不像接案毛利低、又常常有時程壓力。 在網路上也可以找到各式各樣的文章告訴你接案公司的各種地獄故事,覺得如果有選擇的話,可以做產品就不要接案,就連以前的我也都有一顆產品夢。 但事實真的是這樣嗎?
Thumbnail
在導入食品安全管理系統國際標準一段時日後雖然制度有了,但總覺得運作上卡卡的,客戶抱怨內容似乎也未見明顯改善,應該是探討如何有效培養員工對於食品安全危害與風險意識的時間已到來。食品安全是一個至關重要的議題,直接關乎企業的聲譽、顧客的信任以及最終的業績,為了確保食品安全,全體員工都應該參與
為了確保業務的持續成長和市場競爭力,管理團隊必須定期評估資材管理流程的效率和成本效益。這涵蓋了對現有供應鏈策略的詳細審查,檢測技術的更新,以及內部流程的改善。通過這樣的評估,企業可以確定改進的領域,從而提升操作效率,降低成本,並增強其對市場變化的適應能力。
Thumbnail
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
品質成本完整解析與全球實踐指南 🌟 目錄 品質成本的基本概念與重要性 品質成本的分類與範疇 如何衡量與分析品質成本 品質成本對企業競爭力的影響 降低品質成本的策略與工具 世界級企業實例分享 🌍 品質成本與可持續發展的結合 數位化與大數據在品質成本管理中的應用 📊 如何建立高
品質問題案例實際操作 品質問題是企業在生產和運營過程中無法避免的挑戰,尤其是在製造業、服務業或其他注重客戶滿意度的行業中。以下是一個基於 大數據分析 和 品質管理方法 的實際操作案例,旨在揭示如何有效識別、分析和解決品質問題。 案例背景 假設某家電子產品製造公司,專注於生產高品質的消費電子產品
AI:品質管理的智慧引擎 一、AI 品質管理的廣闊領域 AI 技術在現代企業的品質管理中,扮演著智慧引擎的角色,其應用涵蓋了 缺陷檢測、預測性維護、統計程序控制(SPC)、品質保證、自動化檢查等多方面,不僅提升了產品品質,也顯著提高了生產效率,降低了運營成本。 二、AI 在品質管理的核心應
Thumbnail
「所以,你想要用A框架,但又覺得B框架也不錯?」David挑眉問道,一臉的疑惑和一絲不易察覺的笑意。 .... David神秘地笑了笑,「技術選擇可不是簡單的喜好問題,它牽扯到技術轉移的成本、技術負債的累積,還有整個團隊的長期發展。先來聽聽我的想法吧。」
Thumbnail
產品開發的成功,除了品質,更在於是否能夠在適當的時程內推出並滿足客戶需求。 身為開發、設計人員,從文中提供的三個角度來思考,以確保產品與公司的競爭力。
Thumbnail
相較於接案公司,說到自有軟體產品的企業,普遍大家會自動套上粉紅濾鏡,覺得產品公司就是比較好,不像接案毛利低、又常常有時程壓力。 在網路上也可以找到各式各樣的文章告訴你接案公司的各種地獄故事,覺得如果有選擇的話,可以做產品就不要接案,就連以前的我也都有一顆產品夢。 但事實真的是這樣嗎?
Thumbnail
在導入食品安全管理系統國際標準一段時日後雖然制度有了,但總覺得運作上卡卡的,客戶抱怨內容似乎也未見明顯改善,應該是探討如何有效培養員工對於食品安全危害與風險意識的時間已到來。食品安全是一個至關重要的議題,直接關乎企業的聲譽、顧客的信任以及最終的業績,為了確保食品安全,全體員工都應該參與
為了確保業務的持續成長和市場競爭力,管理團隊必須定期評估資材管理流程的效率和成本效益。這涵蓋了對現有供應鏈策略的詳細審查,檢測技術的更新,以及內部流程的改善。通過這樣的評估,企業可以確定改進的領域,從而提升操作效率,降低成本,並增強其對市場變化的適應能力。