程式設計的預防與診斷

2021-08-27 13:05:31 字數 965 閱讀 2872

最近乙個月,生產環境上的程式偶發性的出現故障,而每次發生時現象都頗為詭異,神奇的是最後自己還能恢復。

這有點像是癲癇病人,小心翼翼的生怕發作,弄的人神經緊張。

程式一旦上了生產環境,基本就進入了隔離屋,這種偶然性的執行時問題,對程式開發者提出了更高的分析與診斷要求。

一直以來我們習慣性的把完成客戶需求作為程式設計開發的主要任務,當需求實現了便認為程式開發完成。

而對於執行時分析診斷類的非客戶類需求,在程式**比例中佔據的很小。

事實上,軟體程式基本上應該包括三類**:

1. 功能性**

2. 診斷性**

3. 預防性**

乙個程式軟體,功能性**是基本要求。

診斷性**,在大部分程式軟體中可能只有日誌輸出算的上。

日誌作為診斷的缺點是無法很好的評估到底應該輸出多少日誌,在什麼位置輸出日誌。

而對於一些動態的執行時程式診斷工具,又很難在生產環境去實施。

所以設計之初就需將診斷性的需求包含進去,但乙個具備自診斷能力的軟體程式是成本很高的。

退而求其次,至少我們可以讓其具備執行狀態的自匯報能力,然後由開發者根據狀態來做診斷。

每類程式的『狀態』都與其功能和業務密切相關,但它們也有其共性,那就是來自系統的狀態。

作業系統在這方面做了很好的示例,提供了很多報告其自身執行狀態的介面和工具,應該善加利用。

預防性**的最基本表現是對異常進行設計處理,基本上所有程式都會包含這個部分,但大部分也僅有這個部分。

異常的設計處理基本都包含在現代的高階程式語言中了,所以很多時候我們沒意識到這其實是一種預防性程式設計。

預防性程式設計的一種公升級形式是災備切換和容災設計,由於實施的難度和成本效益大部分的非關鍵應用都不會做到這個層次。

很多應用面對成本收益做了一種折衷的選擇:降級。非核心功能或服務在必要情況下可以降級來保障核心功能穩定。

綜上,軟體開發中三類程式**所佔的比例和實施策略,是效率和成本的平衡點,值得我們在設計時去考量。

程式設計的預防與診斷

最近乙個月,生產環境上的程式偶發性的出現故障,而每次發生時現象都頗為詭異,神奇的是最後自己還能恢復。這有點像是癲癇病人,小心翼翼的生怕發作,弄的人神經緊張。程式一旦上了生產環境,基本就進入了隔離屋,這種偶然性的執行時問題,對程式開發者提出了更高的分析與診斷要求。一直以來我們習慣性的把完成客戶需求作為...

OBD診斷與UDS診斷的區別

obd 全稱 on board diagnostics 即車載自動診斷系統,是汽車排放和驅動性相關故障的標準化診斷規範,有嚴格的排放針對性,其實質就是通過監測汽車的動力和排放控制系統來監控汽車的排放。當汽車的動力或排放控制系統出現故障,有可能導致一氧化碳 co 碳氫化合物 hc 氮氧化合物 nox ...

死鎖的產生與預防

在多執行緒中,為了保證執行緒安全,我們會使用互斥鎖,在某些程序或者執行緒中,使用了某些資源,為了完成任務,需要請求某些程序或執行緒所擁有的資源,從而形成了永久性等待狀態 1.互斥條件 乙個資源每次只能被乙個執行流執行 2.請求與保持 乙個資源想要獲取資源時阻塞,不會釋放已有資源 3.不可剝奪條件 乙...