什么是SDL
SDL (Specification and Description Language) ,定義了一種規(guī)范和描述語言, 是一種用于描述實(shí)時系統(tǒng)的建模語言霉祸。
SDL圖說明了規(guī)范和描述語言建模的過程。它可廣泛應(yīng)用于汽車、航空骂倘、通信俯艰、醫(yī)療和電信領(lǐng)域讲仰。
SDL圖有三個部分:
系統(tǒng)定義
塊
流程
系統(tǒng)定義定義了系統(tǒng)的主要節(jié)點(diǎn)(塊)牵祟,如客戶端和服務(wù)器碴卧,而塊圖顯示了更多細(xì)節(jié)弱卡。
流程顯示了每個塊中的處理步驟∽〔幔可以參考狀態(tài)機(jī)和UML婶博。
系統(tǒng)
整體設(shè)計被稱為系統(tǒng),
系統(tǒng)之外的一切被稱為環(huán)境荧飞。
系統(tǒng)沒有特定的圖形表示凡蜻,但如果需要,可以使用塊表示垢箕。
代理
代理是系統(tǒng)結(jié)構(gòu)中的一個元素划栓。代理有兩種:塊和進(jìn)程。系統(tǒng)是最外層的塊条获。
塊是一種結(jié)構(gòu)化元素忠荞,并不意味著目標(biāo)上的任何物理實(shí)現(xiàn)。 一個塊可以進(jìn)一步分解成多個塊帅掘,以此來處理大型系統(tǒng)委煤。 塊符號是一個實(shí)心矩形,中間是它的名稱
一個進(jìn)程基本上就是將要執(zhí)行的代碼修档。它是一個基于有限狀態(tài)機(jī)的任務(wù)碧绞,有一個隱式消息隊列來接收消息。同一進(jìn)程的多個實(shí)例可以獨(dú)立運(yùn)行吱窝。系統(tǒng)啟動時出現(xiàn)的實(shí)例數(shù)和最大實(shí)例數(shù)在進(jìn)程名稱后的括號中聲明讥邻。 過程符號的完整語法是: <進(jìn)程名>[(<啟動時的實(shí)例數(shù)> ,<最大實(shí)例數(shù)>)] 如果省略,則啟動時實(shí)例數(shù)的默認(rèn)值為1院峡,最大實(shí)例數(shù)為無窮大兴使。
整體架構(gòu)可以看作是一棵樹,樹葉就是過程照激。
首先发魄,一個進(jìn)程有一個隱式消息隊列來接收通道中列出的消息。
過程描述基于擴(kuò)展的有限狀態(tài)機(jī)俩垃。過程狀態(tài)決定了過程在接受特定刺激時的行為励幼。過渡是兩種狀態(tài)之間的代碼。
該進(jìn)程可以掛在它的消息隊列或信號量上口柳,或者運(yùn)行例如執(zhí)行代碼苹粟。來自環(huán)境或從另一個代理到代理的信息刺激稱為信號。過程代理接收的信號首先被放入隊列(輸入端口)啄清。
當(dāng)狀態(tài)機(jī)處于等待狀態(tài)時六水,如果輸入端口中的第一個信號針對該狀態(tài)被使能俺孙,則狀態(tài)機(jī)開始轉(zhuǎn)換到另一個狀態(tài)。
開始符號代表流程執(zhí)行的起點(diǎn)
進(jìn)程狀態(tài)的名稱寫在狀態(tài)符號中
進(jìn)程可以以停止符號結(jié)束掷贾。
消息輸入符號代表在SDL-RT狀態(tài)下預(yù)期的消息類型睛榄。它總是跟隨一個SDL-RT狀態(tài)符號,如果接收到該符號想帅,則執(zhí)行輸入之后的符號场靴。 消息輸入符號中的語法如下:
<Message name> [(<parameter name> {, <parameter name>}*)]
<parameter name> is a variable that needs to be declared.
消息輸出用于交換信息。它以異步方式將數(shù)據(jù)放入接收方的消息隊列中港准。
<message name>[(<parameter value> {,<parameter value>}*)] TO_XXX…
一個進(jìn)程可能有中間狀態(tài)旨剥,在正在進(jìn)行的工作完成之前,不能處理新的請求浅缸。這些新的請求不應(yīng)該丟失轨帜,而應(yīng)該保留,直到進(jìn)程達(dá)到穩(wěn)定狀態(tài)衩椒。儲蓄概念已經(jīng)被提出來了蚌父,它基本上保存著信息,直到它被處理毛萌。
The symbol syntax is: <message name>
一個連續(xù)的信號是一個表達(dá)式苟弛,它在一個過程達(dá)到一個新的狀態(tài)后立即被求值。它在任何消息輸入或保存消息之前進(jìn)行評估阁将。
動作符號包含一組用C代碼編寫的指令膏秫。語法是C語言的語法。
一個決策符號可以看作一個C開關(guān)/案例做盅。
當(dāng)進(jìn)程試圖獲取信號量時缤削,使用信號量獲取符號。
要給出一個信號量言蛇,“信號量給出SDL-RT圖形符號”中的語法是:<信號量名稱>
啟動計時器“啟動計時器SDL-RT圖形符號”中的語法為:<計時器名稱>(<刻度計數(shù)中的時間值>)
要取消計時器僻他,“取消計時器SDL-RT圖形符號”中的語法為:<計時器名稱>
要創(chuàng)建流程宵距,創(chuàng)建流程符號中的語法是:
<process name>[:<process class>] [PRIO <priority>]
過程調(diào)用符號用于調(diào)用SDL-RT過程腊尚。
過程調(diào)用中的語法SDL圖形符號是標(biāo)準(zhǔn)的C語法:
[<return variable> =] <procedure name>({<parameters>}*);
連接器用于: 將一個過渡分割成幾個部分,以便圖表保持清晰和可打印满哪,將不同的分支聚集到同一點(diǎn)婿斥。
符號的分支具有真或假的值。真正的分支是在定義表達(dá)式時定義的哨鸭,因此等價的C代碼是:#ifdef
注釋符號允許編寫任何類型的非正式文本民宿,并將其連接到所需的符號。如果需要像鸡,注釋符號可以不連接活鹰。
擴(kuò)展符號用于完成符號中的表達(dá)式。擴(kuò)展符號中的表達(dá)式被視為連接符號中表達(dá)式的一部分。因此志群,語法是連接符號之一着绷。
該符號專用于程序圖。它指示過程入口點(diǎn)锌云。
該符號專用于程序圖荠医。它表示程序結(jié)束。
這個符號用來聲明C類型變量桑涎。
此符號用于聲明SDL-RT特定標(biāo)題
在一種狀態(tài)下(例如空閑)彬向,該過程從隊列中取出第一個信號,該信號是輸入符號(此處為代碼攻冷,包含來自面板的卡標(biāo)識和個人識別碼的信息)中指示的類型之一娃胆。空閑狀態(tài)之后是一個輸入符號等曼,描述信號代碼的消耗缕棵。在接收到代碼信號后的轉(zhuǎn)換中,它將使用變量cur_panel來記住信號來自哪個面板涉兽,然后將代碼發(fā)送到中央單元進(jìn)行驗(yàn)證招驴。下一個狀態(tài)是驗(yàn)證。在狀態(tài)驗(yàn)證中枷畏,控制器將只接受正潮鹄澹或不正常。如果它正常拥诡,它將通過調(diào)用程序“打開門”來打開門触趴。
巧克力自動售貨機(jī)是一種自動機(jī)器,在插入適當(dāng)?shù)拇a后渴肉,可以提供不同類型的巧克力冗懦。
有限狀態(tài)機(jī)由有限數(shù)量的狀態(tài)組成,其中一個是初始狀態(tài)仇祭,多個轉(zhuǎn)換連接這些狀態(tài)披蕉。
在自動售貨機(jī)(狀態(tài)圖示例)中,圓圈下方代表狀態(tài)乌奇,箭頭代表過渡没讲。每個箭頭都用一個觸發(fā)轉(zhuǎn)換的輸入(斜線前)和一個可能的輸出列表(斜線后)來修飾。
創(chuàng)建網(wǎng)絡(luò)拓?fù)鋱D的方式有很多礁苗,若選擇在線繪制網(wǎng)絡(luò)拓?fù)鋱D爬凑,推薦使用在線制圖網(wǎng)站:?freedgo Design。 freedgo Design 试伙,其訪問地址為:?https://www.freedgo.com?嘁信。freedgo design 在線制圖網(wǎng)站是一款多類型的圖形圖表設(shè)計軟件于样,軟件內(nèi)容自帶豐富的幾何圖形模板,可以用于繪制專業(yè)的網(wǎng)絡(luò)拓?fù)鋱D潘靖,泳道圖百宇、影響圖、SDL圖秘豹、審批圖携御、會計網(wǎng)絡(luò)拓?fù)鋱D等,提供豐富的網(wǎng)絡(luò)圖例子既绕,上手更輕松
現(xiàn)在啄刹,一起開看如何使用Freedgo Design制做SDL圖。
訪問?https://www.freedgo.com?,先注冊一個用戶凄贩,注冊成功后誓军,登錄到?首頁
訪問?https://www.freedgo.com/draw-index.html?,進(jìn)入制圖頁面,或者從?首頁?頁面 頂部菜單點(diǎn)擊開始制作疲扎。
進(jìn)入制圖頁面后 點(diǎn)擊?文件?->?從類型中新建?->?流程圖?->?SDL圖
或者點(diǎn)擊圖例昵时,在圖例中找到?流程圖?->?SDL圖,選擇一個類似的圖例進(jìn)行改動
軟件提供多種連接樣式椒丧,在該SDL圖中壹甥,可以選擇普通的直角連接線。在連接線上壶熏,還可以輸入文字做進(jìn)一步的說明句柠。
網(wǎng)絡(luò)拓?fù)鋱D制作工具擁有一套功能豐富的樣式,用戶可以對封閉圖形進(jìn)行單色填充棒假、漸變填充溯职、文本大小位置顏色調(diào)整。經(jīng)過圖案填充的網(wǎng)絡(luò)拓?fù)鋱D帽哑,顏值提升了不少谜酒。
更多基本流程的例子 請參考 [圖例] (https://www.freedgo.com/new/search/3/1607/d_0_3_1607_0_1_0_0.html)