華為內部硬體開發設計流程

2021-02-10 程式設計師猴哥

2007年,以2年的工作經驗去一家小公司去面試。當時筆試完,對方對我很認可。但當時他說:「我需要招一個,在大公司待過的,最好知道硬體開發流程和規範的。雖然你題答得不錯,但是我們需要一個有豐富經驗的,最好在華為待過的。」

當時,我就在想「華為的規範和流程是啥樣的」。後來我去了華為,我把能想到的華為硬體開發的幾個不一樣的點,跟大家分享一下。

當時剛入職時,三個人做一個電路板。雖然電路複雜一些,還是有一些人力過剩的。所以,我就被安排去寫一個PCI轉UART的邏輯。

我當時是新員工,也急於表現自己,利用周末的時間,估計用了一周的時間,就寫完代碼,開始仿真了。我以為我的導師兼主管會表揚一下,結果沒有,他說:「你為什麼沒有召集大家討論?然後再寫方案,評審?然後再動手寫代碼?」我當時是不理解的,覺得我一個人就搞定的事情,為啥要這樣勞師動眾?

後來反思過後發現了以下問題:

第一、 從主管的角度,不知道新員工的個人能力,你能把做的事情講清楚了,他才放心。

第二、 從公司的角度,有一套流程來保證項目的交付。那麼則不再太依賴某個人的個人能力,任何一個人的離職,都不會影響項目的交付。這也是華為最了不起的地方,把複雜的項目拆得非常細碎,這樣不需要特別牛的人來交付項目。這是為什麼華為的工程師的收入是思科的N分之一。

第三、 從效果角度,畢竟一個人的想法是有限的,把想法文檔化的過程,就是整理思路的過程;討論的過程,就是收集你自己沒有想到的過程。正式的評審,是大家達成意見的過程。提前討論,讓相關的人都參與到你的設計中,總比你設計完了,被別人指出一個致命的問題要強得多。

就是因為華為把一項工作拆散了,所以溝通,文檔,評審,討論,變得非常重要。這個工作模式的缺點,也是顯而易見,溝通成本高,工作效率低。

在華為內部裡面,人員角色非常多。硬體的人是對產品開發階段,端到端負責的。做單板硬體工程師,可以涉獵最多的領域,同時也是工作內容最雜,接觸人最多,扯皮的最多的工種。

但是也因為有人專門負責畫PCB、EMC、電源、邏輯,原本硬體工程師應該做的領域。那麼硬體工程師就武功盡廢,變成「連連線」。

其實不然,正是由於每個人都是一個小的領域,沒有人統領,所以一個好的硬體經理的作用非常的重要,是貫穿所有領域和全部流程的關鍵角色。正如原來華為內部論壇上有一個人比喻的,硬體工程師更像是處理器裡面的「Cache」,是所有環節的中轉站。大公司把人的分工分的這麼細,也是防止某一撥掌握了太多公司的核心技術,出去單搞了。

其實華為的流程,很多人都知道IPD流程是從IBM來的,我個人理解:IPD流程已經在華為變種,結合了中國人的特點,華為的企業特點進行了變通和優化。如果華為僵硬的套用IBM的這套流程,也必定不會這麼成功。

那麼概括一下華為的硬體開發流程:

需求分析→總體設計→專題分析→詳細設計→邏輯詳設→原理圖→PCB→檢視→粘合邏輯→投板→生產試製→回板調試→單元測試→專業實驗→系統聯調→小批量試製→硬體穩定→維護。

流程的根本在於,這個環節做好了,再進入下一個環節。所有的環節其實跟其他公司並沒有太大的區別,只不過嚴格把握了進入下一個環節的考核條件。令硬體工程師最糾結的是「沒有個節點跟』投板』對應」。

華為支撐IPD流程的系統是PDM(又名爬的慢)

PDM的中文名稱為產品數據管理(Product DataManagement)。PDM是一門用來管理所有與產品相關信息(包括零件信息、配置、文檔、CAD文件、結構、權限信息等)和所有與產品相關過程(包括過程定義和管理)的技術。華為所有的器件資料,產品部件,工具,文檔,原理圖,PCB,邏輯代碼等都存在這個系統上。但是系統過於龐雜,其實比較難使用,跟伺服器歸檔、SVN歸檔、也容易搞混淆。

硬體工程師一般都能夠理解,在一個板子上面的,儘可能的選擇成本更低的器件,選擇更少種類的器件,便於集中採購,同時也便於加工。但是其他公司可能沒有對器件歸一化的工作做得那麼細緻和嚴格。

第一, 由於華為整個公司使用的器件種類非常的多,所以如果減小一個器件編碼,帶來的收益是十萬人民幣到幾百萬,而其他公司可能達不到這個高的收益。所以如果能減少一個編碼,寧願選擇可能成本更高的器件。但是這個也需要按照每年的器件直接成本收益*器件發貨數量,與編碼成本+加工成本差異,進行對比的。不過器件歸一化之後,器件的價格又可以跟供應商重新談價格,這個收益是迭代的。所以,有時即使是成本佔優,也會傾向去器件歸一化的結論。例如,逐步去除了5%精度的電阻,歸一化到1%。

第二, 器件歸一化,都是需要進行專題分析的。因為也有工程師為了歸一化,對電路原理沒有充分分析,導致的歸一化帶來「問題引入」。所以,當時我的部門當時有一個表格,「器件歸一化分析.xls」的excel表格,把每個器件,原來選型,歸一化的選型,更改的原因,都做好記錄和原因分析。一是讓每個做歸一化的員工都充分考慮分析,二是問題都有記錄,便於評審,三是出了問題,好打板子。

除了器件歸一化,更高一個層次的歸一化,就是單板歸一化。(單板這個概念,我稍微澄清一下,我剛到華為的時候,也覺得這個詞很奇怪。因為通信設備,都是機框,背板,加各個功能模塊的電路板,各個功能模塊的電路就叫做「單板」,硬體工程師,一般也叫做「單板硬體」)

單板歸一化帶來的好處,首先是電路的種類少,電路的種類少的好處有三個:

一是生產成本降低;

二是硬體維護成本降低;

三是軟體開發和維護的成本降低。

第一、單板歸一化的先決條件首先是處理器歸一化。其實,華為的有的產品這點做得其實不好,X86、MIPS、ARM、PPC全部都用個遍,所以一個硬體平臺,需要配備各種軟體人員,作業系統搞N套,VxWorks和Linux,BIOS各種配套。

第二、單板的歸一化,要注意產品的衍生。第一個版本的機框上的單板所實現的功能,如果後續的產品可以使用,應該直接可以用,不需要再開發。如果不注意這點,第一個版本的單板,到第二版本時,發現不能相互借用。反過來,再修改第一個版本的電路板,來適應新版本。有時問題更糟糕,就是完全不能兼容,只好重新開發。單板的規劃顯得非常重要。

第三、單板歸一化時,雖然電路部分兼容了,但是結構件不兼容。對於市場人員的配置來說,仍然是兩種配置。一樣是失敗的。

那麼如果發現不同的硬體平臺的架構雷同,功能類似。那麼機框也可以歸一化。只需要製作不同的電路功能模塊,就可以實現不同的功能需求。

但是不同的硬體形態都是有他存在的意義的,如果強行歸一,市場未必會接受這種事情的發生。例如用一個運營商的平臺去歸一一個企業應用或者家庭應用的產品,可能就未必能夠成功。

這個說法是我自己想的,早在08年的時候,華為就在討論「雲管端戰略」了,當時不是很理解。當我們一個運營商平臺部門,跟「伺服器」的部門合併的時候,似乎理解了點什麼。

當X86處理器足夠強大的時候,所有的運算,不管是否性價比最高,都送到雲端進行處理,那麼所有中間的存儲和計算都顯得不重要了。那麼整個網絡的結構,就是終端+管道+雲存儲和雲計算。

我覺得很多硬體工程師有個誤區,覺得自己的核心競爭力是在於會使用幾個軟體(cadence、Protel),畫畫原理圖,畫畫PCB。我早期的一份工作就這樣,最大的本事就是照葫蘆畫瓢,抄Demo板,抄以前成熟的電路,如果碰到了新的電路設計,一般是按照參考電路先畫出電路,再通過調試,去嘗試,碰到問題,再去解決問題。

那麼我現在的觀念是,硬體工程師最值錢的地方是在於懂硬體原理,懂得電路分析,模電數電原理,電磁場理論,而不是會使用畫圖軟體。

那麼華為是怎樣做電路設計的呢?為什麼會有專題分析的說法呢?為什麼電路設計的時候要做專題分析?

第二、當電路設計過程中,碰到一些新的問題,之前團隊中沒有接觸過的問題,或者認為是重點,難點的內容,會專門做這個問題點的專題分析:例如我們做過的一些雙BIOS啟動,攝像頭的紅外LED的驅動,主備倒換啊,之類的,就會把一個問題點分析透,然後再動手做畫原理圖。

第三、那麼在開發硬體的時候,Demo只是作為參考,每一個依據都是來自於datasheet,除了看晶片的數據手冊之外,還要仔細查看數據手冊的勘誤表errata,核對datasheet與Demo的差一點,如果器件有checklist還得核對checklist。曾經開發AMD的時候,datasheet、Demo、checklist,三個文檔對不上的情況。也出現過,一個比較難復現的問題,後來查看了Errata,發現是廠家晶片升級了,修正了bug,而我們還在採購老版本的晶片。

第四、由於項目本身有交付時間要求,那麼在有限時間內其實不可能做到每個問題點都做得深入透徹。那麼問題來了:

是怎麼做到的呢?首先,每個項目都有《問題跟蹤表》,而硬體團隊由於事情非常的雜,所以把這個表要用的非常好,不然丟東拉西很正常。我曾經把這個表應用到家裡裝修。這個表的原理很簡單,就是記錄,問題內容,責任人,完成狀態,完成時間。但是只要你堅持用,你會發現,你問題不會跟蹤丟,做事情會比較有條理,而且會有成就感。用了這個表以後,發現問題之後,先記錄下來,即使現在不解決,那麼也會識別他要不要解決,什麼時候解決。其次、問題分優先級,任何項目都是帶著風險前進的,那麼識別出高風險的問題,優先解決高風險的問題,帶著低風險的問題繼續走。這也是華為電路設計中「0歐姆」電阻用的比較多的有一個原因,識別出風險之後,但是又分析不清楚,或者來不及分析,只好做兼容設計。這裡不得不感慨一句,在你的設計過程中,你馬虎對待,沒有分析清楚的問題,最後一定會暴露出來。

所以,在「菊花廠」做硬體工程師,「專題分析」是設計硬體最核心的工作,而不是畫原理圖。通過這個方法,用1~2個月做電路分析,而用1~2周時間畫原理圖,取代了,畫圖,調試,改版,再調試,在改版的形式。多快好省,是不可能同時實現的,那麼硬體工程師有責任做很好的折衷和權衡。

在我進入華為的時候,當時整個公司都在「規範」運動,什麼都寫規範,人人都寫規範,什麼任職、績效、技術等級都看規範。(大公司用KPI來引導,容易搞成「運動」)。所以當時,按照器件種類,很多人寫了各種器件選型規範。當時,原理圖評審的時候,聽得最多的就是「規範就是這樣寫的」,這裡面有一些問題:

1、寫規範的人不一定水平高,或者寫得不細緻,如果出現錯誤那就更是害人了。

2、規範有時抑制了開發人的思維,什麼都按照規範來,不一定適合實際的設計場景;例如我需要低成本設計,但是規範強調的是高質量,就不一定適用。

3、有了規範之後,也會導致部分開發人員不思考,例如晶振要求在50MHz以上,放pF級的電容進行電源濾波,而低於50MHz的不用。大家都不想為什麼,自然也不知道為什麼;再例如網口變壓器防護,室內室外,按照各種EMC標準的設計要求,直接照著畫就可以;但是很少有人想為什麼,也不知道測試的結果怎樣,等實際碰到困難時就抓瞎了。的確在有的時候提高了工作效率和產品質量,但是工具也發達,人也就越退化,這是必然。

4、有些器件的選型,不適合寫規範,因為器件發展太快,有可能等你規範寫好,器件都淘汰了。例如:在X86處理器進入通信領域了之後,處理器選型規範就顯得多餘。

規範確實能帶來好處。但是,並不是所有工作都適合用規範來約束。硬體工程師要能跳出「參考電路」、跳出「規範」,從原理思考問題和設計。

當然規範還是非常有用的一個手段,是大量的理論分析+經驗積累+實踐數據的精華。我覺得當時我看得最多的規範,是《器件選型的降額規範》,這是基於大量試驗,實際案例,總結出來的器件選型的時候,需要考慮的內容。

例如:規定選用鋁電解電容的時候,需要考慮穩態的工作電壓低於額定耐壓90%;而鉭電容,穩態的降額要求在50%;而陶瓷電容,穩態的降額要求在85%;因為這裡考慮了一些器件的實效模式、最惡劣環境(高溫、低溫、最大功耗),穩態功率和瞬態功率的差異……等等因素。

在華為的PDM系統上,器件都有一個優選等級「優選」「非優選」「禁選」「終端專用」等幾個等級。工程師可以根據這個優選等級來直觀的感受到器件是否優選。

那麼器件的優選等級,是考慮了哪些因素呢?

1.可供應性:特別是華為這樣廠家,有大量發貨的產品。慎選生命周期處於衰落的器件,禁止選用停產的器件。我2005年時曾設計過一個電路,設計的時候就是拷貝別人的電路,結果加工的時候發現器件根本買不著,由於器件停產了,只能在電子市場買翻新的器件。對於關鍵器件,至少有兩個品牌的型號可以互相替代,有的還要考慮方案級替代。這點很重要,如果是獨家供貨的產品,是需要層層匯報,決策,評估風險的。

2.可靠性:

散熱:功率器件優先選用RjA熱阻小,Tj結溫更大的封裝型號;處理器選型,在性能滿足的情況下,儘量選擇功耗更小的器件。但是如果是Intel這樣壟斷的器件,你也只有忍受,加散熱器,加風扇。

ESD:所選元器件抗靜電能力至少達到250V。對於特殊的器件如:射頻器件,抗ESD能力至少100V,並要求設計做防靜電措施。(註:華為是嚴格要求,禁止裸手拿板的。我本來也不理解,後來我帶團隊之後,發現兄弟們花大量的時間在維修單板;我們的團隊就非常嚴格要求這一點,看似降低效率,其實還是提高效率的。至少不用總懷疑器件被靜電打壞了。)

所選元器件考慮更高的溼敏等級。

安全:使用的材料要求滿足抗靜電、阻燃、防鏽蝕、抗氧化以及安規等要求。

失效率:避免失效率高的器件,例如標貼的撥碼開關。儘量不要選擇裸Die的器件,容易開裂。不要選擇玻璃封裝的器件。大封裝的陶瓷電容不要選擇。

失效模式:需要考慮一些器件的失效模式是,開路還是斷路,會造成什麼後果,都需要評估。這也是鉭電容慎選的一個重要原因。

3.可生產性:不選用封裝尺寸小於0402的器件。

儘量選擇表貼器件,只做一次回流焊,就完成焊接,不需要進行波峰焊。部分插件器件不可避免選用的話,需要考慮,能否採用通孔回流焊的工藝完成焊接。減少焊接的工序和成本。

4.環保:由於華為大量的產品是發往歐洲的,所以環保的要求也比較嚴格。由於歐盟提出無鉛化要求,曾經整個公司的幾乎所有的硬體工程師都在做無鉛化的整改。

5.考慮歸一化:例如某產品已經選用了這個器件,並且在大量出貨的時候,往往有時這個器件的選型並不是很適合,也會選擇,因為不但可以通過數量的增多來重新談成本,還可以放心的選用,因為經過了大批量的驗證。這也是為什麼傾向於選用成熟期的器件,而慎選導入期和衰落期的原因。

6.行業管理:某一個大類,例如:電源、時鐘、處理器、內存、Flash等等都是有專門的人做整個公司的使用的規劃和協調,提前進行市場調研,分析,編寫規範。他們會參與到新器件的選型上來。

7、器件部門:專門有器件部門的同事,會分析器件的失效原因,可靠性分析,拍攝器件的X光,評估器件壽命等等工作。

8、成本:如果在上述因素都不是致命的情況下——上述的因素都是浮雲,緊盯第八條。

1、首先大公司就是「會多」,因為公司大,部門多,人的職責劃分的細,所以一件事情,需要很多人參與。容易出現扯皮的事情。我剛到華為時,非常不適應,什麼都寫文檔,什麼都評審,什麼都開會;所以不適應這麼多會議,開會時就會無聊,所有的貪食蛇的最高紀錄都是那段時間破的。

2、任何事情還是有主要負責人的,華為給予負責人足夠的權利,所以能夠推動事情的發展,協調到資源。例如行銷有足夠的強勢去推動研發實現客戶的需求。產品經理、客戶經理的能量還是很大的,能夠跟研發的部長直接進行對話,推動研發乾這幹那。

3、所有問題最終都是會記錄,跟蹤,保證完成的。這就是為什麼哪怕有些設備的質量,性能並不能讓客戶足夠滿意的時候,客戶還願意用華為的設備。就是這個原因,運營商都喜歡用華為的設備。一個問題出來了,還沒確定是哪家的問題,華為的兄弟就衝上去了。聯通2個人參加會議,華為6個人來參加會議,通過試驗舉證,證明是Juniper設備的問題。然後給出充分的報告告訴客戶,這不是我們的問題,這是XXX廠商的問題。

4、林子大了,什麼鳥都會有。所以推、拖、賴的事情自然總是有發生。這就需要強大而明確的績效評價體系,去引導員工去主動承擔任務,而不是去劃清界限。這種「劃清責任」的事情也不可避免。否則就是三個和尚沒水喝。註:華為的這種凡事充分討論的做法,在電信運營商的領域是適用的,放在消費者領域、甚至企業IT領域往往會不適用的,因為沒有足夠的利潤率去支撐這麼做。所以我說的一些華為的一些優點,各位華為手機的用戶不用向我吐槽,:-)

5、在開會的過程中,經常人們容易進入誤區,或者過於發散,或者過於保守。在產品定義階段的會議,往往都有人提醒,發散的時候不要收斂;在問題解決的會中,往往會提醒,不要過去發散,聚焦問題。這個能夠提醒大家的人往往就非常重要。當然有時也會流於形式,各位朋友可以看下一篇案例《華為內部討論如何給孫楊漲姿勢》,會議中不斷有人提醒聚焦,但是大家還是比較發散。

什麼是《羅伯特議事法則》?

一百年前有個好小夥子,名叫享利.馬丁.羅伯特,二十五歲,中國人叫愣頭青。他畢業於西點軍校在南北戰爭期間奉命主持一個地方教會的會議。結果呢——搞砸 了。人們爭個不亦樂乎,什麼結論都沒有。總之一塌糊塗。這個會開了比不開還要糟糕。這個小夥子呢,有點一根筋。說我要研究一下,弄個規則,否則我就再也不開會了。他研究上下幾千年的開會討論,有一個結論:人大概是特別愛爭論的一個動物,最難被道理說服的動物,分歧一旦出現。很難在短時間內靠語言交流說服對方。否則吵個幾天幾夜都不會有結果。而且越吵越覺得自己有道理,對方是個笨蛋。所以雙方找到共同點達成一個結論一定要有一個機制。他把這個研究當作一個戰爭一樣。把人的爭論本性當作敵人。最後這個小夥子打贏了。

打贏的結果是1876年羅伯特議事規則。他自費出版買了一千本到處送人。1915 愣頭青羅伯特成了將軍,他修訂了這規則。一開始人家不重視,嘴上沒毛說話不牢的小傢伙行嗎。唉,沒想到,真行,他們一實行這個規則,吵架沒了,會開下去了。墨水瓶,板凳也不亂飛了。結果羅伯特議事規則成了世界上最通行的議事規則。

開會經常有三個問題。

一,跑題:就是你說李連杰,我扯到成龍,我說豬八戒,你扯到溫家寶李鵬。跑得沒個邊了。而且老人家特別愛擺掌故,一開頭,我給你們講個故事,這一講,就講到中飯了。

二,一言堂:這一個一言堂呢,是領導者愛講話,誰是領導就譁譁譁說個沒完,一講就全他講了。第二個呢,農村有一些特別愛講話的。也有從來不講話的。。

三,野蠻爭論:一討論問題,就說你上次多報了五元錢,你不是好孩子,懷疑別人的品德。一百句話中抓住人家一個詞不放。甚至打起來。會議就沒法子開了。

四,打斷:不得打斷別人的正當發言。

羅伯特議事法則的一條就是:主持人來解決以上問題。但是一般的企業往往,領導出現的時候,主持人是不會去提醒領導,「你跑題了」,「你一言堂了」,「你不應該打斷別人的正常發言」,這就是國外的科學的一些理論和方法到了中國往往不適應中國的土壤,不能生搬硬套的典型案例。

其實在華為,已經能夠在大多數會議中,做到發生「跑題、一言堂、打斷、不文明」時,有主持人去提醒,並拉回到正軌上。但是一些會議也做不到,比如:領導比較強勢,領導自己是主持人,主持人是個馬屁精,一些政治敏感問題,就不能去破壞和諧。此處不展開細說。

那麼華為是怎麼去解決這些問題的呢?

1、「以客戶為中心」,所以領導再大,大不過客戶,客戶需求一律允諾,一律搞定。所以大家都是為了搞定客戶,當大家在原則性的問題上不會有大的分歧。

2、 績效導向,一切是按照結果去評價績效的。所以在一些問題上,如果領導提出了某個方案,但是可能存在重大隱患時,底下人是有責任去提醒和反對的。否則造成重大嚴重後果後,領導跑不掉,一樣會修理底下的人。都是拴在一條繩子上的螞蚱。當某個同事提出跟領導不同的意見時,並有價值時,會從績效結果上去認可這個兄弟。這就是教育員工,鼓勵提出反對意見,鼓勵糾正領導的錯誤。

3、 教育主管。華為提倡狼文化,所有的主管能夠被提拔上去,一般都是狼性十足,能講會說,精力旺盛,在開會時balabala一頓,與員工溝通時也是balabala一頓自己說得爽。那麼就會容易造成一言堂,或者跑題。那麼在主管培訓的時候,都會教育帶團隊的人,要會傾聽,會交流,溝通時要把握節奏和分寸。

我曾經支持過CCB的網絡建設一段時間,當時剛去的時候,跟他們的IT規劃部,開了一個會。當時,開會時就是典型的「一言堂」,他們一個領導過來,一頓狂罵:「你們華為的設備怎麼怎麼不行,你們思科的設備也是狗屎,你們西門子服務太差。。。。。。」,建行的人,還有設備廠商的人都被罵蒙了,就聽他一頓牢騷,罵完設備廠商,開始罵自己的員工「balabala」。然後所有人都不知道這哥們想幹嘛,這哥們也講不出自己想要什麼樣的設備,性能和服務。然後氣憤憤就走了。

一言堂、跑題、不文明,這些都不是致命的,最致命的就是「無效會議」。當這位領導走了之後,大家繼續按照自己的思路,方法,繼續討論,然後花2分鐘討論一下,怎麼應付這位領導。所以我們開會時需要的,但是如何開的有效是有套路的。

那麼如何做到呢?

第一、 例行會議,有議題。例如周會,一周例會的議題做事先的安排,不是很隨意的說一下。訂好議題,訂好每個議題的時間,保證不跑題。

第二、 會議要有紀要,每次開會的會議主持人,會議紀要人都明確。會議紀要是很重要的一件事情,也需要很高的技巧,即需要有效參與會議討論,有需要記錄下關鍵要點,不記流水帳。

第三、 會議紀要要分為:

結論(會議結論不隨意更改);

遺留問題(要符合SMART原則);

要有責任人;

要求完成的時間等等。

紀要有模板,提醒大家紀要要符合SMART原則。

第四、 勤跟蹤,要閉環。所有的遺留問題,在下次會議的時候都會回顧,看看是不是完成了,有沒有拖延,直到有個交代。當然,如果返現任務安排有問題,根據評估也會進行問題的關閉和掛起。

第五、 所有的決議都是需要有理有據的,不能是拍腦袋。因為事前拍腦袋,事後就會拍大腿。然後就有人拍屁股走人了。這樣就不會決議是下級服從上級,少數服從多數。當然,這樣的話就會存在效率問題,因為有些問題就會因為短時間研究不清楚,決策不下來。這是就有了CCB(這個CCB不是建設銀行的意思,CCB(Change Control Board) 在CMMI(Capability Maturity Model Integration)中,是「變更控制委員會」的含義,CCB可以由一個小組擔任,也可以由多個不同的組擔任,負責做出決定究竟將哪些已建議需求變更或新產品特性付諸應用。典型的變更控制委員會會同樣決定在哪一些版本中糾正哪些錯誤。CCB是系統集成項目的所有者權益代表,負載裁定接受那些變更。CCB由項目所涉及的多方成員共同組成,通常包括用戶和實施方的決策人員。CCB是決策機構,不是作業機構,通常CCB的工作是通過評審手段來決定項目是否能變更,但不提出變更方案。至少會保證,決策的決議是集體的智慧。)

按照小米UI每周發布的進度,周四一天的內測。我按照華為的流程怎麼套都套不出來。

疑惑點在於:

1、內測是指開發人員自測試,還是測試人員的測試?

2、如果是指開發人員自測試,那麼測試人員在哪裡測試?

3、如果是測試人員測試,那麼開發人員的自測試呢?開發轉測試的點在哪裡?

華為背景的朋友一定會問:測試人員怎麼可能用一天的時間完成測試?

也許有人說,小米的效率就是高。

那麼我們來看一下華為的測試流程,你就知道是否可以壓縮到一天完成相關的測試。

首先說明一點,華為的軟體部門,包括UI、或者網站的開發團隊也是按照小步迭代進行開發的,在產品穩定後,新增需求會拆分成細小的版本,進行最短周期的開發測試。也可能華為的拆解需求的能力弱於小米,但是這裡我們單純談測試流程。

測試是產品開發過程中必不少的環節,在華為的研發人員中,有近三分之一的人員是測試人員。

華為的測試體系在國內算是起步較早,大概經歷了這樣幾個階段:

1) 青銅器時代: 手工作坊式測試

1996年研發測試團隊成立手工作坊方式的研發過程和測試

2) 鐵器時代:IPD和CMM階段

1998年華為與IBM合作,開始引進IPD流程

1999年左右引入CMM理念

產生IPD-CMMI流程

2004年在IPD基礎上開發PTM流程,自動化測試規模開展

2006~2007年左右PTM趨於完善

註:上圖中各個TR點的含義如下:

HLD:概要設計文檔;

LLD:詳細設計文檔;

1. UT

單元測試的對象是LLD中所劃分定義的程序單元或模塊,它也是單元測試用例設計中可測試的最大單元。該測試對象可能由一個或多個函數或者類組成,測試設計就是對測試對象進行測試用例設計。

UT的目的,是通過函數運行來檢查模塊代碼對於LLD文檔的順從性,驗證每個函數的輸入輸出響應,與它在詳細設計文檔中預先定義的是否一致。函數是產品開發實現的最基本單位,下一個實現單位是模塊,從測試的角度看,希望UT完成後,每個函數都牢固可靠,下一步的IT測試將聚焦在函數之間配合能否實現分配需求,而不用擔心函數本身的輸入輸出響應問題。

單元測試比較適合開發人員做。

2.IT

集成測試是指把若干個經過單元測試的單元組裝到一起而進行的測試,集成測試應依據HLD,主要發現接口、依賴中的錯誤或不完善的地方。集成測試的對象為若干個單元測試對象的組合,至少為兩個。

IT的目的,是根據模塊設計對模塊的分解,從已驗證的函數開始,逐層向上集成,得到一個可運行的模塊。

IT可以由開發人員做,也可以由測試人員做。不難看出,UT是面向每一個單元的測試,IT是測試單元之間的接口,可以把UT/IT歸為「單元級」測試。

3.ST

CMM定義的系統測試:系統測試是針對軟體項目組所承擔開發的軟體系統進行的整體測試,將軟體系統作為整體運行或實施明確定義的軟體行為子集的測試。主要採用的測試方法是黑盒測試,即不管程序內部的實現邏輯,以檢驗輸入輸出信息是否符合規格說明書中有關需求規定的測試方法。可見ST的測試對象是規格說明書,更確切的說,是模塊需求規格說明書,所以一般也稱為MST。模塊SRS文檔給出了模塊的輸入輸出的相應要求。MST後,每個模塊是牢固可用的。

4.BBIT

BBIT為模塊間接口測試,驗證模塊之間的接口能不能配合,有時和聯調混在一起,其實目的並不相同。BBIT的目的,是根據系統設計對系統的分解,從已通過驗證的模塊開始,逐層向上集成,得到一個可運行的系統。而聯調一般涉及軟體、硬體或者不同產品間的配合測試。MST和BBIT可以歸到「模塊級」 的測試,一個驗證模塊,一個驗證模塊間的接口。

以上UT/IT/MST/BBIT一般由開發人員完成,系統基本可以運行起來了,測試人員可以開展SDV、SIT、SVT了。

5.SDV

SDV雖然屬於測試人員開展的系統測試,但是有點偏灰盒測試,因為SDV驗證各子系統的配合是否滿足設計需求(DR),對內部的實現還是關注的,驗證多個模塊集成以後是否滿足設計需求。

6.SIT

SIT也是驗證設計需求是否得以滿足,與SDV不同的是,SIT完全把系統當作一個黑盒來測試,不關心內部具體的實現。實際應用中,SDV和SIT 雖然都屬於系統一級的測試,往往由不同項目組(子系統)的測試人員分別測試,他們只關注各自的子系統,所以還是把SDV和SIT歸為「子系統級」的測試比較好。

7.SVT

SVT是驗收測試,其測試對象是產品包需求OR。產品包需求給出了產品的範圍,從產品可能的應用環境的角度刻畫系統,SVT的目的就是確認(或驗收)產品包需求給出的各種應用場景產品均能滿足。

即使是網頁開發項目,外包項目,終端的項目,華為的測試仍然會經歷以下幾個測試階段:

SIV:System Integration Verify 系統集成驗證

SDV:System design Verify 系統設計驗證

SIT:System Integration Test 系統集成測試

SVT:System Verification Test 系統確認測試(系統模擬測試)

迭代結束後,在正式對外發布前,會將歷次迭代實現的所有Story再做一次測試,測試 的主體在測試人員,包括功能、非功能,並要給出測試報告。這個活動就稱為SIT或發布測試。

如果Story 測試、迭代SDV測試都自動化了,則本次測試主要是執行自動化用例、如前 面有測試不充分,則補充測試,以及詳細性能測試。如果用例自動化程度不高,則本次測試會 刷選部分用來進行測試。測試結束後需要給出測試報告。

SIT測試重點:所有迭代開發完成後,由迭代開發團隊中的測試人員完成對全系統進行回歸測試,達到TR4A的質量標準。遺留問題要滿足TR5的DI(缺陷密度)目標。

4) 集團軍時代:IPD-RD-I&V階段

2008年左右開始推廣敏捷,研發組織演變為PDU方式

引進迭代開發模式,形成IPD-RD-I&V流程

系統集成與驗證流程:IPD-RD-I&V(I&V:Integrationand Verification)

項目管理論壇

《測試計劃》編寫完成後需要進行評審,參與人員有項目經理,測試經理和系統工程師,測試組長需要根據評審意見修改《測試計劃》,並上傳到VSS上,由配置管理員管理。

項目管理者聯盟

待開發人員把《SRS》歸納好並打了基線,測試組長開始組織測試成員編寫《測試方案》,測試方案要求根據《SRS》上的每個需求點設計出包括需求點簡介,測試思路和詳細測試方法三部分的方案。《測試方案》編寫完成後也需要進行評審,評審人員包括項目經理,開發人員,測試經理,測試組長,測試成員和系統工程師,返回評審結果。測試組長組織測試成員修改測試方案,直到評審通過後才進入下個階段――編寫測試用例。

測試用例是根據《測試方案》來編寫的,通過《測試方案》階段,測試人員對整個系統需求有了詳細的理解。這時開始編寫用例才能保證用例的可執行和對需求的覆蓋。測試用例需要包括測試項,用例級別,預置條件,操作步驟和預期結果。其中操作步驟和預期結果需要編寫詳細和明確。測試用例應該覆蓋測試方案,而測試方案又覆蓋了測試需求點,這樣才能保證客戶需求不遺漏。同樣,測試用例也需要通過開發人員,測試人員,系統工程師的評審,測試組長也需要組織測試人員對測試用例進行修改,直到評審通過。

在我們編寫測試用例的階段,開發人員基本完成代碼的編寫,同時完成單元測試。轉測試部後直接進行系統測試。測試部對剛轉過來的測試版本進行預測試,如果軟體未實現CheckList清單上的10%,測試部會把該版本打回。否則,軟體轉測試部進行系統測試。根據《測試計劃》進度安排,測試組長進行多輪次的測試,每輪測試完成後測試組長需要編寫測試報告,其中包括用例執行通過情況,缺陷分布情況,缺陷產生原因,測試中的風險等等,這時測試人員就修改增加測試用例。待到開發修改完bug並轉來新的測試版本,測試部開始進行第二輪的系統測試,首先回歸完問題單,再繼續進行測試,編寫第二輪的測試報告,如此循環下去,直到系統測試結束。在系統測試期間,測試人員還需要編寫驗收手冊,驗收用例和資料測試用例等。

修改問題單,直到滿足規定的缺陷密度,才能夠通過相關TR點。

如果驗收發現的缺陷率在SOW規定的範圍內,那麼驗收成功。如果超過規定的缺陷率,需要質量回溯。

雷軍說:

那麼我們看華為的硬體測試過程,就知道成本出在哪裡了。

第一、 全程測試參與的流程:

第二、 多層級的測試與試驗

對於電路的設計,會進行單元測試、整機測試、小批量試製、HALT試驗、環境試驗、EMC試驗、熱測試、進入生產環節之後會進行HASS試驗。特殊的設備還會進行鹽霧試驗、硫化試驗。整機結構還會進行:跌落試驗、擠壓、扭曲等等。

HALT(Highly accelerated life test)高加速壽命試驗。HALT是一種發現缺陷的工序,它通過設置逐級遞增的加嚴的環境應力,來加速暴露試驗樣品的缺陷和薄弱點,而後對暴露的缺陷和故障從設計、工藝和用料等諸方面進行分析和改進,從而達到提升可靠性的目的,最大的特點是設置高於樣品設計運行限的環境應力,從而使暴露故障的時間大大短於正常可靠性應力條件下的所需時間。

環境試驗是為了保證產品在規定的壽命期間,在預期的使用,運輸或貯存的所有環境下,保持功能可靠性而進行的活動。是將產品暴露在自然的或人工的環境條件下經受其作用,以評價產品在實際使用,運輸和貯存的環境條件下的性能,並分析研究環境因素的影響程度及其作用機理。

HASS應用於產品的生產階段,以確保所有在HALT中找到的改進措施能夠得已實施。HASS還能夠確保不會由於生產工藝和元器件的改動而引入新的缺陷。

硬體工程師最怕HALT試驗,因為會超越器件的限制範圍去進行測試。但是為什麼要這麼做呢,其實是找到整個設備的最薄弱點,然後對最薄弱點進行改進。但是由於超出了器件的允許的工作範圍,異常的情況特別多,原因也複雜。但是按照規範必須分析清楚,並給出優化措施。這是非常燒腦的意見事情,很多經典的問題都是HALT試驗過程中產生的。

由於我本人非測試出生,有講的不對的地方請專家指正。現在小米開始不復當年風光了,想到雷軍的5%,就寫下這些。

相關焦點

  • 華為內部流程管理系統(附關鍵流程圖)
    華為的流程管理要求不斷適應市場變化和公司事業拓展的要求,因時而變,因事而變,對原有業務流程體系進行簡化和完善。華為把流程管理分為運營流程(包括戰略管理、集成產品開發、客戶關係管理、集成供應鏈)和管理支持流程(各職能部門的流程)。
  • 詳解AI 硬體產品開發流程
    本文對 AI 硬體產品開發中各階段的資源配置展開了資源配置分析、並簡單介紹了項目管理到底在做什麼。項目流程詳解,針對上一篇《項目管理:智能硬體項目研發流程》的細化,解釋任務串並行。本篇假定涉及硬體(HW)、系統及應用軟體(SW)、結構(MD)、外觀設計(ID)、網際網路平臺。下面進行研發流程銜接說明,將按照項目啟動、設計開發、設計驗證、生產驗證、生產發布這個主脈絡進行囉嗦敘述,再強調一遍,因為涉及串行與並行,可能有點兒跳躍。
  • 上海優捷信息技術有限公司招聘(硬體驅動開發工程師,硬體電路設計...
    公司目前開發團隊中,85%以上有本科及本科以上學歷,團隊成員具備多種軟體、硬體技術實力和豐富的開發經驗, 目前已形成了以通信技術領域項目開發外包和軟體外包服務兩大核心業務體系,在通信業內具有較強的影響力。 公司在研發流程上嚴格遵守CMMI要求,並通過了CMM3/CMMI3認證。
  • 老工程師揭秘華為硬體開發:超詳細文章教你成為高手(中)
    華為公司做為流程建立的典範,為了持續改進質量管理體系、提高客戶的滿意度,在公司內部提出了質量回溯的概念。在降低缺陷的糾正成本、提高產品質量、提高顧客滿意度方面取得了一定的成績,是質量回溯活動成功開展的典型企業。
  • 硬體設計 | 工作流程
    在學習電路設計的時候,不知道你是否有這樣的困擾:明明自己學了很多硬體電路理論,也做過了一些基礎操作實踐,但還是無法設計出自己理想的電路。
  • 華為硬體工程師感悟:做了10多年研發後才真正懂得師父的話
    但說易行難,之前的我也就是一名只會把原理圖上的器件簡單拼接的「連連看」硬體工程師,對大硬體領域的知識和結構完全一知半解。而現在,沒有結構,沒有互連,更沒有熱設計和工藝,所有和硬體相關的設計都要自己一肩挑,技術上的短板一下凸顯出來。我開始反思,以前自己做得多好,很大程度上是依賴於公司的大平臺,離開了平臺,又缺少個人的技術積累,如何能確保自己在硬體領域做到最好呢?
  • IC設計分類與流程
    [CC BY 2.0])IC設計流程是指IC設計和開發的整個過程,以便IC可以在半導體工廠製造。這包括使用複雜的設備和過程模型,以及數學工具和軟體來捕獲、模擬、優化和檢測過程中的錯誤。工程師、技術人員和設計人員的知識和專業技能,以及現代電子設計自動化設計(EDA)或計算機輔助設計(CAD)工具,是將產品和電路概念轉化為可用於生產的 IC 設計的關鍵方面。
  • 硬體案例分析之硬體工程師的必備知識條件(內部資料透露)
    作為一名硬體工程師,他負責整個產品開發過程。因此,有必要準確把握每個時間段。 該項目將有一個項目周期。 雖然項目經理控制時間,但具體操作由硬體工程師完成。正在進行的項目: 示意圖和詳細設計計劃: 5周,包括參考設計和示意圖審查。 Pcb 布局: 4周,包括協調結構、 PCB 電路調整或設備重選。
  • 華為要收縮企業業務!任正非內部重磅發言:華為不可能簡單學阿里...
    他指出,華為雲要研究華為雲由哪些要素構成,華為雲不是公司傳統硬體設備的領先優勢,開發產品並銷售產品,而是華為面向客戶商業模式的改變,即由賣產品改變為賣雲服務。「必須構建賣雲服務的能力及支持面向客戶提供雲服務的運營、運維能力。我們向亞馬遜、微軟學習的同時,也要將本身30年的網絡積累做成雲服務市場獨有的優勢,開創更大的空間,構建差異化特色。」任正非說。
  • Xilinx FPGA/Zynq設計中使用HLS實現OpenCV的開發流程
    使用Xilinx公司的VivadoHLS高級語言綜合工具,可以輕鬆實現OpenCV C++視頻處理設計到RTL代碼的轉換,輸出Zynq的硬體加速器或者直接在FPGA上實現實時硬體視頻處理功能。  2.2 在FPGA/Zynq開發中使用VivadoHLS實現OpenCV的設計流程  設計開發流程主要有如圖2.2三個步驟。  1. 在計算機上開發OpenCV應用,由於是開源的設計,採用C++的編譯器對其進行編譯、仿真和debug,最後產生可執行文件。這些設計無需修改即可在 ARM內核上運行OpenCV應用。
  • ​2020華為鯤鵬應用開發高校師資訓練營
    >部署與發布技術實踐:鯤鵬交叉開發環境搭建實驗實踐:Redis rpm打包實驗實踐:Linux私有鏡像製作實驗 下午2:00-5:00 第六章:華為鯤鵬平臺應用軟體移植調優綜合實驗移植與調優綜合實驗流程介紹
  • 華為發布全新機器人流程自動化產品
    原標題:華為發布全新機器人流程自動化產品   阿里雲發布
  • 華為昇騰師資培訓沙龍·南京場|華為昇騰 ACL 語言開發實踐全程...
    8 月 24 日,在華為昇騰師資培訓沙龍·南京場上,華為南京研究所所長郭坤表示,在本次對業界做出生態能力開放前,華為內部就建立了全員認證及賦能活動,首先在在內部將生態能力質量打磨好,以加速相關推廣。而在晶片的使能和應用使能兩個方面而言,華為南京研究所把自己定位成華為的 AI 使能能力中心,在該領域有著豐富的積累及完整的人員構成,在晶片使能(異構計算架構)方面,深入研究如何達到軟硬體解耦、端邊雲協同的高技能算子開發和圖融合技術,體現了華為在該領域紮實的布局。
  • 華為發布昇騰AI全棧軟體平臺 AI開發跨越算力應用鴻溝
    [中國,深圳,2020年8月10日]今日,在深圳舉行的昇騰AI新品全球發布會(HAI 2020)上,華為發布業界領先的昇騰AI全棧軟體平臺,包含異構計算架構CANN 3.0、全流程開發工具鏈MindStudio和昇騰應用使能MindX,覆蓋基礎軟體到應用使能。
  • 項目管理:智能硬體項目研發流程
    這裡講的研發流程僅指產品需求已經確定了,將產品需求變為產品的研發過程,不包含前期的市場部分,也不包含產品上市以及運營過程。01 總體流程智能硬體看似複雜,拆解出來脈絡很清晰。包含硬體(HW)、軟體(SW)、外觀(ID)、結構(MD)、網際網路平臺。
  • 華為昇騰師資培訓沙龍·南京場 |華為昇騰 ACL 語言開發實踐全程...
    8 月 24 日,在華為昇騰師資培訓沙龍·南京場上,華為南京研究所所長郭坤表示,在本次對業界做出生態能力開放前,華為內部就建立了全員認證及賦能活動,首先在在內部將生態能力質量打磨好,以加速相關推廣。而在晶片的使能和應用使能兩個方面而言,華為南京研究所把自己定位成華為的 AI 使能能力中心,在該領域有著豐富的積累及完整的人員構成,在晶片使能(異構計算架構)方面,深入研究如何達到軟硬體解耦、端邊雲協同的高技能算子開發和圖融合技術,體現了華為在該領域紮實的布局。同時,華為南京研究所的品牌是活力和聚力,而生態的本質也正是「活力」和「聚力」,華為也將繼續攜手眾高校,共創未來昇騰生態。
  • 解析如何將MATLAB/Simulink應用於一整套機器人設計開發流程
    機器人系統主要由機械結構、傳感器、嵌入式硬體、自動控制、決策執行算法這五個部分組成,MATLAB對這幾大部分的開發研究都提供了很好的支持。相對於其他仿真環境,MATLAB在機器人的開發研究中有著極大的優勢:硬體多樣化:預設Arduino和樹莓派的硬體包,支持微控制器、PLC、FPGA、GPU等多種設備。不僅僅可以仿真,更可以對硬體進行直接的控制。
  • 三大EDA 軟體公司相繼斷供華為,臺積電是否能挺住壓力?
    臺積電錶態繼續出貨海思,主要是經過內部縝密評估後,現階段不需改變出貨和技術提供方式,對海思正常出貨,臺積電對本季財測和下半年業績強勁增長預期不會改變。   但臺積電卻同樣面臨著美國方面的政策風險,華為在缺少Cadence、Mentor、Synopsys三大EDA軟體公司斷供後,後續晶片設計實力將會大打折扣。
  • 認識硬體工程師及其工作內容
    每個公司都會有自己的硬體電路設計規範,這個需要自己好好去看一下,並用在實踐中。硬體電路設計主要針對電路設計,裡面涉及的東西比較多,對電路模塊的設計後面會有單獨的章節討論。硬體電路設計需要足夠的經驗與理論知識。硬體設計開發流程    硬體部門開發流程指定後,需要硬體部門人員嚴格按照開發流程完成開發工作。
  • 華為Mate40 Pro手機拆解圖賞:內部結構、零件等設計對維修友好
    華為在海外舉行全球新品發布會,正式發布了全新一代的旗艦手機Mate 40系列,包括Mate 40、Mate 40 Pro、Mate 40 Pro+和Mate40 RS保時捷設計四個版本。