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