
圖 1,UML 是OMG公司 的模型驅動體系結構的基礎。與平臺無關的模型包含系統行為,而特定平臺模型根據特定平臺映射規則和與平臺無關模型的標記,包含實現細則。
MDA(模型驅動的體系結構)開發工具使系統行為細節的建模與實現方法細節的建模無關,具體做法是將這些模型分割成與UML 平臺無關的模型和特定平臺模型(圖 1)。與平臺無關模型不包括技術實現細節,側重于描述系統的功能和行為。MDA 開發工具應用映射模板來產生特定平臺模型。為了實現這種轉換,您必須精確調節與平臺無關的模型,并對它做注釋,以便加進語義學和規則,用以生成代碼。MDA 開發工具根據這些模型產生機器生成的代碼,您可以對照行為模型來測試已生成代碼的正確性。如果您改變行為模型或實現模型,則重新生成的代碼始終會利用這些變化。
只要對較低層次實現細節的生成進行抽象和自動化,這些工具就能提供一種使設計能在各種目標平臺之間移植,并使設計塊能被反復使用的機制。然而,抽象只能實現移植機制。例如,如果目標處理器沒有代碼生成器,您就必須人工移植設計實現。除了這些益處之外,隨著更高層次的工具在目標級變得更成熟、更便于使用、更有效,能夠維持既有設計細節并實質性參與嵌入式設計的人數會相應增多(圖 2)。擁有技巧和知識以便使用較低級別工具進行設計的人現在要比能使用較高級工具進行設計的人少。

圖 2,當開發工具充分支持更高層次的抽象時,熟練的設計人員的數量相應增加。
沒有免費的午餐
高級開發工具帶來很多好處,但那些首先上市、提供更強大功能、程序包更小、功耗更低、成本更低的嵌入式設計,常常把平臺的資源推向新的極限。根據 eClips 公司提供的電子郵件警告訂閱請求和網頁搜索流量數據顯示,每個月排最前的三個軟件關鍵字肯定是 assembly(匯編)、C 和 C++。assembly 每個月的排名都這么前可能令人驚訝,除非您認為編譯器和代碼生成器無法適應所有新穎的專用數據和資源優化。
使您能夠盡快完成設計的開發工具功能落后于創新技術的首次使用。編譯器和代碼生成器等開發工具包含了創造這些工具的編程人員的多年經驗,而輸入模型或源代碼語言,即使具有專有的擴展功能,也無法包含每種創新或新穎數據的表示和資源使用的規范。除非某種功能具有得到證明的價值并以某種類似形式存在,否則工具開發商不太可能增加并改進這一功能。當編譯器或代碼生成器包含某種自動化功能或啟動功能時,它才會使以前成為某人標新立異手段的那種功能變成商品。
設計師為使最新一代產品與眾不同,寄希望于產品功能、大小、功耗和成本組合足夠復雜,成為競爭對手的障礙。當高級開發工具包含各種簡化復雜性的抽象和自動化工具時,您必須增加復雜性,使之遠遠超前于開發工具抽象的產品,才能維持您的競爭地位。
種種苦惱最終促使設計師在其設計得與眾不同的部分采用更高層次的抽象。如果您采用的抽象很糟糕,那么,盡管您做出了了不起的努力,您得到的結果很可能還是很糟糕,因此重要的是您在使用不恰當或低效率的抽象時,應該盡快認識到這一點。使用了不恰當的抽象,會有種種先兆,其中包括:要求您想出臨時解決辦法來應付抽象中的缺陷;無法在不顯著影響其它層次的情況下改進分層抽象的每一個層次;組件之間缺乏足夠接口;必須重復多個組件之間的結構或操作。如果采用一種更高層次的抽象并沒有帶來工作效率的提高,您就不可以采用它。
文章來源于領測軟件測試網 http://www.kjueaiud.com/