项目开发流程总结
這一年來基本只在開發一下小項目,有多小呢,一個硬件工程師,一個嵌入式軟件工程師,一個結構工程師,一個PC上位機開發工程師,還有市場SE,PM、OPM。項目雖小,五臟俱全,硬件工程師是一個系統性思維很強的人,從她身上我也學到,慢慢地自然而然開始思考如何去做一個產品。也可以說,我們之間互相推動著,最終把這件事給做好了。
T0:硬件工程師首先明確了系統需要獲取那些信息,要設計什么硬件功能,選型,還要考慮供應商情況,備貨周期,畫完原理退后,出一份設計文檔,描述嵌入式軟件要使用哪些接口,控制什么電平達到什么效果等等,寫這個文檔過程她也對自己的原理圖設計做了一次review,方案設計出來后,組織硬件工程師組內review。
軟件工程師維度,初步設計方案功能,將主要的feature轉化為詳細的功能,設計協議,初步考慮軟件架構,對于一些繼承性較強的公司,可能會有通用平臺,軟件架構的設計就轉化為對平臺的應用,組織功能定義review。
T1: 實現基本功能,軟件、硬件bring up,這個時候可能會發現一些設計缺陷,以及功能缺失,硬件進行迭代。硬件與軟件配合做信號完整性分析,修復設計缺陷但未暴露出問題,軟件制定開發優先級,實現了主要的功能點,滿足demo需求。一個嵌入式項目有很多東西是通用的,log記錄用于定位查找問題,升級是必須的,測試接口定位硬件問題,說著說著沒有突出重點。
我想說的是,一個項目,從市場SE來了需求,很多是非專業的,所以有些也是不可實現的,這個時候需要對需求整理,以及講清楚將做哪些,哪些不做,將需求轉化成開發可執行的文檔,SE寫的是porposal,作為開發人員,要寫出feature list,還有制定功能開發的優先級,以及每個節點要達到哪些目標,接下來就是書寫軟件設計文檔,在軟件開發過程中不斷補全開發文檔,對一些調試bug也記錄下作為調試筆記,人類學習很大一部分就是總結,跟應試教育的時候做錯題本類似,這些記錄下的問題在空閑時候又被翻閱,就能極大地避免以后犯同樣的錯誤。軟件設計文檔對于功能邏輯部分要劃分成不同模塊,畫出流程圖,以前上學時,我總覺得寫個C語言還要畫流程圖好麻煩,確實對于簡單的設計那就是麻煩,對于有一點邏輯復雜,流程圖能很好地幫你梳理程序邏輯,避免做出一些錯誤的設計,而且當程序跟著流程圖去設計,你也會發現整個程序非常清晰,也不容易出現問題。當然,在這個項目開發前,我還沒有這樣的覺悟,而在我后來補充軟件設計流程圖中,我發現了一些設計的邏輯錯誤,如果沒有去梳理流程,那些bug將造成嚴重的影響,因為有些不容易被發現。
在我完成了log設計,升級,加密芯片的設計,保護程序安全,之后,我接到一個通知,需要對軟件可靠性做測試,當時在我的理解維度里,硬件通過高低溫做老化,可以測試硬件可靠性,軟件的可靠性是怎么定義的呢?后來,我了解到是用測試用例覆蓋來證明軟件的可靠,所以,接下來就是寫測試用例,測試用例分幾個維度寫,硬件測試、協議測試(參數遍歷)、壓力測試、異常case測試、老化測試、用戶視角測試等等,在寫這些測試用例過程中,我也對著程序做了一遍檢查,是不是滿足這些要求,也發現并解決了一些問題,這些還是在真正測試之前就解決的問題。之后就是執行測試用例,修復設計存在的問題,觀察現象是否是滿足期望,不滿足時就要去解決它。
產品的功能,其實決定于一個工程師的品味,有些東西你可能不做也行,但是你覺得那樣做更好,這個時候請跟隨你的品味走,因為這樣你至少能輸出自己的品味,結構外觀也是結構工程師的品味。
做了測試后,就是準備pre-p0,要生產就要治具,所以也要著手開發治具,治具的目的就是檢測電源與鏈路,電壓對不對,鏈路通不通,這次治具的設計是硬件工程師主導的,她做了全功能測試檢查,每個MOS的開關作用都做了檢查設計,后來這個治具的開發讓我基本在工廠蹲了一周(因為治具太大,需要用到氣泵,只能在工廠調試)。治具的加工工差導致了有些探針下壓后沒有對準,造成測試失敗,這個問題是板子比較大,累計公差,還有就是硬件工程師留的測試點還可以更大,有些相鄰較近的電是比較小的
有了治具,可以走生產了,生產流程需要上位機開發支持,于是我們制定了每個工位要做什么,以及我寫了每個工站的上位機開發需求,生產流程的梳理是一件很有意思的東西,我們討論了一遍又一遍,來料檢查之類的,MES過站要怎么做,數據要怎么上傳記錄,要能追溯產品的品質。
還有一點,可靠性測試,pre-p0,p0,p1,p2,每次試產的產品都需要做可靠性測試,以說明這批次的生產沒有問題,有問題就要改進工藝,以期望做到下一批次沒問題,可靠性測試文檔一開始是SE同事參照同類產品寫的,我看了之后發現很多不可執行的東西,功能正常沒有定義怎么檢查才算正常,后來,我又開發了測試狀態輸出,以及完成文檔該怎么檢查,可惜工廠工人的執行力太差,最終效果只能發現一些很膚淺的問題,做壞沒壞的區分,后來我也與QA去參與可靠性測試,驗證一些重要功能。
我前面所述的,多是站在一個嵌入式工程師的維度去看這個項目,項目的分工不一樣,硬件工程師還要對接到生產相關,認證,結構工程師一直在做模具溝通,材料選擇,處理工藝,結構選型,如螺絲啊之類。OPM組織開會,推動項目進展,PM協調資源,比如自動上傳服務就是用到一個現有的方案,協調到資源就可以快速部署。
總結
- 上一篇: 用户画像TGI
- 下一篇: Arduino入门教程