www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 工業(yè)控制 > 《機(jī)電信息》
[導(dǎo)讀]隨著嵌入式計(jì)算設(shè)備基礎(chǔ)硬件性能的提升,在通信、工業(yè)制造、交通運(yùn)輸?shù)阮I(lǐng)域,嵌入式系統(tǒng)逐漸承擔(dān)起更加綜合化和關(guān)鍵的任務(wù),這也導(dǎo)致嵌入式軟件在結(jié)構(gòu)愈加復(fù)雜的同時(shí),其安全性問(wèn)題也越來(lái)越受到重視。堆棧是嵌入式軟件中的重要存儲(chǔ)結(jié)構(gòu),它用于保存軟件運(yùn)行過(guò)程中的關(guān)鍵信息。堆棧的安全也直接影響到嵌入式軟件的安全,因此,在一些安全性要求較高的領(lǐng)域,堆棧的使用分析已成為保證軟件安全性的必要工作之一,如機(jī)載領(lǐng)域DO—178C中要求,在對(duì)軟件源代碼的準(zhǔn)確性和一致性評(píng)審和分析時(shí)需要包含對(duì)堆棧使用的分析。本文結(jié)合現(xiàn)有技術(shù),說(shuō)明如何進(jìn)行嵌入式軟件堆棧使用分析[1]。

引言

隨著嵌入式計(jì)算設(shè)備基礎(chǔ)硬件性能的提升,在通信、工業(yè)制造、交通運(yùn)輸?shù)阮I(lǐng)域,嵌入式系統(tǒng)逐漸承擔(dān)起更加綜合化和關(guān)鍵的任務(wù),這也導(dǎo)致嵌入式軟件在結(jié)構(gòu)愈加復(fù)雜的同時(shí),其安全性問(wèn)題也越來(lái)越受到重視。堆棧是嵌入式軟件中的重要存儲(chǔ)結(jié)構(gòu),它用于保存軟件運(yùn)行過(guò)程中的關(guān)鍵信息。堆棧的安全也直接影響到嵌入式軟件的安全,因此,在一些安全性要求較高的領(lǐng)域,堆棧的使用分析已成為保證軟件安全性的必要工作之一,如機(jī)載領(lǐng)域DO—178C中要求,在對(duì)軟件源代碼的準(zhǔn)確性和一致性評(píng)審和分析時(shí)需要包含對(duì)堆棧使用的分析。本文結(jié)合現(xiàn)有技術(shù),說(shuō)明如何進(jìn)行嵌入式軟件堆棧使用分析[1]。

1堆棧的概念

堆棧,又稱(chēng)棧,是一種后進(jìn)先出的數(shù)據(jù)結(jié)構(gòu)。當(dāng)軟件中任務(wù)因函數(shù)調(diào)用、中斷或異常處理而發(fā)生跳轉(zhuǎn)時(shí),會(huì)將任務(wù)現(xiàn)場(chǎng)的上下文信息、變量、參數(shù)等緩存到堆棧中,待處理完成后,返回時(shí)從堆棧中再恢復(fù)現(xiàn)場(chǎng)信息繼續(xù)處理[2]。

堆棧因使用場(chǎng)景不同,通常分為三種:任務(wù)棧、任務(wù)異常棧和中斷棧。

任務(wù)棧是軟件中任務(wù)在正常運(yùn)行時(shí)使用到的棧。任務(wù)在運(yùn)行時(shí)會(huì)持續(xù)進(jìn)行函數(shù)調(diào)用,每一次調(diào)用都意味著一次函數(shù)跳轉(zhuǎn)。任務(wù)棧用于在函數(shù)跳轉(zhuǎn)前緩存現(xiàn)場(chǎng)信息,在函數(shù)返回時(shí)從任務(wù)棧中恢復(fù)現(xiàn)場(chǎng)信息。

任務(wù)異常棧是系統(tǒng)處理任務(wù)引發(fā)異常時(shí)使用到的棧。任務(wù)在運(yùn)行時(shí)可能會(huì)因?yàn)槌绦蝈e(cuò)誤而引起系統(tǒng)異常,此時(shí)操作系統(tǒng)會(huì)進(jìn)入異常處理,該處理過(guò)程中使用任務(wù)異常棧保存異常發(fā)生現(xiàn)場(chǎng)信息和處理過(guò)程信息。

中斷棧是系統(tǒng)處理外部中斷時(shí)使用到的棧。任務(wù)在運(yùn)行時(shí)可能會(huì)被外部中斷打斷,此時(shí)操作系統(tǒng)會(huì)進(jìn)入中斷處理,該處理過(guò)程中使用中斷棧保存中斷發(fā)生現(xiàn)場(chǎng)信息和處理過(guò)程信息。

嵌入式軟件的運(yùn)行實(shí)際上是多個(gè)任務(wù)的持續(xù)調(diào)度和執(zhí)行,通常操作系統(tǒng)在創(chuàng)建每個(gè)任務(wù)時(shí)都會(huì)為其分配一個(gè)任務(wù)棧和一個(gè)任務(wù)異常棧。任務(wù)從其入口函數(shù)開(kāi)始啟動(dòng)執(zhí)行,執(zhí)行過(guò)程中發(fā)生函數(shù)調(diào)用時(shí)進(jìn)行數(shù)據(jù)壓棧,用任務(wù)棧存儲(chǔ)參數(shù)、變量、寄存器值等臨時(shí)數(shù)據(jù)。函數(shù)返回時(shí)進(jìn)行彈棧,從任務(wù)棧中恢復(fù)臨時(shí)數(shù)據(jù)。任務(wù)切換時(shí)會(huì)切換使用的任務(wù)棧,因此任務(wù)棧之間是相互隔離的。任務(wù)運(yùn)行時(shí)可能因代碼缺陷等原因觸發(fā)系統(tǒng)異常,此時(shí)停止任務(wù)運(yùn)行,將任務(wù)棧切換為任務(wù)異常棧進(jìn)行異常處理,處理完成后再切換回任務(wù)棧。任務(wù)運(yùn)行時(shí)會(huì)被外部設(shè)備中斷打斷,如定時(shí)器中斷、串口中斷等,此時(shí)停止任務(wù)運(yùn)行,將任務(wù)棧切換到中斷棧進(jìn)行中斷處理,處理完成后再切換回任務(wù)棧。

2嵌入式軟件堆棧使用分析目的

嵌入式軟件堆棧使用分析的目的是分析并計(jì)算軟件運(yùn)行期間堆棧的最差使用情況,確認(rèn)堆棧資源分配是否合理'需確保在最差情況下也不會(huì)出現(xiàn)棧溢出,從而保證軟件運(yùn)行過(guò)程中堆棧中的關(guān)鍵數(shù)據(jù)始終是正確的。

任務(wù)棧是軟件運(yùn)行過(guò)程中被操作最頻繁的堆棧,且存儲(chǔ)著任務(wù)運(yùn)行時(shí)的關(guān)鍵信息。任務(wù)棧中的信息若被破壞或篡改'將會(huì)導(dǎo)致程序運(yùn)行不符合預(yù)期甚至程序崩潰。對(duì)于高安全性的嵌入式軟件'針對(duì)任務(wù)棧的堆棧使用分析是軟件安全性保證工作的重要部分。故本文只針對(duì)嵌入式軟件任務(wù)棧的堆棧使用分析方法進(jìn)行說(shuō)明。

3嵌入式軟件堆棧使用分析技術(shù)

在進(jìn)行嵌入式軟件堆棧使用分析時(shí)可以采用多種技術(shù),以下針對(duì)三種常見(jiàn)的技術(shù)方法進(jìn)行說(shuō)明。

1)手工計(jì)算法:人工計(jì)算任務(wù)執(zhí)行流程中各函數(shù)調(diào)用期間所需的任務(wù)棧空間大小,并估算出所有可能的調(diào)用路徑上所需的任務(wù)??臻g大小,其中值最大的即為任務(wù)棧的最壞使用情況。該方法需要分析人員熟悉程序源代碼和函數(shù)調(diào)用期間使用的寄存器數(shù)量和每個(gè)寄存器所占用的??臻g大小。對(duì)于較復(fù)雜的軟件,該方法工作量大、耗時(shí)長(zhǎng)、易出錯(cuò),其計(jì)算結(jié)果準(zhǔn)確程度依賴(lài)于分析人員個(gè)人能力。

2)靜態(tài)代碼分析法:通過(guò)堆棧分析工具對(duì)代碼展開(kāi)靜態(tài)分析,從而計(jì)算出任務(wù)棧的最壞使用情況及路徑。工具以任務(wù)入口函數(shù)為起點(diǎn),計(jì)算出一條從起點(diǎn)到調(diào)用終點(diǎn)的任務(wù)棧最壞使用路徑,該路徑上各函數(shù)節(jié)點(diǎn)的堆棧使用之和便是任務(wù)棧的最壞使用情況。該方法僅前期準(zhǔn)備階段需要一定工作量,后續(xù)階段工作易實(shí)施、耗時(shí)短、結(jié)果直觀。但該方法無(wú)法分析動(dòng)態(tài)調(diào)用場(chǎng)景,如通過(guò)指針調(diào)用,需要人工干預(yù)。

3)動(dòng)態(tài)運(yùn)行時(shí)分析法:通過(guò)動(dòng)態(tài)分析工具監(jiān)控程序的運(yùn)行時(shí)堆棧使用情況從而獲得最壞使用情況。該方法通常需先按照工具約定對(duì)代碼進(jìn)行插樁并重新編譯生成可執(zhí)行程序,之后通過(guò)執(zhí)行測(cè)試用例覆蓋所有可能的程序路徑,工具可以跟蹤用例執(zhí)行期間的函數(shù)調(diào)用和返回,記錄堆棧的使用情況,最終分析出堆棧最壞使用情況。該方法分析階段自動(dòng)化,無(wú)須人工干預(yù)、工作量較小、可覆蓋動(dòng)態(tài)調(diào)用場(chǎng)景。但該方法分析結(jié)果準(zhǔn)確程度依賴(lài)于測(cè)試用例設(shè)計(jì)完善程度,若測(cè)試用例未覆蓋到全部路徑,則可能會(huì)導(dǎo)致結(jié)果不準(zhǔn)確。

綜上所述,相較于其他兩種方法,靜態(tài)代碼分析法使用工具代替人工分析,效率更高,同時(shí)無(wú)須部署運(yùn)行目標(biāo)軟件,更加方便靈活。因此本文基于靜態(tài)代碼分析法,介紹如何通過(guò)靜態(tài)分析工具stackAnalyer進(jìn)行嵌入式軟件堆棧使用分析。

4 stackAnaIyer概述

stackAnalyer是一款由Abslnt公司開(kāi)發(fā)的用于嵌入式軟件堆棧使用情況分析的工具。它是一款靜態(tài)分析工具,不依賴(lài)程序執(zhí)行。它通過(guò)對(duì)二進(jìn)制可執(zhí)行文件展開(kāi)靜態(tài)分析,自動(dòng)分析從輸入的程序入口函數(shù)到結(jié)束的所有可能調(diào)用路徑,并計(jì)算路徑上的堆棧使用情況,識(shí)別堆棧最差使用情況和路徑。stackAnalyer工具的工作原理如下:

1)以任務(wù)入口函數(shù)為起點(diǎn)分析代碼,為任務(wù)建立一棵調(diào)用樹(shù);

2)分析該調(diào)用樹(shù)中每個(gè)節(jié)點(diǎn)上函數(shù)的堆棧使用量;

3)分析并計(jì)算從樹(shù)根節(jié)點(diǎn)到葉子節(jié)點(diǎn)哪條調(diào)用路徑上經(jīng)過(guò)的節(jié)點(diǎn)函數(shù)的堆棧使用量之和最大,該條路徑便是任務(wù)堆棧最差使用路徑,使用量之和為任務(wù)堆棧最差使用情況。

stackAnalyer工具存在如下兩處功能缺陷:

1)作為靜態(tài)代碼分析工具無(wú)法分析包括函數(shù)指針調(diào)用在內(nèi)的動(dòng)態(tài)調(diào)用場(chǎng)景,遇到通過(guò)函數(shù)指針的跳轉(zhuǎn)時(shí),由于跳轉(zhuǎn)地址不是有效的函數(shù)地址,會(huì)導(dǎo)致分析失敗;

2)無(wú)法分析系統(tǒng)調(diào)用場(chǎng)景,遇到系統(tǒng)調(diào)用指令時(shí)由于無(wú)法識(shí)別跳轉(zhuǎn)目的函數(shù),會(huì)終止分析該條路徑。

針對(duì)上述兩種場(chǎng)景,在實(shí)際操作時(shí)需要進(jìn)行人工干預(yù)。

5嵌入式軟件堆棧使用分析方法

本章節(jié)結(jié)合stackAnalyer工具分析原理和嵌入式軟件特點(diǎn),以圖1所示的Taskcase任務(wù)為例,針對(duì)基于靜態(tài)代碼分析的嵌入式軟件堆棧使用分析實(shí)施過(guò)程進(jìn)行說(shuō)明。

5.1梳理軟件任務(wù)信息

在進(jìn)行堆棧使用分析時(shí),只有明確待分析軟件中運(yùn)行的任務(wù)的基本信息,才能針對(duì)具體任務(wù)展開(kāi)分析和評(píng)估工作。因此首先需要梳理出軟件系統(tǒng)中運(yùn)行任務(wù)的信息,該工作至關(guān)重要,是后續(xù)所有工作的基礎(chǔ),且只能由人工完成。梳理的任務(wù)需要覆蓋本次待分析軟件包含的所有任務(wù),且梳理的信息需準(zhǔn)確。梳理的任務(wù)信息至少需要包含如下屬性:

1)任務(wù)標(biāo)識(shí):可唯一標(biāo)識(shí)一個(gè)任務(wù)的屬性,如任務(wù)名或任務(wù)ID。建議使用任務(wù)名作為任務(wù)標(biāo)識(shí),因?yàn)橥ǔH蝿?wù)ID在每次運(yùn)行軟件時(shí)都可能不同,而任務(wù)名是不變的且易于理解。

2)任務(wù)入口函數(shù):創(chuàng)建任務(wù)時(shí)為其指定的入口函數(shù)。任務(wù)入口函數(shù)必須是軟件的可執(zhí)行文件中存在的、有效的函數(shù)符號(hào),若存在同名的函數(shù),則需要說(shuō)明定義該任務(wù)入口函數(shù)的文件名以便區(qū)分。若在創(chuàng)建任務(wù)時(shí)是通過(guò)函數(shù)指針?lè)绞街付ǖ娜肟诤瘮?shù),則需要確定指針具體指向的函數(shù)。只需要記錄函數(shù)名即可,無(wú)須關(guān)注其參數(shù)和返回值。

3)任務(wù)特權(quán)狀態(tài):指任務(wù)運(yùn)行時(shí)所處的系統(tǒng)特權(quán)狀態(tài),如用戶(hù)態(tài)和系統(tǒng)態(tài),部分支持虛擬化的系統(tǒng)還存在超級(jí)用戶(hù)態(tài)等第三種狀態(tài),本文不考慮三態(tài)場(chǎng)景。該屬性說(shuō)明了任務(wù)運(yùn)行時(shí)任務(wù)棧所屬的特權(quán)空間。

4)分配的任務(wù)棧大小:任務(wù)創(chuàng)建時(shí)為其分配的任務(wù)棧大小,用于和分析結(jié)果進(jìn)行對(duì)比評(píng)估。

5)任務(wù)棧最差使用情況:記錄當(dāng)前任務(wù)的堆棧使用分析結(jié)果。

6)補(bǔ)充分析說(shuō)明:若工具分析結(jié)果不準(zhǔn)確或分析失敗,則需要人工補(bǔ)充分析并說(shuō)明具體的補(bǔ)充分析情況,否則無(wú)須說(shuō)明。

在實(shí)際工作中可以按列表的形式梳理和記錄上述任務(wù)信息。以圖1中用戶(hù)Taskcase任務(wù)為例梳理任務(wù)信息表,如表1所示。

5.2工具分析

梳理完成任務(wù)信息表后,使用stackAnalyer工具對(duì)表中任務(wù)記錄逐條進(jìn)行靜態(tài)代碼分析。工具根據(jù)輸入的任務(wù)入口函數(shù)自動(dòng)分析并生成分析報(bào)告,若分析成功,則會(huì)在報(bào)告中顯示任務(wù)棧最大使用大小和路徑。以Taskcase任務(wù)為例,分析結(jié)果報(bào)告如圖2所示。

5.3補(bǔ)充分析

如上文所述,StackAnalyer工具在遇到函數(shù)指針調(diào)用和系統(tǒng)調(diào)用時(shí)會(huì)分析失敗,導(dǎo)致無(wú)法產(chǎn)生準(zhǔn)確的結(jié)果,因此需要在工具分析后針對(duì)分析失敗的任務(wù)進(jìn)行補(bǔ)充分析。

對(duì)于函數(shù)指針調(diào)用場(chǎng)景,需要走讀代碼確認(rèn)程序運(yùn)行時(shí)實(shí)際調(diào)用的函數(shù),使用工具提供的AIS工程腳本,將該函數(shù)補(bǔ)充到任務(wù)的函數(shù)調(diào)用樹(shù)上,重新分析生成最終結(jié)果。若存在多個(gè)可能調(diào)用的函數(shù),則需要對(duì)每一個(gè)函數(shù)都進(jìn)行補(bǔ)充分析,其中結(jié)果值最大的即為該任務(wù)最終分析結(jié)果。

對(duì)于系統(tǒng)調(diào)用場(chǎng)景,需要根據(jù)具體實(shí)現(xiàn)場(chǎng)景分析。系統(tǒng)調(diào)用是一種軟中斷,通常作為用戶(hù)態(tài)程序進(jìn)入系統(tǒng)態(tài)的接口。嵌入式操作系統(tǒng)提供兩種通過(guò)觸發(fā)系統(tǒng)調(diào)用實(shí)現(xiàn)函數(shù)調(diào)用的機(jī)制:

1)進(jìn)入系統(tǒng)態(tài)的系統(tǒng)調(diào)用。該機(jī)制是一種跨特權(quán)狀態(tài)的調(diào)用,會(huì)切換任務(wù)棧為系統(tǒng)態(tài)堆棧,后續(xù)堆棧的使用不會(huì)再影響任務(wù)棧,因此無(wú)須計(jì)算后續(xù)調(diào)用函數(shù)的堆棧使用量,將其直接指定為0后重新分析最終結(jié)果。

2)共享庫(kù)calllib調(diào)用。該機(jī)制通過(guò)觸發(fā)系統(tǒng)調(diào)用查找內(nèi)存空間中共享庫(kù)函數(shù)地址從而實(shí)現(xiàn)跨層級(jí)的函數(shù)調(diào)用。該調(diào)用只能在同一特權(quán)狀態(tài)下進(jìn)行,不會(huì)切換任務(wù)棧,后續(xù)堆棧使用會(huì)影響當(dāng)前任務(wù)棧,因此需要人工對(duì)后續(xù)調(diào)用過(guò)程進(jìn)行堆棧使用分析,將結(jié)果補(bǔ)充到最終分析結(jié)果中。

5.4結(jié)果分析

將軟件中所有任務(wù)都分析和補(bǔ)充分析完成后,需要逐條對(duì)軟件任務(wù)信息表中“分配的任務(wù)棧大小”和“任務(wù)棧最差使用情況”屬性進(jìn)行比較。若前者不小于后者,則說(shuō)明該任務(wù)的任務(wù)??臻g分配充足,不存在棧溢出風(fēng)險(xiǎn),同時(shí)可根據(jù)具體差值適當(dāng)調(diào)整任務(wù)棧大小,節(jié)省系統(tǒng)資源;若前者小于后者,則說(shuō)明存在棧溢出風(fēng)險(xiǎn),需要擴(kuò)充該任務(wù)的任務(wù)??臻g。

6結(jié)束語(yǔ)

本文提供了一種基于靜態(tài)代碼分析的嵌入式軟件堆棧使用分析方法,主要說(shuō)明如何分析軟件任務(wù)棧的最差使用情況,同時(shí)對(duì)指針調(diào)用和系統(tǒng)調(diào)用兩種特殊調(diào)用場(chǎng)景提供了補(bǔ)充分析方法。對(duì)于異常棧和中斷棧,其使用場(chǎng)景特殊,無(wú)法使用靜態(tài)分析工具自動(dòng)分析,因此還需進(jìn)一步研究對(duì)其分析的問(wèn)題和難點(diǎn)。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

瑞典烏普薩拉,2025年6月24日 — 全球嵌入式系統(tǒng)軟件解決方案領(lǐng)導(dǎo)者IAR正式發(fā)布適用于瑞薩RX和RL78系列微控制器的新版本開(kāi)發(fā)工具鏈:Renesas RX v5.20和RL78 v5.20。此次更新進(jìn)一步鞏固了I...

關(guān)鍵字: MCU 嵌入式軟件 工具鏈

為增進(jìn)大家對(duì)嵌入式軟件的認(rèn)識(shí),本文將對(duì)嵌入式軟件的發(fā)展以及分析嵌入式軟件問(wèn)題的方法予以介紹。

關(guān)鍵字: 嵌入式 指數(shù) 嵌入式軟件

為增進(jìn)大家對(duì)嵌入式軟件的認(rèn)識(shí),本文將對(duì)嵌入式軟件的開(kāi)發(fā)流程予以詳細(xì)介紹。

關(guān)鍵字: 嵌入式 指數(shù) 嵌入式軟件

為增進(jìn)大家對(duì)嵌入式軟件的認(rèn)識(shí),本文將對(duì)嵌入式軟件的特征、嵌入式軟件的分類(lèi)以及嵌入式軟件Vector予以介紹。

關(guān)鍵字: Vector 指數(shù) 嵌入式軟件

在嵌入式系統(tǒng)開(kāi)發(fā)中,硬件資源的限制和測(cè)試環(huán)境的搭建常常成為開(kāi)發(fā)者面臨的挑戰(zhàn)。QEMU(Quick Emulator)作為一款開(kāi)源的機(jī)器模擬器和虛擬化器,能夠在主機(jī)系統(tǒng)上模擬目標(biāo)硬件環(huán)境,為嵌入式軟件的仿真測(cè)試提供了強(qiáng)大的...

關(guān)鍵字: QEMU 嵌入式軟件 仿真

隨著汽車(chē)電子化程度的不斷提高,汽車(chē)嵌入式軟件的功能復(fù)雜性也在日益增長(zhǎng)。為了確保這些軟件在復(fù)雜多變的車(chē)載環(huán)境中能夠穩(wěn)定、可靠地運(yùn)行,功能安全(Functional Safety)成為了汽車(chē)軟件開(kāi)發(fā)過(guò)程中不可或缺的一環(huán)。IS...

關(guān)鍵字: ISO 26262 功能安全 嵌入式軟件

嵌入式軟件可編程邏輯控制器(PLC)是工業(yè)自動(dòng)化領(lǐng)域的核心設(shè)備,廣泛應(yīng)用于生產(chǎn)線(xiàn)控制、過(guò)程控制、運(yùn)動(dòng)控制等場(chǎng)景。隨著工業(yè)4.0和智能制造的發(fā)展,PLC控制器需要具備更高的實(shí)時(shí)性、可靠性和可擴(kuò)展性。本文將探討工業(yè)PLC控制...

關(guān)鍵字: PLC控制器 嵌入式軟件

嵌入式軟件開(kāi)發(fā)團(tuán)隊(duì)面臨的最大挑戰(zhàn)之一是,他們花費(fèi)太多時(shí)間來(lái)調(diào)試軟件。當(dāng)我與全球團(tuán)隊(duì)和工程師交談時(shí),在我參加的各種會(huì)議上,顯然,開(kāi)發(fā)人員平均將其40%的時(shí)間或更多時(shí)間用于調(diào)試軟件。

關(guān)鍵字: 嵌入式軟件 合同設(shè)計(jì)

開(kāi)發(fā)靈活且可擴(kuò)展的嵌入式軟件已成為產(chǎn)品開(kāi)發(fā)的重要方面。越來(lái)越多的公司不是開(kāi)發(fā)單個(gè)單片產(chǎn)品,而是開(kāi)發(fā)一個(gè)核心平臺(tái),從中可以創(chuàng)建幾個(gè)不同的產(chǎn)品線(xiàn)。在核心代碼中,有時(shí)會(huì)有所需的軟件行為未知,并且必須滿(mǎn)足特定產(chǎn)品需求。為了實(shí)現(xiàn)代...

關(guān)鍵字: 代碼靈活性 嵌入式軟件

軟件體系結(jié)構(gòu)是其組件中體現(xiàn)的系統(tǒng)的基本組織,彼此之間的關(guān)系以及環(huán)境的關(guān)系以及指導(dǎo)其設(shè)計(jì)和進(jìn)化的原則。軟件體系結(jié)構(gòu)并不是要?jiǎng)?chuàng)建一次并將其設(shè)置為石頭。相反,軟件體系結(jié)構(gòu)應(yīng)在整個(gè)產(chǎn)品的一生中發(fā)展和變化。多年來(lái),我聽(tīng)到工程師和經(jīng)...

關(guān)鍵字: 嵌入式軟件 軟件體系結(jié)構(gòu)
關(guān)閉