荷蘭還有媲美光刻機的軟技術:元件建模和分析框架Comma為複雜軟體提供了高可靠性 – Bits&Chips
“對於像我們這樣的以軟體為中心的複雜系統,更改,整合和測試它非常昂貴,尤其是在我們所處的軍事領域,您可能必須進行實時射擊試驗才能真正驗證系統,”諾爾特斯說,他是是位於Hengelo的公司的軟體架構師,“而且,即使是最微小的更新也可能導致大量的變化。然後歸結為一個問題:您如何才能在不影響其餘部分的情況下修改系統的一部分?”
要能夠持續更新複雜的系統,您需要將更改限制在區域性邊界內,而要做到這一點,您需要專注於介面。
儘可能少地更改介面,因為它們的更換成本很高。透過介面您無法解決的較大問題最終將得到解決,但小問題還是仍然存在,其結果是程式碼質量將緩慢下降。因此需要研究不斷髮展的介面,以促進對變更的需求跟蹤。
什麼是Comma?
由ESI(TNO)和飛利浦發起了一項研究專案,Comma框架已經發展成為一種成熟的產品,用於建立和管理軟體介面。Thales以及Thermo Fisher Scientific和Kulicke&Soffa也在尋求使用它來簡化軟體工程。
Comma(元件建模和分析)是一個生態系統,支援基於模型的元件工程。它是特定於域的語言(DSL)的組合,其中伺服器和其客戶端之間的介面可以透過三個主要成分指定:介面簽名,允許的客戶端-伺服器互動以及時間和資料約束。
介面簽名由命令,訊號和非同步通知組成。命令是同步的:呼叫者被阻塞直到收到答覆為止,而訊號是非同步的:它們不會阻塞呼叫者並且不需要答覆。狀態機用於描述允許的客戶端-伺服器互動,例如,允許客戶端呼叫的順序以及在任何狀態下來自伺服器的允許的通知。
Comma在醫療複雜軟體系統的應用
飛利浦醫療保健公司Best的軟體經理Daan van der Munnik表示:“我們的醫療裝置正在變得越來越大。” “我們必須將它們分成較小的子系統,以保持其開發可管理性,同時也用於驗證目的。直到一年前,我們還一口氣驗證了完整的裝置-付出了巨大的努力。透過將其切碎成較小的子系統,我們可以將驗證工作集中在我們為特定功能而實際修改上。我們還需要證明,當我們將所有內容放在一起時,它仍然可以完成應有的功能。拆卸和重新組裝都需要良好的介面管理。”
子系統也越來越多地被分包給分包商。Van der Munnik指出:“我們實際上是在進行系統級開發,我們自己製造一些零件,而某些零件則來自外部。” “例如,在我們的一種影像引導治療系統中,我們有三種型別的患者床。一個是我們開發的,另外兩個是其他公司製造的。但是,從使用者角度來看,它們都必須看起來是系統的組成部分。例如,在移動或傾斜時,使用者體驗必須完全相同。這意味著,對於我們的分包商而言,需要在較低的技術水平和較高的子系統水平上明確定義介面。”
最後但同樣重要的是,良好的介面管理是系統發展的關鍵。Van der Munnik:“我們的醫療裝置使用壽命很長。我們需要確保它們在其生命週期內是可擴充套件的,並且適合於形式/裝配/功能的替換。”
真理的單一來源
ESI是荷蘭應用科學研究組織(TNO)的高科技嵌入式系統聯合創新中心。 ESI高階科學家Jozef Hooman回憶說:我們開始將領域特定的語言用於各種目的,生成程式碼,分析工具等等。這樣做的時候,我們注意到飛利浦軟體的許多問題都是由於介面問題引起的,逐漸地,我們發現這些DSL對於描述介面特別有用。因此,只需一小步,我們就可以從通用語言過渡到特定領域的語言:Comma,我們可以在許多不同的介面中重複使用它。
我們檢查了飛利浦工程師的需求,並相應地調整了語言。我們從描述介面協議(即客戶端和伺服器之間的互動)的狀態機開始。根據使用者反饋,我們對其進行了修改以使其更加使用者友好,幷包括諸如計時和資料約束之類的內容。例如,患者病床對時間和資料都非常敏感–當控制操縱桿停止時,病床應該在一定時間內停止也不要移動太多。
逗號逐步地發展成為現在:“真理的唯一來源”。這個DSL是您表達想要的一切的地方,從那裡可以生成所需的一切,例如文件,監視,模擬,視覺化以及最近的測試用例。監控尤其重要。您可以使用它透過執行系統,收集跟蹤並檢查執行是否符合介面來檢視您的實現是否滿足規範。如果介面發生更改,您可以重新生成所有內容,並且如果您的開發人員或與此相關的第三方供應商引入了軟體更新,則可以連續按一下按鈕,檢查是否符合要求,測試過程中不可或缺的一部分。
生態系統
在飛利浦,Comma已牢固地嵌入公司的軟體工程實踐中。Van der Munnik:“我們使用DSL編寫介面規範並生成文件和程式碼。作為我們持續整合流程的一部分,我們在執行自動化測試方案時會檢查介面是否符合Comma規範。我們建立了一個成熟度矩陣,該矩陣針對這些開發階段設定了我們的介面,現在我們提高了所有這些標準的。由於介面的明確定義和隨後的自動驗證,在我們早於整合之前就發現介面問題的原因,Comma為我們帶來了巨大的商業價值。”
兩年前,Thales啟動了Dynamics專案,與ESI合作研究動態系統更新。“我們正在研究可擴充套件的介面和所謂的介面卡,以使新舊裝置保持協同工作,” Noltes澄清說。“因此,當您引入具有更新介面的客戶端時,還會生成一個介面卡,將其連線到現有伺服器,並證明可確保不會發生任何故障。ESI對介面規範進行了一次小型技術調查,然後Comma作為最適合我們需求的解決方案問世。儘管Dynamics仍在繼續研究中,但Comma已經開箱即用,我們正忙於將其包含在元件開發框架中。透過在設計時做更多的事情,我們希望消除專案中的大部分風險。”
但可以肯定的是,Comma正在慢慢征服荷蘭的高科技。“例如,我們還在埃因霍溫與Thermo Fisher Scientific合作,” ESI的Hooman說道。“對於某些關鍵介面,已在夜間煙霧測試中建立了模型並內建了監視器,該監視器會自動檢查日誌檔案。早上,他們可以看到哪些屬性已失敗。同樣來自埃因霍溫的Kulicke&Soffa正在考慮為其中介軟體層生成一個生成器。” ESI與Dynamics專案的聯絡人高階研究員Benny Akesson補充說:“看到這個生態系統開始形成,這很有趣。”
為了進一步擴大傳播範圍,合作伙伴正在努力將框架開源。Hooman:“我們正在以Eclipse外掛的形式定義一種Comma核心,其他人可以擴充套件,例如使用自己的生成器。” Van der Munnik強調了這一發展的重要性:“它增加了Comma的成熟度。從研究專案開始,現在是開發人員可以實際使用的產品,包括使用者介面,速度,安裝簡便性等。透過將其開源,我們希望其他人能夠為Comma做出貢獻,從而進一步擴充套件和改進該框架。”
相關文章
- 軟體的複雜性:命名的藝術
- 開源軟體為中國軟體提供了發展機遇–陸首群
- 軟體開發到底是業務複雜還是UI複雜UI
- 軟體建模有啥用
- 從技術角度分析“搶票軟體的加速”有多快?
- 如何降低軟體的複雜性?
- 軟體設計的複雜度複雜度
- 軟體需求與分析 業務建模分析
- 軟體測試方法和技術有哪些呢?
- oracle複製軟體排名『複製技術系列』Oracle
- 什麼是軟體開發業務建模分析和結構化建模分析
- 越做越複雜的軟體工程專案軟體工程
- [技術思考] 軟體可測性分析和實踐
- 當今防毒軟體有沒有技術含量?防毒
- 系統困境與軟體複雜度,為什麼我們的系統會如此複雜複雜度
- 複雜性正在殺死軟體開發者
- 作為軟體技術人,看中國工業軟體差在哪?
- 大資料環境下計算機軟體技術分析大資料計算機
- 《UML軟體建模技術》企業內訓課程大綱
- 為什麼軟體最終會變得複雜 - Alex Gaynor
- 軟體的複雜性正在殺死我們
- 害怕軟體的複雜嗎?其實複雜性是必須存在的 - ferd
- 阿里研究員:警惕軟體複雜度困局阿里複雜度
- 軟體複雜性正在殺死我們
- 如何使用 XYZ 軟體建立複雜圖形
- 軟體全程建模1
- 關於管理軟體複雜性的最佳書籍?
- 【軟體硬體】精簡指令集和複雜指令集的區別
- 軟體測試技術、方法和環境
- 雲技術是軟體技術,並非硬體技術
- 交換技術:軟交換機的概念、特徵和作用(轉)特徵
- 軟體技術的森林時代 (轉)
- 沒有防毒軟體的iOS,還安全麼?防毒iOS
- [技術討論]軟體工程之全程建模實現適合做教材麼?軟體工程
- 形式化方法應該為複雜軟體工程保駕護航軟體工程
- “軟體定義汽車”下的軟體虛擬化技術
- DDD函式程式設計案例:戰勝軟體開發的複雜性! 戰勝方式本身有點複雜哦!函式程式設計
- 交換技術:NGN核心軟交換技術分析(轉)