複雜軟件系統開發的技術

軟件一般是用某種程序設計語言來實現的。通常採用軟件開發工具可以進行開發。下面是小編整理的關於複雜軟件系統開發的技術,歡迎大家參考!

複雜軟件系統開發的技術

  InfoQ:在你們看來,軟件開發如今面臨的主要挑戰是什麼?

Howe:“智能(Smart)”、“智慧(Intelligent)”或“自治(Autonomous)”等術語在媒體上出現的頻率越來越高,涉及所有類型的產品。實際上,這些詞語和軟件一個意思——是軟件讓系統智能、智慧或自治。我們生活的世界日益成爲以軟件爲中心的世界。可是,軟件仍然使用相對原始和成本高昂的方式構建。軟件“開發”面臨的最大挑戰是形成真正的工程規範,以便能夠交付可信賴的成果,同時兼顧可預見性和經濟性。要實現“智能”或“自治”等詞語所描述的高度集成的複雜系統,這絕對是關鍵。

Rutten:如今,軟件即系統。軟件定義了關鍵功能和好處。伴隨IoT和工業4.0環境中的網絡應用,軟件的內涵也在快速地變化,包含1000多萬行軟件代碼的嵌入式設備隨處可見。由於嵌入式設備對真實世界有直接的影響,可靠性和安全性是確保沒有人會受到傷害的關鍵。傳統的OEM廠商現在發現,他們實際上已經變成了軟件公司。對於具有硬件工程背景的公司而言,開發可靠安全的軟件所伴隨的巨大複雜性是他們需要應對的挑戰。

  InfoQ:你們最近看到了哪些技術發展?它們對複雜的軟件密集型系統有什麼影響?

Rutten:應對大型軟件複雜性的工作正在從各個方面得到解決,從驗證軟件的(如靜態和動態分析)工具,到從根本上降低受攻擊風險的新語言,一直到從高級模型“自動正確構建(correct-by-construction)”軟件的模型驅動開發。到目前爲止,軟件開發團隊可以不再使用那種偏牛仔風的開發方式了,他們現在需要更加註意開發流程和工具,以應對複雜性。

Howe:多年來,在軟件系統設計方面,“早期採用者(Early Adopter)”公司一直引領着新技術的開發、採用和推廣,並取得了一些成功。但缺少資源的“早期大多數(Early Majority)”公司採用一種更爲務實的軟件工程方法,他們仍然堅守着傳統的開發實踐。然而,去年,這種情況開始發生變化。對於類似模型驅動軟件工程(MDSE)這樣的技術,市場的信心在逐步增加,使得這些技術在軟件工程社區得到了更廣泛的應用。

  InfoQ:你們能舉例說明下如何使用新技術推動創新嗎?

Rutten:企業正藉助持續集成在軟件落地之前檢測Bug和性能問題。這讓每天發佈多次的.持續部署取代了傳統的按季度發佈。反過來,對於嵌入式軟件,只有在每次發佈之前進行全面的檢查,比如通過靜態分析工具,或者在一個模型驅動開發環境中生成,這纔可能實現。顯然,如此快速地在市場中引入新功能,通過市場驗證推動了創新。

Howe:工程團隊在運用新的軟件工程技術方面信心增加,讓他們可以自由地嘗試富有創新精神的系統架構。例如,通過運用內置了形式化驗證的MDSE工具,企業覺得有能力重新設計他們的其中一款產品,移除已經過時的、基於PLC的安全控制器,代之以一個在重要應用軟件主體中驗證過的分佈式安全控制器。

  InfoQ:Software-Centric Systems大會主要涉及了那些話題?

Rutten:大會的主要話題是“軟件自白”,互相學習如何處理開發大型的、以軟件爲中心的複雜系統所面臨的巨大挑戰。我們如何確保可靠性、安全性、隱私、可維護性、性能,等等。

Howe:大會的一個主要目標是促進與會者互動及知識和經驗的交流。我們認爲,一般而言,人們從會議中獲得的最有用的東西是通過與演講者和其他與會者對話獲得的信息。因此,大會的初衷就是最大化這些類型的互動。此外,我們選擇演講者的依據就是他們能夠分享真實世界的經驗供其他與會者學習。

InfoQ:如果組織希望提高軟件開發流程的可靠性,同時又能快速地交付價值,那麼他們該如何推廣應用敏捷?

Rutten:持續集成與持續部署和敏捷軟件開發息息相關。預留配置最佳環境和工具的時間和預算是儘早發現錯誤的關鍵,這時候修復問題的成本還比較低。如果模型驅動方法適合這個領域,那麼從一個高級模型生成代碼會極大地增加可靠性,縮短上市時間。

在更爲特殊的領域裏,如汽車發動機控制,難度會更大。這時,就必須向系統投入巨大的資源,以確保新技術能夠安全地應用到一個已知可工作的系統中,實現平穩退化。只有有一個這樣的環境,敏捷增量交付才行得通。