軟體開發

協調人員、工具和最佳工作模式,快速打造出高品質的軟體。

軟體開發的定義

軟體開發是在軟體的使用期限內,定義、開發、測試、部署和管理軟體變更的流程,包含建立和維護軟體產品或系統/產品內建軟體時,從概念發想、發佈到後續維護的所有相關程序。對所有銷售軟體、軟體型服務或智慧型產品的公司而言,軟體開發都是維持競爭力的核心。這個產業在全球市場的總產值達到 4,290 億美元,複合年成長率 (CAGR) 為 11.7% (2022 年至 2030 年)。

overlaycontent

軟體開發的重要性

軟體開發是影響全球經濟的一項關鍵創新驅動力,從汽車到手機、溫控裝置和醫療設備,都利用軟體來提供與眾不同的關鍵功能。軟體在過去十年扮演了推動重大科技進展的關鍵角色,包括工業物聯網、基因定序、電腦視覺、手術用機器人以及自駕車,而軟體開發也將在未來持續推動產品和服務創新。

軟體的基本類型

系統軟體

系統軟體是用來執行電腦硬體,可為硬體上執行的應用程式提供基本服務。這類軟體包括作業系統軟體,通常是以低階電腦程式設計語言編寫,以盡可能加快運作速度和效率。

應用程式軟體

應用程式軟體為使用者提供各項功能。這類軟體包括工程軟體、個人軟體和行動應用程式等等。應用程式軟體能以高階程式設計語言編寫、從設計模型中產生,或使用預先建構的元件組裝而成。

內建軟體

內建軟體是一種特殊用途軟體,用來監控和控制飛機、汽車、溫控裝置及其他實體產品內部使用的微處理器。內建軟體通常封裝於電子控制單元 (ECU) 內部,可提供各種功能,例如透過不同 ECU 分別提供的汽車煞車、導航、安全性以及其他功能。內建軟體通常需要即時做出回應,因此必須採用即時作業系統 (RTOS) 和程式設計語言。

廣受採用的軟體開發方法

瀑布式方法

瀑布式方法是一種線性軟體開發方法,先從需求階段展開專案,並在經過完整定義並取得所有核准後才進入設計階段,最後以導入階段做終。由於從初始概念發想到最終導入會經歷很長的時間,因此瀑布式模式無法靈活因應變更。這種方法最適合需求定義明確、失敗風險低的高度嚴謹專案。

敏捷方法

敏捷方法是一種以彈性和客戶滿意度優先的專案管理方法,運用稱為「衝刺」的快速改版、協同合作規劃,以及稱為「回顧」的定期審核來持續提供價值。敏捷方法最適合需求不明或不斷變動的專案,因為能透過漸進的方式釐清使用者需求,同時提供價值。您可以套用許多架構以獲得額外的指引,包括 Scrum、Kanban 和 Scaled Agile Framework (SAFe)。

混合式方法

只要開發流程中結合多種方法的要素,都算是混合式方法,例如產品開發團隊經常採取的一種方式:設計、電子和機械工程師運用 V 模型,定期推出新的產品版本,而軟體團隊則按照敏捷工作模式,每隔三週推出一次更新版本。這兩個團隊會定期整合彼此的工作成果,並進行產品整體回顧。混合式流程能擷取每種方法的最佳要素,快速且嚴謹地開發出複雜的產品。

V 模型

V 模型是一種專案管理模型,通常用於管理涉及多種工程領域的大規模複雜專案,又稱為查核與驗證模型。「查核」代表將需求細分為設計和詳細工程規格,「驗證」則是指整合、驗證與查核每個生命週期階段。V 模型是很實用的架構,可用來管理需要以嚴謹方式開發的複雜產品。

軟體開發最佳工作模式

敏捷:迅速回應不斷演變的客戶及市場需求。敏捷工作模式能透過「衝刺」快速改版和更高的交付頻率,充分提升敏捷性。

分析:擷取和分析團隊指標,確保按照優先順序進行各項活動,並奠定持續改善的基礎。

變更管理:管理需求、程式碼和測試資產變更,將變更快速傳達給整個團隊,並分割與合併資產,以輕鬆建立變體。

持續整合與交付 (CI/CD):將程式碼變更合併到定期整合、編譯、測試和交付的共用存放庫中,加快交付軟體。

開發操作:採用可重複的自動化發行管理流程,更快為客戶提供價值。

安全性:透過稽核記錄、電子簽章及其他治理技巧,管理策略性軟體資產的監管和授權鏈。

需求管理:以漸進的方式分析和定義解決方案應用範圍,並研擬詳細規格。

測試及品質管理:在每個階段驗證和確認結果,以改善成果並降低品管成本。

發行規劃:規劃和管理對使用者的軟體經銷業務。

軟體開發工具和解決方案

Codebeamer 是新一代的應用程式生命週期管理 (ALM) 解決方案,能全面簡化複雜的軟體開發流程。這個開放式平台提供強大的敏捷軟體工程功能,可擴大 ALM 工作流程的應用範圍。Codebeamer 提供需求、風險和測試管理功能、最佳工作模式工作流程、開發工具鏈整合功能,並支援敏捷和 V 模型方法。有了 Codebeamer,團隊就能按照自己的需求自訂這項工具,並快速實現價值。您可以使用預先配置範本簡化法規遵循流程,還能享有從概念發想到產品交付的全方位可追溯性。Codebeamer 採用 Open Services for Lifecycle Collaboration (OSLC) 標準為建構基礎,可與 PTC 工程 Digital Thread 整合。

overlaycontent

常見問題集

軟體開發流程中的不同階段

  • 需求分析
  • 設計
  • 導入
  • 測試
  • 記錄
  • 部署及維護
  • 重用

軟體開發的演變過程

軟體開發技巧一直在改變。在過去,程式設計師要從頭到尾親自編寫應用程式,今日的軟體工程師則可運用敏捷方法,快速改版以迅速提供價值。軟體工程師能從設計模型產生程式碼,或運用可重用的現有元件,以更低的成本迅速達成目標。未來 AI 輔助工程將使軟體開發效率進一步提升。

內建軟體開發流程的不同之處

內建軟體開發在許多方面與應用程式開發不同。內建軟體通常:

  • 封裝於電子控制單元 (ECU) 內部,可提供各種不同的功能,而且無法改變用途
  • 用來控制無法輕易更新的零件;在產品生命週期中,這些零件必須完美無瑕地運作
  • 極度複雜,需要多位需求、設計、開發和測試程序負責人彼此協同合作
  • 用於關鍵任務且攸關安全,必須具備最高等級的品質與可靠性
  • 使用 RTOS 和程式設計語言建構,以提升速度和效率
  • 設計為可在低耗電環境下運作

在須遵守嚴格法規的產業,軟體開發有何不同之處?

須遵守嚴格法規的產業包括航太及國防工業、醫療與製藥,以及交通運輸與汽車業。這些產業必須遵守特殊規範,以打造攸關安全的產品。這些規定要求最終產品達到一定的安全性與品質標準,也制定了嚴謹的軟體開發流程。總而言之,須遵守嚴格法規的產業在開發軟體時,必須特別注意治理能力、安全性與可稽核性的問題。