400-821-6015
      行业资讯
      您當前的位置:首頁 » 行業資訊 » 行業資訊
      內部資訊行業資訊

      SWC設計前的準(zhun)備—軟件需求分析

      發布日期:2024-09-24

      作者 | 不可說

      出品 | 汽車電子與軟件



      #01 前  言


            汽車軟件SWC(Software Component)的概(gai)念主要來源(yuan)於Autosar(Automotive Open System Architecture)架構,代表著汽車電子控(kong)製器中的軟件組件/單元,用以實現某些功能。         

            在SWC設計之前,需要進行一係列(lie)的準(zhun)備和規劃工作,以確保後續設計的順(shun)利進行和項(xiang)目的成功實施。

            這些工作主要包括以下兩個方麵:         

            1. 需求分析

            明確功能需求:首先,需要明確SWC需要實現的具體功能,包括輸(shu)入輸(shu)出、處理邏輯、性能要求等。這通常來自(zi)於項(xiang)目工程師或產品經理的需求文檔。

            劃分功能模塊:將整體功能需求細分為不同的功能模塊,這些模塊將對應不同的SWC。這有助於實現功能的模塊化設計,提高(gao)代碼的可維護性和複用性。         

            2. 係統架構設計

            在明確功能需求的基礎(chu)上,需要設計整體的係統架構,包括SWC之間的層(ceng)次關係和交(jiao)互方式。AUTOSAR架構是一個常用的選(xuan)擇(ze),它提供了標準(zhun)化的軟件架構和接口規範。         

            下麵會提供一種需求分析思路與流程。  



      #02 需求分析關聯方及(ji)流程  


            SA :system architect 係統架構師
            FO :function owner 功能負責人
      图片
      SWC正向(xiang)設計流程         

      1、用例與功能係統設計 

            用例,即Use Case;來源(yuan)於用戶需求;可以由功能負責人分析、設計;
            用例(Use Case)驅動(dong)的開發方法(fa)是一種軟件開發策(ce)略(lue),它強調(diao)以用戶為中心的設計思想,確保整個開發過程緊密(mi)圍繞用戶的實際(ji)需求進行。這種方法(fa)的核(he)心在於,從(cong)用戶的視角出發,而非單純從(cong)技術或開發人員的便利性角度,來識別、定義和實現係統的功能需求。
            具體而言,它包含(han)以下幾個關鍵步驟和特性:
      1. 用戶參與與需求捕獲;


      2. 用例編寫:基於收集(ji)到的用戶需求,開發團隊會將這些需求轉化為具體的用例描(miao)述。每個用例都(du)詳細描(miao)述了用戶(或係統外部實體)與係統進行交(jiao)互的目的、前置條件、主要流程(包括成功路徑和異常路徑)、後置條件等,從(cong)而形成一個清晰的、可驗證(zheng)的需求模型(xing)。


      3. 係統外部視角:用例驅動(dong)的開發方法(fa)特別重視從(cong)係統外部觀察(cha)係統的使用情況。這意味著開發人員需要跳(tiao)出技術實現的細節,站在用戶的角度去思考係統應該如何(he)工作,以及(ji)用戶在使用過程中可能會遇到哪些問題(ti)。這種視角有助於避(bi)免(mian)“內部人”思維,確保係統設計符合用戶的真實需求和使用習慣。


      4. 迭代開發與驗證(zheng):隨著用例的逐步細化,開發團隊會基於這些用例進行迭代開發。


      5. 持續反(fan)饋與調(diao)整:整個開發過程中,開發團隊與用戶之間保持密(mi)切溝通,及(ji)時收集(ji)用戶反(fan)饋。根據(ju)反(fan)饋結果,開發團隊可以對用例進行必要的調(diao)整和優(you)化,以確保係統始終能夠滿足(zu)用戶的實際(ji)需求。
               根據(ju)上麵分析的步驟,可以給出如下用例圖的示例,當然也(ye)完全可以用文字(zi)陳列(lie);

       图片         

      参与者:用户

            係統:主駕座(zuo)椅(yi)加熱係統

            連線表示用戶與用例之間的關聯         

            如果用文字(zi)表述,需要分清晰層(ceng)次來說明用例,如:

            用例名:UC01-主駕座(zuo)椅(yi)加熱2檔
            前置條件:座(zuo)椅(yi)加熱狀態為關閉(bi)&主駕有人
            操作:手動(dong)點擊屏幕主駕座(zuo)椅(yi)加熱虛擬按鍵

            後置狀態:座(zuo)椅(yi)加熱開到2擋            

            如果需求完善,且(qie)實際(ji)硬件支持錯(cuo)誤檢測,可以補(bu)充異常路徑:         

            異常路徑 :窗提示,開啟失敗


      2、能力設計 

            PC(Product Capabilities) 或者VC(Vehicle Capabilities):

            是構成產品功能實現基石(shi)的核(he)心概(gai)念,它源(yuan)自(zi)於精心設計的架構平台(tai)。在這個平台(tai)上,PC/VC被明確定義為一係列(lie)可複用、可組合的基本功能單元,這些單元共同支撐起(qi)產品複雜多樣的功能體係。在產品的功能設計階段,開發團隊需要深入理解和挖掘PC/VC所提供的豐富能力,作為構建具體功能特性的基礎(chu)。         

            具體而言,每當麵臨新的業務需求或用戶用例時,設計者們會首先審視並篩選(xuan)適(shi)用的PC/VC單元。這些PC/VC單元就像(xiang)一塊塊積木,通過不同的組合方式,能夠靈活、高(gao)效地搭建出滿足(zu)特定需求的功能模塊。此過程要求設計者對PC/VC有深刻(ke)的理解,能夠準(zhun)確判(pan)斷哪些PC/VC能夠直接應用,哪些需要通過微調(diao)或擴展來滿足(zu)特定需求。         


            PC 的設計需要遵循如下原則:

      1. PC具有唯一性:PC的唯一性體現在每個能力單元在係統中的身份識別上都(du)是獨一無二的。這意味著,在定義PC時,我們會為每個能力賦(fu)予(yu)一個明確的、不重複的名稱(chen)和標識,以確保在整個產品開發周(zhou)期內,無論是設計、開發還是維護階段,都(du)能準(zhun)確無誤地引(yin)用和識別這些能力。這樣的唯一性有助於避(bi)免(mian)功能重疊和混淆,確保產品功能的清晰劃分和高(gao)效實現。


      2. PC具有獨立性PC的獨立性是指(zhi)每個能力單元在邏輯上是自(zi)洽的,不依賴(lai)於其他PC的具體實現細節。這意味著,一個PC可以獨立地被設計、測試和維護,而不必考慮它與其他PC之間的內部交(jiao)互細節。這種獨立性提高(gao)了係統的可維護性和可擴展性,使得(de)開發者可以專(zhuan)注於優(you)化單個PC的性能和穩定性,而不必擔心對其他部分造(zao)成影(ying)響。    


      3. PC的顆粒度不能太小在定義PC時,需要仔(zi)細考慮其顆粒度大小。顆粒度過小會導致PC數量過多,增加係統設計的複雜性和維護成本;而顆粒度過大則可能使得(de)PC過於龐大,難(nan)以複用和組合。因此,合理的PC顆粒度應該是既(ji)能夠清晰地表達功能需求,又能夠保持足(zu)夠的複用性和組合靈活性。一般來說,PC應該聚(ju)焦於解決一類相似的問題(ti)或實現一組緊密(mi)相關的功能。


      4. PC的重用性PC的重用是提升產品開發效率和質量的關鍵。通過定義可複用的PC,我們可以在不同的產品、項(xiang)目或功能模塊中重複使用這些能力單元,減少重複勞動(dong)和錯(cuo)誤。為了實現PC的重用,我們需要建立一套(tao)完善的PC庫,並對PC進行詳細的文檔化和版本管理。這樣,當新的需求出現時,開發者可以快速搜(sou)索和找(zhao)到合適(shi)的PC進行複用,從(cong)而加速產品的開發進程。

              根据(ju)上述划分的原则,可以设计如下的PC来实现上面举例的UC; 

      图片


      UC示意圖             

      3、模塊設計 

            即Module Design

            System Architect在接收到Function Owner的PC需求后,会组织一次跨部门或团队的会议,需要全面评估这些需求对系统整体架构的影(ying)响。会议参与者可能包括硬件专(zhuan)家(jia)、软件开发者、项(xiang)目经理及(ji)其他相关利益方。通过集(ji)体讨论,团队会首先探索是否可以利用现有系统中的PC资源(yuan)来满足(zu)新功能的需要。         

            如果经过综合考量,确定现有PC无法(fa)满足(zu)新功能的要求,或者采用现有PC会导致不必要的复杂性和成本增加,System Architect会提出新增PC的提议。接下来,System Architect将负责将新增PC的需求细化为具体的规格参数,并依据(ju)系统架构的逻辑和功能模块的划分,将这些PC资源(yuan)合理地分配至最(zui)适(shi)合的Module。         

            在分配过程中,System Architect会确保新增PC能够无缝(feng)集(ji)成到现有的系统架构中,同时保持各(ge)模块间的独立性和可扩展性。如果遇到没有直接对应的Module来容纳新增PC的情况,System Architect将承担起(qi)创建新Module的责任。这包括定义新Module的边界、功能范围、与其他模块的交(jiao)互接口以及(ji)所需的集(ji)成策(ce)略(lue),以确保新Module的引(yin)入不会破坏(huai)系统的整体稳定性和性能。         

            整个过程中,System Architect还会与Function Owner保持紧密(mi)沟通,确保新增PC的需求得(de)到充分理解和满足(zu),并在必要时对设计方案进行调(diao)整,直至达成双(shuang)方认可的最(zui)优(you)解决方案。         

            可以设计如下的Module来实现上面举例的PC,在实际(ji)开发中要注意PC的实现不能重复或者遗漏:         

        图片

      Module示意圖

      4、模塊部署 

            在詳細規劃與實現過程中,首先需明確每個Module(模塊)的具體功能及(ji)其所需的輸(shu)入輸(shu)出接口、處理邏輯、以及(ji)預(yu)期的性能指(zhi)標。隨後,基於這些詳盡的功能定義,我們可以將各(ge)個Module逐一分配到對應的電子控(kong)製係統中去實現,這一過程涉及(ji)以下幾個關鍵步驟以確保清晰性、具體性和條理性:         

            功能細化與分類:首先,對每個Module的功能進行細化分析,識別出哪些是數據(ju)處理功能、哪些是控(kong)製邏輯功能、哪些是通信接口功能等。根據(ju)功能類型(xing),將Module劃分為不同的類別,如傳感器數據(ju)處理模塊、執(zhi)行器控(kong)製模塊、通信協議轉換模塊等。         

            係統匹配與選(xuan)擇(ze):根據(ju)已劃分的Module類別,評估現有的電子控(kong)製係統的技術特點、處理能力、接口資源(yuan)及(ji)成本效益,為每個類別的Module選(xuan)擇(ze)最(zui)合適(shi)的電子控(kong)製係統。這一步驟需要綜合考慮係統的可擴展性、可維護性、以及(ji)與現有係統或設備的兼容性。         

            接口定義與協議製定:為選(xuan)定的電子控(kong)製係統與Module之間定義清晰的接口規範,包括物理接口(如GPIO、串口、網口等)、通信協議(如CAN、Modbus、Ethernet/IP等)、數據(ju)格式與傳輸(shu)速率等。確保Module與控(kong)製係統之間能夠順(shun)暢、高(gao)效地進行數據(ju)交(jiao)換和控(kong)製指(zhi)令的傳遞。            

            根據(ju)設計部署經驗及(ji)原則,上述兩個Module均可部署在車身控(kong)製器中;

      图片
      部署示例      

      #03 小  結

            至此,我們可以認為已經完成了軟件組件(SWC)設計前期的核(he)心任務——軟件需求分析。這一階段的成功標誌著我們對係統需求有了全麵而深入的理解,並能夠將這些需求轉化為具體的軟件功能要求。然而,上述描(miao)述僅(jin)代表了一種理想化的正向(xiang)設計流程概(gai)覽,僅(jin)提供了一個清晰的起(qi)點和方向(xiang)。         

            在實際(ji)的軟件與係統開發過程中,往(wang)往(wang)會遇到遠比(bi)理論描(miao)述更為複雜多變的場(chang)景。UC與Module之間的追溯關係錯(cuo)綜複雜,它們之間不僅(jin)存在直接的映射(she),還可能涉及(ji)多對多、層(ceng)級嵌套(tao)或相互依賴(lai)的關係。這種複雜性要求我們在設計過程中保持高(gao)度的靈活性和嚴(yan)謹性,以確保每一個功能需求都(du)能被準(zhun)確無誤地映射(she)到相應的軟件模塊上,同時保證(zheng)模塊間的接口清晰、耦合度低,便於後續的維護和擴展。           為了有效應對這些挑(tao)戰,我們可以考慮引(yin)入一係列(lie)先進的工具和技術來輔助設計管理。例如,利用需求管理工具來跟蹤和管理需求變更,確保所有相關方對需求的理解保持一致;采用UML(統一建模語言)或SysML(係統建模語言)等建模工具來構建係統的邏輯架構和物理架構,直觀展示UC與Module之間的追溯關係;通過版本控(kong)製係統來管理設計文檔和代碼,確保設計的一致性和可追溯性;以及(ji)利用自(zi)動(dong)化測試工具來驗證(zheng)設計實現是否符合需求規格說明,提高(gao)軟件質量。不過工具隻(zhi)是輔助手段,應權衡利弊,不應被其複雜的操作所拖(tuo)累(lei)。

      上海創程車聯網絡(luo)科(ke)技有限公司版權所有   技術支持:

      av成人国产在线|视频一区亚洲无码|亚洲国产欧美日|亚洲精品视频大片|中文字幕在线亚洲|日韩欧美在线中文