今天講的東西,對我們更深刻地理解DevOps、DevStar、DevSecOps和MBSE以及數字工程及數字孿生等概念,如何在數字空間里僅憑意念彎曲勺子,更深刻地理解《黑客帝國》電影,都會有一定的啟發(fā)。 1. 智能CPS給系統(tǒng)工程和軟件工程帶來的挑戰(zhàn) 智能CPS是一種具有自主系統(tǒng)特性的系統(tǒng),其功能不受人類的直接控制。例如無人機、工業(yè)機器人、AGV、尋找簡易爆炸裝置(IED)的機器人以及無人駕駛汽車。 未來聯(lián)合全域的戰(zhàn)場上,智能CPS系統(tǒng)會越來越多:
智能CPS中,軟件起著重要的作用。軟件可以在不增加重量或大幅增加功率的情況下增加新功能。它還可以通過電磁波遠程更新,降低部署成本,更快地改進系統(tǒng),使系統(tǒng)更智能更具適應性。但這些好處也帶來了新的挑戰(zhàn):
2. 系統(tǒng)工程與軟件工程的協(xié)同 我們都知道,系統(tǒng)工程的最新實踐是MBSE,軟件工程則是DevSecOps。 這兩者結合起來,能否解決智能CPS系統(tǒng)的挑戰(zhàn)? 這里面的關鍵洞見是,從DevSecOps的視角將建模仿真活動視為軟件密集型系統(tǒng)工程的一個組成部分。 上面這句話請大家仔細思考下。 具體的解決方案是這樣的:
比如,我們要設計一個可消耗無人機,那么我們可以先用云上的MBSE即服務,用數字工程集成環(huán)境中的工具進行進行建模。 建模的工具可以有Sysml,AADL,Matlab Simulink工具箱和ANSYS SCADE等。 這幾個建模工具的關系是這樣的: 1. 用SysML對系統(tǒng)進行具體設計。使用SysML捕獲系統(tǒng)的高級模型,以及一組系統(tǒng)約束。這些約束將作為下一步的需求。 2. 用AADL定義系統(tǒng)的體系結構。它派生自SysML定義和相關的約束。AADL允許將系統(tǒng)架構更精確地定義為捕獲常規(guī)軟件或硬件行為(線程、設備、處理器等)的組件集合。 3. 對系統(tǒng)各部分進行設計。從AADL模型定義中,可以派生出軟件的低層需求,如要實現的子程序接口。這些子系統(tǒng)的軟件可以從Simulink、Ansys SCADE、Modelica或其他軟件中生成。系統(tǒng)工程師也可以用UML來捕獲要實現的軟件模型,或者直接在他們選擇的編程語言中實現它。 3. 建模開發(fā)反饋的自動化流水線 建模好后,模型要能仿真,必須先把模型轉成可運行的軟件程序。模型可以用多種方式來生成軟件,包括代碼生成,基于仿真的驗證和鑒定(V&V),以及數字孿生模型。 由于每種建模技術都提供了執(zhí)行模型分析或代碼生成的自動化的接口,這樣我們就可以用devops的自動化流水線集成這些工具來自動化整個過程。 我們可以用類似下面的流程來簡化模型交換和模型轉換,并盡可能地自動化整個建模、開發(fā)和運維的流程。 4. 具體的模型到可執(zhí)行代碼的運行邏輯如下圖 基于模型到可執(zhí)行代碼流水線,我們可以將這個流水線嵌到更大的一個模型到仿真的流水線中,這樣我們就可以實現建模到仿真的全流程的自動化: 我們可以在Mod2simu流水線中將Modelica轉成FMI,然后將FMI轉成AADL,然后調用Mod2code流水線,將AADL生成可執(zhí)行的二進制代碼,并部署運行。 5. ModDevOps 循環(huán) 美國空軍提出了DevOps的定義,包括整個系統(tǒng)生命周期:
CMU卡耐基梅隆大學的軟件工程學院的研究人員將這個概念結合了MBSE系統(tǒng)工程實踐,推廣到了ModDevOps,并將ModDevOps定義如下,我們對空軍DevOps定義的更改用粗體突出顯示:
ModDevOps通過定義基于模型的技術如何支持特定的步驟來擴展DevSecOps。ModDevOps改進了典型的DevSecOps循環(huán):
當然,這里面的1-8的環(huán)節(jié)是不斷迭代循環(huán)的,最終的效果就是同時獲得MBSE和DevOps的優(yōu)點。 6. 從ModDevOps到TwinOps 有了ModdevOps,我們就可以對無人機進行建模。 更進一步,我們可以在虛擬世界,創(chuàng)建多個無人機的數字孿生,讓他們直接進行對抗,驗證不同環(huán)節(jié)。 不同環(huán)節(jié)之間,可以靈活組合,實現不同的驗證/鑒定的效果:
最后,基于Mod2Code流水線,我們可以將程序部署到無人機上運行,同時將無人機的運行狀態(tài)喂給云端的Mod2Simu的數字孿生模型,然后將無人機上的運行分析結果和數字孿生中的運行結果進行對比分析,從而實現無人機數字孿生模型的敏捷開發(fā)TwinOps。 搞明白了上面這幾種組合的玩法,我們就可以去思考如下問題:
本文里面涉及到數字孿生的地方我的理解估計還有點問題,不過8點多了,要去沙縣小吃吃晚飯了。 |
|