標籤:
本章的主要內容是軟體演化
軟體演化的特性
1985 年,Lehman 和 Belady 總結了軟體在更改過程中演化的特性:1. 軟體維護是一個必然的過程;2. 軟體的不斷修改會導致軟體的退化;3. 軟體系統的演化特性是在早起的開發階段建立起來的。4. 軟體開發的效率與投入的資源無關;5. 在軟體系統中添加新功能無可避免的會產生新的缺陷。對於軟體變更引起的各種問題,人們通常採用不同的策略進行處理:軟體維護和軟體再工程。
軟體維護
軟體維護的概念
軟體維護是指在軟體運行或維護階段對軟體產品所進行的修改,這些修改可能是改正軟體中的錯誤,也可能是增加新的功能以適應新的需求,但是一般不包括軟體系統結構上的重大改變,根據軟體維護的不同原因,軟體維護可以分成三種類型:改正性維護、適應性維護和完善性維護。
軟體維護的特點
1. 軟體維護受開發過程影響大;2. 軟體維護困難多;3. 軟體維護成本高。
軟體維護的過程
1. 改正性維護:首先應該評價軟體錯誤的嚴重程度,對於十分嚴重的錯誤,維護人員應該立即實施維護;對於一般性的錯誤,維護人員可以將有關的維護工作與其他開發工作單位一起進行規劃。在有些情況下,有的錯誤非常嚴重,以致不得不臨時放棄正常的維護控制工作程式,即不對修改可能帶來的負作用作出評價,也不對文檔作相應的更新,而是立刻進行代碼的修改。這是一種救火式的改正性維護,只有在非常緊急的情況下才使用,這種維護在全部維護中只佔一小部分比例。應當說明的是,救火式不是取消,只是延遲了維護所需要的控制盒評價。一旦危機取消,這種控制和評價活動必須進行,以確保當前的修改不會增加更為重要的問題。
2. 適應性維護:首先應該確定軟體維護的優先次序,再與其他開發工作單位一起進行規劃。
3. 完善性維護:考慮到商業上的需要和軟體的發展趨勢,有些完善性維護可能不會被接受。杜宇被接受的維護申請,應該確定其優先次序並規劃其開發工作。
軟體再工程
軟體再工程以系統理解為基礎,結合逆向工程、重構和正向工程等方法,將現有系統重新構造成為新的形式。形象的說,就是”把今天的方法學用於昨天的系統以滿足明天的需要“。典型的軟體再工程過程,主要包括:對象選擇、反向工程、文檔重構、代碼重構、資料重構和正向工程等活動。
《軟體工程》總結——第十一章