軟體時程的規劃要怎麼根專案的時程搭配呢? 且待我分解來看...
前面有提到, 在系統整合廠的專案時程是以硬體為主, 通常會有幾個階段
第一階段: 通常第一塊板會是大板, 用來做評估用, 如果是延伸機種可能會跳過這個階段.
第二階段: 評估沒問題後, 會打一塊開發粄, 就是正常大小的板子, 正式進入開發階段, 每次板子回來燒入軟體後就開始進行一系列的訊號量測, 以及各式的測試和偵錯流程, 同時機構的工程師也差不多根據ID設計完成了機構圖, 準備進入開模打樣階段.
第三階段: 進入系統整合階段, 硬體板子與機殼開始整合, 如果有RF高頻的部分(如Wifi, BT, GPS,3G, LTE 等) 也要進入第二階段的調教 (加上外殼後特性都會改變).
系統整合階段通常會經過幾個輪回, 每次板子機殼回來後, 經過測試, 有問題的部分經過修改電路, Layout, 修模, 天線調整後再進入下一個輪迴.
這個階段也開始進入工廠產線, 有的公司會有工廠專門PE負責, 有的公司會由RD負責, 將整個產線的IQC, SMT, 檢測, 組裝, 測試, OQC 流程建立起來, 同時調教生產的良率.
第四階段: 經過幾次的系統整合階段, 生產良率符合要求後, 接下來就會進入試產階段, 這個階段的任務是調教產線的產能, 在這個階段硬體, 機構, 高頻的設計應該就要固定不能再修改了. 產線會將產能提升, 測試產線在大量生產時的問題, 如果沒問題的話就可以最入最後階段.
第五階段: 試產達到要求後, 最後才會進入量產階段.
奇怪? 以上怎麼都沒提到軟體呢?
沒錯, 因為軟體是持續開發的, 所以沒有所謂的開發階段, 整合階段, 試產量產階段. 在第一階段第一塊板子的時候, 軟體就要準備好了(不然要怎麼測試?), 但是換個角度想, 沒有板子要怎麼開發軟體? 這是"雞生蛋蛋生雞"的問題!
所以軟體的時程規劃就跟純軟體的開發完全不同了. 首先, 針對第一塊版子, 可以以廠商的 Reference board (工板)為開發板, 透過BSP的修改產生第一個軟體版本, 這個版本很多功能是有問題的, 等版子回來後, 第一件事就是要讓它開機, "運氣好"的話, 拿回來就可以開機, 如果開不了的話, 就痛苦了, 軟硬體工程師要"日夜"合作, 想辦法在最短的時間內讓它開機, 免得影響到後續的開發工作.
最痛苦的階段突破後, 接下來就進入下個階段, 目標是將基本的功能完成. 也就是讓每個模組基本功能都能運作, 讓硬體可以做測試. 這個部分要在硬體第一版就完成. 這樣硬體工程師才能依據測試結果修改下一塊板子.
接下來軟體的任務就是將所有功能完成(Feature Complete), 這個時程最好能在開發板階段就完成, 因為前面說過到系統整合階段就會導入到產線, 所以最好所有的功能都能完成, 才能在產線進行完整的測試流程.
在Feature Complete 之後, 下個目標就是永無止境的Debug了, 測試人員會開始加入進行測試, 產生一個又一個的業績 (Bugs), 軟體工程師就要跟時間賽跑, 儘早的把它解決掉. 這個階段除了Debug外, 還會進行效能的調教, 以及Power comsumption 的調整, 目標達到低功耗和高效能兩個目標.
以上的工作要在試產前完成, 試產除了硬體不再修改外, 最好軟體也能固定, 之後量產才不會因為軟體的改變而產生新的問題.
茲將所有重要時程先後順序大致整理如下, 軟體的時程規劃就是抓住這幾個時間點去訂出日期, 然後往下WBS展開, 這樣就很好預估了.
第一版軟體 -> 評估板 (硬體) -> 基本功能完成 (軟體) -> 開發板(硬體) -> Feature complete (軟體) -> 系統整合板 (硬體) -> Debug, 效能調教, 耗電流調整 (軟體) -> 試產(硬體) -> 量產 (硬體).
PS: 以上時程是理想狀態, 但天有不測風雲, 計畫趕不上變化, 實際上規劃是會常常Dealy 的, 不過軟體有個好處--同一個硬體可以隨時更新軟體, 因此軟體有問題的時候, 就常常會有Hot fix 或是更新版本的出現, 反正更新軟體就好了嘛! 不過這種情形能避免還是要儘量避免啦!