![]() 上篇文章解析了軟件架構(gòu)設(shè)計(jì)的理論方面知識(shí)《【ASPICE4.0】--SWE.2軟件架構(gòu)設(shè)計(jì)解析》,可能有些抽象。 本文通過(guò)一個(gè)實(shí)例,來(lái)一起看看軟件架構(gòu)設(shè)計(jì)的主要內(nèi)容有哪些,要怎么來(lái)設(shè)計(jì)與編寫(xiě)的。 廢話(huà)不多說(shuō),開(kāi)搞。 假設(shè)系統(tǒng)需求如下: 1) SYSReq_001:ECU需要采集外部設(shè)備A輸入的電壓信息 2) SYSReq_002:當(dāng)電壓持續(xù)超過(guò)16V時(shí)(持續(xù)時(shí)間1000ms),判斷為過(guò)壓。 3) SYSReq_003:當(dāng)發(fā)生過(guò)壓情況時(shí),切斷電源; 假設(shè)系統(tǒng)架構(gòu)設(shè)計(jì)圖如下: ![]() 假設(shè)軟件需求如下: 1) SWReq_001:軟件間隔10ms,從MCU的哪個(gè)PIN腳,進(jìn)行電壓ADC采樣; 2) SWReq_002:當(dāng)電壓持續(xù)超過(guò)16V時(shí)(持續(xù)時(shí)間1000ms),判斷為過(guò)壓。 3) SWReq_003:當(dāng)發(fā)生過(guò)壓情況時(shí),通過(guò)MCU有哪個(gè)PIN腳,切斷外部ECU2的電源供電; 本文主要講解軟件架構(gòu)設(shè)計(jì)的這些要素:靜態(tài)架構(gòu)圖、動(dòng)態(tài)行為圖、接口、資源等幾個(gè)部分。下面一個(gè)個(gè)示例展開(kāi)描述: ![]() 下面是我對(duì)軟件靜態(tài)架構(gòu)圖的理解: 1) 上圖即為軟件架構(gòu)靜態(tài)圖,里面深藍(lán)色的框框,即為上篇軟件架構(gòu)設(shè)計(jì)文檔說(shuō)的“軟件組件”。 2) 上圖淺藍(lán)色部分,屬于軟件組件內(nèi)部的設(shè)計(jì),在軟件架構(gòu)設(shè)計(jì)可以不用展開(kāi)詳細(xì)分析,在軟件詳細(xì)設(shè)計(jì)再展開(kāi)詳細(xì)設(shè)計(jì)即可。 3) 上圖紅色的箭頭為模塊間的接口,需要軟件架構(gòu)設(shè)計(jì)文檔中展開(kāi)詳細(xì)描述。 4) 上圖黑色的箭頭為模塊內(nèi)的接口,不需要軟件架構(gòu)設(shè)計(jì)文檔中展開(kāi)詳細(xì)描述,在軟件詳細(xì)設(shè)計(jì)展開(kāi)即可。 需要給每個(gè)組件做好編號(hào),并詳細(xì)解釋每個(gè)組件的相關(guān)意義。具體可參考下表: 如下表,軟件架構(gòu)設(shè)計(jì)書(shū)需對(duì)所有的軟件組件展開(kāi)詳細(xì)描述。具體參考如下: ![]() 關(guān)于資源相關(guān)的使用評(píng)估,最好附上相關(guān)說(shuō)明,比如“沿用”哪個(gè)項(xiàng)目,故參考該項(xiàng)目,XX模塊占用XX空間。 如下表,所有組件之間相互的接口都需要羅列出來(lái),不能有遺漏。具體參考如下: ![]() 若由多個(gè)組件共同實(shí)現(xiàn)某項(xiàng)軟件需求,則需編寫(xiě)動(dòng)態(tài)行為圖以進(jìn)行功能的設(shè)計(jì)說(shuō)明。具體參考下圖: ![]() 針對(duì)Code Flash, Data Flash, RAM等存儲(chǔ)類(lèi)資源的分析,可按照靜態(tài)架構(gòu)圖中的組件來(lái)分析,分別列出各組件的資源消耗。 ![]() 針對(duì)CPU負(fù)載,動(dòng)態(tài)設(shè)計(jì)以及軟件所有任務(wù)列表,可以協(xié)助用支持此部分設(shè)計(jì)。 這個(gè)CPU負(fù)載,分為兩大部分,一部分是任務(wù)的CPU負(fù)載,一部分是中斷的CPU負(fù)載,兩部分都要進(jìn)行統(tǒng)計(jì)。 ![]() 另外,軟件架構(gòu)中還需要說(shuō)明相關(guān)的軟件控制策略,例如: 1)需羅列出所有使用的軟件任務(wù),分析每個(gè)任務(wù)的用途、執(zhí)行時(shí)間,調(diào)用周期,等相關(guān)信息。 2)需羅列出所有的軟件中斷,分析每個(gè)中斷的用途、執(zhí)行時(shí)間,調(diào)用周期,等相關(guān)信息。 3)需對(duì)初始化流程進(jìn)行分析。 4)需對(duì)共享資源進(jìn)行控制與分析。 5)需對(duì)看門(mén)狗使用策略進(jìn)行分析 此部分就先不展開(kāi)詳細(xì)描述了,后面有需要再補(bǔ)充吧。 本過(guò)程域的前3個(gè)BP,可以梳理為下圖: ![]() 軟件架構(gòu)設(shè)計(jì)文檔中,要包含如下內(nèi)容: 1) 靜態(tài)圖 a) 包含哪些軟件組件 b) 這些組件的職責(zé)描述,組件是如何實(shí)現(xiàn)的(如:自研/購(gòu)買(mǎi)/開(kāi)源等)、組件占用資源等。 2) 動(dòng)態(tài)圖 a) 軟件組件間的交互和行為表現(xiàn); b) 體現(xiàn)形式要求采用UML等方式,如上文的UML時(shí)序圖。 3) 需要對(duì)所有組件之間交互的接口展開(kāi)詳細(xì)描述; 4) 需要對(duì)RAM/Flash等存儲(chǔ)性資源進(jìn)行評(píng)估,一般按軟件組件來(lái)進(jìn)行評(píng)估分析。 5) 需要對(duì)CPU負(fù)載進(jìn)行評(píng)估,一般需對(duì)所有的任務(wù)、中斷進(jìn)行分析,通過(guò)分析其運(yùn)行周期,執(zhí)行時(shí)間來(lái)分析其占用的CPU負(fù)載。 6) 軟件架構(gòu)中還需要說(shuō)明相關(guān)的軟件控制策略,例如:所有使用的軟件任務(wù),所有的軟件中斷, 對(duì)初始化流程進(jìn)行分析,對(duì)共享資源進(jìn)行分析、看門(mén)狗策略等。 7) 一定要包含設(shè)計(jì)的結(jié)論和設(shè)計(jì)的理由。 若有需要ASPICE4.0相關(guān)標(biāo)準(zhǔn)學(xué)習(xí)文檔的朋友,可以?huà)叽a如下微信二維碼,然后發(fā)送“ASPICE”。 |
|