1. 程式人生 > >談嵌入式產品的敏捷開發

談嵌入式產品的敏捷開發

     最早聽人說起敏捷開發,就有點感同身受。雖然至今也沒有深入去了解過,但我覺得敏捷這個詞語已經把它的精髓表達出來了。敏捷開發就是果斷開始,快速搭建,迭代,還有勇於破立。

     一直以來,我覺得敏捷開發是屬於網際網路領域的,因為有那麼多高階語言,隨手拈來的元件,有的專案一兩個星期就可以搭建原型。而與傳統的嵌入式開發沒有什麼關係。

    最近開發一款移動路由器產品, 忙碌中猛一回頭已經快三月了,就在某一天大腦裡閃過“嵌入式產品的敏捷開發”這麼一個念頭, 細細品味, 其實自己不是一直在踐行這樣的理念麼, 難道它不正是指出了嵌入式產品開發的成功之道麼?

    嵌入式開發已經過了一行行敲C程式碼的時代,那個時候流行傳統的軟體工程思想,講究架構設計,API定義,每增加一個新的功能或需求都非常費力,基本要從零開始。

隨著廣泛地在嵌入式產品中採用Linux和開源軟體的蓬勃發展,比如Android,OpenWrt, DroneCode,嵌入式的開發也可以飛起來。增加一個新的功能也許只要在menuconfig中配置,或者安裝它。已經不再是用C語言,而是用shell, python, java等等輕鬆的語言。這些為敏捷開發的實踐提供了基礎。

    敏捷開發的時代,我們不需要像以前那樣過於關注實現細節,而是應該快速的把各種東西,元件拿過來,裝上去。交付測試交付市場,把產品迭代成熟。要果斷開始,勇於破立。

    我把嵌入式產品的開發分成五個階段,分別是

1.  前期技術調研, 方案選型

2.  快速原型搭建階段

3.  測試迭代快速成熟階段

4.  市場應用快速反饋階段

5.  維護階段

    下面就過程中工作量最大的兩個階段深入討論敏捷開發理念的應用.

    首先, 快速原型搭建階段

原型搭建,就是把產品先拼起來。產品有很多功能,其中每一個功能的支援在過去都是很大的一項任務,而現在大多都能找到開源的實現。所以這個階段,就是快速的把這些功能加上去,貫通起來,對於無可避免需要自己開發的需求,先實現基本功能。先把產品的最開始的原型建立起來。

有了產品初始原型建立的經歷,我們會很清楚有哪些問題。這個時候就需要破,想明白哪些地方要調整,哪裡會有風險,對於自己開發的模組,一定要遵循已有的架構,不能自成體系。這就叫做,破!也就是用於重構,其實很多時候只是某些自己開發的模組的重構。

破完就是立,立之前,一定要多寫文件,多討論和規劃。把發現的問題提出來,潛在風險找到,定義重構的目標,爭取一次成型。

這個階段,就是快速地把產品拼出來,然後重構它,打造功能完整可以交付測試的產品原型。

    其次,測試迭代快速成熟階段

產品成型後,就是交付測試。只有通過一輪一輪頻繁的測試和迭代,才能把產品打造成熟。這個階段,也是人力物力投入最多,節奏也最緊湊的階段,就好像打鐵要乘熱,稍有惰懈就可能缺少火候。因為人的思維是連續的,在集中解決問題的時候是最高效的。這段時間的開發熱情和頻繁的討論也更有利於解決問題。

    即使在這個階段,也要勇於破立。尤其對於有些模組,經過多輪迭代,變得不清晰,或者有更清晰的實現方式,也要用於打破舊的實現,採用新的思路。

    最後我想說的是,大多數軟體開發都需要敏捷精神。對於新的東西,需求,果斷開始,快速構造初始原型,這樣你才能理解它,知道下一步怎麼辦。

    敏捷開發就是果斷開始,快速搭建,迭代,還有勇於破立。敏捷開發是嵌入式產品開發的成功之道。