谈嵌入式产品的敏捷开发

来源:互联网 发布:淘宝宝贝详情图模板 编辑:程序博客网 时间:2024/05/16 15:02

     最早听人说起敏捷开发,就有点感同身受。虽然至今也没有深入去了解过,但我觉得敏捷这个词语已经把它的精髓表达出来了。敏捷开发就是果断开始,快速搭建,迭代,还有勇于破立。

     一直以来,我觉得敏捷开发是属于互联网领域的,因为有那么多高级语言,随手拈来的组件,有的项目一两个星期就可以搭建原型。而与传统的嵌入式开发没有什么关系。

    最近开发一款移动路由器产品, 忙碌中猛一回头已经快三月了,就在某一天大脑里闪过“嵌入式产品的敏捷开发”这么一个念头, 细细品味, 其实自己不是一直在践行这样的理念么, 难道它不正是指出了嵌入式产品开发的成功之道么?

    嵌入式开发已经过了一行行敲C代码的时代,那个时候流行传统的软件工程思想,讲究架构设计,API定义,每增加一个新的功能或需求都非常费力,基本要从零开始。

随着广泛地在嵌入式产品中采用Linux和开源软件的蓬勃发展,比如Android,OpenWrt, DroneCode,嵌入式的开发也可以飞起来。增加一个新的功能也许只要在menuconfig中配置,或者安装它。已经不再是用C语言,而是用shell, python, java等等轻松的语言。这些为敏捷开发的实践提供了基础。

    敏捷开发的时代,我们不需要像以前那样过于关注实现细节,而是应该快速的把各种东西,组件拿过来,装上去。交付测试交付市场,把产品迭代成熟。要果断开始,勇于破立。

    我把嵌入式产品的开发分成五个阶段,分别是

1.  前期技术调研, 方案选型

2.  快速原型搭建阶段

3.  测试迭代快速成熟阶段

4.  市场应用快速反馈阶段

5.  维护阶段

    下面就过程中工作量最大的两个阶段深入讨论敏捷开发理念的应用.

    首先, 快速原型搭建阶段

原型搭建,就是把产品先拼起来。产品有很多功能,其中每一个功能的支持在过去都是很大的一项任务,而现在大多都能找到开源的实现。所以这个阶段,就是快速的把这些功能加上去,贯通起来,对于无可避免需要自己开发的需求,先实现基本功能。先把产品的最开始的原型建立起来。

有了产品初始原型建立的经历,我们会很清楚有哪些问题。这个时候就需要破,想明白哪些地方要调整,哪里会有风险,对于自己开发的模块,一定要遵循已有的架构,不能自成体系。这就叫做,破!也就是用于重构,其实很多时候只是某些自己开发的模块的重构。

破完就是立,立之前,一定要多写文档,多讨论和规划。把发现的问题提出来,潜在风险找到,定义重构的目标,争取一次成型。

这个阶段,就是快速地把产品拼出来,然后重构它,打造功能完整可以交付测试的产品原型。

 

    其次,测试迭代快速成熟阶段

产品成型后,就是交付测试。只有通过一轮一轮频繁的测试和迭代,才能把产品打造成熟。这个阶段,也是人力物力投入最多,节奏也最紧凑的阶段,就好像打铁要乘热,稍有惰懈就可能缺少火候。因为人的思维是连续的,在集中解决问题的时候是最高效的。这段时间的开发热情和频繁的讨论也更有利于解决问题。

    即使在这个阶段,也要勇于破立。尤其对于有些模块,经过多轮迭代,变得不清晰,或者有更清晰的实现方式,也要用于打破旧的实现,采用新的思路。

 

    最后我想说的是,大多数软件开发都需要敏捷精神。对于新的东西,需求,果断开始,快速构造初始原型,这样你才能理解它,知道下一步怎么办。

    敏捷开发就是果断开始,快速搭建,迭代,还有勇于破立。敏捷开发是嵌入式产品开发的成功之道。
0 0
原创粉丝点击