[導讀] 在知乎上看到一個網友的問題:為什么自己設計的嵌入式系統(tǒng)穩(wěn)定性遠不如工業(yè)級產品?我覺得這是一個非常好的問題,尤其國內很多中小企業(yè)可能關注點更多在于產品的功能,而不在性能,產品功能很炫可是穩(wěn)定性往往差強人意。所以就產品穩(wěn)定性,來聊聊我的一些認知和體會。
什么是穩(wěn)定性?
穩(wěn)定性,英文中用(可靠性)Reliability engineering來研究,可靠性工程是系統(tǒng)工程的一個子學科,它主要研究設備無故障運行的能力??煽啃悦枋隽讼到y(tǒng)或組件在指定條件下持續(xù)指定時間段內運行的能力。
一個產品一般從設計的角度基本包含哪些主要的設計呢?常見的嵌入式系統(tǒng),可能包含機械設計、硬件設計、軟件設計,那么從設計來談一個產品的可靠性,就必然要從這幾個主要的方面下功夫。另外工業(yè)級產品為什么表現(xiàn)的更加可靠呢?
為了要相對深入的談這個問題,來看看這個相關的一些術語指標是怎么描述一個系統(tǒng)或者零件的可靠性的。
啥是可靠性概率?
可靠性定義為設備在規(guī)定條件下在指定時間段內將執(zhí)行其預期功能的概率。從數(shù)學上講,這可以表示為系統(tǒng)的可靠性是指在時間t內沒有發(fā)生某F類故障的概率。
作何理解呢?Tinit系統(tǒng)開始工作的時間,Tf是發(fā)生類故障的時刻。也即表征系統(tǒng)由于某類故障而失效的概率
啥是失效概率
有可靠性概率,自然就有失效概率,失效概率剛好與可靠性概率是互補,滿足下面關系:
上面的概念是針對某類故障的統(tǒng)計規(guī)律,那么推廣開來,從系統(tǒng)而言去掉下標F,也滿足上述關系。一個系統(tǒng)由不同的組件組成。
系統(tǒng)失效率
當系統(tǒng)的壽命呈指數(shù)分布時,系統(tǒng)的可靠性為:,其中就是失效率(failure rate)的概念
這個曲線相信很多人應該見過,這就是產品的澡盆曲線,在產品前期老化階段比較容易暴露故障,失效率比較高。不要問我為什么,這是無數(shù)先輩們統(tǒng)計所得的統(tǒng)計規(guī)律,對于工程應用相信即可(當然如果是做理論研究的則另當別論)。這個規(guī)律也解釋了為何有的廠家出廠的產品需要做老化試驗的原因,因為做老化試驗可以將故障充分暴露出來,如此篩選出來的產品在客戶端將很少會出故障。
為啥費這么多話來討論這個失效率呢,來看看這個例表:
不同的組件的失效率是不一樣的,那么在設計之初在成本允許的情況下,就需要盡量選取失效率低的組件。
失效模式
不同的組件的失效模式是不一樣的,啥概念呢?也就是組件產生故障的原因各異,比如電路板上的電阻其失效模式就有可能是短路失效,斷路失效、參數(shù)漂移失效,對于軟件而言其失效模式就有可能有很多,比如棧溢出、RAM數(shù)據(jù)錯誤、芯片總線錯誤等等。每種失效模式,其失效率也是不一樣的。如要深入其了解這些指標的含義可以參考IEC61508或者其他等同的標準。
如何提高產品的可靠性呢?
如果產品老是出問題,不光攻城獅惱火,甚至會決定一個公司的前途命運,所以如何提升產品的可靠性,絕對是一個需要花大力氣去研究的課題,也是每個從業(yè)人員需要在靈魂深處深深刻下烙印。做產品不是兒戲,產品不穩(wěn)定,不僅僅會影響升職加薪,可能一個公司就會因此歇菜。
那么究竟如何能提高產品的可靠性呢?我想大體上可以從這幾個方面著手:
-
成功的開發(fā)流程
-
成功的項目管理
-
嚴格的質量控制
開發(fā)流程
這是IEC61508界定軟件、硬件都須采用如下的V&V開發(fā)模型(注明IEC61508標準里圖不太一樣),簡單介紹一下這個模型:
現(xiàn)在流行很多的開發(fā)流程,比如敏捷開發(fā)模型就比較受追捧,個人并不反對敏捷開發(fā)模型,但是從產品開發(fā)的可靠性角度更推崇這種雙V模型,其實很多跑敏捷的項目在每一個迭代中其實可以融入這種雙V模型。這個模型從設計的需求>架構>詳細子模塊設計每向下走一步,都需要verfication 測試檢驗前級,同時還最終輸出validation確認設計。
在IEC 61508(功能安全等級標準)等標準中都有體現(xiàn)這一套路,簡略看看相關標準:
IEC 61508是適用于各種行業(yè)的基本功能安全標準。它將功能安全定義為:“與EUC(受控設備)和EUC控制系統(tǒng)相關的整體安全的一部分,它依賴于E/E/PE安全相關系統(tǒng)、其他技術安全相關系統(tǒng)和外部風險降低設施的正確運行。”“基本的概念是:任何安全相關的系統(tǒng)都必須正確工作或以可預測的(安全的)方式失效。”
個人對于V&V模型理解的幾個要點:
-
要可執(zhí)行的流程,不要形式化套路!
-
標準規(guī)定的科學嚴謹套路,遵循從需求到設計的雙向可追溯,從設計到測試的雙向可追溯。
-
可靠性從一開始轉化市場需求時就需引入,中小型企業(yè)更多聚焦于功能實現(xiàn),而忽略了性能、可靠性需求。注意這些可靠性需求都是設計目標,沒有目標如何能從體系上產出一個優(yōu)良的產品呢?如不遵循嚴格的體系流程,或許一個公司偶然能出一個高質量產品,但個人認為一定很難保證出來的產品的整體質量
-
需求環(huán)節(jié):可靠性是需要提需求的,舉些栗子:
-
環(huán)境需求,比如溫度、濕度、振動等,這些在需求階段就應界定相關的測試等級,其實即便公司的產品不需要去做相關強制認證,但是從可靠性角度,提出這樣的需求,勢必需要相應的設計以及測試去保證。那么定然從這些維度會提升產品的可靠性。
-
EMC需求:比如常規(guī)的抗擾度測試要求,都需要需求階段明確提出。
-
.....
-
-
設計環(huán)節(jié),可靠性需要提出需求,更需要設計去實現(xiàn)。對于每項可靠性需求,事實上都可以盡量轉化成設計的檢查項去追溯。比如硬件中的器件失效模型及影響分析FMEA(Failure mode and effects analysis),軟件中同樣也有對應的失效模型可做分析以及影響分析,通過失效模型分析,可參考標準中的推薦做法去從設計的角度采取對策。
-
測試環(huán)節(jié):測試包含驗證(verification)和確認(validation) ,V&V模型每向下一步,都應向上一步去verification,每一個設計輸出,其實都應有對應的驗證去保障,最終的產品級還需要確認環(huán)節(jié)。另一個重要的要點就是工業(yè)級產品開發(fā),往往在需求階段,設計就已然介入。
開發(fā)流程每個公司都各有不同,但是從產品生命周期以及產品可靠性自身規(guī)律角度,個人覺得還是應該考慮這些要點。關于開發(fā)流程以及功能安全標準內容很多,這里泛泛總結這些個人體會。
成功的項目管理
項目管理是在特定的時間內領導團隊實現(xiàn)目標和達到成功標準的過程。項目管理的主要挑戰(zhàn)是在給定的約束條件下實現(xiàn)所有的項目目標。這些信息通常在項目文檔中描述,在開發(fā)過程的開始創(chuàng)建。主要的限制是范圍、時間、質量和預算。其次的挑戰(zhàn)是優(yōu)化必要投入的分配,并應用它們來滿足預先確定的目標。
一個可靠性很高的的產品開發(fā),與一個完善的項目管理是密不可分的。項目管理在項目的執(zhí)行過程中作用是非常重要的,從啟動、計劃、執(zhí)行、監(jiān)管、收尾中對項目進行管理。
項目管理在這些過程中,所需的知識以及在每個階段需從事的活動可參考下圖(來源:PMBOK 第6版):
嚴格的質量控制
好的設計發(fā)布,如沒有嚴格的生產質量控制,所出售的產品質量也定然沒有保障。對于這一點不怎么了解,就不做過多的描述了。
總結一下
回到問題本身,如想得到一個可靠的產品,個人認為從產品設計流程、項目管理、以及生產質控方面都應有完善的要求且須很好的落實,工業(yè)級產品砸錢做那么多的認證,不是沒有緣由的。這些認證里有很多就是可靠性的具體考核。