複製鏈接
請複製以下鏈接發送給好友

再生工程

鎖定
再生工程是軟件工程裏一個重要思想。
主要出於如下願望:(1)在商業上要提高產品的競爭力;(2)在技術上要提高產品的質量。但這種願望無法靠軟件的維護來實現,因為:(1)軟件的可維護性可能極差,實在不值得去做;(2)即使軟件的可維護性比較好,但也只是治表不治本。再生工程乾脆對已有軟件進行全部或部分的改造,賦予軟件新的活力。
再生工程與維護的共同之處是沒有拋棄原有的軟件。如果把維護比作“修修補補”,那麼再生工程就算是“痛改前非”。再生工程並不見得一定比維護的代價要高,但再生工程在將來獲取的利益卻要比通過維護得到的多。
再生工程主要有三種類型:重構、逆向工程和前向工程
中文名
再生工程
外文名
reengineer

再生工程重構

重構一般是指通過修改代碼或數據以使軟件符合新的要求。重構通常並不推翻原有軟件的體系結構,主要是改造一些模塊和數據結構。重構的一些好處如下:
(1)使軟件的質量更高,或使軟件順應新的潮流(標準)。
(2)使軟件的後續(升級)版本的生產率更高。
(3)降低後期的維護代價。
要注意的是,在代碼重構和數據重構之後,一定要重構相應的文檔。

再生工程逆向工程

逆向工程來源於硬件世界。硬件廠商總想弄到競爭對手產品的設計和製造“奧秘”。但是又得不到現成的檔案,只好拆卸對手的產品並進行分析,企圖從中獲取有價值的東西。我的很多同學從事集成電路設計工作,他們經常解剖國外的集成電路,甚至不作分析就原封不動地複製該電路的版圖,然後投入生產,並美其名曰“反向設計”(Reverse Design)。軟件的逆向工程在道理上與硬件的相似。但在很多時候,軟件的逆向工程並不是針對競爭對手的,而是針對自己公司多年前的產品。期望從老產品中提取系統設計、需求説明等有價值的信息。

再生工程前向工程

前向工程也稱預防性維護,由Miller倡導。他把這個術語解釋成“為了明天的需要,把今天的方法應用到昨天的系統上”。乍看起來,主動去改造一個目前運行得正常的軟件系統簡直就是“惹事生非”。但是軟件技術發展如此迅速,與其等待一個有價值的產品逐漸老死,還不如主動去更新,以獲取更大的收益。其道理就同打預防性針一樣。所以,預防性維護是“吃小虧佔大便宜”的事。