配合軟體工程的企業參訪,一大早一行人浩浩蕩蕩騎機車到研華的林口園區,映入眼簾的是斗大的 Advantech 地景裝置 ,附近有一點荒涼,但是研華園區本身非常高級有設計感,有吸引到我想賣肝!
下面分兩部分介紹研華,一部分是企業簡介(就是 HR 嘴砲部分XD),另一部分是軟工問答。廢話不多說,正文開始~
一、公司簡介
研華是全球工業電腦的領導廠商,提供嵌入式電腦與工業自動化的解決方案,產品涵蓋工業電腦、嵌入式系統、單板電腦、工業用主機板、液晶平板電腦、醫療用電腦、車載電腦、工業用 I/O、資料擷取模組、工業通訊、自動化控制器、人機介面、數位電子看板等。產品廣泛應用於工廠與機械自動化、環境監控、電信、交通、醫療、POI/POS、樓宇自動化、家庭智慧系統、無線網路應用與網路通信應用等。
研華為 Intel EDA 的 Premier Partner 及 Windows Embedded Gold Partner,自 1983 年以來持繼以先進的技術及全球化的服務,在產業用高可靠度的電腦平台中維持領先地位。
二、軟體工程相關
基本上聽完研華 RD 的分享後,我覺得軟工在學術界與業界最大的差距在於業界有 Costdown 和 KPI 考核本身對於員工影響等問題。
業界通常取軟工的精神對自己的流程做有效的管控,而非每個詳細的軟工步驟,以避免因為文件過多造成僵化與成本上升的問題,實際的操作十分仰賴管理者的經驗與能力。以下是一些實際的例子。
- test-driven 的開發方式與 KPI 考核方式相違背,較難以導入。
- UML diagram 在軟硬整合或跨領域整合時,其他非軟體部門會看不懂,因此通常以最基本的架構圖做溝通。
- 撰寫過多文件會分散人力造成成本上升,因此文件還是以達成 「溝通」目的為主。而在政府標案才會落實文件的產出。
除了上述的業界分享外,下面再對一些軟工的題目做較詳細的敘述。
1. Coding Standard、Naming convention 與專案執行
Code Standard 不是只有命名規則而已,包含元件的架構與資料存取的方法,既有元件的使用以及新元件的納入,資料庫的設計方針和實作方針,程式碼的版本與組態變更控制,文件化和管理等等,都應算在 Code Standard 的泛疇之中。
在參訪中,RD們提出了一些見解:
- 程式碼盡量不要寫註解:好的程式藉由命名規則和架構本身的明確性,讓往後的維護者能直接讀懂該程式碼,這是一個開發人員應具備的功力。註解盡量放在檔案最上頭,用以描述該程式的主要作用。
- 針對每個語言都有建立 Coding standard 並實行:建立 Code Standard,讓每個開發人員有遵循的依據,而新進人員如果能快速上手符合 Coding standard 將會是其一大優勢。
- 版本控制:內部→CSV、open source→git
[補充] Naming Convention
如果同一類型的物件很多 (例如在 DetailsView 中有很多欄位),會將變數的型別簡稱 (如:btn) 訂在後面。當在寫 Code Behind 的程式時,透過 Intelli-sense 打欄位前幾碼就可以馬上找到物件,不用選擇太多,如果 btn 寫在前面,在 Intelli-sense 時就會選一推物件!
例如說:DetailsView 的 TemplateField 中,有欄位 Name 並用到 TextBox 控制項,我會將 ID 命名成 Name_btn
如果以物件少,但類型不一樣,我才會將型別簡稱打在前面,唯一目的就是讓 Coding 的工作比較有效率的進行。
下面是一個 Naming Convention Table 範例:
物件名稱
|
簡稱
|
全名
|
Button
|
btn
|
意義_btn
|
Calendar
|
cld
|
意義_cld
|
CheckBox
|
ckb
|
意義_ckb
|
……
|
……
|
……
|
2. 預估資源與時間
通常以過去的類似的專案時程來預估,但業界應用的情況上預估時程會差很多。感覺不太願意透漏真正的數字... 其中一位 RD 估大概 70% 左右。
不過他們有補充道,通常有固定目標、或以前做過的專案都可以提前完成,而通常需求會一直變動則會一再延宕,實際拿捏的準度要看「客戶的素質」。另外,也提到開發的小眉角,在寫 code 時,會先預估客戶之後可能會調哪部分,在 code 中先預留調整彈性。
3. 開發過程實際遇到的問題
與不同部門或領域的協作:RD 們有提到一個和設計公司合作的案子,工程師先做 UI prototype,美工再進一步美化,磨合了一些時間,是很寶貴的經驗。
有關領域突破或創意發想的案子:預估 effort 會有 monitor,當投入的資源預估錯誤時,通常還是會加時間完成,讓好的創意可以實做出來。
三、照片集錦
一進大廳就是這隻可愛的機器人歡迎我們的到來,他會介紹和握手喔~ 不會的問題都推給櫃檯美眉超好笑XD 這隻機器人裡面的電腦就是研華做的喔!
一般的中控室都是放在大家看不到的地方,但研華把它放在最顯眼的展示區,介紹他們開發的各種系統實際的應用情況。
另一個展區,很大很漂亮,有各式主題的整合解決方案,醫療、運輸等題目令人印象深刻!
高科技樓中樓研討室、氣派會議廳和休憩空間、有生氣的綠建築,真是美好生活的表率^^ 來玩絕對不後悔! 工作就不知道了...XD
References
研華科技 Advantech
Coding Style – 程式設計風格對軟體開發的影響