<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

民機機載軟件的開發與驗證

上??匕?/a> ? 來源:上??匕? ? 作者:上??匕? ? 2023-02-10 10:34 ? 次閱讀

作者 |蔡喁上??匕部尚跑浖撔卵芯吭焊痹洪L

版塊 |鑒源論壇 · 觀擎

01機載軟件過程保證的目的和背景

民機機載軟件研制過程一直是行業內公認的要求最為嚴苛、開發驗證難度最大的軟件開發實例之一。由于其高安全以及嚴格的政府監管特性,使得傳統其他領域的軟件開發人員往往難以適應。這里有必要分析和解釋民用飛機機載軟件體系下的語境和對過程的基本要求出發點。

1.1 機載軟件的研制過程僅指從嚴密的系統需求定義到代碼實現和集成的過程

由于飛機自身層次化的研發體系存在,以及民用飛機對功能安全的苛刻要求,民用飛機體系下軟件研制活動實際上包括傳統軟件工程的需求收集和系統/產品級驗證活動。民機工程中的軟件驗證過程起自經過確認,完整、準確、無二義性的系統需求。任何系統需求方面的錯誤和不完善則應退回到上級過程進行,任何軟件設計過程中對系統需求的補充,則也不應由軟件工程師決定其存在合理性。

產生這一現象的原因在于民機整體研制過程中,非常強調對需求和設計的確認、分析和安全性工作。而幾乎所有的確認(確定功能和要求的合理性)以及安全性工作都必須充分結合使用條件和使用場景開展。大家可能還記得本系列第一篇中所描述的民用飛機安全性相關工作介紹。而民用飛機的設計,實際上并不是最求極致的正確,而是根據所能產生的安全影響提出相應的要求。在機載軟件設計層次,實際上并不能充分理解其所提供的飛機級功能及其使用場景,因此民機研制者通常將軟件定義為只需要按照要求的功能和性能實現軟件代碼,并確定可執行目標代碼能夠在預期的目標機環境下正確實現分配給他的功能即可。

1.2 民機機載軟件過程及其適航評估關注的軟件缺陷種類

在上述這種語境下,機載軟件的缺陷很大程度上被理解為是由于人為錯誤。這種人為錯誤發生的誘因可能是人的認識水平、理解能力、勞累疲憊、利益考慮等諸多方面。這種誘因可能導致軟件需求的問題、軟件設計的問題、軟件編碼的問題、軟件質量的問題。這些問題表現出來可能是軟件與硬件的不兼容,軟件不能滿足用戶的預期用途,軟件在邊界輸入上不能正確響應,軟件結構復雜帶來的維護和擴展問題,軟件能力不能滿足負載和容量壓力。這些問題可以列舉很多,但歸根結底,軟件要么對輸入沒有進行正確的理解,要么技術方案出現了問題,要么自身的研發出現了問題。以上的這些軟件缺陷或者錯誤在軟件運行之后其發生的方式或者暴露的原因,不具有偶然性,一定是在滿足一定的條件下才能夠發生。這種軟件的錯誤不像某些硬件失效那樣,會表現為一定的中間狀態,軟件的錯誤不會介乎于好與不好之間的無法定性的狀態。所以軟件的錯誤在統計學上不呈現任何的規律。

鑒于軟件錯誤的發生一定是滿足一定的觸發條件才能發生。因此,這種錯誤的存在可以得到人為的控制而減少。不像硬件的失效,硬件的失效并不因為人為的努力而不會發生,其更多的是一種物理或者化學現象,是一種自然科學上的必然現象。所以硬件的不能滿足要求,是一種失效,而非錯誤。硬件失效則呈現統計規律,統計學上稱之為失效概率。軟件的錯誤和硬件的失效在機載系統上的處理截然不同。硬件的失效要求滿足失效率的要求,對于可能造成單點失效的硬件,則必須設置相應的冗余、備份手段。軟件錯誤的防范在機載領域則應用過程保證的方法。通過較少引入錯誤的機會,提高檢出錯誤的能力,來規范軟件的質量要求。

1.3 機載軟件過程保證的基本出發點

過程保證以層次化方法為核心,通過劃分軟件的研發層次,以不同的視角和角色開發軟件生命周期數據。軟件的開發不能一蹴而就,必然是從系統視角到軟件視角,軟件視角是一種以審視軟件輪廓和外部行為的黑盒角度。軟件黑盒被進一步打開,軟件模塊及框架和邏輯被明確出來。當軟件框架和框架內部子模塊的行為被充分細化,此時才可走向編程語言及編譯鏈接。簡單來講,是一種外部-內部-實現-可執行的層次化框架。這種層次化方法,避免編碼人員的自由發揮,通過軟件架構和低級需求的設計,表面軟件代碼行為與外部要求的不一致;這種層次化方法,通過設置軟件高級需求,對軟件的預期和利益人意見進行匯總和權衡,避免了軟件實現與軟件預期的不匹配。因此,機載軟件為了保證軟件本身與系統或設備需求的一致性,設置了目前呈現出來的研發層次。

1.4 設計的顆粒度、層次依據和界面原則

過程保證以界面原則作為特定層次顆粒度/模塊化定義的依據。拿一個通常算賬使用的簡單計算器來舉例講,劃分輸入模塊、處理模塊、輸出模塊是一種顆粒度,劃分機械鍵盤、防抖模塊、計算模塊、存儲模塊、電源模塊、顯示處理和液晶模塊等也是一種顆粒度的定義方式。其實這種顆粒度的不同定位,就是一種何為內何為外的界面劃分。對于軟件高級需求來說這種界面可以按照不同的業務流程劃分,也可以按照不同的任務系統進行劃分,也可以按照面向外部交互角色進行劃分。對于軟件低級需求來講,這種界面可以按照數據流向進行劃分、可以按照更為細致的服務或者功能進行劃分,可以按照業務步驟進行劃分。這種界面決定了顆粒度的大小。界面原則可以保證需求、設計、代碼各層次內部組合和解耦的合理性,也對該層次抽象程度的合理性進行定義。

過程保證以內外關聯為界面原則的依賴性策劃依據。內外關聯的原則是將那些牢固的不易變化的界面關系明確為模塊間的外部耦合關系,將那些內部可靈活處置的關系內化為內部耦合。外部耦合宜松,內部耦合宜緊。模塊功能內聚,則不會失去聚焦,不會偏離模塊的中心任務;模塊間關聯松散,則模塊間的開發與維護都相對便捷,不會有過多顧慮。對于每個層次的內部需求/設計之間的關聯關系,有不同的劃分方法,正如同統一建模語(Unified Modeling Language,UML)將類間關系劃分為關聯、泛化、聚合和組合一般,依據這種關聯原則的定義,將上下游、同層間的需求設計關系進行梳理和凈化,進一步將需求和設計的形式與內容進行雕琢。

02機載軟件的開發過程

在軟件開發過程中,DO-178C定義了如下四個子過程:

(1)軟件需求過程:該過程的輸入是分配給軟件的系統需求,主要輸出是軟件系統的高級需求(HLR)。它包含了軟件的功能需求、性能需求、軟硬件接口和安全相關需求等內容。

(2)軟件設計過程:該過程的輸入是軟件高級需求、軟件開發計劃和軟件設計標準,主要輸出是設計描述,包括軟件架構和低級需求(LLR)。

(3)軟件編碼過程:這一過程根據軟件低級需求和軟件架構編寫軟件的源代碼。過程的主要輸出結果是源碼和目標碼。

(4)軟件集成過程:該過程對源碼和目標碼進行編譯、鏈接,并加載到機載系統或設備中。該過程應包含軟件集成和軟/硬件集成兩個子過程。

下圖給出了DO-178C標準中系統需求和軟件開發四個過程之間的關系。

v2-7c4274597ceed46733c3743ef9431316_720w.webp

圖1 DO-178C開發過程

軟件開發過程在DO-178C中分為四個階段,這四個子階段的劃分要求保證軟件行為的整體性、內在模塊之間的協調性、內部耦合之間的正確性、內部異常與錯誤之間的隔離性、上級功能與下層資源分配之間的合理性和適當裕度,同時還要兼顧到軟件的效率。這四個子階段的劃分可以從軟件行為到結構,再到編程語言的轉換,也可以是從軟件能力到軟件規格,再到軟件實現的轉換,也可以是去粗求精、去偽存真的不斷迭代過程,還可以是更為復雜的從外在到多視角描述肢解系統需求的過程。但是不管怎樣,這是一個從整體出發到各個部分,然后再到整體的一個開發過程。層次化的步進是為了順利完成視角的轉換。每個層次的切割和分配是功能聚焦和開發人員關注點聚焦的現實需要。在這個過程中,復雜度隨著模塊、組件、單元的降維,開發難度不斷降低,但是軟件整體的行為卻變得越來越不受控。在軟件開發不斷的開發過程中,仍然有一種總體的行為變得尤為重要,仍有一個角色在以總體的責任性視角審視各個實體的綜合行為。所以在這四個子階段的實施過程中,要么前期規劃非常明確,各個部分的定義在頂層需求中已經框定,要么在演進過程中,總是有一個全局考慮的機制在發揮作用。否則局面將變得不可收拾。

03機載軟件的綜合過程

在軟件綜合過程中,DO-178C又包含如下四個過程:

(1)軟件驗證過程

該過程由軟件驗證計劃定義,用于檢測和報告在軟件開發過程中可能引入的錯誤,而錯誤的消除屬于軟件開發過程的活動;

(2)軟件構型管理過程

該過程由軟件構型管理計劃定義,與其它軟件生命周期過程協同執行,其主要功能包括:

● 用于在軟件生命周期中提供確定的、可控的軟件構型;

● 提供可執行目標代碼的復制能力,當需要檢查和修改時可快速復制;

● 在軟件生命周期中提供過程輸入/輸出控制能力,保證過程活動的一致性和可重復性;

● 通過控制構型項、建立構型基礎,提供用于走查、狀態判斷、修改控制的節點;

● 提供控制,保證所有問題都被處理,所有修改都被記錄、提交和實現;

● 通過控制軟件生命過程的輸出提供軟件的證明;

● 輔助判斷軟件產品與需求是否兼容;

● 保證構型項維護了加密、恢復和控制數據等;

(3)軟件質量保證過程

該過程由軟件質量保證計劃定義,用于審核軟件的生命周期過程及其輸出,確保其目標被實現,錯誤被檢測、評估、跟蹤和解決,以及保證其它軟件生命周期數據能夠滿足軟件需求。軟件質量保證過程用于提供相關證據來表明經過軟件生命周期生產的軟件產品與需求相一致,保證這些過程的執行與軟件計劃和標準一致。

(4)審定聯絡過程

該過程用于在整個軟件生命周期中建立應用程序與證明授權之間的通訊和理解,輔助軟件的證明過程。

在機載軟件開發過程中,軟件綜合過程與軟件開發過程是并行執行的。在整個軟件生命周期中,以軟件開發過程為主線,在其各個子過程中實施相應的軟件綜合過程,其執行根據獨立性要求等可由兩個以上的不同團隊來完成,實現軟件開發與軟件綜合的分離。軟件生命周期中各個過程的關系可用下圖表示,圖中軟件計劃過程是所有過程的起始點,根據軟件計劃過程制定的各種軟件計劃執行相應的軟件生命周期活動。

v2-021d0992132b70fd2ed211b7930fbfc7_720w.webp

圖2 DO-178C軟件生命周期方陣

綜合過程也稱之為整體過程,預示其長期性和伴生性。這種綜合性還體現在其支持性,其是保證在日復一日的開發過程中的軟件中間產品的質量特性、清晰的數據變化路徑、過程和產品的監督監理。綜合過程的設置不但適用于軟件,對于其它層級甚至其它行業都是非常必要的,其是現代工業活動長期實施過程中的寶貴經驗總結。

筆者在這里想到豐田的精益管理,其中蘊含的思路也對綜合過程的設置給出了一些提示和指導。例如透明的信息與數字看板,軟件項目研制中的構型管理和質量保證其實就為實現這一目的,提供了良好的手段。通過構型管理和質量保證,可以為管理層提供診斷、監控、管理的依據。管理層要實施有效的管理,總是離不開管控范圍、問題定位、解決措施、效果統計等這些俗套的環節或者要素。軟件綜合過程的這些項目可以系統性的提供這種手段,如構型項的梳理、構型項狀態的管控、問題報告機制和構型變更管理機制等,為項目的范圍狀態,人力時間資源的投入等提供決策依據。精而有益、由精益而形成良好循環,最終質變。這與習近平總書記提到的精準思維有異曲同工之妙。

當然,軟件適航本身堅持的更多是一種底線思維。如果軟件研制企業想在人力、進度、成本上取得進一步的收益,還必須在流程優化、技術視野、管理與激勵機制上做出更廣闊層面上的革新。

參考資料

[1]《機載軟件適航符合性教程》,2022,ISBN:9787313241344,上海交通大學出版社.

[2] Software Considerations in Airborne Systems and Equipment Certification(DO-178C),RTCA,2011.

審核編輯黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 軟件
    +關注

    關注

    68

    文章

    4405

    瀏覽量

    86099
收藏 人收藏

    評論

    相關推薦

    BYO、FPGA開發板與商用,一文詳解各類原型驗證

    幾十年來,數字芯片設計復雜度不斷攀升,使芯片驗證面臨資金與時間的巨大挑戰。在早期,開發者為了驗證芯片設計是否符合預期目標,不得不依賴于耗時的仿真結果或是等待實際芯片生產(流片)的成果。無論是進行多次
    的頭像 發表于 04-02 08:22 ?201次閱讀
    BYO、FPGA<b class='flag-5'>開發</b>板與商用,一文詳解各類原型<b class='flag-5'>驗證</b>

    嵌入式軟件開發軟件開發的區別

    嵌入式軟件開發軟件開發是兩個不同的概念,它們在一些關鍵方面有著明顯的區別。嵌入式軟件開發是指開發嵌入在硬件設備中的軟件,而
    的頭像 發表于 01-22 15:27 ?934次閱讀

    RZ/G驗證的Linux軟件包V2.1.20-RT組件列表

    電子發燒友網站提供《RZ/G驗證的Linux軟件包V2.1.20-RT組件列表.pdf》資料免費下載
    發表于 01-03 14:11 ?0次下載
    RZ/G<b class='flag-5'>驗證</b>的Linux<b class='flag-5'>軟件</b>包V2.1.20-RT組件列表

    RZ/G驗證的Linux軟件包V2.1.20-RT 發布說明

    電子發燒友網站提供《RZ/G驗證的Linux軟件包V2.1.20-RT 發布說明.pdf》資料免費下載
    發表于 01-03 10:11 ?0次下載
    RZ/G<b class='flag-5'>驗證</b>的Linux<b class='flag-5'>軟件</b>包V2.1.20-RT 發布說明

    民機機載軟件的配置管理

    配置管理(Configuration Management)在航空領域經常又稱為構型管理,是現代復雜產品研制的核心技術。與很多傳統觀念中配置管理是對文檔和版本的簡單管理不同,現代復雜產品由于其內部組成部分較多、研制分工普遍以及設計中的版本狀態以及配合關系頻繁變換的原因,往往對配置/構型管控要求極高。
    的頭像 發表于 12-01 16:15 ?483次閱讀
    <b class='flag-5'>民機</b><b class='flag-5'>機載</b><b class='flag-5'>軟件</b>的配置管理

    軟件定義汽車vECU虛擬控制器集成開發與測試

    軟件定義汽車”即軟件將深度參與到汽車的定義、開發、驗證、銷售、服務等過程中,并不斷改變和優化各個過程,是汽車從基于硬件的產品向軟件為中心的
    發表于 11-09 11:49 ?561次閱讀
    <b class='flag-5'>軟件</b>定義汽車vECU虛擬控制器集成<b class='flag-5'>開發</b>與測試

    中興通訊大載荷長航時無人直升機載應急通信系統完成實戰化驗證

    近日,在四川省涼山州木里藏族自治縣海拔3626米的香格里拉湖試驗場舉行的「2023高原“三斷”場景無人機救援實戰驗證」中,中興通訊攜「大載荷長航時無人直升機載應急通信系統」以優異的表現,完成預定科目
    的頭像 發表于 11-07 17:25 ?1440次閱讀

    基于模型的方法在民機機載軟件中的應用

    機載軟件適航標準對軟件研制過程、生命周期數據以及符合性證據等都提出了明確的要求。然而,這些過程要求都是建立在歐美80~90年代軟件工程實踐的基礎上,以文本需求+代碼為主要的
    的頭像 發表于 10-27 15:30 ?288次閱讀
    基于模型的方法在<b class='flag-5'>民機</b><b class='flag-5'>機載</b><b class='flag-5'>軟件</b>中的應用

    機載雷達空時自適應處理技術

    由于機載雷達的地物雜波呈現為空時二維耦合譜特性,這就決定了機載雷達雜波抑制基本屬于空時二維濾波問題,而且,其二維處理需實時自適應實現,即雜波抑制需使用空時二維自適應處理(STAP)。
    發表于 10-26 14:35 ?1441次閱讀
    <b class='flag-5'>機載</b>雷達空時自適應處理技術

    AUTOSAR軟件開發環境之EB tresos Studio簡介

    EB tresos是一款經典的AUTOSAR軟件開發環境,依賴于一致的單一工具環境來通過汽車開放系統架構 AUTOSAR 開發電子控制單元 (ECU);它能夠實現配置、驗證和生成 ECU 基礎
    的頭像 發表于 09-19 10:06 ?4822次閱讀
    AUTOSAR<b class='flag-5'>軟件開發</b>環境之EB tresos Studio簡介

    淺談操作系統的適航符合性(下)

    本篇將展開討論降低民機機載操作系統適航風險的具體方法。
    的頭像 發表于 08-08 15:11 ?472次閱讀
    淺談操作系統的適航符合性(下)

    軟件仿真、硬件仿真、原型驗證是如何工作的?

    在整個芯片開發中,芯片設計的驗證階段就像一場前線戰斗,可以說是整道防線上成敗的關鍵。在芯片進入生產之前,需要保證其設計完全符合需求規格,解決所有潛在的風險,并修正所有的缺陷。這樣可以避免在流片后發現
    的頭像 發表于 07-31 17:14 ?475次閱讀
    <b class='flag-5'>軟件</b>仿真、硬件仿真、原型<b class='flag-5'>驗證</b>是如何工作的?

    驗證和確認的區別和關系

    或過程是否符合指定的規范、標準或要求。驗證的目的是確認開發的產品或系統是否滿足所定義的規范和設計規則,并在開發過程中進行。驗證通常涉及對產品、系統或過程的文件、設計和規范的檢查、分析和
    的頭像 發表于 06-19 10:59 ?3904次閱讀

    軟件仿真、硬件仿真、原型驗證是如何工作的?

    在整個芯片開發中,芯片設計的驗證階段就像一場前線戰斗,可以說是整道防線上成敗的關鍵。在芯片進入生產之前,需要保證其設計完全符合需求規格,解決所有潛在的風險,并修正所有的缺陷。
    的頭像 發表于 06-14 14:54 ?477次閱讀
    <b class='flag-5'>軟件</b>仿真、硬件仿真、原型<b class='flag-5'>驗證</b>是如何工作的?

    軟件仿真、硬件仿真、原型驗證是如何工作的?

    面對復雜的設計代碼,我們如何確保其準確性?功能驗證就是這場戰斗的關鍵過程。工程師們通常使用的驗證方法包括軟件仿真、硬件仿真和原型驗證等。這些不同的
    的頭像 發表于 06-11 14:24 ?579次閱讀
    <b class='flag-5'>軟件</b>仿真、硬件仿真、原型<b class='flag-5'>驗證</b>是如何工作的?
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>