偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

從功能安全視角看軟件架構(gòu)設(shè)計

開發(fā) 前端 智能汽車
功能安全應(yīng)該如何考慮軟件架構(gòu),什么樣的架構(gòu)是符合功能安全標(biāo)準(zhǔn)要求的,對于軟件架構(gòu)工程師和功能安全工程師,很難在兩個方面都說得明白,本篇來從功能安全的角度談?wù)勡浖軜?gòu)設(shè)計的基本要求。

 

功能安全應(yīng)該如何考慮軟件架構(gòu),什么樣的架構(gòu)是符合功能安全標(biāo)準(zhǔn)要求的,對于軟件架構(gòu)工程師和功能安全工程師,很難在兩個方面都說得明白,本篇來從功能安全的角度談?wù)勡浖軜?gòu)設(shè)計的基本要求。

首先,功能安全軟件的架構(gòu)設(shè)計是基于兩個層次的:

第一:選取和建立一個層次分明,易于理解的軟件架構(gòu);

第二:在第一條的基礎(chǔ)上,符合相應(yīng)功能安全等級要求的軟件設(shè)計要求。

接下來,以汽車功能安全標(biāo)準(zhǔn)ISO26262-6和軌道交通軟件功能安全標(biāo)準(zhǔn)EN50128作為基準(zhǔn),談?wù)剺?biāo)準(zhǔn)是如何從以上兩個層次來做出規(guī)定的。

軟件架構(gòu)階段的開始

軟件架構(gòu)設(shè)計是軟件生命周期的第二個階段,前面的階段是軟件需求階段(software requirements specification),在軟件需求設(shè)計時,把整個軟件當(dāng)成一個黑盒處理,來確定該軟件的所有功能、性能,與硬件的接口定義,與外部其它系統(tǒng)的接口定義,而在軟件架構(gòu)階段,需要設(shè)計一種架構(gòu)來滿足軟件需求,通過層次化結(jié)構(gòu)的方式來表示軟件架構(gòu)的組件構(gòu)成和他們之間的交互方式。以下圖為例,虛線框之外是軟件需求,虛線框內(nèi)是軟件架構(gòu)。

什么是軟件組件

上面這個圖用于解釋軟件架構(gòu)所做的工作,將整個軟件劃分為功能和接口清晰的組件。在ISO26262-6和EN50128中都有軟件組件(component)這個概念,先來看看這個組件的定義:

很多人把組件理解成一個函數(shù)、或一個包括多個函數(shù)的文件,從標(biāo)準(zhǔn)中對組件的定義來看,組件作為一組軟件功能需求的集合,有點類似于面向?qū)ο笳Z言中的類的概念,是在軟件架構(gòu)中的一個個獨立的個體,可以單獨替換更新的基本元素。通過軟件組件的應(yīng)用可以達(dá)到重復(fù)使用和替換的目的,它可以被單獨測試和版本管理。

軟件架構(gòu)設(shè)計原則

如何設(shè)計軟件架構(gòu)中的組件,在ISO26262-6中提出了以下設(shè)計原則:

設(shè)計原則從兩個方面來進(jìn)行規(guī)定:

  1. 單個組件:限制組件的規(guī)模,限制接口的數(shù)量,有限的中斷使用,目的在于降低每個組件的復(fù)雜度,
  2. 多個組件:組件內(nèi)強內(nèi)聚,組件之間松耦合,組件之間的空間隔離,組件之間共用資源的沖突管理。

避免出現(xiàn)以下情況:

  • 系統(tǒng)的一個功能分散在不同的組件中,代碼多個地方改變同一變量或狀態(tài);
  • 未對系統(tǒng)的中斷功能進(jìn)行限制,多個中斷造成導(dǎo)致軟件的時間約束不受控;
  • 組件不具備可維護(hù)性,不可能做到重構(gòu)其中一個組件;
  • 組件未做到良好的封裝或封裝不合理,對外的接口過于繁雜或內(nèi)部狀態(tài)不可知;
  • 組件設(shè)計缺乏可讀性,只有專家級人員才能看得懂;

軟件架構(gòu)內(nèi)容要點

劃分了層次化的組件后,軟件架構(gòu)重點描述組件之間的關(guān)系:靜態(tài)關(guān)系和動態(tài)關(guān)系。靜態(tài)設(shè)計方面如組件之間的接口、與硬件的關(guān)系、組件的分層結(jié)構(gòu)通常比較明確,容易忽視的是動態(tài)設(shè)計,軟件的動態(tài)行為需要考慮:

  • 事件和行為的功能;
  • 數(shù)據(jù)處理的邏輯順序;
  • 控制流和并發(fā)進(jìn)程;
  • 通過接口和全局變量傳遞的數(shù)據(jù)流;
  • 時間約束。

這些內(nèi)容僅用文字表達(dá)容易造成歧義,難以描述準(zhǔn)確,因此推薦使用建模和文字表達(dá)相結(jié)合的方式,下表是EN50128對建模方法的推薦表,雖然標(biāo)準(zhǔn)中僅要求至少使用一種,但從軟件架構(gòu)需要表達(dá)的不同動態(tài)行為上,強烈建議根據(jù)不同的行為采用適合的建模方法。例如采用文字表達(dá)難以準(zhǔn)確描述不同系統(tǒng)通信交互的時序關(guān)系,采用Sequence Diagrams(序列圖)可以明確表示交互關(guān)系。

EN50128 Table A.17 建模技術(shù)

在上表中,常用的建模方法有:

數(shù)據(jù)流圖——描述數(shù)據(jù)如何由輸入逐步流向輸出的過程;

控制流圖——描述由輸入經(jīng)過一系列控制動作到輸出的過程;

狀態(tài)機圖——描述系統(tǒng)不同狀態(tài)之間的轉(zhuǎn)換關(guān)系;

真值表——描述一個復(fù)雜的組合邏輯關(guān)系;

序列圖——描述不同組成部分通過信息交互的時序關(guān)系;

結(jié)構(gòu)圖——描述組件之間的層次關(guān)系。

序列圖示例

這些軟件建模方法屬于軟件通用的設(shè)計方法,在UML、SysML軟件建模語言中就有上述建模方法,屬于半形式化類方法。

注意這些建模方法在項目中使用,需要讓項目中與軟件架構(gòu)關(guān)聯(lián)的人理解一致,需要建立建模方法的使用指南,以規(guī)范其編寫要求。

以上作為軟件架構(gòu)的通用性要求,軟件缺陷為系統(tǒng)性失效,不存在失效概率的問題,因此,如果寫的代碼沒有bug,它百分之百是按照定義的需求去執(zhí)行。但是,有兩個問題是安全軟件需要考慮的,第一,軟件不可避免會存在bug;第二,軟件的實現(xiàn)與它所運行的硬件,與它所接口的外部系統(tǒng)相關(guān)聯(lián),任何與它關(guān)聯(lián)的外部環(huán)境發(fā)生改變,都會對軟件的預(yù)期行為產(chǎn)生影響,因此,安全軟件不僅要考慮正常情況下的預(yù)期行為,也要考慮故障和干擾情況下的預(yù)期行為。

軟件架構(gòu)設(shè)計應(yīng)用技術(shù)

在EN50128中的A.3表,列舉了軟件架構(gòu)可供選擇的技術(shù)方法,其中

2-14,16項是底層的安全設(shè)計技術(shù),其中較為常用的是Fault detection & Diagnosis,與硬件或外部接口相關(guān)聯(lián);Graceful degradation作為fail-operational的一種實現(xiàn)方式,用于確保故障情況下的功能依然保持一定的可用性。對于軟件的安全技術(shù),應(yīng)該適當(dāng)?shù)剡x擇使用,畢竟增加了軟件的復(fù)雜度,也加大了系統(tǒng)性失效的可能,而且安全技術(shù)往往難以兼顧可測試性。

防御性編程作為SIL1-SIL4都高度推薦使用的技術(shù),是最常用的軟件安全技術(shù),用于檢查軟件執(zhí)行中不正確的數(shù)據(jù)流、控制流和數(shù)據(jù)值情況下的預(yù)期行為,一種是防護(hù)軟件自身設(shè)計缺陷造成的問題,如變量的范圍檢查、檢查輸入值的可信性、程序入口檢查入?yún)⒌念愋?、大小和范圍;另一種是防護(hù)外部環(huán)境輸入的不受控造成的問題,如檢查物理變量值輸入的有效性、濾波處理、配置數(shù)據(jù)的完整性和軟件自身的完整性。

EN50128 A.3

已存在軟件組件的使用

在ISO26262和EN50128中都規(guī)定了在安全軟件中如何復(fù)用一個已存在軟件組件,存在兩種情況,會使用已存在組件:

  • 來自于公司外部的CTOS組件;
  • 以前開發(fā)組件的再利用。

首先一個組件能夠被重復(fù)使用,它的接口必須能清晰識別,確定其應(yīng)用環(huán)境,實現(xiàn)的規(guī)格也是明確的。在EN50128中,如果應(yīng)用于SIL3和SIL4,需要分析已存在軟件可能的失效對整體軟件的影響,以及檢測已存在軟件失效的策略,如包裝技術(shù)。在ISO26262.8中,第12章規(guī)定了對已存在組件的鑒定要求。兩個標(biāo)準(zhǔn)均要求對已存在軟件進(jìn)行鑒定,確定可用的功能、組件版本與配置、應(yīng)用環(huán)境的假設(shè)、關(guān)聯(lián)的安全完整性等級、組件殘余缺陷情況,并對鑒定過程進(jìn)行驗證。

軟件組件的相互影響

當(dāng)軟件由不同安全完整性等級的組件組成時,在EN50128 7.3.4.9和ISO26262-6 7.4.8的要求一致:

除非有證據(jù)表明高級別組件和低級別組件之間彼此獨立,從時間分區(qū)和空間分區(qū)兩個維度,其它情況都應(yīng)按照最高等級要求開發(fā)。

在ISO26262-6提出有兩種不同組件分區(qū)的方法,第一種是軟件分區(qū),從執(zhí)行時序、數(shù)據(jù)保護(hù)、組件之間的數(shù)據(jù)交互方面考慮組件之間的干擾影響,第二種是硬件保護(hù)機制的支持,如MPU;第三種是操作系統(tǒng)或虛擬化層對不同組件互不干擾的支持。

最后,回顧一下五方面主要內(nèi)容:

  1. 軟件需求、軟件架構(gòu)與組件的關(guān)系;
  2. 軟件架構(gòu)需涵蓋的內(nèi)容;
  3. 安全軟件應(yīng)用技術(shù);
  4. 如何應(yīng)用已存在軟件;
  5. 不同安全等級軟件的影響分析

在不同標(biāo)準(zhǔn)中,架構(gòu)設(shè)計還有各自側(cè)重的部分,ISO26262-6對軟件安全分析有相應(yīng)要求,EN50128安全分析的工作放在系統(tǒng)層面進(jìn)行,要求從系統(tǒng)功能和接口的角度進(jìn)行分析。EN50128在架構(gòu)設(shè)計階段對軟件設(shè)計方法(建模指南、設(shè)計指南和編碼規(guī)則)有更為詳細(xì)的定義,并需要在架構(gòu)階段完成軟件集成測試規(guī)范和軟硬件集成測試規(guī)范。

 

責(zé)任編輯:張燕妮 來源: 于薄說安全
相關(guān)推薦

2025-06-12 09:10:23

2022-05-27 12:42:31

網(wǎng)絡(luò)安全工業(yè)企業(yè)工控安全領(lǐng)域

2012-06-07 10:45:12

軟件架構(gòu)設(shè)計原則

2009-02-01 10:17:19

Java架構(gòu)設(shè)計設(shè)計模式

2025-03-26 09:41:19

2023-04-26 09:32:12

智能汽車

2023-04-13 08:23:28

軟件架構(gòu)設(shè)計

2013-06-07 11:31:36

面向?qū)ο?/a>設(shè)計模式

2023-05-12 07:52:13

架構(gòu)設(shè)計設(shè)計原則

2022-04-02 11:42:48

Git存儲庫代碼隱私安全掃描工具

2022-08-22 11:45:59

架構(gòu)技術(shù)

2022-06-01 11:14:22

云原生安全架構(gòu)設(shè)計

2010-07-12 16:40:39

Visual Stud

2016-11-29 08:50:17

數(shù)據(jù)庫軟件架構(gòu)

2025-05-27 10:15:00

Go開發(fā)軟件架構(gòu)

2021-03-07 17:17:07

Java內(nèi)存閉包

2015-08-18 13:58:07

2022-08-15 19:49:57

Consul架構(gòu)注冊中心

2013-05-27 10:58:28

Tumblr架構(gòu)設(shè)計雅虎收購

2022-02-28 10:05:12

組件化架構(gòu)設(shè)計從原組件化模塊化
點贊
收藏

51CTO技術(shù)棧公眾號