對于嵌入式應用程序開發人員來說,開源軟件似乎是一個絕妙的選擇,無論是用作應用程序的基礎,還是使用開源工具來加速開發過程和加快上市時間。開源軟件就其本質而言是免費的——這意味著無需成本或付款。在管理人員不斷嘗試限制開發成本的環境中,開源聽起來是個好主意,并且根據每個開發人員的獨特情況,它可能只是解決預算限制所需的解決方案。
考慮一些專業人士。首先,開源很容易獲得。使用開源,開發人員只需下載和使用該軟件。開源代碼質量也可以是積極的。如果代碼已經不錯,它只會隨著社區的改進而改進。利用開源社區獲得幫助、支持和功能開發是開源的最大資產之一。“我們都在一起”的感覺有助于所有船只升起。
總而言之,這些好處可以讓開發人員懷疑開源是否存在不利因素。事實證明,開源確實有隱藏的成本,只有在組織處于開發過程中時才會顯現出來。雖然開源產品可能適合某些開發人員,但其他使用開源產品的人在考慮替代方案為時已晚后可能會遇到各種陷阱。
讓我們回顧一下開源對開發過程的四個關鍵部分的影響——使用開源代碼作為開發嵌入式應用程序的基礎、定制開源平臺以加速構建、開源蔓延和可見性以及對時間敏感問題的支持。
為嵌入式環境定制開源
在考慮將開源作為網絡基礎設施平臺、機頂盒平臺、醫療設備或任何其他嵌入式應用程序的基礎時,請考慮滿足特定行業需求所需的定制量。
在實施一個新的開源項目時,一個團隊要么需要使用他們自己團隊的寶貴資源來定制軟件以滿足其環境的需求,要么使用資金聘請顧問來做同樣的事情。顧問路線可以節省定制軟件的時間,但它仍然需要開發人員花時間管理流程。
維護開源軟件是另一個時間槽。十分之九,腳本和修復是可行的,但代價是開發人員可以更明智地花費在開發產品上的時間,而不僅僅是修復開源軟件。由于開發人員的高成本,這可能占分配給“免費”解決方案的開發資源的很大一部分。
優化開源以加速構建
開發人員需要以最大化工程組織生產力的方式優化他們的構建。這意味著開發人員不會坐在那里等待他們的個人構建完成——這個過程通常最多需要幾分鐘或幾小時,最壞的情況是幾天。當今市場上的構建加速器工具主要通過分布在大型構建云中的稱為依賴感知并行性的過程以及巧妙的緩存和避免技術來加速構建,從而實現快速可靠的增量構建和完整構建。一些大型開發組織已經使用這些加速器優化了數據中心,以加快分布式全球團隊的構建速度。
開源選項可用于管理和加速軟件構建,但它們有明確的限制和警告。例如,在使用通用軟件構建工具(如 GNU Make 和 SCons)時,構建必要的可擴展性和可靠性以支持和加速適當級別的軟件構建通常成本很高。隨著組織擴大到更多的開發人員、更多的項目以及在整個開發生命周期中對更快的反饋循環的更大需求,這個問題會成倍增加。
開源構建工具的另一個常見問題是缺乏對軟件構建結構內部細節的可見性和“可調試性”,這導致希望變得更加高效和敏捷的組織需要進行昂貴的手動維護和較長的交付周期。一旦構建失敗,返回并確定出現問題的可見性根本不存在。隨著多個團隊共同努力將產品推向市場,團隊之間缺乏可見性會減慢故障排除速度,從而加快產品上市速度。在一個需要上市時間就是一切的行業,并且越來越需要嵌入式應用程序的多個版本和修復程序,這種級別的支持根本是不可接受的。
在考慮開源工具的替代方案時,團隊應確保加速工具不會導致構建中斷,可以利用現有的硬件資源進行并行化,并且可以使用現有的工具集和流程。
一個這樣的替代方案是 Electric Cloud 的 ElectricAccelerator(圖 1),它在單臺機器上或跨標準服務器集群執行并行構建,將完整或增量構建時間減少多達 20 倍。這種加速的關鍵在于獲得專利的依賴管理技術,該技術在文件級別檢測和管理依賴關系,以確保準確的構建。ElectricAccelerator 可插入現有的構建和發布架構,無需修改現有的構建腳本和工具。作為構建工具的附加組件,ElectricInsight 提供了一個直觀的圖形表示,描述了構建的結構和運行方式,使構建管理人員能夠查明所有構建中的性能問題或沖突。而不是手動傾倒數千行構建輸出文件,
圖 1: ElectricAccelerator 并行構建管理底層復雜依賴項。插圖報告顯示了如何優化硬件利用率以減少構建時間。
開源蔓延和可見性
因為開源平臺很容易獲得,所以大多數部門最終都會實施自己的個人版本,通常是為了滿足他們的特定需求而定制的。對于較大的組織,這可能意味著在同一個開發組織中實施了數十個持續集成工具實例,從而創建了一個不受管理的、孤立的環境,或者換句話說,一個開源的蔓延。
這種蔓延所產生的成本可能是巨大的。首先,這不是一個容易擴展的模型。其次,管理層對開發工作的進展幾乎沒有可見性。由于缺乏標準化,無法真正評估進度或解決相互依賴的項目之間的問題。從管理的角度來看,這是令人沮喪的,因為工作不協調,對昂貴資源的要求來自四面八方。
開源和支持
在使用開源時,開發人員總是面臨支持的問題。當必須解決時間緊迫的問題時,這些問題可能需要直接提交給社區,因為沒有官方支持系統。影響組織收入的關鍵任務應用程序必須與可追究責任的專業人員合作,以對時間敏感的方式解決。有人隨叫隨到來解決問題而不是依賴社區,這是有話要說的。
總而言之,所有這些問題很容易復合,從而在任何嵌入式開發過程中引入重大問題。這并不是說開源不能成為嵌入式開發人員的有價值的工具——它肯定可以。但是,使用開源進行開發工作的成本具有局限性,并且需要組織必須預算的時間和精力。因此,當開發人員決定依賴開源技術時,他們應該確保了解“免費”的真實價格。
審核編輯:郭婷
-
嵌入式
+關注
關注
5150文章
19665瀏覽量
317414 -
機器
+關注
關注
0文章
790瀏覽量
41273 -
開源
+關注
關注
3文章
3680瀏覽量
43815
發布評論請先 登錄
評論