想要重用软件的嵌入式开发人员需要克服几个挑战才能获得成功。这些挑战包括但不限于:
l 字节序
l 处理器架构
l 总线宽度
l 模糊的标准
l 开发时间和预算
l 模块性
l 代码耦合
与简单地编写功能性很强的代码,然后丢弃相比,入门可能会让人不知所措,并导致更多的压力和困惑。成功开发可移植代码的关键是确定你的固件当前满足可移植软件特征的程度,一旦理解了这一点,就决定你要去哪里。要确定你目前在开发便携式固件方面的进展,首先画一个如下图所示的图表。在图中,用对你的组织最重要的便携式固件特征来标记每个分支。
在每个确定的类别中,嵌入式开发人员可以评估他们的代码展示这些属性的程度。例如,一个试图过渡到编写可移植性更强的代码的开发人员可能会用如下的图表结果来评估自己:
快速浏览上图可以告诉开发者很多信息。首先,我们在文档和模块化方面有优势。这是开发便携式固件的重要一步,而我们才刚刚开始。该图还向我们展示了我们的弱点,比如代码耦合和内聚性。
通过这一瞥,我们现在可以确定我们应该从哪里开始集中注意力。哪一个特性只要改进几个点就会极大地改进我们的代码?让我们选择代码耦合作为例子。如果嵌入式开发人员要改进代码耦合,他们需要确定如何着手进行改进。他们可能认为最好的方法是:
l 安排代码评审
l 找到一个可以提供模块依赖图的工具
l 使用依赖图工具(仅仅因为我们有工具并不意味着我们有使用它的原则)
l 开发考虑模块耦合的高级架构
开发人员可能会决定在某个领域进行改进已经足够好了,或者所有的都需要做。关键是我们不会在一夜之间开始编写完美的、可重用的代码。这个过程是反复的,可能需要几年的时间来平滑所有的粗糙边缘,但这没关系。下面是一个简单的过程,嵌入式开发人员可以使用它来提高固件的可移植性:
1)分析它们的代码特征
2)确定优势和劣势
3)确定在接下来的3个月中需要改进的特性
4)确定可以做些什么来实现增量改进
5)实施改进
6)在指定的时间段后重复