想要重用軟件的嵌入式開發人員需要克服幾個挑戰才能獲得成功。這些挑戰包括但不限于:
l 字節序
l 處理器架構
l 總線寬度
l 模糊的標準
l 開發時間和預算
l 模塊性
l 代碼耦合
與簡單地編寫功能性很強的代碼,然后丟棄相比,入門可能會讓人不知所措,并導致更多的壓力和困惑。成功開發可移植代碼的關鍵是確定你的固件當前滿足可移植軟件特征的程度,一旦理解了這一點,就決定你要去哪里。要確定你目前在開發便攜式固件方面的進展,首先畫一個如下圖所示的圖表。在圖中,用對你的組織最重要的便攜式固件特征來標記每個分支。
在每個確定的類別中,嵌入式開發人員可以評估他們的代碼展示這些屬性的程度。例如,一個試圖過渡到編寫可移植性更強的代碼的開發人員可能會用如下的圖表結果來評估自己:
快速瀏覽上圖可以告訴開發者很多信息。首先,我們在文檔和模塊化方面有優勢。這是開發便攜式固件的重要一步,而我們才剛剛開始。該圖還向我們展示了我們的弱點,比如代碼耦合和內聚性。
通過這一瞥,我們現在可以確定我們應該從哪里開始集中注意力。哪一個特性只要改進幾個點就會極大地改進我們的代碼?讓我們選擇代碼耦合作為例子。如果嵌入式開發人員要改進代碼耦合,他們需要確定如何著手進行改進。他們可能認為最好的方法是:
l 安排代碼評審
l 找到一個可以提供模塊依賴圖的工具
l 使用依賴圖工具(僅僅因為我們有工具并不意味著我們有使用它的原則)
l 開發考慮模塊耦合的高級架構
開發人員可能會決定在某個領域進行改進已經足夠好了,或者所有的都需要做。關鍵是我們不會在一夜之間開始編寫完美的、可重用的代碼。這個過程是反復的,可能需要幾年的時間來平滑所有的粗糙邊緣,但這沒關系。下面是一個簡單的過程,嵌入式開發人員可以使用它來提高固件的可移植性:
1)分析它們的代碼特征
2)確定優勢和劣勢
3)確定在接下來的3個月中需要改進的特性
4)確定可以做些什么來實現增量改進
5)實施改進
6)在指定的時間段后重復