11.2 開發方法、產品線、軟件復用、逆向工程與技術服務
在軟件設計與開發領域,掌握核心的開發范式、復用策略及工程實踐是提升效率與質量的關鍵。本節將系統梳理結構化開發與面向對象開發、軟件產品線、軟件復用、逆向工程以及相關的技術服務支持體系。
一、軟件開發方法
- 結構化開發方法
- 核心思想:采用自頂向下、逐步求精的設計原則,將復雜系統分解為層次化的功能模塊。強調功能的單一性與模塊間的低耦合。
- 主要工具:數據流圖(DFD)、結構圖(SC)、狀態轉換圖、數據字典等。
- 典型模型:瀑布模型。適用于需求明確、變更較少的場景。
- 面向對象開發方法
- 核心思想:圍繞對象(封裝了數據和操作)組織系統,通過類、繼承、多態、封裝等機制提高軟件的復用性、靈活性和可維護性。
- 關鍵過程:包括面向對象分析(OOA)、面向對象設計(OOD)和面向對象編程(OOP)。
- 典型模型:迭代與增量模型(如RUP)、敏捷模型(如Scrum、XP)。
二、軟件產品線
軟件產品線是一組具有公共核心資產(如需求、架構、組件、文檔)和共享特性的軟件密集型系統集合。
- 核心思想:基于平臺化、規模化復用,旨在快速、低成本地衍生出滿足特定需求的系列產品。
- 兩個核心過程:
- 核心資產開發:建立產品線共用的平臺、架構和可復用組件庫。
- 產品開發:利用核心資產,通過定制、配置和擴展,構建具體產品。
- 優點:顯著提高生產率、縮短上市時間、降低成本、提升產品質量與一致性。
- 挑戰:前期投入大,需要統一的管理和領域分析。
三、軟件復用
軟件復用是指在開發新軟件系統時,重復使用已有的軟件資產(如需求規格、設計、代碼、測試用例、文檔等)的過程。
- 復用層次:
- 代碼復用:最基本的復用,如函數庫、類庫。
- 復用方式:
- 生產者復用:有目的地構建可復用的資產。
- 消費者復用:在新項目中尋找并使用已有的可復用資產。
- 關鍵技術:組件技術(如COM/DCOM、CORBA、EJB)、軟件構件、領域工程、設計模式。
四、逆向工程與再工程
- 逆向工程
- 定義:分析目標系統(通常是缺乏文檔的遺留系統),識別其組件及相互關系,并以另一種形式(通常是更高抽象層次,如設計模型或需求規約)創建系統表示的過程。
- 目的:理解系統、恢復設計信息、輔助維護、為再工程做準備。
- 級別:實現級(反編譯)、結構級(程序結構)、功能級(功能邏輯)、領域級(業務概念)。
- 再工程(重構)
- 定義:在逆向工程的基礎上,對系統進行重新構造或重組,以改善其可理解性、可維護性、性能或適應新的運行環境,同時保留其核心功能。
- 與正向工程的關系:再工程是“逆向工程 → 修改/優化 → 正向工程”的循環過程。
五、技術服務支持
軟件交付后的技術服務是保障軟件持續價值的關鍵環節,主要包括:
- 維護服務:糾錯性維護(修復缺陷)、適應性維護(適應環境變化)、完善性維護(增強功能性能)、預防性維護(為未來改進做準備)。
- 技術支持與培訓:為用戶提供操作指導、問題解答和技能培訓。
- 系統遷移與升級:協助用戶將系統遷移到新平臺或升級到新版本。
- 性能監控與優化:持續監控系統運行狀態,并進行性能調優。
與關聯
這些概念并非孤立存在,而是相互關聯、相輔相成。例如:
- 產品線開發 是 軟件復用 在組織級和系統級的最高形式體現。
- 高效的復用(如使用產品線資產)依賴于良好的 面向對象設計 和 組件技術。
- 對遺留系統進行現代化改造,常常需要結合 逆向工程 與 再工程 技術。
- 所有開發活動和交付的產品,最終都需要完善的 技術服務 來支撐其全生命周期。
掌握這些核心知識,有助于軟件設計師在項目中選擇合適的開發范式和復用策略,高效構建并維護高質量的軟件系統。