新聞中心

EEPW首頁 > 設計應用 > 抽象工具排解系統(tǒng)設計復雜性

抽象工具排解系統(tǒng)設計復雜性

——
作者:Robert Cravotta 時間:2005-09-04 來源:EDN電子設計技術(shù) 收藏
抽象工具設計復雜性
 嵌入式開發(fā)工具不斷包含更高層次的抽象來平衡設計復雜性的增長

  要點
  ● 抽象通過隱藏細節(jié)來降低復雜性。
  ● 抽象不會減少某項設計的細節(jié)數(shù)量。
  ● 自動化開發(fā)工具可簡化以前的創(chuàng)新設計思路和實現(xiàn)方法,并使之商品化。
  ● 抽象隱藏細節(jié),但不應該妨礙您檢查細節(jié)。

  復雜性是相對的。如果您無法在特定環(huán)境內(nèi)描繪問題的特性并了解問題,那么復雜性就會使您無法解決問題。同時,復雜性為你提供制造出與眾不同產(chǎn)品的機會。再則,復雜性如果被你攻克,就會成為您搞出與眾不同設計的基礎,并成為競爭對手的障礙,盡管是臨時障礙。如果沒有足夠的復雜性,就很難提供獨特的增值功能, 這是因為競爭對手可以很容易地仿制您的開發(fā)成果,并在他們的產(chǎn)品中增加這些功能。
  一條工程經(jīng)驗法則是:設計小組能夠以最低成本,在最短的開發(fā)時間內(nèi)交付組合有最佳功能的產(chǎn)品,條件是他們只關(guān)注其中的兩個要素,犧牲第三個要素。在一個競爭的領域內(nèi),至關(guān)重要的是要實現(xiàn)所有這三個要素,這又會提高設計成果的總復雜性(附文《無法滿足的胃口》)。幸好,您不必徹底了解產(chǎn)品的每一個細節(jié)就能使用它。使用能支持特定領域的抽象工具或能為自己正在研制的系統(tǒng)創(chuàng)建特定抽象的工具,就是一種降低設計復雜性、提高開發(fā)效率的技術(shù)。
  抽象是對某系統(tǒng)的細節(jié)進行組織的過程,這樣您就可以專注于總體情況的關(guān)鍵要素。抽象并不會減少——甚至還可能增加——您必須為某項設計而要處理的細節(jié)數(shù)量。然而,抽象能夠組織這些細節(jié),以便您能減少你為設計中任何一部分必須考慮的細節(jié)數(shù)量。建立有用抽象的挑戰(zhàn)性在于根據(jù)環(huán)境和誰將使用這些抽象,確定哪些性能是必不可少的,哪些性能是可以忽略的。抽象是智能框架,從多個方面對某個系統(tǒng)進行抽象也許是很有用的。設計師和用戶也許需要使用同一系統(tǒng)的不同抽象。對于分層抽象來說,工作在每個抽象層次的設計師也許需要與一組不同的細節(jié)打交道。
  對某個系統(tǒng)適當?shù)剡M行抽象,可以為設計小組的每名成員降低系統(tǒng)復雜性,這是因為您可以避免每位設計師去考慮不相關(guān)的細節(jié)。實際上,您是在簡化和限定每一位設計師必須面對的條件范圍。抽象某個系統(tǒng),可能有利于匯總系統(tǒng)微觀行為,以便能在宏觀層次揭示微觀行為,使之概念化,再進行處置。有時,不必了解各事件的具體順序就可以從存儲器中提取數(shù)據(jù),或?qū)@些數(shù)據(jù)進行算術(shù)運算。然而有些時候,例如,當您的系統(tǒng)對連續(xù)數(shù)據(jù)流進行實時的計算密集型操作時,了解并控制這兩種機制的細節(jié)對于項目的成功是至關(guān)重要的。
  抽象某個系統(tǒng)可以幫助您鑒別、隔離并管理一個系統(tǒng)的邏輯部件之間在計算和接口兩個方面的相關(guān)性,這樣您就能在各部分中解決大問題。如果您缺乏恰當?shù)脑~匯和其它符號工具來表述某個問題,您就會在解決該問題時面臨嚴重的障礙。恰當?shù)爻橄竽硞€系統(tǒng),可以為您提供詞匯和符號集,從而在設計小組成員之間就各個部分及其相互關(guān)系進行有意義的溝通。恰當?shù)脑~匯和符號集是適用于特定應用和特定領域的。一個標準的或通用的符號集可能無法使您充分表述您正在努力解決的系統(tǒng)和問題,它可能會使您偏向采用一種次優(yōu)方法。
  工具、工具、工具
  產(chǎn)品設計正在一代一代地增加占用更多處理能力的復雜功能,而產(chǎn)品設計周期比以往任何時候都短。為了跟上這些設計日益提高的復雜性,開發(fā)小組可以依靠以下手段:重復使用既有設計;獲得第三方知識產(chǎn)權(quán) (IP) 的許可證;使用各種抽象或隱藏目標平臺實現(xiàn)細節(jié)的工具。匯編器、編譯器、建模工具、代碼發(fā)生器、操作系統(tǒng)和外設驅(qū)動程序都能隱藏目標處理平臺的細節(jié),而且一般都能提高設計師的工作效率。這幾類工具通常不提供應用級抽象;它們按分層方式工作,從而抽象目標實現(xiàn)細節(jié)并使之自動化,而無需了解系統(tǒng)的行為。
  另一類代碼發(fā)生器,比如 Celoxica 公司和 Stretch 公司的產(chǎn)品,有助于把 C 源碼自動轉(zhuǎn)換成硬件塊。這些工具使您能夠保持一致的軟件開發(fā)方法,并仍能受益于采用并行單元的硬件處理速度加快。AccelChip 公司和 Catalytic 公司的代碼發(fā)生器工作于更高的層次,直接依靠 Matlab 文件,來生成可合成的 RTL,或把浮點模型轉(zhuǎn)換成定點目標代碼。
  應用抽象工具試圖使系統(tǒng)行為與實現(xiàn)方法無關(guān)。Aonix公司、The MathWorks公司、National Instruments公司、Teja 公司提供的工具,能為十分關(guān)鍵的信號安全處理或高度并行的多處理器應用系統(tǒng)提供特定域抽象。特定域抽象工具包括合適的符號工具和結(jié)構(gòu),而這些工具與結(jié)構(gòu)使您能更自然地表述和探索該域中的設計方法,不過在目標域之外,它們的用處通常是有限的。通用抽象工具,如 I-Logix 公司和 IBM 公司的 UML(統(tǒng)一建模語言)工具, 使您能夠創(chuàng)建自己的抽象,而且在更廣的應用范圍內(nèi)都很有用,但要依靠您運用您的工程專業(yè)知識來構(gòu)建有意義的特定域抽象。

圖 1,UML 是OMG公司 的模型驅(qū)動體系結(jié)構(gòu)的基礎。與平臺無關(guān)的模型包含系統(tǒng)行為,而特定平臺模型根據(jù)特定平臺映射規(guī)則和與平臺無關(guān)模型的標記,包含實現(xiàn)細則。


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


關(guān)鍵詞: 排解系統(tǒng)

評論


技術(shù)專區(qū)

關(guān)閉