<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 一種改進型UML在嵌入式系統(tǒng)中的應(yīng)用

          一種改進型UML在嵌入式系統(tǒng)中的應(yīng)用

          作者: 時間:2010-04-16 來源:網(wǎng)絡(luò) 收藏
          引言

            隨著計算機技術(shù)、網(wǎng)絡(luò)技術(shù)和通信技術(shù)的迅速發(fā)展,當(dāng)前的信息社會已從當(dāng)初傳統(tǒng)的個人計算機時代進入了后PC時代;而后PC時代的主要特征就是以的廣泛與發(fā)展為標(biāo)志的。

          本文引用地址:http://www.ex-cimer.com/article/151921.htm

            關(guān)于的定義雖然有很多種,不過國內(nèi)普遍認(rèn)可的定義是[1]: 以為中心,以計算機技術(shù)為基礎(chǔ),軟硬件可裁剪,適合對功能、可靠性、成本、體積和功耗要求的專用計算機系統(tǒng)。

            系統(tǒng)主要是使用微型的芯片及其固化的軟件,嵌入在其他系統(tǒng)中,以達(dá)到對其他系統(tǒng)進行智能化或信息化實時控制等目的。

            當(dāng)前,嵌入式系統(tǒng)已在工業(yè)控制、航空航天、國防以及信息家電等領(lǐng)域得到廣泛的應(yīng)用,并發(fā)揮了重要作用,而且越來越多的領(lǐng)域都迫切需要嵌入式系統(tǒng)的支持。然 而,由于嵌入式系統(tǒng)的硬件、軟件、應(yīng)用環(huán)境的千差萬別,因此當(dāng)前有限的嵌入式技術(shù)人員的時間和精力主要花在熟悉不同的硬件、軟件及其代碼的開發(fā)上。這樣不 但造成嵌入式系統(tǒng)開發(fā)的效率和質(zhì)量得不到保證,而且也嚴(yán)重束縛了嵌入式技術(shù)人員進行更高層次的研究與開發(fā)。這些都成為日益復(fù)雜的嵌入式系統(tǒng)迅速發(fā)展的瓶頸。

            1、引入到嵌入式系統(tǒng)中的可行性

            20世紀(jì)六七十年代,軟件產(chǎn)業(yè)遇到了危機。其原因就是軟件越來越龐大和復(fù)雜,而軟件的質(zhì)量和生產(chǎn)率卻越來越低。由此促進了軟件工程的誕生,使得軟件開發(fā)的 規(guī)范化和效率都得到了很大提高。在20世紀(jì)90年代,隨著面向?qū)ο蠹夹g(shù)的發(fā)展,軟件工程向自動化、智能化方向發(fā)展,其突出的標(biāo)志就是標(biāo)準(zhǔn)的出現(xiàn)與發(fā)展。隨后,很多軟硬件廠商相繼開發(fā)出了許多基于標(biāo)準(zhǔn)的CASE工具。從此開發(fā)軟件可以借助UML的CASE工具來完成從軟件的分析、設(shè)計、實現(xiàn)到測 試的一系列軟件工程過程,大大提高了軟件開發(fā)的復(fù)用性和效率,降低了軟件開發(fā)過程中的返工率。

            UML突出的特點就是以面向?qū)ο蟮挠^點來分析和設(shè)計所開發(fā)的系統(tǒng),它把系統(tǒng)的每個功能都作為一個模塊(以“類”來表示)。在UML中,使用用例視圖、邏輯 視圖、組件視圖、并發(fā)視圖和展開視圖來分別對軟件實現(xiàn)需求分析、設(shè)計、實現(xiàn)、集成和測試等過程;并且每個視圖都包括一系列的圖來具體實現(xiàn),上面的5類視圖 包括了用例圖、類圖、對象圖、狀態(tài)圖、序列圖、協(xié)作圖、活動圖、組件圖和展開圖。其中,用例圖、類圖、對象圖、組件圖和展開圖屬于靜態(tài)圖,是從靜態(tài)方面對 系統(tǒng)進行分析和建模的;而狀態(tài)圖、序列圖、協(xié)作圖和活動圖則是從動態(tài)方面對系統(tǒng)進行分析,模擬系統(tǒng)動態(tài)交互情況的。

            2001年,UML2.0的發(fā)布標(biāo)志著UML技術(shù)進一步成熟,也得到了越來越多的硬件和軟件廠商的支持,這也使得UML的發(fā)展前景更加廣闊。面對基于軟件 工程的UML在軟件領(lǐng)域所取得的巨大成就,是否可以把UML引入到嵌入式系統(tǒng)開發(fā)中來,用來改變當(dāng)前嵌入式系統(tǒng)開發(fā)效率低下的局面呢?通過研究分析發(fā)現(xiàn), UML應(yīng)用到嵌入式系統(tǒng)主要存在以下幾個方面困難:

           ?、?嵌入式系統(tǒng)包括硬件和軟件兩部分,不同廠商的硬件千差萬別,在某個嵌入式芯片中能正確運行的軟件在另外一個嵌入式硬件平臺上就不一定能正常運行。

           ?、?嵌入式系統(tǒng)軟件平臺也千差萬別,各自對開發(fā)的要求差異較大。

            ③ 大部分嵌入式系統(tǒng)對實時性要求嚴(yán)格。

           ?、?嵌入式平臺的軟件一般不是采用面向?qū)ο笳Z言開發(fā)的,主要采用C語言甚至是匯編語言編寫。

            所有以上這些特點,導(dǎo)致在實際的嵌入式系統(tǒng)中UML模型很難被構(gòu)建。即使構(gòu)建出模型,其正確性、實時性能也很難得到驗證和保證。

            雖然如此,各國的研究者和開發(fā)商為把UML引入到嵌入式系統(tǒng)中都做出了不懈的努力,并取得了一些成果,主要包括:

            ① 為了使所建立模型的正確性能夠得到驗證,有人提出采用形式化的方法。例如William和H. C. Cheng使用VHDL作為模型的形式化描述語言,通過分析UML模型中的類圖和狀態(tài)圖得到嵌入式系統(tǒng)的VHDL描述,確定系統(tǒng)的結(jié)構(gòu)和行為,并進行模型 驗證[2]。還有學(xué)者使用有限狀態(tài)自動機與UML相結(jié)合來完成系統(tǒng)的分析、設(shè)計和驗證[3]。

           ?、?對于實時性要求,提供的解決方法主要包括: 使用標(biāo)準(zhǔn)的UML及其構(gòu)造型概念設(shè)計實時系統(tǒng)[4],以及擴充UML或改造UML以使其滿足實時系統(tǒng)的要求[5]。

           ?、?對于語言的問題,主要有以下兩種解決方法: 一種是使用面向?qū)ο蟮腃++語言開發(fā),如SystemC[6];另一種是使用可以與C語言結(jié)合的UML開發(fā)環(huán)境,如美國ILogix公司推出的Rhapsody。

            由以上3種解決方案可知,UML應(yīng)用在嵌入式系統(tǒng)所產(chǎn)生的可驗證性、實時性以及語言的問題,都是可以解決的,因而有可能廣泛使用UML來分析、設(shè)計與指導(dǎo)嵌入式系統(tǒng)開發(fā),以解決嵌入式系統(tǒng)開發(fā)效率低下的問題。

            2、一種改進的通用嵌入式系統(tǒng)UML方案

            由于目前對UML應(yīng)用在嵌入式系統(tǒng)中的研究往往都是側(cè)重于解決嵌入式系統(tǒng)的某一方面,因而不具有通用性,很難成為嵌入式系統(tǒng)建模的標(biāo)準(zhǔn)。為了解決UML在嵌入式系統(tǒng)中的建模問題,本文提出了一種通用的UML嵌入式系統(tǒng)設(shè)計解決方案。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          c語言相關(guān)文章:c語言教程


          c++相關(guān)文章:c++教程



          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();