你的軟體怎麼可以有 bug ! 聊聊軟體維護的成本及觀念

更新於 發佈於 閱讀時間約 4 分鐘
忻旅科技 https://www.revtel.tech/
Sam Huang https://www.sam-huang.info/

幾年前有次去談案子,業主想要透過整合資訊工具來替自己的產業做些商業模式的新嘗試。但隨著討論的逐漸深入,默默覺得有些違和感,總覺得有一層窗戶紙沒有捅破。

意識到是業主對於系統開發後的維護認知有點奇怪,點破之後聽到一句有趣的話:

為什麼要維護?有 bug 你們就要負責啊,你們怎麼可以給我們有 bug 的東西!

一瞬間我也是愣了一下,還差點被說服(?)。仔細想軟體維護好像還真的是不太好理解。

https://pixabay.com/photos/stones-zen-white-spa-alternative-2764287/

https://pixabay.com/photos/stones-zen-white-spa-alternative-2764287/

系統正常運作是結果而非手段

軟體維護的目的其實很單純 — 讓系統能夠正常的運作。

有句話說「幸福的家庭都是相似的 不幸的家庭各有各的不幸」,放到軟體上也是一樣。程式有 bug?流量超乎預期?雲端系統更新?版本控制錯誤?每個點都可能局部甚至全局造成系統失效。

而所謂的「正常運作」其實更是結果。站在終點規劃從起點該如何走來往往會是顧了這個漏了那個。

那該怎辦才好?

與其把視角放在具體的每一個任務上,不如去思考最基本的出發點 — 也就是風險的轉移及專業承擔

維護的範圍不清楚,面臨的問題也是百百種

有些朋友可能會覺得,所謂的「維護」指的單純是 bug 的修復,超出的部分應該一律都叫「開發」(在此概念下,開發指的是功能的增刪修改)。但我們可以試著就風險轉移的角度來重新思考看看。

Johari Window : https://en.wikipedia.org/wiki/Johari_window

Johari Window : https://en.wikipedia.org/wiki/Johari_window

用 Johari Window 來思考在維護上的四個象限,那應該會是這樣:

  1. 已知的已知:維護功能的「合理」運作。
    比如當用戶按了登入按鈕後就該觸發要求輸入的視窗。
  2. 已知的未知:修復功能的「合理但不正確」運作。
    比如當登入視窗在新版作業系統中因 css 寫法而造成跑版。
  3. 未知的已知:處理功能的「合理但未必需要」的運作。
    比如當登入視窗未被關閉但因為某些理由不可視卻遮蓋住主畫面。
  4. 未知的未知:解決超出開發功能,但商業上卻需要解決的問題。
    比如忘記密碼的功能應該要搭配某些配套避免有人惡意使用。

等等 … 有些問題感覺應該是「新功能」而非「舊維護」,而有些問題更像是「需求沒有被完整釐清」。

是的,問題其實就在於軟體系統的開發及生存是連續性的,擷取當中片段並硬將任務切分成開發及維護本來就是很難做到的。或者換句話說,如果把 bug 的修復或者把系統從錯誤中回復視為是「優化」,那所有事情都都是開發了。

raw-image

所以我們該怎樣規劃成本 … ?

很多時候維護費的計算可能還比開發估算來的困難。

事實上除了做哪些事情要討論,工程人力也存在隱性成本,比如當一個系統越久沒出問題通常也代表團隊對程式碼的熟悉度會漸漸下降。

但總得有些算法吧?不妨可以先建立以下理解

  1. 固定成本:系統自然的複雜度及維運團隊的維護成本,負責的是「已知的已知」。這裡坊間有個大致算法是原開發成本的 10 ~ 30%。
  2. 變動成本:保持彈性來封裝不可知的問題,負責的是「已知的未知」及「未知的已知」。這裡可以簡單大致的人天成本。
  3. 優化成本:系統是活的,本來就需要定期檢視整個系統健康度,負責的是「未知的未知」。這裡應當是以擴充專案角度來應對,甚至更直接的排入開發計畫。

維護就像是買保險,保費該值得多少本來就該因時制宜且因地制宜。

結語:事情總是比我們想的更複雜

軟體系統的正常運作是環境、用戶及軟體三方順利協同的結果。任何一方情境改變都會造成這個和諧關係被破壞。

因此維護是勢必存在的,可以不理解,但無法不面對。

費用及資源的花費是嚴肅的事情,但也正因為如此,抱持積極的心態去面對這些不確定性才會是比較好的態度。

或者可以這樣說,可以不在其上花費用,但要好好注意風險承擔。

忻旅科技 https://www.revtel.tech/
Sam Huang https://www.sam-huang.info/



avatar-img
18會員
33內容數
從超過 50 個合作經驗中擷取在系統開發、顧問及營運上的經驗及心得
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Sam Huang的沙龍 的其他內容
我們的世界實際上由虛擬和實體兩個部分組成。NFT已經在虛擬世界中證明了自己的價值,但如果將NFT應用於現實世界,又會有哪些可能性呢?
一旦甲乙方進到零和賽局,情感上開始對抗之後,兩敗俱傷就是必然的結局了。既然是這樣,合約的撰寫及執行不妨看作是合作誠意的具象表態。
「幫我做的跟 Facebook 一樣單純就好」 「嗯 … ?」 不管怎麼估計都可能失準,在一件事做完之前你怎麼知道能不能做到?
殺雞用牛刀,降維打擊總是一個安全做法。殺雞何必用牛刀?但牛刀是真的有用啊!而手上有錘子什麼看起來都像釘子,問題是錘子真的能敲啊!
這幾天有個蠻大的新聞是 Azuki 的背後團隊 Chiru Labs 繼 ERC721a 後又提出了 Physical Backed Token (PBT) 這個新的代幣標準。 但 NFT 虛實結合是有道理的嗎?而以 NFC 為虛實整合介面又是合理的嗎?
十一年來景氣循環走了幾次,技術名詞來來去去,資訊產業唯一不變的就是變。感謝 MOPCON 主辦單位的付出以及堅持,為這個有點紛亂的世界又添上了一抹善良。
我們的世界實際上由虛擬和實體兩個部分組成。NFT已經在虛擬世界中證明了自己的價值,但如果將NFT應用於現實世界,又會有哪些可能性呢?
一旦甲乙方進到零和賽局,情感上開始對抗之後,兩敗俱傷就是必然的結局了。既然是這樣,合約的撰寫及執行不妨看作是合作誠意的具象表態。
「幫我做的跟 Facebook 一樣單純就好」 「嗯 … ?」 不管怎麼估計都可能失準,在一件事做完之前你怎麼知道能不能做到?
殺雞用牛刀,降維打擊總是一個安全做法。殺雞何必用牛刀?但牛刀是真的有用啊!而手上有錘子什麼看起來都像釘子,問題是錘子真的能敲啊!
這幾天有個蠻大的新聞是 Azuki 的背後團隊 Chiru Labs 繼 ERC721a 後又提出了 Physical Backed Token (PBT) 這個新的代幣標準。 但 NFT 虛實結合是有道理的嗎?而以 NFC 為虛實整合介面又是合理的嗎?
十一年來景氣循環走了幾次,技術名詞來來去去,資訊產業唯一不變的就是變。感謝 MOPCON 主辦單位的付出以及堅持,為這個有點紛亂的世界又添上了一抹善良。
你可能也想看
Google News 追蹤
Thumbnail
在創作的路上真的很多人問我說 到底要怎麼做出符合自己期待 但又可以表現得很有美感的作品?🥹 這個問題真的應該是每個創作者都一直在學習的課題吧!
Thumbnail
我不知道,有多少人從自身的問題中,看到全人類的問題。 就是因為我以整體的角度出發,所以我個人的煩惱也是全體的煩惱。 因為系統的任何一個零件有故障,整個系統都存在崩潰的風險,因為環環相扣就是系統的定義。
Thumbnail
在科技迭代快速的現代,維修權是一個與我們息息相關的重要議題。為了避免裝置成為無用的垃圾或廢物,並並提升消費者對裝置的使用權與維護權。此篇文章探討了為何維修權對消費者的重要性,並提及有關維修權對日常生活、改善用戶體驗以及減少電子垃圾方面的影響。
Thumbnail
在這篇文章中,作者分享了在疫情期間的收穫以及作為軟體顧問的工作內容和經歷。他描述了駐廠工作時需要與客戶應對進退以及一個系統升級的過程。文章總結了做為軟體顧問的工作雖然光鮮亮麗,但其中也有酸甜苦辣。如果這是你想知道的內容,歡迎繼續閱讀。
Thumbnail
軟體開發專案管理的失敗原因複雜多樣,但管理不善是其中一大原因。學習為軟體開發專案而設的管理方法是有效管理的第一步,需對軟體開發專案的特徵進行評估,選擇合適的軟體開發生命週期和專案管理方法。
Thumbnail
相較於接案公司,說到自有軟體產品的企業,普遍大家會自動套上粉紅濾鏡,覺得產品公司就是比較好,不像接案毛利低、又常常有時程壓力。 在網路上也可以找到各式各樣的文章告訴你接案公司的各種地獄故事,覺得如果有選擇的話,可以做產品就不要接案,就連以前的我也都有一顆產品夢。 但事實真的是這樣嗎?
Thumbnail
當用戶回饋 App 操作不直覺的問題時,是否應該聽取他的建議或調整界面呢?本篇文章探討當用戶反映 App 非直覺使用時,應該怎麼處理,以及專業人士如何被知識所限制。同時,也討論了日本企業為何要求說五遍的文化背景,以及老闆和員工間常見的溝通問題。最終提出瞭如何有效提升執行力的問題。
Thumbnail
這篇文章探討了在軟體開發中的技術債可能來自哪些原因,以及如何自動化偵測與修復技術債。作者透過分享不同情境下的技術債選擇,提供了對於技術債的思考與建議,針對開發人員在需要做出無奈的技術決策時,提供了一些建議。此外,還提供了一些在做出技術決策時的方法,如保留抽象層和避免vendor lock-in。
Thumbnail
確保沒有遺漏或錯誤 程式的完整資訊資料對於程式設計至關重要。這是因為只有透過完整的資訊,我們才能確保在程式設計中沒有任何遺漏或錯誤。最終,後台管理扮演著管理系統中所有動作和行為是否符合特定標準的重要角色。 採取不符合預期的行動 這種符合性的重要性在於,當我們設計程式時,希望使用者按照預期的方式
不論企業使用的伺服器和客戶端是使用何種作業系統,定期更新補丁是必不可少的。 這道理仿如真理,因為世界上還沒有一個作業系統是完全沒有漏洞的,只要有漏洞被發現,就要推出補丁,作為使用者的角色就得決定是否安裝。 筆者曾經和一些決策層交談,他們未必是IT業者,但也懂得補丁要越快更新越好。但其實這觀點並不
Thumbnail
戴明強調系統運作一定會有異常,而解決問題的關鍵在於正確判明原因並提出對策。改善系統時,不應該只憑經驗,而應該依據知識理論來訂出行動方案。文章探討了事件中的特殊和共同因,並強調要讓系統回到原有的運作狀態。
Thumbnail
在創作的路上真的很多人問我說 到底要怎麼做出符合自己期待 但又可以表現得很有美感的作品?🥹 這個問題真的應該是每個創作者都一直在學習的課題吧!
Thumbnail
我不知道,有多少人從自身的問題中,看到全人類的問題。 就是因為我以整體的角度出發,所以我個人的煩惱也是全體的煩惱。 因為系統的任何一個零件有故障,整個系統都存在崩潰的風險,因為環環相扣就是系統的定義。
Thumbnail
在科技迭代快速的現代,維修權是一個與我們息息相關的重要議題。為了避免裝置成為無用的垃圾或廢物,並並提升消費者對裝置的使用權與維護權。此篇文章探討了為何維修權對消費者的重要性,並提及有關維修權對日常生活、改善用戶體驗以及減少電子垃圾方面的影響。
Thumbnail
在這篇文章中,作者分享了在疫情期間的收穫以及作為軟體顧問的工作內容和經歷。他描述了駐廠工作時需要與客戶應對進退以及一個系統升級的過程。文章總結了做為軟體顧問的工作雖然光鮮亮麗,但其中也有酸甜苦辣。如果這是你想知道的內容,歡迎繼續閱讀。
Thumbnail
軟體開發專案管理的失敗原因複雜多樣,但管理不善是其中一大原因。學習為軟體開發專案而設的管理方法是有效管理的第一步,需對軟體開發專案的特徵進行評估,選擇合適的軟體開發生命週期和專案管理方法。
Thumbnail
相較於接案公司,說到自有軟體產品的企業,普遍大家會自動套上粉紅濾鏡,覺得產品公司就是比較好,不像接案毛利低、又常常有時程壓力。 在網路上也可以找到各式各樣的文章告訴你接案公司的各種地獄故事,覺得如果有選擇的話,可以做產品就不要接案,就連以前的我也都有一顆產品夢。 但事實真的是這樣嗎?
Thumbnail
當用戶回饋 App 操作不直覺的問題時,是否應該聽取他的建議或調整界面呢?本篇文章探討當用戶反映 App 非直覺使用時,應該怎麼處理,以及專業人士如何被知識所限制。同時,也討論了日本企業為何要求說五遍的文化背景,以及老闆和員工間常見的溝通問題。最終提出瞭如何有效提升執行力的問題。
Thumbnail
這篇文章探討了在軟體開發中的技術債可能來自哪些原因,以及如何自動化偵測與修復技術債。作者透過分享不同情境下的技術債選擇,提供了對於技術債的思考與建議,針對開發人員在需要做出無奈的技術決策時,提供了一些建議。此外,還提供了一些在做出技術決策時的方法,如保留抽象層和避免vendor lock-in。
Thumbnail
確保沒有遺漏或錯誤 程式的完整資訊資料對於程式設計至關重要。這是因為只有透過完整的資訊,我們才能確保在程式設計中沒有任何遺漏或錯誤。最終,後台管理扮演著管理系統中所有動作和行為是否符合特定標準的重要角色。 採取不符合預期的行動 這種符合性的重要性在於,當我們設計程式時,希望使用者按照預期的方式
不論企業使用的伺服器和客戶端是使用何種作業系統,定期更新補丁是必不可少的。 這道理仿如真理,因為世界上還沒有一個作業系統是完全沒有漏洞的,只要有漏洞被發現,就要推出補丁,作為使用者的角色就得決定是否安裝。 筆者曾經和一些決策層交談,他們未必是IT業者,但也懂得補丁要越快更新越好。但其實這觀點並不
Thumbnail
戴明強調系統運作一定會有異常,而解決問題的關鍵在於正確判明原因並提出對策。改善系統時,不應該只憑經驗,而應該依據知識理論來訂出行動方案。文章探討了事件中的特殊和共同因,並強調要讓系統回到原有的運作狀態。