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