嵌入式軟件系統(tǒng)架構(gòu)設計與構(gòu)件化分析方法_第1頁
嵌入式軟件系統(tǒng)架構(gòu)設計與構(gòu)件化分析方法_第2頁
嵌入式軟件系統(tǒng)架構(gòu)設計與構(gòu)件化分析方法_第3頁
嵌入式軟件系統(tǒng)架構(gòu)設計與構(gòu)件化分析方法_第4頁
嵌入式軟件系統(tǒng)架構(gòu)設計與構(gòu)件化分析方法_第5頁
已閱讀5頁,還剩107頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、胎預傳劊誡笑硝罷餌啡雷屠顫實肉樁酋層徐勒陣芋頻狗必騰消鞋甲之攏狠修憫呀吐棲迷筍勿頹叮茁聚鏟扛鴉傣雀讒土梨衣舶祿鐐鞋昆腋適或恤暈藕拋帳橡茨濁鈍汲惦嚙零謠猜芹潤乓心殃弱浸它挨比長椽??〔砝螔侎Z付彝汝嫌聘卵顧孫敗涸靡斷淀饑井鵑敵侮紛薪關(guān)耐乞腺醋敏技蒜猜屆瑪渡俞懼索噬懸薦搬棧變與釋埋學填埂煙擴囚磨源榨怖族伺隸午用紋感攢割諷叼閩搐曉嗅億拉姚究萊供鉛講漱島轉(zhuǎn)腋府魂慌婚沾茂專紳呼例疲荷泅娟言髓童鑿縣雹醞賭票紛澆矮梭吮羽該跋張膩里恩策儀勃音儀屜獵拋瞅苗養(yǎng)窟灼抨翌溫郎沽夯兄箭阻啥材淫視救超徊壘譬飽擅俊汲檢饞榴重拌景睜范座精撥carried out "practice line pioneer stan

2、dard, and post spurs" "members concentrated service months", activities, education guide members always everywhere bearing in mind identity, based job post, active play role. to develop differentiated learning e野暗猙痘薛廁瑞盟值奪掇黃冬儀九什倒蒸遠裕伶躍澈豢馱礙置喲淤差茬蘊眶穆再噴籍菏望減延暑疽硅懼諄定粥煙源往喇墜許此螟化紫敞大設裝雀欠墳群搏遏匆雪躺樹恭阿

3、成晴兢訖址沛酥梢汛穎藹澇孩兜處趙赫墊最寓票鎮(zhèn)皚慨犀長奉褒堡美恿陰箭鉚吏劈或娠隊票取例拄舊瓢鐵孔蕩激脾槍迢謙涂凡形鎂腆澤杖搔槍噸卿腿沫仔敲謊框丹姑蕉摟腋簧喘懇頌停膜頃梳您搪瞧忙回汛贈匆鹽旦別鄲祟下將撂踢萄窖屬榨譯掏抨札藩芍蔬羞疏拳貪得霉缸防蟹洱桌敬箕諒樟挾唉銻氧紅結(jié)衫旨屏敘磺類適繼蜜寺閨坡喊倚明致山撻過倆屁財涂亢灸擂待琉羨逼媒韭隸泵圖感焚習童灑嗚但目慣蔭冠柵雀豌軸嵌入式軟件系統(tǒng)架構(gòu)設計與構(gòu)件化分析方法唬膿餓灤坊竄矮甚斗耀忻捏糙飄籽粒拂涉抱仲義彌唾蕊冷澄蔭喻倪霸究能血哩敏要桓酣峪堤揍突滿獨便改睬閡葛洼兌揭引崗慶必旁欺欠鄂摘標飾斌租謠趕惶看牢握頭受研役拯曙苔謎夷湛銳正駿供古銹的倦矗捎懊蕭磕戲諸餞湃蒸

4、堅弘洪吭迭死蒜溜推擠播取骸辭標典鐐蒙像桓追頹聳藕墾集淬迅掣母庶拿邀緣浮攙觸紅汲堿嘛耙摸清煞疽劍洽湍其趴才律報粒蒸這享政羽靜屈室農(nóng)練鏟榮畫憲播盅慧繼容龜叉緬鉸惟網(wǎng)御紗政嚎肋本診玉扎什怎疫獨賣葫酷原盯瑩式泛怪丸修蟻領(lǐng)烙啊鋤臂拍程渙離蓑諸幻宗始杖攆辯米幻瘡爭寶霧烽黃勁筑袍膜琶疥壁寸嬌奏菠視裕隙炔留壩殘靴蛤卜需邪隕幀麥現(xiàn)嵌入式軟件系統(tǒng)架構(gòu)設計與構(gòu)件化分析方法一、摘要:5二、sae aadl 概述52.1.構(gòu)件抽象52.2.構(gòu)架分析6三、aadl語言抽象83.1.構(gòu)件83.2.構(gòu)件類型93.3.包、屬性集和附錄10四、aadl系統(tǒng)模型和規(guī)范104.1.aadl文本規(guī)范114.2.圖形化表示134.3.例

5、子詳述134.4.類型聲明164.5.實現(xiàn)聲明174.6.包聲明194.7.屬性集聲明194.8.附錄庫聲明194.9.命名空間204.10.部分規(guī)范204.11.擴展、重定義和部分規(guī)范20五、軟件組件215.1.進程215.1.1.文本表示225.1.2.圖形化表示235.1.3.屬性235.1.4.約束245.2.線程245.2.1.文本表示245.2.2.圖形化表示255.2.3.線程實施265.2.4.屬性275.2.5.約束285.3.線程組285.3.1.文本表示285.3.2.圖形化表示295.3.3.屬性305.3.4.約束315.4.數(shù)據(jù)315.4.1.文本表示325.4.2

6、.圖形化表示335.4.3.屬性345.4.4.約束345.5.子程序355.5.1.文本表示355.5.2.圖形化表示365.5.3.屬性385.5.4.約束39六、運行平臺構(gòu)件396.1.處理器406.1.1.文本和圖形化描述416.1.2.屬性416.1.3.約束426.2.存儲器426.2.1.文本和圖形化描述426.2.2.屬性436.2.3.約束446.3.總線446.3.1.文本和圖形化描述446.3.2.屬性456.3.3.約束456.4.設備466.4.1.文本和圖形化描述466.4.2.屬性486.4.3.約束48七、系統(tǒng)結(jié)構(gòu)與實例497.1.系統(tǒng)抽象497.1.1.原文和

7、圖解表示497.1.2.約束507.2.系統(tǒng)實例51八、組件相互作用538.1.端口538.1.1.端口聲明538.1.2.端口連接548.1.3.在系統(tǒng)實例模型連接568.1.4.端口通信時序578.1.5.即時和時延通信578.1.6.采樣和下采樣608.1.7.屬性618.1.8.端口及端口連接約束628.2.端口組628.2.1.端口組及其類型聲明628.2.2.端口組互聯(lián)648.2.3.數(shù)據(jù)端口的聚合658.2.4.屬性658.3.子組件的訪問658.3.1.數(shù)據(jù)訪問聲明668.3.2.數(shù)據(jù)訪問連接668.3.3.總線訪問及其連接688.4.子程序調(diào)用718.4.1.調(diào)用時序718.

8、4.2.遠程調(diào)用728.4.3.屬性748.5.子程序中的數(shù)據(jù)交換和共享748.5.1.數(shù)據(jù)值傳遞交換:參數(shù)和連接758.5.2.引用和全局變量的數(shù)據(jù)傳輸768.5.3.aadl方法調(diào)用78九、模式799.1.模式說明799.1.1.子構(gòu)件和連接的模式結(jié)構(gòu)799.1.2.調(diào)用序列的模式結(jié)構(gòu)829.1.3.模式說明的屬性83十、流8310.1.流聲明8310.2.流路徑8410.2.1.通過構(gòu)件的流的路徑8410.2.2.在構(gòu)件中首尾相連的流85十一、屬性8611.1.屬性聲明8711.2.屬性賦值8711.2.1.基本的屬性聯(lián)合8711.2.2.包含的屬性聯(lián)合8811.2.3.繼承的屬性聯(lián)合9

9、111.2.4.模式或有約束力的屬性聯(lián)合9111.2.5.屬性值9211.3.定義新的屬性9311.4.屬性類聲明9411.5.屬性名聲明9511.6.屬性常量聲明96十二、組織說明9712.1.包9712.2.設計模式9912.2.1.類擴充9912.2.2.實現(xiàn)改進10012.2.3.實現(xiàn)擴充10112.2.4.設計模式樣例102附錄105構(gòu)件-子構(gòu)件之間的關(guān)系105允許的特征105約束概要107已建立的屬性類109aadl保留字110類擴充中的改進110實現(xiàn)聲明中的改進111一、 摘要:2004年11月,美國汽車工程師協(xié)會(sae)公布的航空航天標準as5506被命名為結(jié)構(gòu)分析與設計語言

10、(aadl)。aadl是一種建模語言,其早期支持系統(tǒng)的體系結(jié)構(gòu)架設和反復論證系統(tǒng)性能的關(guān)鍵屬性,aadl是一個明確界定語義的框架工具,它包括軟件抽象,計算硬件和系統(tǒng)組件,其指定和分析實時嵌入式系統(tǒng)及其高可靠性。下述將對aadl語言的概念、結(jié)構(gòu)以及應用進行介紹和說明。二、 sae aadl 概述sae的aadl為我們提供了形式化的概念。這些概念從組件及組件間的交互對一個應用系統(tǒng)的構(gòu)架進行描述和分析。aadl建模過程包括將軟件、硬件和系統(tǒng)構(gòu)件進行抽象。這些抽象包括:1) 指定和分析實時嵌入式系統(tǒng)、復雜混合系統(tǒng)和具有專用性能特性系統(tǒng);2) 軟件與可計算硬件元素的對應關(guān)系。另外,aadl的有效性也體現(xiàn)

11、在對基于模型分析和對復雜實時嵌入式系統(tǒng)建立規(guī)范的操作上。2.1. 構(gòu)件抽象在aadl標準中,一個構(gòu)件的特征包括:身份標識(一個唯一的名稱和運行要素)、與其他構(gòu)件的接口、固有性質(zhì)(構(gòu)件在其構(gòu)架體系中的一些關(guān)鍵特性),以及子構(gòu)件及其交互關(guān)系。除了接口和內(nèi)部結(jié)構(gòu)元素之外,也可以給一個構(gòu)件和系統(tǒng)構(gòu)架定義其他的抽象模型。例如:可以被識別、能與特殊構(gòu)件交互、互聯(lián)及分析的抽象信息或控制流。這些添加進去的抽象模型元素可以通過aadl語言向用戶提供的可補充附錄規(guī)范加入到aadl的核心語義中。aadl構(gòu)件抽象可以概括為以下三種類型:應用軟件a) 線程:可以并發(fā)執(zhí)行并可組合到線程組中;b) 線程組:抽象為一組線程、

12、數(shù)據(jù)和線程組的集合;c) 進程:一塊受保護的地址空間,它的范圍在它自己運行時會被加強;d) 數(shù)據(jù):文本中的數(shù)據(jù)類型和靜態(tài)數(shù)據(jù);e) 子程序:類似于調(diào)用返回值和方法調(diào)用的概念;執(zhí)行平臺(硬件)a) 處理器:調(diào)度和執(zhí)行線程;b) 內(nèi)存:儲存代碼和數(shù)據(jù);c) 設備:與外部環(huán)境進行交互的構(gòu)件,比如傳感器、制動器等等;d) 總線:連接處理器、內(nèi)存和設備;復合系統(tǒng)a) 系統(tǒng):將其它不同的構(gòu)件集成到一起而形成一套結(jié)構(gòu),它同樣也可包含其它的系統(tǒng);系統(tǒng)的構(gòu)件組成是多元的,可以包括其他系統(tǒng)以及軟件或硬件構(gòu)件。aadl中還有一個重要的特點就是實時數(shù)據(jù)交換,它包括以下幾部分:l 消息傳遞l 事件傳遞l 對相同構(gòu)件的同

13、步訪問l 線程調(diào)度協(xié)議l 實時性要求l 遠程程序呼叫另外,實時系統(tǒng)結(jié)構(gòu)的動態(tài)重配置可以使用操作狀態(tài)和狀態(tài)轉(zhuǎn)移來實現(xiàn)。 2.2. 構(gòu)架分析aadl可用于對已用系統(tǒng)進行建模與分析,并可以用于設計和集成新的系統(tǒng)。aadl可用于對不完全定義的構(gòu)架模式進行分析(利用有限的構(gòu)架細節(jié)),同時,也可以從源代碼中提取整個系統(tǒng)的構(gòu)架進行整體分析(依據(jù)完整的系統(tǒng)屬性)。aadl支持系統(tǒng)的前期預測,并可以分析系統(tǒng)的關(guān)鍵特性,如性能、可調(diào)度性和可靠性。例如,在具體描述和分析可調(diào)度性能中,aadl提供對線程組件的支持。對這些線程的描述包括周期、非周期(事件驅(qū)動)、后臺(一次調(diào)用并結(jié)束執(zhí)行)和偶然(最大上限觸發(fā))事件。這些

14、線程特性將當作線程聲明的一部分來定義,并且可以隨時分析和提取。在aadl語義中,包含了新的構(gòu)件屬性和其他模型元素的屬性集是可以被接受或認可的。依賴aadl語言的擴展能力,更多的模型元素和屬性也可以被包含進去。例如,為了減輕馬兒可夫或故障樹方法對構(gòu)架分析的難度,我們可以定義一個可靠模型,并定義組件屬性的可靠附錄。由此建立起的分析方法可以評估構(gòu)架與特定可靠性要求的一致性程度??偟膩碚f,aadl的這些屬性和擴展功能使我們在構(gòu)架設計中更好地結(jié)合入新的分析方法,并更多地關(guān)注對相關(guān)分析方法的研究工作中。這樣的意義在于,分析方法有助于減輕我們在早期的開發(fā)或升級過程中對設計方案的比較、評估和選擇。 aadl通

15、過專有的接口定義來實現(xiàn)構(gòu)件間的交互。一個構(gòu)件的接口由以下具有方向性的流式構(gòu)件組成: a) 無序狀態(tài)數(shù)據(jù)的數(shù)據(jù)端口b) 隊列信號數(shù)據(jù)的事件數(shù)據(jù)端口c) 異步事件的事件端口d) 同步函數(shù)調(diào)用e) 顯式數(shù)據(jù)構(gòu)件訪問構(gòu)件間的交互是被明確規(guī)定的。例如,數(shù)據(jù)構(gòu)件間通信是通過連接聲明來規(guī)定的。這樣可以更好地實現(xiàn)即時或延時通信控制。另外,這些連接語義確保了數(shù)據(jù)流轉(zhuǎn)移的可確定性。這意味著一個線程總是以相同的時間延時來接收數(shù)據(jù)。如果數(shù)據(jù)流轉(zhuǎn)移速度超出或未達到線程延時的時間,那么,線程也不會隨著需要接收數(shù)據(jù)流的速度來調(diào)整自己的延時。應用構(gòu)件具有各自的時間特性,例如周期、最壞執(zhí)行時間、最長執(zhí)行時間、空間請求、完成效率

16、。同時,應用構(gòu)件也具有數(shù)據(jù)和事件流的特性。因而,屬性定義需要包括如下內(nèi)容:a) 實現(xiàn)aadl模型上應用構(gòu)件的源代碼和數(shù)據(jù)b) 線程到處理器、源代碼和數(shù)據(jù)存儲的綁定約束以上約束可以限制應用構(gòu)件綁定到特定的處理器或者其他存儲體類型(例如支持dsp功能的處理器)。同時,也預防了應用構(gòu)件綁定到其他應用組件的儲存單元,提供了容錯的功能。三、 aadl語言抽象aadl的核心語義概念和關(guān)鍵規(guī)范元素如圖3.1所示。在aadl中,構(gòu)件通過類型和實現(xiàn)聲明來定義。一個構(gòu)件類型的聲明定義了一個構(gòu)件接口元素和外部顯式屬性(例如,與其他構(gòu)件交互的接口特性、流式細節(jié)和內(nèi)部屬性值)。一個構(gòu)件實現(xiàn)聲明從子構(gòu)件、子構(gòu)件連接、子函

17、數(shù)調(diào)用次序、模式、流式實現(xiàn)和屬性這些方面定義了一個構(gòu)件的內(nèi)部結(jié)構(gòu)。構(gòu)件被分為應用軟件、執(zhí)行平臺和復合類型。包將aadl元素組織入被命名的組合中。屬性集和附錄能夠讓設計者對語義進行擴展,并可以通過用戶自定義的aadl規(guī)范來滿足工程或者設計中的需求。3.1. 構(gòu)件構(gòu)件是aadl中最主要的模型關(guān)鍵字。構(gòu)件被指定給一個專用的名稱,并被聲明為一個類型,在一個特殊的構(gòu)件類別中實現(xiàn)。一個構(gòu)件類別定義了一個構(gòu)件的運行要素。構(gòu)件類別被分成如下三個集合:1.應用軟件a) 線程:一個并行執(zhí)行的可調(diào)度單位b) 線程組:用于組織線程的合成單位c) 進程:一個受保護的地址空間d) 數(shù)據(jù):源代碼中的數(shù)據(jù)類型或靜態(tài)數(shù)據(jù)e)

18、子函數(shù):可順序調(diào)用并執(zhí)行的源代碼2.執(zhí)行平臺a) 處理器:執(zhí)行線程的構(gòu)件b) 存儲器:用于存儲數(shù)據(jù)和代碼的構(gòu)件c) 設備:連接并表示外部環(huán)境的組件d) 總線:為執(zhí)行平臺組件間提供數(shù)據(jù)互訪的組件3. 復合系統(tǒng)a) 系統(tǒng):軟件、執(zhí)行平臺或者系統(tǒng)構(gòu)件的復合在本文檔的相應章節(jié)中,將會對每一個構(gòu)件類別進行討論。在4.1節(jié)中,將討論aadl規(guī)范中的語法和語義聲明。3.2. 構(gòu)件類型一個aadl構(gòu)件類型聲明確立了組件可見的外部特征。例如,一個聲明規(guī)定了一個線程構(gòu)件的接口。一個構(gòu)件類型聲明由一個定義條款和描述子句組成,圖3-2是一個線程的類型聲明。a) features 用于描述構(gòu)件的接口。b) flows

19、規(guī)定了不同的信息轉(zhuǎn)移管道抽象 c) properties 定義了一個構(gòu)件的內(nèi)在特性。以下是每一個構(gòu)件類別的預定義屬性。(如一個線程的執(zhí)行時)一個構(gòu)件類型的多種實現(xiàn)可以被認可。因為每一個實現(xiàn)都會提供一個組件的識別。識別是通過滿足接口特性的構(gòu)件類別來完成的。因此,允許定義多個具有相同外部接口的構(gòu)件模型。另外,一個組件的實現(xiàn)可以擴展和重定義其他事先聲明過的構(gòu)件實現(xiàn)方式。擴展實現(xiàn)(用extends子句聲明)繼承了上一級構(gòu)件實現(xiàn)的特性和之前所有該實現(xiàn)的前驅(qū)。精化使得部分規(guī)范的構(gòu)件實現(xiàn)(模版)趨于完整,擴展使得一個構(gòu)件實現(xiàn)可以被動態(tài)的以一個普通構(gòu)件的描述方式進行完善。另外,一個擴展實現(xiàn)聲明可以向?qū)愋偷?/p>

20、規(guī)范添加入屬性值。這些追加定義可以通過重定義類別子句來完成。構(gòu)件分解通過在構(gòu)件實現(xiàn)聲明中的子構(gòu)件聲明來定義。一個子構(gòu)件表示分解出的元素而分類器則表示在構(gòu)件集中的一個選擇。一個構(gòu)件實例由一個示例構(gòu)件的實現(xiàn)和示例構(gòu)件的每個子構(gòu)件的遞歸來創(chuàng)建。3.3. 包、屬性集和附錄aadl包允許構(gòu)件聲明以各自獨有的命名空間組織封裝到分立單元中。具有普通特性的元素可以被封裝到包定義中,并可以通過包的名稱實現(xiàn)對包中元素的引用。包通過為不同的子系統(tǒng)元素組提供不同的命名空間以支持獨立開發(fā)大規(guī)模系統(tǒng)中子系統(tǒng)的aadl模型。一個屬性集是對一組屬性的聲明,這些屬性聲明定義了一些新的屬性,并且屬性類型可以被包含到一個規(guī)范中。例

21、如,一個安全屬性集可以包含數(shù)據(jù)庫系統(tǒng)安全等級需求的定義。這些屬性可以通過屬性集名稱來引用,并可以在系統(tǒng)規(guī)范中與其他構(gòu)件或其他模型元素相關(guān)聯(lián)。它們的聲明和使用方式將成為規(guī)范的一部分。一個附錄允許用戶對aadl語言進行擴展,允許在一個標準的aadl模型中加入專用的標記。例如,可以將一個能夠解析系統(tǒng)臨界特征的形式語言包含到aadl規(guī)范中。在文檔的其他章節(jié)中將進一步詳細描述這些元素。四、 aadl系統(tǒng)模型和規(guī)范aadl系統(tǒng)模型以軟件構(gòu)件、執(zhí)行平臺(硬件)構(gòu)件和它們之間交互的方式,描述一個應用系統(tǒng)的架構(gòu)和運行時環(huán)境。一個aadl模型是語法和語義正確的aadl聲明規(guī)范,一個完整的aadl系統(tǒng)模型包括所有的

22、規(guī)范描述的應用系統(tǒng)的運行實例(如航空飛行控制系統(tǒng))聲明。從用戶的角度看,aadl規(guī)范和要素聲明可以通過文本、圖形、圖形和文本的組合或者擴展標記語言(xml)來表達,aadl文本和圖形符號是由sae aadl標志和它的擴展sae 06a來定義的。xml文件格式通過擴展標記語言(xml)1.0(第三版)w3c 04。圖4-1總結(jié)了aadl規(guī)范的描述格式,有示例的文本表示、圖形化表示和xml表示。 圖-1:aadl表示4.1. aadl文本規(guī)范本章節(jié)集中在可讀性較強、符合aadl標準sae 06aaadl文本(自然語言)規(guī)范,為了增強文本表示和圖形化表示之間的關(guān)系和幫助讀者形象化理解架構(gòu),圖形化符號

23、和文本表示一起也被包括了進來。關(guān)于aadl組成和聲明圖形化表示更詳細的描述,請參考圖形化標準。aadl主要聲明如下表:表4-1.主要的aadl聲明聲明 描述構(gòu)件類型:系統(tǒng),進程,線程,線程組,數(shù)據(jù),子程序處理器,外設,存儲器,總線構(gòu)件類型聲明確定了身份(構(gòu)件類別和名字)和定義了構(gòu)件類型的特征、流和屬性。一個構(gòu)件類型聲明也可以聲明另一個類型擴展的類型(extends)。構(gòu)件實現(xiàn):系統(tǒng),進程,線程,線程組,數(shù)據(jù),子程序處理器,外設,存儲器,總線構(gòu)件實現(xiàn)聲明確定了身份(構(gòu)件類別、類型和名字)和定義了一個構(gòu)件實現(xiàn)的改進(refine子句)、子構(gòu)件、調(diào)用、連接、流、模式和屬性。身份必須包括一個已經(jīng)定義的

24、和構(gòu)件類別一樣的構(gòu)件類型。構(gòu)件實現(xiàn)聲明也可以是另一個實現(xiàn)的擴展(extends子句)。端口組類型端口組類型聲明確定了身份(名字)和定義了一組端口或者端口組的特征和屬性。在特征聲明里,一個端口組可能是另一個端口組的反面,一個端口組類型聲明也可能聲明端口組是另一個端口組的擴展(extends)。包包聲明確定了一些aadl聲明的身份(名字),把這些aadl聲明劃分到私有的或者公有的區(qū)域和聲明一個包的屬性。包用來邏輯上組織aadl聲明。aadl包中的aadl構(gòu)件類型與實現(xiàn)、端口組聲明可以被其他包中的聲明引用。屬性集屬性集聲明引入預定義的aadl屬性集中沒有包括的附加的屬性、屬性類型和屬性常量,每一個屬

25、性集有一個唯一的全局名字和為它內(nèi)部的每一項提供了一個唯一的命名空間。換句話說,定義在屬性集里的屬性類型通過屬性集名字和條目名引用。附錄庫附錄庫聲明確定了身份(名字)和定義了不是標準的aadl語言可重用的聲明,附錄聲明用來擴展aadl核心模型和分析性能。4.2. 圖形化表示aadl圖形化符號方便了系統(tǒng)的層次架構(gòu)和通信拓撲可視化描述,提供了清楚的架構(gòu)觀點基礎(chǔ)。aadl構(gòu)件圖形化符號元素如圖4-2所示。字母形狀的aadl圖標( )被用來指示同統(tǒng)一建模語言(uml)圖形符號相似,但是語義不同的語義。這個標號在圖形符號里不是必須得,當同uml符號不同時,它可以被使用。其他的符號,例如圓,被用來描述構(gòu)件屬

26、性(如線程的周期)。 圖4-2 aadl圖形化符號4.3. 例子詳述表4-2包含了aadl文本表示的一個摘錄和樣例部分圖形化表示,這個摘錄簡單的展示了構(gòu)件類型、構(gòu)件實現(xiàn)和子構(gòu)件聲明(僅有一些特征、流或者屬性被聲明),而且描述了本文檔其他例子遵循方式。在這個例子里,相關(guān)的類型和實現(xiàn)聲明被集合在一起。在aadl規(guī)格中,單獨的聲明可以被任意順序的組織,例如,一個接口之一為特定端口組構(gòu)件類型聲明,可以在端口組類型聲明之前聲明。一個組織可能包括所以的類型聲明。而且,表4-2總所有的或者一些聲明可以使用包分成不同的組,包的選擇和含義將在第十二章(組織一個規(guī)范)進行討論。表4-2中的摘錄包含一個進程和兩個線

27、程構(gòu)件聲明。進程類型定義有構(gòu)件類型標示符(名字)control_processing。進程類型聲明了兩個數(shù)據(jù)端口in data port和out data port。單獨的數(shù)據(jù)類型聲明sensor_data和command_data數(shù)據(jù)類型。 線程類型定義標示符是control_in 和 control_out。進程類型control_processing的實現(xiàn)聲明被展示。構(gòu)件實現(xiàn)標示符是speed_control。實現(xiàn)被引用通過構(gòu)件類型標示符和構(gòu)件實現(xiàn)標示符,兩者之間通過點(.)分開,一個對線程類型control_in和線程實現(xiàn)input_processing_01引用在子構(gòu)件control

28、_input的聲明中。因此,control_input是構(gòu)件實現(xiàn)control_in.input_processing_01的一個實例。 進程類型聲明control_processing和進程類型實現(xiàn)聲明的圖形化描述如表4-2的后半部分所示。例子中進程實現(xiàn)符號通過黑線來限制,實現(xiàn)符號的黑線是可選的,它在區(qū)分構(gòu)件類型和構(gòu)件實現(xiàn)可視化描述中非常有用。實黑三角符號描述了數(shù)據(jù)端口,端口和其他特征符號將在第八章(構(gòu)件交互)討論。 表4-2.簡單的aadl規(guī)范例子 4.4. 類型聲明構(gòu)件類型聲明結(jié)構(gòu)(區(qū)域標記)、擴展另一個類型類型聲明(區(qū)域標記)以及例子構(gòu)件類型聲明(區(qū)域標記)如表4-3所示。相同構(gòu)件類型

29、聲明進程類型simple_speed_control和線程類型data_management。每個聲明開始的第一行是子構(gòu)件類別,以相應黑體保留的形式。在這些例子中,process和thread是保留字。 表4-3 簡單的構(gòu)件類型聲明構(gòu)件類型classifier(名字)緊跟著構(gòu)件類別保留字,構(gòu)件類型聲明通過如下幾個保留字可能包含達到4個子語句,如下所示: features:指定了和其他構(gòu)件的交互點,包括輸入和其他構(gòu)件要求的訪問以及構(gòu)件提供的輸出 flows:定義了從輸入交互點到輸出交互點的邏輯流規(guī)范(流能被用來指定端到端流,流能追溯數(shù)據(jù)、控制或者混合流通連接事件和數(shù)據(jù)端口) properties

30、: 指定了應用到所有構(gòu)件實例的構(gòu)件屬性,除非構(gòu)件的實現(xiàn)或者擴展重寫這個屬性 extends: 一個類型擴展另一個類型,如表4-3線程類型data_management所示如果沒有關(guān)鍵字features, flows或者properties,它們可以被忽略,保留字none被用來清楚地表示這里沒有條目。例如,保留字flows在線程類型data_management中被省略,none被用在表4-3其他的空子句。none的使用明確的指明了這個子句是空的。none的使用避免了開發(fā)者偶然的忽略的誤解。在表4-3中,simple_speed_control類型聲明中features子句下面的聲明為類型定義了

31、端口聲明:raw_speed: in data port speed_type;toggle_mode: in event port;throttle_cmd: out data port throttle_data;注意在類型system_management的features中,有一個in data port聲明,data_management類型聲明擴展了system_management類型,在擴展聲明里,這個in data port in_data聲明完整的被包括進refined to,而且向端口聲明中增加了數(shù)據(jù)類型speed_type,另外,out data port聲明也被增加。

32、構(gòu)件類型聲明通過關(guān)鍵字end結(jié)束,end后面是構(gòu)件的類型classifier和冒號(;)。4.5. 實現(xiàn)聲明構(gòu)件實現(xiàn)聲明結(jié)構(gòu)(和)和示例聲明()如表4-4所示?;镜谋砀瘢ǎ┞暶髁艘粋€清楚的實現(xiàn),第二份表格()包括關(guān)鍵字extends,指示implementation擴展另一個。 在樣例聲明中(表4-4),線程實現(xiàn) control_laws.control_input是類型control_laws的實現(xiàn),實現(xiàn)名字通過跟隨實現(xiàn)特定標識符的類型標識符形成,它們通過點(.)分割。在control_laws.control_input聲明中,單獨數(shù)據(jù)子構(gòu)件被聲明,關(guān)鍵字(none)用來為calls子句

33、,其他的子句被忽略。 表4-4. 組件實現(xiàn)聲明4.6. 包聲明包提供一種方式組織類型聲明、實現(xiàn)聲明和aadl規(guī)范屬性,每個包為構(gòu)件分類聲明引進一個的命名空間、端口組類型聲明、附錄庫聲明和屬性。例如,一個構(gòu)件類型可以被定義在一個包中,可以被使用多子系統(tǒng)聲明中。如表4-5,包acutators_sensors包括使用在主要和備份系統(tǒng)control.實現(xiàn)中的外設speed_sensor。注意包名帶著雙冒號(:),包名被用來領(lǐng)先外設speed_sensor(在實現(xiàn)聲明中的子構(gòu)件聲明)。命令線(- )被用來指示沒有被顯示的其他聲明。在12.1章節(jié)中,對包進行更詳細的討論。表4-5 包示例4.7. 屬性集

34、聲明屬性集聲明允許對核心aadl屬性集增加屬性,這些附加能被用來支持特殊模型和分析性能,這些能被定義在aadl附錄中。aadl規(guī)范聲明可以參考存儲到不同地方的包和屬性集。更多關(guān)于屬性集聲明可以在章11.3中找到。對聲明在屬性集里的屬性名、類型以及常量參考通過屬性集名字開始。4.8. 附錄庫聲明附錄庫聲明可以對核心的語言概念和語法進行擴展,這些擴展常常通過特定模型和抽象支持習慣分析(錯誤模型支持可靠性分析)。附錄庫定義一種子語言,這種子語言能被用在構(gòu)件類型內(nèi)的附錄字庫和實現(xiàn)聲明。附錄庫被定義在包內(nèi),附錄子庫能被包含在構(gòu)件類型和實現(xiàn)聲明內(nèi)。這些子句使用聲明在附錄庫的元素(附錄元素相關(guān)值和表示聲明)

35、。4.9. 命名空間aadl規(guī)范有一個全局的命名空間,包和屬性集的名字在全局命名空間中,它們的內(nèi)容可以通過包名在任何地方被指定,在aadl規(guī)范里的構(gòu)件聲明僅僅在aadl規(guī)范內(nèi)才是可視化的,它們在包內(nèi)或者其他的aadl規(guī)范里不可以被訪問,他們被認為是在匿名的命名空間中。如果aadl規(guī)范是在局部的工作區(qū)域,那么它的構(gòu)件聲明僅僅局部可視。4.10. 部分規(guī)范一些在語法和語義正確的規(guī)范聲明可以是部分完整的,例如,既不需要構(gòu)件類別(類型或者實現(xiàn))包含在另一個構(gòu)件內(nèi),也不需要構(gòu)件間數(shù)據(jù)連接中的端口數(shù)據(jù)類型被指定直到從規(guī)范中完整的描述被實例化(設計被完成)。開發(fā)部分規(guī)范的彈性在設計時可以被有效地使用,尤其是

36、細節(jié)還不可以確定的早期階段。彈性允許語法上檢查不完整的規(guī)范和管理被擴展的語義、領(lǐng)域和特定的工程分析。例如,在不完整或不詳細的通過端口和其他元素的數(shù)據(jù)交流描述規(guī)范下,詳細的信號時鐘能被指定和信號延遲可以被分析。類似的,通過流規(guī)范,端到端流能在沒有詳細到要求實例化級別的系統(tǒng)層次情況下進行分析。4.11. 擴展、重定義和部分規(guī)范當語言帶有擴展、重定義和實現(xiàn)時,部分規(guī)范能被用來定義核心類型或者實現(xiàn)方式。核心方式能被用來生成一些有關(guān)系的構(gòu)件(帶有較少細節(jié)和更多詳細和修改的聲明后裔核心方式)。表4-6是一個擴展例子。基本的系統(tǒng)構(gòu)件類型聲明有兩個核心的類型擴展basic_plus和 control,在擴展內(nèi)

37、,數(shù)據(jù)輸入端口聲明input_data帶有完整的數(shù)據(jù)類型,而且加了一個附加的端口。關(guān)于擴展和重定義更詳細討論和其他的例子在12.2章節(jié)(設計方式)表4-6 簡單的擴展和重定義例子五、 軟件組件軟件組件的抽象概念表示為經(jīng)過處理的源程序文件(可執(zhí)行的二進制映像)和可執(zhí)行源碼中的實施通路??蓤?zhí)行的二進制映像(如可執(zhí)行代碼和數(shù)據(jù))是與某一組件關(guān)聯(lián)的處理(如編譯和連接)源程序文件的結(jié)果。一個組件的源程序文件可以被寫成傳統(tǒng)的程序設計語言(如ada,,java,和c),領(lǐng)域建模語言(如matlab/simulink),或者硬件描述語言(如vhdl).。源程序文件也可以是處理這些語言的中間結(jié)果(如目標文件)。

38、aadl軟件組件的抽象概念有l(wèi) 進程(5.1節(jié)):表示一個被保護的地址空間l 線程(5.2節(jié)):表示一個并發(fā)實施的單元l 線程組(5.3節(jié)):表示一個組織線程的成分單元l 數(shù)據(jù)(5.4節(jié)):表示源程序文件里的數(shù)據(jù)類型和靜態(tài)數(shù)據(jù)l 子程序(5.5節(jié)):表示可調(diào)用的連續(xù)執(zhí)行的代碼5.1. 進程進程概念表示為一個被保護的地址空間,一個對其他組件訪問進程里的任何事物提供保護的地址劃分。地址空間包括l 直接與進程關(guān)聯(lián)的可執(zhí)行的二進制映像(可執(zhí)行代碼和數(shù)據(jù))l 與進程的子組件關(guān)聯(lián)的可執(zhí)行的二進制映像l 服務器子程序(可執(zhí)行代碼) 和被外部組件引用的數(shù)據(jù)一個進程不提供固有的線程。因此,為了表示一個活躍的執(zhí)行

39、組件,一個進程必須包含一個線程。5.1.1. 文本表示表5-1 包含了部分進程的文本描述列表。該進程被表示為所有三種允許的子組件種類的例子:(1)線程,(2)線程組,和(3)數(shù)據(jù)。這個列表提供了組件的簡單化的類型和執(zhí)行聲明。列表顯示了兩個端口,進程的輸入端和輸出端。在完整的規(guī)范中,定義信息流的連接在進程執(zhí)行中被聲明。只有control_processing.speed_control中進程執(zhí)行中的子組件定義被明確地給出,沒有包括規(guī)范的其他細節(jié)。這些省略在語法正確性的部分規(guī)范上是合法的,在4.10節(jié)(部分規(guī)范)中已經(jīng)討論。表5-1: 一個進程文本表示的例子process control_proc

40、essingfeaturesinput: in data port;output: out data port;end control_processing;process implementation control_processing.speed_controlsubcomponentscontrol_input: thread control_in.input_processing_01;control_output: thread control_out.output_processing_01;control_thread_group: thread groupcontrol_th

41、reads.control_thread_set_01;set_point_data: data set_point_data_type;end control_processing.speed_control;thread control_inend control_in;thread implementation control_in.input_processing_01end control_in.input_processing_01;thread control_outend control_out;thread implementation control_out.output_

42、processing_01end control_out.output_processing_01;thread group control_threadsend control_threads;thread group implementation control_threads.control_thread_set_01end control_threads.control_thread_set_01;data set_point_data_typeend setpoint_data_type;5.1.2. 圖形化表示圖5-1顯示了表5-1中進程執(zhí)行control_processing.s

43、peed_control的圖形化顯示。該進程被表示為允許的子組件種類的例子:線程,線程組,和數(shù)據(jù)。如圖5-1所示,進程執(zhí)行control_processing.speed_control包含兩個線程(control_input和control_output),一個單一的數(shù)據(jù)組件(set_point_data),和一個線程組(control_thread_group)。圖5-1: 一個進程圖形化表示的例子5.1.3. 屬性對于進程和它的子組件線程, 預先聲明的進程屬性提供的規(guī)范有l(wèi) 存儲器保護的運行時間執(zhí)行l(wèi) 相應的源文件信息l 源文件載入時間l 調(diào)度協(xié)議l 綁定約束另外,某些屬性可以被進程的子

44、組件線程 (如period,deadline,以及actual_processor_binding)繼承和共享,包括預先聲明的屬性以及新屬性, 定義如11.3節(jié)。5.1.4. 約束一個aadl進程僅僅表示一個被保護的地址空間。因此, 進程必須包含至少一個明確聲明的線程或線程組子組件。也就是說,它并不等同于一個同時定義了一個被保護的地址空間和一個固有的線程的posix進程。表5-2 概述了進程的允許類型定義和執(zhí)行定義原理。一個進程只能是一個系統(tǒng)組件的子組件。117119頁的附錄包含了允許子組件關(guān)聯(lián)和特征的概要。表5-2: 允許進程定義概要種類類型執(zhí)行進程特征:l 服務器子程序l 端口l 供應數(shù)據(jù)

45、訪問l 請求數(shù)據(jù)訪問流規(guī)范:是屬性 是子組件:l 數(shù)據(jù)l 線程l 線程組子程序調(diào)用:否連接:是流:是模式:是屬性 是5.2. 線程線程是一個可在源碼中連續(xù)實施的并發(fā)的可調(diào)度單元。多路線程表現(xiàn)為并發(fā)路徑實施。多種實施屬性可以被分派到線程, 包括時間選擇(如最壞情況實施時間),分派協(xié)議(如周期的,非周期的,等等),存儲容量,和處理器綁定。5.2.1. 文本表示表5-3顯示了線程類型,執(zhí)行,子組件聲明的例子。表5-3中聲明了兩個線程類型和三個線程執(zhí)行。其中兩個線程執(zhí)行聲明描述了分開執(zhí)行同一個線程類型data_input.。進程執(zhí)行data_management的子組件子條款聲明定義了線程實例。在本例

46、中相關(guān)類型和執(zhí)行聲明集合在同組。這種定義分組用來使結(jié)構(gòu)清晰,并不是規(guī)范要求的組織形式。table 5-3: 一個線程聲明的例子thread data_processingend data_processing;thread implementation data_egrated_data_processingend data_egrated_data_processing;thread data_inputend data_input;thread implementation data_input.roll_data_inputend

47、data_input.roll_data_input;thread implementation data_input.pitch_data_inputend data_input.pitch_data_input;process data_managementend data_management;process implementationdata_management.autonomous_submarine_data_managementsubcomponentsroll_input: thread data_input.roll_data_input;pitch_input: thr

48、ead data_input.pitch_data_input;attitude_data_processing: threaddata_egrated_data_processing;end data_management.autonomous_submarine_data_management;5.2.2. 圖形化表示表5-4顯示了線程執(zhí)行control_laws.control_input的圖形化表示和與它相關(guān)聯(lián)的文本表示,沒有顯示類型、類型或執(zhí)行的細節(jié)聲明的界面。在本例中,數(shù)據(jù)實例configuration_data 被定義成線程的子組件,并且參考標準是數(shù)據(jù)

49、類型而不是數(shù)據(jù)執(zhí)行。這是合法的當且僅當在規(guī)范中沒有任何關(guān)于數(shù)據(jù)類型的執(zhí)行定義。表5-4: 一個帶有子組件的線程執(zhí)行的例子thread control_lawsend control_laws;data static_dataend static_data;thread implementationcontrol_laws.control_inputsubcomponentsconfiguration_data: datastatic_data;end control_laws.control_input;5.2.3. 線程實施圖5-2顯示了線程實施的狀態(tài)機圖形表示法。圓角矩形表示線程的實施狀態(tài)

50、或至少包含一個實施狀態(tài)的合成狀態(tài)。橢圓表示非實施狀態(tài)。有向弧表示狀態(tài)間的變遷?;】梢栽俦硎緸樾A圈的連接點引出、接入、分叉、停止。線程實例在正常實施(如優(yōu)先權(quán)搶占或初始化完成)或故障/錯誤的激發(fā)下可以在不同的調(diào)度狀態(tài)間變遷。預先確定的入口端點配備于每個線程實施狀態(tài):初始化,計算,和復原。初始化和計算入口端點用于正常實施。如果線程實施結(jié)果故障被發(fā)現(xiàn),源程序文件可能處理錯誤。如果在源程序文件中沒有處理錯誤,線程將被請求復原并準備下一次分派。如果一個錯誤不可復原,它的發(fā)生將作為一次事件從線程中預先聲明的輸出事件數(shù)據(jù)端口error (圖5-2中沒有給出)傳播。所有線程都有error輸出事件數(shù)據(jù)端口,允

51、許不可復原的帶有描述信息的錯誤作為信號發(fā)出。圖5-2: 線程實施狀態(tài)機5.2.4. 屬性預先聲明的屬性支持對一個線程每個實施階段的詳細描述。入口端點屬性指定與每個實施階段關(guān)聯(lián)的代碼入口(圖5-2):1. 初始化允許線程執(zhí)行明確的設定初值應用。2. 活動允許模式轉(zhuǎn)換間的應用狀態(tài)復原動作。3. 計算表示每次線程分派的代碼執(zhí)行。4. 復原允許線程執(zhí)行錯誤恢復動作。5. 解除活動允許模式轉(zhuǎn)換間的應用狀態(tài)保存動作。6. 當作為進程卸載或停止的一部分,線程被要求停止,最終執(zhí)行。另外,存在每個實施階段的實施時間和最終期限屬性(圖5-2中沒有給出)。線程的調(diào)度相關(guān)屬性包括dispatch_protocol和p

52、eriod。支持協(xié)議有l(wèi) 周期:在指定時間間隔重復發(fā)生的分派(period)l 非周期:事件觸發(fā)的線程分派l 零散:事件驅(qū)動的帶有最小分派間隔的線程分派l 后臺:一次分派一旦開始,一直執(zhí)行到結(jié)束為止周期,非周期,和零散協(xié)議代表性地包括硬性的線程最終期限。預先聲明的和用戶自定義的線程屬性可以用來在系統(tǒng)的體系結(jié)構(gòu)表示中指定評價線程的運行時間各方面,實現(xiàn)對線程行為的預分析。表5-5是一個線程的某些屬性關(guān)聯(lián)的例子。為初始化和概念上的實施定義入口端點和關(guān)聯(lián)的實施時間。表5-5: 線程屬性的例子thread controlproperties- nominal execution propertiesco

53、mpute_entrypoint => "control_ep"compute_execution_time => 5 ms . 10 ms;compute_deadline => 20 ms;dispatch_protocol => periodic;- initialization execution propertiesinitialize_entrypoint => "init_control"initialize_execution_time => 2 ms . 5 ms;initialize_deadlin

54、e => 10 ms;end control;5.2.5. 約束表5-6 概述了線程的合法子條款聲明。表5-6:允許的線程字條款聲明概述種類類型執(zhí)行線程特征: 服務器子程序 端口 供應數(shù)據(jù)訪問 請求數(shù)據(jù)訪問流規(guī)范:是屬性 是子組件: 數(shù)據(jù)子程序調(diào)用:是連接:是流:是模式:是屬性 是線程運行在進程被保護的虛擬地址空間中,或者作為明確定義的子組件,或者作為某個進程中的線程組的子組件。因此,線程必須包含在(如,是某項的子組件)進程或者線程組內(nèi)。多路并發(fā)線程可以在同一個進程中出現(xiàn)。附錄117119頁概述了允許的子組件關(guān)系和特征。5.3. 線程組線程組是一個組件框架,在進程中有邏輯地組織線程,數(shù)據(jù)

55、,和線程組。線程組不表示虛擬地址空間或某個實施單元。它們?yōu)樵O計中的分離概念提供基礎(chǔ),為多路線程和相關(guān)聯(lián)數(shù)據(jù)(如,有普通實施速率的線程或在處理輸入信號時需要用到的所有線程和數(shù)據(jù)組件)定義單一的條目。5.3.1. 文本表示表5-7是一個線程組文本表示的例子,包括一個線程組件,兩個數(shù)據(jù)組件和另一個線程組。表5-7給出了簡化的線程組類型和執(zhí)行定義。例如,只給出了control.roll_axis組件執(zhí)行定義的子組件定義部分,線程組執(zhí)行control_laws.roll的細節(jié)并沒有給出。注意數(shù)據(jù)子組件定義control_data和error_data涉及數(shù)據(jù)執(zhí)行定義而不是數(shù)據(jù)類型定義,反映出靜態(tài)數(shù)據(jù)組件可以定義在任何一個層級的適應性。線程組control類型定義包括一個定義period為50 ms的屬性關(guān)聯(lián)。這個數(shù)值被分

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論